免费智能真题库 > 历年试卷 > 系统架构设计师 > 2012年下半年 系统架构设计师 上午试卷 综合知识
  第27题      
  知识点:   面向对象分析   图形   需求分析   软件系统
  关键词:   UML   软件系统   需求分析   需求        章/节:   设计方法       

 
基于UML的需求分析过程的基本步骤为:利用(27)表示需求;利用(28)表示目标软件系统的总体架构。
 
 
  A.  用例及用例图
 
  B.  包图及类图
 
  C.  剧情及序列图
 
  D.  组件图及部署图
 
 
 

 
  第32题    2009年下半年  
   51%
用例(usecase)用来描述系统对事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系统”中,创..
  第32题    2015年下半年  
   39%
某软件公司欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。在明确用户需求后,该公司的架构师决定采用Bridge模式实..
  第30题    2009年下半年  
   45%
某软件公司欲开发一个Windows平台上的公告板系统。在明确用户需求后,该公司的架构师决定采用Command模式实现该系统的界面显示部..
 
  第33题    2011年下半年  
   34%
某公司欲开发一门户网站,将公司的各个分公司及办事处信息进行整合。决定采用Composite设计模式来实现公司的组织结构关系,并设计..
  第33题    2015年下半年  
   46%
某软件公司欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。在明确用户需求后,该公司的架构师决定采用Bridge模式实..
  第31题    2016年下半年  
   57%
