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

下载本文档

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

文档简介

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

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

3、面向对象分析与设计导论和模式应用面向对象分析与设计导论1版机械工版机械工业出版社业出版社 CraigLarman著著 姚淑珍译姚淑珍译参考书参考书UML系统建模与分析设计课程设计系统建模与分析设计课程设计机械工业出版社机械工业出版社 刁成嘉刁成嘉UML基础与基础与Rose建模案例建模案例(第第2版版)人民邮电出版社人民邮电出版社 吴吴建建过程过程表示法表示法工具工具 系统建模与分析设计是研究和应用如何以系统化、规范化和可度量的方法开发、运行和维护软件的一种层次化技术。包括过程、方法和工具三个要素。 过程:将用户的需求转化成有效的软件解决方案的一系列活动。许多软件组织无法正确定义和控制这一过程,

4、但这恰恰是组织改进的关键。 过程的好坏由结果状态与预期状态的差异决定,也就是目标成果质量的好坏。 软件过程是为了获得高质量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程必须科学、合理,才能开发出高质量的软件产品。 软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合什么是什么是UML? ?统一建模语言(Unified Modeling Language,UML)是描述、构造和文档化系统的语言。 作用: 建立软件模型 建模语言: 提供交流的词汇和规则 可视化: 通过标准图符构成图形来描述模型 建模语言而非编程语言 通用标准:

5、 成为软件建模的标准语言,并且在其他领域也得到应用。 如何学习如何学习UML?按照某种过程进行分析、设计;用设计原则和模式进行更好的设计;用UML表示法记录、辅助“工具工具”:用:用UML来表达来表达OOA/DUML的意义就在于为的意义就在于为OOA/D的实践规定了一致的表示法的实践规定了一致的表示法方法方法:运用:运用OOA/D原则领域分析原则领域分析+职责分配职责分配过程过程:过程模型(活动套路,开发周期):过程模型(活动套路,开发周期)用例驱动,以体系结构为中心,迭代增量式用例驱动,以体系结构为中心,迭代增量式 vUML不是OOA/D,也不是方法,它仅仅只是一种图形表示法v如果不掌握对象

6、思想,那么UML或任何case工具(如ROSE)将毫无意义v我们需要一种用于OOA/D的语言,这既是一种思考的工具,也是一种沟通的形式。因此,我们将在OOA/D中应用UML。如何应用如何应用UML进行进行OOA/D?如何将如何将UML应用于应用于UP过程?过程?第一章第一章 系统建模与分析设计技术的演变系统建模与分析设计技术的演变 11本章目的:v理解软件的基本概念和特点v了解软件的发展过程及软件开发过程v了解软件开发的方法v掌握面向对象技术的基本概念及开发过程v了解几种典型的面向对象方法1.1 1.1 软件的概念、特点和分类软件的概念、特点和分类121现代软件的概念和特点 (1)软件规模大。

7、 (2)软件开发规范并趋于标准化。 (3)软件开发方法多,有大量的软件工具支持。 (4)注重软件开发的管理。 (5)软件维护相对过去容易得多。132软件的分类(1)按软件的功能划分 系统软件。 支撑软件。 应用软件。(2)按软件的规模划分 微型软件-不超过500行。 小型软件-2000行左右 中型软件-5000-50000行之间 大型甚至超大型软件-多个研发小组,甚至是成百上千人组成的开发团队。(3)按软件工作方式划分 实时处理软件。 分时软件。 交互式软件。 批处理软件。14(4)按软件服务对象的范围划分 项目软件。产品软件。(5)按使用的频度划分一次性使用软件。使用频度较高的软件。(6)按

8、软件失效的影响程度划分一般性软件。关键性软件。1.21.2软件的发展与软件工程软件的发展与软件工程15软件工程的指导性原则: 变动的软件需求。稳妥的设计方法。高效的软件开发支持技术。有效的过程管理。软件工程具有里程碑意义的进展:结构化软件开发方法的工具。计算机辅助软件工程(CASE)。面向对象语言和方法成为主流的软件开发技术。v 软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合。早期:立项、需求分析、设计、编码、测试、交付、维护、退役v 软件过程是人类制作产物的一系列活动,而过去的软件工程师把产物和人分离,只研究产品过程及其质量,假定人力、物力资源是

