第4、5章_软件设计方法_第1页
第4、5章_软件设计方法_第2页
第4、5章_软件设计方法_第3页
第4、5章_软件设计方法_第4页
第4、5章_软件设计方法_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

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

文档简介

1、1引言引言面向对象开发方法的核心是利用面向对象面向对象开发方法的核心是利用面向对象的概念和方法对软件需求分析和设计,建的概念和方法对软件需求分析和设计,建立面向对象的软件分析和设计模型。立面向对象的软件分析和设计模型。面向对象软件开发过程从领域概念到设计面向对象软件开发过程从领域概念到设计概念和代码实现都以类和对象为核心,是概念和代码实现都以类和对象为核心,是一个逐步精化的过程,因此需求分析和设一个逐步精化的过程,因此需求分析和设计之间并没有严格的分界线。计之间并没有严格的分界线。本章使用本章使用UML进行软件分析和设计。进行软件分析和设计。4.1 基于基于UML的分析与设计的分析与设计UML

2、是独立于软件开发过程的,它几乎可是独立于软件开发过程的,它几乎可以用于任何类型的软件开发过程,包括瀑以用于任何类型的软件开发过程,包括瀑布式、迭代式、螺旋式等不同模型。布式、迭代式、螺旋式等不同模型。在软件分析和设计中,可以根据项目的特在软件分析和设计中,可以根据项目的特征、开发组织在已有实践中定义的相关规征、开发组织在已有实践中定义的相关规范、设计人员本身的偏好等因素,对基于范、设计人员本身的偏好等因素,对基于UML的软件设计过程进行定制。的软件设计过程进行定制。 根据根据UML各种视图的特点,它们可能更适各种视图的特点,它们可能更适用于软件分析与设计的某些活动,形成了用于软件分析与设计的某

3、些活动,形成了一些常用的设计方式与过程,起到一定的一些常用的设计方式与过程,起到一定的指导作用,但并没有强制性要求。指导作用,但并没有强制性要求。基于基于UML的分析与设计过程的分析与设计过程使用使用UML的软件分析的软件分析和设计的较为通用的和设计的较为通用的过程,实践中开发人过程,实践中开发人员可以此过程为基础员可以此过程为基础进行改进和订制。进行改进和订制。用例分析与设计:用例分析与设计:需求获取,分析和描述的过程,它将利用例及用例图表示需需求获取,分析和描述的过程,它将利用例及用例图表示需求。求。概念模型与顶层架构设计:概念模型与顶层架构设计:抽取全局性的概念,为后续的分析和设计活动建

4、立结构和划抽取全局性的概念,为后续的分析和设计活动建立结构和划分。分。用户界面设计:用户界面设计:设计每个界面中的所有界面元素,确定初步的界面布局,定设计每个界面中的所有界面元素,确定初步的界面布局,定义用户界面动作对软件系统中设计元素的要求。增加专用类义用户界面动作对软件系统中设计元素的要求。增加专用类与对象。与对象。数据模型的设计:数据模型的设计:确定设计模型中需要持久保存的类的对象及其属性,定义持确定设计模型中需要持久保存的类的对象及其属性,定义持久持久存储数据之间的组织方式,并明确数据模型中的操作久持久存储数据之间的组织方式,并明确数据模型中的操作行为。行为。设计的精化:设计的精化:对

5、上面的逻辑、界面、数据模型等不同侧重对上面的逻辑、界面、数据模型等不同侧重点的设计结果进行整理,合并相似的类,保点的设计结果进行整理,合并相似的类,保证各模型之间的一致性,并消除冗余。证各模型之间的一致性,并消除冗余。类设计:类设计:对类进行细化设计,精化类之间的关系以及类对类进行细化设计,精化类之间的关系以及类的操作和属性,使它们能够直接提交给软件构的操作和属性,使它们能够直接提交给软件构造阶段进行编码实现。造阶段进行编码实现。部署模型设计:部署模型设计:对软件最终的元素结构以及运行的具体环境进对软件最终的元素结构以及运行的具体环境进行描述行描述4.2用例分析与设计用例分析与设计案例:银行案

6、例:银行ATM自动柜员机的需求简述(自动柜员机的需求简述(本案例将要开发的本案例将要开发的ATM系统能够为顾客提系统能够为顾客提供以下基本服务,它们统一称为交易):供以下基本服务,它们统一称为交易):取款服务。顾客可以用银行卡从对应的账户中支取现取款服务。顾客可以用银行卡从对应的账户中支取现金,现金必须是金,现金必须是100元的整数倍,且每次取款不能超过元的整数倍,且每次取款不能超过2000元。元。存款服务。顾客可以把现金存入与银行卡对应的账户存款服务。顾客可以把现金存入与银行卡对应的账户中。中。转帐服务。顾客可以把一个银行卡对应的账户中的款转帐服务。顾客可以把一个银行卡对应的账户中的款项转帐

7、到另一个银行账户中。项转帐到另一个银行账户中。查询服务。顾客能够查询一个银行卡对应的账户中的查询服务。顾客能够查询一个银行卡对应的账户中的余额余额。银行银行ATM自动柜员机需求简述自动柜员机需求简述该该ATM系统包括以下组成部分:系统包括以下组成部分:读卡器读卡器交互的控制台,键盘及显示器交互的控制台,键盘及显示器送出现金的装置,取款器送出现金的装置,取款器存款的插槽,存款器存款的插槽,存款器打印机打印机启动和关闭启动和关闭ATM系统的开关键盘系统的开关键盘ATM系统与银行服务通过特定的网络连接进行通信系统与银行服务通过特定的网络连接进行通信ATM系统在提供以上服务的过程中,必须满足系统在提供

