《构建之法》阅读笔记1

第二章 个人技术和流程 阅读笔记

       开始轰轰烈烈的软件工程工作前,我们首先得确保自己是合格的软件工程师。为此,我们得先普及一些基本概念和技术,即单元测试和效能分析工具。一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应该有一个流程,这一章会介绍PSP(Personal Software Pro-cess,个人软件开发流程)。


 单元测试

       你的RP是由你的程序质量决定的。

       软件是由多人合作完成的,不同人员的工作相互有依赖关系。例如,一个人写的模块被其他人写的模块调用。软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解模块的变化。为了让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证,我们有一个很有效的解决方案就是单元测试

       单元测试应该准确、快速地保证程序基本模块的正确性。下面是验证单元测试好坏的一系列标准:单元测试应该在最基本的功能/参数上验证程序的正确性。

       单元测试应该测试程序中最基本的单元—如在C++/C#/Java中的类,在此基础上,可以测试一些系统中最基本的功能点(这些功能点由几个基本类组成)。

       从面向对象的设计原理出发,系统中最基本的功能点也应该由一个类及其方法来表现。单元测试要测试API中的每一个方法及每一个参数。

       单元测试必须由最熟悉代码的人(程序的作者)来写。代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。


 回归测试

       在单元测试的基础上,我们就能够建立关于这一模块的回归测试, 目的是:

              1. 验证新的代码的确改正了缺陷
              2. 同时要验证新的代码有没有破坏模块的现有功能,有没有Regression


 效能分析 

       效能分析可以选择两种分析方法:
              1. 抽样(Sampling)
              2. 代码注入(Instrumentation)


  个人开发流程

       PSP有如下的特点:
       • 
不局限于某一种软件技术(如编程语言),而是着眼于软件开发的流程,这样,开发不同应用的软件工程师可以互相比较。

       • 不依赖于考试,而主要靠工程师自己收集数据,然后分析,提高。

       • 在小型、初创的团队中,很难找到高质量的项目需求,这意味着给程序员的输入质量不高。在这种情况下,程序员的输出(程序/软件)往往质量也不高,然而这并不能全部由程序员负责。

       • PSP依赖于数据。

       • 需要工程师输入数据,记录工程师的各项活动,这本身就需要不小的时间代价。

       • 如果数据不准确或有遗失,怎么办?让工程师编造一些?

       • 如果一些数据不利于工程师本人(例如:花很多时间修改缺陷),我们怎么能保证工程师愿意如实地记录这些数据呢?

       • PSP的目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。

原文地址:https://www.cnblogs.com/ning-JML/p/5485790.html