




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章第六章 面向对象设计方法面向对象设计方法n面向对象设计概述面向对象设计概述n系统设计系统设计n对象设计对象设计n领域对象设计领域对象设计面向对象设计概述面向对象设计概述n与传统的结构化设计相比:与传统的结构化设计相比:n相同点:将需求分析模型转变为软件设计模型相同点:将需求分析模型转变为软件设计模型n不同点:不同点:ooaooa和和oodood之间没有明显界限之间没有明显界限n ooaooa和和oodood都是迭代过程都是迭代过程开发过程模型n瀑布式瀑布式n分析分析n设计设计n编程编程开发过程模型n螺旋式螺旋式n分析,原型开发,风险管理分析,原型开发,风险管理n设计,原型开发,风险管理设
2、计,原型开发,风险管理n编程,原型开发,风险管理编程,原型开发,风险管理开发过程模型n增量式增量式n少量的分析少量的分析n少量的设计少量的设计n重复重复面向对象设计的步骤面向对象设计的步骤n面向对象设计过程的步骤面向对象设计过程的步骤 1.1.系统设计系统设计 n系统整体结构的设计系统整体结构的设计 2.2.对象设计对象设计 n对对ooaooa模型中类模型中类/ /对象模型的具体化和细化对象模型的具体化和细化 3.3.消息设计消息设计 n从对象从对象关系模型,设计出消息模型关系模型,设计出消息模型 4.4.设计模型复审设计模型复审n结构化方法中软件设计的基本原理结构化方法中软件设计的基本原理在
3、进行面向对象设计时仍然成立,在进行面向对象设计时仍然成立,但是增加了一些与面向对象方法密但是增加了一些与面向对象方法密切相关的新特点,从而具体化为面切相关的新特点,从而具体化为面向对象设计准则。向对象设计准则。ood遵循的原则ood遵循的原则(一)模块化(一)模块化n对象就是模块,把数据和方法结合在一起对象就是模块,把数据和方法结合在一起(二)抽象(二)抽象n过程抽象过程抽象n数据抽象数据抽象n参数化抽象(某些参数化抽象(某些pdlpdl)ood遵循的原则(一)模块化(一)模块化n对象就是模块,把数据和方法结合在对象就是模块,把数据和方法结合在一起一起(二)抽象(二)抽象n过程抽象过程抽象n数
4、据抽象数据抽象n参数化抽象(某些参数化抽象(某些pdlpdl)ood遵循的原则(三)信息隐藏(三)信息隐藏n通过对象的封装性实现通过对象的封装性实现(四)弱耦合(四)弱耦合n降低交互耦合降低交互耦合n提高继承耦合提高继承耦合信息隐藏的实例信息隐藏的实例ood遵循的原则(五)强内聚(五)强内聚n服务内聚服务内聚n类内聚类内聚n一般一般- -特殊内聚特殊内聚(六)可重用(六)可重用n尽量使用已有的类尽量使用已有的类n创建新类时,考虑将来的可重用性创建新类时,考虑将来的可重用性( (一一) )模块化模块化面向对象软件开发模式,很自然地支持面向对象软件开发模式,很自然地支持了把系统分解成模块的设计原理
5、:类就是了把系统分解成模块的设计原理:类就是模块。模块。它是把数据结构和对数据的操作紧密地它是把数据结构和对数据的操作紧密地结合在一起所构成的模块。结合在一起所构成的模块。 面向对象设计的的原则详解面向对象设计的的原则详解( (二二) )抽象抽象面向对象方法不仅支持过程抽象,而且面向对象方法不仅支持过程抽象,而且支持数据抽象。类实际上是一种抽象数据支持数据抽象。类实际上是一种抽象数据类型,它对外开放的公共接口构成了类的类型,它对外开放的公共接口构成了类的规格说明(即协议),这种接口规定了外规格说明(即协议),这种接口规定了外界可以使用的合法操作符,利用这些操作界可以使用的合法操作符,利用这些操
6、作符可以对类实例中包含的数据进行操作。符可以对类实例中包含的数据进行操作。使用者无须知道这些操作符的实现算法和使用者无须知道这些操作符的实现算法和类中数据元素的具体表示方法,就可以通类中数据元素的具体表示方法,就可以通过这些操作符使用类中定义的数据。通常过这些操作符使用类中定义的数据。通常把这类抽象称为规格说明抽象。把这类抽象称为规格说明抽象。 ( (三三) )信息隐藏信息隐藏在面向对象方法中,信息隐藏通过对象在面向对象方法中,信息隐藏通过对象的封装来实现。对于用户来说,类中的属的封装来实现。对于用户来说,类中的属性的表示方法和操作的实现算法都应该是性的表示方法和操作的实现算法都应该是隐藏的。
7、隐藏的。 ( (四四) )弱耦合弱耦合结构化方法中耦合是指在系统中的各个结构化方法中耦合是指在系统中的各个模块之间的相互连接或相互依赖的强度。模块之间的相互连接或相互依赖的强度。在面向对象方法中,耦合主要指不同对象在面向对象方法中,耦合主要指不同对象之间通过消息相互关联的紧密程度。应该之间通过消息相互关联的紧密程度。应该遵守下列准则使这种耦合尽量松散:遵守下列准则使这种耦合尽量松散: 1.1.尽量降低消息连接的复杂程度。应该尽量降低消息连接的复杂程度。应该尽量减少消息中包含的参数个数,降低参尽量减少消息中包含的参数个数,降低参数的复杂程度。数的复杂程度。2.2.减少对象发送(或接收)的消息数。
8、减少对象发送(或接收)的消息数。 ( (五五) )强内聚强内聚内聚用于描述系统内组成部分中各元素内聚用于描述系统内组成部分中各元素彼此结合的紧密程度,应尽量避免低内聚。彼此结合的紧密程度,应尽量避免低内聚。在面向对象设计中,从三个层次来考察内在面向对象设计中,从三个层次来考察内聚性。聚性。1.1.单个方法的内聚性:方法是指操作的单个方法的内聚性:方法是指操作的实现过程,一个操作由一个或多个方法实实现过程,一个操作由一个或多个方法实现。对方法的内聚性的评价与结构化设计现。对方法的内聚性的评价与结构化设计中的相同,具有高内聚的方法应当只执行中的相同,具有高内聚的方法应当只执行一个功能。一个功能。
9、2.2. 类的内聚性:设计类的原则是,一类的内聚性:设计类的原则是,一个类应该只有一个用途,类中的属性和操个类应该只有一个用途,类中的属性和操作应该全都是完成该类的任务所必需的,作应该全都是完成该类的任务所必需的,其中不包括无用的属性和操作。如果某个其中不包括无用的属性和操作。如果某个类有多个用途,通常应该把它分解成多个类有多个用途,通常应该把它分解成多个专用的类。专用的类。3.3.层次结构的内聚性:对象之间通过继层次结构的内聚性:对象之间通过继承关系而构成的层次结构,特殊类应该确承关系而构成的层次结构,特殊类应该确实是对它的一般化类的一种具体化。如果实是对它的一般化类的一种具体化。如果一个派
10、生类一个派生类摒摒弃了它基类的许多属性和服弃了它基类的许多属性和服务,那就是一个低内聚的。务,那就是一个低内聚的。 ( (六六) )可重用可重用软件重用是提高软件开发生产率和目标软件重用是提高软件开发生产率和目标系统质量的重要途径。重用基本上从设计系统质量的重要途径。重用基本上从设计开始。开始。重用有两方面的含义:一是尽量使用已重用有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,以及有的类(包括开发环境提供的类库,以及以往开发类似系统是创建的类);二是如以往开发类似系统是创建的类);二是如果确实需要创建新类,则在设计这些新类果确实需要创建新类,则在设计这些新类的协议时,应该考虑将
11、来的可重复使用性。的协议时,应该考虑将来的可重复使用性。 子子 系系 统统 设设 计计类及对象设计类及对象设计消息设计消息设计责任设计责任设计分析模型设计模型将将oooo分析模型转换为分析模型转换为oooo设计模型设计模型ood的四个层次:的四个层次:子系统层:子系统层: 包含每个子系统的表示包含每个子系统的表示类和对象层类和对象层:包含类层次和每个对象包含类层次和每个对象 的设计表示的设计表示消息层消息层: 包含使得每个对象能够和其包含使得每个对象能够和其 协作者通信的细节,建立系协作者通信的细节,建立系 统的外部和内部接口统的外部和内部接口责任层责任层: 包含针对每个对象的所有属性包含针对
12、每个对象的所有属性 和操作的数据结构和算法的设计和操作的数据结构和算法的设计用例图用例图类类 图图交互图交互图状态图状态图方法描述:方法描述:if a then calculate sales tax calculate total amount end if设计带方法的类图设计带方法的类图包图包图系统内部系统内部保险单保险单客户客户保险单保险单填写界面填写界面数据库界面数据库界面(abstract)oracle界面界面sybase界面界面客户支持系统客户支持系统客户维护子系统客户维护子系统库存管理子系统库存管理子系统订单输入子系统订单输入子系统目录维护子系统目录维护子系统订单执行子系统订单执
13、行子系统客户支持系统客户支持系统客户维护子系统客户维护子系统订单输入子系统订单输入子系统目录维护子系统目录维护子系统订单执行子系统订单执行子系统客户客户目录目录包包订单条目订单条目订单交易订单交易订单订单退货条目退货条目发运人发运人运输运输fichmanfichman和和kemererkemerer提出的提出的1010种种设计建模成分设计建模成分模块层次的表示模块层次的表示数据定义规约数据定义规约过程逻辑的规约过程逻辑的规约端到端处理序列的指明端到端处理序列的指明对象状态和变迁的表示对象状态和变迁的表示类及层次的定义类及层次的定义操作到类的赋予操作到类的赋予详细的操作定义详细的操作定义消息连接
14、的规约消息连接的规约排它服务的标识排它服务的标识6.26.2系统设计过程系统设计过程 划分子系统;划分子系统; 确定需要并发运行的子系统并为它们分配处确定需要并发运行的子系统并为它们分配处理器;理器; 描述子系统之间的通信;描述子系统之间的通信; 确定系统资源的管理和控制;确定系统资源的管理和控制; 确定人机交互构件;确定人机交互构件; 选择实现数据管理和任务管理的基本策略。选择实现数据管理和任务管理的基本策略。 系统设计的四种主要子系统(组件)系统设计的四种主要子系统(组件)1.1.问题域问题域直接负责实现客户需求的子系统直接负责实现客户需求的子系统2.2.人机交互人机交互实现用户界面的子系
15、统实现用户界面的子系统 (包括可复用的(包括可复用的gui子系统)子系统)3.3.任务管理任务管理负责控制和协调并发任务的子负责控制和协调并发任务的子 系统,任务可能被包装在一个系统,任务可能被包装在一个 子系统中或不同的子系统间;子系统中或不同的子系统间;4.4.数据管理数据管理负责对象的存储和检索的子系统负责对象的存储和检索的子系统系统组成观点的ood模型主体层主体层结构层结构层属性层属性层服务层服务层问题域问题域 部分部分( (pdc) )人机交人机交互部分互部分( (hic) )任务管任务管理部分理部分( (tmc) )数据管数据管理部分理部分( (dmc) )ood阶段建立阶段建立o
16、oa 阶段模型阶段模型修改修改ood由四个活动组成:由四个活动组成:类及对象层类及对象层1. 1. 问题域部分(问题域部分(pdcpdc)的设计概述)的设计概述 ooa的模型直接放到的模型直接放到ood的问的问题域部题域部, , ood阶段对阶段对ooa结果进结果进行改动和增补。行改动和增补。 根据需求变化,对根据需求变化,对ooa产生模产生模型的类与对象、结构、属性、操作型的类与对象、结构、属性、操作进行组合与分解,增加必要的类、进行组合与分解,增加必要的类、属性和关系。属性和关系。对对ooaooa结果加以增补要考虑的因素结果加以增补要考虑的因素重用设计重用设计把问题域专用类组合在一起把问题
17、域专用类组合在一起通过增添一般类而建立协议通过增添一般类而建立协议调整继承的支持级别调整继承的支持级别改进性能改进性能增加低层的类和对象增加低层的类和对象2.2.人机交互部分人机交互部分(hichic)的设计概述)的设计概述 虽然好的人机交互部分不可能挽救虽然好的人机交互部分不可能挽救一个功能很差的软件一个功能很差的软件, , 但性能很差的但性能很差的人机交互部分将使一个功能很强的产人机交互部分将使一个功能很强的产品变的不可接受品变的不可接受! !3.3.任务管理部分任务管理部分(tmctmc)的设计概述)的设计概述为什么要有任务管理部分为什么要有任务管理部分? 系统中有许多并发行为时,需要按
18、照系统中有许多并发行为时,需要按照各个行为的协调和通信关系,划分各种任各个行为的协调和通信关系,划分各种任务务( (进程进程) ),简化并发行为的设计和编码。,简化并发行为的设计和编码。 根据动态模型分析、定义并发性;根据动态模型分析、定义并发性; 选择软件实现的控制方法。选择软件实现的控制方法。怎样设计任务管理部分怎样设计任务管理部分?任务管理主要包括任务管理主要包括任务的选择和调整任务的选择和调整识别事件驱动任务识别事件驱动任务识别时钟驱动任务识别时钟驱动任务识别优先任务和关键任务识别优先任务和关键任务识别协调者识别协调者审查每个任务审查每个任务定义每个任务定义每个任务3.3.任务管理部分
19、(任务管理部分(tmctmc)的设计概述)的设计概述4.4.数据管理数据管理部分部分(dmcdmc)的设计概述)的设计概述 数据管理部分提供了数据在数据管系统中存数据管理部分提供了数据在数据管系统中存储和检索对象的基本结构,它分离了数据管理储和检索对象的基本结构,它分离了数据管理方案的影响方案的影响 ( (不管该方案是普通文件、关系型不管该方案是普通文件、关系型数据库、面向对象数据库或其它方式。数据库、面向对象数据库或其它方式。) )如何设计数据管理部分如何设计数据管理部分 ( (1)1)数据存放方法设计数据存放方法设计(2)(2)相应服务的设计相应服务的设计 为每个需存储其对象的类增加一个为
20、每个需存储其对象的类增加一个属性和服务属性和服务6.2.2 子系统设计子系统设计问题(领)域部分问题(领)域部分n子系统描述子系统描述n实现客户需求的组件实现客户需求的组件n实现客户需求所必需的支持环境实现客户需求所必需的支持环境n子系统可看作子系统可看作n高层次的模块,通过外部接口与系统通信高层次的模块,通过外部接口与系统通信n子系统来源子系统来源nooaooa模型中的类、关系和行为的映射模型中的类、关系和行为的映射 问题域子系统(问题域子系统(pdcpdc)的设计)的设计 一般来说,基于问题域的总体组织框架一般来说,基于问题域的总体组织框架是长时间保持稳定的(当然,细节是会变的,是长时间保
21、持稳定的(当然,细节是会变的,这里加一个类说明,那里加一个属性或服这里加一个类说明,那里加一个属性或服务)。务)。例如银行储蓄系统中分行、终端、储户例如银行储蓄系统中分行、终端、储户这个组织结构会长期保持稳定,虽然如储户这个组织结构会长期保持稳定,虽然如储户的属性可能会发生变化。正是基于这种稳定,的属性可能会发生变化。正是基于这种稳定,面向对象的分析和设计模型按问题域本身的面向对象的分析和设计模型按问题域本身的样子来组织系统,也能从容适应变化的需求,样子来组织系统,也能从容适应变化的需求,能保持稳定性。能保持稳定性。 ood中,ooa的结果恰好就是ood的问题域部分。这也正是面向对象的设计和分
22、析方法的一个最优良的特点。但是可能要作些改动,这种改动不是否定ooa的分析结果,而是完善。这些改动基于以下几个原因:这些改动基于以下几个原因:(1 1)由于需求的变化;)由于需求的变化;(2 2)分析员对问题域的理解可能)分析员对问题域的理解可能有误解或欠缺,需要对此加以修正;有误解或欠缺,需要对此加以修正;(3 3)分析与设计毕竟是性质不同)分析与设计毕竟是性质不同的两类开发工作,分析可以而且应该的两类开发工作,分析可以而且应该与具体实现无关,而设计在很大程度与具体实现无关,而设计在很大程度上受具体实现环境的约束。上受具体实现环境的约束。对对ooaooa的改动准则的改动准则( (一一) )依
23、照面向对象设计的准则审核每个依照面向对象设计的准则审核每个类类优秀的设计能够权衡各种因素,从而使优秀的设计能够权衡各种因素,从而使得系统在其整个生命周期中的总开销最小。得系统在其整个生命周期中的总开销最小。对大多数软件系统而言,对大多数软件系统而言,60%60%以上的软件费以上的软件费用都用于软件维护,因此,优秀软件设计用都用于软件维护,因此,优秀软件设计的一个主要特点就是容易维护。在问题域的一个主要特点就是容易维护。在问题域系统中,仔细对照面向对象设计的准则,系统中,仔细对照面向对象设计的准则,审查审查ooaooa中的每个类。中的每个类。 ( (二二) )重用设计和编程的类重用设计和编程的类
24、根据需要重用现成的类,现成类根据需要重用现成的类,现成类是已用是已用oooo语言或非语言或非oooo语言编写的语言编写的可用源程序。例如图(可用源程序。例如图(a a)是)是ooaooa结结果中有一个类果中有一个类“交通工具交通工具”,设计,设计者发现有一个类似的现成类者发现有一个类似的现成类“交通交通工具工具1”1”( 图(图(b b),那么他就可),那么他就可以按以下步骤重用现成类(图以按以下步骤重用现成类(图(c c)。)。 颜色颜色性能性能制造商制造商问题域中的类问题域中的类类别类别性能性能制造商制造商现成的类现成的类类别类别性能性能制造商制造商重用现成类重用现成类颜色颜色性能性能制造
25、商制造商(a)(b)(c)交通工具交通工具交通工具交通工具1交通工具交通工具1交通工具交通工具( (三三) )通过增添超类而建立协议通过增添超类而建立协议将问题域许多不同的类聚集在一起,将问题域许多不同的类聚集在一起,这时可建立一个新的父类这时可建立一个新的父类超类,超类,将这许多类作为该超类的子类。这样将这许多类作为该超类的子类。这样一方面有助于改进模型的可理解性,一方面有助于改进模型的可理解性,同时可以在超类中给出一个公共的协同时可以在超类中给出一个公共的协议,用来与其它子系统或与外部系统议,用来与其它子系统或与外部系统部件进行通信。通信的细节在子类中部件进行通信。通信的细节在子类中定义。
26、定义。 ( (四四) )考虑语言调整继承支持级别考虑语言调整继承支持级别如果如果ooaooa模型依赖于多重继承而设计者模型依赖于多重继承而设计者发现最终用于实现系统的程序设计语言只发现最终用于实现系统的程序设计语言只能支持单继承或不具备继承机制。这时就能支持单继承或不具备继承机制。这时就需要修改原来的类层次结构。需要修改原来的类层次结构。( (五五) ) 修改设计以提高性能修改设计以提高性能如果开发的系统在执行速度上要求严格,如果开发的系统在执行速度上要求严格,我们就需对问题域部分加以修改,例如合我们就需对问题域部分加以修改,例如合并那些消息频繁连接的类。并那些消息频繁连接的类。例:银行储蓄系
27、统的例:银行储蓄系统的pdcpdc储蓄系统中,为了提高整个系统储蓄系统中,为了提高整个系统的性能,增加的性能,增加“终端控制器终端控制器”来控制来控制和协调柜员及终端的所有动作,它和和协调柜员及终端的所有动作,它和“事务事务”对象协同工作;此外,增加对象协同工作;此外,增加了了“事务记录器事务记录器”,用一个独立的对,用一个独立的对象记录柜员的操作过程,当需要时能象记录柜员的操作过程,当需要时能复查柜员的操作过程。以下是银行储复查柜员的操作过程。以下是银行储蓄系统的蓄系统的pdcpdc部分,为简单起见,以部分,为简单起见,以简单的类表示方式描述。简单的类表示方式描述。 储户储户帐户帐户事务事务
28、1+1+1+1+1+存款事务存款事务取款事务取款事务总行总行分行分行储蓄所储蓄所1+柜员柜员终端控制器终端控制器事务记录器事务记录器终端终端1+1+1+确定子系统需要考虑的问题确定子系统需要考虑的问题n哪个子系统负责什么客户需求?哪个子系统负责什么客户需求?nooaooa中定义的对象分配到哪个子系统中定义的对象分配到哪个子系统 中?中?n哪些子系统必须并发运行,以及由什哪些子系统必须并发运行,以及由什么系统构件协调和控制它们?么系统构件协调和控制它们?n全局资源如何被子系统管理?全局资源如何被子系统管理?划分子系统时应考虑的原则划分子系统时应考虑的原则n模块化、独立性、信息隐藏等等模块化、独立
29、性、信息隐藏等等n同一个子系统的类是否拥有共同特性?同一个子系统的类是否拥有共同特性?n同一个子系统的类是否具有相同的目的?同一个子系统的类是否具有相同的目的?n同一个子系统的类是否提供相似的服务类同一个子系统的类是否提供相似的服务类型?型?n同一个子系统的类之间是否具有高耦合性?同一个子系统的类之间是否具有高耦合性?组织系统的两种方案组织系统的两种方案n水平层次组织水平层次组织n上层在下层的基础上建立,下层上层在下层的基础上建立,下层为上层提供必要的服务为上层提供必要的服务n垂直块状组织垂直块状组织n把软件系统垂直地分解成若干个把软件系统垂直地分解成若干个相对独立、弱耦合的子系统相对独立、弱
30、耦合的子系统典型应用系统的组织结构典型应用系统的组织结构p纠正课本错误:纠正课本错误:p p128128,例,例6.16.1p129p129,例,例6.26.2处理并发操作n并发的对象(子系统)并发的对象(子系统)从对象从对象行为模型中查找分析行为模型中查找分析n同时同时n异步异步n作用于同一事件作用于同一事件n处理方案处理方案n将并发子系统分配到不同处理器将并发子系统分配到不同处理器n将并发子系统分配到同一处理器将并发子系统分配到同一处理器并由系统提供同步控制并由系统提供同步控制描述子系统间的通信描述子系统间的通信n子系统协作模型子系统协作模型n客户客户/ /服务器服务器n端对端对端端客户端
31、客户端子系统子系统端子系统端子系统服务器端服务器端子系统子系统端子系统端子系统请求请求请求请求请求请求合约合约合约合约确定子系统间交互方式的步骤确定子系统间交互方式的步骤n列出所有可能接收到的请求,按子系统列出所有可能接收到的请求,按子系统组织这些请求,并在一个或多个合约中组织这些请求,并在一个或多个合约中定义定义n对每个合约,列出完成每个请求所需的对每个合约,列出完成每个请求所需的操作,将操作和子系统内的特定类相关操作,将操作和子系统内的特定类相关联联n对每个合约创建子系统协作表对每个合约创建子系统协作表(p130)资源管理构件资源管理构件n多个子系统竞争共享资源多个子系统竞争共享资源n为每
32、个资源设置一个为每个资源设置一个“保护者对象保护者对象”n保护者对象保护者对象n控制对资源的访问控制对资源的访问n协调对资源请求的冲突协调对资源请求的冲突6.2.3 6.2.3 人机交互设计(人机交互设计(hichic)nooa阶段阶段n通过用例图给出了用户和系统的交通过用例图给出了用户和系统的交互情况,确定了人机交互的属性和互情况,确定了人机交互的属性和外部服务外部服务nood阶段阶段n给出有关人机交互的所有系统成分给出有关人机交互的所有系统成分人机交互设计人机交互设计(hichic)n分类分析用户特点,设计不同界面分类分析用户特点,设计不同界面n增加用户界面专用的类和对象增加用户界面专用的
33、类和对象n利用快速原型演示,改进界面设计利用快速原型演示,改进界面设计对任何一个系统来说,良好的界面是保证其对任何一个系统来说,良好的界面是保证其成功的基本条件。面向对象方法在设计阶段考成功的基本条件。面向对象方法在设计阶段考虑虑hichic,目的是在开发,目的是在开发ooaooa模型时集中对问题模型时集中对问题的分析,可以避免了依赖于实现的细节,如窗的分析,可以避免了依赖于实现的细节,如窗口和屏幕等。口和屏幕等。oodood中将用户界面技术从系统其中将用户界面技术从系统其它部分分离出来,目的是如果将来决定该改变它部分分离出来,目的是如果将来决定该改变用户的界面,那么只需修改用户的界面,那么只
34、需修改hichic类,而系统的类,而系统的其它部分可以保持不变。其它部分可以保持不变。hichic包括屏幕、报告、包括屏幕、报告、调制解调器连接、网络接口、控制面板(如按调制解调器连接、网络接口、控制面板(如按钮、指示灯和仪表等)。钮、指示灯和仪表等)。 人机交互设计的策略1.分类用户分类用户2.描述用户描述用户3.设计命令层次设计命令层次4.设计详细的交互设计详细的交互5.设计人机交互的类设计人机交互的类6.设计原型设计原型策略策略1:分类用户:分类用户n分类的原则分类的原则n按技能层次分类按技能层次分类n按职务分类按职务分类n按不同组的成员身份分类按不同组的成员身份分类策略策略2:描述用户
35、n用户类型用户类型n使用系统欲达到的目的使用系统欲达到的目的n特性特性n关键的成功因素关键的成功因素n技能水平技能水平n完成本职工作的脚本完成本职工作的脚本策略策略3:设计命令层次:设计命令层次n研究现有的人研究现有的人- -机交互含义和准则机交互含义和准则n确定初始的命令层次确定初始的命令层次n优化命令层次优化命令层次 为用户设计命令形式,研究现有的人机交互为用户设计命令形式,研究现有的人机交互含义和准则。如果在微机上使用,现在含义和准则。如果在微机上使用,现在windowswindows已成了微机上图形用户界面事实上工业标准,已成了微机上图形用户界面事实上工业标准,应该仔细研究。同时结合本
36、系统与用户的特点,应该仔细研究。同时结合本系统与用户的特点,设计出最友好的人机界面。设计出最友好的人机界面。策略策略4:设计详细的交互:设计详细的交互 为每一个命令设计详细的交互,在设计交互为每一个命令设计详细的交互,在设计交互过程中要遵循以下规则:过程中要遵循以下规则:a.一致性一致性(一致的术语、一致的步骤、一致的活动)(一致的术语、一致的步骤、一致的活动)b.操作步骤少操作步骤少c.趣味浓,有吸引力趣味浓,有吸引力(不要(不要“哑播放哑播放”)d.提供撤销命令提供撤销命令e.最大限度减少记忆最大限度减少记忆f.易学易董易学易董策略策略5:设计人机交互的类设计人机交互的类 人机交互类的设计
37、很大程度上依赖于所用的人机交互类的设计很大程度上依赖于所用的操作系统和编程语言。操作系统和编程语言。 例如在例如在windowswindows环境下,从主窗口和部件的环境下,从主窗口和部件的人机交互开始,以分类或组装的结构设计出各人机交互开始,以分类或组装的结构设计出各层的窗口类,每个类中封装了菜单条、下拉菜层的窗口类,每个类中封装了菜单条、下拉菜单、弹出菜单的定义;定义了用来创建菜单、单、弹出菜单的定义;定义了用来创建菜单、加亮选择项、引用相应的响应所需的服务、所加亮选择项、引用相应的响应所需的服务、所有的物理对话、窗口的实际显示。设计人员可有的物理对话、窗口的实际显示。设计人员可以重用现成
38、的类,例如以重用现成的类,例如visual c+visual c+语言提供的语言提供的mfcmfc类库。类库。策略策略6:设计原型设计原型在对人机交互部分的设计中,有时在对人机交互部分的设计中,有时设计人机交互原型是非常必要的。这设计人机交互原型是非常必要的。这样,用户可对提出的交互活动进行体样,用户可对提出的交互活动进行体验和操作,从而找出不足。这对于完验和操作,从而找出不足。这对于完善交互设计系统起到了监督和促进作善交互设计系统起到了监督和促进作用,使将来设计的界面更令人满意。用,使将来设计的界面更令人满意。 例:银行储蓄系统的例:银行储蓄系统的hichic 下图是储蓄系统的下图是储蓄系统
39、的hichic,由各种,由各种窗口组成,实际上,每个窗口对象可窗口组成,实际上,每个窗口对象可以进一步分解为各种文本域、选择按以进一步分解为各种文本域、选择按钮、图符等。当然如果有现成的构成钮、图符等。当然如果有现成的构成guigui的类库,那么可以直接利用,只需的类库,那么可以直接利用,只需提供合适的参数就行。提供合适的参数就行。 例:银行储蓄系统的例:银行储蓄系统的hichic银行系统窗口银行系统窗口存款窗口存款窗口取款窗口取款窗口初次存款窗口初次存款窗口一般存款窗口一般存款窗口事务窗口事务窗口验卡窗口验卡窗口验密码窗口验密码窗口6.2.4 6.2.4 任务管理(任务管理(tmctmc)设
40、计)设计n功能:负责功能:负责控制控制和和协调协调并发任务的子系统并发任务的子系统n重要工作:重要工作:n分析并发性分析并发性n设计任务管理子系统设计任务管理子系统分析并发性分析并发性n来源:来源:ooaooa中建立起来的动态模型中建立起来的动态模型n并发对象并发对象n两个对象彼此间不存在交互两个对象彼此间不存在交互n两个对象同时接受事件两个对象同时接受事件n控制线:是一条遍及状态图集合的路径,控制线:是一条遍及状态图集合的路径,在这条路径上每次只有一个对象是活动在这条路径上每次只有一个对象是活动的的n任务:是进程的别名,用于实现控制线任务:是进程的别名,用于实现控制线并发行为的处理并发行为的
41、处理n不同的任务标识了必须不同的任务标识了必须同时同时发生的不发生的不同行为同行为n处理方案处理方案n在不同处理器上实现在不同处理器上实现n在单个处理器上利用多任务操作系在单个处理器上利用多任务操作系统仿真实现统仿真实现有的系统中存在着许多并发行为,例有的系统中存在着许多并发行为,例如银行储蓄系统中,每个时刻多个柜员同如银行储蓄系统中,每个时刻多个柜员同时都在请求系统处理着各项事务,因此存时都在请求系统处理着各项事务,因此存在着许多并发行为。当系统中有许多并发在着许多并发行为。当系统中有许多并发行为时,需要依照各个行为的协调和通信行为时,需要依照各个行为的协调和通信关系,划分各种任务,以简化并
42、发行为的关系,划分各种任务,以简化并发行为的设计和编码。任务是进程的别称,是执行设计和编码。任务是进程的别称,是执行一系列活动的一段程序。不同的任务标识一系列活动的一段程序。不同的任务标识了同时发生的不同行为。这种并发行为既了同时发生的不同行为。这种并发行为既可以在不同的处理器上实现,也可以在单可以在不同的处理器上实现,也可以在单个处理器上利用中断机制实现。个处理器上利用中断机制实现。 任务管理主要包括任务的选择和调任务管理主要包括任务的选择和调整,为此,在任务管理子系统中需要整,为此,在任务管理子系统中需要标识一些新类,这些类建立以后将主标识一些新类,这些类建立以后将主要负责处理并发问题、中
43、断、操作系要负责处理并发问题、中断、操作系统一级的调度以及有关特定平台的一统一级的调度以及有关特定平台的一些问题。正如些问题。正如hichic所做那样,所做那样,tmctmc把把有关特定平台的处理机制与系统其它有关特定平台的处理机制与系统其它部分隔离开来。这样,如果决定将系部分隔离开来。这样,如果决定将系统移植到另一个平台,那么只需替换统移植到另一个平台,那么只需替换tmctmc的类就可以了。的类就可以了。 设计任务管理子系统的策略设计任务管理子系统的策略n确定任务的特性确定任务的特性n定义一个协调者任务和与之关联定义一个协调者任务和与之关联的对象的对象n集成其他任务和协调者集成其他任务和协调
44、者设计任务管理子系统的步骤设计任务管理子系统的步骤1 1、识别事件驱动任务、识别事件驱动任务n通常负责与设备,其他处理器或其他系统的通信通常负责与设备,其他处理器或其他系统的通信n工作流程:任务处于睡眠状态,等待事件;一旦工作流程:任务处于睡眠状态,等待事件;一旦接到事件触发的中断就唤醒改任务,接收数据并接到事件触发的中断就唤醒改任务,接收数据并执行相应的操作;该任务重新回到睡眠状态。执行相应的操作;该任务重新回到睡眠状态。 有些任务是事件驱动的,而事件常常是当数据到来时发出一个信号。在系统运行时,这种任务的工作过程是:任务睡眠(不消耗cpu时间),等待一个来自数据线或其它数据源的中断;当接到
45、中断时,任务唤醒,接收数据并把数据放入内存缓冲区或其它目的地,通知需要知道这件事的对象;然后该任务又回到睡眠状态。 设计任务管理子系统的步骤设计任务管理子系统的步骤2 2、识别时钟驱动任务、识别时钟驱动任务n按特定的时间间隔被触发去进行某些处理按特定的时间间隔被触发去进行某些处理n工作流程:任务设置一个唤醒时间,然后去睡眠;工作流程:任务设置一个唤醒时间,然后去睡眠;任务睡眠,等待来自系统的一个时间中断;当接任务睡眠,等待来自系统的一个时间中断;当接收到这个中断后,任务醒来,进行必要处理;该收到这个中断后,任务醒来,进行必要处理;该任务重新回到睡眠状态。任务重新回到睡眠状态。 例如某些设备需要
46、周期性地获得数据;某些人机界面、子系统、任务、处理机或与其它系统需要周期性的通信。在这些场合往往需要使用时钟驱动型任务。设计任务管理子系统的步骤设计任务管理子系统的步骤3 3、识别关键任务、优先任务和协调者、识别关键任务、优先任务和协调者n关键任务:对整个系统成败起重要作用关键任务:对整个系统成败起重要作用的任务的任务 这类处理通常都有严格的可靠性要求。在设计这类处理通常都有严格的可靠性要求。在设计过程中可能用额外的任务把这类关键处理分离出过程中可能用额外的任务把这类关键处理分离出来,以满足高可靠性处理的要求。对高可靠性处来,以满足高可靠性处理的要求。对高可靠性处理应该精心设计和编码,并且应严
47、格测试。理应该精心设计和编码,并且应严格测试。设计任务管理子系统的步骤设计任务管理子系统的步骤3 3、识别关键任务、优先任务和协调者、识别关键任务、优先任务和协调者n优先任务:根据需要调节实时处理的优优先任务:根据需要调节实时处理的优先级次序先级次序 系统中,对每个任务的时间要求不同,可以通系统中,对每个任务的时间要求不同,可以通过设置优先级来安排各个任务。某些操作必须过设置优先级来安排各个任务。某些操作必须在很强的时间限制内完成,应该把它分离成独在很强的时间限制内完成,应该把它分离成独立的任务,设置高优先级,执行时优先执行。立的任务,设置高优先级,执行时优先执行。 设计任务管理子系统的步骤设
48、计任务管理子系统的步骤3 3、识别关键任务、优先任务和协调者、识别关键任务、优先任务和协调者n协调者:用于管理和协调其他任务的协调者:用于管理和协调其他任务的任务任务可增加的任务可增加的任务 当有三个或更多的任务时,应当增加一个当有三个或更多的任务时,应当增加一个附加任务,起协调者的作用。附加任务,起协调者的作用。 进一步仔细分析和选择每个确实需要的任进一步仔细分析和选择每个确实需要的任务,应该使系统中包含的任务数尽量少。务,应该使系统中包含的任务数尽量少。设计任务管理子系统的步骤设计任务管理子系统的步骤4 4、定义任务、定义任务n说明任务:为任务命名,并简要说明该任务说明任务:为任务命名,并
49、简要说明该任务n如何协调任务:定义每个任务如何协调工作如何协调任务:定义每个任务如何协调工作n是事件驱动还是时钟驱动?对于事件驱动的任是事件驱动还是时钟驱动?对于事件驱动的任务,描述触发该任务的事件;对于时钟驱动的务,描述触发该任务的事件;对于时钟驱动的任务,描述在触发之前所经过的时间间隔任务,描述在触发之前所经过的时间间隔n如何通信:定义每个任务如何通信如何通信:定义每个任务如何通信n任务从哪里去数据?任务往哪里送数据?任务从哪里去数据?任务往哪里送数据?例:银行储蓄系统的(例:银行储蓄系统的(tmctmc)任务管理设)任务管理设计计下图中,储蓄系统中,通过读卡器将存折下图中,储蓄系统中,通
50、过读卡器将存折的帐号读入,密码也由储户从密码输入器输入,的帐号读入,密码也由储户从密码输入器输入,那么可以设计两个任务,那么可以设计两个任务,“读卡中断读卡中断”、“密密码中断码中断”分别接收读卡器的数据和密码输入器分别接收读卡器的数据和密码输入器的数据。的数据。 中断中断读卡中断读卡中断密码中断密码中断 读卡器和密码输入器如何接收数据的读卡器和密码输入器如何接收数据的过程被封装在相应过程被封装在相应“读卡中断读卡中断”和和“密码密码中断中断”类中,接收数据之后,将它进行相类中,接收数据之后,将它进行相应的处理并送到有关的对象中。图应的处理并送到有关的对象中。图8 86 6以读卡为例,表明了银
51、行储蓄系统中以读卡为例,表明了银行储蓄系统中tmctmc、pdcpdc、hichic之间如何工作。银行储之间如何工作。银行储蓄系统中蓄系统中tmctmc、pdcpdc、hichic相互隔离,每相互隔离,每一子系统内部的信息对系统其它部分是隐一子系统内部的信息对系统其它部分是隐藏的,它们相互之间通过消息进行联系。藏的,它们相互之间通过消息进行联系。 银行系统银行系统tmctmc的的“读卡中断读卡中断”平常处平常处于睡眠状态,当读卡器开始工作时,于睡眠状态,当读卡器开始工作时,“读卡中断读卡中断”被唤醒,获得数据,向被唤醒,获得数据,向pdcpdc的的“分行分行”类发送消息,要求检验类发送消息,要
52、求检验帐号,帐号,“分行分行”类接收消息后,执行相类接收消息后,执行相应的服务,将结果发给应的服务,将结果发给hichic的的“验卡窗口验卡窗口”类,类,“验卡窗口验卡窗口”类接到消息,将相应类接到消息,将相应的检验结果以一定的方式显示在屏幕上。的检验结果以一定的方式显示在屏幕上。 很明显,在这个过程中,需要做许很明显,在这个过程中,需要做许多工作。但这样做的好处是:提高系统多工作。但这样做的好处是:提高系统的可维护性和可修改性,系统只需要修的可维护性和可修改性,系统只需要修改一小部分就能适应一个新的环境。改一小部分就能适应一个新的环境。 例如读卡器的读卡方式发生变化或例如读卡器的读卡方式发生
53、变化或验卡窗口的显示方式发生变化,只需修验卡窗口的显示方式发生变化,只需修改相应的读卡中断或验卡窗口而不影响改相应的读卡中断或验卡窗口而不影响系统其它部分。系统其它部分。 读卡中断读卡中断分行分行验卡窗口验卡窗口hicpdctmc检验帐号检验帐号读卡读卡器器6.2.5 6.2.5 数据管理设计(数据管理设计(dmcdmc)n将目标软件系统中依赖开发平台的将目标软件系统中依赖开发平台的数据数据存取部分存取部分与其他功能与其他功能分离分离,使数据存取,使数据存取可通过一般的数据管理系统实现可通过一般的数据管理系统实现 当系统中的数据需要长期保存时,需要对数据管理进行设计。设置dmc部分的主要原因,
54、和ood的其它部分一样,将特定的数据库管理技术与其它部分隔离开来,避免数据存储管理模式的改变对系统的影响。选择数据存储管理模式选择数据存储管理模式n文件管理系统文件管理系统n关系数据库管理系统关系数据库管理系统n面向对象数据库管理系统面向对象数据库管理系统n扩展的关系数据库管理系统n增加了抽象数据类型和继承机制,还增加了创建和管理类和对象的通用服务n扩展的面向对象程序设计语言n增加了在数据库中存储和管理对象的机制n“永久对象”设计数据格式设计数据格式n文件系统文件系统n定义第一范式表定义第一范式表n为每个第一范式表定义一个文件为每个第一范式表定义一个文件n测量性能和需要的存储容量测量性能和需要
55、的存储容量n修改原设计的第一范式,以满足性能修改原设计的第一范式,以满足性能和存储需求和存储需求 关系模式的规范化“第几范式”请参考有关“数据库原理”的书设计数据格式设计数据格式n关系型数据库管理系统关系型数据库管理系统n定义第三范式表定义第三范式表n为每个第三范式表定义一个数据库表为每个第三范式表定义一个数据库表n测量性能和需要的存储容量测量性能和需要的存储容量n修改原设计的第三范式,以满足性能和修改原设计的第三范式,以满足性能和存储需求存储需求设计相应的操作设计相应的操作n对于对象需要存储的类,应增加一个对于对象需要存储的类,应增加一个属性和操作属性和操作n属性:说明对象所属类属性:说明对
56、象所属类n操作:说明对象如何存储自己操作:说明对象如何存储自己n隐式地在对象的定义中说明隐式地在对象的定义中说明文件系统文件系统n被存储的对象需要知道:打开哪个被存储的对象需要知道:打开哪个(些)文件,怎样把文件定位到正确(些)文件,怎样把文件定位到正确的记录上,怎样检索出旧值,怎样用的记录上,怎样检索出旧值,怎样用现有值更新现有值更新n定义定义objectserverobjectserver类类n通知对象保存自身通知对象保存自身n检索存储的对象检索存储的对象关系型数据库管理系统关系型数据库管理系统n被存储的对象需要知道:访问哪些数据被存储的对象需要知道:访问哪些数据库表,怎样访问所需要的行,
57、怎样更新库表,怎样访问所需要的行,怎样更新n定义定义objectserverobjectserver(对象服务器)类(对象服务器)类n通知对象保存自身通知对象保存自身n检索存储的对象检索存储的对象面向对象数据库管理系统面向对象数据库管理系统n扩展的关系数据库途径扩展的关系数据库途径n使用关系数据库管理系统相同的方使用关系数据库管理系统相同的方法法n扩展的面向对象程序设计语言途径扩展的面向对象程序设计语言途径n无须增加操作无须增加操作总之,分析是提取和整理用户需求,总之,分析是提取和整理用户需求,并建立问题域精确模型的过程。设计则并建立问题域精确模型的过程。设计则把分析阶段得到的需求转变成符合成
58、本把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计过程。从面向对象分析到面向对象设计是一个逐渐扩充模型的过程。是一个逐渐扩充模型的过程。oodood扩扩充、完善和细化充、完善和细化ooaooa模型。为简化系统,模型。为简化系统,同时考虑了每一次变动使系统的修改程同时考虑了每一次变动使系统的修改程度最小,将度最小,将oodood分成了四个子系统:分成了四个子系统:pdcpdc、hichic、tmctmc、dmcdmc。 可以说,面向对象设计就是用面向对可以说,面向对象设计就是用面向对象观点建立求解域模型的过程
59、。尽管分象观点建立求解域模型的过程。尽管分析和设计的定义有明显区别,但是在实析和设计的定义有明显区别,但是在实际的软件开发过程中两者的界限是模糊际的软件开发过程中两者的界限是模糊的。许多分析结果可以直接映射成设计的。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完补充对系统需求的理解,从而进一步完善分析结果。因此,分析和设计是一个善分析结果。因此,分析和设计是一个多次反复迭代的过程。多次反复迭代的过程。 6.3 6.3 对象设计对象设计 系统设计相当于大楼的建筑平面图,规定了每系统设计相当于大楼的建筑平面图,规
60、定了每个房间的用途,以及房间与房间之间、房间与外部个房间的用途,以及房间与房间之间、房间与外部环境之间的连接机制。对象设计着重于每个房间的环境之间的连接机制。对象设计着重于每个房间的内部细节。内部细节。 对象设计的主要任务是:对象设计的主要任务是: 定义对象完整的接口定义对象完整的接口协议描述协议描述 设计对象内部结构设计对象内部结构实现描述实现描述 算法设计算法设计 重组与优化重组与优化 程序构件与接口程序构件与接口 系统分析确定了问题域对象,以及它们之间的关系、相系统分析确定了问题域对象,以及它们之间的关系、相关的属性、操作。系统设计确定了子系统和大多数重要的求关的属性、操作。系统设计确定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 规范基建项目管理办法
- 计划生药具管理办法
- 东莞采购合同管理办法
- ppap样品管理办法
- 组干部绩效管理办法
- 营销方案控制管理办法
- 西藏西瓜大棚管理办法
- 万亿信托资金管理办法
- 规范公司外事管理办法
- pcba外包管理办法
- 养羊与羊病防治技术课件
- 最新教科版五年级科学上册《第2课时 地球的结构》教学课件
- 医学资料品管圈十大步骤的运用
- Q∕SY 05129-2017 输油气站消防设施及灭火器材配置管理规范
- 餐饮空间设计课件ppt
- 企业微信私域流量运营方案
- 中职学校《机械基础》第二学期全套电子教案(含教学进度计划)(配套教材:高教版中职统编)云天课件
- 《重性精神疾病管理治疗工作规范》综合解读
- 装饰装修工程培训课件(ppt-162页)
- 08S305-小型潜水泵选用及安装图集
- 全科医师转岗培训题库全
评论
0/150
提交评论