软件设计与体系结构第四章面向对象的软件设计方法PPT课件

上传人:m**** 文档编号:567994492 上传时间:2024-07-23 格式:PPT 页数:60 大小:2.29MB
返回 下载 相关 举报
软件设计与体系结构第四章面向对象的软件设计方法PPT课件_第1页
第1页 / 共60页
软件设计与体系结构第四章面向对象的软件设计方法PPT课件_第2页
第2页 / 共60页
软件设计与体系结构第四章面向对象的软件设计方法PPT课件_第3页
第3页 / 共60页
软件设计与体系结构第四章面向对象的软件设计方法PPT课件_第4页
第4页 / 共60页
软件设计与体系结构第四章面向对象的软件设计方法PPT课件_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《软件设计与体系结构第四章面向对象的软件设计方法PPT课件》由会员分享,可在线阅读,更多相关《软件设计与体系结构第四章面向对象的软件设计方法PPT课件(60页珍藏版)》请在金锄头文库上搜索。

1、面向对象的软件设计1引言面向对象开发方法的核心是利用面向对象的概念和方法对软件需求分析和设计,建立面向对象的软件分析和设计模型。面向对象软件开发过程从领域概念到设计概念和代码实现都以类和对象为核心,是一个逐步精化的过程,因此需求分析和设计之间并没有严格的分界线。本章使用UML进行软件分析和设计。2教学内容基于UML的分析与设计过程用例分析与设计概念模型和顶层架构设计用户界面设计数据模型设计设计精化类设计部署模型设计3基于UML的分析与设计过程UML是独立于软件开发过程的,它几乎可以用于任何类型的软件开发过程,包括瀑布式、迭代式、螺旋式等不同模型。在软件分析和设计中,可以根据项目的特征、开发组织

2、在已有实践中定义的相关规范、设计人员本身的偏好等因素,对基于UML的软件设计过程进行定制。 根据UML各种视图的特点,它们可能更适用于软件分析与设计的某些活动,形成了一些常用的设计方式与过程,起到一定的指导作用,但并没有强制性要求。4基于UML的分析与设计过程用例分析与设计概念模型与顶层架构设计用户界面设计数据模型设计设计精化类设计部署模型设计UML设计模型类图类图包图包图构件图构件图用例图用例图交互图交互图活动图活动图类图类图包图包图交互图交互图构件图构件图部署图部署图类图类图包图包图构件图构件图类图类图状态图状态图活动图活动图5基于UML的分析与设计过程l用例分析与设计:u需求获取,分析和

3、描述的过程,它将利用例及用例图表示需求。l概念模型与顶层架构设计:u在用户需求和相关的业务领域中,概念及概念关系的抽取l用户界面设计:u设计每个界面中的所有界面元素,确定初步的界面布局,定义用户界面动作对软件系统中设计元素的要求l数据模型的设计:u确定设计模型中需要持久保存的类的对象及其属性,定义持久持久存储数据之间的组织方式,并明确数据模型中的操作行为。l设计的精化:u对上面的逻辑、界面、数据模型等不同侧重点的设计结果进行整理,合并相似的类,保证各模型之间的一到处性,并消除冗余,为了提高整全后模型的质量,可能需要引入继承、聚集等关系对类设计进行组织和精化,并可能需要引入新的关键类和控制类。交

4、互图等设计模型进行精华,以更具体地描述场景交互过程。6基于UML的分析与设计过程l类设计:u对类进行细化设计,精化类之间的关系以及类的操作和属性,使它们能够直接提交给软件构造阶段进行编码实现。对重要控制类,采用状态图描述类的实例在生存周期中对外部事件的响应笔状态变化过程,并可以采用活动图对重要的方法过程开算法进行描述。l部署模型设计:u对软件最终的元素结构以及运行的具体环境进行描述,包括刻画最终可能生成的运行文件、库文件或软件包以及这些元素之间的静态关系,软件最终运行的物理平台拓朴结构,描述其中的物理节点以及它们之间的通信和交互方式,并说明软件包、运行文件,子系统等元素在物理节点上的部署方案7

