软件工程学:第一章软件工程学概述

上传人:努力****83 文档编号:187581299 上传时间:2023-02-15 格式:PPT 页数:75 大小:813.50KB
收藏 版权申诉 举报 下载
软件工程学:第一章软件工程学概述_第1页
第1页 / 共75页
软件工程学:第一章软件工程学概述_第2页
第2页 / 共75页
软件工程学:第一章软件工程学概述_第3页
第3页 / 共75页
资源描述:

《软件工程学:第一章软件工程学概述》由会员分享,可在线阅读,更多相关《软件工程学:第一章软件工程学概述(75页珍藏版)》请在装配图网上搜索。

1、1、传统的软件工程方法、传统的软件工程方法2、面向对象的开发方法(、面向对象的开发方法(UML)关于课程关于课程注意取材,内容反映最新发展。注意取材,内容反映最新发展。A.采用理论教学与案例教学相结合。采用理论教学与案例教学相结合。B.以综合性的设计型实验及课程设计带动课以综合性的设计型实验及课程设计带动课程的学习。在教师指导下,组成开发小组。程的学习。在教师指导下,组成开发小组。成员协同工作,完成一个实际课题的开发。成员协同工作,完成一个实际课题的开发。1、软件工程导论(第五版)、软件工程导论(第五版)张海藩张海藩 清华大学出版社,清华大学出版社,2008.22、Software Engin

2、eering 6th Edition,Ian Summerville3、Software Engineering:Theory and Practice(third edition),美,美,Shari Lawrence Pfleeger,加加Joanne M.Atlee4、软件工程、软件工程-实践者的研究方法实践者的研究方法 Roger S.Pressman 著,梅宏译,机械工业出版社,著,梅宏译,机械工业出版社,20035、面向对象与传统软件工程、面向对象与传统软件工程-统一过程的理论与实践统一过程的理论与实践(美)(美)Stephen R.Schach 著,韩松,邓迎春译,机械工业出著,

3、韩松,邓迎春译,机械工业出 版社,20066、http:/ “软件工程软件工程”课程课程 “软件工程软件工程”课程教学与实践的目标课程教学与实践的目标 转变对软件开发的认识:转变对软件开发的认识:上升上升 程序程序 系统系统 转变思维定式:转变思维定式:上升上升 程序员程序员 系统工程师系统工程师 (系统分析员系统分析员)工程化训练工程化训练考核方式考核方式 出勤率(出勤率(10%)+实验成绩实验成绩(30)+期末考试成绩期末考试成绩(60%)第一章 软件工程概述 1、软件与软件危机 2、软件工程 3、软件过程1、软件与软件危机 软件及其特性 软件危机及其原因软件软件是由计算机程序的发展而形成

4、的一种概念。软件是由计算机程序的发展而形成的一种概念。程序是按既定算法,用某种计算机语言所规定的指令或程序是按既定算法,用某种计算机语言所规定的指令或语句编写的一系列指令或语句的集合。语句编写的一系列指令或语句的集合。软件是程序再加上程序实现和维护程序时所必须的文档软件是程序再加上程序实现和维护程序时所必须的文档的总称。的总称。软件被普遍接受的软件的定义是:被普遍接受的软件的定义是:软件软件(software)(software)是计算机系统中与硬件是计算机系统中与硬件(hardware)(hardware)相互相互依存的另一部分,它包括程序依存的另一部分,它包括程序(program)(pro

5、gram)、相关数据、相关数据(data)(data)及其说明文档及其说明文档(document)(document)。其中其中程序是按照事先设计的功能和性能要求执行的指令程序是按照事先设计的功能和性能要求执行的指令序列;数据是使程序能正常处理信息的数据结构;文档序列;数据是使程序能正常处理信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料。是与程序开发维护和使用有关的各种图文资料。软件根据国际标准化组织的定义,根据国际标准化组织的定义,软件是软件是“与计算与计算机系统操作有关的程序、方法、规则、相关的文机系统操作有关的程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的

6、数据档资料以及在计算机上运行程序时所必需的数据。软件的特性软件是一种生产出来的产品,即软件产品。软件是一种生产出来的产品,即软件产品。软件产品在市场上流通,卖给一个或多个软件产品在市场上流通,卖给一个或多个客户就成为软件商品。软件产品是一种不客户就成为软件商品。软件产品是一种不同于物质性产品的逻辑性产品。它除具有同于物质性产品的逻辑性产品。它除具有一般产品的诸多属性外,还具有自己特有一般产品的诸多属性外,还具有自己特有的属性。的属性。软件的特性n 软件是一种逻辑实体,具有抽象性。这个特点软件是一种逻辑实体,具有抽象性。这个特点使它与其它工程对象有着明显的差异。人们可使它与其它工程对象有着明显的

7、差异。人们可以把它记录在纸上、内存、和磁盘、光盘上,以把它记录在纸上、内存、和磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、但却无法看到软件本身的形态,必须通过观察、分析、思考、判断,才能了解它的功能、性能分析、思考、判断,才能了解它的功能、性能等特性。等特性。n 软件没有明显的制造过程。一旦研制开发成功,软件没有明显的制造过程。一旦研制开发成功,就可以大量拷贝同一内容的副本。所以对软件就可以大量拷贝同一内容的副本。所以对软件的质量控制,必须着重在软件开发方面下工夫。的质量控制,必须着重在软件开发方面下工夫。软件的特性n软件在使用过程中,没有磨损、老化的问题。软软件在使用过程中,没有

8、磨损、老化的问题。软件在生存周期后期不会因为磨损而老化,但会为了件在生存周期后期不会因为磨损而老化,但会为了适应硬件、环境以及需求的变化而进行修改,而这适应硬件、环境以及需求的变化而进行修改,而这些修改有不可避免的引入错误,导致软件失效率升些修改有不可避免的引入错误,导致软件失效率升高,从而使得软件退化。当修改的成本变得难以接高,从而使得软件退化。当修改的成本变得难以接受时,软件就被抛弃。受时,软件就被抛弃。n软件对硬件和环境有着不同程度的依赖性。这导软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题。致了软件移植的问题。n软件的开发至今尚未完全摆脱手工作坊式的开发软件的开发至今尚未

9、完全摆脱手工作坊式的开发方式,生产效率低。方式,生产效率低。软件的特性n软件是复杂的,而且以后会更加复杂。软件是人类有史以软件是复杂的,而且以后会更加复杂。软件是人类有史以来生产的复杂度最高的工业产品。软件涉及人类社会的各来生产的复杂度最高的工业产品。软件涉及人类社会的各行各业、方方面面,软件开发常常涉及其它领域的专门知行各业、方方面面,软件开发常常涉及其它领域的专门知识,这对软件工程师提出了很高的要求。识,这对软件工程师提出了很高的要求。n软件的成本相当昂贵。软件开发需要投入大量、高强度的软件的成本相当昂贵。软件开发需要投入大量、高强度的脑力劳动,成本非常高,风险也大。现在软件的开销已大脑力

10、劳动,成本非常高,风险也大。现在软件的开销已大大超过了硬件的开销。大超过了硬件的开销。n软件工作牵涉到很多社会因素。许多软件的开发和运行涉软件工作牵涉到很多社会因素。许多软件的开发和运行涉及机构、体制和管理方式等问题,还会涉及到人们的观念及机构、体制和管理方式等问题,还会涉及到人们的观念和心理。这些人的因素,常常成为软件开发的困难所在,和心理。这些人的因素,常常成为软件开发的困难所在,直接影响到项目的成败。直接影响到项目的成败。软件危机软件危机指的是在计算机软件的开发和维护过软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。程中所遇到的一系列严重问题。概括来说,软件危机包含两

11、方面问题:一、如概括来说,软件危机包含两方面问题:一、如何开发软件,以满足不断增长,日趋复杂的需何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。求;二、如何维护数量不断膨胀的软件产品。软件危机的表现(1 1)对软件开发成本和进度的估计常常不准)对软件开发成本和进度的估计常常不准确确,软件生产进度无法控制。开发成本超出预软件生产进度无法控制。开发成本超出预算,实际进度比预定计划一再拖延的现象并算,实际进度比预定计划一再拖延的现象并不罕见。不罕见。软件危机的表现(2 2)软件需求定义不准确,易偏离用)软件需求定义不准确,易偏离用户需求。用户对户需求。用户对“已完成已

