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

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。