9、无限大、无限好。现在认识到面对实际资源实施软件过程学,求相对最佳质量才是有效的。又加入了:管理各种活动、质量保证环境基础设施配置、文档管理等。1.3 1.3 软件开发模型的演变和生存周期软件开发模型的演变和生存周期171.3.1 软件开发过程与模型的演变1. 瀑布模型(waterfall model)(1)慎重使用瀑布模型的情况:v 不能充分理解客户需求或客户需求有可能迅速发生化;v 系统太大太复杂,不能一次做完所有的事;v 事先拟采用的技术迅速发生变化;v 提供的资源有限;v 无法利用各开发阶段的某一中间产品。1. 1. 瀑布模型(瀑布模型(waterfall modelwaterfall

10、model)计划阶段计划阶段 问题定义及可行性研究问题定义及可行性研究1.3 1.3 软件开发模型的演变和生存周期软件开发模型的演变和生存周期1.3.1 软件开发过程与模型的演变瀑布模型的特点瀑布模型的特点v文档驱动的模型 v阶段间具有顺序性和依赖性v推迟实现的观点v质量保证的观点瀑布模型的问题瀑布模型的问题v实际项目很少按照该模型给出的顺序进行v用户常常一开始难以清楚地给出所有需求v用户必须有耐心等待一个漫长无反馈的交付v开发者常常被不必要地耽搁(1)慎重使用瀑布模型的情况:v 不能充分理解客户需求或客户需求有可能迅速发生化;v 系统太大太复杂,不能一次做完所有的事;v 事先拟采用的技术迅速

11、发生变化;v 提供的资源有限;v 无法利用各开发阶段的某一中间产品。(2)使用瀑布模型的情况:v 系统所有的功能、性能要求客户可以一次性准确交付时;v 必须是首次开发的新系统并且淘汰全部老系统时。2. 渐增模型(incremental model)由一组有计划的、循环渐增的、不断改进的过程版本组成。各个中间版本可以并行开发。v 例如,使用增量模型开发字处理软件n基本的文件管理、编辑和文档生成功能。n更完善的编辑和文档生成能力。n实现拼写和文法检查功能。n完成高级的页面布局功能。v 第一个增量往往是核心产品v 每一个增量均发布一个可操作产品v 早期的增量是最终产品的“可拆卸”版本24(1)慎重考

12、虑使用渐增模型的情况:v 不能充分理解客户需求或客户需求有可能迅速发生变化;v 事先拟采用的技术迅速发生变化;v 客户突然提出一些新的功能需求;v 长时期内仅有有限的资源保证(开发人员和资金)。25使用渐增模型的情况:v 需要在尽短的时间内得到系统基本功能的演示或使用;v 各版本都有中间阶段产品可提供使用;v 系统可以被自然地分割成渐增的模式;v 开发人员与资金可以逐步增加。263. 演化模型(evolutionary model)演化模型也称为原型(prototype)法模型。v快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。 原型模型的适用情况

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

14、险分析风险分析风险分析螺旋模型螺旋模型-简化:使用原型及其他方法来尽量降低风险。简化:使用原型及其他方法来尽量降低风险。螺螺旋旋模模型型决定目标、决定目标、方案和限制方案和限制评价方案、评价方案、识别风险、识别风险、弱化风险弱化风险开发、验证、开发、验证、下一级产品下一级产品 计划下一阶段计划下一阶段集成测试螺旋模型将螺旋模型将瀑布模型与快速原形瀑布模型与快速原形模型结合起来,并且加入两种模型均忽略了的风险分模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。析。螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本

15、。 v优点n对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;n减少了过多测试或测试不足;n维护和开发之间并没有本质区别。v特点n风险驱动的v主要适用于内部开发的大规模软件项目325 . 智能模型(intelligent model)6.RUPv现在软件产业界普遍认为,开发复杂软件项目必须采用基于UML的、以构架为中心、用例驱动与风险驱动相结合的迭代式增量开发过程,他是世界公认的开发复杂软件项目的最好过程,已经成为软件界的“圣经”。这一开发过程目前已经稳定、成熟。v这就是:RUP (Rational Unified Process),统一软件开发过程

16、 341.3.2 软件开发模型的选择 要综合考虑以下几个因素: (1)软件规模 (2)软件类型 n系统软件的开发。系统软件的开发。n实时软件的开发。实时软件的开发。n商业应用软件的开发。商业应用软件的开发。n嵌入式软件的开发。嵌入式软件的开发。n人工智能软件的开发。人工智能软件的开发。35(3)软件质量要求(4)交付工期(5)客户需求明确度(6)投资(7)可复用性(8)开发者掌握的资源361.3.3 软件生存周期37软件定义(1)软件系统的可行性研究-确定开发软件开发系统的总目标,给出功能、性能、可靠性和接口等方面的要求。 1)经济可行性研究-成本效益分析。 2)技术可行性研究-技术风险评价。