12、完成”系统不满意系统不满意的现象经常发生。的现象经常发生。软件危机的表现(3 3)软件产品的质量往往靠不住。)软件产品的质量往往靠不住。BugBug一大堆,一大堆,PatchPatch一个接一个一个接一个。软件危机的表现(4 4)软件的可维护程度非常之低。很)软件的可维护程度非常之低。很多程序的错误是很难改正的,不能根据多程序的错误是很难改正的,不能根据用户的需求变化在原有程序中增加新的用户的需求变化在原有程序中增加新的功能。功能。软件危机的表现(5 5)软件通常没有适当的文档资料。)软件通常没有适当的文档资料。管理人员可以使用这些文档作为管理和管理人员可以使用这些文档作为管理和评价软件开发工

13、程的进展情况;软件开评价软件开发工程的进展情况;软件开发人员可以利用他们作为信息交换工具;发人员可以利用他们作为信息交换工具;对于软件维护人员文档更是必不可少。对于软件维护人员文档更是必不可少。软件危机的表现(6 6)软件的成本不断提高。随着技术)软件的成本不断提高。随着技术的进步硬件成本不断降低,而软件成本的进步硬件成本不断降低,而软件成本随着人力资源成本的增高、软件规模的随着人力资源成本的增高、软件规模的增大而不断上涨。在美国增大而不断上涨。在美国19851985年的软件年的软件成本已经占到计算机系统总成本的成本已经占到计算机系统总成本的9090。软件危机的表现(7 7)软件开发生产率的提

