免费智能真题库 > 历年试卷 > 软件设计师 > 2009年下半年 软件设计师 上午试卷 综合知识
  第16题      
  知识点:   面向对象的分析与设计方法   基本思想   面向对象方法   面向对象开发方法
  关键词:   开发方法   面向对象方法   对象   开发   面向对象        章/节:   面向对象基础知识       

 
面向对象开发方法基本思想是尽可能按照人类认识客观世界的方法来分析和解决问题,(16)方法不属于面向对象方法
 
 
  A.  Booch
 
  B.  Coad
 
  C.  OMT
 
  D.  Jackson
 
 
 

 
  第40题    2011年上半年  
   21%
UML的设计视图包含了类、接口和协作,其中,设计视图的静态方面由(39)和(40)表现:动态方面由交互图、(41)表现。
  第42题    2015年下半年  
   19%
如下所示的UML图中,(I)是(40),(Ⅱ)是(41),(Ⅲ)是(42)。
  第43题    2019年下半年  
   60%
下图所示UML图为(42)。有关该图的叙述中,不正确的是(43)。
   知识点讲解    
   · 面向对象的分析与设计方法    · 基本思想    · 面向对象方法    · 面向对象开发方法
 
       面向对象的分析与设计方法
               Peter Coad和Edward Yourdon的OOA和OOD法
                      OOA
                      OOA模型由下列5个层次和5个活动组成。
                      (1)5个层次:主题层、对象类层、结构层、属性层、服务层。
                      (2)5个活动:标志对象类、标志结构、定义主题、定义属性、定义服务。
                      在这种方法中定义了两种对象类之间的结构,一种称为分类结构,另一种称为组装结构。
                      OOD
                      OOA中的5个层次和5个活动继续贯穿在OOD过程中。OOD模型由4个部分和4个活动组成。
                      4个活动是设计问题域部件、设计人机交互部件、设计任务管理部件、设计数据管理部件。
               Booch的OOD法
               Booch认为软件开发是一个螺旋上升的过程,在螺旋上升的每个周期中有以下步骤。
               (1)标识类和对象。
               (2)确定它们的含义。
               (3)标志它们之间的关系。
               (4)说明每一个类的界面和实现。
               除了类图、对象图、模块图、进程图外,Booch的OOD中还使用了两种动态描述图,一种是刻画特定类实例的状态转换图,另一种是描述对象间事件变化的时序图。
               OMT法
               对象建模技术(OMT)定义了3种模型,即对象模型、动态模型和功能模型。OMT方法有4个步骤,即分析、系统设计、对象设计和实现。
                      对象模型、动态模型和功能模型
                      1)对象模型
                      OMT的对象模型中除了对象、类、继承外,还有一些其他的概念。
                      .链和关联。链表示实例对象间的物理或概念上的连接。关联描述具有公共结构和公共语义的一组链。
                      .泛化。泛化是一个类与它的一个或多个细化类之间的关系,即一般与特殊的关系。被细化的类称为父类,每个细化的类称为子类,子类可以继承父类的特性。
                      .聚集。聚集是一种整体与部分的关系,在这种关系中表示整体的对象与表示部分的对象关联。
                      .模块。模块是组和类、关联和泛化的一种逻辑结构,模块给出了某个主题的视图。
                      2)动态模型
                      动态模型描述与时间和操作顺序有关的系统特征,包括激发事件、事件序列、确定事件先后关系以及事件和状态的组织。
                      3)功能模型
                      功能模型描述与值的变换有关的系统特征,包括功能、映射、约束和函数依赖。
                      对象模型、动态模型和功能模型之间具有下述关系。
                      (1)与功能模型的关系。对象模型展示了功能模型中的动作者、数据存储和流的结构,动态模型展示了执行加工的顺序。
                      (2)与对象模型的关系。功能模型展示了类上的操作和每个操作的变量,因此它也表示了类之间的"供应者一客户"关系;动态模型展示了每个对象的状态以及它接收事件和改变状态时所执行的操作。
                      (3)与动态模型的关系。功能模型展示了动态模型中未定义的不可分解的动作和活动的定义,对象模型展示了是谁改变了状态和承受了操作。
                      OMT的步骤
                      下面介绍OMT的步骤。
                      (1)分析。目的是建立可理解的现实世界模型。
                      (2)系统设计。确定整个系统的体系结构,形成求解问题和建立解答的高层次策略。
                      (3)对象设计。建立基于分析模型的设计模型,并考虑实现的细节,设计人员根据系统设计期间建立的策略把实现细节加入到设计模型中。
                      (4)实现。将对象设计阶段开发的对象类及其关系转换成特定的程序设计语言、数据库或硬件。
               UML概述
               统一建模语言(UML)是面向对象软件的标准化建模语言。UML由3个要素构成,即UML的基本构造块、支配这些构造块如何放置在一起的规则和运用于整个语言的一些公共机制。UML的词汇表包含3种构造块,即事物、关系和图。事物是对模型中最具代表性的成分的抽象,关系把事物结合在一起,图聚集了相关的事物。
                      事物
                      事物包括结构事物、行为事物、分组事物和注释事物。
                      (1)结构事物(Structural Thing)。结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念或物理元素。结构事物包括类(Class)、接口(Interface)、协作(Collaboration)、用例(Use Case)、主动类(Active Class)、构件(Component)和节点(Node)。
                      (2)行为事物(Behavior Thing)。行为事物是UML模型的动态部分。它们是模型中的动词,描述了跨越时间和空间的行为。共有两类主要的行为事物,即交互(Interaction)和状态机(State Machine)。
                      (3)分组事物(Grouping Thing)。分组事物是UML模型的组成部分。它们是一些由模型分解成的"盒子"。在所有的分组事物中,最主要的分组事物是包(Package)。
                      (4)注释事物(Annotational Thing)。注释事物是UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。注解(Note)是一种主要的注释事物。注解是一个依附于一个元素或者一组元素之上,并对它进行约束或解释的简单符号。
                      关系
                      UML中有4种关系,即依赖、关联、泛化和实现。
                      (1)依赖(Dependency)。依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。
                      (2)关联(Association)。关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚集(Aggregation)是一种特殊类型的关联,它描述了整体和部分间的结构关系。
                      (3)泛化(Generalization)。泛化是一种特殊一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法子元素共享了父元素的结构和行为。
                      (4)实现(Realization)。实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种地方要遇到实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。
                      UML中的图
                      UML提供的图包括类图、对象图、用例图、交互图、状态图、活动图、构件图和部署图。
                      (1)类图(Class Diagram)展现了一组对象、接口、协作及其关系。类图给出系统的静态设计视图。包含主动类的类图给出了系统的静态进程视图。
                      (2)对象图(Object Diagram)展现了一组对象及其关系。对象图描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链。
                      (3)用例图(Use Case Diagram)展现了一组用例、参与者(Actor)及其关系。
                      (4)序列图、通信图、交互概览图和时序图均被称为交互图,它们用于对系统的动态方面进行建模。
                      (5)状态图(State Diagram)展现了一个状态机,它由状态、转换、事件和活动组成。状态图关注系统的动态视图,它对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序。
                      (6)活动图(Activity Diagram)是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。活动图专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程。
                      (7)构件图(Component Diagram)展现了一组构件之间的组织和依赖。构件图专注于系统的静态实现视图。它与类图相关,通常把构件映射为一个或多个类、接口或协作。
                      (8)部署图(Deployment Diagram)展现了运行处理节点以及其中构件的配置。部署图给出了体系结构的静态实施视图。它与构件图相关,通常一个节点包含一个或多个构件。
 
       基本思想
        小波变换的基本思想是将信号展开成一族基函数的加权和,即用一族函数表示或逼近信号或函数。这一族函数是通过基本函数的平移和伸缩构成的。
        小波变换用于图像编码的基本思想就是把图像进行多分辨率分解,分解成不同空间、不同频率的子图像,然后再对子图像进行系数编码。小波变换本身并不具有压缩功能,之所以将它用于图像压缩,是因为生成的小波图像的能量主要集中于低频部分,水平、垂直和对角线上的高频部分则较少,可以将这一特性与一定的编码算法相结合,达到高效压缩图像的目的。小波变换作为一种多尺度、多分辨率的分析方法,由于小波具有很好的时频或空频局部特性,特别适合于按照人类视觉系统特性设计图像压缩编码方案,也非常有利于图像的分层传输。实验证明,图像的小波变换编码在压缩比和编码质量方面优于传统的DCT变换编码。
 
       面向对象方法
        面向对象方法是当前的主流开发方法,拥有大量不同的方法,主要包括OMT(Object Model Technology,对象建模技术)方法、Coad/Yourdon方法、OOSE(Object-Oriented Software Engineering,面向对象的软件工程)及Booch方法等,而OMT、OOSE及Booch最后统一成为UML(United Model Language,统一建模语言)。
               Coad/Yourdon方法
               Coad/Yourdon方法主要由面向对象的分析(Object-Oriented Analysis, OOA)和面向对象的设计(Object-Oriented Design, OOD)构成,特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。该方法的特点是表示简炼、易学,对于对象、结构、服务的认定较系统和完整,可操作性强。
               在Coda/Yourdon方法中,OOA的任务主要是建立问题域的分析模型。分析过程和构造OOA概念模型的顺序由5个层次组成,分别是类与对象层、属性层、服务层、结构层和主题层,它们表示分析的不同侧面。OOA需要经过5个步骤来完成整个分析工作,即标识对象类、标识结构与关联(包括继承、聚合、组合及实例化等)、划分主题、定义属性和定义服务。
               OOD中将继续贯穿OOA中的5个层次和5个活动,它由4个部分组成,分别是人机交互部件、问题域部件、任务管理部件和数据管理部件,其主要的活动就是这4个部件的设计工作。
               Booch方法
               Booch认为软件开发是一个螺旋上升的过程,每个周期包括4个步骤,分别是标识类和对象、确定类和对象的含义、标识关系、说明每个类的接口和实现。Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模型(模块图、进程图),描述了系统的构成和结构。动态模型包括状态图和顺序图。该方法对每一步都做了详细的描述,描述手段丰富而灵活。
               Booch不仅建立了开发方法,还提出了设计人员的技术要求,以及不同开发阶段的人力资源配置。Booch方法的基本模型包括类图与对象图,主张在分析和设计中既使用类图,也使用对象图。
               OMT方法
               OMT作为一种软件工程方法学,支持整个软件生存周期,覆盖了问题构成分析、设计和实现等阶段。OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型。从3个不同而又相关的角度建立了3类模型,分别是对象模型、动态模型和函数模型,OMT为每一个模型提供了图形表示。
               (1)对象模型。描述系统中对象的静态结构、对象之间的关系、属性和操作。它表示静态的、结构上的、系统的“数据”特征。主要用对象图来实现对象模型。
               (2)动态模型。描述与时间和操作顺序有关的系统特征,如激发事件、事件序列、确定事件先后关系的状态。它表示瞬时、行为上的和系统的“控制”特征。主要用状态图来实现动态模型。
               (3)函数模型。描述与值的变换有关的系统特征,包括功能、映射、约束和函数依赖。主要用数据流图来实现功能模型。
               在进行OMT建模时,通常包括4个活动,分别是分析、系统设计、对象设计和实现。
               (1)分析:建立可理解的现实世界模型。通常从问题陈述入手,通过与客户的不断交互及对现实世界背景知识的了解,对能够反映系统的3个本质特征(对象类及它们之间的关系,动态的控制流,受约束的数据的函数变换)进行分析,构造出现实世界的模型。
               (2)系统设计:确定整个系统的体系结构,形成求解问题和建立解答的高层策略。
               (3)对象设计:在分析的基础上,建立基于分析模型的设计模型,并考虑实现细节。其焦点是实现每个类的数据结构及所需的算法。
               (4)实现:将对象设计阶段开发的对象类及其关系转换为程序设计语言、数据库或硬件的实现。
               OOSE
               OOSE在OMT的基础上,对功能模型进行了补充,提出了用例(use case)的概念,最终取代了数据流图来进行需求分析和建立功能模型。
               OOSE方法采用5类模型来建立目标系统。
               (1)需求模型:获取用户的需求,识别对象,主要的描述手段有用例图、问题域对象模型及用户界面。
               (2)分析模型:定义系统的基本结构。将分析模型中的对象分别识别到分析模型中的实体对象、界面对象和控制对象三类对象中。每类对象都有自己的任务、目标并模拟系统的某个方面。实体对象模拟那些在系统中需要长期保存并加以处理的信息。实体对象由使用事件确定,通常与现实生活中的一些概念相符合。界面对象的任务是提供用户与系统之间的双向通信,在使用事件中所指定的所有功能都直接依赖于系统环境,它们都放在界面对象中。控制对象的典型作用是将另外一些对象组合形成一个事件。
               (3)设计模型:分析模型只注重系统的逻辑构造,而设计模型需要考虑具体的运行环境,即将分析模型中的对象定义为模块。
               (4)实现模型:用面向对象的语言来实现。
               (5)测试模型:测试的重要依据是需求模型和分析模型,测试的方法与9.8节所介绍的方法类似,而底层是对类(对象)的测试。测试模型实际上是一个测试报告。
               OOSE的开发活动主要分为3类,分别是分析、构造和测试。其中分析过程分为需求分析和健壮性分析两个子过程,分析活动分别产生需求模型和分析模型。构造活动包括设计和实现两个子过程,分别产生设计模型和实现模型。测试过程包括单元测试、集成测试和系统测试三个过程,共同产生测试模型。
               用例是OOSE中的重要概念,在开发各种模型时,它是贯穿OOSE活动的核心,描述了系统的需求及功能。用例实际上是描述系统用户(使用者、执行者)对于系统的使用情况,是从使用者的角度来确定系统的功能。因此,首先必须分析确定系统的使用者,然后进一步考虑使用者的主要任务、使用的方式、识别所使用的事件,即用例。
 
       面向对象开发方法
        目前,面向对象分析和设计通常采用UML。UML是面向对象的标准建模语言,通过统一的语义和符号表示,使各种方法的建模过程和表示统一起来,已成为面向对象建模的工业标准。UML通过事务、关系和图对现实世界进行建模。
        面向对象开发方法将问题和问题的解决方案组织为离散对象的集合,数据结构和行为都包含在对象的表示中。面向对象的特性包括表示、抽象、分类、封装、继承、多态和持久性。面向对象开发方法包括面向对象分析、面向对象设计和面向对象实现。面向对象分析强调在问题领域内发现和描述对象或概念。例如,在图书馆信息系统里包含了书、图书馆和顾客这样一些概念。面向对象设计采用协作的对象、对象的属性和方法说明软件解决方案的一种方式,强调的是定义软件对象和这些软件对象如何协作来满足需求,是面向对象分析的延续。例如,图书馆系统中的软件对象“书”可以有“标题”属性和“获取书”方法,在面向对象编程过程中会实现设计的对象,如Java中的Book类。
        面向对象开发方法中分析和设计有时会存在一部分重叠,不是完全独立的活动。在迭代开发中,不严格区分分析、设计和实现,而是每次迭代不同程度地进行精化。有关应用程序设计的详细内容可参考本书第10章。
   题号导航      2009年下半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第16题    在手机中做本题