课件-UML系统建模与分析设计_第1页
课件-UML系统建模与分析设计_第2页
课件-UML系统建模与分析设计_第3页
课件-UML系统建模与分析设计_第4页
课件-UML系统建模与分析设计_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课件UML系统建模与分析设计课件UML系统建模与分析设计课程内容 本课程阐述基于UML的面向对象分析与设计的基本概念,详细介绍统一建模语言UML及其开发过程,以一个集成案例贯穿可行性研究、需求分析、系统分析与系统设计的全过程。使学生快速地掌握面向对象的系统分析、设计方法。课程内容 本课程阐述基于UML的面向对象分析与设计的基本概念教学目的:全面掌握采用面向对象的软件开发分析设计的基本步骤与方法.掌握软件开发工具ROSE的使用方法与技巧,使同学们能够掌握采用面向对象技术独立开发一个软件项目的过程和建模方法,对开发面向对象软件项目的过程有一个完整、全面地了解。 教学目的:全面掌握采用面向对象的软件

2、开发分析设计的基本步骤与课程学时、考核方式 课程学时(36学时)课堂讲授:20学时上机: 16学时考核方式分考试与报告和平时三部分。考试:闭卷考试 报告:课程设计报告 每个同学期末上交一个完整的采用面向对象技术进行软件开发的课程设计报告,根据报告的内容给出成绩。平时:出勤、作业 课程学时、考核方式 课程学时(36学时)教材和参考书:教材UML系统建模与分析设计机械工业出版社 刁成嘉UML基础与Rose建模教程人民邮电出版社 蔡敏UML和模式应用面向对象分析与设计导论1版机械工业出版社 CraigLarman著 姚淑珍译参考书UML系统建模与分析设计课程设计机械工业出版社 刁成嘉UML基础与Ro

3、se建模案例(第2版)人民邮电出版社 吴建教材和参考书:教材模型的三要素过程表示法工具 系统建模与分析设计是研究和应用如何以系统化、规范化和可度量的方法开发、运行和维护软件的一种层次化技术。包括过程、方法和工具三个要素。模型的三要素过程表示法工具 系统建模与分析设计是研究和 过程:将用户的需求转化成有效的软件解决方案的一系列活动。许多软件组织无法正确定义和控制这一过程,但这恰恰是组织改进的关键。 过程的好坏由结果状态与预期状态的差异决定,也就是目标成果质量的好坏。 软件过程是为了获得高质量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程必须科学、合理,才能开发出高

