清华大学殷人昆软件工程讲义-01

上传人:kms****20 文档编号:50962553 上传时间:2018-08-11 格式:PPT 页数:38 大小:201KB
返回 下载 相关 举报
清华大学殷人昆软件工程讲义-01_第1页
第1页 / 共38页
清华大学殷人昆软件工程讲义-01_第2页
第2页 / 共38页
清华大学殷人昆软件工程讲义-01_第3页
第3页 / 共38页
清华大学殷人昆软件工程讲义-01_第4页
第4页 / 共38页
清华大学殷人昆软件工程讲义-01_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《清华大学殷人昆软件工程讲义-01》由会员分享,可在线阅读,更多相关《清华大学殷人昆软件工程讲义-01(38页珍藏版)》请在金锄头文库上搜索。

1、软件工程第一章 软件工程概念授课老师:清华大学计算机系 殷人昆 password qhdxjsjx 1提示:设计与建模要点 结构化分析建模:数据流图、实体关系图、状 态迁移图、数据字典 结构化设计建模:数据流图转换为系统结构图 结构化程序设计:程序流程图、N-S图、PAD 程序环路复杂性计算 测试用例设计:逻辑覆盖、循环测试、基本路 径覆盖、因果图 可靠性分析:估算测试前程序中潜在错误 OMT建模:对象模型、动态模型(状态图、事 件追踪图) UML建模:用例图、类图、顺序图、活动图2软件的概念软件的定义软件由计算机程序、数据及文档 组成。软件与硬件、数据库、人、过程等共同构成 计算机系统。软

2、件按功能分类:应用软件、系统软件、支 撑软件。n软件的发展经历了三个阶段:程序设计阶段 、程序系统阶段、软件工程阶段。3 软件工程概念的出现源自软件危机。 软件危机的主要特征v 软件价格在整个项目投入中的比例不断升 高;v 软件开发成本严重超标;v 软件开发周期大大超过规定日期;v 软件质量难于保证;v 软件修改、维护困难;v 失败的根本原因在于:开发人员写出的东 西达不到用户要求 (人的问题、技术问题) 1968 年德国人 Bauer 在北大西洋公约组织会 议上的定义: “建立并使用完善的工程化原 则 , 以较经济的手段获得能在实际机器上有 效运行的可靠软件的一系列方法“。 1983 年 I

3、EEE 的软件工程定义: “软件工程 是开发,运行 , 维护和修复软件的系统方法“ 。 1993 年 IEEE 的一个更加综合的定义: “将 系统化的,规范的,可度量的方法应用于软 件的开发 , 运行和维护的过程,即将工程化 应用于软件中“。软件工程定义5软件工程框架可用性性性确正合算选取适宜的开发模型 采用合适的设计方法提供高质量的工程支持重视软件工程的管理基 本 过 程支 持 过 程组 织 过 程目标过程原 则6n软件工程框架给出了软件工程三个主要方面。n软件工程目标包括可用性、正确性和合算性 ,规定了软件工程实践的结果(即软件)应具 有的基本性质;n软件工程过程包含的基本活动有需求、分析

4、 与设计、实现、确认与测试、维护与支持;n软件工程的四条原则-采用适宜的开发模型, 使用恰当的开发方法,提供高质量的工程支持 ,实施有效的工程管理,从四个方面指导每一 项工程的活动,以实现软件工程目标。7软件工程的知识结构 2001年5月ISO/IEC JTC 1发布了SWEBOK 指南 V0.95(试用版),即 Guide to the Software Engineering Body of Knowledge 。 SWEBOK 把软件工程学科的主体知识分为 10 个知识领域。这 10 个领域包括:软件需 求,软件设计,软件构造,软件测试,软件 维护,软件配置管理,软件工程管理,软件 工程

