80
软软软软软 《》 软软软软软 《》 Software Engineering 软软软 15938089663 [email protected] 软软软软软软

《软件工程》

Embed Size (px)

DESCRIPTION

《软件工程》. Software Engineering. 葛文庚 15938089663 [email protected]. 信息工程学院. 引言. Microsoft 的比尔盖茨在一次展览会的演讲中谈到:假如 GM (美国通用汽车公司,别克、雪佛兰、凯迪拉克)的技术能像计算机技术那样发展,我们现在应该能用 25 美元买到一辆 1 加仑汽油跑 1000 英里的汽车。 ---《 扬子晚报 》. - PowerPoint PPT Presentation

Citation preview

Page 1: 《软件工程》

《软件工程》 《软件工程》 Software Engineering

葛文庚15938089663 [email protected]

信息工程学院

Page 2: 《软件工程》

黄淮学院

信息工程学院

引言

Microsoft 的比尔盖茨在一次展览会的演讲中谈到:假如 GM (美国通用汽车公司,别克、雪佛兰、凯迪拉克)的技术能像计算机技术那样发展,我们现在应该能用 25 美元买到一辆1 加仑汽油跑 1000 英里的汽车。

--- 《扬子晚报》

Page 3: 《软件工程》

黄淮学院

信息工程学院

针对比尔盖茨的讲话, GM 反唇相讥:如果 GM 发展的技术像 Microsoft 的软件那样,我们现在开的汽车会有以下特点:

1. 你的汽车可能毫无道理的每天抛锚两次2. 每次公路上重新画线时,你都得买辆新车3. 有时候你的车在高速公路上莫名其妙的熄火,你必须 accept ,

然后 restart4. 有时候你的车在左拐弯时突然 shutdown 了,无法 restart ,

你必须重新安装( reinstall )发动机5. 当你买了“轿车 95” 或“轿车 NT” 后,每次车上只能坐一个

人,你要给其他的人再买椅子6. Macintosh 牌汽车更可靠、更便宜、更快、也更容易开,但

是只能在 5% 的道路上行驶7. 油量、水温和其它警告灯将由一个“ GENERAL CAR

FAILURE” 的警告灯所代替8. 新座椅要求大家屁股的尺寸相同9. 气囊系统弹出前询问“ Are you sure ?”,要求你加以确认10. 有时候你的汽车会锁死车门使你无法进入汽车,你得不停的

提门把手、拿钥匙捅、晃天线,直到打开车门

Page 4: 《软件工程》

黄淮学院

信息工程学院

我们且不考虑 GM 的言辞是否过于偏激,但Microsoft 公司作为全球最大的计算机软件生产商,拥有一大批优秀的项目经理、软件工程师、程序员,具有丰富的软件开发和项目管理经验,开发出来的软件仍然不能很好的保证质量,这是不争的事实。

我们几乎每个人在使用 Windows操作系统时,都碰到过死机现象

这是为什么呢?

Page 5: 《软件工程》

黄淮学院

信息工程学院

与硬件相比,软件的本质特征是什么?为什么硬件的可靠性可以达到很高的

程度,而软件却不能做到 bug-free ?什么样的软件可以称作是一个好软件,

或者说好软件具有什么样的特点?目前存在哪些方法和技术能够有效地

提高软件的质量,做出好软件?

Page 6: 《软件工程》

黄淮学院

信息工程学院

软件工程简介

软件工程是计算机专业的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。

1995年, Standish Group 针对系统开发成功的研究表明,所有的开发项目中有 32% 的项目在它们结束之前被中止。此外多于一半的软件项目花费的成本相当于原来预算的 2倍。

Page 7: 《软件工程》

黄淮学院

信息工程学院

软件工程是软件工程专业的一门核心课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。

课程的性质、目的课程的性质、目的

Page 8: 《软件工程》

黄淮学院

信息工程学院

学生任务

通过本课程的学习,使学生能真正了解软件开发的整个过程。学生要结合实际软件项目,从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件进行测试,经历一个软件开发的全过程,掌握软件开发的基本技能和方法。

Page 9: 《软件工程》

黄淮学院

信息工程学院

主要内容

