全套课件·《软件开发生命周期与统一建模语言UML》1.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《全套课件·《软件开发生命周期与统一建模语言UML》1.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件开发生命周期与统一建模语言UML 全套 课件 软件 开发 生命周期 统一 建模 语言 UML
- 资源描述:
-
1、软件开发生命周期与统一建模语言UML软件开发生命周期与统一建模语言UML软件开发生命周期与统一建模语言软件工程概述软件工程概述1结构化程序设计与面向对象程序设计结构化程序设计与面向对象程序设计 2统一建模语言与现代软件工程统一建模语言与现代软件工程 3用例图用例图 4静态模型静态模型 5软件开发生命周期与统一建模语言UML软件开发生命周期与统一建模语言动态模型动态模型 6UML实现与部署实现与部署 7新闻发布系统的实例新闻发布系统的实例 8Rational Rose简介简介 9软件开发生命周期与统一建模语言UML第1章 软件工程概述 1.1 用例概述 1.1.1 软件及其特点 1.1.2 软件
2、危机 1.1.3 软件工程的定义 1.1.4 软件工程的基本原理 1.2 软件开发生命周期 1.3 过程模型 1.3.1 常见的生命周期模型 1.3.2 生命周期模型的应用 1.4 软件工程方法学 软件开发生命周期与统一建模语言UML第1章 软件工程概述 教学要求 理解:软件和软件工程的概念;软件开发生命周期。掌握:软件过程模型运用的原则。软件开发生命周期与统一建模语言UML 软件开发是一个专业领域的人在为另一个专业领域的人服务 在软件开发过程中,需求可能经常在变,每次需求变化会带来软件系统的开发延迟,甚至出现变更反复,被推倒了的内容又要重新确立 在软件没有最终交付时,用户如何了解开发进展情况
3、 系统难以维护和扩展,经常重复开发类似的功能 项目经常延期,实际成本往往远远高于估计成本 开发团队内部使用了不同的技术,在交流时常常有障碍 如何应对软件开发过程中如何应对软件开发过程中的种种不确定因素,更有的种种不确定因素,更有效地开发与维护软件?效地开发与维护软件?1.1 软件、软件危机和软件工程的定义软件开发生命周期与统一建模语言UML1.1 软件、软件危机和软件工程的定义 软件与硬件软件与硬件软件开发生命周期与统一建模语言UML 软件的特点软件的特点 软件是脑力劳动的产品,但它不同于追求个性化的艺术作软件是脑力劳动的产品,但它不同于追求个性化的艺术作品;软件是产品,但它又不同于工业化生产
4、得到的有形产品;软件是产品,但它又不同于工业化生产得到的有形产品品 1.1 软件、软件危机和软件工程的定义软件开发生命周期与统一建模语言UML1.1 软件、软件危机和软件工程的定义软件的特点描述抽象性抽象性软件是一种逻辑实体而不是具体的物理实体,必须通过测试、分析、思考、判断来了解它的功能、性能及其他特性可复制性可复制性软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。一旦某一软件项目研制成功,以后就可以大量地复制同一内容的副本,即其研制成本远远大于其生产成本不会磨损不会磨损在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软件也会出现故障,软
5、件维护比硬件维护要复杂得多,与硬件的维修有着本质的差别依赖性依赖性软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问题,并且把软件的可移植性作为衡量软件质量的因素之一开发效率低开发效率低软件的开发尚未完全摆脱手工的方式,依然有大量重复性的劳动开发费用高开发费用高软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程中必不可少的内容软件开发生命周期与统一建模语言UML1.1 软件、软件危机和软件工程的定义 什么是软件软件=程序+数据+文档 数据包括初始化数据
6、、测试数据、研发数据、运行数据、维护数据,以及软件企业积累的项目工程数据和项目管理数据。文档是开发、使用和维护程序所需要的图文资料。软件开发生命周期与统一建模语言UML1.1 软件、软件危机和软件工程的定义 什么是软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 如何开发软件,以满足对软件日益增长的需求 如何维护数量不断增加的已有软件 软件开发生命周期与统一建模语言UML1.1 软件、软件危机和软件工程的定义消除软件危机的途径 正确认识软件。软件=程序+数据+文档 在软件开发的各个阶段都要有完备的文档。加强管理。软件开发应该是一种组织良好、管理严密、各类人员协同配合、
7、共同完成的工程项目,应该推广使用在实践中总结出来的开发软件的成功的技术和方法。使用软件工具。在软件开发的每个阶段都有许多烦琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。软件开发生命周期与统一建模语言UML1.1 软件、软件危机和软件工程的定义软件工程的定义 软件工程=管理+技术 软件工程的目标 在预算内如期完成(初级目标)良好的结构,较好的可维护性、扩展性、重用性(高级目标)软件开发生命周期与统一建模语言U
8、ML1.1 软件、软件危机和软件工程的定义软件工程的基本原理软件工程的基本原理(1)用分阶段的生命周期计划严格管理。)用分阶段的生命周期计划严格管理。统计发现,不成功的软件项目中有一半左右是由于计划不周造成的。因此,有必要制定完善的计划,分阶段地进行管理和控制。(2)坚持进行阶段评审。)坚持进行阶段评审。软件中的大部分错误是在编码之前造成的;错误发现与改正得越晚,所需付出的代价也就越高,如图1-4所示。因此,在每个阶段都进行严格的评审以尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。早中晚低中高变化出现的时期代价(3)实行严格的产品控制。)实行严格的产品控制。软件开发过程中,需求
9、的变更往往需要付出较高的代价,但这种改变又是难以避免的,因此不能硬性禁止客户提出改变需求的要求,而要依靠科学的产品控制技术来顺应这种要求,按照严格的规程进行变更控制。(4)采用现代程序设计技术。)采用现代程序设计技术。如“清晰第一、效率第二”的程序风格;面向对象的分析方法;各种框架技术的使用、模式的应用;软件建模方法的运用等。实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。(5)结果应能清楚地审查。)结果应能清楚地审查。软件是脑力劳动的逻辑产品,应该根据软件开发项目的总目标及完成期限规定开发组织的责任和产品标准,制定出完备的文档,从而提高其“可见性”。(6
10、)开发小组的人员应该少而精。)开发小组的人员应该少而精。(7)不断改进软件工程实践的经验和技术。)不断改进软件工程实践的经验和技术。软件开发生命周期与统一建模语言UML 改正同一错误付出的代价随时间变化的趋势早中晚早中晚低低中中高高变化出现的时期变化出现的时期代代价价1.1 软件、软件危机和软件工程的定义软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期 如何盖一栋大楼?软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期 1问题定义问题定义“要解决的问题是什么?要解决的问题是什么?”2可行性论证可行性论证“有行得通的解决办法吗?有行得通的解决
11、办法吗?”3需求分析需求分析“系统必须做什么?系统必须做什么?”4总体设计总体设计“概括地说,怎样做?概括地说,怎样做?”5详细设计详细设计“具体怎样做?具体怎样做?”6编码和单元测试编码和单元测试7综合测试综合测试8运行运行/维护维护软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期1问题定义“要解决的问题是什么?”通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期2可行性论证及软件计划“有行得通的解决办
12、法吗?”目的:用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。主要任务:了解客户的要求及现实环境,从技术、经济和社会因素三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步的项目开发计划。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期可行性论证及软件计划(续)具体步骤:(1)确定项目规模和目标。(2)研究正在运行的系统。(3)建立新系统的高层逻辑模型。(4)导出和评价各种方案。(5)推荐可行的方案。(6)编写可行性研究报告。系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程,研究问题的范围,探索这个问题是否值得去解决,
13、是否有可行的解决办法。如果可行,制定出初步的开发计划。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期3需求分析“系统必须做什么?”确定目标系统必须具备哪些功能。软件开发是一个专业领域的人在为另一个专业领域的人做事。用户了解他们所面对的问题,知道必须做什么,但是通常不能完整准确地表达出他们的要求,更不知道怎样利用计算机解决他们的问题;软件开发人员知道怎样用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。因此,系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出用户认可的各种模型。常用的有用例模型、活动图、顺序图、类图、数据流图、层次图等。需求分
14、析阶段的两个任务是捕获需求和分析整理需求。需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。这个阶段的一项重要任务是,用正式文档准确地记录对目标系统的需求,即规格说明书。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期4总体设计“概括地说,应该怎样做?”基本任务:(1)设计出实现目标系统的几种可能的方案。软件工程师用适当的表达工具描述每种方案,分析每种方案的优缺点,并在充分权衡各种方案的利弊的基础上推荐一个最佳方案。此外,还应该制定出实现最佳方案的详细计划。(2)设计软件体系结构。通常指划分模块,确定模块的功能及其相互之
15、间的调用关系,确定模块间的接口等。(3)数据库设计。(4)编写概要设计文档。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期5详细设计“具体怎样做?”总体设计阶段以比较抽象概括的方式提出了解决问题的办法,详细设计阶段的任务就是把解法具体化。这个阶段的任务不是编写程序,而是设计出程序的详细规格说明,这种规格说明应该包含必要的细节,程序员可以根据它们写出实际的程序代码。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期6编码和单元测试 关键任务:写出正确的、容易理解、容易维护的程序模块。程序员应该根据目标系统的性质和实际环境选取一种适当的程序设
16、计语言,把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期7综合测试 软件测试的目的是希望以最低代价尽可能多地找出软件中潜在的各种错误和缺陷。软件测试并不是在软件交付之后才开始,而应尽早地、不断地进行,贯穿于软件定义与开发的整个期间。例如,在需求分析和设计阶段就要尽可能地考虑到如何提高软件的可测试性。软件开发生命周期与统一建模语言UML1.2 软件开发生命周期软件开发生命周期8运行/维护 这一阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。软件开发生命周期与统一建模语言U
17、ML1.3 软件过程模型软件过程模型(软件生命周期模型)(软件生命周期模型)1瀑布模型瀑布模型 核心思想是阶段性的评审和验证,每一阶段结束时都要给出完整的文档。缺点是该模型缺乏灵活性,后一阶段出现的问题需要通过前一阶段的重新确认来解决。软件开发生命周期与统一建模语言UML 2原型模型原型模型 快速设计软件中对用户可见部分的表示,构造原型,快速设计软件中对用户可见部分的表示,构造原型,由用户评估,逐步调整原型,使之满足用户需要。由用户评估,逐步调整原型,使之满足用户需要。其优点是开发者和用户可以充分沟通,开发过程也是其优点是开发者和用户可以充分沟通,开发过程也是学习过程,可以低风险开发柔性较大的
18、计算机系统。学习过程,可以低风险开发柔性较大的计算机系统。1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML 3螺旋模型螺旋模型 把软件开发过程把软件开发过程组成为一个逐步组成为一个逐步细化的螺旋周期,细化的螺旋周期,每经历一个周期,每经历一个周期,系统就得到进一系统就得到进一步的细化和完善;步的细化和完善;整个模型紧密围整个模型紧密围绕开发中的风险绕开发中的风险分析,推动软件分析,推动软件设计向深层扩展设计向深层扩展和求精。该模型和求精。该模型要求开发人员与要求开发人员与用户能经常直接用户能经常直接进行交流,通常进行交流,通常用来指导
19、内部发用来指导内部发行的大型软件项行的大型软件项目的开发目的开发 1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML 4增量模型增量模型 一种渐近式的模一种渐近式的模型型 第一个增量构件往往实现软件的基本需求,提供最核心的功能 优点:能在较短的时间内,向用户提交可完成部分工作的产品;1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML 5迭代模型迭代模型 一种渐近式的模型,一种渐近式的模型,迭代模型与增量模型 假设现在要开发A、B、C、D四个大的业务功能,每个功能都需要开发两周的时
20、间。对于增量方法而言可以将四个功能分为两次增量来完成,第一个增量完成A、B功能,第二次增量完成C、D功能;而对于迭代开发来讲则是分两次迭代来开发,第一次迭代完成A、B、C、D四个基本业务功能,但不含复杂的业务逻辑,而第二次迭代再逐渐细化补充完整相关的业务逻辑。就对风险的消除上,增量和迭代模型都能够很好地控制前期的风险,但迭代模型在这方面更有优势。迭代模型可以更多地从总体方面思考系统问题,一开始就给出相对完善的框架或原型,后期的每次迭代都是针对上次迭代的逐步精化。1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML 6快速原型模型快速原型模
21、型 快速建立起可以在计算机上运行的程序,快速建立起可以在计算机上运行的程序,它所完成的功能往往是最终产品功能的一个子集。通过让用户试用,收集反馈意见,从而获取准确的需求。这是一种很好的启发式方法,可以快速地挖掘用户需求并达成需求理解上的一致。当用户没有信息系统的使用经验或系统分析员没有过多的需求分析和挖掘经验的时候,这种方法将非常有效。1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML 7喷泉模型喷泉模型 认为软件生命周期的各个阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,水既可以落在中间,也可以落在最底部。整个开发过程中都使用
22、统一的概念“对象”进行分析,使用统一的概念和符号表示分析设计过程,各阶段间没有明显的边界,即“无缝”衔接,因此各开发步骤可以多次反复迭代,逐步深化。1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML 8MSF过程模型过程模型 吸收了瀑布模型吸收了瀑布模型的里程碑和螺旋的里程碑和螺旋模型的反复迭代模型的反复迭代的思想的思想 分为5个阶段 每一阶段结束时都有明确的交付成果1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML生命周期模型的应用总体上说面向对象的程序设计采用的是喷泉喷泉模型
23、,但局部可以结合其它模型。在前期需求明确、资料完整的情况下尽量采用瀑布瀑布模型。在用户无信息系统使用经验,需求分析人员技能不足情况下要借助原原型型。在不确定性因素很多,很多东西前面无法计划的情况下尽量采用增量增量模型和螺旋模型。在需求不稳定情况下尽量采用增量迭代增量迭代模型。在资金和成本无法一次到位情况下可以采用增量增量模型,将产品分多个版本进行发布。增量、迭代和原型增量、迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付内容。总之,每个软件开发组织都应该根据所要开发的软件特点及本组织的特点,选择适合于自己的软件过程模型,把各种生命周期模型的特性有机地结合起来,充分利用它们的优点,回
24、避缺陷。1.3 软件过程模型软件过程模型(软件生命周(软件生命周期模型)期模型)软件开发生命周期与统一建模语言UML1.4 软件工程方法学软件工程方法学 研究如何通过分解和抽象,将复杂问题转化成一系列可以理解和实现的简单问题 软件开发生命周期与统一建模语言UML 面向过程的程序=算法+数据结构。面向对象的程序=对象+类+继承+消息通信。面向构件的程序=构件+架构。形式化方法是建立在严格的数学基础上,以逻辑推理为出发点,具有精确数学语义的开发方法。1.4 软件工程方法学软件工程方法学软件开发生命周期与统一建模语言UML本章本章小结小结 软件不仅仅是程序,软件=程序+数据+文档。软件工程是为了尽可
25、能消除软件危机的影响,克服软件缺乏“可见性”的缺点,借鉴工业化生产的成功经验,对软件产品的生产过程加以严格管理和控制的一门学科。它的最终目的是实现软件的工业化生产。传统软件工程将软件开发生命周期划分为问题定义、可行性分析、需求分析、概要设计、详细设计、编码、测试、运行维护8个阶段,每一阶段都有具体的任务和交付成果。软件过程模型指如何具体地组织衔接软件开发生命周期的各个阶段。常见的有瀑布模型、螺旋模型、喷泉模型等。中国水利水电出版社软件开发生命周期与统一建模语言UML第2章 结构化程序设计与面向对象程序设计 2.1 概述 2.2 结构化程序设计与面向对象程序设计 2.2.1 实例 2.2.2 面
展开阅读全文