软件工程的概念
背景
为了克服软件危机,1968年10月在北大西洋公约组织(NATO)召开的计算机科学会议上,Fritz Bauer首次提出“软件工程”的概念,试图将工程化方法应用于软件开发。
定义
软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
目标
软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。
软件质量的特性
软件的质量可以用功能性、可靠性、可使用性、效率、可维护性、可移植性6个特性来衡量。
功能性:是指软件所实现的功能达到它的设计规范和满足用户需要的程度。
可靠性:是指在规定的时间和条件下,软件能够正常维持其工作的能力。
可使用性:是指为了使用该软件所需要的能力。
效率:是指在规定的条件下用软件实现某种功能所需要的计算机资源的有效性。
可维护性:是指当环境改变或者软件运行发生故障时,为了使其恢复正常运行所做努力的程度。
可移植性:是指软件从某一环境转移到另一环境时所做努力的程度。
软件工程的基本原理
按软件生存周期分阶段制订计划并认真实施
坚持进行阶段评审
坚持严格的产品控制
使用现代化程序设计技术
明确责任
用人少而精
不断改进开发过程
软件生命周期
如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个为软件生命周期或软件生存期。
软件生存期由软件定义、软件开发和运行维护3个时期组成,每个时期又可分为若干个阶段。
软件定义阶段的的主要任务是解决“做什么”的问题,即确定工程的总目标和可行性;导出实现工程目标应使用的策略及系统必须完成的功能;估计完成工程需要的资源和成本;制订工程进度表。该时期的工作也就是常说的系统分析,由系统分析员完成。它通常又被分为3个阶段:问题分析,可行性研究和需求分析。
软件开发时期的主要任务是解决“如何做”的问题,即具体设计和实现在前一个时期定义的软件,通常由概要设计,详细设计,编码和测试4个阶段组成。
软件运行维护时期的主要任务是使软件持久地满足用户的需求,通常有4类维护轰动:
改正性维护,也就是诊断和改正在使用过程中发现的软件错误;
适合性维护,即修改软件以适应环境的变化;
完善性维护,即根据用户的要求改进或扩充软件,使它更完善;
预防性维护,即修改软件为将来的维护活动预先做准备。