8、以上服务的过程中,必须满足以下要求以下要求一个顾客可以在最终确认前放弃一项交易一个顾客可以在最终确认前放弃一项交易ATM在执行交易过程中将与银行系统进行通信,在执行交易过程中将与银行系统进行通信,对是否允许交易进行验证对是否允许交易进行验证ATM为每次成功的交易提供一个打印回执为每次成功的交易提供一个打印回执ATM需要维护一个内部日志,对每次交易进行记需要维护一个内部日志,对每次交易进行记录录(1)确定用例)确定用例采用用例模型描述系统需求时,首先需要采用用例模型描述系统需求时,首先需要开发人员从业务需求描述出发获取参与者开发人员从业务需求描述出发获取参与者(Actor)和场景,对场景进行汇总

9、、分类)和场景,对场景进行汇总、分类、抽象,形成用例。、抽象,形成用例。场景是从单个参与者的角度观察目标软件场景是从单个参与者的角度观察目标软件系统的功能和外部行为,这种功能通过系系统的功能和外部行为,这种功能通过系统与用户之间的交互来表示。统与用户之间的交互来表示。场景是用例的实例,而用例是某类场景的场景是用例的实例,而用例是某类场景的共同抽象。共同抽象。 确定参与者和场景确定参与者和场景对多个场景进行抽象对多个场景进行抽象用例用例获取场景获取场景以下问题可以帮助分析人员获取场景:以下问题可以帮助分析人员获取场景:目标软件系统有哪些参与者?目标软件系统有哪些参与者?参与者希望系统执行的任务有

10、哪些?参与者希望系统执行的任务有哪些?参与者希望获得哪些信息?这些信息由谁生参与者希望获得哪些信息?这些信息由谁生成?由谁修改?成?由谁修改?参与者需要通知系统哪些事件?系统响应这参与者需要通知系统哪些事件?系统响应这些事件时会表现出哪些外部行为?些事件时会表现出哪些外部行为?系统将通告参与者哪些事件?系统将通告参与者哪些事件?确定参与者和场景的关键在于理解业务领域和初步需求描确定参与者和场景的关键在于理解业务领域和初步需求描述文档。述文档。定义用例定义用例在场景确定之后,通过对场景的汇总、分在场景确定之后,通过对场景的汇总、分类归并、抽象即可形成用例。类归并、抽象即可形成用例。需要特别注意的

11、是,参与者并只限于人员需要特别注意的是,参与者并只限于人员,其它与目标软件发生交互的外部实体或,其它与目标软件发生交互的外部实体或系统也是参与者;用例应该是对参与者可系统也是参与者;用例应该是对参与者可见的系统需求或功能,否则不能作为用例见的系统需求或功能,否则不能作为用例。 如果多个外部实体在与目标软件系统进行如果多个外部实体在与目标软件系统进行交互时扮演同一角色,这些实体用同一参交互时扮演同一角色,这些实体用同一参与者表示;如果一个外部实体扮演多个角与者表示;如果一个外部实体扮演多个角色,则需要多个参与者来表示同一实体,色,则需要多个参与者来表示同一实体,即参与者与角色一一对应。即参与者与

12、角色一一对应。确定用例确定用例确认参与者和责任不同的参与者不同的参与者系统管理员、程序员、会计、出纳员系统管理员、程序员、会计、出纳员与系统通信的其他系统与系统通信的其他系统不同的责任不同的责任系统配置、程序设计、财务管理、现金管理系统配置、程序设计、财务管理、现金管理分析参与者的工作:使用案例分析参与者的工作:使用案例各种使用过程、步骤各种使用过程、步骤ATM案例的参与者案例的参与者“顾客顾客”(Customer)“操作管理人员操作管理人员”(Operator)“银行服务器银行服务器”(Bank System)“读卡器读卡器”(Card Reader)“存款器存款器”(Cash Accept

13、or)“取款器取款器”(Cash Dispenser)“打印机打印机”(Printer)参与者:与系统交互的人、设备、其他系统参与者:与系统交互的人、设备、其他系统ATM案例的用例案例的用例“取款取款”(Withdrawal)“存款存款”(Deposit)“转帐转帐”(Transfer)“查询余额查询余额”(Inquiry)“开机开机”(System Startup)“关机关机”(System Shutdown)用例:系统的功能用例:系统的功能(2)生成用例图)生成用例图确定参与者与用例之后,建立用例图,描述确定参与者与用例之后,建立用例图,描述参与者与用例、用例之间的关系。参与者与用例、用例

14、之间的关系。生成用例图是一个逐步精化的过程,首先可生成用例图是一个逐步精化的过程,首先可以建立初步的用例图,包括前面发现的参与以建立初步的用例图,包括前面发现的参与者和用例;者和用例;然后对用例图进行细化,定义用例之间然后对用例图进行细化,定义用例之间“包含包含”、 “扩展扩展”、“继承继承”等关系,并可能需要定等关系,并可能需要定义新的用例,以能够更准确地使用用例图描义新的用例,以能够更准确地使用用例图描述系统需求。述系统需求。 用例用例建模建模步骤步骤1) 描述各种使用案例描述各种使用案例描述描述交互过程的动作序列交互过程的动作序列模拟系统工作的交互过程模拟系统工作的交互过程2)确认动作)

