第一章随笔
软件=程序+软件工程
软件企业=软件+商业模式
工程师的宗旨是:我构建,故我在
程序在这里指的是源程序,就是一行行的代码,它们是建立在数据结构上的一些算法。程序对数据进行操作,工程师把它们构建为机器能懂的可执行代码。构建不仅仅是cc和link命令,一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数,等等。这些都是软件构建的过程。
软件工程:和软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容,是软件工程的核心部分。是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。广义上的软件工程也包括用户体验、用户界面设计等等。是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件工程的工程二字意味着它与许多工程领域的学科,以及管理学科有很大关系,创造性地运用科学原理,设计和实现建筑、机器、装置或生产过程;或者是在实践中使用一个或多个上述实体;或者是实现这些实体的过程。
软件开发过程有以下五点的难题:
1.复杂性: 软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增加,这些关系的数量往往以几何级数的速度增长。
2.不可见性:软件工程师能直接看见源代码 ,但源代码不是软件本身,工程师看不到自己的源代码是如何具体地在用户的机器上被执行的。
3.易变性 :软件看上去很容易修改,修改软件比修改硬件容易多了。但其实正确的修改软件是一件很困难的事情。
4.服从性:软件不能独自存在,它要运行在硬件上面,要服从系统中其他组成部分的要求,服从用户的要求、行业系统的要求。
5.非连续性:许多软件系统没有增加输入就能看到相应输出增加的特性,有时输入上很小的变化,会引起输出上极大的变化。
软件的行为和用户所期望的不一样就叫Bug。而我一直认为的是程序的错误,缺陷。
Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。
用户满意度:用户在使用时发现了软件的很多问题,影响了用户使用软件的效率
可靠性:某个软甲经常会崩溃,某个操作系统会时不时死机,某个网站往往在最需要的时候登不上去(就好像我们学校的EOL)
软件流程的质量:软件团队的BUG
可维护性:修复了一个问题,不能另一个问题又出来,这样反反复复,浪费时间和资金。