1、2022-6-9UML系统建模与分析设计1UMLUML系统建模系统建模 与分析设计与分析设计刁成嘉编著刁成嘉编著 2007年年9月月课件课件2022-6-9UML系统建模与分析设计2第一章第一章系统建模与分析设计技术的演变系统建模与分析设计技术的演变 本章目的:本章目的:理解软件的基本概念和特点理解软件的基本概念和特点了解软件的发展过程及软件开发过程了解软件的发展过程及软件开发过程了解软件开发的方法了解软件开发的方法掌握面向对象技术的基本概念及开发过程掌握面向对象技术的基本概念及开发过程了解几种典型的面向对象方法了解几种典型的面向对象方法2022-6-9UML系统建模与分析设计31.1 1.1
2、 软件的概念、特点和分类软件的概念、特点和分类1现代软件的概念和特点现代软件的概念和特点 (1)软件规模大。)软件规模大。 (2)软件开发规范并趋于标准化。)软件开发规范并趋于标准化。 (3)软件开发方法多,有大量的软件工具持。)软件开发方法多,有大量的软件工具持。 (4)注重软件开发的管理。)注重软件开发的管理。 (5)软件维护相对过去容易得多。)软件维护相对过去容易得多。2022-6-9UML系统建模与分析设计42 2软件的分类软件的分类(1)按软件的功能划分)按软件的功能划分 系统软件。系统软件。 支撑软件。支撑软件。 应用软件。应用软件。(2)按软件的规模划分)按软件的规模划分 微型软
3、件。微型软件。 小型软件。小型软件。 中型软件。中型软件。 大型甚至超大型软件。大型甚至超大型软件。(3)按软件工作方式划分)按软件工作方式划分 实时处理软件。实时处理软件。 分时软件。分时软件。 交互式软件。交互式软件。 批处理软件。批处理软件。2022-6-9UML系统建模与分析设计5(4 4)按软件服务对象的范围划分)按软件服务对象的范围划分 项目软件。项目软件。产品软件。产品软件。(5 5)按使用的频度划分)按使用的频度划分一次性使用软件。一次性使用软件。使用频度较高的软件。使用频度较高的软件。(6 6)按软件失效的影响程度划分)按软件失效的影响程度划分一般性软件。一般性软件。关键性软
4、件。关键性软件。2022-6-9UML系统建模与分析设计61.21.2软件的发展与软件工程软件的发展与软件工程软件工程的指导性原则:软件工程的指导性原则: 变动的软件需求。变动的软件需求。稳妥的设计方法。稳妥的设计方法。高效的软件开发支持技术。高效的软件开发支持技术。有效的过程管理。有效的过程管理。软件工程具有里程碑意义的进展:软件工程具有里程碑意义的进展:结构化软件开发方法的工具。结构化软件开发方法的工具。计算机辅助软件工程(计算机辅助软件工程(CASE)。)。面向对象语言和方法成为主流的软件开发技术。面向对象语言和方法成为主流的软件开发技术。2022-6-9UML系统建模与分析设计71.3
5、 1.3 软件开发模型的演变和生存周期软件开发模型的演变和生存周期1.3.1 1.3.1 软件开发过程与模型的演变软件开发过程与模型的演变1. 瀑布模型(瀑布模型(waterfall model)(1)慎重使用瀑布模型的情况:)慎重使用瀑布模型的情况:不能充分理解客户需求或客户需求有可能迅速发生化;不能充分理解客户需求或客户需求有可能迅速发生化;系统太大太复杂,不能一次做完所有的事;系统太大太复杂,不能一次做完所有的事;事先拟采用的技术迅速发生变化;事先拟采用的技术迅速发生变化;提供的资源有限;提供的资源有限;无法利用各开发阶段的某一中间产品。无法利用各开发阶段的某一中间产品。2022-6-9
6、UML系统建模与分析设计8(2)使用瀑布模型的情况:)使用瀑布模型的情况:系统所有的功能、性能要求客户可以一次性准确交付系统所有的功能、性能要求客户可以一次性准确交付时;时;必须是首次开发的新系统并且淘汰全部老系统时。必须是首次开发的新系统并且淘汰全部老系统时。2. 渐增模型(渐增模型(incremental model)(1)慎重考虑使用渐增模型的情况:)慎重考虑使用渐增模型的情况:不能充分理解客户需求或客户需求有可能迅速发生变不能充分理解客户需求或客户需求有可能迅速发生变化;化;事先拟采用的技术迅速发生变化;事先拟采用的技术迅速发生变化;客户突然提出一些新的功能需求;客户突然提出一些新的功
7、能需求;长时期内仅有有限的资源保证(开发人员和资金)。长时期内仅有有限的资源保证(开发人员和资金)。2022-6-9UML系统建模与分析设计9使用渐增模型的情况:使用渐增模型的情况:需要在尽短的时间内得到系统基本功能的演示或使用;需要在尽短的时间内得到系统基本功能的演示或使用;各版本都有中间阶段产品可提供使用;各版本都有中间阶段产品可提供使用;系统可以被自然地分割成渐增的模式;系统可以被自然地分割成渐增的模式;开发人员与资金可以逐步增加。开发人员与资金可以逐步增加。2022-6-9UML系统建模与分析设计103. 演化模型(演化模型(evolutionary model) 演化模型也称为原型(
8、演化模型也称为原型(prototype)法模型。)法模型。 使用演化模型时应注意:使用演化模型时应注意:演化模型也是通过系统各个可执行的中间版本演化模型也是通过系统各个可执行的中间版本以渐增的形式来开发系统的,但是客户需求可以渐增的形式来开发系统的,但是客户需求可以分步逐渐了解,不用在初始时就确定。以分步逐渐了解,不用在初始时就确定。在模型中,可以预先定义一部分客户需求,然在模型中,可以预先定义一部分客户需求,然后在每个后继的中间版本中再逐步增加需求,后在每个后继的中间版本中再逐步增加需求,一点点完善。一点点完善。在开发每个中间版本时,开发过程中的活动和在开发每个中间版本时,开发过程中的活动和
9、任务可以顺序地或部分重叠平行地被加入到这任务可以顺序地或部分重叠平行地被加入到这些中间版本中。些中间版本中。2022-6-9UML系统建模与分析设计112022-6-9UML系统建模与分析设计124. 螺旋模型(螺旋模型(spiral model)螺旋模型的四类活动:螺旋模型的四类活动:制定计划。制定计划。风险分析。风险分析。实施开发。实施开发。客户评估。客户评估。2022-6-9UML系统建模与分析设计135 . 智能模型(智能模型(intelligent model)2022-6-9UML系统建模与分析设计141.3.2 1.3.2 软件开发模型的选择软件开发模型的选择 要综合考虑以下几个
10、因素:要综合考虑以下几个因素: (1)软件规模)软件规模 (2)软件类型)软件类型 l系统软件的开发。系统软件的开发。l实时软件的开发。实时软件的开发。l商业应用软件的开发。商业应用软件的开发。l嵌入式软件的开发。嵌入式软件的开发。l人工智能软件的开发。人工智能软件的开发。2022-6-9UML系统建模与分析设计15(3)软件质量要求)软件质量要求(4)交付工期)交付工期(5)客户需求明确度)客户需求明确度(6)投资)投资(7)可复用性)可复用性(8)开发者掌握的资源)开发者掌握的资源2022-6-9UML系统建模与分析设计161.3.3 1.3.3 软件生存周期软件生存周期2022-6-9U
11、ML系统建模与分析设计17软件定义软件定义(1)软件系统的可行性研究)软件系统的可行性研究1)经济可行性研究。)经济可行性研究。2)技术可行性研究。)技术可行性研究。3)法律可行性研究。)法律可行性研究。4)方案的选择。)方案的选择。(2)需求分析)需求分析1)任务。)任务。 软件功能需求:软件功能需求: 软件性能需求:软件性能需求: 软件系统运行环境:软件系统运行环境: 2)按需求建模。)按需求建模。3)软件需求规格说明()软件需求规格说明(Software Requirements Specification,简称,简称SRS)。)。2022-6-9UML系统建模与分析设计18软件开发软件
12、开发(1)概要设计)概要设计建立系统总体结构和各模块之间的关系;建立系统总体结构和各模块之间的关系;定义各个功能摸块的接口;定义各个功能摸块的接口;设计全局数据库或数据结构;设计全局数据库或数据结构;规定设计约束;规定设计约束;制定组装测试计划。制定组装测试计划。(2)详细设计)详细设计对概要设计进行细化;对概要设计进行细化;建立文档资料。建立文档资料。2022-6-9UML系统建模与分析设计19(3)实现)实现选择合适的编程语言;选择合适的编程语言;制定测试案例;制定测试案例;保存文档资料。保存文档资料。(4)组装测试)组装测试(5)确认测试)确认测试3软件使用、维护和更新换代软件使用、维护
13、和更新换代(1)软件使用)软件使用(2)系统维护)系统维护(3)系统更新换代)系统更新换代2022-6-9UML系统建模与分析设计201.4 1.4 软件开发方法简介软件开发方法简介1. 结构化程序设计方法结构化程序设计方法其控制结构仅由顺序、选择与重复等有限的基其控制结构仅由顺序、选择与重复等有限的基本控制结构表示。本控制结构表示。2. 模块化程序设计方法模块化程序设计方法模块之间的接口应尽可能简明清晰:模块之间的接口应尽可能简明清晰: 单独模块的修改不影响其它模块的功能;单独模块的修改不影响其它模块的功能; 模块化应具有可修改性、易读性和可验证性。模块化应具有可修改性、易读性和可验证性。3
14、. 面向对象程序设计方法面向对象程序设计方法2022-6-9UML系统建模与分析设计211.4.1 1.4.1 结构化软件开发方法结构化软件开发方法 1结构化分析的步骤结构化分析的步骤 构造数据流模型。构造数据流模型。构建控制流模型。构建控制流模型。生成数据字典(生成数据字典(DD)。)。生成可选方案,建立需求规约。生成可选方案,建立需求规约。2022-6-9UML系统建模与分析设计222结构化设计步骤结构化设计步骤首先研究、分析和审查数据流图。从软件的需首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程。求规格说明中弄清数据流加工的过程。然后根据数据流图决定问题的类型。
15、然后根据数据流图决定问题的类型。由数据流图推导出系统的初始结构图。由数据流图推导出系统的初始结构图。优化软件结构。优化软件结构。描述模块接口。描述模块接口。修改和补充数据词典。修改和补充数据词典。制定测试计划。制定测试计划。2022-6-9UML系统建模与分析设计231.4.2 1.4.2 模块化软件开发方法模块化软件开发方法(1)模块可分解性。)模块可分解性。(2)模块可组装性。)模块可组装性。(3)模块可理解性。)模块可理解性。(4)模块连续性。)模块连续性。(5)模块保护)模块保护。2022-6-9UML系统建模与分析设计241.4.3 1.4.3 面向数据结构软件开发方法面向数据结构软
16、件开发方法1建立建立JSD的系统进程模型的系统进程模型2JSD方法的步骤方法的步骤(1)JSD需求分析步骤需求分析步骤标识系统中的实体与相应动作;标识系统中的实体与相应动作;生成实体结构图;生成实体结构图;初建系统模型。初建系统模型。(2)JSD系统设计步骤系统设计步骤扩充功能过程。扩充功能过程。系统定时。系统定时。系统实现。系统实现。2022-6-9UML系统建模与分析设计25面向数据结构的开发方法的特点:面向数据结构的开发方法的特点:将分析结果作为设计基础,无明显分界;将分析结果作为设计基础,无明显分界;都必须标识关键实体和动作;都必须标识关键实体和动作;信息具有层次性;信息具有层次性;提
17、供一组将层次化的数据结构映射到程序结构提供一组将层次化的数据结构映射到程序结构的步骤;的步骤;数据结构由顺序、选择和重复数据结构由顺序、选择和重复3种构造成分表种构造成分表示。示。2022-6-9UML系统建模与分析设计261.4.4 1.4.4 面向对象软件开发方法面向对象软件开发方法面向对象方法的意义:面向对象方法的意义:(1 1)一种新的思考方式。)一种新的思考方式。(2 2)将数据和行为结合成为对象。)将数据和行为结合成为对象。(3 3)核心是封装。)核心是封装。(4 4)面向对象方法建立的基础是:)面向对象方法建立的基础是:l软件工程概念;软件工程概念;l计算机科学概念;计算机科学概
18、念;l工程管理;工程管理;l数据库信息模型;数据库信息模型;l传统软件开发方法。传统软件开发方法。2022-6-9UML系统建模与分析设计27面向对象方法有几十种,综合起来,面向对象方法有几十种,综合起来,其基本观点如下:其基本观点如下:现实客观世界由对象组成。现实客观世界由对象组成。相同的对象归并为类。相同的对象归并为类。类可以继承。类可以继承。对象之间通过消息进行联系。对象之间通过消息进行联系。面向对象面向对象 = = 对象对象 + + 类类 + + 继承继承 + + 通信通信2022-6-9UML系统建模与分析设计281.4.5 1.4.5 软件开发方法的评价与选择软件开发方法的评价与选
19、择综合考虑以下几方面因素:综合考虑以下几方面因素:人员素质。人员素质。时间进度。时间进度。掌握资源。掌握资源。可行性。可行性。领域知识。领域知识。从四个方面评价:从四个方面评价:技术特征。技术特征。使用特征。使用特征。管理特征。管理特征。经济特征。经济特征。2022-6-9UML系统建模与分析设计291.5 1.5 面向对象软件开发方法简介面向对象软件开发方法简介特点:特点:(1)使人们更好地认识客观世界)使人们更好地认识客观世界(2)能很好地适应需求变化)能很好地适应需求变化(3)容易实现软件复用)容易实现软件复用(4)系统易于维护和修改)系统易于维护和修改2022-6-9UML系统建模与分
20、析设计301.5.1 1.5.1 面向对象的基本概念面向对象的基本概念封装性、继承性和多态性。封装性、继承性和多态性。1. 对象对象客观世界中的实体抽象为问题空间中的对象。客观世界中的实体抽象为问题空间中的对象。2. 对象的抽象对象的抽象类类把具有相同特征和行为的对象归在一起就形成把具有相同特征和行为的对象归在一起就形成了类(了类(Class)。)。2022-6-9UML系统建模与分析设计312022-6-9UML系统建模与分析设计323. 3. 信息隐蔽和局部化信息隐蔽和局部化封装封装4. 4. 继承与派生继承与派生2022-6-9UML系统建模与分析设计335. 5. 对象之间的联系纽带对
21、象之间的联系纽带消息消息2022-6-9UML系统建模与分析设计346. 6. 多态性多态性多态性(多态性(PolymorphismPolymorphism)是指同一个消息为不同)是指同一个消息为不同的对象接收时,可产生不同的动作或执行结果。的对象接收时,可产生不同的动作或执行结果。2022-6-9UML系统建模与分析设计351.5.2 1.5.2 面向对象系统开发过程面向对象系统开发过程2022-6-9UML系统建模与分析设计36(1)需求分析阶段。)需求分析阶段。(2)系统分析阶段。)系统分析阶段。(3)系统设计阶段。)系统设计阶段。(4)系统实现、测试、使用、维护阶段。)系统实现、测试、
22、使用、维护阶段。2022-6-9UML系统建模与分析设计371.5.3 1.5.3 几种典型的面向对象方法简介几种典型的面向对象方法简介1Booch面向对象方法面向对象方法(1)Booch 方法的基本开发模型方法的基本开发模型开发模型包括逻辑模型、物理模型、静态模型开发模型包括逻辑模型、物理模型、静态模型和动态模型。和动态模型。(2)Booch方法的一般过程方法的一般过程开发过程分为技术层和管理层开发。开发过程分为技术层和管理层开发。1)系统技术层开发步骤)系统技术层开发步骤发现类与对象。发现类与对象。确定类和对象的语义。确定类和对象的语义。标识类和对象间的关系。标识类和对象间的关系。2022
23、-6-9UML系统建模与分析设计382)系统管理层开发步骤)系统管理层开发步骤强调团队技术管理。强调团队技术管理。明确用户关键需求。明确用户关键需求。建立系统分析模型。建立系统分析模型。完善设计系统结构。完善设计系统结构。系统实现。系统实现。软件交付。软件交付。2Jacobson的面向对象方法的面向对象方法(1)建立面向对象分析模型的过程)建立面向对象分析模型的过程1)建造用户需求模型。)建造用户需求模型。2)建造系统分析模型。)建造系统分析模型。2022-6-9UML系统建模与分析设计39(2)建立面向对象设计模型的过程)建立面向对象设计模型的过程1)创建模块作为主要的设计对象。)创建模块作
24、为主要的设计对象。2)创建一个显示激励如何在模块间传送的交互图。)创建一个显示激励如何在模块间传送的交互图。3)把模块组织成子系统。)把模块组织成子系统。4)复审设计工作。)复审设计工作。3Coad-Yourdon的面向对象方法论的面向对象方法论(1)面向对象分析()面向对象分析(OOA)步骤)步骤类及对象层。类及对象层。结构层。结构层。主题层。主题层。属性层。属性层。服务层。服务层。 (2)面向对象设计()面向对象设计(OOD)步骤)步骤2022-6-9UML系统建模与分析设计404James Rumbaugh的面向对象方法的面向对象方法(1)对象模型。)对象模型。(2)动态模型。)动态模型。(3)功能模型。)功能模型。2022-6-9UML系统建模与分析设计411.6 1.6 本章小结本章小结