14、高赶不上硬)软件开发生产率的提高赶不上硬件的发展和人们需求的增长。件的发展和人们需求的增长。软件危机的原因(1)软件本身的特点引起)软件本身的特点引起(2)软件开发与维护的方法不正确)软件开发与维护的方法不正确 引起引起软件危机的消除(1)正确认识计算机软件)正确认识计算机软件(2)软件开发是组织良好、管理严密、人员相)软件开发是组织良好、管理严密、人员相互配合、共同完成的工程项目。互配合、共同完成的工程项目。(3)推广在实践中总结出来的开发软件的成功)推广在实践中总结出来的开发软件的成功技术和方法,探索更加有效的技术和方法。技术和方法,探索更加有效的技术和方法。(4)开发和使用更好的软件工具

15、)开发和使用更好的软件工具软件的质量 正确性:满足需求。正确性:满足需求。可靠性:在规定的条件和规定的时间内,计算机可靠性:在规定的条件和规定的时间内,计算机程序完成规定功能的概率。有不同的可靠模型。程序完成规定功能的概率。有不同的可靠模型。健壮性:程序在需求规范没有预见的情况下(如健壮性:程序在需求规范没有预见的情况下(如遇到不正确的输入数据或者硬件故障)也能合理遇到不正确的输入数据或者硬件故障)也能合理的运行。的运行。可用性可用性:程序在给定的时间点,完成规定功能的程序在给定的时间点,完成规定功能的概率。概率。可验证性:可以容易的验证软件系统的性质,如可验证性:可以容易的验证软件系统的性质

