构建之法前两章
软件=程序+软件工程
软件企业=软件+商业模式
软件是由多人合作完成的,其发展有4个阶段:1、玩具阶段 2、业余爱好阶段3、探索阶段4、成熟的产业阶段。它分为3种:1、系统软件(操作系统、设备驱动程序、工具软件等) 2、应用软件(用户使用它们来完成工作) 3、恶意软件(软件病毒等)
软件开发过程中有以下5个难题:1、复杂性 2、不可见性 3、易变性 4、服从性 5、非连续性。
软件工程的目标——创造“足够好”的软件,所谓好软件,就是软件没有缺陷(bug),所谓的软件工程就是把软件中的bug都消灭掉的过程。而一个软件bug的多少可直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。
而对软件进行单元测试可以有效的解决自己负责的模块功能定义明确,模块内部的改变不会影响其他模块,还可以有效的保证模块的质量。而一个好的单元测试应该准确、快速的保证程序基本模块的正确性。它的标准如下:1、单元测试应该在最基本的功能/参数上验证程序的正确性。2、单元测试必须由最熟悉代码的人(程序的作者)来写。3、单元测试过后,机器状态保持不变。4、单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)。5、单元测试应该产生重复、一致的结果。6、独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性7、单元测试应该覆盖所有的代码路径。8、单元测试应该集成到自动测试的框架中。9、单元测试必须和产品代码一起保存和维护。
在单元测试的基础上,然后再建立关于这一模块的回归测试。
然后便是对程序进行效能分析。效能分析包括两种方法:1、抽样(Sampling)2、代码注入(Instrumentation)
对于软件开发过程中,有能力成熟度模型用来衡量团队能力的能力成熟度模型,还有衡量个人能力的PSP。
个人感受:
1、我过去是怎么做的:
在写程序之前没有做过需求分析,也没有规范代码, 设计思路写的不是特别明 确,做测试时不全面没有认真分析结果。
2、结合书中所讲,说明为什么这样不好:
没做需求分析会使写出来的程序与基本的需求有区别,不能达到要求。
没有规范代码则会使自己的程序可读性不是太好,不太容易被别人接受。
设计思路不明确则会导致用代码实现时不能很快速很明确的写出代码,让别人看的时候,不能很快的理解程序。
做测试时不全面,没有认真的分析结果则会导致,有些程序的BUG不能被发现
3、提出一个解决办法,避免再次掉入陷阱:
在写代码之前要做好需求分析,写出明确的设计思路,写代码的过程中则要时刻提醒自己规范代码,然后就是做测试时要从用户角度来考虑,然后做测试,并且将测试的结果与题目要求结合来看,看结果是否与题目要求相符。