免费智能真题库 > 历年试卷 > 软件设计师 > 2011年下半年 软件设计师 上午试卷 综合知识
  第16题      
  知识点:   结构化分析方法   分析模型   结构化分析
  关键词:   分析模型   接口   结构化分析        章/节:   软件工程基础知识       

 
利用结构化分析模型进行接口设计时,应以(16)为依据。
 
 
  A.  数据流图
 
  B.  实体--关系图
 
  C.  数据字典
 
  D.  状态--迁移图
 
 
 

 
  第14题    2019年下半年  
   38%
某考试系统的部分功能描述如下,审核考生报名表,通过审核的考生登录系统,系统自动为其生成一套试题,考试中心提供标准答案,问..
  第18题    2016年上半年  
   19%
在结构化分析中,用数据流图描述(17)。当采用数据流图对一个图书馆管理系统进行分析时,(18)是一个外部实体。
  第34题    2022年下半年  
   34%
文档是软件的重要因素,关于高质量文档,以下说法不正确的是()。
   知识点讲解    
   · 结构化分析方法    · 分析模型    · 结构化分析
 
       结构化分析方法
               结构化分析与设计方法是一种面向数据流的传统软件开发方法,它以数据流为中心构建软件的分析模型和设计模型。结构化分析(Structured Analysis,SA)、结构化设计(Structured Design,SD)和结构化程序设计(Structured Programming Design,SPD)构成了完整的结构化方法。
               结构化分析方法概述
               抽象和分解是处理任何复杂问题的两个基本手段。
               抽象是指忽略一个问题中与当前目标无关的那些方面,以便更充分地关注与当前目标有关的方面。对于一个复杂的问题,人们很难一下子考虑问题的所有方面和全部细节,通常可以把一个大问题分解成若干个小问题,将每个小问题再分解成若干个更小的问题,经过多次逐层分解,每个最底层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。这个过程就是分解的过程。
               结构化方法就是采用这种自顶向下逐层分解的思想进行分析建模的。自顶向下逐层分解充分体现了分解和抽象的原则。随着分解层次的增加,抽象的级别也越来越低,即越来越接近问题的解。自顶向下的过程是分解的过程,自底向上的过程是抽象的过程。
               结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
               数据流图
               数据流图也称数据流程图(Data Flow Diagram,DFD),它是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。
               1)数据流图的基本图形元素
               数据流图中的基本图形元素包括数据流(Data Flow)、加工(Process)、数据存储(Data Store)和外部实体(Extemal Agent)。其中,数据流、加工和数据存储用于构建软件系统内部的数据处理模型;外部实体表示存在于系统之外的对象,用来帮助用户理解系统数据的来源和去向。
               (1)数据流。
               数据流由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向可以有以下几种:从一个加工流向另一个加工;从加工流向数据存储(写):从数据存储流向加工(读);从外部实体流向加工(输入);从加工流向外部实体(输出)。
               DFD中的每个数据流用一个定义明确的名字表示。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。值得注意的是,DFD中描述的是数据流,而不是控制流。
               数据流或者由具体的数据属性(也称为数据结构)构成,或者由其他数据流构成。组合数据流是由其他数据流构成的数据流,它们用于在高层的数据流图中组合相似的数据流,以使数据流图更便于阅读。
               (2)加工。
               加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。每个加工都有一个名字和编号。编号能反映出该加工位于分层DFD中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。
               一个加工可以有多个输入数据流和多个输出数据流,但至少有一个输入数据流和一个输出数据流。
               (3)数据存储。
               数据存储用来存储数据。通常,一个流入加工的数据流经过加工处理后就消失了,而它的某些数据(或全部数据)可能被加工成输出数据流,流向其他加工或外部实体。除此之外,在软件系统中还常常要把某些信息保存下来以供以后使用,这时可以使用数据存储。
               每个数据存储都有一个定义明确的名字标识。可以有数据流流入数据存储,表示数据的写入操作;也可以有数据流从数据向数据存储,表示对数据的修改。
               这里要说明的是,DFD中的数据存储在具体实现时可以用文件系统实现,也可以用数据库系统实现。数据存储的存储介质可以是磁盘、磁带或其他存储介质。
               (4)外部实体(外部主体)。
               外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。例如,对于一个考务处理系统而言,考生向系统提供报名单(输入数据流),所以考生是考务处理系统的一个源;而考务处理系统要将考试成绩的统计分析表(输出数据流)传递给考试中心,所以考试中心是该系统的一个宿。
               在许多系统中,某个源和某个宿可以是同一个人员或组织,此时,在DFD中可以用同一个符号表示。考生向系统提供报名单,而系统向考生送出准考证,所以在考务处理系统中,考生既是源又是宿。
               源和宿采用相同的图形符号表示,当数据流从该符号流出时,表示它是源;当数据流流向该符号时,表示它是宿;当两者皆有时,表示它既是源又是宿。
               2)数据流图的扩充符号
               在DFD中,一个加工可以有多个输入数据流和多个输出数据流,此时可以加上一些扩充符号来描述多个数据流之间的关系。
               (1)星号(*)。
               星号表示数据流之间存在"与"关系。如果是输入流则表示所有输入数据流全部到达后才能进行加工处理;如果是输出流则表示加工结束将同时产生所有的输出数据流。
               (2)加号(+)。
               加号表示数据流之间存在"或"关系。如果是输入流则表示其中任何一个输入数据流到达后就能进行加工处理;如果是输入流则表示加工处理的结果是至少产生其中一个输出数据流。
               (3)异或(⊕)。
               异或表示数据流之间存在"互斥"关系。如果是输入流则表示当且仅当其中一个输入流到达后才能进行加工处理;如果是输出流则表示加工处理的结果是仅产生这些输出数据流中的一个。
               3)数据流图的层次结构
               从原理上讲,只要纸足够大,一个软件系统的分析模型就可以画在一张纸上。然而,一个复杂的软件系统可能涉及上百个加工和上百个数据流,甚至更多。如果将它们画在一张图上,则会十分复杂,不易阅读,也不易理解。
               根据自顶向下逐层分解的思想,可以将数据流图按照层次结构来绘制,每张图中的加工个数可大致控制在"7加减2"的范围内,从而构成一套分层数据流图。
               (1)层次结构。
               分层数据流图的顶层只有一张图,其中只有一个加工,代表整个软件系统,该加工描述了软件系统与外界之间的数据流,称为顶层图。
               顶层图中的加工(即系统)经分解后的图称为0层图,也只有一张。处于分层数据流图最底层的图称为底层图,在底层图中,所有的加工不再进行分解。分层数据流图中的其他图称为中间层,其中至少有一个加工(也可以是所有加工)被分解成一张子图。在整套分层数据流图中,凡是不再分解成子图的加工称为基本加工。
               (2)图和加工的编号。
               首先介绍父图和子图的概念。
               如果某图(记为A)中的某一个加工分解成一张子图(记为B),则称A是B的父图,B是A的子图。若父图中有n个加工,则它可以有0一刀张子图,但每张子图只对应一张父图。
               为了方便对图进行管理和查找,可以采用下列方式对DFD中的图和加工编号。
               ①顶层图中只有一个加工(代表整个软件系统),该加工不必编号。
               ②0层图中的加工编号分别为1、2、3--。
               ③子图号就是父图中被分解的加工号。
               ④对于子图中加工的编号,若父图中的加工号为X的加工分解成某一子图,则该子图中的加工编号分别为x.1、x.2、X.3…。
               4)分层数据流图的审查
               在分层数据流图画好后,应该认真检查图中是否存在错误或不合理(不理想)的部分。
               (1)分层数据流图的一致性和完整性。
               ①分层数据流图的一致性。
               a.父图与子图的平衡。
               b.数据守恒。
               c.局部数据存储。
               d.一个加工的输出数据流不能与该加工的输入数据流同名。
               ②分层数据流图的完整性。
               a.每个加工至少有一个输入数据流和一个输出数据流。
               b.在整套分层数据流图中,每个数据存储应至少有一个加工对其进行读操作,另一个加工对其进行写操作。
               c.分层数据流图中的每个数据流和文件都必须命名(除了流入或流出数据存储的数据流),并保持与数据字典一致。
               d.分层数据流图中的每个基本加工都应有一个加工规约。
               (2)构造分层DFD时需要注意的问题。
               ①适当命名。
               a.名字应反映整个对象(如数据流、加工),而不是只反映它的某一部分。
               b.避免使用空洞的、含义不清的名字,如"数据""信息""处理""统计"等。
               c.如果发现某个数据流或加工难以命名,往往是DFD分解不当的征兆,此时应考虑重新分解。
               ②画数据流而不是控制流。
               ③避免一个加工有过多的数据流。
               a.把需要重新分解的某张图的所有子图连接成一张图。
               b.把连接后的图重新划分成几个部分,使各部分之间的联系最小。
               c.重新定义父图,即第b步中的每个部分作为父图中的一个加工。
               d.重新建立各子图,即第b步中的每个部分都是一张子图。
               e.为所有的加工重新命名并编号。
               ④分解尽可能均匀。
               ⑤先考虑确定状态,忽略琐碎的细节。
               ⑥随时准备重画。
               (3)分解的程度。
               在自顶向下画数据流图时,为了便于对分解层数进行把握,可以参照以下几条与分解有关的原则。
               ①7加减2。
               ②分解应自然,概念上应合理、清晰。
               ③只要不影响DFD的易理解性,可适当增加子加工数量,以减少层数。
               ④一般来说,上层分解得快一些(即多分解几个加工),下层分解得慢一些(即少分解几个加工)。
               ⑤分解要均匀。
               数据字典(DD)
               数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。其中,对加工的描述称为"小说明",也可以称为"加工逻辑说明"。
               1)数据字典的内容
               数据字典有以下4类条目:数据流、数据项、数据存储和基本加工。数据项是组成数据流和数据存储的最小元素。源点、终点不在系统之内,故一般不在字典中说明。
               (1)数据流条目。数据流条目给出了DFD中数据流的定义,通常列出该数据流的各组成数据项。
               (2)数据存储条目。数据存储条目是对数据存储的定义。
               (3)数据项条目。数据项条目是不可再分解的数据单位。
               (4)基本加工条目。加工条目是用来说明DFD中基本加工的处理逻辑的,由于下层的基本加工是由上层的加工分解而来,只要有了基本加工的说明,就可理解其他加工。
               2)数据词典管理
               词典管理主要是把词典条目按照某种格式组织后存储在词典中,并提供排序、查找和统计等功能。如果数据流条目包含了来源和去向,文件条目包含了读文件和写文件,还可以检查数据词典与数据流图的一致性。
               3)加工逻辑的描述
               加工逻辑也称为"小说明"。常用的加工逻辑描述方法有结构化语言、判定表和判定树3种。
               (1)结构化语言。
               结构化语言(如结构化英语)是一种介于自然语言和形式化语言之间的半形式化语言,是自然语言的一个受限子集。
               结构化语言没有严格的语法,它的结构通常可分为内层和外层。外层有严格的语法,内层的语法比较灵活,可以接近于自然语言的描述。
               ①外层。用来描述控制结构,采用顺序、选择和重复3种基本结构。
               a.顺序结构。一组祈使语句、选择语句、重复语句的顺序排列。祈使语句是指至少包含一个动词及一个名词,指出要执行的动作及接受动作的对象。
               b.选择结构。一般用IF-THEN-ELSE-ENDIF、CASE-OF-ENDCASE等关键词。
               c.重复结构。一般用DO-WHILE-ENDDO、REPEAT-UNTIL等关键词。
               ②内层。一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其动词含义要具体,尽量不用形容词和副词来修饰,还可使用一些简单的算法运算和逻辑运算符号。
               (2)判定表。
               在有些情况下,数据流图中某个加工的一组动作依赖于多个逻辑条件的取值。这时,用自然语言或结构化语言都不易于清楚地描述出来,而用判定表能够清楚地表示复杂的条件组合与应做的动作之间的对应关系。
               判定表由4个部分组成,用双线分割成4个区域,如下图所示。
               
               判定表结构
               (3)判定树。
               判定树是判定表的变形,一般情况下它比判定表更直观,且易于理解和使用。
 
       分析模型
        9.3.1节从用户的观点对系统进行了用例建模,但获得了用例并不意味着分析的结束,还要对需求进行深入研究,获取关于问题域本质内容的分析模型。分析模型描述系统的基本逻辑结构,展示对象和类如何组成系统(静态模型),以及它们如何保持通信实现系统行为(动态模型)。
        为了使模型独立于具体的开发语言,需要把注意力集中在概念性问题上而不是软件技术问题上,这些技术的起始点就是领域模型。领域模型又称为概念模型或域模型,也就是找到代表那些事物与概念的对象,即概念类。概念类可以从用例模型中获得灵感,经过完善将形成分析模型中的分析类。在迭代开发过程中,每一个用例对应一个类图,描述参与这个用例实现的所有概念类,用例的实现主要通过交互图来表示。
        建立分析模型包括以下基本活动:
        (1)发现领域对象,定义概念类。发现类的方法有很多种,其中最广泛应用的莫过于“名词动词法”。它的主要规则是从名词与名词短语中提取对象与属性;从动词与动词短语中提取操作与关联;而所有格短语通常表明名词应该是属性而不是对象。
        (2)识别对象的属性。属性是描述对象静态特征的一个数据项。可以与用户进行交谈,提出问题来帮助寻找对象的属性。属性是概念类所拥有的特性,从概念建模的角度看,属性越简单越好,要保持属性的简单性,应该做到4个方面:仅定义与系统责任和系统目标有关的属性;使用简单数据类型来定义属性;不使用可由其他属性导出的属性(冗余属性);不为对象关联定义属性。最后,要对属性加以说明,包括名称和解释、数据类型,以及其他的一些要求。
        (3)识别对象的关系,包括建立类的泛化关系、对象的关联关系。理清类之间的层次关系,决定类之间的关系类型,确定关系的多重性和角色的导向性。多重性指定所在类可以实例化的对象数量(重数),即该类的多少个对象在一段特定的时间内可以与另一个类的一个对象相关联;导向性表示可以通过关联从源类导向到目标类,也就是说给定关联一端的对象就能够容易并直接地得到另一端的对象。
        (4)为类添加职责。找到了反映问题域本质的主要概念类,而且还理清它们之间的协作关系之后,我们就可以为这些类添加其相应的职责。类的职责包括两个主要内容,分别是类所维护的知识、类能够执行的行为。可以使用状态图来描述系统中单个对象的行为。
        (5)建立交互图。多个对象的行为通常采用对象交互来表示,UML 2.0提供的交互图有顺序图、交互概览图、通信图和定时图。每种图出于不同视点对行为有不同的表现能力,其中最常用的是顺序图,几乎可以用在任何系统的场合。顺序图的基本元素有对象、参与者、生命线、激活框、消息和消息路线,其中消息是顺序图的灵魂。
        :在整个开发的过程中,分析模型是不断演变的,最初的分析模型主要是围绕着领域知识进行的,对现实的事物进行建模。而后,则不断地加入设计的元素,演变成为运行于计算机上的架构和结构。其演变过程中最主要的变化体现在以下3个方面:
        (1)根据鲁棒分析和交互分析的结果,补充类的属性和操作,不断地细化其内容,更细致地刻化类之间的关联关系,以便体现代码的核心。
        (2)添加许多与计算机实现相关的技术类,以体现系统的实现结构。
        (3)利用分析模式、设计模式对类模型进行优化。
 
       结构化分析
        SA方法使用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下、逐层分解,直至找到满足功能要求的所有可实现的软件为止。SA方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表及判定树等。
        SA方法的步骤如下:
        (1)分析当前的情况,做出反映当前物理模型的数据流图(Data Flow Diagram, DFD)。
        (2)推导出等价的逻辑模型的DFD。
        (3)设计新的逻辑系统,生成数据字典和基元描述。
        (4)建立人机接口,提出可供选择的目标系统物理模型的DFD。
        (5)确定各种方案的成本和风险等级,据此对各种方案进行分析。
        (6)选择一种方案。
        (7)建立完整的需求规约。
   题号导航      2011年下半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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题    在手机中做本题