免费智能真题库 > 历年试卷 > 系统分析师 > 2009年上半年 系统分析师 上午试卷 综合知识
  第5题      
  知识点:   面向对象分析   面向对象分析
  关键词:   面向对象分析   对象   面向对象        章/节:   需求分析和设计方法       

 
面向对象分析的任务不包含(5)。
 
 
  A.  建模系统功能
 
  B.  发现并确定业务对象
 
  C.  建模各对象的状态
 
  D.  组织对象并确定对象间的关系
 
 
 

 
  第1题    2014年上半年  
   36%
在订单管理模块中,新建订单和修改订单都需要检查用户是否登录,用例“新建订单”、“修改订单”与用例&ldq..
  第4题    2009年上半年  
   45%
面向对象分析的一项重要任务是发现潜在对象并进行筛选,错误的做法是删除(4)。
  第1题    2016年上半年  
   50%
用例是一种描述系统需求的方法,以下关于用例建模的说法中,正确的是(1)。
   知识点讲解    
   · 面向对象分析    · 面向对象分析
 
       面向对象分析
        OOA就是直接以问题域中客观存在的事物或概念识别为对象,建立分析模型,用对象的属性和服务分别描述事物的静态特征和行为,并且保留问题域中事物之间关系的原貌。问题域是指一个包含现实世界事物与概念的领域,这些事物和概念与所设计的系统要解决的问题有关。
        分析模型独立于具体实现,即不考虑与系统具体实现有关的因素,这也是OOA和OOD的区别所在。OOA的任务是“做什么”,OOD的任务是“怎么做”。
                      用例模型
                      OOA的基本任务是运用面向对象方法,对问题域和系统责任进行分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域及系统责任所需的类和对象,定义它们的属性和服务,以及它们之间所形成的结构、静态联系和动态联系。最终产生一个符合用户需求,并能直接反映问题域和系统责任的OOA模型及其详细说明。
                      用例分析方法的创始人Ivar Jacobson给用例的定义是:“用例实例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。一个用例则定义一组用例实例。”从这个定义中,我们可以得知用例是由一组用例实例组成的,用例实例也就是常说的“使用场景”,就是用户使用系统的一个实际的、特定的场景;其次,可以知道,用例应该给参与者带来可见的价值,这点很关键;最后还可以得知,用例是在系统中的。
                      用例分析技术为软件需求规格化提供了一个基本的元素,而且该元素是可验证、可度量的。用例可以作为项目计划、进度控制、测试等环节的基础。而且用例还可以使开发团队与客户之间的交流更加顺畅。构建用例模型需要经历识别参与者、合并需求获得用例、细化用例描述三个阶段。
                      (1)识别参与者(actor)。参与者是系统之外与系统进行交互的任何事物,参与者可以是使用系统的用户,也可以是其他外部系统、外部设备等外部实体。在UML中采用小人符号来表示参与者。参与者有主要参与者和次要参与者之分,开发用例的重点是要找到主要参与者。
                      (2)合并需求获得用例。将参与者都找到之后,接下来就是仔细地检查参与者,为每一个参与者确定用例。而其中的依据主要可以来源于已经获取得到的特征表。首先,将特征分配给相应的参与者,然后进行合并操作,最后绘制成用例图。在确定用例的过程中,不能混淆用例和用例所包含的步骤,要注意区分业务用例和系统用例。
                      (3)细化用例描述。用例建模的主要工作是书写用例规约(use case specification),而不是画图。用例模板为一个给定项目的所有人员定义了用例规约的结果,其内容至少包括用例名、参与者、目标、前置条件、事件流(基本事件流、扩展事件流)、后置条件等,其他的还可以包括非功能需求、用例优先级等。
                      一个较为复杂的系统会有较多的用例,为便于理解,可以为它们建立多张用例图。更为复杂的情况将导致所有用例难以维持一种平面结构,这时可以对用例进行分组。UML使用用例主题划分用例图,一组用例放置在以主题命名的方框中(类似于系统边界),每个主题中可以包含多个用例图。
                      分析模型
                      10.3.1节从用户的观点对系统进行了用例建模,但捕获了用例并不意味着分析的结束,还要对需求进行深入研究,获取关于问题域本质内容的分析模型。分析模型描述系统的基本逻辑结构,展示对象和类如何组成系统(静态模型),以及如何保持通信实现系统行为(动态模型)。
                      为了使模型独立于具体的开发语言,需要把注意力集中在概念性问题上而不是软件技术问题上,这些技术的起始点就是领域模型。领域模型又称为概念模型或域模型,也就是找到代表那些事物与概念的对象,即概念类。概念类可以从用例模型中获得灵感,经过完善将形成分析模型中的分析类。在迭代开发过程中,每一个用例对应一个类图,描述参与这个用例实现的所有概念类,用例的实现主要通过交互图来表示。
                      建立分析模型包括以下基本活动:
                      (1)发现领域对象,定义概念类。发现类的方法有很多种,其中最广泛应用的莫过于“名词动词法”。它的主要规则是从名词与名词短语中提取对象与属性;从动词与动词短语中提取操作与关联;而所有格短语通常表明名词应该是属性而不是对象。
                      (2)识别对象的属性。属性是描述对象静态特征的一个数据项。可以与用户进行交谈,提出问题来帮助寻找对象的属性。属性是概念类所拥有的特性,从概念建模的角度看,属性越简单越好,要保持属性的简单性,应该做到4个方面:仅定义与系统责任和系统目标有关的属性;使用简单数据类型来定义属性;不使用可由其他属性导出的属性(冗余属性);不为对象关联定义属性。最后,要对属性加以说明,包括名称和解释、数据类型,以及其他的一些要求。
                      (3)识别对象的关系,包括建立类的泛化关系、对象的关联关系。理清类之间的层次关系,决定类之间的关系类型,确定关系的多重性和角色的导向性。多重性指定所在类可以实例化的对象数量(重数),即该类的多少个对象在一段特定的时间内可以与另一个类的一个对象相关联;导向性表示可以通过关联从源类导向到目标类,也就是说给定关联一端的对象就能够容易并直接地得到另一端的对象。
                      (4)为类添加职责。找到了反映问题域本质的主要概念类,而且还理清它们之间的协作关系之后,我们就可以为这些类添加其相应的职责。类的职责包括两个主要内容,分别是类所维护的知识、类能够执行的行为。可以使用状态图来描述系统中单个对象的行为。
                      (5)建立交互图。多个对象的行为通常采用对象交互来表示,UML 2.0提供的交互图有顺序图、交互概览图、通信图和定时图。每种图出于不同视点对行为有不同的表现能力,其中最常用的是顺序图,几乎可以用在任何系统的场合。顺序图的基本元素有对象、参与者、生命线、激活框、消息和消息路线,其中消息是顺序图的灵魂。
                      在整个开发的过程中,分析模型是不断演变的,最初的分析模型主要是围绕着领域知识进行的,对现实的事物进行建模。而后,则不断地加入设计的元素,演变成为运行于计算机上的体系结构。其演变过程中最主要的变化体现在以下3个方面:
                      (1)根据鲁棒分析和交互分析的结果,补充类的属性和操作,不断地细化其内容,更细致地刻化类之间的关联关系,以便体现代码的核心。
                      (2)添加许多与计算机实现相关的技术类,以体现系统的实现结构。
                      (3)利用分析模式、设计模式对类模型进行优化。
 
       面向对象分析
        同其他分析方法一样,面向对象分析(Object-Oriented Analysis,OOA)的目的是获得对应用问题的理解。理解的目的是确定系统的功能、性能要求。面向对象分析法与功能/数据分析法之间的差别是前期的表述含义不同。功能/数据分析法分开考虑系统的功能要求和数据及其结构,面向对象分析方法是将数据和功能结合在一起作为一个综合对象来考虑。面向对象分析技术可以将系统的行为和信息间的关系表示为迭代构造特征。
        面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。
               认定对象
               在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的“名词”作为一个对象,这通常是研究问题、定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象,实质性对象是系统稳定性的基础。例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系统中。
               组织对象
               分析对象间的关系,将相关对象抽象成类,其目的是简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑,如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
               对象间的相互作用
               描述出各对象在应用系统中的关系。如一个对象是另一个对象的一部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。
               基于对象的操作
               当考虑对象的界面时,自然要考虑对象的操作。其操作有从对象直接标识的简单操作,如创建、增加、删除等;也有更复杂的操作,如将几个对象的信息连接起来。一般而言,避免对象太复杂比较好,当连接的对象太复杂时,可将其标识为新对象。当确定了对象的操作后,再定义对象的内部,对象内部定义包括其内部数据信息、信息存储方法,继承关系以及可能生成的实例数等属性。
               分析阶段最重要的是理解问题域的概念,其结果将影响整个工作。经验表明,从应用定义域概念标识对象是非常合理的,完成上述工作后写出规范文档,文档确定每个对象的范围。
               早期面向对象的目标之一是简化模型与问题域之间的语义差距。事实上,面向对象分析的基础是软件系统结构,这依赖于人类看待现实世界的方法。当人们理解求解问题的环境时,常采用对象、分类法和层次性这类术语。面向对象分析与功能/数据分析方法相比,面向对象的结果比较容易理解和管理。面向对象分析方法的另一个优点是便于修改,早期阶段的修改容易提高软件的可靠性。
   题号导航      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 /
 
第5题    在手机中做本题