16、,如可以验证性能等。可以验证性能等。软件质量 可维护性:维护人员理解、改正、改动可维护性:维护人员理解、改正、改动或改进软件得难易程度。或改进软件得难易程度。可重用性:可以在不同的粒度级别上实可重用性:可以在不同的粒度级别上实现重用,包括从整个应用程序到单独的现重用,包括从整个应用程序到单独的子程序,但软件组件级别上的重用比整子程序,但软件组件级别上的重用比整个产品的实现重用更加合适。个产品的实现重用更加合适。2、软件工程 软件工程的定义和本质特征软件工程的定义和本质特征 软件工程的基本原理软件工程的基本原理 软件生命周期软件生命周期 软件工程方法学软件工程方法学软件工程 概括的说,软件工程是

17、指导计算机软件概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量方法结合起来,以经济的开发出高质量的软件并有效的维护它,这就是软件工的软件并有效的维护它,这就是软件工程。程。软件工程软件工程有两个典型的定义。软件工程有两个典型的定义。1968,NATO:软件工程就是为了经济的软件工程就是为了经济的获得可靠的且

18、能在实际机器上有效地运获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原行的软件,而建立和使用完善的工程原理。理。1993,IEEE:软件工程是:软件工程是:(1)(1)把系统的、把系统的、规范的、可度量的途径应用于软件开发、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于运行和维护过程,也就是把工程应用于软件;软件;(2)(2)研究研究(1)中提出的方法。中提出的方法。软件工程的本质特点 软件工程关注于大型程序的构造软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性 软件经常变化软件经常变化 开发软件的效率非常重

19、要开发软件的效率非常重要 和谐合作是开发软件的关键和谐合作是开发软件的关键 软件必须有效支持用户软件必须有效支持用户 在软件工程领域中是具有一种文化背景的人替在软件工程领域中是具有一种文化背景的人替另外一种文化背景的人创造产品另外一种文化背景的人创造产品Boehm软件工程的基本原理软件工程的基本原理 用分阶段的用分阶段的生命周期生命周期计划严格管理计划严格管理 坚持进行阶段评审坚持进行阶段评审 实行严格的产品控制实行严格的产品控制 采纳现代程序设计技术采纳现代程序设计技术 结果应能清楚地审查结果应能清楚地审查 开发小组的人员应少而精开发小组的人员应少而精 承认不断改进软件工程实践的必要性承认不

20、断改进软件工程实践的必要性 软件生命周期 问题定义问题定义 可行性研究可行性研究 需求分析需求分析 总体设计总体设计 详细设计详细设计 编码和单元测试编码和单元测试 综合测试综合测试 软件维护软件维护软件工程方法学软件工程方法学工具工具方法方法过程过程质量焦点质量焦点Software engineering layers软件工程三个要素:软件工程三个要素:方法、工具、过程方法、工具、过程软件工程方法学 三个要素:方法、工具和过程。三个要素:方法、工具和过程。方法:完成软件开发的各项任务的技术方法。方法:完成软件开发的各项任务的技术方法。工具:为运用方法而提供的自动或者半自动的工具:为运用方法而

21、提供的自动或者半自动的软件工程支撑环境。软件工程支撑环境。过程:是为了获得高质量的软件所需要完成的过程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的一系列任务的框架,它规定了完成各项任务的工作步骤。工作步骤。软件工程方法学 传统方法学(生命周期方法学或者结构传统方法学(生命周期方法学或者结构化范型)化范型)采用结构化技术完成软件开发的各项任务,采用结构化技术完成软件开发的各项任务,并使用适当的软件工具或软件工程环境并使用适当的软件工具或软件工程环境来支持结构化技术的运用。来支持结构化技术的运用。传统软件工程方法特点 自顶向下,逐步求精,把系统进行从大到小的自顶向下