软件工程的基本概念软件工程的基本概念 软件开发过程、活动、方法学软件开发过程、活动、方法学 软件开发各阶段的任务、技术、方法软件开发各阶段的任务、技术、方法 软件开发的两种方法:传统与面向对象方法软件开发的两种方法:传统与面向对象方法 软件的测试与维护软件的测试与维护 软件开发的项目管理软件开发的项目管理 软件质量保证软件质量保证

Page 10: 《软件工程》

黄淮学院

信息工程学院

教材本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并通过分析一个实际案例“开放实验室管理系统”,帮助理解软件需求分析与建模以及设计与实现的方法和过程,特别适合用做应用型人才培养的教材。网络资源: http://it.jit.edu.cn/netclass

Page 11: 《软件工程》

黄淮学院

信息工程学院

参考书

Software Engineering, Ian Sommerville , Pearson Education Asia

《软件工程基础与实用教材》沈文轩等《软件工程导论》张海藩,清华大学出版社《软件工程—原理、方法与应用》史济民,高等教育出版社

《软件工程技术概论》朱三元,科学出版社《实用软件工程》郑人杰,清华出版社《现代软件工程》 ( 上中册 )周之英,科学出版社《软件工程理论与实践》译文,高教出版社《现代软件工程》陈松桥,北方交大出版社

Page 12: 《软件工程》

黄淮学院

信息工程学院

章节安排章次 各章标题名称 讲授学时

第一章 软件工程学概述 3

第二章 可行性研究 1

第三章 需求分析 4

第四章 面向对象分析 6

第五章 总体设计 4

第六章 详细设计 4

第七章 面向对象设计 4

第八章 实现 4

第九章 维护 2

第十章 软件项目管理 2

Page 13: 《软件工程》

黄淮学院

信息工程学院

学习要求

1. 要求学生有刻苦学习,持之以恒的精神。本课程的性质与其说是一门技术性很强的课程,不如说更像一门管理学科的课程,很多规定都是国内外大师的经验总结,不能误认为无用或现在用不上而放弃学习。

2. 要求学生能够学以致用,善于将理论与实际结合,才能巩固课内学到的知识,并能融会贯通。

Page 14: 《软件工程》

黄淮学院

信息工程学院

学习建议

在正文中介绍了不少软件工程的基本原则和基本方法,在学习时,可以根据你的实践,认真思考一下为什么。不但知其然,而且知其所以然,这样会记得牢一些,不会看过就忘。

Page 15: 《软件工程》

黄淮学院

信息工程学院

考核

考试课程总成绩 =平时成绩( 10% ) + 实验成绩( 30% ) + 考试成绩( 60% )

Page 16: 《软件工程》

黄淮学院

信息工程学院

第一讲 软件工程学概述

本章学习目标

1.了解软件的概念

2.了解软件开发的发展历程

3.掌握软件工程的概念、原理和基本内容

4.掌握软件生命周期 5.理解软件过程模型

Page 17: 《软件工程》

黄淮学院

信息工程学院

1 软件

软件由计算机程序、数据及文档组成。程序是能够完成预定功能和性能的一组计算机指令

数据是程序在执行过程需要输入、处理和输出的内容和结构

文档是描述程序的设计和使用的部分

Page 18: 《软件工程》

黄淮学院

信息工程学院

软件的特点

– 抽象性– 软件生产无明显制造过程– 无磨损性– 对计算机硬件依赖性– 软件的手工开发方式– 软件本身复杂性– 软件的高成本(德国的一款专业设计

3D 的软件: 3DMAX (正版)官方售价: 2000000 元 RMB )

Page 19: 《软件工程》

黄淮学院

信息工程学院

软件的分类

软件与硬件、数据库、人、过程等共同构成计算机系统。

软件种类可以从功能、规模、工作方式、服务对象、实验频度、失效影响六个方面进行划分 :

– 按功能分类• 应用软件:管理软件、实时软件、科学

计算、数据处理、嵌入式软件等• 系统软件:操作系统、网络系统、编译器、工具软件等

Page 20: 《软件工程》

黄淮学院

信息工程学院

中国的软件产业

主权大国必须建立基于自主技术的、完整的软件产业体系。

软件本国提供率:中国 1/3 左右,美国 97% 。中国盗版软件比例大

软件人才结构不合理,缺乏中高级软 件人才,软件人员缺乏软件工程化的概念。

