20170914-构建之法:现代软件工程-阅读笔记
第一章概论
软件=程序+软件工程 软件工程是把系统的.有序的可量化的方法应用到软件的开发.运营和维护上的工程 软件开发的不同阶段:1.玩具阶段2.业余爱好阶段3.探索阶段4.成熟的产业阶段 软件的特殊性:复杂性 不可见性 易变性 服从性 非连续性 软件工程的目标:创造“足够好”的软件!
第二章 个人技术和流程
好的单元测试的标准:单元测试应该在最基本的功能、参数上验证程序的正确性 单元测试必须由熟悉代码的人来写 测试过后 机器状态保持不变 时间要快 要产生一致的结果 并且保持单元测试的独立性 它应该覆盖所有代码路径 集成到自动测试的框架中 它必须和产品代码一起保存和维护
回归测试:是倒退 退化 退步的意思
第三章 软件工程师的成长
软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的。在团队的大流程中,是每一个具体的个人在做开发.测试.用户界面设计.管理.交流等工作。因此,个人在团队中也有独立的过程
第四章 两人合作
代码风格规范:缩进 行宽 括号 断行与空白{}行 分行 命名 下划线 大小写 注释
代码设计规范:函数 goto 错误处理(参数处理 断言) 如何处理C++中的类(类 class vs.struct 公共、保护、私有成员 数据成员 虚函数 构造函数 析构函数 new和delete 运算符 异常 类型继承)
代码复审:1、找出代码的错误。如:
a. 编码错误,比如一些能碰巧骗过编译器的错误。
b. 不符合项目组的代码规范的地方。
2、发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的。
3、发现算法错误,比如使用的算法不够优化。
4、发现潜在的错误和回归性错误——当前的修改导致以前修复的缺陷又重新出现。
5、发现可能改进的地方。
6、教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识。
结对编程:两人合作的不同阶段和技巧:萌芽阶段 磨合阶段 规范阶段 解体阶段