4、质量的软件产品。 软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合 过程:将用户的需求转化成有效的软件解决方案的一系列活什么是UML?统一建模语言(Unified Modeling Language,UML)是描述、构造和文档化系统的可视化语言。 作用: 建立软件模型 建模语言: 提供交流的词汇和规则 可视化: 通过标准图符构成图形来描述模型 建模语言而非编程语言 通用标准: 成为软件建模的标准语言,并且在其他领域也得到应用。 什么是UML?统一建模语言(Unified Modeling如何学习UML?按照某种过程进行分析、设计;用设计原则和模式进行

5、更好的设计;用UML表示法记录、辅助“工具”:用UML来表达OOA/DUML的意义就在于为OOA/D的实践规定了一致的表示法方法:运用OOA/D原则领域分析+职责分配过程:过程模型(活动套路,开发周期)用例驱动,以体系结构为中心,迭代增量式如何学习UML?按照某种过程进行分析、设计;用设计原则和模式 UML不是OOA/D,也不是方法,它仅仅只是一种图形表示法如果不掌握对象思想,那么UML或任何case工具(如ROSE)将毫无意义我们需要一种用于OOA/D的语言,这既是一种思考的工具,也是一种沟通的形式。因此,我们将在OOA/D中应用UML。如何应用UML进行OOA/D?如何将UML应用于UP过

6、程? UML不是OOA/D,也不是方法,它仅仅只是一种图形表示第一章 系统建模与分析设计技术的演变 2022/9/10UML系统建模与分析设计11本章目的:理解软件的基本概念和特点了解软件的发展过程及软件开发过程了解软件开发的方法掌握面向对象技术的基本概念及开发过程了解几种典型的面向对象方法第一章 系统建模与分析设计技术的演变 2022/9/3U1.1 软件的概念、特点和分类2022/9/10UML系统建模与分析设计121现代软件的概念和特点 (1)软件规模大。 (2)软件开发规范并趋于标准化。 (3)软件开发方法多,有大量的软件工具支持。 (4)注重软件开发的管理。 (5)软件维护相对过去容

7、易得多。1.1 软件的概念、特点和分类2022/9/3UML系统建2022/9/10UML系统建模与分析设计132软件的分类(1)按软件的功能划分 系统软件。 支撑软件。 应用软件。(2)按软件的规模划分 微型软件-不超过500行。 小型软件-2000行左右 中型软件-5000-50000行之间 大型甚至超大型软件-多个研发小组,甚至是成百上千人组成的开发团队。(3)按软件工作方式划分 实时处理软件。 分时软件。 交互式软件。 批处理软件。2022/9/3UML系统建模与分析设计152软件的分类2022/9/10UML系统建模与分析设计14(4)按软件服务对象的范围划分 项目软件。产品软件。(

8、5)按使用的频度划分一次性使用软件。使用频度较高的软件。(6)按软件失效的影响程度划分一般性软件。关键性软件。2022/9/3UML系统建模与分析设计16(4)按软件服务1.2软件的发展与软件工程2022/9/10UML系统建模与分析设计15软件工程的指导性原则: 变动的软件需求。稳妥的设计方法。高效的软件开发支持技术。有效的过程管理。软件工程具有里程碑意义的进展:结构化软件开发方法的工具。计算机辅助软件工程(CASE)。面向对象语言和方法成为主流的软件开发技术。1.2软件的发展与软件工程2022/9/3UML系统建模与软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一

9、系列相关过程的集合。早期:立项、需求分析、设计、编码、测试、交付、维护、退役软件过程是人类制作产物的一系列活动,而过去的软件工程师把产物和人分离,只研究产品过程及其质量,假定人力、物力资源是无限大、无限好。现在认识到面对实际资源实施软件过程学,求相对最佳质量才是有效的。又加入了:管理各种活动、质量保证环境基础设施配置、文档管理等。软件过程又称软件生存周期过程,是软件生存周期内为达1.3 软件开发模型的演变和生存周期2022/9/10UML系统建模与分析设计171.3.1 软件开发过程与模型的演变1. 瀑布模型(waterfall model)(1)慎重使用瀑布模型的情况:不能充分理解客户需求或

10、客户需求有可能迅速发生化;系统太大太复杂,不能一次做完所有的事;事先拟采用的技术迅速发生变化;提供的资源有限;无法利用各开发阶段的某一中间产品。1.3 软件开发模型的演变和生存周期2022/9/3UML1. 瀑布模型(waterfall model)计划阶段 问题定义及可行性研究1.3 软件开发模型的演变和生存周期1.3.1 软件开发过程与模型的演变1. 瀑布模型(waterfall model)计划阶段 问瀑布模型的特点文档驱动的模型 阶段间具有顺序性和依赖性推迟实现的观点质量保证的观点瀑布模型的特点文档驱动的模型 瀑布模型的问题实际项目很少按照该模型给出的顺序进行用户常常一开始难以清楚地给

11、出所有需求用户必须有耐心等待一个漫长无反馈的交付开发者常常被不必要地耽搁瀑布模型的问题实际项目很少按照该模型给出的顺序进行(1)慎重使用瀑布模型的情况:不能充分理解客户需求或客户需求有可能迅速发生化;系统太大太复杂,不能一次做完所有的事;事先拟采用的技术迅速发生变化;提供的资源有限;无法利用各开发阶段的某一中间产品。(2)使用瀑布模型的情况:系统所有的功能、性能要求客户可以一次性准确交付时;必须是首次开发的新系统并且淘汰全部老系统时。课件UML系统建模与分析设计2. 渐增模型(incremental model)由一组有计划的、循环渐增的、不断改进的过程版本组成。各个中间版本可以并行开发。2.

12、 渐增模型(incremental model)由一组有例如,使用增量模型开发字处理软件基本的文件管理、编辑和文档生成功能。更完善的编辑和文档生成能力。实现拼写和文法检查功能。完成高级的页面布局功能。第一个增量往往是核心产品每一个增量均发布一个可操作产品早期的增量是最终产品的“可拆卸”版本例如,使用增量模型开发字处理软件2022/9/10UML系统建模与分析设计24(1)慎重考虑使用渐增模型的情况:不能充分理解客户需求或客户需求有可能迅速发生变化;事先拟采用的技术迅速发生变化;客户突然提出一些新的功能需求;长时期内仅有有限的资源保证(开发人员和资金)。2022/9/3UML系统建模与分析设计2

13、62022/9/10UML系统建模与分析设计25使用渐增模型的情况:需要在尽短的时间内得到系统基本功能的演示或使用;各版本都有中间阶段产品可提供使用;系统可以被自然地分割成渐增的模式;开发人员与资金可以逐步增加。2022/9/3UML系统建模与分析设计27使用渐增模型的情2022/9/10UML系统建模与分析设计263. 演化模型(evolutionary model)演化模型也称为原型(prototype)法模型。快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。 2022/9/3UML系统建模与分析设计283. 演化模型(原型模型的适用情况用户定

14、义了一组一般性目标,但不能标识出详细的输入、处理及输出需求;开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式;原型模型的适用情况用户定义了一组一般性目标,但不能标识出详细使用演化模型时应注意 演化模型也是通过系统各个可执行的中间版本以渐增的形式来开发系统的,但是客户需求可以分步逐渐了解,不用在初始时就确定。在模型中,可以预先定义一部分客户需求,然后在每个后继的中间版本中再逐步增加需求,一点点完善。在开发每个中间版本时,开发过程中的活动和任务可以顺序地或部分重叠平行地被加入到这些中间版本中。使用演化模型时应注意 演化模型也是通过系统各个可执行4. 螺旋模型(spiral mode

15、l)需求分析验证规格说明验证设计验证编码测试综合测试维护变化的需求验证风险分析风险分析风险分析风险分析风险分析风险分析螺旋模型-简化:使用原型及其他方法来尽量降低风险。4. 螺旋模型(spiral model)需求分析验证规格说螺旋模型决定目标、方案和限制评价方案、识别风险、弱化风险开发、验证、下一级产品计划下一阶段集成测试螺旋模型将瀑布模型与快速原形模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。 螺旋模型决定目标、评价方案、开发、验证、集成螺旋模型将瀑布优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质

16、量作为软件开发的一个重要目标;减少了过多测试或测试不足;维护和开发之间并没有本质区别。特点风险驱动的主要适用于内部开发的大规模软件项目优点2022/9/10UML系统建模与分析设计325 . 智能模型(intelligent model)2022/9/3UML系统建模与分析设计345 . 智能模型6.RUP现在软件产业界普遍认为,开发复杂软件项目必须采用基于UML的、以构架为中心、用例驱动与风险驱动相结合的迭代式增量开发过程,他是世界公认的开发复杂软件项目的最好过程,已经成为软件界的“圣经”。这一开发过程目前已经稳定、成熟。这就是:RUP (Rational Unified Process),

17、统一软件开发过程 6.RUP现在软件产业界普遍认为,开发复杂软件项目必须采用基2022/9/10UML系统建模与分析设计341.3.2 软件开发模型的选择 要综合考虑以下几个因素: (1)软件规模 (2)软件类型 系统软件的开发。实时软件的开发。商业应用软件的开发。嵌入式软件的开发。人工智能软件的开发。2022/9/3UML系统建模与分析设计361.3.2 软2022/9/10UML系统建模与分析设计35(3)软件质量要求(4)交付工期(5)客户需求明确度(6)投资(7)可复用性(8)开发者掌握的资源2022/9/3UML系统建模与分析设计372022/9/10UML系统建模与分析设计361.

18、3.3 软件生存周期2022/9/3UML系统建模与分析设计381.3.3 软2022/9/10UML系统建模与分析设计37软件定义(1)软件系统的可行性研究-确定开发软件开发系统的总目标,给出功能、性能、可靠性和接口等方面的要求。 1)经济可行性研究-成本效益分析。 2)技术可行性研究-技术风险评价。 3)法律可行性研究-可能导致的任何侵权、社会安全。 4)方案的选择-评价候选方案。 形成可行性研究报告 项目背景、管理概要、候选方案、系统描述、经济可行性、法律可行性,用户使用可行性等。2022/9/3UML系统建模与分析设计39软件定义(2)需求分析-为设计做准备 ,即对开发软件提出的需求进