5、用例的分析与设计确定用例生成用例图用例设计描述8银行ATM自动柜员机需求简述l提供以下服务:u取款。顾客用银行卡从对应的账户中支取现金,现金必须是u存款。顾客可以把现金存入银行卡对应的账户中u转账。顾客可以把一个银行卡对应的赂中的款项转账到另一个银行账户中u查询。顾客能够查询一个银行卡对应的账户中的余额l该ATM系统包括以下组成部分:u读卡器u交互的控制台u存款的插槽u打印机u启动和关闭ATM系统的开关键盘uATM系统与银行服务通过特定的网络连接进行通信9银行ATM自动柜员机需求简述lATM系统在提供以上服务的过程中,必须满足以下要求u一个顾客可以在最终确认前放弃一项交易uATM在执行交易过程

6、中将与银行系统进行通信,对是否允许交易进行验证uATM为每次成功的交易提供一个打印回执uATM需要维护一个内部日志,对每次交易进行记录10用例的分析与设计确定用例确定场景l从业务需求出发获取参与者(Actor)和场景,对场景进行汇总、分类、抽象,形成用例u场景是用户与系统之间进行交互的一组具体的动作l获取场景l目标软件有哪些参与者l参与者希望系统执行的任务有哪些?l参与者希望获得哪些信息?这些信息由谁生成?由谁修改?l参与者城要通知系统哪些事件?系统响应这些事件时会表现出哪些外部行为?l系统将通告参与者哪些事件?11用例的分析与设计确定用例确认参与者和责任确认参与者和责任l不同的参与者不同的参

7、与者u系统管理员、程序员、会计、出纳员系统管理员、程序员、会计、出纳员u与系统通信的其他系统与系统通信的其他系统l不同的责任不同的责任u系统配置、程序设计、财务管理、现金管理系统配置、程序设计、财务管理、现金管理l分析参与者的工作:使用案例分析参与者的工作:使用案例u各种使用过程、步骤各种使用过程、步骤12用例的分析与设计用例的确认用例的确认l围绕系统的一个工作过程,确认参与交互过程的参与者围绕系统的一个工作过程,确认参与交互过程的参与者u如:系统管理员、域控制器(计算机)如:系统管理员、域控制器(计算机)l用系列动作步骤描述交互过程用系列动作步骤描述交互过程u参与者的动作、系统的执行步骤参与

8、者的动作、系统的执行步骤l要点要点u忽略内部细节,仅考虑外部因素忽略内部细节,仅考虑外部因素13用例的分析与设计ATM案例参与者l顾客(Customer)l操作管理员(Operator)l银行服务员(Bank System)l读卡器(Card Reader)l存款器(Cash Acceptor)l打印机(Printer)14用例的分析与设计ATM系统用例l取款(Withdrawal)l存款(Deposit)l转账(Transfer)l查询余额(Inquiry)l开机(System Startup)l关机(System Shutdown)15用例的分析与设计用例建模步骤l1) 描述各种使用案例u

9、描述交互过程的动作序列u模拟系统工作的交互过程l2)确认动作u检查使用案例,引入并描述动作u覆盖所有可能发生的动作16用例的分析与设计用例建模步骤l3) 跟踪执行过程u为每个使用案例制作序列图u描述对象之间的消息传送过程l4) 构造状态转移图u为每个对象构造的状态转移图u反映对象接受和发送的消息u考虑所有使用案例中的所有消息17用例的分析与设计ATM系统初步用例图18用例的分析与设计-用例设计描述l用例名称:Withdrawall参与者:Cudtomer,kBankSystem,Card Reader,Cash Dispenser,Printerl前置条件:顾客已插入银行卡,密码验证正确,顾客