15、确认动作检查使用案例,引入并描述动作检查使用案例,引入并描述动作覆盖覆盖所有可能发生的动作所有可能发生的动作用例用例建模建模步骤步骤3) 跟踪跟踪执行执行过程过程为每个为每个使用使用案例案例制作制作顺序顺序图图描述对象之间的描述对象之间的消息消息传送过程传送过程4) 构造状态转移图构造状态转移图为为每个对象每个对象构造构造的状态转移图的状态转移图反映对象接受和发送的反映对象接受和发送的消息消息考虑所有考虑所有使用使用案例案例中的所有中的所有消息消息生成初步用例图生成初步用例图用例图的细化用例图的细化包含(包含(include)关系)关系扩展(扩展(extend)关系)关系 继承关系:为了对相似

16、用例的交互模式进继承关系:为了对相似用例的交互模式进行抽象行抽象“取款、存款、转账、查询取款、存款、转账、查询”可被认为是可被认为是“交交易易”过程,因此定义过程,因此定义“交易交易”用例。用例。插卡后可以不执行任何一个插卡后可以不执行任何一个“交易交易”,或执行,或执行多次多次“交易交易”,因此,因此“交易交易”不能体现参与者不能体现参与者需系统的交互过程,所以定义需系统的交互过程,所以定义“会话会话”用例。用例。细化后细化后ATM用例图用例图(3)用例描述)用例描述从外部视角看,一个用例是参与者与目标从外部视角看,一个用例是参与者与目标软件之间的一次交互过程;从系统内部视软件之间的一次交互

17、过程;从系统内部视角看,一个用例是系统执行的一系列动作角看,一个用例是系统执行的一系列动作,动作执行的结果能被外部的参与者觉察,动作执行的结果能被外部的参与者觉察。为了使用例中包含的动作和执行过程具体为了使用例中包含的动作和执行过程具体化,应对用例进行描述。对用例的完整描化,应对用例进行描述。对用例的完整描述包括:用例名称、参与者、前置条件、述包括:用例名称、参与者、前置条件、一个主事件流、一个主事件流、0到多个辅事件流、后置条到多个辅事件流、后置条件。件。主事件流表示正常情况下参与者与系统之间的主事件流表示正常情况下参与者与系统之间的信息交互及动作序列,信息交互及动作序列,辅事件流则表示特殊

18、情况或异常情况下的信息辅事件流则表示特殊情况或异常情况下的信息交互及动作序列。交互及动作序列。“取款用例取款用例”描述描述用例名称用例名称:Withdrawal参与者参与者:Customer,Bank System,Card Reader,Cash Dispenser,Printer前置条件前置条件:顾客已插入银行卡,密码验证正确,顾客按下:顾客已插入银行卡,密码验证正确,顾客按下“取款取款”按钮按钮主事件流主事件流:顾客输入取款金额,并确认。顾客输入取款金额,并确认。系统认可取款金额,并发送指令给取款器。系统认可取款金额,并发送指令给取款器。取款器把相应金额的现金送出。取款器把相应金额的现金

19、送出。打印机打印回执。打印机打印回执。辅事件流辅事件流:如果取款金额不是如果取款金额不是100的整数倍,则显示信息的整数倍,则显示信息“输入金额必须是输入金额必须是100的整数倍,的整数倍,请重新输入请重新输入”,并返回主事件流中步骤(,并返回主事件流中步骤(1)。)。如果取款金额超过如果取款金额超过2000元,则显示信息元,则显示信息“输入金额不能超过输入金额不能超过2000元,请重新输元,请重新输入入” ,并返回主事件流中步骤(,并返回主事件流中步骤(1)。)。如果账户余额小于取款金额,则显示信息如果账户余额小于取款金额,则显示信息“账户余额不足,请重新输入账户余额不足,请重新输入” ,并

20、,并返回主事件流中步骤(返回主事件流中步骤(1)。)。顾客在确认取款金额前可以选择取消交易。顾客在确认取款金额前可以选择取消交易。1.后置条件后置条件:如果取款成功,系统从账户余额中减去相应数额,并返回等待状态;如:如果取款成功,系统从账户余额中减去相应数额,并返回等待状态;如果顾客取消交易,则返回等待状态。果顾客取消交易,则返回等待状态。交互图交互图所有的任务都是一组对象合作完成的,作所有的任务都是一组对象合作完成的,作为对用例的进一步细化,可以使用交互图为对用例的进一步细化,可以使用交互图来描述有哪些对象如何通过消息传递完成来描述有哪些对象如何通过消息传递完成用例。用例。设计交互图的过程也

21、是一个发现概念对象设计交互图的过程也是一个发现概念对象的过程,这些概念层的对象和消息可以作的过程,这些概念层的对象和消息可以作为系统的概念层建模和后续进一步精化提为系统的概念层建模和后续进一步精化提供基础。供基础。顺序图描述用例顺序图描述用例交互图与用例模交互图与用例模型之间的对应关型之间的对应关系:对于动作绪系:对于动作绪论比较简单的用论比较简单的用例,一个交互图例,一个交互图对应一个用例;对应一个用例;对于比较复杂的对于比较复杂的用例,可能对应用例,可能对应多个交互图,每多个交互图,每个交互图表示一个交互图表示一个相对简单的子个相对简单的子动作序列。动作序列。Session用例的顺序图描述

22、用例的顺序图描述Traction用例的顺序图描述用例的顺序图描述Withdrawal用例的顺序图描述用例的顺序图描述小结小结用例分析与设计过程是基于用例分析与设计过程是基于UML的软件设的软件设计过程的基础,只有建立了清晰、准确的计过程的基础,只有建立了清晰、准确的用例模型并对用例执行过程进行较为全面用例模型并对用例执行过程进行较为全面的描述,才能使后续设计活动不出现偏差的描述,才能使后续设计活动不出现偏差。在为用例建立交互图过程中,可以逐步发在为用例建立交互图过程中,可以逐步发现各种系统概念层对象,这些对象为下一现各种系统概念层对象,这些对象为下一步建立面向对象的概念模型提供了依据,步建立面

