第4章-面向对象的软件设计方法.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章面向对象的软件设计方法1内容4.1基于UML的分析与设计过程4.2用例分析与设计4.3概念模型和顶层架构设计4.4用户界面设计4.5数据模型设计4.6设计精化4.7类设计4.8部署模型设计引言面向对象开发方法的核心是利用面向对象的概念和方法对软件需求分析和设计,建立面向对象的软件分析和设计模型。面向对象软件开发过程从领域概念到设计概念和代码实现都以类和对象为核心,是一个逐步精化的过程,因此需求分析和设计之间并没有严格的分界线。本章使用UML进行软件分析和设计。(1)抽象与逐步求精4.1基于UML的分析与设计UML是独立于软件开发过程的,它几乎可以用于任何类型的软件开发过程,包括瀑布式、迭代式、螺旋式等不同模型。在软件分析和设计中,可以根据项目的特征、开发组织在已有实践中定义的相关规范、设计人员本身的偏好等因素,对基于UML的软件设计过程进行定制。根据UML各种视图的特点,它们可能更适用于软件分析与设计的某些活动,形成了一些常用的设计方式与过程,起到一定的指导作用,但并没有强制性要求。基于UML的分析与设计过程用例分析与设计概念模型与顶层架构设计用户界面设计数据模型设计设计精化类设计部署模型设计UML设计模型用例图交互图活动图类图包图构件图类图包图状态图类图对象图类图状态图活动图构件图部署图类图包图交互图使用UML的软件分析和设计的较为通用的过程,实践中开发人员可以此过程为基础进行改进和订制。内容4.1基于UML的分析与设计过程4.2用例分析与设计4.3概念模型和顶层架构设计4.4用户界面设计4.5数据模型设计4.6设计精化4.7类设计4.8部署模型设计4.2用例分析与设计案例:银行ATM自动柜员机的需求简述(本案例将要开发的ATM系统能够为顾客提供以下基本服务,它们统一称为交易):取款服务。顾客可以用银行卡从对应的账户中支取现金,现金必须是100元的整数倍,且每次取款不能超过2000元。存款服务。顾客可以把现金存入与银行卡对应的账户中。转帐服务。顾客可以把一个银行卡对应的账户中的款项转帐到另一个银行账户中。查询服务。顾客能够查询一个银行卡对应的账户中的余额。(1)确定用例采用用例模型描述系统需求时,首先需要开发人员从业务需求描述出发获取参与者(Actor)和场景,对场景进行汇总、分类、抽象,形成用例。场景是从单个参与者的角度观察目标软件系统的功能和外部行为,这种功能通过系统与用户之间的交互来表示。场景是用例的实例,而用例是某类场景的共同抽象。确定参与者和场景——对多个场景进行抽象——用例获取场景以下问题可以帮助分析人员获取场景:目标软件系统有哪些参与者?参与者希望系统执行的任务有哪些?参与者希望获得哪些信息?这些信息由谁生成?由谁修改?参与者需要通知系统哪些事件?系统响应这些事件时会表现出哪些外部行为?系统将通告参与者哪些事件?确定参与者和场景的关键在于理解业务领域和初步需求描述文档。定义用例在场景确定之后,通过对场景的汇总、分类归并、抽象即可形成用例。需要特别注意的是,参与者并只限于人员,其它与目标软件发生交互的外部实体或系统也是参与者;用例应该是对参与者可见的系统需求或功能,否则不能作为用例。如果多个外部实体在与目标软件系统进行交互时扮演同一角色,这些实体用同一参与者表示;如果一个外部实体扮演多个角色,则需要多个参与者来表示同一实体,即参与者与角色一一对应。ATM案例的参与者“顾客”(Customer)“操作管理人员”(Operator)“银行服务器”(BankSystem)“读卡器”(CardReader)“存款器”(CashAcceptor)“取款器”(CashDispenser)“打印机”(Printer)参与者:与系统交互的人、设备、其他系统ATM案例的用例“取款”(Withdrawal)“存款”(Deposit)“转帐”(Transfer)“查询余额”(Inquiry)“开机”(SystemStartup)“关机”(SystemShutdown)用例:系统的功能(2)生成用例图确定参与者与用例之后,建立用例图,描述参与者与用例、用例之间的关系。生成用例图是一个逐步精化的过程,首先可以建立初步的用例图,包括前面发现的参与者和用例;然后对用例图进行细化,定义用例之间“包含”、“扩展”、“继承”等关系,并可能需要定义新的用例,以能够更准确地使用用例图描述系统需求。生成初步用例图WithdrawalSystemStartupSystemshutdownDepositInquiryATMTransferCustomerOperatorBankSystemCardReaderCashDispenserCashAcceptorPrinter用例图的细化包含(include)关系扩展(extend)关系继承关系细化后ATM用例图InvalidPINTransactionincludeextendDepositSystemStartupSystemshutdownWithdrawalInquiryATMTransferCustomerOperatorBankSystemSessionCardReaderCashAcceptorCashDispenserPrinter(3)用例描述从外部视角看,一个用例是参与者与目标软件之间的一次交互过程;从系统内部视角看,一个用例是系统执行的一系列动作,动作执行的结果能被外部的参与者觉察。对用例的完整描述包括用例名称、参与者、前置条件、一个主事件流、0到多个辅事件流、后置条件。主事件流表示正常情况下参与者与系统之间的信息交互及动作序列,辅事件流则表示特殊情况或异常情况下的信息交互及动作序列。“取款用例”描述用例名称:Withdrawal参与者:Customer,BankSystem,CardReader,CashDispenser,Printer前置条件:顾客已插入银行卡,密码验证正确,顾客按下“取款”按钮主事件流:1.顾客输入取款金额,并确认。2.系统认可取款金额,并发送指令给取款器。3.取款器把相应金额的现金送出。4.打印机打印回执。辅事件流:1.如果取款金额不是100的整数倍,则显示信息“输入金额必须是100的整数倍,请重新输入”,并返回主事件流中步骤(1)。2.如果取款金额超过2000元,则显示信息“输入金额不能超过2000元,请重新输入”,并返回主事件流中步骤(1)。3.如果账户余额小于取款金额,则显示信息“账户余额不足,请重新输入”,并返回主事件流中步骤(1)。4.顾客在确认取款金额前可以选择取消交易。后置条件:如果取款成功,系统从账户余额中减去相应数额,并返回等待状态;如果顾客取消交易,则返回等待状态。“取款用例”描述用例名称:Withdrawal参与者:Customer,BankSystem,CardReader,CashDispenser,Printer前置条件:顾客已插入银行卡,密码验证正确,顾客按下“取款”按钮后置条件:如果取款成功,系统从账户余额中减去相应数额,并返回等待状态;如果顾客取消交易,则返回等待状态。顺序图描述用例sdStartup:OperatorPanel:ATM:CashDispenser:NetworktoBankSwitchOn()PerformStartup()getInitialCash()InitialCash()setInitialCash()openConnection()交互图与用例模型之间的对应关系:对于动作绪论比较简单的用例,一个交互图对应一个用例;对于比较复杂的用例,可能对应多个交互图,每个交互图表示一个相对简单的子动作序列。图4-5、4-6、4-7请自行分析内容4.1基于UML的分析与设计过程4.2用例分析与设计4.3概念模型和顶层架构设计4.4用户界面设计4.5数据模型设计4.6设计精化4.7类设计4.8部署模型设计(1)概念模型设计概念模型针对问题领域中的对象进行描述,顶层架构依据概念模型进行设计。在用户需求和相关的业务领域中,往往有一些全局性的概念对于理解需求至关重要,因此,有必要抽取这些概念,研究这些概念之间的关系。UML类图非常适合用来建立领域概念模型,描述在问题域中存在哪些主要概念和对象,并表示出它们之间的关系,例如关联、聚集、继承等。关键概念为建立以UML类图表示的领域概念模型,首先必须标识关键概念。关键概念的来源包括:(1)业务需求描述、用例说明;(2)业务领域中的相关规范、标准、术语定义。(3)反映业务领域知识的既往经验。分析类描述概念模型的UML类图主要由分析类组成。分析类是指直接服务于用户功能性需求的概念层面的类,它们与待开发软件系统的具体实现技术无关。概念层UML类图也可以称为分析类图。三种分析类边界类。负责目标软件系统与参与者之间的交互,构造型为boundary。控制类。作为完成用例任务的责任承担者,负责协调、控制其它类共同完成用例规定的功能或行为。构造型为control。实体类。负责保存目标软件系统中具有持久意义的信息项并向其它类提供读、写信息项内容的必要操作接口,一般不涉及业务逻辑处理。构造型为entity。图4-8ATM系统的概念模型——分析类图(2)顶层架构设计顶层架构的主要目的是为后续的分析和设计活动建立一种结构和划分,以便开发人员在不同的开发阶段,以及同一开发阶段的不同开发人员,能够聚焦于系统的不同部分。顶层架构是分析和设计的阶段成果的承载体。随着开发过程的推进,框架中的内容不断丰富、翔实,最终演进为完整的面向对象软件结构。顶层架构设计顶层架构的设计可以把体系结构设计方法与概念模型得到的结果结合起来考虑,利用一定的体系结构模式(例如分层模式、模型-视图-控制器MVC模式等)对概念模型中的相关元素进行组织,同时需要考虑目标软件系统与其它作为参与者的外部系统之间的联系和交互方式。UML包图非常适合于表示软件顶层架构,可以从某种视角将具有比较密切的关联的一些类划分为一个包,分属不同包的两个类之间的关联则比较松散。图4-9层次结构组织的ATM系统的顶层架构内容4.1基于UML的分析与设计过程4.2用例分析与设计4.3概念模型和顶层架构设计4.4用户界面设计4.5数据模型设计4.6设计精化4.7类设计4.8部署模型设计用户界面设计的内容用户界面是对于用户的直接表现,直接影响到用户对软件易用性、友好性的感觉。用户界面包含两方面内容:首先要完整地包括用户在使用软件过程中所需的各种元素,例如窗口、菜单、按钮、输入文本框、选择列表、提示信息等,缺乏这些元素中的某些将会导致软件功能无法被用户正常完成;其次要求具有良好的外观和布局,例如背景颜色、按钮等元素的位置、选择列表中条目的顺序等,这些因素的不足可能不会影响软件功能的正确使用,但会给用户带来不便、迷惑甚至反感。本节关注第一方面的内容用户界面的层次和结构用户界面元素分为两个层次:屏幕:用构造型screen表示窗口:屏幕上的组成部分(文本框、按钮等)统一称为窗口。用构造型window表示用户界面的结构可以由UML类图描述,屏幕和窗口用类进行表示,并给出它们之间的关系。屏幕之间的切换过程可以用UML状态图表示。每个状态表示当时所处的屏幕,迁移表示用户激励。当屏幕中有许多窗口时,可以对窗口划分层次,一些简单的窗口可以作为复杂窗口的属性和操作。屏幕结构类图screenInputCustomerInfowindowPromptInfo1-RightBottom1windowFunctionsOptions+NewProducts()+ProductQuery()+UpdateCustomerInfo()+OrderManage()1-Left1windowCustomerInfo+Submit()+setEm

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功