10、按下“取款”按钮l主事件流:u(1)顾客输入取款金额,并确认。u(2)系统认可取款金额,并发送指令给取款器u(3)取款器把相应金额的现金送出u(4)打印机打印回执l辅事件流:u(1)如果取款金额不是100的整数倍,则显示信息“输入金额必须是100的整数倍,请重新输入”,并返回主事件流中步骤(1)u(2)如果取款金额超过2000元,则显示信息“输入金额不能超2000元,请重新输入”,并返回主事件流中步骤(1)u(3)如果账户余额小于取款金额,则显示信息“账户余额不足,请重新输入”,并返回主事件流中步骤(1)u(4)顾客在确认取款金额前右以选择取消交易。l后置条件:如果取款成功,系统从账户余额中减

11、去相应数额,并返回等待状态;如果顾客取消交易,则返回等待状态19用例的分析与设计Startup用例的顺序图描述20用例的分析与设计Session用例的顺序图描述21用例的分析与设计Transaction用例的顺序图描述22用例的分析与设计Withdrawal用例的顺序图描述23概念模型和顶层架构设计l概念模型的设计u标识领域概念模型u分析类:直接服务于用户功能性需求的概念层面的类,与具体技术没有关系l顶层架构的设计u目的:为后续的分析和设计活动建立一种结构和划分24概念模型和顶层架构设计l关键概念来源:为建立以UML类图表示的领域概念模型,首先必须标识关键概念。关键概念的来源包括:(1)业务需

12、求描述、用例说明;(2)业务领域中的相关规范、标准、术语定义。(3)反映业务领域知识的既往经验。l业务需求描述l业务领域中的相关规范、标准、述评呼定义l反映业务领域知识的既往经验25概念模型和顶层架构设计l分析类:(1)边界类:负责目标软件系统与参与者之间的交互。(2)控制类:完成用例任务的责任承担者,负责协调、控制其他类共同完成用例规定的功能 或行为。(3)实体类:负责保存目标软件系统中具有持久意义的信息项并向其他类提供读、写信息项内容的必要操作接口,一般不涉及业务逻辑。26概念模型和顶层架构设计l边界类:其职责包括:u边界控制:包括定义数据的格式及内容转换,输出结果的呈现,软件运行过程中界

13、面的变化与切换等。u外部接口:实现目标软件系统与外部系统或外部设备之间的信息交流和互操作,主要关注跨越目标软件系统边界的通信协议u环境隔离:对目标软件系统与操作系统、数据库管理系统、中间件等环境软件进行交互的功能与特性进行封装,使目标软件系统的其余部分尽右能独立于环境软件。27概念模型和顶层架构设计ATM系统的概念模型分析模型图28概念模型和顶层架构设计顶层架构设计l顶层架构是分析和设计阶段成果的承载体l可以把体系结构设计方法与上述概念模型得到的结果结合起来考虑,利用一定的体系结构模式(例如分层模式、模型-视图控制器MVC模式等)对概念模型中的相关元素进行组织,同时需要考虑目标软件系统与其他参

14、与者的外部系统之间的联系和交互方式。29概念模型和顶层架构设计ATM系统的顶层架构图30用户界面设计基于UML的分析与设计过程用例分析与设计概念模型和顶层架构设计用户界面设计数据模型设计设计精化类设计部署模型设计31用户界面设计n用户界面是对于用户的直接表现,直接影响到用用户界面是对于用户的直接表现,直接影响到用户对软件易用性、友好性的感觉。用户界面包含户对软件易用性、友好性的感觉。用户界面包含两方面内容:两方面内容:首先要首先要完整地包括用户在使用软件过程中所需的各种完整地包括用户在使用软件过程中所需的各种元素元素,例如窗口、菜单、按钮、输入文本框、选择列,例如窗口、菜单、按钮、输入文本框、