23、向对象的概念模型提供了依据,并且可以作为顶层架构设计的基础。并且可以作为顶层架构设计的基础。(1)概念模型设计)概念模型设计概念模型针对问题领域中的对象进行描述概念模型针对问题领域中的对象进行描述,顶层架构依据概念模型进行设计。,顶层架构依据概念模型进行设计。在用户需求和相关的业务领域中,往往有在用户需求和相关的业务领域中,往往有一些一些全局性的全局性的概念对于理解需求至关重要概念对于理解需求至关重要,因此,有必要抽取这些概念,研究这些,因此,有必要抽取这些概念,研究这些概念之间的关系。概念之间的关系。UML类图类图非常适合用来建立领域概念模型非常适合用来建立领域概念模型,描述在问题域中存在哪

24、些主要概念和对,描述在问题域中存在哪些主要概念和对象,并表示出它们之间的关系,例如关联象,并表示出它们之间的关系,例如关联、聚集、继承等。、聚集、继承等。关键概念关键概念为建立以为建立以UML类图表示的领域概念模型,类图表示的领域概念模型,首先必须标识关键概念。关键概念的来源首先必须标识关键概念。关键概念的来源包括:包括:(1)业务需求描述、用例说明;)业务需求描述、用例说明;(2)业务领域中的相关规范、标准、术语定)业务领域中的相关规范、标准、术语定义。义。(3)反映业务领域知识的既往经验。)反映业务领域知识的既往经验。分析类分析类描述概念模型的描述概念模型的UML类图主要由分析类组类图主要

25、由分析类组成。成。分析类是指直接服务于用户功能性需求的分析类是指直接服务于用户功能性需求的概念层面的类,它们与待开发软件系统的概念层面的类,它们与待开发软件系统的具体实现技术无关。具体实现技术无关。概念层概念层UML类图也可以称为分析类图。类图也可以称为分析类图。 三种分析类三种分析类边界类。负责目标软件系统与参与者之间的交互,构造型为边界类。负责目标软件系统与参与者之间的交互,构造型为。通常情况下,参与者与用例之间的一种通信通常情况下,参与者与用例之间的一种通信连接对应一个边界类。连接对应一个边界类。其职责包括:其职责包括:边界控制:边界控制:包括定义数据的格式及内容转换,输出结果的呈现,软

26、包括定义数据的格式及内容转换,输出结果的呈现,软件运行过程中界面的变化与切换等。件运行过程中界面的变化与切换等。外部接口:外部接口:实现目标软件系统与外部系统或外部设备之间的信息交实现目标软件系统与外部系统或外部设备之间的信息交流和互操作,主要关注跨越目标软件系统边界的通信协流和互操作,主要关注跨越目标软件系统边界的通信协议议环境隔离:环境隔离:对目标软件系统与操作系统、数据库管理系统、中间件对目标软件系统与操作系统、数据库管理系统、中间件等环境软件进行交互的功能与特性进行封装,使目标软等环境软件进行交互的功能与特性进行封装,使目标软件系统的其余部分尽右能独立于环境软件。件系统的其余部分尽右能

27、独立于环境软件。控制类。作为完成用例任务的责任承担者控制类。作为完成用例任务的责任承担者,负责协调、控制其它类共同完成用例规,负责协调、控制其它类共同完成用例规定的功能或行为。构造型为定的功能或行为。构造型为。用例通常对应控制类用例通常对应控制类。实体类。负责保存目标软件系统中具有持实体类。负责保存目标软件系统中具有持久意义的信息项并向其它类提供读、写信久意义的信息项并向其它类提供读、写信息项内容的必要操作接口,一般不涉及业息项内容的必要操作接口,一般不涉及业务逻辑处理。构造型为务逻辑处理。构造型为 。ATM系统的概念模型系统的概念模型分析模型分析模型图图(2)顶层架构设计)顶层架构设计顶层架

28、构的主要目的是为后续的分析和设顶层架构的主要目的是为后续的分析和设计活动建立一种结构和划分,以便开发人计活动建立一种结构和划分,以便开发人员在不同的开发阶段,以及同一开发阶段员在不同的开发阶段,以及同一开发阶段的不同开发人员,能够聚焦于系统的不同的不同开发人员,能够聚焦于系统的不同部分。部分。顶层架构是分析和设计的阶段成果的承载顶层架构是分析和设计的阶段成果的承载体。体。随着开发过程的推进,框架中的内容不断随着开发过程的推进,框架中的内容不断丰富、翔实,最终演进为完整的面向对象丰富、翔实,最终演进为完整的面向对象软件结构。软件结构。 顶层架构设计顶层架构设计顶层架构的设计可以把体系结构设计方法

29、顶层架构的设计可以把体系结构设计方法与概念模型得到的结果结合起来考虑,利与概念模型得到的结果结合起来考虑,利用一定的体系结构模式(例如分层模式、用一定的体系结构模式(例如分层模式、模型视图控制器模型视图控制器MVC模式等)对概念模式等)对概念模型中的相关元素进行组织,同时需要考模型中的相关元素进行组织,同时需要考虑目标软件系统与其它作为参与者的外部虑目标软件系统与其它作为参与者的外部系统之间的联系和交互方式。系统之间的联系和交互方式。UML包图非常适合于表示软件顶层架构,包图非常适合于表示软件顶层架构,可以从某种视角将具有比较密切的关联的可以从某种视角将具有比较密切的关联的一些类划分为一个包,

