软件危机介绍
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机主要有以下一些典型表现:
- 对软件开发成本和进度的估计常常很不准确。
- 用户对“已完成的”软件系统不满意的现象经常发生。
- 软件产品的质量往往靠不住。
- 软件常常是不可维护的。
- 软件通常没有适当的文档资料。
- 软件成本在计算机系统总成本中所占的比例逐年上升。
- 软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。
软件工程的7条基本原理:
1.用分阶段的生命周期计划严格管理。
在软件的整个生命周期中应该制定并严格执行6类计划,它们是项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划和运行维护计划。
2.坚持进行阶段评审。
软件的质量保证工作不能等到编码阶段结束之后再进行。
3.实行严格的产品控制。
当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。所谓基准配置又称为基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。基准配置管理也称为变动控制:一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。绝对不能谁想修改软件(包括尚在开发过程中的软件),就随意进行修改。
4.采用现代程序设计技术
5.结果应能清楚地审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。
6.开发小组的人员应该少而精
7.承认不断改进软件工程实践的必要性
软件工程包含的领域:
1.软件需求
软件需求表达了为解决某些真实世界问题而施加在软件产品上的要求和约束。软件需求的主要类型包括:产品与过程,功能性与非功能性,突出的属性。软件需求知识领域涉及软件需求的抽取、分析、规格说明和确认。
2.软件设计
软件设计的结果必须描述软件架构(即软件如何分解成组件并组织起来)以及这些组件之间的接口,它必须详细地描述每个组件以便能构建这些组件。
软件设计在软件开发中起着重要作用:软件工程师为了实现一个解决方案要设计出各种的模型形成蓝图。我们可以分析和评估这些模型,以确定据此能否实现各种不同的需求;也可以检查和评估候选方案,并进行权衡取舍。最后,我们可以使用作为设计结果的模型来规划后续的开发活动,并且作为构造与测试的输入和起始点。
软件设计由两个处于软件需求和软件构建之间的活动组成。
◇ 软件架构设计(有时称做顶层设计):描述软件的顶层结构和组织,并且标识各种不同的组件。
◇ 软件详细设计:详细地描述各个组件,使之能被构建。
3.软件构建
软件构建指的是如何创建产生软件的详细步骤,这其中包括编码、验证、单元测试、集成测试和调试。
4.软件测试
5.软件维护
6.软件配置管理
软件配置管理(Software Configuration Management,SCM)是一项跟踪和控制软件变更的活动。
7.软件工程管理
软件工程管理是软件的开发和维护的管理活动,为了达到系统的、遵循规程的和可量化的目标,它包括计划、协调、度量、监控、控制和报表。
8.软件工程过程
9.软件工程工具和方法
10.软件质量
软件分类
阅读来源:
- 软件工程-实践者的研究方法