您的位置:网站首页 > app开发 > 做软件开发的公司 > 正文

面向对象设计之系统设计过程

作者:知网科技 日期:2020/6/17 人气:
标签:


 

 

       面向对象设计模型的类属成分

 

       郑州软件公司认为有时很难明确区分面向对象分析和面向对象设计。本质上,面向对象分析(OOA)是一个分类活动,即分析问题力图确定在开发解决方案时可应用的对象类,同时确定对象关系和行为。面向对象设计(OOD)使得软件工程师能够确定从类中导出的对象,以及这些对象如何相互关联,此外,OOD描述了对象间的关系如何达到,行为如何实现以及对象间通信如何实现。

 

       一旦已经开发完一个合理的完整的分析模型后,软件工程师开始关注于系统的设计,这是通过描述要实现客户需求及实现需求所必需的支持环境所需的子系统的特征来完成的。

 

        郑州apple软件开发认为当子系统被定义后,它们必须在客户需求的整体语境内相互协调,哪个子系统负责什么客户需求?在OOA中定义的对象驻留在哪个子系统内?哪些子系统必须并发运行以及什么系统构件协调和控制它们?全局资源如何被子系统管理?

 

       在子系统设计过程中,软件工程师必须定义4种重要的设计构件。

 

       (1)问题域——那些直接负责实现客户需求的子系统。

 

       (2)人机交互——实现用户界面的子系统(包括可复用的GUI子系统)。

 

       (3)任务管理——负责控制和协调并发任务的子系统,这些任务可能被包装在一个子系统中或在不同的子系统间。

 

       (4)数据管理——负责对象的存储和检索的子系统。

 

       郑州ios开发认为这些类属构件的每一个都可能被用一系列类以及必备的关系和行为来建模(在OOA过程中),此外,设计构件通过定义协议来实现,协议正式地描述每个构件的消息模型。

 

       一旦已经定义了子系统,并且开始设计上述的每个构件,则重点开始转移到对象设计,在这个层次,CRC模型的元素被转换为设计实现。
 


 

       系统设计过程

 

       虽然很多研究者提出了面向对象系统设计的过程模型,但Rambaugh及其同事提出的活动序列是比较完善的处理方法之一,在之前给出的概述中,定义了如下的设计步骤。

 

       (1)将分析模型划分为子系统。

 

       (2)标识问题本身的并发性。

 

       (3)将子系统分配到处理器和任务。

 

       (4)选择实现数据管理的基本策略。

 

       (5)标识全局资源及访问它们所需的控制机制。

 

       (6)为系统定义合适的控制机制。

 

       (7)考虑边界条件应该如何处理。

 

       (8)复审并考虑权衡。

 

       下面将详细地讨论和这些步骤相关的设计活动。

 

       1.划分分析模型

 

       郑州安卓软件开发认为基本的分析原则之一是划分。在面向对象系统设计中,划分分析模型以定义类、关系和行为的内聚集合,这些设计元素被包装为子系统。

 

       通常,子系统的所有元素共享某些公共的性质,它们可能均涉及完成相同的功能;它们可能驻留在相同的产品硬件中;或它们可能管理相同的类和资源。子系统由它们的责任所刻画,即一个子系统可以通过它所提供的服务来标识。当应用在面向对象系统设计的语境中时,服务是完成特定功能(如管理字处理器文件、生成三维渲染、将模拟视频信号转换为压缩的数字图像)的一组操作。

 

       在定义(和设计)子系统时,应该遵从下面的设计标准。

 

       (1)子系统应该具有良好定义的接口,通过接口和系统的其余部分通信。

 

       (2)除了少数的“通信类”,子系统中的类应该只和该子系统中的其他类协作。

 

       (3)子系统的数量不应太多。

 

       (4)可以在子系统内部划分以降低复杂性。

 

       郑州苹果软件开发认为当两个子系统相互通信时,它们可以建立客户/服务器连接或端对端连接。在客户/服务器连接方式中,每个子系统只承担一个角色,服务只是单向地从服务器流向客户端。在端对端连接方式中,服务可以双向流动。

 

       可以用数据流日来表示上述的通信和信息流,在这种情形,数据流图中的每个“泡泡”便是一个子系统。

 

       2.并发性和子系统分配

 

       对象一行为模型的动态方面提供了对对象间(或子系统间)并发性的指示,如果对象(或子系统)不是同时活动的,则不需要并发处理。这意味着对象(或子系统)可以在同一个处理器硬件上实现。另一方面,如果对象(或子系统)必须同时异步地作用于事件,则它们被视为并发的,当子系统间是并发时,有以下两种分配方案。

 

       (1)将每个子系统分配到独立的处理器。

 

       (2)将子系统分配到相同的处理器并通过操作系统特性提供并发支持。

 

       通过检查每个对象的状态图来定义并发任务,如果事件和转换流指明在任何时刻只有单个对象是活动的,则建立一个控制线程。即使当一个对象向另一个对象发送消息,只要第一个对象在等待回应,则控制线程一直持续。然而如果第一个对象在发送消息后继续处理,则控制线程分叉。

 

       在面向对象系统中通过分离出控制线程来设计任务,因为涉及这两个行为的对象是同时活动的,每个表示一个独立的控制线程并且每个可被定义为独立的任务。如果监控和拨号活动顺序地发生,则可实现单个任务。

 

       为了确定上述的哪种处理器分配方案是合适的,设计者必须考虑性能需求、成本和处理器间通信所带来的花销。
 


 

       3.任务管理构件

 

       建议如下的设计管理并发任务的对象的策略。

 

       (1)确定任务的特征。

 

       (2)定义协调者任务和关联的对象。

 

       (3)集成协调者和其他任务。

 

       通过理解任务如何初始化来确定任务的特征,事件驱动和时钟驱动任务是最常遇见的,二者均由中断激活,但是前者接收来自某些外部源的中断,而后者由系统时钟控制。

 

       除了任务初始化方式外,也必须确定任务的优先级和关键程度,高优先级任务必须能够立即访问系统资源,高关键度的任务即使在资源可用性减少或系统处于退化状态下时也必须能够继续运行。

 

       一旦任务的特征已经确定后,就定义为完成和其他任务的协调和通信所需的属性和操作,基本任务模板(任务对象的)采用如下形式。

 

       任务名——对象的名字。

 

       描述——对对象目的的叙述。

 

       优先级——任务优先级(如低、中、高)。

 

       服务——一组作为是对象责任的操作。

 

       由……协调——对象行为被激活的方式。

 

       通过……通信——和任务相关的输人和输出数据值。

 

       然后模板描述可被转换为任务对象的标准设计模型(属性和操作的综合表示)。

 

       4.数据管理构件

 

       郑州plc开发认为数据管理包括两个不同的关注区域:①对应用本身关键的数据管理。②创建用于对象存储和检索的基础设施。通常,数据管理设计为层次的模式,其思想是分离操纵数据结构的低层需求和处理系统属性的高层需求。

 

       在系统语境中,数据库管理系统常被用作所有子系统的公共数据仓库,操纵该数据库所需的对象是通过领域分析标识的可复用类的成员或直接由数据库厂商提供。对面向对象系统的数据库设计的详细讨论超出了本书范围。

 

       数据管理构件的设计包括管理对象所需的属性和操作的设计,相关的属性被附加于问题域中的每个对象,并提供回答下列问题的信息:我如何存储自身?Co ad和Yo urdon建议创建一个对象服务器类,“其服务将告知每个对象去存储自身数据,以及检索被存储的对象以供其他设计构件使用”。

 

       5.资源管理构件

 

       对面向对象系统或产品有一系列不同的有用资源,并且在很多情况下,子系统同时竞争这些资源。全局的系统资源可以是外部实体(如磁盘驱动器、处理器或通信线)或抽象(如数据库、对象),不管资源的性质如何,软件工程师应该为其设计一个控制机制。Ram-baush及其同事建议每个资源应该由某“保护者对象”拥有,保护者对象是该资源的门卫,控制对资源的访问并协调对资源请求的冲突。

 

       6.人机界面构件

 

       虽然人机界面(HCI)构件在问题域的语境内实现,但是,界面本身对大多数现代应用而言是一个非常重要的子系统。面向对象分析模型包含了使用场景(称为用例)和对用户在和系统交互时所扮演的角色(称为参与者)的描述,这些被作为HCI设计过程的输人。

 

       一旦定义了参与者及其使用场景,则标识了一个命令层次。命令层次定义了主要的系统菜单类别(菜单条或工具调色板)以及在主要系统菜单类别(菜单窗口)内可用的所有子功能。命令层次被递进地精化,直至通过探索功能层次可实现所有用例。

 

       因为已经有大量的HCI开发环境(如MacApp或Windows),GUI元素的设计不是必要的。对于窗口、图符、鼠标操作和大量的其他交互功能已有可以复用的类(具有合适的属性和操作),实现者只需要针对问题域的要求实例化具有合适特征的对象即可。

 

       7.子系统间通信

 

       郑州erp软件认为一旦已经定义了每个子系统后,有必要定义子系统间的协作关系。人们使用的“对象到对象协作”模型可被扩展到用于子系统。如在本章前面所述,可以通过建立客户/服务器连接或端对端连接进行通信。如前所述,合约提供了一个子系统和另一个子系统交互的方式。

 

       可运用下面的设计步骤来为子系统确定合约。

 

       (1)列出可以被子系统的协作者提出的每个请求,按子系统组织这些请求并在一个或多个合约中定义,确定已标注了从超类继承的合约。

 

       (2)对每个合约,标注实现该合约蕴含的责任所需的操作(继承的和私有的),确定将操作和子系统内的特定类相关联。

 

       (3)一次考虑一个合约,创建表格,对每份合约,要创建如下的表项。

 

       类型——合约的类型(即客户/服务器或端对端)。

       协作者——作为合约伙伴的子系统的名字。

       类——支持合约蕴含的服务的类(包含在子系统中)的名字。

       操作——实现服务的操作(在类中)的名字。

       消息格式——实现协作者间交互所需的消息格式。

 

       对于子系统间的每个交互草拟一份合适的消息描述。

 

       (4)如果子系统间的交互模式是复杂的,则可以创建子系统协作图。协作图在形式上类似于以上讨论的事件流图,同时表示出每个子系统及其与其他子系统之间的交互。在交互中被激活的合约如图中所标注,交互的细节通过查找在子系统协作表中的合约而确定。

        转载请注明出处:郑州知网软件  http://www.nwisdom.com



(())
顶一下
参与讨论
姓名: 验证码:看不清楚,换一个
最新评论

联系我们

软件开发: 15838307519(司经理)

网络营销: 13676968269(王经理)

网络建设: 13073737771(郭经理)

24小时服务电话: 0371-56683330

了解更多APP开发

+好友