软件需求工程- 概述

上传人:r****d 文档编号:196155039 上传时间:2023-03-27 格式:PPT 页数:76 大小:823KB
收藏 版权申诉 举报 下载
软件需求工程- 概述_第1页
第1页 / 共76页
软件需求工程- 概述_第2页
第2页 / 共76页
软件需求工程- 概述_第3页
第3页 / 共76页
资源描述:

《软件需求工程- 概述》由会员分享,可在线阅读,更多相关《软件需求工程- 概述(76页珍藏版)》请在装配图网上搜索。

1、目的是使学生了解软件工程开发和维护的一般过程,掌握软件开发的传统方法和面向对象方法,从工程化角度培养学生从事大型软件特别是面向对象式系统开发、软件测试与管理的能力,为更深入地学习打下良好的根底。软件工程导论软件工程导论第第4 4版版 普通高校本科计算机专业普通高校本科计算机专业特色教材精选特色教材精选 张海藩张海藩 编著编著面向对象与传统软件工程中文版.4th Edition)机械工业出版社Stephen R.Schach著 韩松 邓迎春 李萍等译,2003第一章 软件工程学概论 1.1 1.1 软件危机软件危机 1.2 1.2 软件工程软件工程 1.3 1.3 软件生命周期软件生命周期 1.

2、4 1.4 软件过程软件过程1.1 1.1 软件危机软件危机 软件软件Software=Program+Data+Document Software=Program+Data+Document 软件软件(software)(software)是计算机系统中与硬件是计算机系统中与硬件(hardware)(hardware)相互依存的另一局部,相互依存的另一局部,它包括程序它包括程序(program)(program)、相关数据相关数据(data)(data)及其及其说明文档说明文档(document)(document)。程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的

3、数据结构文档是与程序开发,维护和使用有关的图文材料软件的开展l 1946-1956年年l 从计算机问世到实用的高级程序语言从计算机问世到实用的高级程序语言出现前出现前l存储容量比较小,运算速度比较慢存储容量比较小,运算速度比较慢l采用个体工作方式采用个体工作方式,用低级语言编写程用低级语言编写程序序l应用领域主要是以数值数据处理为主应用领域主要是以数值数据处理为主的科学计算,其特点是输入、输出量的科学计算,其特点是输入、输出量较小较小l衡量程序质量的标准主要是成效,即衡量程序质量的标准主要是成效,即运行时间省、占用内存小运行时间省、占用内存小l主要研究内容是科学计算程序、效劳主要研究内容是科学

4、计算程序、效劳性程序和程序库,研究对象是顺序程性程序和程序库,研究对象是顺序程序序l1956-1968年年l 从实用的高级程序语言出现到软件工程出从实用的高级程序语言出现到软件工程出现前现前l存储器容量大,外围设备得到迅速开展,出存储器容量大,外围设备得到迅速开展,出现了高级程序设计语言现了高级程序设计语言l应用领域包括数据处理非数值数据,其应用领域包括数据处理非数值数据,其特点是计算量不大,但输入、输出量却较大特点是计算量不大,但输入、输出量却较大l高速主机与低速外围设备的矛盾突出,出现高速主机与低速外围设备的矛盾突出,出现了操作系统、并发程序、数据库及其管理系了操作系统、并发程序、数据库及

5、其管理系统统l20世纪世纪60年代初提出了软件一词,开始认年代初提出了软件一词,开始认识到文档的重要性识到文档的重要性l研究高级程序设计语言、编译程序、操作系研究高级程序设计语言、编译程序、操作系统、支持编程的工具及各种应用软件统、支持编程的工具及各种应用软件l工作方式逐步从个体方式转向合作方式工作方式逐步从个体方式转向合作方式l出现软件危机出现软件危机l1968年年-至今至今l 从软件工程出现到现在从软件工程出现到现在l硬件向巨型机和微型机二个方向开展,出现硬件向巨型机和微型机二个方向开展,出现了计算机网络,软件方面提出了软件工程,了计算机网络,软件方面提出了软件工程,出现了出现了“计算机辅

