460 likes | 691 Views
北京理工大学教学课件. 软件工程. 课 名:软件工程. 教材: 软件工程 ( 第二版)齐治昌等 参考教材 : 1 计算机软件工程规范国家标准汇编 (2000) 2 软件工程 — 实践者的研究方法(第六版) 教学方式:授课+课程设计 课时: 48. 教学目的和要求:. ( 1 ) 掌握软件工程的基本概念 ( 2 )了解软件工程项目管理的基本内容和方 法 ( 3 )学会软件工程项目开发过程的分析、设 计、编码要求以及测试、维护的基本策 略和方法
E N D
北京理工大学教学课件 软件工程
课 名:软件工程 教材: 软件工程(第二版)齐治昌等 参考教材: 1 计算机软件工程规范国家标准汇编(2000) 2 软件工程—实践者的研究方法(第六版) 教学方式:授课+课程设计 课时: 48
教学目的和要求: (1) 掌握软件工程的基本概念 (2)了解软件工程项目管理的基本内容和方 法 (3)学会软件工程项目开发过程的分析、设 计、编码要求以及测试、维护的基本策 略和方法 (4)了解软件工程技术的最新发展趋势和动 向
主要内容为: (1)软件工程概述: 软件工程发展、过程模型、软件过程能力成熟度模型及UML程建模语言介绍 (2-4) (2) 软件项目管理技术: 软件项目管理的基本概念、项目计划、 风险分析、软件质量保证、软件配置管理 (6) (3)软件工程技术: 软件工程分析方法、软件工程系统设计方法、软件测试技术(34) (4)软件质量度量:软件度量模型、面向对象度量特征、面向对象度量模型(2-4) (5)软件维护:软件的可维性、软件维护的任务及过程、软件维护的副作用(2-4) (6)软件工程发展趋势:软件体系结构发展和趋势、构件和接口技术发展和趋势、复用技术发展和趋势(2)
第一章 软件工程概述
第一章 软件工程概述的内容和学时 (2-3学时) 1.1软件基本概念、分类、特点 1.2 软件工程的发展过程 1.3 软件工程的活动 1.4软件过程模型 1.5微软解决框架过程模型 1.6 软件过程能力成熟度模型 1.7 UML程序建模语言介绍
1.1软件基本概念、分类、特点 1.1.1 软件 软件是计算机系统中与硬件相互依存的另一 部分,包括程序、数据及相关文档的完整集合。 三要素 程序:按事先设计的功能、性能要求执行的指令 (语句)序列; 可执行的 数据:使程序能正常操纵信息的数据结构; 文档:与程序开发、维护和使用有关的图文资料。
计算机软件定义(GB) 与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。 • 软件表示 S = ( I, O, E, R ) 其中: I=(i1,i2,… ,in)输入集合。Ij表示一个抽象的输入数据类型 O=(O1,O2,…,On)输出集合。Oj表示一个抽象的输出数据类型 E=(e1,e2,…,en)构成集合。ei表示一个子系统或一个构件 R=(r1,r2,…,rn)构件关系集合.ri表示一个关系。
1.1.2 软件的特点 1. 是逻辑实体,非物理实体,具抽象性; 2. 没有明显的制作过程; 3. 运行、使用期间不存在磨损、老化; 4. 软件的开发、运行受计算机系统的限制; • 复杂性高,成本昂贵。 • 涉及社会因素。
1.1.3 软件分类 软件从设计、实现、维护和传统工程有相同的基础 • 2. 基于软件工作方式: • * 实时处理 • * 分时处理 • * 交互处理 • * 批处理 1. 基于软件大的功能框架: * 系统软件 * 支撑(工具)软件 * 应用软件 • 3. 软件是一个担任双重任务的产品: * 它是一个有价值的商品 * 它是一个开发和运行产品的载体
1.1.4 软件开发技术面临的问题 • 管理者的错误观点: • 我们已经有标准和规程了 • 我们已经有好的开发平台和工具了 • 我们可以在开发进度得不到保障时,可增家开发人员 • 我们可以外包一部分项目,缓解项目的压力 • 开发者的错误观点: • 编完程序就大功告成 • 程序未运行前,没有质量问题 • 最后项目完成只提交一个程序 • 软件工程,就是写文档,增加开发成本 管理者 1软件开发的 错误观点 开发者 用户 • 用户的错误观点: • 因为知到项目的目标,可先编程序。 • 不考虑项目将来怎样,以后要变改就行了
2. 软件复杂性引发的软件危机 例1 Windows95程序超过1000万行 例2 WWMCCS(军事和控制)花费3500多人拖了几年,交付后发显出100个错误。最后失败。 例3 1963年美国的火箭控制系统程序。 在该程序中,把FORTRAN语句 DO 5 I=1,3 写成了 DO 5 I=1.3 结果使得发往火星的火箭爆炸,造成1000多万美元的损失 例4:1966年开发的IBM360机的操作系统。 该操作系统花费了5000人年的工作量,写出了近100万行源程序,但是却得到一个很不成功的软件。每更新一次版本,都能找到1000多个错误,成为用之不灵、弃之可惜的软件系统
3.软件危机的主要特点 • 软件开发周期大大超过规定日期; • 软件系统开发成本高,周期长,质量差,满足不了市场需求; • 软件质量无保证 • 软件系统开发人员数量少,质量低. • 软件系统维护难度大. • 软件开发缺乏合适的工具和方法 • 软件的版权问题得不到保证
4 yet, Success Hasnt Come Easily 成功的标准: 53% 16% • 用户在使用 • 用户使用软件很容易做完要做的事 31% 成功 失败的根本原因 挑战 开发人员写出的软件达不到用户要求: • 人的能力问题. • 当前技术发展问题 • 系统平台问题 失败
1.2 软件工程的发展 1.2.1 软件的发展 在软件危机形式下,软件工程诞生了,1968年在北大西洋公约组织(NATO)的德国密斯照开的NATO学术会议上,软件工程术语首次提出
1.2.2 软件生命周期(Software Life Cycle) • 软件产品或软件系统从设计、投入使用到被淘汰的全过程
1.1.6 硬件、软件生命周期的比较 由于副作用造成的故障率提高 生命初期 磨损后 故障率 故障率 修改 实际曲线 理想曲线 时间 时间 软件实际故障率曲线 硬件故障率曲线
改正一个问题需付出的代价 2000 5.0 改正一个问题估计的工作量 改正一个问题的估计费用 1000 2.5 200 0.5 (美元) 20 0.05 (人天) 编码 现场 需 求 分 析 集成测试 结构设计 详细设计 系统测试
1.2.3 软件工程的定义 1 IEEE93对软件工程定义: 软件工程是(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护。即将工程化应用于软件。(2)在(1)中所述方法的研究 IEEE:美国电气和电子工程师学会: (Institute of Electrical and Electronics Engineers) 学会设各种专门技术分会,软件标准分技术委员会为SESS 2 定义给的四个要点: 软件工程方法和性质----系统化、严格约束、可量化的方法 软件工程方法的作用和范围-----软件的开发、运行和维护 软件工程方法的目标----即将工程化应用于软件 软件工程方法的趋势-----方法的研究
3 软件工程的目标 在给定成本、进度的前提下,开发出有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满 足用户需求的产品 。 4 软件工程的三视图 工程的观点: 包括:软件项目招标、合同、实施、监督、验收推广等。以经济管理科学为依据,研究软件工程的规划策略和经济收益等工程问题 技术的观点: 包括:软件项目的分析、设计、编码、测试、维护等技术方法。按软件技术理论,以获得高效、健壮、可复用、可维护为目的,研究软件体系结构、组成以及构造方式、等 管理的观点: 包括:软件项目开发人员组织控制、进度风险分析和质量保证体系等方面。以科学性、高效可行及可测量性为目标来研究工程项目管理
1.3 软件工程的活动 1 软件工程框架 目标 性 性 性 用 组 织 过 程 确 算 可 正 支 持 过 程 合 基本过程 选取适宜的开发模型 采用合适的设计方法 程 提供高质量的工程支持 过 重视软件工程的管理 原则
2 软件工程活动的V型模型 确认测试 项目需求计划 需求分析 系统测试 概要设计 集成与测试 详细设计 单元测试 编码
3 软件生产过程 应用 系统
软件生产过程 领域 1 领域 2 应用 系统 应用 构件库 应用构件 提取车间
软件生产过程 1 领域 1 领域 2 2 应用 系统 应用 构件库 3 4 应用构件 提取车间 构件生 产车间 1基础构件,2功能构件 3接口构件,4用户界面构件
软件生产过程 1 领域 1 ... 领域 2 2 应用 系统 应用 构件库 3 组装 车间 构件库 4 应用构件 提取车间 1基础构件,2功能构件 3接口构件,4用户界面构件 构件生 产车间
1.3 软件过程模型 • 软件工程学的基础是软件过程 • 软件过程贯穿于软件生命周期中 • 软件工程学中的方法用于软件过程的各阶段的各项活动中 (1) 什么是软件生命周期 (2) 什么是软件过程 (3) 软件过程中各阶段的各项活动是什么 (4) 经典的软件过程开发模型有那几种 学习的要点
1 软件过程定义 根据不同的项目来定义贯穿于软件生命周期之中的一组关键活动区域。也称过程模型 质量焦点:支持软件工程的根基就在于对质量的关注。 过程:软件工程的过程将技术层结合在一起,使计算机软件合理和及时开发出来。 方法:涵盖一系列的任务:需求分析、设计、编程、测试和维护。 工具:对过程、方法提供自动或半自动的支持。例CASE集成软件、硬件或一个软件工程数据库。 2 软件过程的位置和作用 工具 方法 过程 质量焦点 Software engineering layers
软件工程过程的四种基本的过程活动 软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。软件工程过程通常包含四种基本的过程活动: ·P (Plan): 软件规格说明。规定软件的功能及其运行的限制; ·D (Do):软件开发。产生满足规格说明的软件; ·C (Check):软件确认。确认软件能够完成客户提出的要求; ·A (Action):软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。
3 分形表示的核心模型 状态引用:描述问题域的当前状态 问题的定义:表示需要解决的待定问题 技术开发:确定、选择合适的技术解决问题 解决集成:交付结果 Raccoon 问题解决环
4. 瀑布模型 (线形顺序模型) 确定: 系统功能 系统性能 可行性研究与计划 设计: 数据结构 体系结构 接口 算法 开发软件的特点: • 过程具有顺序性和依赖性 • 不适应需求不确定的项目 • 错误最后才发现 • 开始进程呈阻塞情况 定义 阶段 分析: 系统需求 软件需求 需求分析 设计 开 发 阶 段 编码 测试 维护阶段 运行维护 开发软件的原则 承接上一项活动中接收本项活动所需的对象作为输入 • 利用输入进行本项活动。 • 把本项的活动成果传送下一项 • 对本项工作进行评审,若评审正确才能进行下一项工作
5 原型模型 原型产生的步骤 听取用 户意见 建造/修改原型 用户测试 运行原型 不适合原型开发的领域: 嵌入式软件 实时控制软件 数值计算软件 应用领域 需求分析和定义规格 软件设计的一种工具 解决不确定性的工具 一种实验工具 开发同时,作为同步培训工具 原型演化为最终系统 软件维护的辅助工具 原型模型带来的问题: 原型时期的质量问题 用户如何理解进度 先入为主的非最佳方式
6 演化模型 需要足够的人力资源 用户和设计都成为关键 适用于MIS形式的系统 需求 需求 设计 设计 反馈 运 行 、 试 用 运 行 、 试 用 编码 编码 测试 测试 反馈 集成 集成 核心系统开发 第二次迭代 开发过程(1) 根据用户要求开发出核心系统 (2)用户试用后,提出精化系统、增强系统能力的需求,开发人员实施开发的迭代过程
7 增量模型(递增模型、增殖模型) 先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。 系统的总体设计在初始子集设计阶段就应作出设想。
增量模型 增量1 交付的 增量1 分析 设计 编码 测试 交付的 增量2 增量2 分析 设计 编码 测试 交付的 增量3 增量3 分析 设计 编码 测试 交付的 增量4 分析 设计 编码 测试 增量4 日历时间
8.螺旋模型 • 瀑布模型和演化模型相结合,增加风险分析 • 用来指导大型软件项目的开发 • 将开发划分为制定计划、风险分析、实施工程、客户评估四类活动 • 沿螺旋线每转一圈,表示开发出一个更完善的新的软件版本 要点:相似于增量模型,是顺序模型与原型过程的统一,强调版本的升级。 与增量模型的区别: 活动化分不同 更强调:计划、风险分析、用户评估
9. 喷泉模型 • 1990年B.H.Sollers和J.M.Edwards提出 • 主要用于采用面向对象技术的项目 • 喷泉体现迭代和无间隙的特征 • 软件的某些部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分 • 在分析、设计、实现等各项活动之间无明显边界 演化 维护 确认 实现 设计 分析
10 变换模型 要点: 主要过程活动基于形式化的方法说明 采用形式化的软件开发方法 用形式化的方法来验证
11 基于四代技术的模型 收集需求 • 要点: • 是用固定方法工具,在较高级别上描述特征 • 自动生成源代码 • 缩短开发过程 “设计”策略 用4GL实现 测试 • 第4代语言特征: • 非过程语言 • 模型符号语言 • 自动生成技术 存在问题: 程序设计困难 生成结果代码低效 系统可维护性差
12 组合模型 基本需求 1 2 需求分析 原型 螺旋 5 • 要点: • 几种模型配合使用 • 以一种模型为主,嵌入其它模型 • 由开发者选择开发路径(图中编号教材P23) 4GT 4 3 8 6 4GT 7 设计 12 建造原型 第n次迭代 9 螺旋模型 第n次迭代 编码 10 4GT 测试 11 运行系统 13 维护 14
1.5 微软解决框架过程模型(Microsoft Soiution Framework Process) • 要点: • 开发过程分为四个阶段,稳定、创想、计划、开发 • 四个活动:需求、设计、开发、用户测试 • 采用:同步—稳定产品开发法 • 使用缓冲计划,求平衡 • 目标驱动 特点:同螺旋模型
1.6 软件过程能力成熟度模型 CMM (Capability Maturity Model):能力成熟度模型 KPA (Key Process Area):关键过程区域 SQA (Software Quality Assure):软件质量保证 1.5 优化级 过程变更管理 1.4 已管理级 定量的过程管理 1.3 已定义级 综合软件管理 KPA描述软件关键过程的属性: P75 目标 需求(达到目标必需满足的条件) 能力(组织上或技术上保证的承诺) 活动(建立负责和管理软件过程活动的机制)监控方式 严格的分工和密切的协作 验证方式 1.2 可重复级 软件项目计划,项目跟踪和监督 1.1 初始级 CMM成熟度模型级别
UML 1.3 1996 1999 OMT (Rumbaugh) UML0.9 UML1.1 Nov. 1997 OOSE (Jacobson) (OMG) Booch 1.7 UML程序建模语言介绍 软件界第一个统一建模语言 -可视化的建模语言 -多视点、可扩充的建模语言 -信息技术事实上的国际标准 UML 提交ISO • UML的发展进程与标准化 Catalysis ROOM etc.
对UML 的几点提示 UML是一种标准的建模语言,它是面向对象 分析与设计描述的一种标准表示。 * 不是一种可视化的程序设计语言,而是一 种可视化的建模语言; * 不是工具或知识库的规格说明,而是一种 建模语言规格说明,是一种表示的标准; * 不是过程,也不是方法,但允许任何一种 过程和方法使用它。
“软件工程”课程的教学与实践 与其它软件专业课的区别: (1) 立足于系统的整体。 (2) 讲授系统分析、系统需求、系统设计、系统实现、系统测试及维护的理论和方法。 (3) 运用所学软件和技术构筑一理想的系统。 • 对软件的认识: 上升 程序 系统 • 思维定式: 上升 程序员 系统工程师 (系统分析员) 系统分析员的地位: 用户 分析员 程序员