30、分属不同包的两个一些类划分为一个包,分属不同包的两个类之间的关联则比较松散。类之间的关联则比较松散。 ATM系统的顶层架构图系统的顶层架构图用户界面设计的内容用户界面设计的内容用户界面是对于用户的直接表现,直接影用户界面是对于用户的直接表现,直接影响到用户对软件易用性、友好性的感觉。响到用户对软件易用性、友好性的感觉。用户界面包含两方面内容:用户界面包含两方面内容:首先要首先要完整地包括用户在使用软件过程中所需的各种完整地包括用户在使用软件过程中所需的各种元素元素,例如窗口、菜单、按钮、输入文本框、选择列,例如窗口、菜单、按钮、输入文本框、选择列表、提示信息等,缺乏这些元素中的某些将会导致软表

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

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

33、杂窗口的属性和操作。性和操作。屏幕结构类图屏幕结构类图CustomerConsole用户通过控制台使用用户通过控制台使用ATM的过程中,可分为的过程中,可分为5个个相对独立的过程相对独立的过程(1)插入银行卡到输入正确密码并进入选择交易类)插入银行卡到输入正确密码并进入选择交易类型的屏幕型的屏幕(2)选择)选择“取款取款”交易,并到完成后退出或返回选交易,并到完成后退出或返回选择交易类型的屏幕择交易类型的屏幕(3)选择)选择“存款存款”交易,并到完成后退出或返回选交易,并到完成后退出或返回选择交易类型的屏幕择交易类型的屏幕(4)选择)选择“转帐转帐”交易,并到完成后退出或返回选交易,并到完成后

34、退出或返回选择交易类型的屏幕择交易类型的屏幕(5)选择)选择“查询查询”交易,并到完成后退出或返回选交易,并到完成后退出或返回选择交易类型的屏幕择交易类型的屏幕屏幕变化状态图屏幕变化状态图“插卡插卡”过程的屏幕转换状态图:每个状态表示一个屏幕,迁移表过程的屏幕转换状态图:每个状态表示一个屏幕,迁移表示当前屏幕用户的激励。示当前屏幕用户的激励。屏幕结构类图屏幕结构类图InputPin屏幕屏幕的结构图。每的结构图。每个屏幕的结构个屏幕的结构可以用类图设可以用类图设计,即屏幕上计,即屏幕上有什么(窗有什么(窗口),如:文口),如:文本框、按钮等本框、按钮等用户控制包图用户控制包图顾客控制台包含丰富的

35、元素,可以进一步细化形成一个对应的顾客控制台包含丰富的元素,可以进一步细化形成一个对应的包,专门描述界面元素其中有分为包,专门描述界面元素其中有分为5个子包,分别对应个子包,分别对应“插插卡卡”、“取款取款”、“存款存款”、“转账转账”、“查询查询”5个独立的个独立的过程。每个子包又对应一些列的屏幕,并对应到表示屏幕切换过程。每个子包又对应一些列的屏幕,并对应到表示屏幕切换的状态图的状态图插卡包图插卡包图小结小结一个独立的过程包含若干屏幕变换一个独立的过程包含若干屏幕变换状态图表示屏幕间的变换状态图表示屏幕间的变换状态图的一个状态表示一个屏幕状态图的一个状态表示一个屏幕一个屏幕的结构用屏幕结构

36、(类)图表示一个屏幕的结构用屏幕结构(类)图表示数据模型设计数据模型设计数据模型设计包括数据结构设计、数据库数据模型设计包括数据结构设计、数据库设计、数据文件设计等,本节主要关注持设计、数据文件设计等,本节主要关注持久数据存储设计。持久数据模型设计步骤久数据存储设计。持久数据模型设计步骤为:为:(1)确定设计模型中需要持久保存的类的对象及其属性,)确定设计模型中需要持久保存的类的对象及其属性, 其中其中实体类实体类是主要关注对象。是主要关注对象。(2)确定持久存储的数据之间的组织方式。)确定持久存储的数据之间的组织方式。(3)确定数据模型中的操作行为,例如数据完整性验证、)确定数据模型中的操作

37、行为,例如数据完整性验证、 数据读取、存储与更新、数据求和、求数据平均值等。数据读取、存储与更新、数据求和、求数据平均值等。(4)进一步优化持久数据操作的性能,如使用数据索引、)进一步优化持久数据操作的性能,如使用数据索引、 存储过程、触发器等方式。存储过程、触发器等方式。数据模型设计的输出制品是数据模型,包括以数据模型设计的输出制品是数据模型,包括以UML类图表示的数据库表格以类图表示的数据库表格以及它们之间的关系。数据模型必须满足设计模型对持久数据存储的要求。及它们之间的关系。数据模型必须满足设计模型对持久数据存储的要求。关系数据库建模关系数据库建模类对应于关系数据模型中的表格(类对应于关

38、系数据模型中的表格(table),对象对应于记录(,对象对应于记录(record),属性对应),属性对应于表格中的字段(于表格中的字段(field)或者列()或者列(column),类中的方法实现可以用),类中的方法实现可以用SQL语句对数语句对数据库表格进行操作。据库表格进行操作。 表示表格,表示表格,表示关键字,表示关键字,foreign key表示外键表示外键数据模型数据模型4.6 设计精化设计精化设计精化的任务:设计精化的任务:(1)精化软件架构)精化软件架构(2)调整软件组成类)调整软件组成类(3)精化交互模型)精化交互模型(4)精化类之间关系)精化类之间关系(1)精化软件架构)精化