19、行分析并给出详细的定义。给出软件需求说明书和系统功能说明书。 1)任务-确定待开发软件的功能,性能需求和运行环境约束,编制软件需求规格说明、软件系统的确认测试准则和用户手册概要。 软件功能需求: 软件性能需求: 软件系统运行环境: 2)按需求建模。 3)软件需求规格说明(Software Requirements Specification,简称SRS)-指明软件系统的功能需求、性能需求、接口需求、设计需求、基本结构以及开发标准和验收原则。(2)需求分析-为设计做准备 ,即对开发软件提出的需求进行分2022/9/10UML系统建模与分析设计39软件开发软件开发阶段:概要设计、详细设计、实现、组

20、装测试和确认测试五个阶段组成。软件开发是软件需求规格说明由抽象到具体并逐步生成软件的过程。(1)概要设计-确立模块和需求的对应建立系统总体结构和各模块之间的关系;定义各个功能模块的接口;设计全局数据库或数据结构;规定设计约束;制定组装测试计划。(2)详细设计对概要设计模块进行细化,形成可编程的程序模块;建立文档资料。2022/9/3UML系统建模与分析设计41软件开发2022/9/10UML系统建模与分析设计40(3)实现选择合适的编程语言;制定测试方案、测试案例;保存文档资料。(4)组装测试(5)确认测试2022/9/3UML系统建模与分析设计42(3)实现3软件使用、维护和更新换代(1)软