5、过程,软件工程工具和方法,软件质量 。8软件工程的知识结构 2001年5月ISO/IEC JTC 1发布了 SWEBOK 指南V0.95(试用版),即 Guide to the Software Engineering Body of Knowledge。 SWEBOK把软件工程学科的主体知识分为10个 知识领域。这10个领域包括: 软件需求 软件设计 软件构造 软件测试 软件维护 软件配置管理 软件工程管理 软件工程过程 软件工程工具和方法 软件质量9nISO 9000定义:软件工程过程是把输入转化 为输出的一组彼此相关的资源和活动。n从软件开发的观点看,它就是使用适当的资 源(包括人员、硬

6、软件工具、时间等),为 开发软件进行的一组开发活动,在过程结束 时将输入(用户要求)转化为输出(软件产 品)。软件工程过程与软件生存周期10n软件工程过程定义了: 方法使用的顺序、要求 交付的文档资料、为保证质量和适应变化所 需要的管理、软件开发各个阶段完成的里程 碑。n软件工程过程包含四种基本的过程活动:v plan : 软件规格说明v do : 软件开发v check : 软件确认v action : 软件演进11n软件生存周期包含三个阶段:软件定义、软 件开发及软件运行维护。n软件生存周期模型是软件工程思想的具体化 ,是跨越软件生存周期的系统开发、运行、 维护所实施的全部活动和任务的过程

7、框架。n常用的软件生存周期模型有瀑布模型,演化 模型,螺旋模型,增量模型,喷泉模型,快 速应用开发( RAD )模型。12瀑布模型n各项活动按自上而下,相互衔接的固定次序 ,如同瀑布逐级下落,每项活动均处于一个 质量环(输入-处理-输出-评审)中。n阶段间具有顺序性和依赖性。n推迟实现的观点。n每个阶段必须完成规定的文档;每个阶段结 束前完成文档审查。13需求定义系统与软件设计集成与系统测试实现与单元测试运行与维护14演化模型n演化模型是迭代的,软件必须经过不断演化 才能完善。n演化模型先开发一个“原型”软件,完成部分 主要功能,展示给用户并征求意见,然后逐 步完善,最终获得满意的软件产品。n

8、业务和产品需求在变化中,采用线性开发方 式是不实际的。n快速实现和提交一个有限的版本,可以应付 市场竞争的压力。15需求的采集 与细化客户评价原型快速设计建造原型建造原型加工原型产生样品停止开始16螺旋模型n螺旋模型将瀑布模型与演化模型结合起来, 并且加入两种模型均忽略了的风险分析。n螺旋模型沿着螺线旋转,自内向外每旋转一 圈便开发出更完善的一个新版本。 v 制定计划 v 风险分析 v 实施工程 v 客户评估17决定目标、 方案和限制评价方案 识别风险 弱化风险开发、验证、 下一级产品计划下一阶段集成 测试18增量模型n增量模型是迭代和演进的过程。n增量模型把软件产品分解成一系列的增量构 件,

9、在增量开发迭代中逐步加入。n每个构件由多个相互作用的模块构成,并且 能够完成特定的功能。n早先完成的增量可以为后期的增量提供服务 。n增量开发方法的新演进版本叫做 “极限程序 设计(eXtreme Programming)“ 。19定义基 本需求将需求 对应到 各增量设计系 统架构开发其 中一个 增量检验和 确认该 增量将增量 集成到 系统中确认集 成后的 系统20日历时间分析 增量1增量1 交付设计 编码 测试 分析 增量2增量2 交付设计 编码 测试 分析 增量3增量3 交付设计 编码 测试 分析 增量4增量4 交付设计 编码 测试 系统和信息工程21喷泉模型n体现了迭代和无间隙的特性。n

10、系统某个部分常常重复工作多次,相关对象 在每次迭代中随之加入演进的软件成分。n无间隙是指在各项开发活动,即分析、设计 和编码之间不存在明显的边界。n喷泉模型是对象驱动的过程。22需求阶段分析阶段设计阶段编程阶段集成与测试阶段维护与演进阶段23变换模型n变换模型是一种基于形式化规格说明语言及 程序变换的软件开发模型。n它采用形式化的软件开发方法,对形式化的 软件规格说明进行一系列自动的或半自动的 程序变换,最终映射成为计算机系统能够接 受的程序系统。n多步程序变换过程的重要性质是:每一步程 序变换的正确性仅与该步变换所依据的规范 Mi 以及对变换后的假设 Mi+1 有关。24软件需求 形式化说

