《系统建模及系统分析与设计教学课件汇总完整版电子教案全书整套课件幻灯片(最新).ppt》由会员分享,可在线阅读,更多相关《系统建模及系统分析与设计教学课件汇总完整版电子教案全书整套课件幻灯片(最新).ppt(567页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、UML系统建模及系统分析与设计系统建模及系统分析与设计编著第第1章章面向对象软件开发面向对象软件开发方法方法教学目的教学目的了解软件的发展和软件工程的概念。了解软件的发展和软件工程的概念。了解软件开发的常用方法。了解软件开发的常用方法。重点掌握面向对象技术的基本概念和开发过程。重点掌握面向对象技术的基本概念和开发过程。了解几种典型的面向对象开发方法。了解几种典型的面向对象开发方法。了解可行性研究方法。了解可行性研究方法。掌握可行性分析报告的书写格式。掌握可行性分析报告的书写格式。1.1软件发展与软件工程软件发展与软件工程v软件是一种特别的产品,随着其规模和复杂性的软件是一种特别的产品,随着其规
2、模和复杂性的进步及应用领域的扩大,逐渐形成了工程。进步及应用领域的扩大,逐渐形成了工程。v软件(软件(software)是计算机系统中与硬件)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程)相互依存的另一部分,它包括程序(序(program)、相关数据()、相关数据(data)及其说明)及其说明文档(文档(document)。)。1.1软件发展与软件工程v软件工程(软件工程(SoftwareEngineering,简称为,简称为SE)是针对软件这一具有特殊性质的产品的工程)是针对软件这一具有特殊性质的产品的工程化方法。化方法。v软件工程涵盖了软件生存周期的所有阶段,并提软
3、件工程涵盖了软件生存周期的所有阶段,并提供了一整套工程化的方法来指导软件人员的开发供了一整套工程化的方法来指导软件人员的开发工作。工作。1.1.1软件的发展与特征1.软件的发展阶段软件的发展阶段软件发展的历史可以大致分为如下的四个阶段:软件发展的历史可以大致分为如下的四个阶段:第一个阶段(第一个阶段(20世纪世纪50年代到年代到60年代)是程序设计阶年代)是程序设计阶段,基本是个体手工劳动的生产方式。段,基本是个体手工劳动的生产方式。20世纪世纪50年年代,软件伴随着第一台电子计算机的问世诞生了。以代,软件伴随着第一台电子计算机的问世诞生了。以写软件为职业的人也开始出现,他们多是经过训练的写软
4、件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师。数学家和电子工程师。20世纪世纪60年代美国大学开始有计算机专业,专门教人年代美国大学开始有计算机专业,专门教人们写软件。们写软件。早期的软件开发也没有什么系统的方法可以遵循,软件早期的软件开发也没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成的一个隐藏的过程。设计是在某个人的头脑中完成的一个隐藏的过程。1.1.1软件的发展与特征1.软件的发展阶段软件的发展阶段第一个阶段严格来说这个时期尚无软件的概念,基本上第一个阶段严格来说这个时期尚无软件的概念,基本上只有程序、程序设计概念,不重视程序设计方法。只有程序、程序设计概念,
5、不重视程序设计方法。软件主要是用于科学计算,规模很小,采用简单的工具软件主要是用于科学计算,规模很小,采用简单的工具(基本上采用低级语言),硬件的存储容量小,运行(基本上采用低级语言),硬件的存储容量小,运行可靠性差。可靠性差。20世纪中期,盘算机从军用领域转向民用领域应用,世纪中期,盘算机从军用领域转向民用领域应用,那时编写程序的工作被视为艺术家的创作。那时编写程序的工作被视为艺术家的创作。第一阶段的主要特征是:第一阶段的主要特征是:程序设计只是一个隐含在开发者头脑中的过程,程序设计只是一个隐含在开发者头脑中的过程,程序设计的结果,除了程序流程图和源程序清单程序设计的结果,除了程序流程图和源
6、程序清单可以留下来之外没有任何其他形式的文档资料保可以留下来之外没有任何其他形式的文档资料保留下来。留下来。此时只有程序的概念,没有软件的概念。此时只有程序的概念,没有软件的概念。主要采用汇编语言,甚至是机器语言,以解决计主要采用汇编语言,甚至是机器语言,以解决计算机内存容量不够和运算速度太低的矛盾。由于算机内存容量不够和运算速度太低的矛盾。由于过分追求编程技巧,程序设计被视为某个人的神过分追求编程技巧,程序设计被视为某个人的神秘技巧,程序除作者本人外,其他人很难读懂。秘技巧,程序除作者本人外,其他人很难读懂。1.软件的发展阶段软件的发展阶段v第二阶段(第二阶段(20世纪世纪60年代到年代到7
7、0年代)是软件设计阶年代)是软件设计阶段,采取小组合作生产方式。段,采取小组合作生产方式。v这一时期盘算机的利用领域得到进一步扩大,对软件这一时期盘算机的利用领域得到进一步扩大,对软件系统的需求和软件自身的复杂度急剧上升,传统的开系统的需求和软件自身的复杂度急剧上升,传统的开发方法无法适应用户在质量、效率等方面对软件的需发方法无法适应用户在质量、效率等方面对软件的需求。求。v人们为摆脱汇编语言和机器语言编程的困难,相继研人们为摆脱汇编语言和机器语言编程的困难,相继研制出了一批高级程序设计语言,大大加速了计算机应制出了一批高级程序设计语言,大大加速了计算机应用普及的步伐,各种类型的应用程序相继出
8、现。用普及的步伐,各种类型的应用程序相继出现。1.软件的发展阶段软件的发展阶段v第二阶段软件开始作为一种产品被广泛使用,出第二阶段软件开始作为一种产品被广泛使用,出现了现了“软件作坊软件作坊”。“v这个阶段的开发成本令人吃惊地高,而失败的软这个阶段的开发成本令人吃惊地高,而失败的软件开发项目却屡见不鲜。最为突出的例子是美国件开发项目却屡见不鲜。最为突出的例子是美国IBM公司于公司于1963年年1966年开发的年开发的IBM360系列机的操作系统。系列机的操作系统。IBM360操作系统的历史教操作系统的历史教训已成为软件开发项目中的典型事例被记入历史训已成为软件开发项目中的典型事例被记入历史史册
9、。史册。“软件危机软件危机”就这样开始了。就这样开始了。“软件危机软件危机”v“软件危机软件危机”使得人们开始对软件及其特性进行更使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确深一步的研究,人们改变了早期对软件的不正确看法。早期那些被认为是优秀的程序常常很难被看法。早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧。别人看懂,通篇充满了程序技巧。v为解决这个问题,为解决这个问题,1968年秋季年秋季NATO(北大西(北大西洋公约组织)的科技委员会召集了近洋公约组织)的科技委员会召集了近50名一流的名一流的编程人员、计算机科学家和工业界巨头讨论并制编程人
10、员、计算机科学家和工业界巨头讨论并制定摆脱定摆脱“软件危机软件危机”的对策。在联邦德国召开的的对策。在联邦德国召开的这次国际学术会议上第一次提出了这次国际学术会议上第一次提出了“软件危机软件危机”(softwarecrisis)。)。“软件危机软件危机”软件危机指的是在计算机软件的开发和维护过程中软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。所遇到的一系列严重问题。概括来说,软件危机包含两方面问题:一是如何开概括来说,软件危机包含两方面问题:一是如何开发软件,以满足日益增长,日趋复杂的需求;二发软件,以满足日益增长,日趋复杂的需求;二是如何维护数量不断膨胀的软件产品。是如
11、何维护数量不断膨胀的软件产品。第二阶段阶段的主要特征第二阶段阶段的主要特征由于程序的规模增大,程序设计已不可能由个由于程序的规模增大,程序设计已不可能由个人独立完成,而需要多人分工协作。软件的开发人独立完成,而需要多人分工协作。软件的开发方式由方式由“个体生产个体生产”发展到发展到“小组软件作坊小组软件作坊”。程序的运行、维护也不再由一个人来承担,而是程序的运行、维护也不再由一个人来承担,而是由开发小组承担。由开发小组承担。程序已不再是计算机硬件的附属成份,而是计算程序已不再是计算机硬件的附属成份,而是计算机系统中与硬件相互依存、共同发挥作用的不可机系统中与硬件相互依存、共同发挥作用的不可缺少
12、的部分。在计算机系统的开发过程中,起主缺少的部分。在计算机系统的开发过程中,起主导作用的已经不仅仅是硬件工程师,同时也包括导作用的已经不仅仅是硬件工程师,同时也包括软件工程师。软件工程师。1.软件的发展阶段软件的发展阶段第三个阶段(第三个阶段(20世纪世纪70年代到年代到90年代)采用工程年代)采用工程化的生产方式,是传统软件工程阶段。化的生产方式,是传统软件工程阶段。微处理器的出现与应用使个人计算机发展迅速,这微处理器的出现与应用使个人计算机发展迅速,这个阶段的硬件向超高速、大容量、微型化以及网个阶段的硬件向超高速、大容量、微型化以及网络化方向发展。络化方向发展。软件系统的规模、复杂性增强,
13、促进了软件开发过软件系统的规模、复杂性增强,促进了软件开发过程管理及工程化。程管理及工程化。这个时期还包括开发、使用和维护过程所需的文档。这个时期还包括开发、使用和维护过程所需的文档。软件开发范围从需求定义、分析、设计、编码、软件开发范围从需求定义、分析、设计、编码、测试、使用到维护等整个软件生命周期。测试、使用到维护等整个软件生命周期。第三阶段的主要特征第三阶段的主要特征软件产业已经兴起,软件产业已经兴起,“软件作坊软件作坊”已经发展为已经发展为软件公司,甚至是跨国公司。软件公司,甚至是跨国公司。软件开发的成功率大大提高,软件的质量也有了软件开发的成功率大大提高,软件的质量也有了很大的保证。
14、软件已经产品化、系列化、标准化、很大的保证。软件已经产品化、系列化、标准化、工程化。工程化。软件工程并发环境及其相应的集成工具大量涌现,软件工程并发环境及其相应的集成工具大量涌现,软件开发技术中的度量问题受到重视软件开发技术中的度量问题受到重视1.软件的发展阶段软件的发展阶段v第四阶段(第四阶段(20世纪世纪90年代至今)是现代软件工程阶段。年代至今)是现代软件工程阶段。v数据库、开发工具、开发环境、网络、分布式、面向对象数据库、开发工具、开发环境、网络、分布式、面向对象技术等工具方法都得到应用。技术等工具方法都得到应用。vInternet技术的迅速发展使得软件系统从封闭走向开放,技术的迅速发
15、展使得软件系统从封闭走向开放,Web应用成为人们在应用成为人们在Internet上最主要的应用模式,异上最主要的应用模式,异构环境下分布式软件的开发成为一种主流需求,软件复用构环境下分布式软件的开发成为一种主流需求,软件复用和构件技术成为技术热点。和构件技术成为技术热点。第四阶段的主要特征:第四阶段的主要特征:v面向对象技术广泛使用。面向对象技术广泛使用。v软件开发技术逐渐成熟。软件开发技术逐渐成熟。v这个时代的主流应用技术采用面向对象技术、软这个时代的主流应用技术采用面向对象技术、软件复用技术(设计模式、软件框架、软件体系结件复用技术(设计模式、软件框架、软件体系结构等)、构件设计技术、分布
16、式计算技术、软件构等)、构件设计技术、分布式计算技术、软件过程管理技术等。过程管理技术等。2.软件的特征v软件同传统的工业产品相比,有其独特的特性。软件同传统的工业产品相比,有其独特的特性。v软件是一种逻辑实体,具有抽象性。软件是一种逻辑实体,具有抽象性。v软件没有明显的制造过程。软件没有明显的制造过程。v软件在使用过程中,没有磨损、老化的问题。当修改软件在使用过程中,没有磨损、老化的问题。当修改的成本变得难以接受时,软件就被抛弃。的成本变得难以接受时,软件就被抛弃。v软件对硬件和环境有着不同程度的依赖性,这就导致软件对硬件和环境有着不同程度的依赖性,这就导致了软件移植的问题。了软件移植的问题
17、。2.软件的特征软件的特征v软件的开发至今尚未完全摆脱手工作坊式的开发方式,软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低。生产效率低。v软件是复杂的,而且以后会更加复杂。软件是复杂的,而且以后会更加复杂。v软件的成本相当昂贵。软件开发需要投入大量的、高软件的成本相当昂贵。软件开发需要投入大量的、高强度的脑力劳动,成本非常高,风险也大。现在软件的开强度的脑力劳动,成本非常高,风险也大。现在软件的开销已大大超过了硬件的开销。销已大大超过了硬件的开销。v软件工作牵涉到很多社会因素。人的因素,常常成为软件工作牵涉到很多社会因素。人的因素,常常成为软件开发的困难所在,直接影响到项目的成败。
18、软件开发的困难所在,直接影响到项目的成败。1.1.2软件工程v软件工程的方法就是基于软件危机的问题提出来的。软件工程的方法就是基于软件危机的问题提出来的。v大型的、复杂的软件系统开发是一项工程,必须按工程学大型的、复杂的软件系统开发是一项工程,必须按工程学的方法组织软件的生产和管理,必须经过系统的分析、设的方法组织软件的生产和管理,必须经过系统的分析、设计、实现、测试和维护等一系列的软件生命周期阶段。这计、实现、测试和维护等一系列的软件生命周期阶段。这一认识促使了软件工程学的诞生。一认识促使了软件工程学的诞生。1.软件工程的概念与知识体系软件工程的概念与知识体系v软件工程是一门研究如何用系统化
19、、规范化、数软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护量化等工程原则和方法去进行软件的开发和维护的学科。软件工程包括两方面内容:软件开发技的学科。软件工程包括两方面内容:软件开发技术和软件项目管理。术和软件项目管理。v软件开发技术包括软件开发方法学、软件工具和软件开发技术包括软件开发方法学、软件工具和软件工程环境。软件项目管理包括软件度量、项软件工程环境。软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目目估算、进度控制、人员组织、配置管理、项目计划等。软件工程的三要素是方法、工具和过程。计划等。软件工程的三要素是方法、工具和过程。
20、软件工程应该包括的知识软件工程应该包括的知识vIEEE的软件工程实施体系指南的软件工程实施体系指南SEWBOK(GuidetotheSoftwareEngineeringBodyofKnowledge2004Version)界定了软件工程的)界定了软件工程的10个知识领个知识领域(域(KAs:KnowledgeAreas),即软件需),即软件需求、软件设计、软件构建、软件测试、软件维护、求、软件设计、软件构建、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法及软件质量。软件工程工具和方法及软件质量。软件工程知识体系指南(
21、软件工程知识体系指南(2004)知识域知识域内容内容软件需求软件需求基础、需求过程、需求获取、需求分析、需求规格说明、需求确认和实践考虑软件设计软件设计基础、软件设计关键问题、软件结构与体系结构、软件设计质量的分析与评价、软件设计符号、软件设计的策略与方法软件构造软件构造基础、管理构造、实际考虑软件测试软件测试基础和测试级别、测试技术、与测试相关的度量、测试过程软件工程知识体系指南(软件工程知识体系指南(2004)知识域知识域内容内容软件维护软件维护基础、软件维护的关键问题、维护过程、维护技术软件配置管理软件配置管理过程管理、软件配置标志、软件配置控制、软件配置状态统计、软件配置审核、软件发行
22、管理和交付软件工程管理启动和范围定义、软件项目计划、软件项目实施、评审与评价、关闭、软件工程度量软件工程过程过程实施与改变、过程定义、过程评定、过程和产品度量软件工程工具和方法软件工程工具、软件工程方法软件质量软件质量基础、软件质量过程、实践考虑相关学科计算机工程、计算机科学、管理、数学、项目管理、质量管理、软件人类工程学和系统工程2.软件工程的框架软件工程的框架v软件工程的框架由软件工程目标、软件工程活动软件工程的框架由软件工程目标、软件工程活动和软件工程原则三个方面的内容构成。和软件工程原则三个方面的内容构成。开发范型开发范型开发范型开发范型设计方法设计方法设计方法设计方法支持过程支持过程
23、支持过程支持过程管理过程管理过程管理过程管理过程需需需需求求求求设设设设计计计计实实实实现现现现确确确确认认认认支支支支持持持持可用性可用性可用性可用性正确性正确性正确性正确性合算性合算性合算性合算性软件工程活软件工程活软件工程活软件工程活动维动维动维动维软件工程目软件工程目软件工程目软件工程目标维标维标维标维软件工程软件工程软件工程软件工程原则维原则维原则维原则维图图图图1.1.软件工程框架软件工程框架软件工程框架软件工程框架软件工程的目标软件工程的目标v是开发与生产出具有良好的软件质量和费用合算是开发与生产出具有良好的软件质量和费用合算的产品,即生产具有正确性、可用性以及合算的的产品,即生
24、产具有正确性、可用性以及合算的软件产品。软件产品。v正确性是指软件产品达到预期功能的程度。正确性是指软件产品达到预期功能的程度。v可用性是指软件基本结构、实现及文档为用户可可用性是指软件基本结构、实现及文档为用户可用的程度。费用合算是指软件开发运行的整个开用的程度。费用合算是指软件开发运行的整个开销能满足用户要求的程度。销能满足用户要求的程度。v软件质量是指该软件能满足明确的和隐含的需求软件质量是指该软件能满足明确的和隐含的需求能力有关特征和特性的总和。能力有关特征和特性的总和。软件工程活动软件工程活动v包括需求、设计、实现、确认和支持。v需求包括问题分析和需求分析。问题分析包括需求获取和定义
25、,又称软件需求问题分析包括需求获取和定义,又称软件需求规约。规约。需求分析包括生成软件功能规约。需求分析包括生成软件功能规约。v设计包括概要设计和详细设计。v实现就是把设计结果转换为可执行的程序代码。v确认贯穿整个开发过程,对完成的结果进行确认,保证产品满足用户的要求。v支持是修改和完善活动。软件工程的原则软件工程的原则v选取适宜开发范型。该原则与系统设计有关,选取适宜开发范型。该原则与系统设计有关,在系统设计中,软件需求、硬件需求以及其他因在系统设计中,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。素之间是相互制约、相互影响的,经常需要权衡。因此,必须认识需求定义的
26、易变性,采用适宜的因此,必须认识需求定义的易变性,采用适宜的开发范型予以控制,以保证软件产品满足用户的开发范型予以控制,以保证软件产品满足用户的要求。要求。v采用合适的设计方法。在软件设计中,通常要采用合适的设计方法。在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。于这些特征的实现,以达到软件工程的目标。软件工程的原则软件工程的原则v提供高质量的工程支持。提供高质量的工程支持。“工欲善其事,必先工欲善其事,必先利其器
27、利其器”。在软件工程中,软件工具与环境对软。在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和开销直接取决于对软件工程所提供的支撑质量和效用。效用。v重视开发过程的管理。软件工程的管理,直接重视开发过程的管理。软件工程的管理,直接影响可用资源的有效利用、生产满足目标的软件影响可用资源的有效利用、生产满足目标的软件产品和提高软件组织的生产能力等问题。因此,产品和提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的仅当软件过程得以有效管理时,才能实现有效的软件工程。
28、软件工程。软件工程的框架软件工程的框架软件工程的目标是可用性、正确性和合算性软件工程的目标是可用性、正确性和合算性软件工程活动主要包括需求、设计、实现、确软件工程活动主要包括需求、设计、实现、确认和支持等活动,每一活动可根据特定的软件认和支持等活动,每一活动可根据特定的软件工程,采用合适的开发范型、设计方法、支持工程,采用合适的开发范型、设计方法、支持过程以及过程管理。过程以及过程管理。3.软件工程的基本原理软件工程的基本原理v用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理v坚持进行阶段评审。坚持进行阶段评审。v实行严格的产品控制。实行严格的产品控制。v结果应能清楚地审查。结果应
29、能清楚地审查。v开发小组的人员应该少而精。开发小组的人员应该少而精。1.2软件过程和开发方法软件过程和开发方法v1.2.1软件过程软件过程软件过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程描述了为了开发出客户满意的软件,什么人(who)、在什么时候(when)、做什么事(what)以及怎么做(how)这些事以实现某一个特定的具体目标。通常用生命周期模型简洁地描述软件过程。1.2软件过程和开发方法软件过程和开发方法v1.2.1软件过程软件过程生命周期模型规定了把生命周期划分成哪些阶生命周期模型规定了把生命周期划分成哪些阶段及各阶段的执行顺序,因此
30、,称为软件过程段及各阶段的执行顺序,因此,称为软件过程模型,又称为软件开发模型。模型,又称为软件开发模型。软件开发模型是指软件开发中的所有过程、活软件开发模型是指软件开发中的所有过程、活动和任务的结构框架,它能清晰、明确地表达动和任务的结构框架,它能清晰、明确地表达软件开发的全过程软件开发的全过程软件开发通常包括需求、设计、实现、确认和软件开发通常包括需求、设计、实现、确认和支持等阶段。支持等阶段。常见的软件过程模型有常见的软件过程模型有v瀑布模型瀑布模型v快速原型模型快速原型模型v增量模型增量模型v螺旋模型螺旋模型v喷泉模型喷泉模型v此外还有迭代模型、此外还有迭代模型、V模型和智能模型等。模
31、型和智能模型等。1.瀑布模型瀑布模型v1970年温斯顿年温斯顿罗伊斯(罗伊斯(WinstonRoyce)提出了著)提出了著名的名的“瀑布模型瀑布模型(WaterfallModel)”,它有时也称为,它有时也称为传统生存周期模型或线性顺序过程模型。传统生存周期模型或线性顺序过程模型。v20世纪世纪80年代之前,它一直是唯一被广泛采用的软件开年代之前,它一直是唯一被广泛采用的软件开发模型,现在它仍然是软件工程中应用最广泛的过程模型发模型,现在它仍然是软件工程中应用最广泛的过程模型之一。之一。v传统软件工程方法学的软件过程,基本上可以用瀑布模型传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述
32、。来描述。v瀑布模型将软件生命周期划分为软件计划、需求分析、系瀑布模型将软件生命周期划分为软件计划、需求分析、系统设计、软件编写、软件测试和运行维护等六个基本活动,统设计、软件编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。布流水,逐级下落。瀑布模型瀑布模型制定计划制定计划制定计划制定计划验证验证验证验证系统设计系统设计系统设计系统设计验证验证验证验证程序编码程序编码程序编码程序编码测试测试测试测试综合测试综合测试综合测试综合测试需求分析需求分析需求分析需求分析验证验证验证验证系统维护
33、系统维护系统维护系统维护传统的瀑布模型传统的瀑布模型传统的瀑布模型传统的瀑布模型瀑布模型的主要特点:瀑布模型的主要特点:阶段间具有顺序性和依赖性。阶段间具有顺序性和依赖性。推迟实现的观点。推迟实现的观点。质量保证的观点。瀑布模型在实现之前无法了解质量保证的观点。瀑布模型在实现之前无法了解项目的实际情况,只有实现了才知道项目的情况。项目的实际情况,只有实现了才知道项目的情况。及时验证是保证软件质量、降低软件成本的重要措施。及时验证是保证软件质量、降低软件成本的重要措施。实际的瀑布模型实际的瀑布模型带反馈环带反馈环制定计划制定计划制定计划制定计划验证验证验证验证系统设计系统设计系统设计系统设计验证
34、验证验证验证程序编码程序编码程序编码程序编码测试测试测试测试综合测试综合测试综合测试综合测试需求分析需求分析需求分析需求分析验证验证验证验证系统维护系统维护系统维护系统维护变化的需求变化的需求变化的需求变化的需求验证验证验证验证瀑布模型的优点瀑布模型的优点v严格地规定了每项活动必须提交的文档。可以严格地规定了每项活动必须提交的文档。可以强迫开发人员采用规范的开发方法。强迫开发人员采用规范的开发方法。v为项目提供了按活动划分的检查点。每项活动为项目提供了按活动划分的检查点。每项活动交出的产品必须经过质量保证小组的仔细验证,交出的产品必须经过质量保证小组的仔细验证,这样可以保证软件的开发质量。这样
35、可以保证软件的开发质量。v当前一阶段完成后,您只需要去关注后续阶段。当前一阶段完成后,您只需要去关注后续阶段。瀑布模型的缺点:瀑布模型的缺点:v各个阶段的划分完全固定,阶段之间产生大量各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。的文档,极大地增加了工作量。v由于开发模型是线性的,用户只有等到整个过由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的程的末期才能见到开发成果,从而增加了开发的风险。风险。v早期的错误可能要等到开发后期的测试阶段才早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。能发现,进而带来严重的后果。v瀑
36、布模型是线性的,瀑布模型是线性的,“线性线性”是人们最容易掌握是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂并能熟练应用的思想方法。当人们碰到一个复杂的的“非线性非线性”问题时,总是千方百计地将其分解问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。或转化为一系列简单的线性问题,然后逐个解决。2.快速原型模型快速原型模型v快速原型模型快速原型模型(RapidPrototypeModel)的的第一步就是根据用户提出的需求,由用户与开发第一步就是根据用户提出的需求,由用户与开发者共同确定系统的基本要求和主要功能,并在较者共同确定系统的基本要求和主要功能,并在较短
37、时间内建立一个实验性的、简单的小型系统,短时间内建立一个实验性的、简单的小型系统,称作称作“快速原型快速原型”。v第二步就是将原型交给用户使用,用户在使用原第二步就是将原型交给用户使用,用户在使用原型的过程中会产生新的需求,开发人员依据用户型的过程中会产生新的需求,开发人员依据用户提出的评价意见对快速原型进行不断的修改、补提出的评价意见对快速原型进行不断的修改、补充和完善。如此不断地迭代,直至开发出客户满充和完善。如此不断地迭代,直至开发出客户满意的软件产品。意的软件产品。2.快速原型模型快速原型模型原型原型原型原型快速分析快速分析快速分析快速分析构造构造构造构造运行运行运行运行评价评价评价评
38、价3.增量模型增量模型v增量模型(增量模型(IncrementalModel)又称为演化)又称为演化模型。这种模型融合了瀑布模型的基本成份和快模型。这种模型融合了瀑布模型的基本成份和快速原型的迭代特征。速原型的迭代特征。分析分析分析分析设计设计设计设计编码编码编码编码测试测试测试测试增量增量增量增量1 1分析分析分析分析设计设计设计设计编码编码编码编码测试测试测试测试增量增量增量增量2 2分析分析分析分析设计设计设计设计编码编码编码编码测试测试测试测试增量增量增量增量3 3分析分析分析分析设计设计设计设计编码编码编码编码测试测试测试测试增量增量增量增量4 4增量模型增量模型增量模型增量模型3.
39、增量模型增量模型增量模型也存在以下缺陷:增量模型也存在以下缺陷:v由于各个构件是逐渐并入已有的软件体系结构中由于各个构件是逐渐并入已有的软件体系结构中的,要求加入构件必须不破坏已构造好的系统部分,的,要求加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。这需要软件具备开放式的体系结构。v在开发过程中,需求的变化是不可避免的。增量在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制
40、失去整体性。做边改模型,从而使软件过程的控制失去整体性。4.螺旋模型螺旋模型v1988年年BarryBoehm正式提出了软件系统开正式提出了软件系统开发的发的“螺旋模型螺旋模型(SpiralModel)”,v“螺旋模型螺旋模型”将瀑布模型和快速原型模型结合起将瀑布模型和快速原型模型结合起来,它强调了其它模型所忽视的风险分析,特别来,它强调了其它模型所忽视的风险分析,特别适合于大型复杂的系统。适合于大型复杂的系统。4.螺旋模型螺旋模型5.喷泉模型喷泉模型v喷泉模型喷泉模型(fountainmodeldel)也称面向对象的生也称面向对象的生存期模型,存期模型,OO模型。模型。v喷泉模型与传统的结构
41、化生存期模型比较,具有喷泉模型与传统的结构化生存期模型比较,具有更多的增量和迭代性质,生存期的各个阶段可以更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。中还可以嵌入子生存期。v就像水喷上去又可以落下来,可以落在中间,也就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。可以落在最底部。5.喷泉模型喷泉模型分析分析分析分析设计设计设计设计实现实现实现实现维护维护维护维护演化演化演化演化喷泉模型喷泉模型喷泉模型喷泉模型6.智能模型智能模型v智能模型也称为智能模型也称为“基于知识的软件开发模型
42、基于知识的软件开发模型”,它把瀑布模型和专家系统结合在一起,利用专家它把瀑布模型和专家系统结合在一起,利用专家系统来帮助软件开发人员工作。系统来帮助软件开发人员工作。v该模型应用基于规则的系统,采用归纳和推理机该模型应用基于规则的系统,采用归纳和推理机制,帮助软件人员完成开发工作,并使维护在系制,帮助软件人员完成开发工作,并使维护在系统规格说明一级进行。统规格说明一级进行。v智能模型以知识作为处理对象,这些知识既有理智能模型以知识作为处理对象,这些知识既有理论知识,也有特定领域的经验。论知识,也有特定领域的经验。6.智能模型智能模型空间、属性数空间、属性数空间、属性数空间、属性数据据据据GIS
43、GIS系统系统系统系统数据黑板数据黑板数据黑板数据黑板状态黑板状态黑板状态黑板状态黑板结论黑板结论黑板结论黑板结论黑板推推推推理理理理机机机机数据转换器数据转换器数据转换器数据转换器模型模型模型模型运行体运行体运行体运行体智智智智能能能能模模模模型型型型运运运运行行行行池池池池决策请求决策请求决策请求决策请求人机交互信息人机交互信息人机交互信息人机交互信息分析结果分析结果分析结果分析结果GISGIS数据库数据库数据库数据库模型库模型库模型库模型库知识库知识库知识库知识库接口统一的模型接口统一的模型接口统一的模型接口统一的模型知识模型知识模型知识模型知识模型数据数据数据数据图图图图1.1.智能模
44、型样图智能模型样图智能模型样图智能模型样图6.智能模型智能模型需求分析需求分析需求分析需求分析知识获取和表示知识获取和表示知识获取和表示知识获取和表示推理机制推理机制推理机制推理机制体系结构设计体系结构设计体系结构设计体系结构设计软件原型系统软件原型系统软件原型系统软件原型系统软件实现软件实现软件实现软件实现知识库知识库知识库知识库/专家系统专家系统专家系统专家系统智能模型智能模型智能模型智能模型智能模型特点智能模型特点v智能模型拥有一组工具(如数据查询、报表生成、智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能数据处理、屏幕定义、代码生成、高层图形功能及
45、电子表格等及电子表格等v这种方法需要四代语言(这种方法需要四代语言(4GL)的支持。)的支持。v它以瀑布模型为基本框架,在不同开发阶段引入它以瀑布模型为基本框架,在不同开发阶段引入了原型实现方法和面向对象技术以克服瀑布模型了原型实现方法和面向对象技术以克服瀑布模型的缺点,适应于特定领域的软件和专家决策系统的缺点,适应于特定领域的软件和专家决策系统的开发。的开发。7.V模型模型vV模型是软件开发瀑布模型的变种,主要反映测模型是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系。试活动与分析和设计的关系。图图图图1.V1.V模型模型模型模型用户需求用户需求用户需求用户需求概要设计概要设计概
46、要设计概要设计需求分析需求分析需求分析需求分析详细设计详细设计详细设计详细设计验收测试验收测试验收测试验收测试集成测试集成测试集成测试集成测试功能测试功能测试功能测试功能测试单元测试单元测试单元测试单元测试编码编码编码编码8.各种模型的比较各种模型的比较模模型型描描述述优优点点缺缺点点应用场景应用场景瀑布模型过程划分为计划、需求、设计、编码、测试和维护阶段;各阶段自上而下,相互衔接固定次序,如同瀑布流水;各阶段评审确认通过,前阶段输出是后阶段输入;文档驱动(DocumentDriven)。严格规定应提交的文档,为项目提供检查点;利于大型软件项目中人员的组织与管理;利于开发方法工具的研究和使用;
47、提高大型项目中的开发效率与质量。文档驱动,可能不能完全满足用户需求;呈线性,成果未经测试时,用户看不到结果,增加了风险;前阶段未发现的错误传到后阶段甚至扩散,可导致项目失败;需求阶段,完全确定需求比较困难。大型软件项目;需求明确;需求很少变更。8.各种模型的比较各种模型的比较模 型描 述优 点缺 点应用场景快速原快速原型模型型模型快速建造初步、快速建造初步、非完整软件原非完整软件原型,实现客户型,实现客户与系统交互;与系统交互;客户对原型评客户对原型评价,细化需求;价,细化需求;逐步调整原型逐步调整原型满足要求,原满足要求,原型内部结构不型内部结构不重要;重要;原型驱动原型驱动(Prototy
48、peDriven)。)。确定客户真确定客户真正需求,减正需求,减少需求不确少需求不确定性;定性;更好和客户更好和客户沟通,提高沟通,提高客户对软件客户对软件的满意度;的满意度;减少技术,减少技术,应用风险,应用风险,缩小成本,缩小成本,提高产品质提高产品质量。量。需要尽可能尽快建需要尽可能尽快建造软件原型,可能造软件原型,可能会限制开发人员创会限制开发人员创新;新;所选技术工具不一所选技术工具不一定是主流,效率低;定是主流,效率低;原型快速建立的内原型快速建立的内部结构及连续修改部结构及连续修改可能导致产品设计可能导致产品设计差;差;客户确定真正需求,客户确定真正需求,原型可能被弃。原型可能被
49、弃。客户或领客户或领域专家不域专家不熟悉电脑熟悉电脑/软件,软软件,软件人员不件人员不熟悉领域,熟悉领域,沟通理解沟通理解困难。困难。8.各种模型的比较各种模型的比较模 型描 述优 点缺 点应用场景增量模增量模型型分阶段实现,分阶段实现,软件增量设计,软件增量设计,实现,集成,实现,集成,测试;测试;整个产品拆成整个产品拆成多个构件,分多个构件,分次逐个构件,次逐个构件,交付可运行产交付可运行产品;品;功能驱动功能驱动(FunctionDriven)。)。反馈及时,反馈及时,较好适应变较好适应变化;化;客户看到不客户看到不断变化的软断变化的软件,降低开件,降低开发风险;发风险;鼓舞团队的鼓舞团
50、队的士气。士气。容易退化成边做边容易退化成边做边改,失去对软件过改,失去对软件过程的整体控制,效程的整体控制,效率低;率低;不破坏现有架构;不破坏现有架构;产品、架构不是开产品、架构不是开放的,维护难度加放的,维护难度加大。大。需求比较需求比较明确;明确;架构比较架构比较稳定,每稳定,每次增量不次增量不影响架构。影响架构。8.各种模型的比较各种模型的比较模型描述优点缺点应用场景螺旋螺旋模型模型分成计划、分成计划、评估、设计评估、设计实施、用户实施、用户反馈四个象反馈四个象限;限;沿着螺线进沿着螺线进行若干次迭行若干次迭代;代;关注风险,关注风险,风险分析之风险分析之后决策项目后决策项目是否继续