21、件使用(2)系统维护(3)系统更新换代3软件使用、维护和更新换代(1)软件使用1.4 软件开发方法简介2022/9/10UML系统建模与分析设计42程序设计方法:1. 结构化程序设计方法其控制结构仅由顺序、选择与重复等有限的基本控制结构表示。2. 模块化程序设计方法模块之间的接口应尽可能简明清晰: 单独模块的修改不影响其它模块的功能;模块化应具有可修改性、易读性和可验证性。3. 面向对象程序设计方法1.4 软件开发方法简介2022/9/3UML系统建模与分1.4.1 结构化软件开发方法是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。结构化方法总的指导思想自顶向下、逐

22、步求精。它的基本原则是功能的分解与抽象。结构化开发方法的组成 结构化程序设计方法 SP法(Structured Program) 结构化设计方法 SD法(Structured Design) 结构化分析方法 SA法(Structured Analysis) SA,SD,SP 法相互衔接,形成了一整套开发方法。1.4.1 结构化软件开发方法是现有的软件开发方法中最成熟2022/9/10UML系统建模与分析设计44 1结构化分析的步骤 构造数据流模型。构建控制流模型。生成数据字典(DD)。生成可选方案,建立需求规约。2022/9/3UML系统建模与分析设计462022/9/10UML系统建模与分析

23、设计452结构化设计步骤首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程。然后根据数据流图决定问题的类型。由数据流图推导出系统的初始结构图。优化软件结构。描述模块接口。修改和补充数据词典。制定测试计划。2022/9/3UML系统建模与分析设计472结构化设计步1.4.2 模块化软件开发方法 (1)模块可分解性。(2)模块可组装性。(3)模块可理解性。(4)模块连续性。(5)模块保护。1.4.2 模块化软件开发方法 (1)模块可分解性。2022/9/10UML系统建模与分析设计471.4.3 面向数据结构软件开发方法1建立JSD( Jackson System Devel

24、opment)的系统进程模型2JSD方法的步骤(1)JSD需求分析步骤标识系统中的实体与相应动作;生成实体结构图;初建系统模型。(2)JSD系统设计步骤扩充功能过程。系统定时。系统实现。2022/9/3UML系统建模与分析设计491.4.3 面2022/9/10UML系统建模与分析设计48面向数据结构的开发方法的特点:将分析结果作为设计基础,无明显分界;都必须标识关键实体和动作;信息具有层次性;提供一组将层次化的数据结构映射到程序结构的步骤;数据结构由顺序、选择和重复3种构造成分表示。2022/9/3UML系统建模与分析设计50面向数据结构的2022/9/10UML系统建模与分析设计491.4

25、.3 面向对象软件开发方法面向对象方法的意义:(1)一种新的思考方式。(2)将数据和行为结合成为对象。(3)核心是封装。(4)面向对象方法建立的基础是:软件工程概念;计算机科学概念;工程管理;数据库信息模型;传统软件开发方法。2022/9/3UML系统建模与分析设计511.4.3 面2022/9/10UML系统建模与分析设计50面向对象方法有几十种,综合起来,其基本观点如下:现实客观世界由对象组成。相同的数据和操作的对象归并为类。类可以继承。对象之间通过消息进行联系。面向对象 = 对象 + 类 + 继承 + 通信2022/9/3UML系统建模与分析设计52面向对象方法有2022/9/10UML

26、系统建模与分析设计511.4.4 软件开发方法的评价与选择综合考虑以下几方面因素:人员素质。时间进度。掌握资源。可行性。领域知识。从四个方面评价:技术特征。使用特征。管理特征。经济特征。2022/9/3UML系统建模与分析设计531.4.4 软1.5 面向对象软件开发方法简介2022/9/10UML系统建模与分析设计52特点:(1)使人们更好地认识客观世界(2)能很好地适应需求变化(3)容易实现软件复用(4)系统易于维护和修改1.5 面向对象软件开发方法简介2022/9/3UML系统1.5.1 面向对象的基本概念封装性、继承性和多态性对象类抽象封装消息传递继承多态性1.5.1 面向对象的基本概