17、 3)法律可行性研究-可能导致的任何侵权、社会安全。 4)方案的选择-评价候选方案。 形成可行性研究报告 项目背景、管理概要、候选方案、系统描述、经济可行性、法律可行性,用户使用可行性等。(2)需求分析-为设计做准备 ,即对开发软件提出的需求进行分析并给出详细的定义。给出软件需求说明书和系统功能说明书。 1)任务-确定待开发软件的功能,性能需求和运行环境约束,编制软件需求规格说明、软件系统的确认测试准则和用户手册概要。 软件功能需求: 软件性能需求: 软件系统运行环境: 2)按需求建模。 3)软件需求规格说明(Software Requirements Specification,简称SRS)

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

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

20、ed Program) 结构化设计方法 SD法(Structured Design) 结构化分析方法 SA法(Structured Analysis) SA,SD,SP 法相互衔接,形成了一整套开发方法。44 1结构化分析的步骤 构造数据流模型。构建控制流模型。生成数据字典(DD)。生成可选方案,建立需求规约。452结构化设计步骤v首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程。v然后根据数据流图决定问题的类型。v由数据流图推导出系统的初始结构图。v优化软件结构。v描述模块接口。v修改和补充数据词典。v制定测试计划。1.4.2 模块化软件开发方法 (1)模块可分解性。

21、(2)模块可组装性。(3)模块可理解性。(4)模块连续性。(5)模块保护。471.4.3 面向数据结构软件开发方法1建立JSD( Jackson System Development)的系统进程模型2JSD方法的步骤(1)JSD需求分析步骤标识系统中的实体与相应动作;生成实体结构图;初建系统模型。(2)JSD系统设计步骤扩充功能过程。系统定时。系统实现。48面向数据结构的开发方法的特点:v将分析结果作为设计基础,无明显分界;v都必须标识关键实体和动作;v信息具有层次性;v提供一组将层次化的数据结构映射到程序结构的步骤;v数据结构由顺序、选择和重复3种构造成分表示。491.4.3 面向对象软件开

22、发方法面向对象方法的意义:(1)一种新的思考方式。(2)将数据和行为结合成为对象。(3)核心是封装。(4)面向对象方法建立的基础是:n软件工程概念;软件工程概念;n计算机科学概念;计算机科学概念;n工程管理;工程管理;n数据库信息模型;数据库信息模型;n传统软件开发方法传统软件开发方法。50面向对象方法有几十种,综合起来,其基本观点如下:v现实客观世界由对象组成。v相同的数据和操作的对象归并为类。v类可以继承。v对象之间通过消息进行联系。面向对象 = 对象 + 类 + 继承 + 通信511.4.4 软件开发方法的评价与选择综合考虑以下几方面因素:v人员素质。v时间进度。v掌握资源。v可行性。v

23、领域知识。从四个方面评价:v技术特征。v使用特征。v管理特征。v经济特征。1.5 1.5 面向对象软件开发方法简介面向对象软件开发方法简介52特点:(1)使人们更好地认识客观世界(2)能很好地适应需求变化(3)容易实现软件复用(4)系统易于维护和修改1.5.1 1.5.1 面向对象的基本概念面向对象的基本概念封装性、继承性和多态性v对象v类v抽象v封装v消息传递v继承v多态性1.重要的面向对象概念重要的面向对象概念类和对象类和对象v在客观世界中,有一些对象具有相同的特征,将在客观世界中,有一些对象具有相同的特征,将他们称之为同类对象。于是出现了他们称之为同类对象。于是出现了类类的概念。的概念。

24、“面向对象面向对象”运用到软件中运用到软件中面向对象软件工程面向对象软件工程(OOA/OOD/OOP)v利用这种利用这种“面向对象面向对象”认知的世界观来进行软件认知的世界观来进行软件开发。程序由类和对象组成。开发。程序由类和对象组成。class TreeTree aTree = new Tree();类的作用:类的作用:1. 分类分类:用于区分不同事物。用于区分不同事物。2. 是创建对象的模板:产生对象。是创建对象的模板:产生对象。2.怎么得到类和对象?怎么得到类和对象?抽象抽象v把事物共同点抽取出来把事物共同点抽取出来,以统一的方式进行概要描以统一的方式进行概要描述的过程;述的过程;v从许