22、,逐步求精,把系统进行从大到小的功能分解功能分解 把软件生命周期划分为若干个阶段,每阶段任把软件生命周期划分为若干个阶段,每阶段任务相对独立,比较简单,便于协作开发务相对独立,比较简单,便于协作开发 生命周期的每个阶段都采用科学的管理技术和生命周期的每个阶段都采用科学的管理技术和良好的开发技术,阶段结束后进行技术和管理良好的开发技术,阶段结束后进行技术和管理评审,评审的主要标准是文档,提高可维护性评审,评审的主要标准是文档,提高可维护性和软件开发质量。和软件开发质量。解决问题的切入点是问题中各种事物之间相互解决问题的切入点是问题中各种事物之间相互作用的过程,将相互作用抽象为逻辑模型。是作用的过

23、程,将相互作用抽象为逻辑模型。是面向过程的开发方法,把变量和函数按照功能面向过程的开发方法,把变量和函数按照功能模块进行分类和打包。模块进行分类和打包。软件工程方法学 面向对象方法学面向对象方法学具有四个特点:具有四个特点:(1)把对象看成是融合了数据及在数据上)把对象看成是融合了数据及在数据上的操作的统一的软件构件。的操作的统一的软件构件。(2)把所有对象都划分成类。)把所有对象都划分成类。(3)按照父类和子类的关系,形成类等级。)按照父类和子类的关系,形成类等级。(4)对象间通过消息通信。)对象间通过消息通信。两种方法学的区别一、切入点不同一、切入点不同结构化开发方法:注重的是系统功能,自

24、顶向结构化开发方法:注重的是系统功能,自顶向下,从大到小的功能分解。往往系统需求变化下,从大到小的功能分解。往往系统需求变化最大就是功能,一段较长的时间内,商业的流最大就是功能,一段较长的时间内,商业的流程可能已经发生了很大的变化,这样基于功能程可能已经发生了很大的变化,这样基于功能和过程的方法显然难以维护的,代码重用率可和过程的方法显然难以维护的,代码重用率可想而知。其观察事物的方法不是本体客体本身,想而知。其观察事物的方法不是本体客体本身,而是对本体客体相互作用过程抽象而是对本体客体相互作用过程抽象,转化成逻,转化成逻辑模型。辑模型。两种方法学的区别OOOO方法:其切入点是客观世界的主体和

25、客体,方法:其切入点是客观世界的主体和客体,通过封装实现了信息交流的安全。抽象和继承通过封装实现了信息交流的安全。抽象和继承使得事物得以完整表述(静态和动态的)和容使得事物得以完整表述(静态和动态的)和容易修改新的变化。聚合,关联反映事物间的相易修改新的变化。聚合,关联反映事物间的相互作用和关系,通过关联类管理,这样把事物互作用和关系,通过关联类管理,这样把事物和事物间的关系分开减少了复杂度,便于维和事物间的关系分开减少了复杂度,便于维护,大大提高了代码重用率护,大大提高了代码重用率 二、开发过程不同二、开发过程不同传统:开发过程强调自顶向下顺序完成软传统:开发过程强调自顶向下顺序完成软件开发

26、的各阶段任务。件开发的各阶段任务。OO:OO:开发过程是一个主动地多次迭代的开发过程是一个主动地多次迭代的演化过程,面向对象方法在概念和表示演化过程,面向对象方法在概念和表示方法上的一致性,保证了各项开发活动方法上的一致性,保证了各项开发活动之间的平滑过渡。之间的平滑过渡。两种方法学的区别三、软件重用不同三、软件重用不同传统:虽然过程和函数也能重用,但重用传统:虽然过程和函数也能重用,但重用级别不高,也不太理想。级别不高,也不太理想。OO:OO:对象、类、继承等很大程度提高软对象、类、继承等很大程度提高软件产品的可重用性。件产品的可重用性。两种方法学的区别4、软件过程、软件过程 软件过程软件过