27、念封装性、继承性和多态性1.重要的面向对象概念类和对象在客观世界中,有一些对象具有相同的特征,将他们称之为同类对象。于是出现了类的概念。1.重要的面向对象概念类和对象在客观世界中,有一些对象具“面向对象”运用到软件中面向对象软件工程(OOA/OOD/OOP)利用这种“面向对象”认知的世界观来进行软件开发。程序由类和对象组成。class TreeTree aTree = new Tree();“面向对象”运用到软件中面向对象软件工程(OOA/OOD类的作用:分类:用于区分不同事物。是创建对象的模板:产生对象。类的作用:分类:用于区分不同事物。课件UML系统建模与分析设计2.怎么得到类和对象?抽象

28、把事物共同点抽取出来,以统一的方式进行概要描述的过程;从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征; 过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作。2.怎么得到类和对象?抽象把事物共同点抽取出来,以统一的是不是现实世界中类的所有属性和方法都需要在系统中进行抽象呢?当然不是啦!作为一个分析人员,要根据用户实际的业务情况进行选择。例如:在课堂考勤系统中,教师类只需要有姓名、职称、性别这些属性,因为这些是用户需要的。而在教职工人事管理系统中,教师类就需要姓名、出生年月、入职时间、所属单位、职称、性别、婚姻状况等属性。1.从许多事物中舍弃个别的、非本质的特征,抽取共同的

29、、本质性的特征; 2.过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作。是不是现实世界中类的所有属性和方法都需要在系统中进行抽象呢?引入问题:现在让我们来编写一个java小程序,实现在命令行模式下输出以下形式的著名诗词春晓,你会怎么做?* 春晓* 春眠不觉晓,* 处处闻啼鸟。* 夜来风雨声,* 花落知多少。3. 信息隐蔽和局部化封装让对象细节受到保护封装引入问题:现在让我们来编写一个java小程序,实现在命令行你可能会这么写public class ChunXiao1public static void main(String args)System.out.println(* 春晓

30、);System.out.println(* 春眠不觉晓,);System.out.println(* 处处闻啼鸟。);System.out.println(* 夜来风雨声,);System.out.println(* 花落知多少。);很简单,但是有时候并不是越简单越好!现在,如果想把*改变为*,该怎么办?改5次吗? 【代码】 Chunxiao1.java你可能会这么写public class ChunXiao1你可能还会这么写public class ChunXiao2public String buildStar()return *;public static void main(Stri

31、ng args)ChunXiao2 c=new ChunXiao2();System.out.println(c.buildStar()+ 春晓);System.out.println(c.buildStar()+ 春眠不觉晓,);System.out.println(c.buildStar()+ 处处闻啼鸟。);System.out.println(c.buildStar()+ 夜来风雨声,);System.out.println(c.buildStar()+ 花落知多少。);利用方法buildStar()来产生,这样每次只用修改一个地方了我们把产生的功能封装了起来,对外界使用者来讲,不需要

32、知道方法内部的细节,只需要知道调用这个方法可以产生就行了。【代码】 Chunxiao2.java你可能还会这么写public class ChunXiao2让对象细节受到保护封装当一个对象执行自己的操作时。它对外界隐藏了操作的细节。封装可以提高重用性,并且让程序易于维护让对象细节受到保护封装当一个对象执行自己的操作时。它对外封装的程度问题还是春晓。刚才我们将产生*的方法写在了类ChunXiao2中,根据前面所讲,类中的方法代表的是类的操作,而产生*和春晓没有直接关系,这样的封装看起来好像不合理,怎么改进一下呢 ?StarFactoryString build()ChunXiao3【代码】Sta

33、rFactory.java Chunxiao3.java封装的程度问题还是春晓。刚才我们将产生*的方法写在了类public class StarFactorypublic String build()return *;public class ChunXiao3public static void main(String args)StarFactory strFac = new StarFactory();System.out.println(strFac.build()+ 春晓);System.out.println(strFac.build()+ 春眠不觉晓,);System.out.p

34、rintln(strFac.build()+ 处处闻啼鸟。);System.out.println(strFac.build()+ 夜来风雨声,);System.out.println(strFac.build()+ 花落知多少。);【代码】StarFactory.java Chunxiao3.javapublic class StarFactory【代码】S封装的不同,重用也不同了现在我们不仅可以在春晓里面用*了,还可以在静夜思 里面用*了StarFactoryString build()ChunXiao3JingYeSi【代码】 JingYeSi.java封装的不同,重用也不同了现在我们不仅可以在春晓里面用*public class JingYeSipublic static void main(String args)StarFactory strFac = new StarFactory();System.out.println(strFac.build()+ 静夜思);System.out.println(strFac.build()+ 床前明月光,);Sys

温馨提示

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

评论

0/150

提交评论