Page 21: 《软件工程》

黄淮学院

信息工程学院

软件发展阶段

时间 软件

20世纪 60年代中期前 软件 = 程序

60年代中期至 70年代中期前

软件 = 程序 + 使用说明出现软件危机

70年代中期后 软件 = 程序 + 数据 + 文档软件工程时代

Page 22: 《软件工程》

黄淮学院

信息工程学院

2 软件危机

软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机的主要特征 软件价格在整个项目投入中的比例不断升高 ; 软件开发成本严重超标 ; 软件开发周期大大超过规定日期 ; 软件质量难于保证; 软件修改、维护困难; 失败的根本原因在于:开发人员写出的东西达不到用户要求 ( 人的问题、技术问题 )

Page 23: 《软件工程》

黄淮学院

信息工程学院

产生软件危机的原因

计算机应用发展

软件数量多规模大,功能复杂

个体化软件开发方法

无开发过程指导无开发过程管理

软件成本高、质量低、维护困难

软件危机

客观因素

主观因素

主客观不相适应

Page 24: 《软件工程》

黄淮学院

信息工程学院

软 件 工 程

改正一个问题需付出的代价

需求分析

结构设计

详细设计

编码

集成测试

系统测试

现场

改正一个问题的估计费用

改正一个问题估计的工作量

20

200

20001000

5.0

2.5

0.05

0.5

( 美元 )

(人天 )

Page 25: 《软件工程》

黄淮学院

信息工程学院

解决办法

管理措施项目管理配置管理过程管理质量控制

技术措施开发过程 开发技术与方法开发工具

软件工程学( 软件产品开发工程 )

用工程化的理论、方法和技术来管理软件开发过程,从管理和技术两方面措施对软件开发进行规范化和理论研究即产生了软件工程学科

Page 26: 《软件工程》

黄淮学院

信息工程学院

3 软件工程

1968 年德国人 Bauer 在北大西洋公约组织会议上的定义: " 建立并使用完善的工程化原则 , 以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法 " 。

1983 年 IEEE 的软件工程定义: " 软件工程是开发,运行 , 维护和修复软件的系统方法 " 。

1993 年 IEEE 的一个更加综合的定义: " 将系统化的,规范的,可度量的方法应用于软件的开发 , 运行和维护的过程,即将工程化应用于软件中 " 。

Page 27: 《软件工程》

黄淮学院

信息工程学院

软件工程的基本原理1983 年,著名软件工程专家 B.W.Boehm 提

出了七条获得公认的软件工程的基本原理:( 1 )分阶段的生命周期计划严格管理性。( 2 )坚持进行阶段评审。( 3 )实行严格的产品控制。( 4 )采用现代程序设计技术。( 5 )结果应能清楚地审查。 ( 6 )开发小组的人员应少而精。( 7 )承认不断改进软件工程实践的必要性。

Page 28: 《软件工程》

黄淮学院

信息工程学院

软件工程框架给出了软件工程三个主要方面。 软件工程目标—包括可用性、正确性和合算性,规

定了软件工程实践的结果(即软件)应具有的基本性质;

软件工程过程—包含的基本活动有需求、分析与设计、实现、确认与测试、维护与支持;

软件工程的四条原则 -- 采用适宜的开发模型,使用恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,从四个方面指导每一项工程的活动,以实现软件工程目标。

软件工程框架

Page 29: 《软件工程》

黄淮学院

信息工程学院

软件工程的目标:追求高质量高效率 实现目标的过程:完成产品加工的过程。 进行过程应遵守的原则:行进中的轨道约束。

可用

性 性 性确

正 合算

选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理

基本过程

支持过程

组织过程

目标

过程

原则

Page 30: 《软件工程》

黄淮学院

信息工程学院

软件工程的三要素

R. PressmanR. Pressman 在他的在他的《《软件工程软件工程》》教程中指教程中指出:出:软件工程的三个要素是方法、工具、过程。– 方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;

– 工具是为方法的运用提供自动的或半自动的软件支撑环境;

– 过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

Page 31: 《软件工程》

黄淮学院

信息工程学院

软件工程的目标与原则软件工程的目标与原则

软件工程的主要目标:提高软件的质量和软件生产率。