27、程 软件过程模型软件过程模型软件过程软件过程 软件过程软件过程定义一:软件过程是为了获得高质量软件所需要完定义一:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了各项任务的工成的一系列任务的框架,它规定了各项任务的工作步骤。作步骤。定义二:一系列用于软件产品开发和维护的活动、定义二:一系列用于软件产品开发和维护的活动、方法、惯例的集合。如:项目计划、设计文档、方法、惯例的集合。如:项目计划、设计文档、代码、测试案例和用户手册等。代码、测试案例和用户手册等。软件过程软件过程定义了软件开发中运用的方法的顺序、定义了软件开发中运用的方法的顺序、应该交付的文档、为保证软件质量和协调软

28、件变应该交付的文档、为保证软件质量和协调软件变化所需要采取的管理措施,以及标志软件开发各化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。个阶段任务完成的里程碑。软件过程模型 瀑布模型瀑布模型 快速原型模型快速原型模型 增量模型增量模型 螺旋模型螺旋模型 喷泉模型喷泉模型 RUP统一过程统一过程 敏捷过程敏捷过程 微软过程微软过程瀑布模型瀑布模型 瀑布模型瀑布模型规定了生存期各项软件活动,包规定了生存期各项软件活动,包括需求分析、设计、编码、测试、维护。括需求分析、设计、编码、测试、维护。并且规定它们自上而下、相互衔接的固定并且规定它们自上而下、相互衔接的固定次序。次序。瀑布模

29、型的特点瀑布模型的特点1.1.阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性这个特点有两重含义:这个特点有两重含义:必须等前一阶段的工作必须等前一阶段的工作完成之后,才能开始后一阶段的工作;完成之后,才能开始后一阶段的工作;前一阶前一阶段的输出文档就是后一阶段的输入文档。段的输出文档就是后一阶段的输入文档。2.2.推迟实现的观点推迟实现的观点瀑布模型在编码之前设置了系统分析和系统设计的瀑布模型在编码之前设置了系统分析和系统设计的各个阶段,分析与设计阶段的基本任务规定,在这各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软两个阶段主要考虑目标系统的逻辑模型

30、,不涉及软件的物理模型,清楚地区分逻辑设计和物理设计,件的物理模型,清楚地区分逻辑设计和物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。软件的一条重要的指导思想。3.3.质量保证的观点质量保证的观点在瀑布模型的每个阶段都应坚持两个重要做法:在瀑布模型的每个阶段都应坚持两个重要做法:(1 1)每个阶段都必须完成规定的文档,没有交出每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。合格的文档就是没有完成该阶段的任务。(2 2)每个阶段结束前都要对所完成的文档进行评每个阶段结束前都要对所完成的文档进行

31、评审,以便尽早发现问题,改正错误。审,以便尽早发现问题,改正错误。瀑布模型理想的瀑布模型理想的瀑布模型传统瀑布模型的缺点a.a.依赖于早期进行的唯一一次需求调查,不能适依赖于早期进行的唯一一次需求调查,不能适应需求的变化;应需求的变化;b.b.由于是单一流程,开发中的经验教训不能反馈由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;应用于本产品的过程;c.c.风险往往迟至后期的开发阶段才显露,因而失风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。去及早纠正的机会。实际的瀑布模型实际的瀑布模型实际瀑布模型实际瀑布模型优缺点优点:可强迫开发人员采用规范的方法;严格优点:可强迫开

32、发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶规定了每个阶段必须提交的文档;要求每个阶段交出的产品都必须经过质量保证小组的仔细段交出的产品都必须经过质量保证小组的仔细验证。验证。缺点:瀑布模型完全依赖于书面文档,是一种缺点:瀑布模型完全依赖于书面文档,是一种文档驱动的模型,很可能导致最终开发出的软文档驱动的模型,很可能导致最终开发出的软件产品不能真正满足用户的需要。件产品不能真正满足用户的需要。为此,提出了快速模型原型,它的优点是有助为此,提出了快速模型原型,它的优点是有助于保证用户的真实需要得到满足。于保证用户的真实需要得到满足。快速原型模型 所谓所谓快速原型模型快速原型