6、助软件工程计算机辅助软件工程CASEl计算机的应用领域渗透到各个业务领域,出计算机的应用领域渗透到各个业务领域,出现了嵌入式应用,其特点是受制于它所嵌入现了嵌入式应用,其特点是受制于它所嵌入的宿主系统的宿主系统l开发方式逐步由个体合作方式转向工程方式开发方式逐步由个体合作方式转向工程方式l软件工程方面的研究主要包括软件开发模型、软件工程方面的研究主要包括软件开发模型、软件开发方法及技术、软件工具与环境、软软件开发方法及技术、软件工具与环境、软件过程、软件自动化系统等件过程、软件自动化系统等l软件方面研究以智能化、自动化、集成化、软件方面研究以智能化、自动化、集成化、并行化、以及自然化为标志的软

7、件开发新技并行化、以及自然化为标志的软件开发新技术术软件危机软件危机是指在计算机软件的开发和软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题维护过程中所遇到的一系列严重问题.软件危机主要有以下表现:软件危机主要有以下表现:对软件开发本钱和进度的估计常常不准确。开发本钱超出预算,实际进度比预定方案一再拖延的现象并不罕见。用户对“已完成系统不满意的现象经常发生。软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。软件的可维护程度非常之低。软件通常没有适当的文档资料。软件的本钱不断提高。软件开发生产率的提高赶不上硬件的开展和人们需求的增长。软件危机的原因 一方面是与软件本身

