程序=数据结构+算法、 软件=程序+软件工程
一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数等等,这些都是软件构建的过程。源代码管理的问题有时候也叫配置管理,其中有一系列的工具和程序来保证程序的正确性,这些工具流程和程序本身应该更正确,才能保证别的软件的质量,这是质量保障,具体的验证过程叫做软件测试。
软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构)、实现(写数据结构和算法)、测试,到最后发布软件。软件团队的人员在工作过程中有时会流动,新的成员需要尽快读懂已有的程序,了解程序的设计,这是程序理解。软件在运行过程中还会出这样那样的问题,我们可能要时不时给软件打一个补丁,或者维护众多的服务器,修复各种各样的问题,这是软件维护。这一系列过程就是软件的生命周期,有人得负责软件项目的管理。一个好的软件,即使功能和同类软件区别不大,但是会让人感觉到非常好用,这就是软件的用户体验。用户体验和数据结构、算法没有直接的关系,但是很多非常成功的软件就赢在这个方面。
上面这些和软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容,是软件工程的核心部分。广义上的软件工程也包括用户体验、用户界面设计等。所以,一个推论是:软件=程序+软件工程。一个扩展的推论是:软件企业 = 软件 + 商业模式。程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。
在最开始还没有读构建之法这本书时,我写的代码很乱很乱,往往是想到哪里写哪里,到最后自己也不知道那些功能能实现,哪些不能实现,而且由于上学期的数据结构学的并不是很好,导致现在写代码很困难,算法更不用说,都是很差劲。在读了一部分构建之法这本书时,我开始越来越注重代码规范以及数据结构和算法的学习。希望以后会学的越来越好。