第1章 概论
1.1 软件=程序+软件工程
1.2 软件工程是什么
1.3 练习与讨论对于我们学软件工程的,首选就要就要了解什么是软件工程。在书中第一章就介绍了软件和软件工程。首先,了解到来了什么是程序,什么是软件什么是软件工程,也了解到了一个软件不是简简单单就能说写就写的,还需要考虑各种因素,如人们的需求,功能的可行性。程序=数据结构+算法、 软件=程序+软件工程
客户们对程序员的需求从一个简单的程序,扩展到一个满足各种功能的应用软件,再扩展到一个能保证维修的软件服务
程序,在这里指的是源程序,就是一行行的代码。仔细看过去,它们的确是建立在数据结构上的一些算法
程序还要对数据进行操作,这些数据有些是静态的,有些是动态的
但是光有代码和静态数据还是不行,工程师要把它们构建为机器能懂的可执行代码。构建不仅仅是cc和link命令
一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数,等等。这些都是软件构建的过程
源代码管理的问题—有时候也叫配置管理
有一系列的工具和程序来保证程序的正确性,这些工具流程和程序本身应该更正确,才能保证别的软件的质量。这就是质量保障,具体的验证过程叫做软件测试
软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计、实现、测试,到最后发布软件
软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计,这叫程序理解
软件在运行过程中还会出这样那样的问题,也许我们要时不时给软件打一个补丁,或者维护众多的服务器,团队的新老成员要一起工作,修复各种各样的问题,这叫软件维护,或者服务运营
这一系列过程就是软件的生命周期,有人得负责软件项目的管理
一个好的软件,即使功能和同类软件区别不大,但是会让人感觉到非常好用。这就是软件的用户体验 。用户体验和数据结构、算法没有直接的关系,但是很多非常成功的软件就赢在这个方面
上面这些和软件开发活动相关的内容,是软件工程的核心部分。广义上的软件工程也包括用户体验、用户界面设计等。所以,一个推论是:
软件 = 程序 + 软件工程
一个扩展的推论是:
软件企业 = 软件 + 商业模式
程序是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户的利益。
个人感受:
以前都为了解决问题而去思考问题,对于每个问题不能融会贯通,没有统一的解决思路
书中说这样只会让我们走更多弯路,让我们离解决思路更远
以后再遇到情况下永远要以解决问题为导向,我要做什么,我就去了解什么,这样才是最直接的方法。要学会说话并不要求你会走路,虽然你知道,会走路和会说话对人来说都同等重要。软件工程与机械工程都一样,是解决问题的一个规范,这是由于前人在解决问题的时候总结出来,这样去解决问题是最稳妥的,最高效的,它不仅面对了这个问题,而且考虑了这个问题的各个方面,不光是完成功能,更有进一步的完善。这样才是完整的解决了这个问题。所以学习软件工程的流程很重要,因为迟早你会遇到这样的问题,与其到那时候才发现:哦,原来用软件工程的这个流程去做就可以规避这样的问题。还不如现在就这样去做,尽可能少地碰到问题。