33、模型就是快速建立起来的可以在就是快速建立起来的可以在计算机上运行的程序,它所完成的功能往往是计算机上运行的程序,它所完成的功能往往是最终产品所能完成的功能的一个子集,快速原最终产品所能完成的功能的一个子集,快速原型的第一步是快速建立一个原型,交给用户使型的第一步是快速建立一个原型,交给用户使用,根据修改意见进行修改,直到用户认为这用,根据修改意见进行修改,直到用户认为这个原型能做他们需要的工作,开发人员就可以个原型能做他们需要的工作,开发人员就可以书写规格说明文档,根据这份文档开发出的软书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。件可以满足用户的真实需求。快速原型模型不带

34、反馈环,软件产品的开发基快速原型模型不带反馈环,软件产品的开发基本上是线性顺序开发的。本上是线性顺序开发的。快速原型模型快速原型模型增量模型 也称为渐增模型,使用该模型开发软件时,把软也称为渐增模型,使用该模型开发软件时,把软件产品看为一系列的增量构件来设计、编码、集件产品看为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,必并且能够完成特定的功能。使用增量模型时,必须在开始实现各个构件之前就全部完成需求分析、须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计的工作。规格

35、说明和概要设计的工作。第一个增量构件往往实现软件的基本需求,提供第一个增量构件往往实现软件的基本需求,提供最核心的功能。增量模型分批的逐步向用户提交最核心的功能。增量模型分批的逐步向用户提交产品。产品。风险更大的增量模型风险更大的增量模型,先做全部的需求分析,逐,先做全部的需求分析,逐个做规格说明,但是冒着无法把构件集成到一起个做规格说明,但是冒着无法把构件集成到一起的风险。的风险。增量模型增量模型增量模型优缺点 优点:能在较短时间内向用户提交可完成部分优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有工作的产品;逐步增加产品功能可以使用户有较充裕的时间学习新产品

36、,从而减少一个全新较充裕的时间学习新产品,从而减少一个全新的软件可能给客户组织带来的冲击。的软件可能给客户组织带来的冲击。缺点:软件体系结构是开放的,这一点做到有缺点:软件体系结构是开放的,这一点做到有很大难度,但也是软件系统的发展趋势;开发很大难度,但也是软件系统的发展趋势;开发人员必须能够协调好构件之间的关系,否则开人员必须能够协调好构件之间的关系,否则开发出来的产品可能令人不满意。发出来的产品可能令人不满意。一旦确定了用户需求之后,就着手拟定第一旦确定了用户需求之后,就着手拟定第一个构件的规格说明文档,完成后规格说明组一个构件的规格说明文档,完成后规格说明组将转向第二个构件的规格说明,与

37、此同时设计将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件组开始设计第一个构件用这种方式开发软用这种方式开发软件,不同的构件将并行地构建,因此有可能加件,不同的构件将并行地构建,因此有可能加快工程进度。但是,使用这种方法将冒构件无快工程进度。但是,使用这种方法将冒构件无法集成到一起的风险,除非密切地监控整个开法集成到一起的风险,除非密切地监控整个开发过程,否则整个工程可能毁于一旦。发过程,否则整个工程可能毁于一旦。风险更大的增量模型风险更大的增量模型风险更大的增量模型螺旋模型螺旋模型 瀑布模型与快速原型模型相结合,并加瀑布模型与快速原型模型相结合,并加入两者所忽略的风险分析所建立的