软件工程需要达到的基本目标:– 付出较低的开发成本– 达到要求的软件功能– 取得较好的软件性能– 开发的软件易于移植– 需要较低的维护费用– 能按时完成开发,及时交付使用

Page 32: 《软件工程》

黄淮学院

信息工程学院

在软件开发过程中必须遵循的软件工程原则:1) 抽象与自顶向下、逐层细化 采用分层抽象的方法,有效控制软件开发的复杂性。

2) 模块化 把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。

3) 信息隐蔽和数据封装 将模块中的软件设计决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。。

Page 33: 《软件工程》

黄淮学院

信息工程学院

4) 局部化 在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的事物。

5) 一致性 整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。

6) 完备性 软件系统中不丢失任何成分。7) 可验证性 系统分解应当遵循易检查、易测试和

易评审的原则,以便保证系统的正确性。

Page 34: 《软件工程》

黄淮学院

信息工程学院

软件工程学

“软件工程学”是一门交叉学科涉及计算机科学、管理科学、工程学和数学。

软件工程则是培养软件工程师。

软件工程学

软件开发技术软件开发方法学软件工具软件工程环境

软件工程管理 软件管理学软件经济学

Page 35: 《软件工程》

黄淮学院

信息工程学院

7

1.3 软件工程方法学

软件工程方法学是软件开发的系统化方法,是一套完整的软件开发技术,包括原则、方法、过程和工具,是每一阶段活动、产品、验收的步骤和完成准则。

软件工程方法学应用最广泛的是结构化方法和面向对象方法。

Page 36: 《软件工程》

黄淮学院

信息工程学院

7

结 构 化 方 法 ( SM , Structured Metho

d )是传统的软件开发方法,基本思想是:用系统工程的思想和工程化的方法,按照用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计,把一个复杂问题的求解过程分阶段进行,使得每个阶段处理的问题都控制在容易理解的范围内。

结构化方法

Page 37: 《软件工程》

黄淮学院

信息工程学院

7

1. 结构化方法模型

Page 38: 《软件工程》

黄淮学院

信息工程学院

7

2. 结构化方法过程( 1 )结构化分析( SA , Structured Analysis )。( 2 )结构化设计( SD , Structured Design )。( 3 )结构化实现( SP , Structured Programming )。

3. 结构化方法特点( 1 )严格的分阶段计划。( 2 )瀑布式开发模式。( 3 )严格的技术审查和管理复审。( 4 )各阶段采用结构化技术。

Page 39: 《软件工程》

黄淮学院

信息工程学院

7

面 向 对 象 方 法 ( Object-Oriented Metho

d )是一种把面向对象思想应用于软件开发过程 , 来 指 导 开 发 活 动 的 系 统 方 法 , 简 称OO ( Object-Oriented )方法,是建立在“对象”概念基础上的方法学。

所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,认识、理解、刻画客观世界,设计、构建相应的软件系统。

面向对象方法

Page 40: 《软件工程》

黄淮学院

信息工程学院

7

2 面向对象方法

面向对象方法模型

Page 41: 《软件工程》

黄淮学院

信息工程学院

7

2. 面向对象方法过程( 1 )面向对象分析( OOA , Object-Oriented Analysis )。( 2 )面向对象设计( OOD , Object-Oriented Design )。( 3 )面向对象的编程( OOP , Object-Oriented Programing )。( 4 )面向对象测试( OOT , Object-Oriented Test )。

3. 面向对象方法特点( 1 )以对象作为基本的软件构件。( 2 )软件定义和实现的统一。( 3 )重视软件复用。( 4 )通过逐步演化来完成软件开发。

Page 42: 《软件工程》

黄淮学院

信息工程学院

7

敏捷方法是一种针对用户需求迅速变化的现实情况,采用短周期交付形式和协作开发的轻量级软件开发方式。相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、适应需求变化的代码编写,也更注重软件开发中人的作用。

敏捷方法

Page 43: 《软件工程》

黄淮学院

信息工程学院

7

1. 敏捷方法特点( 1 )追求软件交付使用这一终极目标。( 2 )强调全面合作和交流。( 3 )重视软件开发中人的个性。( 4 )强调团队的力量。( 5 )灵活采用各种开发和管理方式。

Page 44: 《软件工程》

