构建之法阅读笔记01
软件的生命周期包括需求分析、设计架构、编码实现、软件测试、软件发布和软件维护,但我们毕业以后所做的工作却正好与之相反。软件的关键在于编码的实现,好的代码可以使时间复杂度降低、应用简便,而“程序=数据结构+算法”。
就像企业的成功在于他的经营理念,软件工程的核心在于软件开发。而我们现在就像坐飞机一样,有飞上天的梦想,并且已经实现了,但我们却不能亲自制造一架飞机带我们飞上天,我们可以编写一些小程序,就像“Hello World!”一样,但我们编写一些大型的工程还是不能实现的,就像二柱子同学的四则运算,我可以写出产生的随机数,生成题目,但是软件的需求分析、要求的确保实现还是无能为力的。
一个好的软件工程的目标并不只在于软件的bug有多少,还在于用户能对它有多满意,它的可运行性、可靠性、可维护性,等等。是否是bug,取决于用户和开发者的不同角度。比如飞信的不能视频聊天就是它的bug。同样是聊天交友软件,QQ的网民遍布全国,但飞信的用户却少,中间或许会有营销模式的不同导致的差异,也可能是同类软件太多,市场的饱和,但不可否认的是QQ的确比飞信要好用。
软件工程是把系统的, 有序的, 可量化的方法应用到软件的开发, 运营, 和维护上的过程。