25、多事物中舍弃个别的、非本质的特征,抽取从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性共同的、本质性的特征;的特征; v过滤掉对象的一部分特征和操作直到只剩下过滤掉对象的一部分特征和操作直到只剩下你所你所需要的需要的属性和操作。属性和操作。是不是现实世界中类的所有属性和方是不是现实世界中类的所有属性和方法都需要在系统中进行抽象呢?法都需要在系统中进行抽象呢?v 当然不是啦!作为一个分析人员,要根据用户实际的业务当然不是啦!作为一个分析人员,要根据用户实际的业务情况进行选择。情况进行选择。v 例如:在例如:在课堂考勤系统课堂考勤系统中,教师类只需要有姓名、职中,教师类只需要有姓名、职称、

26、性别这些属性,因为这些是用户需要的。称、性别这些属性,因为这些是用户需要的。v 而在而在教职工人事管理系统教职工人事管理系统中,教师类就需要姓名、出中,教师类就需要姓名、出生年月、入职时间、所属单位、职称、性别、婚姻状况等生年月、入职时间、所属单位、职称、性别、婚姻状况等属性。属性。1.从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征; 2.过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作。v引入问题:现在让我们来编写一个引入问题:现在让我们来编写一个java小程序,小程序,实现在命令行模式下输出以下形式的著名诗词实现在命令行模式下输出以下形式的著名诗词春晓春晓,你会怎

27、么做?,你会怎么做?* 春晓* 春眠不觉晓,* 处处闻啼鸟。* 夜来风雨声,* 花落知多少。3. 3. 信息隐蔽和局部化信息隐蔽和局部化封装封装让对象细节受到保护让对象细节受到保护封装封装你可能会这么写你可能会这么写1. public class ChunXiao12. public static void main(String args)3. System.out.println(* 春晓春晓);4. System.out.println(* 春眠不觉晓,春眠不觉晓,);5. System.out.println(* 处处闻啼鸟。处处闻啼鸟。);6. System.out.println(

28、* 夜来风雨声,夜来风雨声,);7. System.out.println(* 花落知多少。花落知多少。);8. 9. 很简单,但是有时候并不是越简单越好!现在,如果想把*改变为*,该怎么办?改5次吗? 【代码】 Chunxiao1.java你可能还会这么写你可能还会这么写v public class ChunXiao2v public String buildStar()vreturn *;v v public static void main(String args)v ChunXiao2 c=new ChunXiao2();v System.out.println(c.buildStar

29、()+ 春晓春晓);v System.out.println(c.buildStar()+ 春眠不觉晓,春眠不觉晓,);v System.out.println(c.buildStar()+ 处处闻啼鸟。处处闻啼鸟。);v System.out.println(c.buildStar()+ 夜来风雨声,夜来风雨声,);v System.out.println(c.buildStar()+ 花落知多少。花落知多少。);v v 利用方法buildStar()来产生,这样每次只用修改一个地方了我们把产生的功能封装封装了起来,对外界使用者来讲,不需要知道方法内部的细节,只需要知道调用这个方法可以产生就

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

31、【代码】StarFactory.java Chunxiao3.javav public class StarFactoryvpublic String build()vreturn *;vv v public class ChunXiao3vpublic static void main(String args)vvStarFactory strFac = new StarFactory();vSystem.out.println(strFac.build()+ 春晓春晓);System.out.println(strFac.build()+ 春眠不觉晓,春眠不觉晓,);System.out.

32、println(strFac.build()+ 处处闻啼鸟。处处闻啼鸟。);System.out.println(strFac.build()+ 夜来风雨声,夜来风雨声,);System.out.println(strFac.build()+ 花落知多少。花落知多少。);v 【代码】StarFactory.java Chunxiao3.java封装的不同,重用也不同了封装的不同,重用也不同了v现在我们不仅可以在现在我们不仅可以在春晓春晓里面用里面用*了,还可了,还可以在以在静夜思静夜思 里面用里面用*了了StarFactoryStarFactoryString build()String bu

33、ild()ChunXiao3JingYeSi【代码】 JingYeSi.javav public class JingYeSivpublic static void main(String args)vvStarFactory strFac = new StarFactory();vSystem.out.println(strFac.build()+ 静夜思静夜思);vSystem.out.println(strFac.build()+ 床前明月光,床前明月光,);vSystem.out.println(strFac.build()+ 疑是地上霜。疑是地上霜。);vSystem.out.println(strFac.build()+ 举头望明月,举头望明月,);vSystem.out.println(strFac.build()+ 低

温馨提示

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

评论

0/150

提交评论