黄淮学院

信息工程学院

7

2. 敏捷方法原则( 1 )最优先的目标是通过尽早交付有价值的软件来满足用户需求。( 2 )即使在开发后期,也能适应需求变化,能够驾驭变化,帮助用户取得竞争优势。( 3 )频繁交付可使用的软件,时间间隔从几周到几个月,间隔越短越好。( 4 )整个开发过程中,业务人员和开发者应该在一起工作。( 5 )以积极主动的员工为主体进行软件开发,并且提供适宜环境、满足员工需要、信任员工工作。( 6 )开发团队内外最有效率和效果的信息传达方式是面对面交流。

Page 45: 《软件工程》

黄淮学院

信息工程学院

7

2. 敏捷方法原则( 7 )可用的软件是进度的主要度量标准。( 8 )提倡可持续开发,管理者、开发人员和用户应始终保持稳定的节奏。( 9 )简单,尽可能减少工作量至关重要。( 10 )强调先进技术和良好设计,以不断提高敏捷性。( 11 )最好的架构、需求和设计来源于自我组织的团队。( 12 )团队定期总结提高效率的方法,并相应调整团队行为。

Page 46: 《软件工程》

黄淮学院

信息工程学院

ISO 9000 定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。

从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。

4 软件工程过程与软件生存周期

Page 47: 《软件工程》

黄淮学院

信息工程学院

软件生存周期各阶段的主要任务

问题的定义及规划需求分析软件设计程序编码软件测试运行维护

Page 48: 《软件工程》

黄淮学院

信息工程学院

(1) 开发策划。主要完成问题定义、可行性论证、制定开发计划和项目申报工作,明确“要解决的问题是什么”。

(2) 需求分析。需求分析和定义阶段任务不是具体地解决问题,而是确定软件须具备的具体功能、性能等,即“必须做什么”及其他指标要求。

(3) 概要设计。主要设计软件的结构,结构的组成模块,模块的层次结构、调用关系及功能。并设计总体数据结构等。

Page 49: 《软件工程》

黄淮学院

信息工程学院

(4) 详细设计。对模块功能、性能、可靠性等进行具体技术描述,并转化为过程描述。

(5) 编写程序。又称编码,将模块的控制结构转换成程序代码。

(6) 测试。为了保证软件需求和质量,在设计测试用例基础上对软件进行检测

(7) 运行维护。对交付并投入使用的软件进行各种维护,并记录保存文档。

Page 50: 《软件工程》

黄淮学院

信息工程学院

步骤 任务及说明 参与者 生成文档或程序

可行性分析 对项目的技术,功能需求和市场进行调研和初步分析,确定是否需要启动项目

部门主管核心技术人员

可行性分析报告技术调研报告

启动项目 正式启动项目,有部门主管制定项目经理,项目经理制定初步计划,初步计划包括设计和开发时间的初步估计

部门主管核心技术人员

项目计划书项目合同

需求分析 对项目详细需求分析,编写需求文档,对 B/S 结构的系统应制作静态演示页面。需求分析文档和静态演示页面需要通过部门主管审批才能进行到下一步骤

项目经理项目小组核心成员

需求分析说明书静态演示页面项目计划修订版本

概要设计 根据需求分析进行概要设计。编写目的是说明对系统的设计考虑,包括程序系统流程、组织结构、模块划分、功能分配、接口设计。运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。概要设计经过评审后,项目经理通过部门主管一起指定项目小组成员。

项目经理项目小组核心成员

概要设计说明书

详细设计 详细设计编制目的是说明一个软件各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,可以不单独编写,有关内容合并入概要设计说明书。

项目经理项目小组成员

详细设计文档项目计划确定版本

编码实现 根据设计开发项目,同时有美工对操作界面进行美化

项目经理、程序设计员、美工

项目计划修订版本

调试 项目经理提交测试申请,由测试部门对项目进行测试,项目小组配合测试部门修改软件中的错误

项目经理程序开发人员测试部门

测试申请测试计划测试报告

项目验收 项目验收归档 部门主管项目经理

项目所有文档和程序

Page 51: 《软件工程》

黄淮学院

信息工程学院

软件工程过程定义了 : 方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。

软件工程过程包含四种基本的过程活动: plan : 软件规格说明 do : 软件开发 check : 软件确认 action : 软件演进

