在《构建之法》的第一章就有醒目的黑体字写着软件=程序+软件工程。作为一名程序员,不能仅仅会写代码,深入了解一个软件是通过怎么样的层层工序制作出来,也是我们应当重点掌握的。
文中通过生活实例,启发我对什么是程序,什么是软件,什么是软件工程,没有使用到算法需不需要学习、掌握。软件和算法,数据结构有无关联等问题的思考。仔细想想发现自己对这些概念很模糊。通过继续往下看,我才渐渐的明白了能满足各种功能的是应用软件,能保证维修的是软件服务…..也了解到了一个软件不是简简单单就能说写就写的,还需要考虑各种因素,如人们的需求,功能的可行性。当软件团队通过通力合作,克服重重困难写出软件后,需要考虑软件应用问题,是免费提供他人使用,还是收费,还是设有不同的版本再进行收费,这时候我不仅仅要了解什么是软件,还需要知道软件企业的商业模式,要好好的遵循软件行业的职业道德规范。
通过介绍航空的发展阶段,我明白了软件的发展和其差不多,一样需要从有想法到动手实现,再到不断探索,改进,扩大,形成一个成熟的体系。通过商业软件和爱好者程序,明白开发软件不能随心而行,要多从客户的角度出发,考虑问题,只有充分考虑全面,才能快速解决突发情况,减少用户损失。只有自己能善于发现问题,解决问题时,才能使得自己更进一步。
接着给软件工程下定义,介绍软件工程的特殊性,讲述了软件工程与计算机科学的关系,软件工程的知识领域,强调了软件工程的目标——创建“足够好”的软件等等,告诉我软件开发中应用工程化原则的重要性;软件工程的魅力;不仅仅要学习好软件工程的知识还要将它和其他学科联合起来学习思考,还要多看书,多多了解软件工程的知识领域,使自己强大起来;在开发软件时,结合时间,客户需求,争取在最适合的时刻开发出“好”的软件。
VSTS——Visual Studio Team System,是由微软开发的一套具有高生产力、高集成性、可扩展的生命周期开发工具。
单元测试是什么?
单元测试是为了让各个模块的质量能得到稳定的,量化的保证的一种有效解决方案。
好的单元测试的标准是什么?
1.单元测试应该在最基本的功能/参数上验证程序的正确性
2.单元测试必须由最熟悉代码的人(程序的作者)来写
3.单元测试过后,机器状态保持不变
4.单元测试要快
5.单元测试应该产生可重复,一致的结果。
6.独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。
7.单元测试应该覆盖所有代码路径。
8.单元测试应该集成到自动测试的框架中。
9.单元测试必须和产品代码一起保存和维护。
回归测试的目的是什么?
1.验证新的代码的确改正了缺陷
2.同时要验证新的代码有没有破坏模块的现有功能,有没有Regression。
效能分析工具是什么?
两种分析方法:
1.抽样:程序运行时,VISUAL STUDIO时不时看一看这个程序运行在哪一个函数内,记录下来,最终得到一个关于程序运行时间分布的大致印象。
优点:不需要改动程序,运行较快,可以很快找到瓶颈。
缺点:不能得出精确地数据,不能准确表示代码中的调用关系树。
2.代码注入:将检测的代码加入到每一个函数中,这样程序的一举一动都被记录在案,程序的各个效能数据都可以被精确地测量。
缺点:运行时间大大加长,产生很大的数据文件。
一般的做法是先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析。
个人开发流程(PSP)是什么?
PSP有以下特点:
1.不局限于某一种软件技术,而是着眼于软件开发的流程。
2.不依赖于考试,而是靠工程师自己收集数据,然后分析,提高。
3.PSP依赖于数据。
4.PSP的目的是记录工程书如何实现需求的效率,而不是记录顾客对产品的满意度。
总结:个人开发流程要着眼的是整个软件开发的流程,输出高质量的产品,需要从个人开发流程上去找bug,然后不断修正,工程师才会成长,产品质量才会不断提高。