39、软件架构精化软件架构的主要目的是寻找一种理想精化软件架构的主要目的是寻找一种理想的包划分方案,使得每个包中直接包含的的包划分方案,使得每个包中直接包含的类的数量规模适中,包的边界清晰、自然类的数量规模适中,包的边界清晰、自然,并且包间的耦合度较低。,并且包间的耦合度较低。随着分析和设计不断深入,原有包图中的随着分析和设计不断深入,原有包图中的包可能包含了过多的类,此时需要对其进包可能包含了过多的类,此时需要对其进行分拆。行分拆。按照软件工程强内聚、松耦合的原则,这按照软件工程强内聚、松耦合的原则,这种分拆应该具有某种自然划分的性质,并种分拆应该具有某种自然划分的性质,并且尽可能降低划分以后的子

40、包之间的耦合且尽可能降低划分以后的子包之间的耦合度。度。 精化软件架构精化软件架构包间的耦合度主要取决于依赖关系,包间的依赖关系又取包间的耦合度主要取决于依赖关系,包间的依赖关系又取决于两个包中类之间的关系,包划分(拆分、移动、合并决于两个包中类之间的关系,包划分(拆分、移动、合并等)的有关原则:等)的有关原则:避免包间的循环依赖关系,即排除包避免包间的循环依赖关系,即排除包P1依赖于包依赖于包P2、P2又依赖于又依赖于P1的情形。的情形。在层次结构中,位于较低层次的通用包不应当依赖于在层次结构中,位于较低层次的通用包不应当依赖于较高层次中的专用包。较高层次中的专用包。在层次结构中,较高层次的

41、包可以依赖于较低层次的在层次结构中,较高层次的包可以依赖于较低层次的包,但应尽量在相邻的层次间发生。包,但应尽量在相邻的层次间发生。如果针对某些子系统专门划分了接口包和实现包,那如果针对某些子系统专门划分了接口包和实现包,那么,其它与该子系统相关的包只能依赖于接口包,不么,其它与该子系统相关的包只能依赖于接口包,不能依赖于实现包。能依赖于实现包。图图4-17、4-18 “用户交互层包、子包精化后的模型用户交互层包、子包精化后的模型”用户交互层包精化后的模型用户交互层包精化后的模型用户交互层中子包精化后的模型用户交互层中子包精化后的模型(2)调整软件构成类)调整软件构成类对设计模型中的类进行调整

42、和优化,以满对设计模型中的类进行调整和优化,以满足强内聚、低耦合、简单性、自然性等软足强内聚、低耦合、简单性、自然性等软件工程原则。调整和优化主要包括:件工程原则。调整和优化主要包括:(1)增加辅助类,例如实现通信、关键算法)增加辅助类,例如实现通信、关键算法的类的类(2)合并相互通信频繁的类)合并相互通信频繁的类 (3)分拆规模过大的类)分拆规模过大的类 精化过程中新增加的类(3)精化交互模型)精化交互模型精化交互图时,消息名、对象交互的参数精化交互图时,消息名、对象交互的参数、返回值等均需要注明。需要考虑以下内、返回值等均需要注明。需要考虑以下内容:容:(1)要考虑软件架构和组成类被调整之

43、后对)要考虑软件架构和组成类被调整之后对交互模型会产生哪些影响,新出现的对象交互模型会产生哪些影响,新出现的对象或拆分后的对象如何参与交互过程,在其或拆分后的对象如何参与交互过程,在其中起到什么样的作用中起到什么样的作用(2)对象在交互过程中的消息传递需要哪些)对象在交互过程中的消息传递需要哪些参数和返回值。参数和返回值。(3)交互过程是否需要细化,例如增加必要)交互过程是否需要细化,例如增加必要的消息,或对局部引用一个更加具体的交的消息,或对局部引用一个更加具体的交互图。互图。图图4-20 精化后的精化后的Withdrawal顺序图顺序图精化后的精化后的Withdrawal顺序图顺序图(4)

44、精化类之间的关系)精化类之间的关系研究类之间的连接关系:研究类之间的连接关系:(1)根据这些连接的语义强度将它们精确地)根据这些连接的语义强度将它们精确地判定为判定为 UML的依赖、关联、聚合或构成关系之一的依赖、关联、聚合或构成关系之一;(2)确定连接的方向及参与连接的类对象之)确定连接的方向及参与连接的类对象之间的数间的数 量对应关系;量对应关系;(3)根据软件复用的要求及软件结构简洁化)根据软件复用的要求及软件结构简洁化、清晰、清晰 化的要求,优化类之间的关系。化的要求,优化类之间的关系。精化类之间的关系精化类之间的关系对象对象obj1和和obj2之间的消息传递机制:之间的消息传递机制:

45、(1)引用全局对象)引用全局对象(2)通过参数传递)通过参数传递(3)引用局部对象)引用局部对象(4)通过类的成员变量:)通过类的成员变量:暂时性连接,用依赖关系表示暂时性连接,用依赖关系表示稳定性连接稳定性连接构成关系构成关系聚合聚合/集关系集关系关联关系(以上两种均不成立关联关系(以上两种均不成立)精化类之间的关系精化类之间的关系其他需要考虑的问题:其他需要考虑的问题:(1)关联类)关联类(2)依赖、构成、聚合关系的方向:尽量将)依赖、构成、聚合关系的方向:尽量将关联单关联单 向化,单向关系更简单,实现代价更小。向化,单向关系更简单,实现代价更小。(3)利用继承精化设计模型,引进新的父类)