11、明 (M0)软件设计 形式化说 明 (M1)(M2)(Mn)模型检查程序变换程序变换程序变换n在此意义上,变换步骤独立于其他变换步骤 。这称为变换的独立性。n该模型只适合于软件的形式化开发方法;需 要严格的数学理论和形式化技术支持;需要 一整套开发环境(如程序变换工具、定理证 明工具等)的支持。 25基于第四代技术的模型n第四代语言 (4GL) 是在大型数据库管理系统 的基础上发展起来的,是一种面向结果的非 过程性语言。它独立于具体的处理机,有丰 富的软件工具支持,能统一利用和管理各种 数据资源并能适应不同水平用户的需要。n以4GL为核心的软件开发技术成为第四代技 术(4GT),采用4GT的软

12、件开发模型如图。n软件开发人员在定义软件需求,给出需求规 格说明之后,4GT工具可将该需求规格说明 自动26转换为程序代码。这大大减少了分析、设计 、编码和测试的时间。n以4GL为核心的软件开发技术成为第四代技 术(4GT),采用4GT的软件开发模型如图。收集需求“设计”策略用“4GL”实现测试27快速应用开发( RAD )模型n快速应用开发模型是一种增量开发模型,该 模型开发软件大量使用了可复用的构件。n每一个增量的开发经历五个阶段: v业务建模 对业务功能的信息流建模。v数据建模 对业务的数据对象和关系建模。 v过程建模 描述完成业务功能的数据变换。 v应用生成 应用构件和自动化工具建造。

13、v测试与反复 对新构件和接口进行测试。28业务建模数据建模过程建模应用生成测试及反复小组1#业务建模数据建模过程建模应用生成测试及反复小组2#业务建模数据建模过程建模应用生成测试及反复小组3#6090天29软件开发范型(Paradigm)n范型又称为风范。通常认为范型就是开发模 型(Model)或开发模式(Pattern),实际上它与 方法(Methodology)一样,都被视为一种开发 技术。范型支配了设计方法、编码语言、测 试和检验技术的选择。n过程性范型把软件视为处理流,定义成由一 系列步骤构成的算法。每一步骤都是带有输 入和输出的一个过程,把这些步骤串联在一 起可产生贯通于整个程序的控

14、制流。30n面向对象范型把标识和模型化问题领域中的 实体做为系统开发的起点,面向对象系统中 的对象是数据抽象与过程抽象的综合。n逻辑性范型是基于规则的,它把有关问题的 知识分解成一组具体规则(如prolog语言)。n面向进程范型把一个问题分解成独立执行的 模块。让不只一个程序同时运行。这些进程 互相配合,解决问题。n面向存取范型是一种在构造用户界面方面很 有用的技术。31n函数型范型是基于规则的,它把有关问题的 知识分解成一组具体规则,用语言的 “if_then”等结构来表示这些规则。 n说明性范型。n每种开发范型都有它的支持者和用户: 每种开发范型都特别适合于某种类型的问 题或子问题; 每种

15、开发范型都用不同的方式考虑问题; 每种开发范型都使用不同的方法来分解问 题32每种开发范型都导致不同种类的块、过程、 产生规则。n系统开发时通常把大型问题分解成一组子问题 。对于每个子问题采用适当的软件开发范型。33n软件工程原则有: u抽象与自顶向下、逐层细化 采用分层抽 象的方法,有效控制软件开发的复杂性。 u模块化 把问题分解为若干较小的较易解 决的模块,有助于信息隐蔽和抽象。 u信息隐蔽和数据封装 将模块中的软件设 计决策封装在模块内部,使得模块实现与使 用分离,有助于控制修改局部化。抽象与自 顶向下、逐层细化软件工程原则34n局部化 在一个物理模块内集中逻辑上相互 关联的计算机资源,促使聚合具有特定目的 的事物。 n一致性 整个软件系统的模块使用一致的设 计策略、编程风格,保持程序内部接口的一 致性、软件与硬件接口的一致性、系统规格 说明与系统行为的一致性。 n完备性 软件系统中不丢失任何成分。 n可验证性 系统分解应当遵循易检查、易测 试和易评审的原则,以保证系统的正确性。35n软件工程的基本原理有:u按软件生存期分阶段制定计划并认真实施 把整个软件开发过程视为一项工程,把工程 划分为若干阶段,分别制定每个阶段的计划 ,逐个实施。u坚持进行阶段评审 前一阶段的结果将成为 下一阶段的依据。坚持阶段的评审才能保证 错误不传播到下一阶段。36u坚持严格的产品控制 将影

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号