面向对象的分析模型主要由(31)、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的..
   知识点讲解    
   · 面向对象分析    · 图形    · 需求分析    · 软件系统
 
       面向对象分析
        OOA就是直接将问题域中客观存在的事物或概念识别为对象,建立分析模型,用对象的属性和服务分别描述事物的静态特征和行为,并且保留问题域中事物之间关系的原貌。问题域是指一个包含现实世界事物与概念的领域,这些事物和概念与所设计的系统要解决的问题有关。
        :分析模型独立于具体实现,即不考虑与系统具体实现有关的因素,这也是OOA和OOD的区别所在。OOA的任务是“做什么”,OOD的任务是“怎么做”。
                      用例模型
                      OOA的基本任务是运用面向对象方法,对问题域和系统责任进行分析和理解,正确认识其中的事物及它们之间的关系,找出描述问题域及系统责任所需的类和对象,定义它们的属性和服务,以及它们之间所形成的结构、静态联系和动态联系。最终产生一个符合用户需求,并能直接反映问题域和系统责任的OOA模型及其详细说明。
                      用例分析方法的创始人Ivar Jacobson给用例的定义是:“用例实例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。一个用例则定义一组用例实例。”从这个定义中,我们可以得知用例是由一组用例实例组成的,用例实例也就是常说的“使用场景”,就是用户使用系统的一个实际的、特定的场景;其次,可以知道,用例应该给参与者带来可见的价值,这点很关键;最后还可以得知,用例是在系统中的。
                      用例分析技术为软件需求规格化提供了一个基本的元素,而且该元素是可验证、可度量的。用例可以作为项目计划、进度控制、测试等环节的基础。而且用例还可以使开发团队与客户之间的交流更加顺畅。构建用例模型需要经历识别参与者、合并需求获得用例、细化用例描述三个阶段。
                      (1)识别参与者。参与者(actor)是系统之外与系统进行交互的任何事物,参与者可以是使用系统的用户,也可以是其他外部系统、外部设备等外部实体。在UML中采用小人符号来表示参与者。参与者有主要参与者和次要参与者之分,开发用例的重点是要找到主要参与者。
                      (2)合并需求获得用例。将参与者都找到之后,接下来就是仔细地检查参与者,为每一个参与者确定用例。而其中的依据主要可以来源于已经获取得到的特征表。首先,将特征分配给相应的参与者,然后进行合并操作,最后绘制成用例图。在确定用例的过程中,不能混淆用例和用例所包含的步骤,要注意区分业务用例和系统用例。
                      (3)细化用例描述。用例建模的主要工作是书写用例规约(use case specification),而不是画图。用例模板为一个给定项目的所有人员定义了用例规约的结果,其内容至少包括用例名、参与者、目标、前置条件、事件流(基本事件流、扩展事件流)、后置条件等,其他的还可以包括非功能需求、用例优先级等。
                      :一个较为复杂的系统会有较多的用例,为便于理解,可以为它们建立多张用例图。更为复杂的情况将导致所有用例难以维持一种平面结构,这时可以对用例进行分组。UML使用用例主题划分用例图,一组用例放置在以主题命名的方框中(类似于系统边界),每个主题中可以包含多个用例图。
                      分析模型
                      9.3.1节从用户的观点对系统进行了用例建模,但获得了用例并不意味着分析的结束,还要对需求进行深入研究,获取关于问题域本质内容的分析模型。分析模型描述系统的基本逻辑结构,展示对象和类如何组成系统(静态模型),以及它们如何保持通信实现系统行为(动态模型)。
                      为了使模型独立于具体的开发语言,需要把注意力集中在概念性问题上而不是软件技术问题上,这些技术的起始点就是领域模型。领域模型又称为概念模型或域模型,也就是找到代表那些事物与概念的对象,即概念类。概念类可以从用例模型中获得灵感,经过完善将形成分析模型中的分析类。在迭代开发过程中,每一个用例对应一个类图,描述参与这个用例实现的所有概念类,用例的实现主要通过交互图来表示。
                      建立分析模型包括以下基本活动:
                      (1)发现领域对象,定义概念类。发现类的方法有很多种,其中最广泛应用的莫过于“名词动词法”。它的主要规则是从名词与名词短语中提取对象与属性;从动词与动词短语中提取操作与关联;而所有格短语通常表明名词应该是属性而不是对象。
                      (2)识别对象的属性。属性是描述对象静态特征的一个数据项。可以与用户进行交谈,提出问题来帮助寻找对象的属性。属性是概念类所拥有的特性,从概念建模的角度看,属性越简单越好,要保持属性的简单性,应该做到4个方面:仅定义与系统责任和系统目标有关的属性;使用简单数据类型来定义属性;不使用可由其他属性导出的属性(冗余属性);不为对象关联定义属性。最后,要对属性加以说明,包括名称和解释、数据类型,以及其他的一些要求。
                      (3)识别对象的关系,包括建立类的泛化关系、对象的关联关系。理清类之间的层次关系,决定类之间的关系类型,确定关系的多重性和角色的导向性。多重性指定所在类可以实例化的对象数量(重数),即该类的多少个对象在一段特定的时间内可以与另一个类的一个对象相关联;导向性表示可以通过关联从源类导向到目标类,也就是说给定关联一端的对象就能够容易并直接地得到另一端的对象。
                      (4)为类添加职责。找到了反映问题域本质的主要概念类,而且还理清它们之间的协作关系之后,我们就可以为这些类添加其相应的职责。类的职责包括两个主要内容,分别是类所维护的知识、类能够执行的行为。可以使用状态图来描述系统中单个对象的行为。
                      (5)建立交互图。多个对象的行为通常采用对象交互来表示,UML 2.0提供的交互图有顺序图、交互概览图、通信图和定时图。每种图出于不同视点对行为有不同的表现能力,其中最常用的是顺序图,几乎可以用在任何系统的场合。顺序图的基本元素有对象、参与者、生命线、激活框、消息和消息路线,其中消息是顺序图的灵魂。
                      :在整个开发的过程中,分析模型是不断演变的,最初的分析模型主要是围绕着领域知识进行的,对现实的事物进行建模。而后,则不断地加入设计的元素,演变成为运行于计算机上的架构和结构。其演变过程中最主要的变化体现在以下3个方面:
                      (1)根据鲁棒分析和交互分析的结果,补充类的属性和操作,不断地细化其内容,更细致地刻化类之间的关联关系,以便体现代码的核心。
                      (2)添加许多与计算机实现相关的技术类,以体现系统的实现结构。
                      (3)利用分析模式、设计模式对类模型进行优化。
 
       图形
        UML2.0使用了14种图,列举如下:
        (1)类图(class diagram):描述一组类、接口、协作和它们之间的关系。在面向对象系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。
        (2)对象图(object diagram):描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出了系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。
        (3)构件图(component diagram):描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。
        (4)组合结构图(composite structure diagram):描述结构化类(例如构件或类)的内部结构,包括结构化类与系统其余部分的交互点。它显示联合执行包含结构化类的行为的构件配置。组合结构图用于画出结构化类的内部内容。
        (5)用例图(use case diagram):描述一组用例、参与者(一种特殊的类)及它们之间的关系。用例图给出系统的静态用例视图。这些图在对系统的行为进行组织和建模时是非常重要的。
        (6)顺序图(sequence diagram,序列图):是一种交互图(interaction diagram),交互图展现了一种交互,它由一组对象或角色以及它们之间可能发送的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图。
        (7)通信图(communication diagram):也是一种交互图,它强调收发消息的对象或角色的结构组织。顺序图和通信图表达了类似的基本概念,但每种图所强调的概念不同,顺序图强调的是时序,通信图则强调消息流经的数据结构。
        (8)定时图(timing diagram,计时图):也是一种交互图,它强调消息跨越不同对象或角色的实际时间,而不仅仅只是关心消息的相对顺序。
        (9)状态图(state diagram):描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模。
        (10)活动图(activity diagram):将进程或其他计算的结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模特别重要,并强调对象间的控制流程。
        (11)部署图(deployment diagram):描述对运行时的处理结点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个结点包含一个或多个部署图。
        (12)制品图(artifact diagram):描述计算机中一个系统的物理结构。制品包括文件、数据库和类似的物理比特集合。制品图通常与部署图一起使用。制品也给出了它们实现的类和构件。
        (13)包图(package diagram):描述由模型本身分解而成的组织单元,以及它们的依赖关系。
        (14)交互概览图(interaction overview diagram):是活动图和顺序图的混合物。
 
       需求分析
        需求分析的方法种类繁多,不过如果按照分解的方式不同,可以很容易地划分出几种大类型:
        (1)结构化分析方法。本节后续内容将详细讨论SA的内容。
        (2)面向对象分析方法。将在9.4节中进行详细介绍。
        (3)面向问题域的分析(Problem Domain Oriented Analysis,PDOA)方法。PDOA更多地强调描述,而少强调建模。它的描述大致分为关注问题域和关注解系统的待求行为这两个方面。问题框架是PDOA的核心元素,是将问题域建模成为一系列相互关联的子域。也可以把问题框架看作是开发上下文图,但不同的是上下文图的建模对象是针对解系统,而问题框架则是针对问题域。也就是说,问题框架的目标就是大量地捕获更多有关问题域的信息。PDOA方法现在还在研究阶段,并未广泛应用。
               业务流程分析
               业务流程分析的目的是了解各个业务流程的过程,明确各个部门之间的业务关系和每个业务处理的意义,为业务流程的合理化改造提供建议,为系统的数据流程变化提供依据。
               业务流程分析的步骤如下:
               (1)通过调查掌握基本情况。
               (2)描述现有业务流程(绘制业务流程图)。
               (3)确认现有业务流程。
               (4)对业务流程进行分析。
               (5)发现问题,提出解决方案。
               (6)提出优化后的业务流程。
               在业务流程图中使用的基本符号如下图所示。
               
               业务流程图符号
               数据流图
               DFD是结构化分析中的重要方法和工具,是表达系统内数据的流动并通过数据流描述系统功能的一种方法。DFD还可被认为是一个系统模型,在信息系统开发中,一般将它作为需求说明书的组成部分。
               DFD从数据传递和加工的角度,利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之间传递的情况,来说明系统所完成的功能。具体来说,DFD的主要作用如下:
               (1)DFD是理解和表达用户需求的工具,是系统分析的手段。由于DFD简明易懂,理解它不需要任何计算机专业知识,因此通过它同客户交流很方便。
               (2)DFD概括地描述了系统的内部逻辑过程,是系统分析结果的表达工具,因而也是系统设计的重要参考资料,是系统设计的起点。
               (3)DFD作为一个存档的文字材料,是进一步修改和充实开发计划的依据。
               在DFD中,通常会出现4种基本符号,分别是数据流、加工、数据存储和外部实体(数据源及数据终点)。数据流是具有名字和流向的数据,在DFD中用标有名字的箭头表示。加工是对数据流的变换,一般用圆圈表示。数据存储是可访问的存储信息,一般用直线段表示。外部实体是位于被建模的系统之外的信息生产者或消费者,是不能由计算机处理的成分,它们分别表明数据处理过程的数据来源及数据去向,用标有名字的方框表示。下图是一个典型的DFD示例。
               
               办理取款手续的DFD
               为了表达数据处理过程中的数据加工情况,用一个DFD是不够的。稍微复杂的实际问题,在DFD中常常出现十几个甚至几十个加工。这样的DFD看起来很不清楚。层次结构的DFD能很好地解决这一问题。按照系统的层次结构进行逐步分解,并以分层的DFD反映这种结构关系,能清楚地表达整个系统。
               下图给出分层DFD的示例。数据处理S包括三个子系统1、2、3。顶层下面的第一层DFD为DFD/L1,第二层的DFD/L2.1、DFD/L2.2及DFD/L2.3分别是子系统1、2和3的细化。对任何一层数据流图来说,我们称它的上层图为父图,在它下一层的图则称为子图。
               
               分层数据流图
               概括地说,画DFD的基本步骤,就是“自顶向下,逐层分解”。检查和修改的原则如下:
               (1)DFD中的所有图形符号只限于前述4种基本图形元素。
               (2)顶层DFD必须包括前述4种基本元素,缺一不可。
               (3)顶层DFD中的数据流必须封闭在外部实体之间。
               (4)每个加工至少有一个输入数据流和一个输出数据流。
               (5)在DFD中,需按层给加工框编号。编号表明了该加工处在哪一层,以及上下层的父图与子图的对应关系。
               (6)规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡。
               (7)可以在DFD中加入物质流,帮助用户理解DFD。
               (8)图上每个元素都必须有名字。
               (9)DFD中不可夹带控制流。
               数据字典
               数据字典是关于数据的信息的集合,也就是对DFD中包含的所有元素的定义的集合。DFD和数据字典共同构成系统的逻辑模型。没有DFD,数据字典难以发挥作用;没有数据字典,DFD就不严格。只有把DFD和对DFD中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
               数据字典的设计包括:数据流设计、数据元素字典设计、数据处理字典设计、数据结构字典设计和数据存储设计。这些设计涵盖了数据的采集和范围的确定等信息。在数据字典的每一个词条中应包含以下信息名称、别名或编号、分类、描述、何处使用。
               对加工的描述是数据字典的组成内容之一,常用的加工描述方法有结构化语言、判定树及判定表。
               (1)结构化语言:介于自然语言和形式语言之间的一种半形式语言,在自然语言基础之上加了一些限度,使用有限的词汇和有限的语句来描述加工逻辑。结构化语言是受结构化程序设计思想启发而扩展出来的。结构化程序设计只允许3种基本结构。结构化语言也只允许3种基本语句,即简单的祈使语句、判断语句和循环语句。与程序设计语言的差别在于结构化语言没有严格的语法规定,与自然语言的不同在于它只有极其有限的词汇和语句。结构化语言使用三类词汇:祈使句中的动词、数据字典中定义的名词及某些逻辑表达式中的保留字。
               (2)判定树:若一个动作的执行不只依赖一个条件,而与多个条件有关,那么这项策略的表达就比较复杂。如果用结构化语言的判断语句,就有多重嵌套,层次一多,可读性就会下降。用判定树来表示,可以更直观一些。
               (3)判定表:一些条件较多、在每个条件下取值也较多的判定问题,可以用判定表表示。判定表能清晰地表达复杂的条件组合与应做动作之间的对应关系,判定表的优点是能够简洁、无二义性地描述所有的处理规则。但判定表表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构,因此判定表不能成为一种通用的设计工具。
 
       软件系统
        网络系统软件包括网络操作系统和网络协议等。网络操作系统是指能够控制和管理网络资源的软件,是由多个系统软件组成,在基本系统上有多种配置和选项可供选择,使得用户可根据不同的需要和设备构成最佳组合的互联网络操作系统。网络协议是保证网络中两台设备之间正确传送数据的约定。
   题号导航      2012年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第27题    在手机中做本题