15、选择列表、提示信息等,缺乏这些元素中的某些将会导致软表、提示信息等,缺乏这些元素中的某些将会导致软件功能无法被用户正常完成;件功能无法被用户正常完成;其次要求其次要求具有良好的外观和布局具有良好的外观和布局,例如背景颜色、按,例如背景颜色、按钮等元素的位置、选择列表中条目的顺序等,这些因钮等元素的位置、选择列表中条目的顺序等,这些因素的不足可能不会影响软件功能的正确使用,但会给素的不足可能不会影响软件功能的正确使用,但会给用户带来不便、迷惑甚至反感。用户带来不便、迷惑甚至反感。32用户界面设计n用户界面元素分为两个层次:用户界面元素分为两个层次:屏幕屏幕:用构造型用构造型表示表示窗口:屏幕上的

16、组成部分(文本框、按钮等)统窗口:屏幕上的组成部分(文本框、按钮等)统一称为窗口。用构造型一称为窗口。用构造型表示表示n用户界面的结构可以由用户界面的结构可以由UML类图描述,屏幕和窗口类图描述,屏幕和窗口用类进行表示,并给出它们之间的关系。用类进行表示,并给出它们之间的关系。n屏幕之间的切换过程可以用屏幕之间的切换过程可以用UML状态图表示。每个状态图表示。每个状态表示当时所处的屏幕,迁移表示用户激励。状态表示当时所处的屏幕,迁移表示用户激励。n当屏幕中有许多窗口时,可以对窗口划分层次,一当屏幕中有许多窗口时,可以对窗口划分层次,一些简单的窗口可以作为复杂窗口的属性和操作。些简单的窗口可以作

17、为复杂窗口的属性和操作。33用户界面设计CustomerConsolel用户通过控制台使用ATM的过程中,可分为5个相对独立的过程u(1)插入银行卡到输入正确密码并进入选择交易类型的屏幕u(2)选择“取款”交易,并到完成后退出或返回选择交易类型的屏幕u(3)选择“存款”交易,并到完成后退出或返回选择交易类型的屏幕u(4)选择“转帐”交易,并到完成后退出或返回选择交易类型的屏幕u(5)选择“查询”交易,并到完成后退出或返回选择交易类型的屏幕34用户界面设计屏幕结构类图35用户界面设计屏幕变化状态图“插卡插卡”过程的屏幕转换状态图:每个状态表示一个屏幕,过程的屏幕转换状态图:每个状态表示一个屏幕,

18、迁移表示当前屏幕用户的激励。迁移表示当前屏幕用户的激励。36用户界面设计屏幕结构类图InputPin屏幕屏幕的结构图。每的结构图。每个屏幕的结构个屏幕的结构可以用类图设可以用类图设计,即屏幕上计,即屏幕上有什么(窗口)有什么(窗口),如:文本框、,如:文本框、按钮等按钮等37用户界面设计屏幕结构包图顾客控制台包含丰富的元素,可以进一步细化形成一个对应的包,专门顾客控制台包含丰富的元素,可以进一步细化形成一个对应的包,专门描述界面元素其中有分为描述界面元素其中有分为5个子包,分别对应个子包,分别对应“插卡插卡”、“取款取款”、“存款存款”、“转账转账”、“查询查询”5个独立的过程。每个子包又对应

19、一些列个独立的过程。每个子包又对应一些列的屏幕,并对应到表示屏幕切换的状态图的屏幕,并对应到表示屏幕切换的状态图38用户界面设计n一个独立的过程包含若干屏幕变换一个独立的过程包含若干屏幕变换n状态图表示屏幕间的变换状态图表示屏幕间的变换n状态图的一个状态表示一个屏幕状态图的一个状态表示一个屏幕n一个屏幕的结构用屏幕结构(类)图表示一个屏幕的结构用屏幕结构(类)图表示39数据模型设计n数据模型设计包括数据结构设计、数据库设计、数据模型设计包括数据结构设计、数据库设计、数据文件设计等,本节主要关注持久数据存储数据文件设计等,本节主要关注持久数据存储设计。持久数据模型设计步骤为:设计。持久数据模型设