46、利用继承精化设计模型,引进新的父类捕获公捕获公 共性。共性。小结小结在设计精化的过程中,同时存在对业务逻在设计精化的过程中,同时存在对业务逻辑、界面、数据模型等不同侧面的设计模辑、界面、数据模型等不同侧面的设计模型进行整理和融合的过程,根据需要合并型进行整理和融合的过程,根据需要合并不同模型中相似的类,消除设计模型之间不同模型中相似的类,消除设计模型之间的冗余,同时必须保证设计模型之间的一的冗余,同时必须保证设计模型之间的一致性。致性。类设计类设计类设计的任务是对各种设计模型中出现的类设计的任务是对各种设计模型中出现的类进行细化设计,以使它们精细至能够直类进行细化设计,以使它们精细至能够直接提

47、交给软件构造阶段进行代码实现,类接提交给软件构造阶段进行代码实现,类设计也是一种对设计的精化,类设计主要设计也是一种对设计的精化,类设计主要包括:包括:(1)对类的属性与操作进行精化。)对类的属性与操作进行精化。(2)对类的对象实例在其生命周期中对外部)对类的对象实例在其生命周期中对外部消息的消息的 响应和状态变化过程进行建模。响应和状态变化过程进行建模。(3)对类中重要操作的实现过程或算法进行)对类中重要操作的实现过程或算法进行描述。描述。(1)关注单个类的内部细节的设计;关注单个类的内部细节的设计;(2)和和(3)属于类的行为模型设计。属于类的行为模型设计。(1)精化类的属性与操作)精化类

48、的属性与操作对于类的每项属性,在设计模型中,可以定对于类的每项属性,在设计模型中,可以定义属性的名称、类型、初始值、取值范围及义属性的名称、类型、初始值、取值范围及属性说明(后三项内容是可选的)。属性说明(后三项内容是可选的)。操作的基本内容包括名称、参数表(含参数操作的基本内容包括名称、参数表(含参数的名称和类型)、返回类型、功能描述。的名称和类型)、返回类型、功能描述。如果操作比较复杂,还需要用文字或如果操作比较复杂,还需要用文字或UML活活动图说明操作的实现算法。动图说明操作的实现算法。精化类的属性与操作精化类的属性与操作属性和操作的作用范围:属性和操作的作用范围:(1)public:对

49、系统中所有类可见:对系统中所有类可见(2)protected:对本类及其子类可见:对本类及其子类可见(3)private:仅对本类可见:仅对本类可见确定属性和操作作用范围的原则:尽量缩小作用范围,每确定属性和操作作用范围的原则:尽量缩小作用范围,每个类仅公开那些直接响应消息所必需的操作。原则上属性个类仅公开那些直接响应消息所必需的操作。原则上属性不宜公开,如果确有必要让其他类读取或者设置该属性的不宜公开,如果确有必要让其他类读取或者设置该属性的值,应通过本类增加值,应通过本类增加get/set函数实现。函数实现。精化类之间的关系精化类之间的关系在类中设置相应属性,实现类之间的关联、聚合、构成关

50、系在类中设置相应属性,实现类之间的关联、聚合、构成关系: :a a、类型为、类型为B B的指针或引用的指针或引用b b、集合类型,集合元素的类型为、集合类型,集合元素的类型为B B的指针或引用的指针或引用c c、类型为、类型为B B的指针或引用的指针或引用d d、集合类型,集合元素的类型为、集合类型,集合元素的类型为B B A AB Ba 1:1的关联或聚合(非构成)关系的关联或聚合(非构成)关系b 1:*的关联或聚合(非构成)关系的关联或聚合(非构成)关系c 1:1的构成关系的构成关系d 1:*的构成关系的构成关系精化类的属性与操作精化类的属性与操作类的操作主要来源于各种设计模型和方案类的操

51、作主要来源于各种设计模型和方案中对类的职责的规定,针对每个类的特征中对类的职责的规定,针对每个类的特征,考虑是否需要以下操作:,考虑是否需要以下操作:(1)对象创建)对象创建(2)对象删除)对象删除(3)对象比较)对象比较(4)对象复制)对象复制(2)类的行为模型设计)类的行为模型设计在两个层次上建模在两个层次上建模(1)针对整个类使用)针对整个类使用UML状态图描述其行状态图描述其行为。为。(2)针对类中某些重要的方法,用)针对类中某些重要的方法,用UML活活动图描述其执行过程或步骤。动图描述其执行过程或步骤。 对象具有一定的生存周期,在其活跃过程中可以响应外部的消息激励,对象具有一定的生存

52、周期,在其活跃过程中可以响应外部的消息激励,执行相应的操作。对象生存期具有不同的状态,位于不同的状态可以响应执行相应的操作。对象生存期具有不同的状态,位于不同的状态可以响应不同的消息,因此可以用状态图刻画对象的动态行为。不同的消息,因此可以用状态图刻画对象的动态行为。 只需针对具有明显的状态特征并具有比较复杂的只需针对具有明显的状态特征并具有比较复杂的“状态状态事件事件响应响应”的类设计状态图即可。状态图主要针对控制类,很少对实体类。的类设计状态图即可。状态图主要针对控制类,很少对实体类。 图图4-23、4-24 状态图中的节点是状态状态图中的节点是状态对于某些执行比较重要的任务且控制流程较为

53、复杂的方对于某些执行比较重要的任务且控制流程较为复杂的方法,可以使用活动图描述其执行过程法,可以使用活动图描述其执行过程 图图4-25 活动图中的节点是动作活动图中的节点是动作Withdrawal类中方法类中方法Check()执行过程的活动图执行过程的活动图小结小结类的设计最终应该达到准确、详细描述类类的设计最终应该达到准确、详细描述类的构成和行为的目标。由于面向对象软件的构成和行为的目标。由于面向对象软件的最终实现表现为一组类的实现,并且最的最终实现表现为一组类的实现,并且最终的测试和运行也是以类为基础,因此类终的测试和运行也是以类为基础,因此类的设计结果是软件开发中后续活动的直接的设计结果