Page 52: 《软件工程》

黄淮学院

信息工程学院

软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。

常用的软件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型,快速应用开发( RAD )模型。

Page 53: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

1.4.1 瀑布模型 瀑布模型( waterfall model )将生存期的计划时期、开发时期和运行时期,又细分为若干个阶段:计划时期可分为问题定义、可行性研究、需求分析 3 个阶段,开发时期分为概要设计、详细设计、软件实现、软件测试等阶段,运行时期则需要不断进行运行维护,需要不断修改错误、排除故障,或以用户需求、运行环境改变进行改更调整。

Page 54: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

图 1瀑布模型

图中的实线箭头表示开发流程,每个阶段顺序进行,有时会返工;虚线箭头表示维护工作的流程,根据不同情况返回到不同的阶段进行维护。

Page 55: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

利用瀑布模型开发软件有 3个特点: ( 1)开发过程的顺序性。瀑布模型开发适用于软件需求明确,开发技术成熟,工程管理较严格的场合下使用。 ( 2)统筹兼顾不过早编程 ( 3)严格要求保证质量。

图 2循环模型

Page 56: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

1.4.2 快速原型模型 快速原型模型需要先建造一个快速原型,如操作窗口及界面等,进行客户或潜在用户与系统间的交流,用户 /客户可以通过对原型的评价及改进意见,进一步细化待开发软件的需求,通过逐步调整原型达到客户要求,从中确定客户的具体需求;然后按照需求开发软件。如图所示。此模型最适合于可以先尽快构建成一个原型的应用系统。

Page 57: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

Page 58: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

1.4.3 增量模型 利用增量模型开发的软件被作为一系列的增量构件来进行设计、实现集成和测试,每个构件具有一定功能,并最终能组合成一个具有完整功能软件的模块。如图所示。

Page 59: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

增量模型灵活性很强,适用于软件需求不明确、设计方案有一定风险的软件项目。

Page 60: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

1.4.4 螺旋模型 螺旋模型将开发过程划分为制定计划、风险分析、实施工程和客户评估四类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新软件版本。如果开发风险过大,开发机构和客户无法接受,项目可能就此终止;多数情况下,将沿着螺旋线继续进行,自内向外逐步延伸,最终得到满意的软件产品。

Page 61: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