8、的特点一方面是与软件本身的特点有关有关 另一方面是由软件开发和维另一方面是由软件开发和维护的方法不正确有关护的方法不正确有关 软件特征软件特征 软件是一种逻辑实体,具有抽象性 软件没有明显的制造过程 软件在使用过程中,没有磨损、老化的问题 软件对硬件和环境有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工作坊式 的开发方式,生产效率低 软件是复杂的,而且以后会更加复杂 软件的本钱相当昂贵 大多数软件是自定的,而不是通过已有的 构件组装而来的实际问题的复杂性程序逻辑结构的复杂性 3 3、消除软件危机的途径、消除软件危机的途径 对计算机软件有一个正确的认识对计算机软件有一个正确的认识(软件软件程

9、序程序 必须充分认识到软件开发不是某必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各是一种组织良好、管理严密、各类人员协同配合、共同完成的工类人员协同配合、共同完成的工程工程。程工程。推广使用在实践中总结出来的开推广使用在实践中总结出来的开发软件的成功技术和方法。发软件的成功技术和方法。开发和使用更好的软件工具。开发和使用更好的软件工具。加强软件管理加强软件管理软件的分类 按功能分按功能分:系统软件系统软件:属于计算机系统中最靠近硬件的一层,其:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应它软

10、件一般都通过系统软件发挥作用,它与具体的应用领域无关。如操作系统、编译程序等。用领域无关。如操作系统、编译程序等。支持软件支持软件:支持软件的开发和维护的软件。如数据库:支持软件的开发和维护的软件。如数据库管理系统、网络软件、软件开发环境等。管理系统、网络软件、软件开发环境等。应用软件应用软件:特定应用领域专用的软件。如实时软件、:特定应用领域专用的软件。如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等。人工智能软件等。按软件工作方式划分:按软件工作方式划分:实时处理软件实时处理软件 分时软件分时软件 交互式软件交互式软件

11、批处理软件批处理软件 按软件效劳对象的范围划分:按软件效劳对象的范围划分:工程软件工程软件 产品软件产品软件 按使用的频度进行划分:按使用的频度进行划分:一次使用一次使用 频繁使用频繁使用 按软件失效的影响进行划分:按软件失效的影响进行划分:高可靠性软件高可靠性软件 一般可靠性软件一般可靠性软件1.2 1.2 软件工程软件工程工程工程工程是对技术或社会实体的分析、设计、建造、验证和管理。水利工程 建筑工程 机械工程 软件工程传统工程新兴工程气象工程 生物工程软件工程定义19681968年年NATO(NATO(北大西洋公约组织北大西洋公约组织)会议上首次提出会议上首次提出The establis

12、hment and use of sound engineering The establishment and use of sound engineering principles(methods)in order to obtain principles(methods)in order to obtain economically software that is reliable and works economically software that is reliable and works on real machines.(1968-Fritz Bauer)on real m

13、achines.(1968-Fritz Bauer)Software engineering,(1)The application of a Software engineering,(1)The application of a systematic,disciplined,quantifiable approach systematic,disciplined,quantifiable approach to the development,operation,and maintenance to the development,operation,and maintenance of s

14、oftware;that is,the application of of software;that is,the application of engineering to software.(2)The study of engineering to software.(2)The study of approaches as in(1).(IEEE Std 610-1990.approaches as in(1).(IEEE Std 610-1990.软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原那么软件工程是1将系统化的、标准的、可度量的方法应用

15、于软件的开发、运行和维护的过程,即将工程化应用于软件中;2对1中所述方法的研究总之:总之:软件工程是应用计算机科学、软件工程是应用计算机科学、数学及管理科学等原理开发软数学及管理科学等原理开发软件的工程。它借鉴传统工程的件的工程。它借鉴传统工程的原那么、方法,以提高质量,降原那么、方法,以提高质量,降低本钱为目的。低本钱为目的。软件工程是一门交叉学科软件工程是一门交叉学科软件工程的主要研究内容软件工程的主要研究内容u 软件开发技术软件开发技术:软件开发方法学软件开发方法学 软件开发过程软件开发过程 软件工具和软件工程环境软件工具和软件工程环境 u 软件工程管理软件工程管理:软件管理学软件管理学

16、 软件经济学软件经济学 软件心理学软件心理学20042004软件工程知识体系指南软件工程知识体系指南软件工程知识体系指南软件工程知识体系指南2004 2004 版版 Guide to the Software Engineering Body of Guide to the Software Engineering Body of Knowledge 2004 VersionKnowledge 2004 Version IEEE IEEE计算机学计算机学会会IEEE Computer SocietyIEEE Computer SocietySWEBOK SWEBOK 的的1010个知识域个知识

17、域Knowledge AreasKnowledge Areas,KAKA,软件需求软件需求 Software RequirementsSoftware Requirements软件设计软件设计 Software DesignSoftware Design软件构造软件构造 Software ConstructionSoftware Construction软件测试软件测试 Software TestingSoftware Testing软件维护软件维护 Software MaintenanceSoftware Maintenance软件配置管理软件配置管理 Software Configurat

18、ion ManagementSoftware Configuration Management软件工程管理软件工程管理 Software Engineering ManagementSoftware Engineering Management软件工程过程软件工程过程 Software Engineering ProcessSoftware Engineering Process软件工程工具和方法软件工程工具和方法 Software Engineering Tools and MethodsSoftware Engineering Tools and Methods软件质量软件质量 Softw

19、are QualitySoftware Quality软件工程软件工程 本质特征本质特征 软件工程关注于大型程序的构造软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性 软件经常变化软件经常变化 开发软件的效率非常重要开发软件的效率非常重要 和谐地合作是开发软件的关键和谐地合作是开发软件的关键 软件必须有效地支持它的用户软件必须有效地支持它的用户 在软件工程领域中是由具有一种文化在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人背景的人替具有另一种文化背景的人创造产品创造产品软件工程的根本原理软件工程的根本原理用分阶段的生命周期方案严格管理

20、坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精成认不断改进软件工程实践的必要性“软件工程课程软件工程课程 与其它软件专业课的区别与其它软件专业课的区别(1)(1)立足于系统的整体。立足于系统的整体。(2)(2)讲授系统分析、系统设计、讲授系统分析、系统设计、测试及维护的理论和方法。测试及维护的理论和方法。(3)(3)构筑一个软件系统,实践构筑一个软件系统,实践 软件开发全过程。软件开发全过程。3 3、软件工程方法学、软件工程方法学 把在软件生命周期全过程中使用的一整套技术方把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。法的集合称

21、为方法学。Methodology or ParadigmMethodology or Paradigm 软件工程方法学包含软件工程方法学包含3 3个要素:方法、工具和过个要素:方法、工具和过程程 方法方法 完成软件开发的各项任务的技完成软件开发的各项任务的技 术方法,答复术方法,答复“怎样做的问题;怎样做的问题;工具工具 为运用方法而提供的自动的或为运用方法而提供的自动的或 半自动的软件工程支撑环境;半自动的软件工程支撑环境;过程过程 为了获得高质量的软件所需要为了获得高质量的软件所需要 完成的一系列任务的框架,它规定了完完成的一系列任务的框架,它规定了完 成各项任务的工作步骤。成各项任务的工

22、作步骤。软件工程方法学分类:软件工程方法学分类:传统方法学传统方法学 面向对象的方法学面向对象的方法学传统方法学传统方法学(生命周期方法学生命周期方法学)仍然是使用十分广泛的软件工程方法学。采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。从上而下,顺序地完成软件开发的各阶段任务。面向对象的方法学面向对象的方法学 出发点和根本原那么是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识实践解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。1.31.3软件生命周期软件生命周期software lif

23、e cyclesoftware life cycle 软件有一个孕育、诞生、成长、成熟、软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算衰亡的生存过程。这个过程即为计算机软件的生存周期机软件的生存周期 软件生存周期大体可分为如下几个活软件生存周期大体可分为如下几个活动:动:问题定义、可行性研究、需求分问题定义、可行性研究、需求分析、析、设计、设计、编码、测试、运行和维护编码、测试、运行和维护1.3 1.3 软件生命周期软件生命周期 问题定义 软件定义 可行性研究 需求分析 总体设计 详细设计软件生命周期 软件开发 编码 测试 运行维护 持续满足用户需求1.4 1.4 软件过程

24、软件过程 软件过程是为了获得高质量软件所需要完成的一软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作系列任务的框架,它规定了完成各项任务的工作步骤。步骤。过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。软件开发模型软件开发模型 软件开发模型软件开发模型是软件开发全部过程、活是软件开发全部过程、活动和任务的动和任务的结构框架结构框架。它能直观表达软。它能直观表达软件开发全过程,明确规定要完成的主要件开发全过程,明确规定要完成的主要活动、任务和开发策略。活动、任务和开发策略。软

25、件开发模型也常称为软件开发模型也常称为:软件过程模型软件过程模型 软件生存周期模型软件生存周期模型 软件工程范型软件工程范型软件过程模型典型的软件过程模型有:瀑布模型waterfall model演化模型evolutionary model 增量模型incremental model 原型模型prototyping model)螺旋模型spiral model喷泉模型water fountain model基于构件的开发模型component-based development model形式方法模型formal methods model1.1.瀑布模型瀑布模型 (Waterfall Mod

26、el)(Waterfall Model)1970年W.Royce提出瀑布模型 特征接受上一阶段的结果作为本阶段的输入利用这一输入实施本阶段应完成的活动对本阶段的工作进行评审将本阶段的结果作为输出,传递给下一阶段 传统的瀑布模型传统的瀑布模型需求分析验证规格说明验证设计验证编码测试综合测试维护定义时期开发时期维护时期传统的瀑布模型过于理想化。事实上,传统的瀑布模型过于理想化。事实上,人在工作过程中不可能不犯错误。人在工作过程中不可能不犯错误。在设计阶段可能发现规格说明文档中的在设计阶段可能发现规格说明文档中的错误。错误。而设计上的缺陷或错误可能在实现过程而设计上的缺陷或错误可能在实现过程中显现出

27、来。中显现出来。在综合测试阶段将发现需求分析、设计在综合测试阶段将发现需求分析、设计或编码阶段的许多错误。或编码阶段的许多错误。实际的瀑布模型实际的瀑布模型 瀑布模型瀑布模型的优缺点的优缺点瀑布模型有许多优点:可强迫开发人员采用标准瀑布模型有许多优点:可强迫开发人员采用标准的方法例如,结构化技术;的方法例如,结构化技术;严格地规定了严格地规定了每个阶段必须提交的文档;要求每个阶段交出的每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。所有产品都必须经过质量保证小组的仔细验证。瀑布模型的成功在很大程度上是由于它根本上是瀑布模型的成功在很大程度上是由于它根本上是一

28、种文档驱动的模型。一种文档驱动的模型。“瀑布模型是由文档驱动的瀑布模型是由文档驱动的这个事实也是它的这个事实也是它的一个主要缺点。一个主要缺点。实际工程很少按照该模型给出的顺序进行;实际工程很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成;用户必须有耐心,等到系统开发完成;开发者常常被不必要地耽误。开发者常常被不必要地耽误。许多软件工程在开发早期对软件需求的认识是模糊的、不许多软件工程在开发早期对软件需求的认识是模糊的、不确定的,因此软件很难一次开发成功。确定的,因此软件很难一次开发成功。可以在获取了一组根本的需求后

29、,通过快速分析构造出该可以在获取了一组根本的需求后,通过快速分析构造出该软件的一个初始可运行版本,称之为原型软件的一个初始可运行版本,称之为原型prototypeprototype,然后根据用户在试用原型的过程中提出的意见和建议、或然后根据用户在试用原型的过程中提出的意见和建议、或者增加新的需求,对原型进行改造,获得原型的新版本,者增加新的需求,对原型进行改造,获得原型的新版本,重复这一过程,最终得到令客户满意的软件产品。重复这一过程,最终得到令客户满意的软件产品。演化模型的开发过程就是从构造初始的原型出发,逐步将演化模型的开发过程就是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。其

30、演化成最终软件产品的过程。演化模型适用于对软件需求缺乏准确认识的情况。演化模型适用于对软件需求缺乏准确认识的情况。典型的演化模型有:增量模型、原型模型、螺旋模型。典型的演化模型有:增量模型、原型模型、螺旋模型。演化模型Evolutionary Model原型prototype是预期系统的一个可执行版本,它反映了系统性质如功能、计算结果等的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低本钱地构建原型。原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制订原型开发的方案,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。被开发的

31、原型应交付给客户试用,并收集客户的反响意见,这些反响意见可在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一轮原型的迭代开发。原型模型(Prototype Model)原型的类型:原型的类型:探索型探索型exploratory prototypingexploratory prototyping 其目的是要弄清目标系统的要求,确定所其目的是要弄清目标系统的要求,确定所希望的特性,并探讨多种方案的可行性希望的特性,并探讨多种方案的可行性实验型实验型experimental prototypingexperimental prototyping 其目的是验证方案

32、或算法的合理性,它是其目的是验证方案或算法的合理性,它是在大规模开发和实现前,用于考核方案是否适宜,在大规模开发和实现前,用于考核方案是否适宜,规格说明是否可靠。规格说明是否可靠。演化型演化型evolutionary prototypingevolutionary prototyping 其目的是将原型作为目标系统的一局部,其目的是将原型作为目标系统的一局部,通过对原型的屡次改进,逐步将原型演化成最终通过对原型的屡次改进,逐步将原型演化成最终的目标系统。的目标系统。原型的使用策略:原型的使用策略:废弃废弃throw awaythrow away策略策略 主要用于探索型和实验型原型的开发。这些原

33、主要用于探索型和实验型原型的开发。这些原型关注于目标系统的某些特性,而不是全部特性,开型关注于目标系统的某些特性,而不是全部特性,开发这些原型时通常不考虑与探索或实验目的无关的功发这些原型时通常不考虑与探索或实验目的无关的功能、质量、结构等因素,这种原型通常被废丢,然后能、质量、结构等因素,这种原型通常被废丢,然后根据探索或实验的结果用良好的结构和设计思想重新根据探索或实验的结果用良好的结构和设计思想重新设计目标系统。设计目标系统。追加追加add onadd on策略策略 主要用于演化型原型的开发。这种原型通常是主要用于演化型原型的开发。这种原型通常是实现了目标系统中已明确定义的特性的一个子集

34、,通实现了目标系统中已明确定义的特性的一个子集,通过对它的不断修改和扩充,逐步追加新的要求,最后过对它的不断修改和扩充,逐步追加新的要求,最后使其演化成最终的目标系统。使其演化成最终的目标系统。原型可作为单独的过程模型使用,它也常被作为一种原型可作为单独的过程模型使用,它也常被作为一种方法或实现技术应用于其它的过程模型中。方法或实现技术应用于其它的过程模型中。快速原型模型工作过程快速原型模型工作过程 原型模型从需求收集开始。开发者和用户在一起定义软件的总体目标,标识出的需求,并规划出进一步定义的区域。然后是“快速设计,快速设计集中于软件那些对用户可见局部的表示。“快速设计导致原型的建造。原型由

35、用户评估,并进一步精化待开发软件的需求,逐步调整原型使其满足客户的要求。同时开发者对将要做的事情有更好的理解,这个过程是迭代的。按线性模型构建软件系统 听取用听取用 户意见户意见建造建造/修改修改原型原型用户测试用户测试运行原型运行原型快速原型验证规格说明验证设计验证编码测试综合测试维护变化的需求验证维护过程开发过程原型模型 适用情况 用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求;开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式;原型模型可能是最好的选择 3.3.增量模型渐增模型增量模型渐增模型(Incremental Model)(Incremental

36、Model)先完成一个系统子集的先完成一个系统子集的开发,再按同样的开发步开发,再按同样的开发步骤增加功能骤增加功能 (系统子集系统子集),),如此递增下去直至满足全如此递增下去直至满足全部系统需求。部系统需求。系统的总体设计在初始系统的总体设计在初始子集设计阶段就应作出设子集设计阶段就应作出设想。想。增量模型增量模型需求分析验证规格说明验证设计验证维护针对每个构件完成详细设计、编码和集成,经测试后交付给用户增量模型项目日历时间项目日历时间软软件件功功能能性性和和特特征征1 12 23 34 45 5第第2 2次增量发布次增量发布增量增量2 21 12 23 34 45 5第第n n次增量发布

37、次增量发布增量增量n n1 12 23 34 45 5第第1 1次增量发布次增量发布增量增量1 15 5部署(发布,反馈)部署(发布,反馈)4 4构造(编码,测试)构造(编码,测试)3 3建模(分析,设计)建模(分析,设计)2 2计划计划1 1交流交流分析分析分析分析设计设计设计设计编码编码编码编码测试测试测试测试增量1增量2 增量3增量4 交付交付交付交付 增量模型将软件的开发过程分成假设干个日程时增量模型将软件的开发过程分成假设干个日程时间交错的线性序列,每个线性序列产生软件的一间交错的线性序列,每个线性序列产生软件的一个可发布的个可发布的“增量版本,后一个版本是对前一增量版本,后一个版本

38、是对前一版本的修改和补充,重复增量发布的过程,直至版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。产生最终的完善产品。增量模型融合了瀑布模型的根本成分重复地应增量模型融合了瀑布模型的根本成分重复地应用和演化模型的迭代特征用和演化模型的迭代特征 增量模型强调每一个增量都发布一个可运行的产增量模型强调每一个增量都发布一个可运行的产品品 增量模型特别适用于:增量模型特别适用于:需求经常变化的软件开发需求经常变化的软件开发 市场急需而开发人员和资金不能在设定的市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件市场期限之前实现一个完善的产品的软件开发开发 增量模型能有

39、方案地管理技术风险,如早增量模型能有方案地管理技术风险,如早期增量版本中防止采用尚未成熟的技术期增量版本中防止采用尚未成熟的技术增量模型的优点增量模型的优点在较短时间内向用户提交可完成局部工作的产品,在较短时间内向用户提交可完成局部工作的产品,并分批、逐步地向用户提交产品。从第一个构件并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。交付之日起,用户就能做一些有用的工作。整个软件产品被分解成许多个增量构件,开发人整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。员可以一个构件一个构件地逐步开发。逐步增加产品功能可以使用户有较充裕的时间学逐

40、步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。给客户组织带来的冲击。采用增量模型比采用瀑布模型和快速原型模型需采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。在维护阶段获得回报。使用增量模型的困难使用增量模型的困难在把每个新的增量构件集成到现有软件体在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设的产品。

41、此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产计得便于按这种方式进行扩充,向现有产品中参加新构件的过程必须简单、方便,品中参加新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。也就是说,软件体系结构必须是开放的。开发人员既要把软件系统看作整体。又要开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险。多个构件并行开发,具有无法集成的风险。4.4.螺旋模型螺旋模型(Spiral Model)(Spiral Model)B.BoehmB.Boehm于于19881988年提出年提出 是瀑布模型

42、和演化模型的结合,并增加了风险分是瀑布模型和演化模型的结合,并增加了风险分析析 螺旋模型沿着螺线旋转,在四个象限上分别表达螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:四个方面的活动,即:制定方案:确定软件目标,选定实施方案,弄清制定方案:确定软件目标,选定实施方案,弄清工程开发的限制条件工程开发的限制条件 风险分析:评价所选的方案,识别风险,消除风风险分析:评价所选的方案,识别风险,消除风险险 工程实施:实施软件开发,验证工作产品工程实施:实施软件开发,验证工作产品 客户评估:评价开发工作,提出修正建议客户评估:评价开发工作,提出修正建议螺旋模型螺旋模型的根本思想 使用原型及

43、其他方法来尽量降使用原型及其他方法来尽量降低风险。低风险。产品交付给用户后用户可能不满意;产品交付给用户后用户可能不满意;到了预定的交付日期软件可能还未开发到了预定的交付日期软件可能还未开发出来;出来;实际的开发本钱可能超过预算;实际的开发本钱可能超过预算;产品完成前一些关键的开发人员产品完成前一些关键的开发人员 “跳槽了;跳槽了;产品投入市场之前竞争对手发布产品投入市场之前竞争对手发布 了一个功能相近、价格更低的软了一个功能相近、价格更低的软 件等。件等。软件风险是任何软件开发工程中都普遍存在的实际问题,工程越大,软件越复杂,承担该工程所冒的风险也越大。例如:快速原型验证规格说明验证设计验证

44、编码测试综合测试维护变化的需求验证风险分析风险分析风险分析风险分析风险分析风险分析可看作在每个阶段之前都增加了风险分析过程的快速原型模型。简化的螺旋模型 螺旋模型出现了一些变种,它可以有螺旋模型出现了一些变种,它可以有3 3到到6 6个任务个任务区域。区域。螺旋模型指引的软件工程开发沿着螺线自内向外螺旋模型指引的软件工程开发沿着螺线自内向外旋转,每旋转一圈,表示开发出一个更为完善的旋转,每旋转一圈,表示开发出一个更为完善的新软件版本。新软件版本。如果发现风险太大,开发者和客户无法承受,那如果发现风险太大,开发者和客户无法承受,那么工程就可能因此而终止。么工程就可能因此而终止。多数情况下沿着螺线

45、的活动会继续下去,自内向多数情况下沿着螺线的活动会继续下去,自内向外,逐步延伸,最终得到所期望的系统。外,逐步延伸,最终得到所期望的系统。螺旋模型 优点优点 对可选方案和约束条件的强调有利于已有软件对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的的重用,也有助于把软件质量作为软件开发的一个重要目标;一个重要目标;减少了过多测试或测试缺乏;减少了过多测试或测试缺乏;维护和开发之间并没有本质区别。维护和开发之间并没有本质区别。特点特点 风险驱动风险驱动 主要适用于内部开发的大规模软件工程主要适用于内部开发的大规模软件工程 要有具有丰富风险评估专门知识的开发人员,要有

46、具有丰富风险评估专门知识的开发人员,否那么风险更大。否那么风险更大。5.面向对象模型喷泉模型 (Fountain Model)可重用部件组装模型(构件集成模型 Component Integration Model)喷泉模型分析设计实现测试集成演化 喷泉模型是一种支持面向对象开发的模型 表达迭代和无间隙特征 迭代:各开发活动常常重复工作屡次,相关的功能在每次迭代中随之参加演进的系统 无间隙:开发活动之间不存在明显的边界可重用部件组装模型可重用部件组装模型(构件集成模型构件集成模型)使用重用技术的软件工程模型使用重用技术的软件工程模型构件构件(components)(components):可重

47、用的软件成份:可重用的软件成份可复用性可复用性ReusabilityReusability集成化软件开发环境集成化软件开发环境ISEEISEE 领域工程的目的是构建领域模型、领域基准领域工程的目的是构建领域模型、领域基准体系结构和可复用构件库。体系结构和可复用构件库。领域分析分析该领域中各种应用系统的公共领域分析分析该领域中各种应用系统的公共局部或相似局部,构建领域模型和领域基准局部或相似局部,构建领域模型和领域基准体系结构体系结构reference architecturereference architecture,标,标识领域的候选构件。识领域的候选构件。对候选构件进行可变性分析,以适应

48、多个应对候选构件进行可变性分析,以适应多个应用系统的需要。用系统的需要。构建可复用构件,经严格测试和包装后存入构建可复用构件,经严格测试和包装后存入可复用构件库称为构件工程。可复用构件库称为构件工程。应用系统工程的目的是使用可复用构件组装应应用系统工程的目的是使用可复用构件组装应用系统。用系统。分析待开发的应用系统,设计应用系统的体系分析待开发的应用系统,设计应用系统的体系结构,标识应用系统所需的构件。结构,标识应用系统所需的构件。在可复用构件库中查找适宜的构件也可购置在可复用构件库中查找适宜的构件也可购置第三方的构件。第三方的构件。特化选中的构件,必要时作适当的修改,以适特化选中的构件,必要

49、时作适当的修改,以适应该应用系统的需要。应该应用系统的需要。开发那些未找到适宜构件的应用局部。开发那些未找到适宜构件的应用局部。组装应用系统。组装应用系统。评价构件的复用情况,以改进可复用构件,同评价构件的复用情况,以改进可复用构件,同时对新开发的局部进行评价,并向构件工程推时对新开发的局部进行评价,并向构件工程推荐候选构件。荐候选构件。根据根据AT&TAT&T、EricssonEricsson、HPHP公司的经验,有的软公司的经验,有的软件复用率高达件复用率高达90%90%以上,产品上市时间可缩短以上,产品上市时间可缩短2 25 5倍,错误率减少倍,错误率减少5 51010倍,开发本钱减少倍

50、,开发本钱减少15%15%75%75%。尽管这些结论出自一些较好使用基。尽管这些结论出自一些较好使用基于构件开发的实例,但毫无疑问,基于构件的于构件开发的实例,但毫无疑问,基于构件的开发模型对提高软件生产率、提高软件质量、开发模型对提高软件生产率、提高软件质量、降低本钱、提早上市时间起到很大的作用。降低本钱、提早上市时间起到很大的作用。6、形式化方法模型 形式化方法形式化方法formal methodsformal methods是建立在严格数学根底上的一种是建立在严格数学根底上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、软件开发方法。软件开发的全过程中,从需求分析、规约、

51、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,但凡采编程、系统集成、测试、文档生成、直至维护各个阶段,但凡采用严格的数学语言,具有精确的数学语义的方法,都称为形式化用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。方法。形式化方法用严格的数学语言和语义描述功能规约和设计规约,形式化方法用严格的数学语言和语义描述功能规约和设计规约,通过数学的分析和推导,易于发现需求的岐义性、不完整性和不通过数学的分析和推导,易于发现需求的岐义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。通过数学一致性,易于对分析模型、设计模型和程序进行验证。通过数学的演算,使得从形式化功

52、能规约到形式化设计规约,以及从形式的演算,使得从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码的转换成为可能。化设计规约到程序代码的转换成为可能。思考与练习1.填空题(1)通常软件包括_、_、_三方面的内容。(2)软件的特点包括_、_、_、_、_、_等。(3)解决软件危机的途径是_和_。(4)瀑布模型本质上是_一种模型。(6)在演化过程模型中,工程开发的各阶段都是_开发的。思考与练习2.选择题(1)软件可以分为系统软件、支撑软件、应用软件等,这是根据()来划分的。A.软件的工作方式 B.软件的用途C.软件的功能 D.软件的制造过程(2)基于软件的效劳范围一般将其划分为产品软件和()。A.免费软件 B.定制软件C.管理软件 D.效劳软件(3)软件设计包括概要设计和()。A.宏观设计 B.计算机辅助设计C.面向过程的设计 D.详细设计 思考与练习3.判断题(1)软件开发的原型模型的主要优点是能加强对工程管理和控制。()(2)高质量的技术文档应该具有灵活性。()(3)软件生命周期也可分为分析阶段、开发阶段和维护阶段。()(4)解决软件危机的惟一途径是软件开发的结构化。()4.简答题(1)简述软件的开展过程。(2)简述软件的分类。(3)什么是软件危机?(4)软件危机主要有哪几种表现?

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