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