构建之法阅读笔记01
第一章,概论
源程序就是一行行代码,是建立在数据结构上的一些算法。程序还要对数据进行操作,这些数据有些是静态的有些是动态的。但是工程师要把这些数据构建为及其能懂的可执行代码。构建不仅仅是cc和link命令,一个复杂的酸碱不但要有合理的软件构架,软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系,编译参数,链接参数等等,这些都是软件构建的过程。
软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步开展后续工作,如设计(软件架构),实现(写数据结构和算法),测试,到最后发布软件。
构建管理,源代码管理,软件设计,软件测试,项目管理相关的活动是软件工程的核心部分。
软件= 程序+软件工程
软件企业=软件+商业模式
程序是基本功,但是在算法和数据结构智商,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户的利益。
软件工程的开发阶段---1.玩具阶段2.业余爱好阶段3.探索阶段4.成熟的产业阶段
软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程。软件工程包括下列领域:软件需求分析,软件设计,软件构建,软件测试和软件维护。软件工程和下列的学科相关:计算机科学,计算机工程,管理学,数学,管理项目学,质量管理,软件人体工学,系统工程,工业设计和用户界面设计。
软件是可以运行在设计算计及电子设备中的指令和数据的有序集合。(系统软件,应用软件,恶意软件)。
软件的特殊性:1.复杂性2.不可见性3.易变性4.服从性5.非连续性
工程:创造性地运用科学原理,设计和实现建筑,机器,装置或者生产过程,或者是在实践中使用一个或多个上述实体,或者是实现这些实体的过程。
Bug的多少直接衡量一个软件的开发效率,用户满意程度,可靠性,和维护性。
要求:1.研发出符合用户需求的软件,2.通过一定的软件流程,在预计的时间内发布“足够好”的软件3.能证明所开发的软件是可以维护和继续发展的。
第二章,个人技术和流程
创建单元测试函数的主要步骤:1.设计数据2.使用被测试类型的功能3.比较实际结果合预期结果
好的单元测试标准:1.单元测试应该在最基本的功能/参数上验证程序的正确性2.单元测试必须由最熟悉代码的人来写3.单元测试过后,机器状态保持不变4.单元测试要快
5.单元测试应该产生可以重复6.独立性--单元测试的运行/通过/失败不依赖与别的测试,可以认为构造数据,以保持单元测试的独立性7.单元测试可以应该覆盖素有代码路径7.单元测试应该继承到自动测试的框架中8.单元测试必须和产品代码一起保存和维护
回归测试,可以理解为“回归到以前不正常的状态”,就是一个模块或功能以前是正常的,但是在一个新的构建中却出现了问题,这就需要回归测试来解决此类问题。单元测试就是回归测试的基础。
效能分析主要讲的是通过一些测试代码来观察什么地方耗费的时间较多,能不能用别的方法来减少时间的花费,从而完成程序的优化。
个人开发流程,通过对比大学生和一些软件工程师在完成一个相同任务时的数据,告诉我们不要花费过多的时间在编写代码上,需求分析和测试同样重要 。
个人感受:
我以前的做法:花费太多的时间浪费在编写代码上面。
这样不好的原因:需求分析可以更快更准确的确定要做什么,应该怎样做,测试可以减少更好的维护程序代码,更快的找出错误进行修改。
解决办法:在编写程序之前,首先要做一个需求分析,写清楚需要,和实验过程。在程序的过程当中,增加单元测试的数目。