
2 第1章面向对象技术概述 ·软件危机 ●结构化程序设计 ●软件工程 ●面向对象技术
第1章 面向对象技术概述 ⚫软件危机 ⚫结构化程序设计 ⚫软件工程 ⚫面向对象技术 2

软件危机 软件危机主要表现在以下几个方面: ●软件系统急剧膨胀 ·软件的复杂程度呈指数上升 ●软件的可靠性不能控制 ●几乎不可能的软件管理和维护
软件危机 软件危机主要表现在以下几个方面: ⚫软件系统急剧膨胀 ⚫软件的复杂程度呈指数上升 ⚫软件的可靠性不能控制 ⚫几乎不可能的软件管理和维护

解决软件危机的途径 ●62年美国金星探测器水手2号卫星失败. ●程序是什么?软件是什么?怎样保证程 序的绝对可靠? ●一场对程序本质的研究导致goo之争 。从理论上无法证明基于任意赋值、任意 goto的程序是正确的。 。程序测试只能证明程序有错,不能证明程 序无错。 ●出路一结构化程序程序设计
解决软件危机的途径 ⚫62年美国金星探测器水手2号卫星失败… ⚫程序是什么?软件是什么?怎样保证程 序的绝对可靠? ⚫一场对程序本质的研究导致goto 之争 从理论上无法证明基于任意赋值、任意 goto的程序是正确的。 程序测试只能证明程序有错,不能证明程 序无错。 ⚫出路 - 结构化程序程序设计

结构化程序设计 ●取消goo!只允许顺序、分支、循环三 种结构组成结构化程序。 ·每一种结构只能一个入口,一个出口。 ●设计重于编码,分析重于设计。 ●自顶向下,逐步求精。 ·易编程、易维护、提高了软件开发效率 和质量
结构化程序设计 ⚫取消goto! 只允许顺序、分支、循环三 种结构组成结构化程序。 ⚫每一种结构只能一个入口,一个出口。 ⚫设计重于编码,分析重于设计。 ⚫自顶向下,逐步求精。 ⚫易编程、易维护、提高了软件开发效率 和质量

结构化程序设计 程序块 程 循环体 程 入口 条件 出▣ 序 序块 表达式 假 假→程序块 块
结构化程序设计 程序块 条件 真 假 入口 出口 程 序 块 程 序 块 循环体 表达式 真 假 程序块

解决软件危机的途径一软件工程 ●鉴于手工作坊式的开发与硬件不成比例 以及结构化的成功经验一以工程化的方 法开发软件。 ·为设计、制造软件产品,要定出规程 规范和标准,有了规范和标准,就可以 制造用于设计、开发、管理、测试软件 的工具
解决软件危机的途径-软件工程 ⚫鉴于手工作坊式的开发与硬件不成比例, 以及结构化的成功经验 -以工程化的方 法开发软件。 ⚫为设计、制造软件产品,要定出规程、 规范和标准,有了规范和标准,就可以 制造用于设计、开发、管理、测试软件 的工具

软件工程时代 ●软件开发应该是一种组织良好、管理严 密、各类人员协同配合而共同完成的工 程项目。 ●必须充分吸收和借鉴人类长期以来从事 各种工程项目所积累的行之有效的原理、 概念、技术和方法,特别要吸收几十年 来计算机硬件工业的发展经验。 ●既要有技术措施(方法和工具),又要 有组织管理措施
软件工程时代 ⚫软件开发应该是一种组织良好、管理严 密、各类人员协同配合而共同完成的工 程项目。 ⚫必须充分吸收和借鉴人类长期以来从事 各种工程项目所积累的行之有效的原理、 概念、技术和方法,特别要吸收几十年 来计算机硬件工业的发展经验。 ⚫既要有技术措施(方法和工具),又要 有组织管理措施

生命周期方法学一瀑布模型 从时间角度对软件开发和维护的复杂问题进行分解 可行性研究 可行性研究报告 需求分析 需求分析报告,计划书 概要设计 概要设计说明书 详细设计 详细设计说明书 编码、测试 源代码、测试报告 使用、维护 用户手册,维护报告 退役 软件= 程序十文档
生命周期方法学-瀑布模型 需求分析 概要设计 详细设计 使用、维护 编码、测试 需求分析报告,计划书 概要设计说明书 详细设计说明书 源代码、测试报告 用户手册,维护报告 软件= 程序+文档 从时间角度对软件开发和维护的复杂问题进行分解 可行性研究 退役 可行性研究报告

计算机辅助软件工程一CASE ●软件工程一规范一每一阶段工具 。结构编辑器 。由算法描述一>自动生成源代码 。文档自动生成工具 。工程进度管理工具 ·工具箱、开发平台
计算机辅助软件工程-CASE ⚫软件工程 - 规范 - 每一阶段工具 结构编辑器 由算法描述 ->自动生成源代码 文档自动生成工具 工程进度管理工具 ⚫工具箱、开发平台

传统方法学的缺点 ●软件生产率的提高不能满足用户需求 ●没有很好地解决软件重用问题 ·软件仍然很难维护 ●软件往往不能真正满足用户需要 。开发人员不能理解用户需求,开发的软件 与用户预期的系统不一致。 。开发的系统不能适应用户需求的不断变化
传统方法学的缺点 ⚫软件生产率的提高不能满足用户需求 ⚫没有很好地解决软件重用问题 ⚫软件仍然很难维护 ⚫软件往往不能真正满足用户需要 开发人员不能理解用户需求,开发的软件 与用户预期的系统不一致。 开发的系统不能适应用户需求的不断变化