1,1 软件工程概述
1.1.1 软件危机
1.软件危机的产生
( 1) 软件危机的来源计算机软件的规模越来越大,结构越来越复杂 。
( 2)软件危机的定义指在软件 开发 和 维护 过程中所遇到的 一系列严重问题,几乎所有的软件都不同程度地具有这些问题。
( 1968年,北大西洋公约组织计算机科学家在德国召开国际会议,正式提出,软件危机,这个名词)
( 3)软件危机产生的主要原因
① 软件开发人员随心所欲地进行编程,缺乏系统的、科学的开发方法的指导
② 轻视软件维护工作,致使维护费用占软件总费用的 55%到 70%
③ 许多软件错误在运行之前难以发现,且软件规模庞大需要多人合作完成
2.软件危机的表现
( 1) 难以正确估计软件开发成本和进度;
( 2) 难以确保软件系统的功能和性能最终能满足用户的要求,常常开发出的软件不能满足用户的实际要求;
( 3) 难以确保软件的质量尤其是可靠性,软件质量往往存在问题;
( 4) 软件没有配置适当的文档,这常常使团队开发和软件维护很困难,因此软件可维护性差
( 5) 软件发展的速度跟不上硬件的发展,软件在计算机系统中所占的成本逐年上升,生产效率却无法满足市场的需求
1.1.2 软件工程
产生意义指导软件开发和维护工作,尽量避免软件危机带来的严重后果 。
目标和内容
① 目标:以尽量小的代价和尽量少的时间开发出较高性能的合格软件 。
② 内容:采用工程的概念,原理,技术和方法开发和维护软件,将经过证明的正确的管理技术和当前最好的技术方法结合起来用于帮助提高软件的生产效率及质量,缩短软件的开发周期 。
软件工程中研究的主要问题
( 1)降低软件费用
( 2)提高软件的质量
( 3)提高软件的可维护性
( 4)提高软件的生产效率
( 5)提高软件的可重用性
1.1.3 软件生命周期法 ( 瀑布模型 )
概念软件生命周期是指从提出软件开发要求开始直至软件报废的整个过程 。
软件生命周期法是从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,它同时又为下一个阶段做准备,是下一个阶段开始的前提。
这样可以将复杂的开发工作通过有限的确定步骤,逐步从抽象的逻辑概念转化为具体的物理实现。
问题定义软件定义 可行性研究需求分析软件开发 概要设计软件设计软件生命 详细设计编码与单元测试软件实现综合测试软件维护淘汰阶段 关键问题 结束标准问题定义 问题是什么? 关于规模和目标的报告书系统的高层逻辑模型:
可行性研究 有可行的解吗? 数据流图成本效益分析系统的逻辑模型需求分析 系统必须做什么 数据流图数据字典算法描述可能的解法:
概括地说,应该如 系统流程图总体设计 何解决这个问题? 成本 /效益分析推荐的系统结构层次图或结构图详细设计 怎样具体地实现这 编码规格说明:
个系统 HIPO图或 PDL图编码和单元测试 正确的程序模块 源程序清单;单元测试方案和结果综合测试 符合要求的软件 综合测试方案的结果;完整一致的软件配置维护 系统能长期满意地 软件问题报告单运行 软件修改报告单瀑布模型每个阶段都必须坚持以下原则:
1,每个阶段都必须提供完整的文档,以作为该阶段工作结束的标志 。
2,每个阶段结束前都应对所完成的文档进行评审,以便尽早发现问题,改正错误。每个阶段的文档既是前一阶段的工作总结,又是下一阶段工作开始的依据。只有经过认真评审的文档,才能集思广益,保证该阶段工作的正确性