38、一种入两者所忽略的风险分析所建立的一种软件开发模型。该模型于软件开发模型。该模型于19981998年由美国年由美国TRWTRW公司(公司(B.W.BoehmB.W.Boehm)提出。软件项目)提出。软件项目风险的大小作为指引软件过程的一个重风险的大小作为指引软件过程的一个重要因素,引入这一概念有可能使得要因素,引入这一概念有可能使得螺旋螺旋模型模型被看作一种元模型,因为它能包容被看作一种元模型,因为它能包容任何一个开发过程模型。任何一个开发过程模型。螺旋模型 螺旋模型的基本思想是,使用原型及其螺旋模型的基本思想是,使用原型及其他方法尽量降低风险。理解这种模型的他方法尽量降低风险。理解这种模型的

39、一个简便方法,是把它看成在每个阶段一个简便方法,是把它看成在每个阶段之间都增加了风险分析过程的快速原型之间都增加了风险分析过程的快速原型模型。模型。完整的螺旋模型完整的螺旋模型螺旋模型优缺点螺旋模型优缺点 优点:优点:对可选方案和约束条件的强调有利于重用已有软件,对可选方案和约束条件的强调有利于重用已有软件,也有助于把软件质量作为一个目标;减少了过多测也有助于把软件质量作为一个目标;减少了过多测试或者过少测试带来的风险;维护是模型的另一个试或者过少测试带来的风险;维护是模型的另一个周期,维护和开发之间没有本质区别。周期,维护和开发之间没有本质区别。缺点:缺点:引入非常严格的风险识别,风险分析,

40、和风险控制,引入非常严格的风险识别,风险分析,和风险控制,这对风险管理的技能水平提出了很高的要求。除非软这对风险管理的技能水平提出了很高的要求。除非软件开发人员具有丰富的风险评估经验和专门知识,否件开发人员具有丰富的风险评估经验和专门知识,否则将会出现真正的风险。则将会出现真正的风险。喷泉模型 喷泉模型是典型的面向对象范型。喷泉模型是典型的面向对象范型。“喷泉喷泉”这这个词体现了面向对象软件开发过程迭代和无缝个词体现了面向对象软件开发过程迭代和无缝的特性。的特性。迭代是软件开发过程中普遍存在的一种内在属迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代性。经验表明

41、,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。向对象范型中比在结构化范型中更常见。喷泉喷泉”这个词体现了面向对象软件开发过这个词体现了面向对象软件开发过程迭代和无缝的特性。图中代表不同阶段的圆程迭代和无缝的特性。图中代表不同阶段的圆圈相互重叠,这明确表示两个活动之间存在交圈相互重叠,这明确表示两个活动之间存在交迭;而面向对象方法在概念和表示方法上的一迭;而面向对象方法在概念和表示方法上的一致性,保证了在各项开发活动之间的无缝过渡,致性,保证了在各项开发活动之间的无缝过渡,事实上,用面向对象方法开发

42、软件时,在分析、事实上,用面向对象方法开发软件时,在分析、设计和编码等项开发活动之间并不存在明显的设计和编码等项开发活动之间并不存在明显的边界。图中在一个阶段内的向下箭头代表该阶边界。图中在一个阶段内的向下箭头代表该阶段内的迭代(或求精)。图中较小的圆圈代表段内的迭代(或求精)。图中较小的圆圈代表维护,圆圈较小象征着采用了面向对象范型之维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。后维护时间缩短了。RUP统一过程 迭代式开发 管理需求 使用基于构件的软件体系结构 可视化建模 验证软件质量 控制软件变更RUP软件开发生命周期(1)核心工作流(2)工作阶段(3)迭代式开发迭代的生命周期结构敏捷过程个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划极限编程极限编程的有效实践:客户作为开发团队的成员,使用用户素材,短交付周期,验收测试,结对编程,测试驱动开发,集体所有,持续集成,可持续的开发速度,开放的工作空间,及时调整计划,简单的设计,重构,使用隐喻 极限编程的整体开发过程(图1.11)极限编程的迭代过程(图1.12)微软过程 微观过程准则 微软生命周期 微软过程模型第一章第一章 小结小结 1、软件与软件危机 2、3、

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!