计算机软件仍然是世界舞台上最为重要的科技领域,并且是“意外效应法则”的一个最好体现。
意外效应法则(law of unintended consequence):某些新科技的发明创造会给其他一些看似无关的技术领域、商业企业、公众甚至整个社会文化带来深远而出人意料的影响和作用。
软件既是产品也是交付产品的载体。
【定义软件】
1、软件是设计开发的,而不是传统意义上的生产制造的。
2、软件不会“磨损”。
a) 硬件的失效率遵循“浴缸曲线”,早起具有相对较高的失效率,缺陷被逐个纠正之后,失效率随之降低并在一段时间内保持平稳(理想情况下很低)。然而随着时间推移,因为灰尘、震动、不当使用等环境问题造成硬件组件损耗累积的效果,失效率再次提高,硬件开始“磨损”。
b) 软件不会受硬件磨损的环境问题的影响,未知缺陷将在程序的生命周期的前期造成高失效率。
c) 软件不会磨损,但软件退化的确存在。不断的变更是软件退化的根本原因。每个软件的缺陷都暗示了设计的缺陷或者在从设计转化到机器可执行代码的过程中产生的错误。因此,软件维护要应对变更请求,比硬件维护更为复杂。
3、虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求制定的。
软件的构件应该设计并实现成可在不同程序中复用的组件。现代的可复用构件封装了数据和对数据的处理,使得软件工程师能够利用可复用的构件构造新的应用程序。
【软件应用领域】
1、系统软件
2、应用软件
3、工程/科学软件
4、嵌入式软件
5、产品线软件
6、Web应用软件
7、人工智能软件
8、开放计算
9、网络资源
10、开源软件
【遗留软件】(legacy software):年代久远的旧程序。
1、生命周期长、业务关键性
2、质量差(基于现代软件工程思想)。遗留系统的设计难以扩展,代码费解,文档混乱甚至没有,测试用例和结果未归档,变更历史管理混乱等。
3、如果遗留软件可以满足用户的需求并且可靠运行,那么它就没有失效,不需要修改。
4、随着时