1.软件工程的概念

1.背景

为了克服软件危机,1968年10月在北大西洋公约组织(NATO)召开的计算机科学会议上,Fritz Bauer首次提出“软件工程”的概念,试图将工程化方法应用于软件开发。

2.定义

软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

3.目标

软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。

2.软件质量的特性

软件的质量可以用功能性可靠性可使用性效率可维护性可移植性6个特性来衡量。

 

功能性:是指软件所实现的功能达到它的设计规范和满足用户需要的程度。

可靠性:是指在规定的时间和条件下,软件能够正常维持其工作的能力。

可使用性:是指为了使用该软件所需要的能力。

效率:是指在规定的条件下用软件实现某种功能所需要的计算机资源的有效性。

可维护性:是指当环境改变或者软件运行发生故障时,为了使其恢复正常运行所做努力的程度。

可移植性:是指软件从某一环境转移到另一环境时所做努力的程度。

 

但在实际的软件开发中,企图使所有的质量目标同时达到理想的程度往往是不现实的。因为有些质量目标之间是彼此冲突的。质量目标之间的关系如下表所示:

 

功能性

可靠性

可使用性

效率

可维护性

可移植性

功能性

 

提高

 

 

提高

 

可靠性

 

 

 

降低

 

提高

可使用性

 

 

 

降低

提高

提高

效率

 

降低

 

 

降低

降低

可维护性

 

提高

 

降低

 

提高

可移植性

 

降低

 

降低

 


3.软件工程的基本原理

★按软件生存周期分阶段制订计划并认真实施

★坚持进行阶段评审

★坚持严格的产品控制

★使用现代化程序设计技术

★明确责任

★用人少而精

★不断改进开发过程

4.软件生命周期

如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个为软件生命周期或软件生存期。

软件生存期由软件定义软件开发运行维护3个时期组成,每个时期又可分为若干个阶段。

软件定义阶段的的主要任务是解决“做什么”的问题,即确定工程的总目标和可行性;导出实现工程目标应使用的策略及系统必须完成的功能;估计完成工程需要的资源和成本;制订工程进度表。该时期的工作也就是常说的系统分析,由系统分析员完成。它通常又被分为3个阶段:问题分析可行性研究需求分析

软件开发时期的主要任务是解决“如何做”的问题,即具体设计和实现在前一个时期定义的软件,通常由概要设计详细设计编码测试4个阶段组成。

软件运行维护时期的主要任务是使软件持久地满足用户的需求,通常有4类维护轰动:

改正性维护,也就是诊断和改正在使用过程中发现的软件错误;

适合性维护,即修改软件以适应环境的变化;

完善性维护,即根据用户的要求改进或扩充软件,使它更完善;

预防性维护,即修改软件为将来的维护活动预先做准备。

 

                             瀑布模型                             

5.软件工程方法学

定义:在软件生命周期全过程中使用的一整套技术的集合,也称为范型(paradidigm)。

包含要素:方法、工具和过程。

 

1.结构化方法学

定义:把软件生命周期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务。使软件开发的全过程以一种有条不絮的方式进行,从而有效保证了软件开发的质量。在使软件开发摆脱混乱和无序方面起到了重要作用。

缺点:是在适应需求变化方面不够灵活,缺乏行为和数据二者有机结合的机制。

 

2.面向对象方法学

定义:把数据和行为看得同等重要,将数据和对数据的操作紧密地结合起来的方法。