20、计步骤为:(1)确定设计模型中需要持久保存的类的对象及其属性,)确定设计模型中需要持久保存的类的对象及其属性, 其中实体类是主要关注对象。其中实体类是主要关注对象。(2)确定持久存储的数据之间的组织方式。)确定持久存储的数据之间的组织方式。(3)确定数据模型中的操作行为,例如数据完整性验证、)确定数据模型中的操作行为,例如数据完整性验证、 数据读取、存储与更新、数据求和、求数据平均值等。数据读取、存储与更新、数据求和、求数据平均值等。(3)进一步优化持久数据操作的性能,如使用数据索引、)进一步优化持久数据操作的性能,如使用数据索引、 存储过程、触发器等方式。存储过程、触发器等方式。数据模型设计

21、的输出制品是数据模型,包括以数据模型设计的输出制品是数据模型,包括以UML类图表示的数据库表格类图表示的数据库表格以及它们之间的关系。数据模型必须满足设计模型对持久数据存储的要求。以及它们之间的关系。数据模型必须满足设计模型对持久数据存储的要求。40数据模型设计-关系数据库建模n类对应于关系数据模型中的表格(类对应于关系数据模型中的表格(table),对象),对象对应于记录(对应于记录(record),属性对应于表格中的字),属性对应于表格中的字段(段(field)或者列()或者列(column),类中的方法实现),类中的方法实现可以用可以用SQL语句对数据库表格进行操作。语句对数据库表格进行

22、操作。 表示表格,表示关键字,foreign key表示外键41数据模型设计-数据模型42设计精化l精化任务:1,精化软件架构2,调整软件构成的类3,精化交互模型4,精化类之间关系43设计精化-精化软件架构l目的:寻找理想的包划分方案,包中类数量适中,边界清晰的,自然,耦合度低u降低耦合度u拆分成子包u调整类的摆放位置,移到另外的包u合并包或合并后重新划分l原则u避免包间的循环依赖u位于较低层次的通用包不应当依赖于较高层次中的专用包u在层次结构中,较高层次的包可以依赖较低层次的包,但应尽量在相邻的层次间发生u如果针对某些子系统专门划分了接口包和实现包,那么,其他与该子系统相关的包吸能依赖于接口

23、包,不能依赖于实现包44设计精化-精化软件架构用户交互层包精化后的模型45设计精化-精化软件架构用户交互层中子包精化后的模型46设计精化调整软件构成类l增加辅助类u引入 新类以弥补不足l合并相互通信频繁的类u若类的属性和操作简单,但与其他类通信非常用频繁,即耦合度很高,这样的类可以合并到其他类中l分拆规模过大的类u若一个类的属性可以区分为常用和罕用,为提高效率,拆分为“常用”类和数个“罕用”类,建立聚合关系u若一个类既要负责业务逻辑,又要实现与外部数据通信,那么可以拆分为,业务逻辑类和通信类47设计精化精化过程中新增加的类48设计精化精化交互模型l交互图进行精化时,需要考虑以下内容l软件架构的

24、组成类被迫调整之后对交互模型产生的影响,新出现的对象可拆分后的对象如何参与交互过程,在其中起到什么样的作用l对象在交互过程中的消息传递需要哪些参数和返回值l交互过程是否需要细化,例如如增加必要的消息,或对局部引用 一个更加具体的交互图49设计精化精化后的Withdrawal顺序图50设计精化-精化类之间的关系l详细研究类之间的连接关系u精确判定关系:依赖、关联、聚合、构成u确定连接的方向吸参与连接的类对象之间的数量对应关系u根据软件复用的要求及软件结构简洁化、清晰化的要求,优化类之间的关系l连接关系,主要是构筑消息通道。面向对象的程序设计机制提供4种手段:u引用全局对象:obj1直接引用 作为