54、是软件开发中后续活动的直接参考依据。参考依据。部署模型设计部署模型设计部署模型设计考虑如下内容:部署模型设计考虑如下内容:(1)最终开发完成的软件包括哪些制品形式)最终开发完成的软件包括哪些制品形式;(2)软件运行环境存在哪些类型的物理节点)软件运行环境存在哪些类型的物理节点;(3)不同节点之间的连接和通信形式是什么)不同节点之间的连接和通信形式是什么;(4)软件制品应该如何在物理节点上进行部)软件制品应该如何在物理节点上进行部署,即它们的部署映射关系。署,即它们的部署映射关系。部署图对于复杂的分布式软件系统非常有用,部署图还部署图对于复杂的分布式软件系统非常有用,部署图还可以描述整个系统结构

55、的一些特殊要求,例如系统的备可以描述整个系统结构的一些特殊要求,例如系统的备份和容错结构设计。份和容错结构设计。ATM系统部署模型系统部署模型第第5章章面向数据流的软件设计方法面向数据流的软件设计方法面向数据流的软件设计方法即结构化设计面向数据流的软件设计方法即结构化设计方法,其目标是为结构化软件的设计提供方法,其目标是为结构化软件的设计提供一个一个系统化的途径系统化的途径。面向数据流的设计方法根据分析阶段对数面向数据流的设计方法根据分析阶段对数据流的分析设计软件结构,根据数据流图据流的分析设计软件结构,根据数据流图的特性定义两种的特性定义两种“映射映射”并转化为并转化为程序结构程序结构。映射

56、映射DFD( (问题结构问题结构) )软件系统的结构软件系统的结构( (程序结构程序结构) )数据流图的层次数据流图的层次信息处理系统一般由信息处理系统一般由数据流数据流和一系列的和一系列的转转换换构成,这些转换将输入数据流变化为输构成,这些转换将输入数据流变化为输出数据流。数据流图就是用来刻画数据流出数据流。数据流图就是用来刻画数据流和转换的信息系统建模技术和转换的信息系统建模技术 。它提供层次结构让分析人员能够方便地表它提供层次结构让分析人员能够方便地表示任意抽象级别上的信息系统或其子部分示任意抽象级别上的信息系统或其子部分,并支持,并支持问题分解、逐步求精问题分解、逐步求精的分析方法的分

57、析方法。 初始时,整个信息处理系统可以用顶级(初始时,整个信息处理系统可以用顶级(第级)数据流图表示。第级)数据流图表示。 在数据流方法中,对数据(数据流)的精在数据流方法中,对数据(数据流)的精化是伴随着对化是伴随着对转换转换的精化而同步进行的。的精化而同步进行的。 (1)数据流图)数据流图顶级数据流图顶级数据流图数据流图的精化数据流图的精化在进行逐层精化的过程中,必须维持层间在进行逐层精化的过程中,必须维持层间数据流图的平衡,即,数据流图的平衡,即,被精化的转换的输被精化的转换的输入、输出流必须与精化它的数据流子图的入、输出流必须与精化它的数据流子图的初始输入流和最终输出流严格一致初始输入

58、流和最终输出流严格一致。要注意逐层精化必须适可而止,因为设计要注意逐层精化必须适可而止,因为设计之前的分析活动只求对问题的全面、清晰之前的分析活动只求对问题的全面、清晰的理解,并不关心软件的设计细节。的理解,并不关心软件的设计细节。 (2)数据字典)数据字典数据流图机制并不足以完整地描述软件需数据流图机制并不足以完整地描述软件需求,因为没有描述数据流的内容。求,因为没有描述数据流的内容。数据流图必须与描述并组织数据条目的数数据流图必须与描述并组织数据条目的数据字典配套使用。据字典配套使用。 数据条目的定义必须遵循以下原则:精确数据条目的定义必须遵循以下原则:精确、简洁,并且能为用户方和软件开发

59、方共、简洁,并且能为用户方和软件开发方共同理解。同理解。 数据字典的内容数据字典的内容n在数据流图中标识数据流、数据源或外部在数据流图中标识数据流、数据源或外部实体的名称与别名;实体的名称与别名;n数据类型;数据类型;n所有以它作为输入流或输出流的转换的列所有以它作为输入流或输出流的转换的列表;表;n如何使用该数据条目的简要说明;如何使用该数据条目的简要说明;n数据条目的解释性说明;数据条目的解释性说明;n其它补充说明,例如取值范围与缺省值,其它补充说明,例如取值范围与缺省值,有关的设计约束等。有关的设计约束等。语法语法A+B:语法成分:语法成分A和和B的顺序连接;的顺序连接;A|B:A或或B

60、;An:n个个A的顺序连接。的顺序连接。数据条目中的语法成分都必须有对应描述数据条目中的语法成分都必须有对应描述。数据字典示例电话号码数据字典示例电话号码电话号码电话号码 分机号分机号外线号码外线号码分机号分机号 350135023599外线号码外线号码 2(市话号码市话号码长话号码长话号码)长话号码长话号码 (区号区号市话号码市话号码)区号区号 任何长度为任何长度为2或或3的数字串的数字串市话号码市话号码 局号局号分局号分局号局号局号 455448888552分局号分局号 = 任何长度为任何长度为4的数字串的数字串小结小结利用数据字典可以对数据流图中的数据流利用数据字典可以对数据流图中的数据

温馨提示

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

评论

0/150

提交评论