软件工程复习篇(第一章)
- 软件工程复习篇(第一章)
-
- 第一章
-
- 软件危机的定义
- 软件危机的表现
- 产生软件危机的原因
- 消除软件危机的途径
- 软件工程的定义
- 软件工程的基本原理
- 软件工程包含的领域
软件工程复习篇(第一章)
第一章
软件危机的定义
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机的表现
- 对软件开发成本和进度的估计常常很不准确。
- 用户对“已完成的”软件系统不满意的现象经常发生。
- 软件产品质量往往靠不住。
- 软件常常是不可维护的。
- 软件通常没有适当的文档资料。
- 软件成本在计算机系统总成本所占的比例逐年上升。
- 软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因
一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
消除软件危机的途径
既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件地一门新兴学科。
软件工程的定义
概括来说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效维护它,这就是软件工程。
软件工程的基本原理
-
用分阶段的生命周期计划严格管理
有人经统计发现,在不成功的软件项目中有一半左右是由于计划不周造成的。(计划的重要性)
-
坚持进行阶段评审
- 大部分错误是在编码之前造成的。
- 错误发现与改正得越晚,所需付出的代价也越高。
因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。
-
实行严格的产品控制
在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。但是,在软件开发过程中改变需求又是难免的。
一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。绝对不能谁想修改软件(包括尚在开发过程中的软件),就随意进行修改。
-
采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。
20世纪60年代末提出的结构程序设计技术,已经成为绝大多数人公认的先进的程序设计技术。
以后又进一步发展出各种结构分析与结构设计技术。
近年来面向对象技术已经在许多领域中,迅速地取代了传统的结构化开发方法。
实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。
-
结果应能清楚地审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难以评价和管理。
为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果够清楚的审查。
-
开发小组的人员应该少而精
素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件的错误明显少于素质低的人员所开发的软件中的错误。
此外随着开发小组人员数目的增加,因为交流情况讨论问题而造成的通信开销也急剧增加。
-
承认不断改进软件工程实践的必要性
遵循上述6条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产。但是仅有上述6条原理,并不能保证软件开发与维护的过程能赶上时代前进的步伐,不能跟上技术的不断进步。
软件工程包含的领域
- 软件需求。软件需求涉及软件需求的获取、分析、规格说明和确认。
- 软件设计。软件设计定义了一个系统或组件的体系结构,组件、接口和其他特征的过程以及这个过程的结果。
- 软件构建。软件构建是通过编码、验证、单元测试、集成测试和调试的组合,详细地创建可工作和有意义的软件。
- 软件测试。软件测试是为评价、改进产品的质量、标识产品的缺陷和问题而进行的活动。
- 软件维护。软件维护是指由于一个问题或改进的需要而修改代码和相关文档,进而修正现有的软件产品并保留其完成性的过程。
- 软件配置管理。软件配置管理是一个支持性的软件生命周期过程,它是为了系统的控制配置变更,在软件系统的整个生命周期中维持配置的完整性和可追踪性,而标识系统在不同时间点上的配置的学科。
- 软件工程管理。软件工程的管理活动建立在组织和内部基础结构管理、项目管理、度量程序的计划制定和控制三个层次上。
- 软件工程过程。软件工程涉及软件生命周期过程本身的定义、实现、评估、管理、变更和改进。
- 软件工程模型和方法。软件工程模型特指在软件的生产与使用、退役等各个过程中的参考模型的总称,诸如需求开发模型、架构设计模型等都属于软件工程模型的范畴;软件开发方法,主要讨论软件开发各种方法及其工作模型。
- 软件质量。软件质量特征涉及多个方面,保证软件产品的质量是软件工程的重要目标。
- 软件工程职业实践。软件工程职业实践涉及软件工程师应履行其实践承诺,使软件的需求分析、规格说明、设计、开发、测试和维护成为一项有益和受人尊敬的职业;还包括团队精神和沟通技巧等内容。
- 软件工程经济学。软件工程经济学是研究为实现特定功能需求的软件工程项目而提出的在技术方案,生产(开发)过程,产品或服务等方面所做的经济服务与论证,计算与比较的一门系统方法论学科。
- 计算基础。计算基础涉及解决问题的技巧、抽象、编程基础、编程语言的基础知识、调试工具和技术、数据结构和表示、算法和复杂度、系统的基本概念、计算机的组成结构、编译基础知识、操作系统基础知识、数据库基础知识和数据管理、 络通信基础知识、并行和分布式计算、基本的用户人为因素、基本的开发人员人为因素和安全的软件开发和维护等方面的内容。
- 数学基础。数学基础涉及集合、关系和函数,基本的逻辑证明技巧、计算的基础知识、图和树、离散概率、有限状态机、语法,数值精度、准确性和错误数论和代数结构等方面的内容。
- 工程基础。工程基础涉及实验方法和实验技术、统计分析、度良、工程设计,建模、模拟和建立原型,标准和影响因素分析等方面的内容。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!