本人能力的限制和阅读能力的差强人意,仅限于前几章
软件=程序+软件工程
一个成熟的软件需要各方面的支持工作,保障软件的服务质量,对源代码的管理,对于后续的验证过程软件测试,软件团队要从需求分析开始,把合适的需求梳理迟来,逐步展开后续的工作,如设计,实现,测试到最后的发布软件。软件开发活动(构建管理,源代码管理,软件设计,软件测试,项目管理)相关内容,是软件工程的核心部分。软件企业=软件+商业模式。
软件开发阶段的不同:
玩具阶段;纸飞机,业余爱好阶段;飞屋,探索阶段;莱特兄弟的飞机,成熟的产业阶段;商用飞机;在成熟的航空工业中,一个飞机发动机从构思到最后运行,不知道经历过多少人,多少道工序。多少流程,多少相关知识的验证。
软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程。软件的特殊性:复杂性,不可见性,易变性,服从性,非连续性。
软件工程与计算机科学的关系:
计算机科学又分许多的偏理论的领域:计算机论,信息和编码理论,算法和数据结构,形式化方法,程序设计语言,计算机体系结构,并行计算和分布式系统,实时系统和嵌入式系统等等。。。
软件工程的知识领域和软件工程的目标:例如:用户满意度,可靠性,软件流程的质量,可维护性。
个人技术和流程
单元测试:
用VSTS写单元测试,如何衡量一个单元测试的好坏:
单元测试应该在最基本的功能/参数上验证程序的正确性,单元测试必须由最熟悉代码的人来写,单元测试过后,机器状态保持不变,单元测试要快,单元测试应该产生可重复,一致的结果,单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性,单元测试应该覆盖所有的代码路径,单元测试应该集成到自动测试的框架中,单元测试必须和产品代码一起保护和维护。
回归测试(Regressio Test):
在软件项目中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出现了问题,那么这个模块就出现了一个“”退步“”,从正常工作的状态退化到不正常工作的状态。