构建之发第二章第三章
第二章讲的是1单元测试①重要的单元测试:有效解决程序员对模块功能的误解、疏忽或不了解模块的变化之类的问题,使自己负责的模块功能定义尽量明确,模块的质量得到稳定的、量化的保证。②好的单元测试的标准:在最基本的功能/参数上验证程序的正确性单元测试必须由最熟悉代码的人(程序的作者来写)单元测试过后,机器的状态保持不变单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)单元测试应该产生可重复、一致的结果独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性单元测试应该覆盖所有代码路径单元测试应该集成到自动测试的框架中单元测试必须和产品代码一起保存和维护③单元测试的基础上能够建立关于这一模块的回归测试,目的是:(1)验证新的代码的确改正了缺陷2)同时验证新的代码有没有破坏模块的现有功能,有没有Regression2.2 效能分析工具效能分析方法:抽样和代码注入2.3 个人开发流程个人开发流程PSP(Personal Software Process)特点:(1)不局限于某一种软件技术,而是着眼于软件开发的流程,这样,开发不同应用的软件工程师可以互相比较。(2)不依赖于考试,而主要靠工程师自己收集数据,然后分析、提高。(3)在小型、初创的团队中,很难找到高质量的项目需求,这意味着给程序员的输入质量不高。在这种情况下,程序员的输出(程序/软件)往往质量也不高,然而这并不能全部由程序员负责。(4)PSP依赖于数据(工程师输入数据的时间代价、数据可能遗失或者不准确的风险、可能会出现一些数据不利于工程师本人的情况)5)PSP目的是记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度,工程师有可能很高效地开发出一个顾客不喜欢的软件。第三章:
3.1 个人能力的衡量与发展①软件工程包括了开发、运用、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。②初级软件工程师的成长包括以下几种:(1)积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对JAVA、C/C++、C#的掌握,诊断/提高效能的技术,对设备驱动程序、内核调试器的掌握,对于某一开发平台的掌握(2)积累问题领域的知识和经验(例如对医疗或金融行业的了解)(3)对通用的软件设计思想和软件工程思想的理解(4)提升职业技能(区别于技术技能),包括:自我管理的能力、表达交流的能力、与人合作的能力、按质按量完成任务的执行力(5)实际成果——最重要的评价标准,我之前都没有进行单元测试,还哟有个人能力衡量。之后我要进行测试,减少时间,也有对自己能力去估量。