第8章软件工程 XX XXX中心 XXXX大学
1 第8章 软件工程 XX XXX中心 XXXX大学
基本要求 1.了解软件工程的基本概念、基本原则 2.理解软件工程的主要定义 3.理解软件的概念及软件的特征 4.了解软件生产的历史、软件危机及项目失败的原因 5.了解软件开发活动 6.了解软件的生命周期概念 7.理解软件过程及模型 8.了解面向对象的分析与设计(软件建模)的概念及过程 9.了解标准建模语言UML的历史沿革及特点 10.初步掌握UML主要建模元素 11.初步掌握UML建立小型系统的主要步骤和方法 12.简单掌握建模工具ROSE
2 基本要求 1.了解软件工程的基本概念、基本原则 2.理解软件工程的主要定义 3.理解软件的概念及软件的特征 4.了解软件生产的历史、软件危机及项目失败的原因 5.了解软件开发活动 6.了解软件的生命周期概念 7.理解软件过程及模型 8.了解面向对象的分析与设计(软件建模)的概念及过程 9.了解标准建模语言UML的历史沿革及特点 10.初步掌握UML主要建模元素 11.初步掌握UML建立小型系统的主要步骤和方法 12.简单掌握建模工具ROSE
内容及安排 授课(课内4学时,课外4学时) ◆8.1软件工程概述0.5学时)◆实验(课内4学时课外4学时) 8.1.1软件及软件的特征 Rose的软件界面(自学) 8.1.2软件生产的历史 实验-1UML建模元素的创建和组织 8.1.3软件危机 8.1.5项目失败的原因 实验2学籍管理系统建摸(3学时) 8.1.6软件工程的主要定义 8.2软件开发活动(1学时) 8.2.1软件的生命周期 8.2.2软件开发活动 8.2.3软件过程及模型 ◆8.3面向对象的分析与设计 8.3.1标准建模语言UML(1学时含 实验介绍) 8.3.2用UML建立学籍管理系统举 例(1学时含实验介绍 ◆8.4建模工具ROSE介绍(自学
3 内容及安排 ❑ 授课(课内4学时,课外4学时) 8.1软件工程概述(0.5学时) ▪ 8.1.1软件及软件的特征 ▪ 8.1.2软件生产的历史 ▪ 8.1.3软件危机 ▪ 8.1.5项目失败的原因 ▪ 8.1.6软件工程的主要定义 8.2 软件开发活动(1学时) ▪ 8.2.1软件的生命周期 ▪ 8.2.2软件开发活动 ▪ 8.2.3软件过程及模型 8.3 面向对象的分析与设计 ▪ 8.3.1标准建模语言UML (1学时含 实验介绍) ▪ 8.3.2用UML建立学籍管理系统举 例(1学时含实验介绍) 8.4建模工具ROSE介绍(自学) 实验(课内4学时,课外4学时) ▪ Rose的软件界面(自学) ▪ 实验-1 UML建模元素的创建和组织 (1学时) ▪ 实验-2 学籍管理系统建摸 (3学时)
8.1软件工程概述
4 8.1软件工程概述
8.1.1软件及软件的特征 ◆软件:计算机程序及说明程序的各种文档,即软件是指令 数据结构和文档的集合。程序是计算任务的处理对象和处理 规则的描述。软件是一个信息变换器,它对信息进行产生 理、获取、修改、显示和传递等处理。被处理的信息可以 简单的比特也可以是复杂的多媒体 ◆软件应具备6个特征: 1是一种逻辑产品,与物质产品有很大的区别 2软件产品的生产主要是研制,生产成本主要在开发和研制,开发研 制完成后,通过复制就产生了大量软件产品。 3软件产品不会用坏,不存在磨损、消耗。但软件是有生命周期的。 4生产主要是脑力劳动,还未完全摆脱手工开发方式 5开发软件的费用不断增加,致使生产成本相当昂贵 6软件还必须具备可维护性( Maintainability)、独立性 ( Dependability)和效率性( Efficiency)和可用性( Usability)四 个属性
5 8.1.1软件及软件的特征 软件:计算机程序及说明程序的各种文档,即软件是指令、 数据结构和文档的集合。程序是计算任务的处理对象和处理 规则的描述。软件是一个信息变换器,它对信息进行产生、 管理、获取、修改、显示和传递等处理。被处理的信息可以 是简单的比特也可以是复杂的多媒体。 软件应具备6个特征: 1 是一种逻辑产品,与物质产品有很大的区别。 2 软件产品的生产主要是研制,生产成本主要在开发和研制,开发研 制完成后,通过复制就产生了大量软件产品。 3 软件产品不会用坏,不存在磨损、消耗。但软件是有生命周期的。 4 生产主要是脑力劳动,还未完全摆脱手工开发方式。 5 开发软件的费用不断增加,致使生产成本相当昂贵 6 软件还必须具备可维护性(Maintainability)、独立性 (Dependability)和效率性(Efficiency)和可用性(Usability)四 个属性
8.1.2软件生产的历史 阶段 早期 第二阶段 第三阶段 第四阶段 时间段 1950-1965 1962-1974 1968-1989 9862003 主要特征 面向批处理 多用户 分布式系统 强大的桌面系统 实时 嵌入“智能” 面向对象技术 有限的分布 数据库 低成本硬件 专家系统 面向大众,消费人工神经网络 自定义软件 软件产品出现者的影响日益增并行计算 强 网络计算机 软件生产阶程序设计时代程序系统时代软件工程时代软件工程时代 段 (结构化方法) 面向对象方 法)
6 8.1.2软件生产的历史 阶段 早期 第二阶段 第三阶段 第四阶段 时间段 1950-1965 1962-1974 1968-1989 1986-2003 主要特征 面向批处理 有限的分布 自定义软件 多用户 实时 数据库 软件产品出现 分布式系统 嵌入“智能” 低成本硬件 面向大众,消 费 者的影响日益增 强 强大的桌面系统 面向对象技术 专家系统 人工神经网络 并行计算 网络计算机 软 件 生 产 阶 段 程序设计时代 程序系统时代 软 件 工 程 时 代 (结构化方法) 软件工程时代 (面向对象方 法)
8.1.3软件危 ◆软件开发技术的进步未能满足发展的要求。在软件开发中遇 到的问题找不到解决的办法,问题积累起来,形成尖锐的矛 盾,寻致了软件危机。 ◆软件危机的表现:对软件开发成本和进度的估计常常很不准 确,经费预算经常突破,完成时间一再拖延;开发的软件不 足户要求,用户对 成的”软件系统不满意的现 经常发生;开发的软件可维护性差;开发的软件可靠性差。 ◆软件危机产生原因为:软件规模越来越大,结构越来越复杂 软件开发管理困难而复杂:软件开发费用不断增加:软件开 发技术落后生产方式落后,仍采用手工方式;开发工具落 率提高缓慢。 假如一个人一年可以开发出一个 行的程序,该软 ◆归件是否集中4000人的力量一年就可以完成呢?绝对 件,不到!因为代码长度增加了4000倍,程序复杂程度的 化,增加远远超过4000倍
7 8.1.3软件危机 软件开发技术的进步未能满足发展的要求。在软件开发中遇 到的问题找不到解决的办法,问题积累起来,形成尖锐的矛 盾,导致了软件危机。 软件危机的表现:对软件开发成本和进度的估计常常很不准 确,经费预算经常突破,完成时间一再拖延;开发的软件不 能满足用户要求,用户对“已完成的”软件系统不满意的现 象经常发生;开发的软件可维护性差;开发的软件可靠性差。 软件危机产生原因为:软件规模越来越大,结构越来越复杂; 软件开发管理困难而复杂;软件开发费用不断增加;软件开 发技术落后;生产方式落后,仍采用手工方式;开发工具落 后,生产率提高缓慢。 归纳起来软件危机的核心原因是软件系统的复杂度远大于硬 件,计算机工业中硬件产品制造已经标准化,工程化,产业 化,但软件生产离此目标还很远。 ◼假如一个人一年可以开发出一个一万行的程序,该软 件是否集中4000人的力量一年就可以完成呢?绝对做 不到!因为代码长度增加了4000倍,程序复杂程度的 增加远远超过4000倍
8.1.5项目失败的原因 因素 Factors 所白自分比 Incomplete Requirements个完整的需求 13.1% 2. Lack of User Involvement缺乏用户参与 12.4% 3. Lack of Resources缺乏资源 10.6% 4. Unrealistic Expectations不实际的期望 9.9% Lack o上 xecutive Suppor之我仃的义 9.3% 持 6. Changing Requirements Specifications m 8.7% 求和规格的变化 7. Lack of Planning缺乏计划 8.1 8. Do not Need It Any Longer不再需要 7.5% 9. Lack of IT Management缺乏∏T管理 6.2% Technology Illiteracy技术落后(技术盲 4.3% 11. Others其他 9.9%
8 8.1.5项目失败的原因 因素Factors 所占百分比% 1. Incomplete Requirements不完整的需求 13.1% 2. Lack of User Involvement缺乏用户参与 12.4% 3. Lack of Resources缺乏资源 10.6% 4. Unrealistic Expectations不实际的期望 9.9% 5. Lack of Executive Support缺乏执行的支 持 9.3% 6. Changing Requirements & Specifications需 求和规格的变化 8.7% 7. Lack of Planning缺乏计划 8.1% 8. Do not Need It Any Longer不再需要 7.5% 9. Lack of IT Management缺乏IT管理 6.2% 10. Technology Illiteracy技术落后(技术盲 区) 4.3% 11. Others其他 9.9% Standish Group 1995
8.1.6软件工程的主要定义 ◆软件工程基本思想:用科学的知识和技术原理来定义 开发、维护软件;用工程科学的观点进行费用估算, 制定进度,制定计划和方案;用管理科学的方法和 原理进行生产的管理;用数学的方法建立软件开发 中的各种模型和算法 软件工程目标:付出较低开发成本;达到要求的功 能;取得较好的性能;开发的软件易于移植;只需 较低的维护费用;能按时完成开发任务,及时交付 使用;开发的软件可靠性高。 ◆软件工程内容:研究内容包括开发技术和开发管理 两个方面。开发技术主要研究软件开发方法,开发 过程,开发工具和环境。开发管理主要研究软件管 理学,软件经济学,软件心理学
9 8.1.6软件工程的主要定义 软件工程基本思想:用科学的知识和技术原理来定义、 开发、维护软件;用工程科学的观点进行费用估算, 制定进度,制定计划和方案;用管理科学的方法和 原理进行生产的管理;用数学的方法建立软件开发 中的各种模型和算法。 软件工程目标:付出较低开发成本;达到要求的功 能;取得较好的性能;开发的软件易于移植;只需 较低的维护费用;能按时完成开发任务,及时交付 使用;开发的软件可靠性高。 软件工程内容:研究内容包括开发技术和开发管理 两个方面。开发技术主要研究软件开发方法,开发 过程,开发工具和环境。开发管理主要研究软件管 理学,软件经济学,软件心理学
软件工稈需要解决的问题:软件的费用,可靠性, 可维护性,软件生产率和软件的重用。 ◆软件工程规定了获取,供应,开发,操作和维护软 件时,要实施的过程、活动和任务。目的是为各种 人员提供一个公共的框架,以便用相同的语言进 流。软件工程包括:获取过程,供应过程,开发 楻,操作过楻,维护过程,管理过程,支持过程 ◆软件开发方法:使用早已定义好的技术集及符号表 示习惯来组织软件生产的过程。软件开发方法是克 服软件危机的重要方面 对软件工程及软件 业的发展起了不可估量的作用
10 软件工程需要解决的问题:软件的费用,可靠性, 可维护性,软件生产率和软件的重用。 软件工程规定了获取,供应,开发,操作和维护软 件时,要实施的过程、活动和任务。目的是为各种 人员提供一个公共的框架,以便用相同的语言进行 交流。软件工程包括:获取过程,供应过程,开发 过程,操作过程,维护过程,管理过程,支持过程。 软件开发方法:使用早已定义好的技术集及符号表 示习惯来组织软件生产的过程。软件开发方法是克 服软件危机的重要方面之一,对软件工程及软件产 业的发展起了不可估量的作用