还只是粗略的读了《构建之法》这本书的前几章,对软件工程有了一些理解,做了一些摘抄 和总结:
软件=程序+软件工程,
程序=数据结构+算法,一个复杂的软件要有合理的软件架构·软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系,编译参数,连接参数。
什么是软件工程? 软件工程的核心部分是软件开发活动(构建管理,源代码管理,软件设计,软件测试,项目管理);广义上的软件工程还包括(用户体验,用户界面设计等)。
软件企业=软件+商业模式
故 程序,算法,数据结构是基本功,在算法和数据结构之上,软件工程决定了软件的质量;商业模式界定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大的影响软件用户的利益。
软件工程的目标就是创造足够好的软件,但并不代表着没有BUG,没有BUG不一定是一款完美的软件,BUG就是软件的行为与用户的期望值不一样,是否是BUG,取决于用户开发者的不同角度,并不是完美的软件才可以发布,而是要在时间成本等多种约束条件下使一个软件在“足够好”的时候可以发布。
在实际的软件开发中,绝大部分软件都是由多人合作完成的,而一个人负责的模块的功能被其他人调用是由于其他人对模块功能的误解,疏忽等使软件产生很多错误,而单元测试是解决这个问题有效的解决方案
单元测试步骤是1 设置数据 2 使用被测试类型的功能3 比较实际结果和预期的结果
在单元测试的基础上,可以建立关于这个模块的回归测试(regiession test)在软件项目中若一个模块和功能以前是正常工作的但在一个新的构建中出了问题,那么这个模块就出现了一个退步,从正常的工作状态退化为不正常的工作状态在一个模块的功能逐步完成的同时,与此功能用惯的测试用例也同样在完善中。一旦有关的测试用例通过我们就得到了此模块的功能基准线,一个模块所有的单元测试就是这个模块最初的功能基准线。(这一段有点不清楚)
效能分析,两种方法(抽样 代码注入)
通过前几章的阅读,我大致理解了什么是软件工程,软件工程是做什么的,一个合格的软件工程师需要哪些基本技能,即分而治之,把大的问题分解为小的问题来逐步解决。