zoukankan      html  css  js  c++  java
  • 《构建之法》读书笔记(上)

    《构建之法》读书笔记(上)

    本周阅读第一章《概论》和第二章《个人技术和流程》;

    第一章《概论》旨在说明软件工程的概念。

    几个概念:

    软件 = 程序 + 软件工程

    在这里突然想到数据结构可上老师说程序是: 数据结构+算法

    软件工程可以定义为: 把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程;软件工程包括一下领域:源代码管理+需求分析+程序设计+软件构建+软件测试+软件维护+生命周期管理等,广泛意义的软件工程,还包括用户体验、用户界面设计(UID)等; 软件工程决定了软件质量。

    文中还提到软件工程和计算机科学的关系,这也是之前让我迷糊的两个概念,我在高考填志愿的时候不知道他们的区别,到学校后发现学的东西差异也不是很大;而实质上这是两个侧重点差异很大的概念;从知识领域上说,计算机科学包含计算机体系结构、操作系统、图形学、人工智能等,而软件工程包含软件需求、软件设计、软件维护、软件测试等;

     

    软件工程的目标:创造足够好的软件。那么什么是足够好,不仅仅是没有bug;评价软件的维度包括:用户满意度、可靠性、软件流程的质量、可维护性等。关于软件流程的质量,指的是软件团队和开发流程的问题太多,导致团队成员无法良好协作,按时交付,也可以说是软件团队的bug;  流程的质量往往是我们的研发过程中最容易忽视的地方,反思目前我们的现状,很对研发团队的研发流程实质是处于真空状态,开发人员甚至不知道怎样才是软件开啊的正确姿势。下半年结合团队运作中SM、BA、QA的角色职责梳理,特别关注下团队的研发流程质量。

    所以我觉得,书中说了这么多,其实软件工程归结起来就是下面三点:

     1 研发出符合用户需求的软件

     2 通过一定的软件流程,在预计的时间内发布“足够好”的软件

     3 通过数据和其他方式展现所开发的软件是可以维护的继续发展的

     

    第二章《个人技术和流程》,本章的实质是在说明,一个合格的软件工程师是怎样的,他应该具备哪些技能。

    总结下来,一个合格的工程师在开发时需要同时考虑质量和效率,与之同时需要具备的技能包括:单元测试、效能分析、个人研发流程(PSP);

    关于单元测试的正确做法:

    1 单元测试应该在最低的功能/参数上验证程序的正确性

    2 单元测试必须由最熟悉代码的人(作者)来写

    3 单元测试过后,机器状态保持不变

    4 单元测试要快(一个测试用例的运行时间是几秒钟)

    5 独立性—测试的运行/通过/失败不依赖于别的测试

    6 覆盖所有代码路径

    7 单元测试应该集成到自动化测试的框架中

    8 单元测试必须和产品代码一起保存和维护

     

    关于性能分析。

    性能分析往往是开发人员容易忽视的步骤,这也是为什么我们一年一年的不停做性能优化的原因,大部分人对嵌入式的实时性和性能要求没有概念。 Visual Studio实际上提供了性能分析工具。其中有两种分析方法:Sampling和Instrumentation,即抽样和代码注入,抽样的原理比较简单,kprofile也类似,就是用比较短的周期去采用PC指针,看看是在哪个函数在执行,并把当前周期的时长累计为该函数的执行时长;  代码注入,相当于打点,是将检测的代码加入到每个函数中。

    一般进行性能分析的做法是,先用抽样的方法找到函数热点,然后对特定的模块用代码注入进行详细分析。

    这个方法,后面在我们的性能优化工作中可以多尝试下,让业务和支撑领域相关人员看看效果。

     

    关于个人开发流程。

    我们熟知CMM和CMMI,软件行业的国际通用标准,这两种能力成熟度模型,他们是用来衡量一个团队能力的模型,由卡内基梅隆大学(CMU)制定推出。其实CMU的专家针对软件工程师也有一套模型,叫Personal Software Process(PSP),即个人开发流程的标准;

    这个我在第一次个人作业中已经用到了,但是因为是第一次用,不知道是不是对自己太自信了导致规划和实际的距离很远,所有的选项的实际时间都比计划时间要多出很多,一方面可能是我的经验不足,另一方面可能是我的技术不够成熟。

     

    总的来说就是:个人开发流程要着眼的是整个软件开发的流程,输出高质量的产品,需要从个人开发流程上去找bug,然后不断修正,工程师才会成长,产品质量才会不断提高。

    同时最近看到一张好图:

  • 相关阅读:
    烟花散尽漫说无(參考资料)
    [Leetcode]-Majority Element
    百度移动搜索測试电面
    可删除超炫&多种特效的Card视图(改造自cardsui-for-android开源项目),提供DEMO下载
    关闭 You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
    Android Snackbar使用方法及小技巧-design
    Android Intent Action 大全
    android权限大全
    Android 判断SD卡是否存在及容量查询
    Android中蓝牙的基本使用----BluetoothAdapter类简介
  • 原文地址:https://www.cnblogs.com/huangzp1104/p/8724745.html
Copyright © 2011-2022 走看看