2020/5/23UML系统建模与分析设计1UML系统建模与分析设计课件2020/5/23UML系统建模与分析设计2第一章系统建模与分析设计技术的演变本章目的:理解软件的基本概念和特点了解软件的发展过程及软件开发过程了解软件开发的方法掌握面向对象技术的基本概念及开发过程了解几种典型的面向对象方法2020/5/23UML系统建模与分析设计31.1软件的概念、特点和分类1.现代软件的概念和特点(1)软件规模大。(2)软件开发规范并趋于标准化。(3)软件开发方法多,有大量的软件工具支持。(4)注重软件开发的管理。(5)软件维护相对过去容易得多。2020/5/23UML系统建模与分析设计42.软件的分类(1)按软件的功能划分系统软件。支撑软件。应用软件。(2)按软件的规模划分微型软件。小型软件。中型软件。大型甚至超大型软件。(3)按软件工作方式划分实时处理软件。分时软件。交互式软件。批处理软件。2020/5/23UML系统建模与分析设计5(4)按软件服务对象的范围划分项目软件。产品软件。(5)按使用的频度划分一次性使用软件。使用频度较高的软件。(6)按软件失效的影响程度划分一般性软件。关键性软件。2020/5/23UML系统建模与分析设计61.2软件的发展与软件工程软件工程的指导性原则:变动的软件需求。稳妥的设计方法。高效的软件开发支持技术。有效的过程管理。2020/5/23UML系统建模与分析设计71.3软件开发模型的演变和生存周期1.3.1软件开发过程与模型的演变1.瀑布模型(waterfallmodel)(1)慎重使用瀑布模型的情况:不能充分理解客户需求或客户需求有可能迅速发生化;系统太大太复杂,不能一次做完所有的事;事先拟采用的技术迅速发生变化;提供的资源有限;无法利用各开发阶段的某一中间产品。2020/5/23UML系统建模与分析设计8(2)使用瀑布模型的情况:系统所有的功能、性能要求客户可以一次性准确交付时;必须是首次开发的新系统并且淘汰全部老系统时。2.渐增模型(incrementalmodel)(1)慎重考虑使用渐增模型的情况:不能充分理解客户需求或客户需求有可能迅速发生变化;事先拟采用的技术迅速发生变化;客户突然提出一些新的功能需求;长时期内仅有有限的资源保证(开发人员和资金)。2020/5/23UML系统建模与分析设计9使用渐增模型的情况:需要在尽短的时间内得到系统基本功能的演示或使用;各版本都有中间阶段产品可提供使用;系统可以被自然地分割成渐增的模式;开发人员与资金可以逐步增加。2020/5/23UML系统建模与分析设计103.演化模型(evolutionarymodel)演化模型也称为原型(prototype)法模型。使用演化模型时应注意:演化模型也是通过系统各个可执行的中间版本以渐增的形式来开发系统的,但是客户需求可以分步逐渐了解,不用在初始时就确定。在模型中,可以预先定义一部分客户需求,然后在每个后继的中间版本中再逐步增加需求,一点点完善。在开发每个中间版本时,开发过程中的活动和任务可以顺序地或部分重叠平行地被加入到这些中间版本中。2020/5/23UML系统建模与分析设计112020/5/23UML系统建模与分析设计124.螺旋模型(spiralmodel)螺旋模型的四类活动:制定计划。风险分析。实施开发。客户评估。2020/5/23UML系统建模与分析设计135.智能模型(intelligentmodel)2020/5/23UML系统建模与分析设计141.3.2软件开发模型的选择要综合考虑以下几个因素:(1)软件规模(2)软件类型系统软件的开发。实时软件的开发。商业应用软件的开发。嵌入式软件的开发。人工智能软件的开发。2020/5/23UML系统建模与分析设计15(3)软件质量要求(4)交付工期(5)客户需求明确度(6)投资(7)可复用性(8)开发者掌握的资源2020/5/23UML系统建模与分析设计161.3.3软件生存周期2020/5/23UML系统建模与分析设计171.软件定义(1)软件系统的可行性研究1)经济可行性研究。2)技术可行性研究。3)法律可行性研究。4)方案的选择。(2)需求分析1)任务。软件功能需求:软件性能需求:软件系统运行环境:2)按需求建模。3)软件需求规格说明(SoftwareRequirementsSpecification,简称SRS)。2020/5/23UML系统建模与分析设计182.软件开发(1)概要设计建立系统总体结构和各模块之间的关系;定义各个功能摸块的接口;设计全局数据库或数据结构;规定设计约束;制定组装测试计划。(2)详细设计对概要设计进行细化;建立文档资料。2020/5/23UML系统建模与分析设计19(3)实现选择合适的编程语言;制定测试案例;保存文档资料。(4)组装测试(5)确认测试3.软件使用、维护和更新换代(1)软件使用(2)系统维护(3)系统更新换代2020/5/23UML系统建模与分析设计201.4软件开发方法简介1.结构化程序设计方法其控制结构仅由顺序、选择与重复等有限的基本控制结构表示。2.模块化程序设计方法模块之间的接口应尽可能简明清晰:单独模块的修改不影响其它模块的功能;模块化应具有可修改性、易读性和可验证性。3.面向对象程序设计方法2020/5/23UML系统建模与分析设计211.4.1结构化软件开发方法1.结构化分析的步骤构造数据流模型。构建控制流模型。生成数据字典(DD)。生成可选方案,建立需求规约。2020/5/23UML系统建模与分析设计222.结构化设计步骤首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程。然后根据数据流图决定问题的类型。由数据流图推导出系统的初始结构图。优化软件结构。描述模块接口。修改和补充数据词典。制定测试计划。2020/5/23UML系统建模与分析设计231.4.2模块化软件开发方法(1)模块可分解性。(2)模块可组装性。(3)模块可理解性。(4)模块连续性。(5)模块保护。2020/5/23UML系统建模与分析设计241.4.3面向数据结构软件开发方法1.建立JSD的系统进程模型2.JSD方法的步骤(1)JSD需求分析步骤标识系统中的实体与相应动作;生成实体结构图;初建系统模型。(2)JSD系统设计步骤扩充功能过程。系统定时。系统实现。2020/5/23UML系统建模与分析设计25面向数据结构的开发方法的特点:将分析结果作为设计基础,无明显分界;都必须标识关键实体和动作;信息具有层次性;提供一组将层次化的数据结构映射到程序结构的步骤;数据结构由顺序、选择和重复3种构造成分表示。2020/5/23UML系统建模与分析设计261.4.4面向对象软件开发方法面向对象方法的意义:(1)一种新的思考方式。(2)将数据和行为结合成为对象。(3)核心是封装。(4)面向对象方法建立的基础是:软件工程概念;计算机科学概念;工程管理;数据库信息模型;传统软件开发方法。2020/5/23UML系统建模与分析设计27面向对象方法有几十种,综合起来,其基本观点如下:现实客观世界由对象组成。相同的对象归并为类。类可以继承。对象之间通过消息进行联系。面向对象=对象+类+继承+通信2020/5/23UML系统建模与分析设计281.4.5软件开发方法的评价与选择综合考虑以下几方面因素:人员素质。时间进度。掌握资源。可行性。领域知识。2020/5/23UML系统建模与分析设计291.5面向对象软件开发方法简介特点:(1)使人们更好地认识客观世界(2)能很好地适应需求变化(3)容易实现软件复用(4)系统易于维护和修改2020/5/23UML系统建模与分析设计301.5.1面向对象的基本概念封装性、继承性和多态性。1.对象客观世界中的实体抽象为问题空间中的对象。2.对象的抽象——类把具有相同特征和行为的对象归在一起就形成了类(Class)。2020/5/23UML系统建模与分析设计313.信息隐蔽和局部化——封装4.继承与派生2020/5/23UML系统建模与分析设计325.对象之间的联系纽带——消息6.多态性多态性(Polymorphism)是指同一个消息为不同的对象接收时,可产生不同的动作或执行结果。2020/5/23UML系统建模与分析设计331.5.2面向对象系统开发过程2020/5/23UML系统建模与分析设计34(1)需求分析阶段。(2)系统分析阶段。(3)系统设计阶段。(4)系统实现、测试、使用、维护阶段。2020/5/23UML系统建模与分析设计351.6本章小结