25、全局对象的obj2u通过参数传递: obj2作为obj1的某项操作的实际参数u引用局部对象:在obj1的 某项操作的 数数体中创建或获取obj2u通过类的成员变量: obj2作为 obj1所属类的司性的取值51设计精化-精化类之间的关系l利用继承关系精化设计模型u寻找类之间的公共属性和操作,引进父类捕获公共性,简化模型u将类划分为集合,针对每个集合特性设计一个父类,让集合中的所有类成为该父类的子类u可能需要将多重继承化解为间重继承l对业务逻辑、界面、数据模型等不同的设计模型进行整理和融合u合交相似类u消除设计模型之间的冗余u保证一致性52类设计类设计的任务是对各种设计模型中出现的类进行细化设计

26、,以使它们精细至能够直接提交给软件构造阶段进行代码实现,类设计也是一种对设计的精化,类设计主要包括:(1)对类的属性与操作进行精化。(2)对类的对象实例在其生命周期中对外部消息的 响应和状态变化过程进行建模。(3)对类中重要操作的实现过程或算法进行描述。(1)关注单个类的内部细节的设计;关注单个类的内部细节的设计;(2)和和(3)属于类的行为模型设计。属于类的行为模型设计。53类设计-精化类的属性与操作对于类的每项属性,在设计模型中,可以定义属性的名称、类型、初始值、取值范围及属性说明(后三项内容是可选的)。操作的基本内容包括名称、参数表(含参数的名称和类型)、返回类型、功能描述。如果操作比较

27、复杂,还需要用文字或UML活动图说明操作的实现算法。54类设计-精化类的属性与操作属性和操作的作用范围:(1)public:对系统中所有类可见(2)protected:对本类及其子类可见(3)private:仅对本类可见确定属性和操作作用范围的原则:尽量确定属性和操作作用范围的原则:尽量缩小作用范围,每个类仅公开那些直接缩小作用范围,每个类仅公开那些直接响应消息所必需的操作。原则上属性不响应消息所必需的操作。原则上属性不宜公开,如果确有必要让其他类读取或宜公开,如果确有必要让其他类读取或者设置该属性的值,应通过本类增加者设置该属性的值,应通过本类增加get/set函数实现。函数实现。55类设计

28、-精化类之间的关系在类中设置相应属性,实现类之间的关联、聚合、构成关系:a、类型为B的指针或引用b、集合类型,集合元素的类型为B的指针或引用c、类型为B的指针或引用d、集合类型,集合元素的类型为B ABa 1:1的关联或聚合(非构成)关系b 1:*的关联或聚合(非构成)关系c 1:1的非构成)关系d 1:*的构成关系56类设计-类的行为模型设计l类的行为可以在两个层次上用不同方式建模:(1)针对整个类使用UML状态图描述其行为(2)针对类中某些重要的方法,用UML活动图描述其执行过程或步骤(1)状态图描述u状态图适于表示跨越多个用例、具有较为复杂控制行为的U单个对象的行为u明显的状态特征并且具

29、有比较复杂的状态事件响应行为的类设计状态图u对控制类建立状态图u每个状态应该是对象在生存周期中相对比较稳定的时间段u状态图中节点表示相对稳定的状态。(2)活动图描述u执行比较重要的任务且控制流程较为复杂的方法u活动图中的结点主要是动作,并不维持稳定。57类设计-类的行为模型设计Withdrawal类中方法Check()执行过程的活动图58部署模型设计l部署图用来描述软件开发过程中形成哪些软件制品,软件包运行平台 中存在哪些物理节点和通信方式,以及软件制品到相应硬件节点的部署或映射。l部署模型设计一般需要考虑以下几点:u最终开发完成的软件包括哪些制品形式u软件运行环境存在哪些类型的物理节点u不同节点之间的连接和通信形式是什么u软件制品应该如何在物理节点上进行部署,即它们的部署映射关系。部署图对于复杂的分布式软件系统非常有用,部署图还可以描述部署图对于复杂的分布式软件系统非常有用,部署图还可以描述整个系统结构的一些特殊要求,例如系统的备份和容错结构设计整个系统结构的一些特殊要求,例如系统的备份和容错结构设计59部署模型设计60

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号