螺旋模型沿着螺线进行多次迭代,其迭代过程如图 1-10 所示。 (1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件; (2) 风险分析:分析评估所选方案,考虑如何识别和消除风险; (3) 实施工程:实施软件开发和验证; (4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。

Page 62: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

Page 63: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

1.4.5 喷泉模型 喷泉模型主要适合于利用面向对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。可使开发过程具有迭代性和无间隙性。

Page 64: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型 喷泉模型是以面向对象的开发方法为基础,以用户需求为源泉。从如图 1-5 的喷泉模型中可以看出 7 个特点: ( 1 )规定软件开发过程有 4 个阶段:需求分析、总体设计、详细设计和实现,还可分成多个开发步骤。 ( 2 )各阶段相互重叠,反映了软件过程并行性的特点。

Page 65: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

( 3 )以分析为基础,资源消耗成塔形,在分析阶段消耗的资源最多。 ( 4 )反映了软件过程迭代性的自然特性,从高层返回低 层无资源消耗。 ( 5 )强调增量开发,依据分析一点设计一点的原则,并不要求一个阶段的彻底完成,整个过程是一个迭代的逐步提炼的过程。 ( 6 )是对象驱动过程,对象是活动作用的实体,也是项目管理的基本内容。 ( 7 )实现中由于活动不同,可分为系统实现和对象实现,这既反映了全系统的开发过程,也反映了对象族的开发和重用

Page 66: 《软件工程》

黄淮学院

信息工程学院

1 、喷泉模型的优点   喷泉模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。 2 、喷泉模型的缺点   由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。

喷泉模型的优缺点

Page 67: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

1.4.6 基于面向对象的模型 面向对象技术强调了类的创建与封装,一个类创建与封装成功后,便可在不同的应用系统中被重用。面向对象技术为基于构件的软件过程模型提供了强大的技术框架。基于面向对象的模型,综合了面向对象和原型方法及重用技术。该模型如图所示。

Page 68: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

Page 69: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

*1.4.7 其他模型 1. 智能模型 智能模型也称为基于知识的软件开发模型,是知识工程与软件工程在开发模型上的结合,它以瀑布模型与专家系统的综合应用为基础。如图所示,从中可见与其他模型不同,其维护并不在程序一级上进行,可将问题的复杂性极大降低。

Page 70: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

Page 71: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

智能模型的主要优点为: ( 1 )利用领域专家系统,可使需求说明更完整、准确和无二义性。 ( 2 )借助软件工程专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。 ( 3 )通过软件工程知识和特定应用领域的知识及规则的应用,对开发提供帮助。

Page 72: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

2. 统一过程模型 统一开发过程 RUP(Rational Unified Process)模型在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为开发成员提供了必要的准则、模板和工具指导,并确保共享相同的知识基础。建立了简洁和清晰的过程结构,为开发过程提供较多的通用性。 (1)RUP 的二维开发模型及其核心工作流 (Core Workflows) 。主要包括:商业建模、需求、分析与设计、实现、测试、核心支持工作流、部署、配置和变更管理、项目管理和环境。如图 1-14 所示。

Page 73: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

Page 74: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

(2)开发中各阶段和里程碑,主要包括。初始阶段、细化阶段、构造阶段、交付阶段。

(3)RUP的迭代开发模式。如图所示。

Page 75: 《软件工程》

黄淮学院

信息工程学院

1.4 软件开发模型

1.4.8 软件开发模型的选定 1. 开发模型与开发方法及工具的关系一般应用软件的开发过程,主要包括生存周期的系统规划、需求分析、软件设计、实现四个阶段。软件的开发方法多种多样,结构化方法和面向对象的方法是常用的最基本的开发方法。当采用不同的开发方法时,软件的生存周期过程将表现为不同的过程模型。为解决开发工程中大量复杂的手工劳动,提高软件的开发效率,还要采用计算机辅助软件工程 CASE 开发工具来支持整个开发过程。软件的开发模型(生存周期过程模型)与开发方法、开发工具之间的关系如图所示。

Page 76: 《软件工程》

黄淮学院

信息工程学院

1.3 软件生存周期

Page 77: 《软件工程》

黄淮学院

信息工程学院

1.3 软件生存周期

2.软件开发模型选取 最常用的是瀑布模型和原型模型,其次是增量模型,由于迭代模型比较难以掌握使用较少。各种模型各有其特点和优缺点。在具体选择模型时需要综合考虑以下 6 点: ( 1 )符合软件本身的性质,包括规模、复杂性等; ( 2 )满足软件应用系统整体开发进度要求; ( 3 )尽可能控制并消除软件开发风险; ( 4 )具有计算机辅助工具快速的支持,如快速原型工具; ( 5 )与用户和软件开发人员的知识和技能匹配; ( 6 )有利于软件开发的管理与控制。通常情况下,面向过程方法可使用瀑布模型、增量模型和螺旋模型进行开发;面向对象方法可采用快速原型、增量模型、喷泉模型和统一过程进行开发;面向数据方法一股采用瀑布模型和增量模型进行开发。

Page 78: 《软件工程》

黄淮学院

信息工程学院

1.3 软件生存周期

3.软件开发模型的修定 在实际软件开发过程中,开发模型的选定并非直接照抄照搬、一成不变,有时还需要根据实际开发目标要求进行裁剪、修改、确定和综合运用。

Page 79: 《软件工程》

黄淮学院

信息工程学院

小结

软件是计算机程序及其有关的数据和文档的结合。软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要问题:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件。

软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产。其主要内容是软件开发技术和软件工程管理。

软件开发方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段 的活动、产品、验收的步骤和完成准则。常用的软件开发方法有结构化方法、面向数据结构方法和面向对象方法等。

Page 80: 《软件工程》

黄淮学院

信息工程学院

1. 软件就是程序吗?2. 什么是软件危机?表现是什么?3. 软件工程定义有很多说法,说出你的理解?4. 软件工程三要素是什么?5. 软件工程的目标、过程和原则是什么?6. 软件工程原理有哪几条?7. 软件的什么周期是什么?8. 过程模型有哪些?哪一个适合你的项目开发?