免费智能真题库 > 历年试卷 > 软件设计师 > 2024年上半年 软件设计师 上午试卷 综合知识
  第28题      
  知识点:   结构化分析方法概述   基本思想   结构化分析   结构化分析方法
  关键词:   结构化分析        章/节:   软件工程基础知识       

 
结构化分析方法的基本思想是()
 
 
  A.  自底向上逐步分解
 
  B.  自顶向下逐步分解
 
  C.  自底向上逐步抽象
 
  D.  自顶向下逐步抽象
 
 
 

 
  第15题    2019年上半年  
   25%
数据流图建模应遵循( )的原则。
  第15题    2017年上半年  
   36%
在采用结构化开发方法进行软件开发时,设计阶段接口设计主要依据需求分析阶段的(15)。接口设计的任务主要是(16)。
  第15题    2018年下半年  
   62%
结构化分析的输出不包括(  )。
   知识点讲解    
   · 结构化分析方法概述    · 基本思想    · 结构化分析    · 结构化分析方法
 
       结构化分析方法概述
        抽象和分解是处理任何复杂问题的两个基本手段。
        抽象是指忽略一个问题中与当前目标无关的那些方面,以便更充分地关注与当前目标有关的方面。对于一个复杂的问题,人们很难一下子考虑问题的所有方面和全部细节,通常可以把一个大问题分解成若干个小问题,将每个小问题再分解成若干个更小的问题,经过多次逐层分解,每个最底层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解了。这个过程就是分解的过程。
        结构化方法就是采用这种自顶向下逐层分解的思想进行分析建模的。自顶向下逐层分解充分体现了分解和抽象的原则。随着分解层次的增加,抽象的级别也越来越低,即越来越接近问题的解。自顶向下的过程是分解的过程,自底向上的过程是抽象的过程。
        结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
 
       基本思想
        小波变换的基本思想是将信号展开成一族基函数的加权和,即用一族函数表示或逼近信号或函数。这一族函数是通过基本函数的平移和伸缩构成的。
        小波变换用于图像编码的基本思想就是把图像进行多分辨率分解,分解成不同空间、不同频率的子图像,然后再对子图像进行系数编码。小波变换本身并不具有压缩功能,之所以将它用于图像压缩,是因为生成的小波图像的能量主要集中于低频部分,水平、垂直和对角线上的高频部分则较少,可以将这一特性与一定的编码算法相结合,达到高效压缩图像的目的。小波变换作为一种多尺度、多分辨率的分析方法,由于小波具有很好的时频或空频局部特性,特别适合于按照人类视觉系统特性设计图像压缩编码方案,也非常有利于图像的分层传输。实验证明,图像的小波变换编码在压缩比和编码质量方面优于传统的DCT变换编码。
 
       结构化分析
        SA方法使用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下、逐层分解,直至找到满足功能要求的所有可实现的软件为止。SA方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表及判定树等。
        SA方法的步骤如下:
        (1)分析当前的情况,做出反映当前物理模型的数据流图(Data Flow Diagram, DFD)。
        (2)推导出等价的逻辑模型的DFD。
        (3)设计新的逻辑系统,生成数据字典和基元描述。
        (4)建立人机接口,提出可供选择的目标系统物理模型的DFD。
        (5)确定各种方案的成本和风险等级,据此对各种方案进行分析。
        (6)选择一种方案。
        (7)建立完整的需求规约。
 
       结构化分析方法
               结构化分析方法的内容
               系统分析是保证信息系统质量的第一步,它的任务是艰巨的、复杂的。如何分析用户需求,用什么形式表示系统规格说明书等,都需要有相应的方法、模型、语言和工具来配合。自20世纪70年代以来,逐渐出现了多种适用于系统分析阶段的方法,结构化分析方法就是其中具有代表性的一种方法。
               结构化分析(Structured Analysis,SA)方法由美国yourdon公司在20世纪70年代提出,是一种简单实用、使用很广的方法。该方法通常与我们以后要介绍的系统设计阶段的结构化设计(SD)方法衔接起来使用,适用于大型信息系统开发使用。
               那么到底什么是结构化分析方法呢?结构化分析方法是一种单纯的自顶向下逐步求精的功能分解方法,它按照系统内部数据传递,以变换的关系建立抽象模型,然后自顶向下逐层分解,由粗到细、由复杂到简单。结构化分析的核心特征是“分解”和“抽象”。“分解”就是把大问题分解成若干个小问题,然后分别解决,从而简化复杂问题的处理。“抽象”就是将一些具有某些相似性质的事物的相同之处概括出来,暂时忽略其不同之处,或者说,抽象是抽象出事物的本质特性而暂时不考虑它们的细节。分解和抽象实质上是一对相互有机联系的概念。自顶向下的过程,即从顶层到第一层再到第二层的过程,被称为“分解”;自底向上的过程,即从第二层到第一层再到顶层的过程,被称为抽象。也就是说,下层是上层的分解,上层是下层的抽象。这种层次分解使我们不必去考虑过多细节,而是逐步了解更多的细节。对于顶层不考虑任何细节,只考虑系统对外部的输入和输出,然后,一层层地了解系统内部的情况。结构化系统分析和设计方法的基本思想是:用系统的思想、系统工程的方法,按用户至上的原则,结构化、模块化、自上而下对信息系统进行分析与设计。主要指导原则有以下几点。
               (1)请用户共同参与系统的开发。
               (2)在为用户编写有关文档时,要考虑到他们的专业技术水平,以及阅读与使用资料的目的。
               (3)使用适当的画图工具做通信媒介,尽量减少与用户交流意见时发生问题的可能性。
               (4)在进行系统详细设计工作之前,就建立一个系统的逻辑模型。
               (5)采用“自上而下”方法进行系统分析和设计,把主要的功能逐级分解成具体的、比较单纯的功能。
               (6)采用“自顶向下”方法进行系统测试,先从具体功能一级开始测试,解决主要问题,然后逐级向下测试,直到对最低一级具体功能测试完毕为止。
               (7)在系统验收之前,就让用户看到系统的某些主要输出,把一个大的负责的系统逐级分解成小的、易于管理的系统,使用户能够尽早看到结果,及时提出意见。
               (8)对系统的评价不仅是指开发和运行费用的评价,而且还将是对整个系统生存过程的费用和收益的评价。
               结构化分析方法利用图形来表达需求,显得清晰、简明、易于学习和掌握。而且按照自顶向下、逐层分解的方式,不论系统有多复杂、规模有多大,分析工作都可以有条不紊地开展。对于大的系统只需多分解几层,分析的复杂程度并不会随之增大。这也是结构化分析的特点。
               结构化分析方法使用了以下几个工具:数据流图、数据字典、实体关系图、结构化语言、判定表和判定树,我们将介绍前4种工具。
               结构化分析方法的工具
                      数据流图
                      数据流图(Data Flow Diagram,DFD)是一种最常用的结构化分析工具,它从数据传递和加工的角度,以图形的方式刻画系统内数据的运动情况。数据流图是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储的情况。数据流图具有抽象性和概括性。抽象性表现在它完全舍去了具体的物质,只剩下数据的流动、加工处理和存储;概括性表现在它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。无论是手工操作部分还是计算机处理部分,都可以用它表达出来。因此,我们可以采用DFD这一工具来描述管理信息系统的各项业务处理过程。
                      (1)数据流图的基本成分。
                      数据流图用到4个基本符号,即外部实体、数据流、数据存储和处理逻辑,如下图所示。
                      
                      数据流图的基本成分
                      ①外部实体。外部实体指不受系统控制,在系统以外又与系统有联系的事物或人,它表达了目标系统数据的外部来源或去处。例如,顾客、职工、供货单位,等等。外部实体也可以是另外一个信息系统。
                      外部实体用一个正方形,并在其左上角外边另加一个直角来表示,在正方形内写上该外部实体的名称。为了区分不同的外部实体,可以在正方形的左上角用一个字符表示。在数据流图中,为了减少线条的交叉,同一个外部实体在一张数据流图中可以出现多次,这是在该外部实体符号的右下角画斜线,表示重复。若重复的外部实体有多个,则相同的外部实体画数目相同的斜线,如下图所示。
                      
                      外部实体
                      ②数据流。数据流表示数据的流动方向,用一个水平箭头或垂直箭头表示。数据流可以是订单、发票等。数据流一般不会是单纯的数据,而是由一些数据项组成。例如“发票”数据流由品名、规格、单位、单价、数量等数据项组成。
                      一般来说,对每个数据流要加以简单地描述,使用户和系统设计员能够理解一个数据流的含义。对数据流的描述写在箭头的上方,一些含义十分明确的数据流,也可以不加以说明,如下图所示。
                      
                      数据流的图示
                      ③数据存储。数据存储表示数据保存的地方。这里的“地方”并不是指保存数据的物理地点或物理介质,而是指数据存储的逻辑描述。所以这里的数据存储是逻辑意义上的数据存储环节,即系统信息处理功能需要的,不考虑存储的物理介质和技术手段的数据存储环节。
                      在数据流图中,数据存储用一个右边开口的长方形条来表示,图形右部填写存储的数据和数据集的名字,名字要恰当,以便用户理解。左边填写该数据存储的标识,用字母D和数字组成。同一数据存储可在一张数据流图中出现多次,这时在数据存储符号上画竖线,表示重复。
                      指向数据存储的箭头,表示送数据到数据存储(存放、改写等);从数据存储发出的箭头,表示从数据存储读取数据,如下图所示。
                      
                      数据存储
                      ④处理逻辑(加工)处理逻辑指对数据的逻辑处理功能,也就是对数据的变换功能。它包括两方面的内容:一是改变数据结构;二是在原有数据内容基础上增加新的内容,形成新的数据。
                      在数据流图中,处理逻辑可以用一个带圆角的长方形来表示,长方形分为三个部分,如下图所示。
                      
                      处理逻辑
                      标识部分用来标明一个功能,一般用字符串表示,如P1,P1.1等。
                      功能描述部分是必不可少的,它直接表达这个处理逻辑的逻辑功能。一般用一个动词加一个作动词宾语的名词表示。不过要恰如其分地表达一个处理的功能,有时候需要下一番功夫。
                      功能执行部分表示这个功能由谁来完成,可以是一个人,也可以是一个部门,甚至可以是某个计算机程序。
                      (2)数据流图的绘制。
                      由于数据流图在系统建设中的重要作用,绘制数据流图必须坚持正确的原则和运用科学的方法。绘制数据流图应遵循的主要原则如下。
                      ①确定外部项。一张数据流图表示某个子系统或某个系统的逻辑模型。系统分析人员要根据调查材料,首先识别出那些不受所描述的系统的控制,但又影响系统运行的外部环境,这就是系统的数据输入的来源和输出的去处。要把这些因素都作为外部项确定下来。确定了系统和外部环境的界面,就可集中力量分析,确定系统本身的功能。
                      ②自顶向下逐层扩展。信息系统庞大而复杂,具体的数据加工可能成百上千,关系错综复杂,不可能用一两张数据流图明确、具体地描述整个系统的逻辑功能,自顶向下的原则为我们绘制数据流图提供了一条清晰的思路和标准化的步骤。
                      ③合理布局。数据流图的各种符号要布局合理,分布均匀、整齐、清晰,使读者一目了然。这才便于交流,避免产生误解。一般要把系统数据主要来源的外部项尽量安排在左方,而要把数据主要去处的外部项尽量安排在右边,数据流的箭头线尽量避免交叉或过长,必要时可用重复的外部项和重复的数据存储符号。
                      ④数据流图只反映数据流向、数据加工和逻辑意义上的数据存储,不反映任何数据处理的技术过程、处理方式和时间顺序,也不反映各部分相互联系的判断与控制条件等技术问题。这样,只从系统逻辑功能上讨论问题,便于和用户交流。
                      ⑤数据流图绘制过程,就是系统的逻辑模型的形成过程,必须始终与用户密切接触、详细讨论、不断修改,也要和其他系统建设者共同商讨以求一致意见。
                      (3)数据流图的改进。
                      对每个系统都有一个逐步熟悉和深化的过程,因此在画数据流图时难免会有这样或那样的错误,这就需要对数据流图做进一步的改进。一般可从下面两个方面着手。
                      ①检查数据流图的正确性。
                      .数据是否守恒,即输入数据与输出数据是否匹配。数据不守恒的情况有两种。一种是某个处理过程产生输出数据,但没有输入数据给该处理过程,这肯定是某些数据流被遗漏了。另一种是有输入数据给处理过程,但没有输出数据,这种情况不一定是错误,但必须认真加以推敲:为什么将这些数据输入给这个处理过程,而处理过程却不利用它产生输出?如果确实是不必要的,就可将它去掉,以简化处理逻辑之间的联系。
                      .数据存储的使用是否恰当。在一套数据流图中的任何一个数据存储,必定有流入的数据流和流出的数据流,即写文件和读文件,缺少任何一种都意味着遗漏了某些处理逻辑。
                      .父图和子图是否平衡。父图中某一处理框的输入、输出数据流必须出现在相应的子图中,否则就会出现父图与子图的不平衡。父图和子图的数据流不平衡是一种常见的错误现象。尤其是在对子图进行修改时(如添加或删除某些数据流),必须仔细检查其父图是否要做相应的修改,以保持数据流的平衡。父图与子图的关系,类似于全国地图与各省地图的关系。在全国地图上标出主要的铁路、河流,在各省地图上标得则更详细,除了有全国地图上与该省相关的铁路、河流之外,还有一些次要的铁路、公路、河流等。
                      .任何一个数据流至少有一端是处理框。换句话说,数据流不能从外部实体直接到数据存储,也不能从数据存储直接到外部实体,也不能在外部实体之间或数据存储之间流动。初学者往往容易违反这一规定,常常在数据存储与外部实体之间画数据流。其实,记住数据流是处理功能的输入或输出,就不会出现此类错误。
                      ②提高数据流图的易理解性。
                      数据流图是系统分析员进行业务调查,与用户沟通的重要工具。因此,数据流图应该简明易懂。这也有利于后面的设计,有利于对系统规格说明书进行维护。可以从以下几个方面提高易理解性。
                      .简化处理间的联系。结构化分析的基本手段是“分解”,其目的是控制复杂性。合理的分解是将一个复杂的问题分成相对独立的几个部分,每个部分可被单独理解。在数据流图中,将一个处理逻辑分解成若干个子处理逻辑,并使各子处理逻辑尽可能地相对独立、处理逻辑间的数据流尽可能地少、每个处理逻辑的输入和输出数据流数目尽可能地少,这样每一个处理逻辑就比较容易被单独地理解,因而一个复杂的处理逻辑也就被几个较简单的子处理逻辑代替了。
                      .保持分解的均匀性。理想的分解是将一个加工分成大小均匀的几个子加工。如果在一张数据流图上,某几个已经是不必再分解的基本加工,而另一些加工却还要进一步分解三四层,这样的分解就不均匀。不均匀的分解是不容易被理解的。因为其中一些已是细节,而另一些仍然是较高层次上的抽象。在这种情况下应考虑重新分解,应努力避免特别不均匀的分解。
                      .适当命名。给数据流图中的各个成分取一个适当的名字无疑是提高其易理解性的重要手段之一。比如处理框的命名应能准确地表达其功能,理想的命名由一个具体的动词加一个具体的名词(宾语)组成,在下层尤其应该如此。例如“计算总工作量”、“开发票”。而最好将“存储和打印提货单”分成两个。“处理订货单”则不太好,“处理”是空洞的动词,没有说明究竟做什么。如果难以为某个成分取合适的名字,那么往往是分解不当的迹像,这时可以考虑重新分解。
                      数据流图也常常需要重新分解。例如画到某一层时意识到上一层或上几层所犯的错误,这时就需要对它们重新分解。重新分解可按下述步骤进行:
                      .把需要重新分解的数据流图的所有子图拼接成一张图。
                      .把新拼接成的图分成几个部分,使各部分之间的联系最少。
                      .重新建立父图,即把第②步所得的每一部分画成一个处理框。
                      .重新建立各张子图,这只需要把第②步所得的图沿各个部分边界分开即可。
                      .为所有处理重新命名和编号。
                      (4)数据流图举例。
                      下面我们以高等学校学籍管理系统为例,说明画数据流图的方法。学籍管理是一项十分严肃而复杂的工作。它要记录学生从入学到离校,整个在校期间的情况,学生毕业时把学生的情况提供给用人单位。学校还要向上级主管部门报告学籍的变动情况。
                      下图一所示概括描述了系统的轮廓、范围,标出了最主要的外部实体和数据流。它是进一步分析的出发点。学籍管理包括学生学习成绩管理、学生奖惩管理、学生异动管理三个部分。由此,下图一可以展开为下图二。虚线框是下图一中处理逻辑的放大。下面以“成绩管理”为例,说明逐层分解的思路。
                      
                      学籍管理系统顶层图
                      
                      学籍管理系统的第一层数据流图
                      某校现在实行校、系两级管理学习成绩。学校教学管理科、系教务员都登记学生成绩。任课教师把学生成绩单一式两份分别送系教务员和学校教学管理科。系教务员根据成绩单登录学籍表,学期结束时,给学生发成绩通知,根据学籍管理条例确定每个学生升级、补考、留级、退学的情况。教学管理科根据收到的成绩单登录教管科存的学籍表,统计各年级各科成绩分布,报主管领导。补考成绩也做类似处理,这样P2框扩展成下图。
                      
                      “成绩管理”框的展开
                      在上图中的一些处理,有的框还需要进一步展开,如P2.1框,但在这里我们不再一一展开。
                      数据字典
                      数据流图描述了系统的分解,即描述了系统由哪几部分组成,各部分之间的联系等,但没有说明系统中各成分的含义。只有当数据流图中出现的每一成分都给出定义之后,也就是使数据流图上的数据流名字、处理逻辑名字等都具有确切地解释之后,才能真正完整、准确地描述一个系统。为此,还需要其他工具对数据流图加以补充说明。
                      数据字典就是这样的工具。数据字典最初用于数据库管理系统。它为数据库用户、数据库管理员、系统分析员和程序员提供某些数据项的综合信息。这种思想启发了信息系统的开发人员,使他们想到将数据字典引入系统分析。
                      数据字典是以特定格式记录下来的、对系统的数据流图中各个基本要素(数据流、处理逻辑、数据存储和外部实体)的内容和特征所做的完整的定义和说明。它是结构化系统分析的重要工具之一,是对数据流图的重要补充和说明。
                      建立数据字典的工作量很大,而且相当繁琐。但这是一项必不可少的工作。数据字典在信息系统开发中具有十分重要的意义,不仅在系统分析阶段,而且在整个开发过程中以及今后的系统运行中都要使用它。
                      数据字典可以用人工方式建立。事先印好表格,填好后按一定顺序排列,就是一本字典。也可以建立在计算机内,数据字典实际上是关于数据的数据库,这样使用、维护都比较方便。编写数据字典是系统开发的一项重要的基础工作。一旦建立,并按编号排序之后,就是一本可供查阅的关于数据的字典,从系统分析一直到系统设计和实施都要使用它。在数据字典的建立、修正和补充过程中,始终要注意保证数据的一致性和完整性。
                      (1)数据字典的条目。
                      数据字典中有6类条目:数据项、数据结构、数据流、数据存储、处理过程和外部实体。不同类型的条目有不同的属性,现分别说明如下:
                      ①数据项又被称为数据元素,是系统中最基本的数据组成单位,也就是不可再分的数据单位,如学号、姓名、成绩等。一般分析数据特性应从静态和动态两个方面去进行。但在数据字典中,仅定义数据的静态特性,具体包括:
                      .数据项的名称。名称要尽量反映该元素的含义,便于理解和记忆。
                      .编号。一般由字母和数字组成。
                      .别名。一个数据元素,可能其名称不止一个;若有多个名称,则须加以说明。
                      .简述。有时候名称仍然不能很确切地反映元素的含义,则可以给该数据项加一些描述信息。
                      .数据项的取值范围和取值的含义。指数据元素可能取什么值或每一个值代表的意思。
                      数据项的取值可分为离散型和连续型两类。如人的年龄是连续型的,取值范围可定义为0~150岁。而“婚姻状况”取值范围是“未婚、已婚、离异、丧偶”,是离散型的。
                      一个数据项是离散的,还是连续的,视具体需要而定。例如在一般情况下,我们用岁数表示一个人的年龄,是连续的。但有时,我们只要用“幼年、少年、青年、壮年、老年”表示,或者区分为成年、未成年即可,这时年龄便是离散型的。
                      .数据项的长度。指出该数据项由几个数字或字母组成。如学号,按某校的编法由7个数字组成,其长度就是7个字节。
                      .数据类型。说明取值是字符型还是数字型等。
                      下表就是数据项条目的一个例子。数据字典中对“职工姓名”数据项的描述。
                      
                      一个数据项的例子
                      ②数据结构数据结构描述某些数据项之间的关系。一个数据结构可以由若干个数据项组成;也可以由若干个数据结构组成,还可以由若干个数据项和数据结构组成。在数据字典中对其定义包括:名称;编号;简述;数据结构的组成。例如下表所示订货单就是由三个数据结构组成的数据结构,表中用DS表示数据结构,用I表示数据项。
                      
                      一个的数据结构的例子
                      如果是一个简单的数据结构,只要列出它所包含的数据项。如果是一个嵌套的数据结构(即数据结构中包含数据结构),则需列出它所包含的数据结构的名称,因为这些被包含的数据结构在数据字典的其他部分已有定义,见下表。
                      
                      用户订货单的数据结构
                      ③数据流数据流由一个或一组固定的数据项组成。定义数据流时,不仅要说明数据流的名称、组成等,还应指明它的来源、去向和数据流量等。在数据字典中数据流的属性包括:
                      .名称。名称含义应尽量便于理解和记忆。
                      .编号。一般由字母和数字组成。
                      .简述。对该数据流的补充说明。
                      .数据流的来源。数据流可以来自某个外部实体、数据存储或某个处理。
                      .数据流的去向。某些数据流的去处可能不止一个,若有多个去处,则都需要进行说明。
                      .数据流的组成。指数据流所包含的数据结构。一个数据流可包含一个或多个数据结构。若只含一个数据结构,应注意名称的统一,以免产生二义性。
                      .数据流的流通量。指单位时间(每日,每小时等)里的数据传输次数。可以估计平均数或最高、最低流量各是多少。
                      .高峰期流通量。
                      下表是一个数据流的例子。
                      
                      一个数据流的例子
                      ④处理逻辑的定义处理逻辑的定义仅对数据流程图中最底层的处理逻辑加以说明。在数据字典中对其定义包括:处理逻辑名称;编号;简述;输入;处理过程;输出;处理频率,如下表所示。
                      
                      一个处理逻辑的例子
                      ⑤数据存储数据存储在数据字典中只描述数据的逻辑存储结构,而不涉及它的物理组织。在数据字典中对其定义包括:数据存储的编号;名称;简述;组成;关键字;相关的处理。下表给出了一个数据存储定义的例子。
                      
                      一个数据存储定义的例子
                      ⑥外部实体定义外部实体是数据的来源和去向。因此,在数据字典中关于外部实体的条目,主要说明外部实体产生的数据流和传给该外部实体的数据流,以及该外部实体的数量。外部实体的数量对于估计系统的业务量有参考作用,尤其是关系密切的主要外部实体。在数据字典中对外部实体的定义包括:外部实体编号;外部实体名称;简述;输入的数据流;输出的数据流。下表给出了一个外部实体定义的例子。
                      
                      一个外部实体定义的例子
                      (2)数据字典的作用。
                      数据字典实际上是“关于系统数据的数据库”。在整个系统开发过程以及系统运行后的维护阶段,数据字典都是必不可少的工具。数据字典是所有人员工作的依据、统一的标准。它可以确保数据在系统中的完整性和一致性。具体地讲,数据字典有以下作用:
                      ①按各种要求列表。可以根据数据字典,把所有数据元素、数据结构、数据流、数据存储、处理逻辑、外部实体,按一定的顺序全部列出,保证系统设计时不会遗漏。
                      如果系统分析员要对某个数据存储的结构进行深入分析,需要了解有关的细节,了解数据结构的组成乃至每个数据元素的属性,数据字典也可提供相应的内容。
                      ②相互参照,便于系统修改。根据初步的数据流图,建立相应的数据字典。在系统分析过程中,常会发现原来的数据流图及各种数据定义中有错误或遗漏,需要修改或补充。有了数据字典,这种修改就变得容易多了。
                      例如,在某个库存管理系统中,“商品库存”这个数据存储的结构是:商品编号、商品名、规格、当前库存量。一般来讲,考虑能否满足用户订货,这些数据项就够了。但如果要求库存数量不能少于“安全库存量”,则这些数据项是不够的。这时,在这个结构中就要增加“安全库存量”这个数据项。以前,只要“顾客订货量小于或等于当前库存量”,就认为可以满足用户订货;现在则只有“顾客订货量小于或等于当前库存量且当前库存量大于或等于安全库存量”时才能满足顾客订货。有了数据字典,这个修改就容易了。因为在该数据存储的条目中,记录了有关的数据流,由此可以找到因数据存储的改动而可能影响到的处理逻辑,不至于遗漏而造成不一致。
                      ③由描述内容检索名称。对于一个稍微复杂的系统,数据字典的量是相当大的,有时候系统分析员可能没有把握断定某个数据项在数据字典中是否已经定义,或者记不清楚其确切名字,这时可以通过内容查找其名称,就像根据书的内容查询图书的名字一样。
                      ④一致性检验和完整性检验。根据各类条目的规定格式,可以检验一下一些问题。
                      .是否存在没有指明来源或去向的数据流。
                      .是否存在没有指明数据存储或所属数据流的数据元素。
                      .处理逻辑与输入的数据元素是否匹配。
                      .是否存在没有输入或输出的数据存储。
                      (3)数据字典的编写与管理。
                      数据字典的内容是随着数据流图自顶向下,逐层扩展而不断充实的。数据流图的修改与完善,将导致数据字典的修改,这样才能保证数据字典的一致性和完整性。数据字典的编写可以有两种方式:手工编写和计算机辅助编写。
                      手工编写的主要工具是笔和卡片,当然可以辅以计算机文字处理手段。这时计算机只是作为手工书写工具来使用,没有处理数据字典的结构、内容和格式的功能。由于数据字典各条目的定义、说明和分解细化主要靠人的知识、经验和判断,手工编写具有较大的灵活性与适应性,也就是说,可以随着系统分析工作的深入和对用户信息需求的了解的细化而不断充实、修正数据字典的内容。但手工编写效率不高、编辑困难、容易出现疏漏与错误,对数据字典的检验、维护与查询、检索、统计、分析都不方便。
                      计算机辅助编写数据字典时,计算机以输入的方式接受数据字典各类成分的定义和说明的原始数据,根据规范要求提供编辑、索引、完整性、一致性检查的功能。具有统计、报告、查询功能,可以定义在某些加工中使用、但数据流图上未注明的数据元素。这类计算机辅助工具称为计算机辅助系统工程(Computer-Aided Systems Engineering)工具,或称计算机辅助软件工程(Computer-Aided Software Engineering,CASE)工具。这些CASE工具提供DFD和DD的编制功能,具有图形处理、数据管理和文字编辑的能力,有的还能在系统设计与系统实施阶段提供辅助。
                      对于计算机辅助编写数据字典来说,最重要的是建立便于输入、查询与维护的数据库,称之为数据字典库。因此,除了采用商品化的CASE工具软件辅助编写数据字典外,也可采用通用的开发工具和数据库管理系统来创建数据字典库及相应的编辑、查询与检验程序。
                      但在开发初期,对于规模不太大的系统,手工编写更方便实惠。
                      编写数据字典的基本要求是:
                      .对数据流图上各种成分的定义必须明确、唯一、易于理解。命令、编号与数据流图一致,必要时可增加编码,以方便查询、检索、维护和统计报表。
                      .符合一致性和完整性的要求,对数据流图上的成分定义与说明没有遗漏。
                      .数据字典中无内容重复或内容相互矛盾的条目。
                      .数据流图中同类成分的数据字典条目中,无同名异义或异名同义者。
                      .格式规范、风格统一、文字精炼,数字与符号正确。
                      数据字典的建立,对于系统分析人员、用户或是系统设计人员均有很大好处,他们可以从不同的角度分别从数据字典中得到有关的信息,便于认识整个系统并随时查询系统中的部分信息。随着系统开发工作的不断深入,数据字典所带来的效益也将越来越明显。
                      为了保证数据的一致性,数据字典必须由专人(数据管理员)管理。其职责就是维护和管理数据字典,保证数据字典内容的完整一致。任何人(包括系统分析员、系统设计员、程序员)要修改数据字典的内容,都必须通过数据管理员。数据管理员要把数据字典的最新版本及时通知有关人员。
                      实体联系图
                      数据流图描述了系统的逻辑结构,数据流图中的有关处理逻辑及数据流的含义可用数据字典具体定义说明,但是对于比较复杂的数据及其之间的关系,用它们是难以描述的,在这种情况下一般采用实体联系图进行描述。
                      实体联系图(Entity-Relationship Diagram, ER图),可用于描述数据流图中数据存储及其之间的关系,最初用于数据库概念设计。
                      下图是大学教务管理问题中对教务处进行分析调查后得到的实体联系图。其中,学生档案是有关学生情况的集合,课程档案是有关开设的课程情况集合,注册记录、选课单则分别是学生注册和选课情况的集合。它用简单的图形方式描述了学生和课程等这些教学活动中的数据之间的关系。
                      
                      大学教务处教务管理问题实体联系图
                      在实体联系图中,有实体、联系和属性三个基本成分,如下图所示。
                      (1)实体。实体是现实中存在的对象,有具体的,也有抽象的;有物理上存在的,也有概念性的;例如,学生、课程,等等。它们的特征是可以互相区别,否则就会被认为是同一对象。凡是可以互相区别、又可以被人们识别的事、物、概念等统统可以被抽象为实体。数据流图中的数据存储就是一种实体。实体可以分为独立实体和从属实体或弱实体,独立实体是不依赖于其他实体和联系而可以独立存在的实体,如上图中的“学生档案”、“课程档案”等,独立实体常常被直接简称为实体;从属实体是这样一类实体,其存在依赖于其他实体和联系,在实体联系图中用带圆角的矩形框表示,例如上图中的“注册记录”是从属实体,它的存在依赖于实体“学生档案”,“课程档案”和联系“注册”,“选课单”也是从属实体,它的存在依赖于实体“学生档案”,“课程档案“和联系”选课”。
                      在以下述说中,为简便起见,将上图中的实体“学生档案”和“课程档案”直接称为“学生”和“课程”。
                      (2)联系。实体之间可能会有各种关系。例如,“学生”与“课程”之间有“选课”的关系。这种实体和实体之间的关系被抽象为联系。在实体联系图中,联系用联结有关实体的菱形框表示,如上图所示。联系可以是一对一(1:1),一对多(1:N)或多对多(M:N)的,这一点在实体联系图中也应说明。例如在大学教务管理问题中,“学生”与“课程”是多对多的“选课”联系。
                      (3)属性。实体一般具有若干特征,这些特征就被称为实体的属性,例如上图中的实体“学生”,具有学号、姓名、性别、出生日期和系别等特征,这些就是它的属性。
                      联系也可以有属性,例如学生选修某门课程,它既不是学生的属性,也不是课程的属性,因为它依赖于某个特定的学生,又依赖于某门特定的课程,所以它是学生与课程之间的联系“选课”的属性。在上图中,联系“选课”的属性被概括在从属实体“选课单”中。联系具有属性这一概念对于理解数据的语义是非常重要的。
                      在实体联系图中,还有如下关于属性的几个重要概念。
                      .主键,如果实体的某一属性或某几个属性组成的属性组的值能唯一地决定该实体其他所有属性的值,也就是能唯一地标识该实体,而其任何真子集无此性质,则这个属性或属性组被称为实体键。如果一个实体有多个实体键存在,则可从其中选一个最常用到的作为实体的主键。例如实体“学生”的主键是学号,一个学生的学号确定了,那么他的姓名、性别、出生日期和系别等属性也就确定了。在实体联系图中,常在作为主键的属性或属性组与相应实体的连线上加一短垂线表示,如上图所示的“学号”。
                      
                      实体联系图的基本成分
                      .外键,如果实体的主键或属性(组)的取值依赖于其他实体的主键,那么该主键或属性(组)被称为外键。例如,从属实体“注册记录”的主键“学号”的取值依赖于实体“学生”的主键“学号”,“选课单”的主键“学号”和“课程号”的取值依赖于实体“学生”的主键“学号”和实体“课程”的主键“课程号”,这些主键和属性就是外键。
                      .属性域,属性可以是单域的简单属性,也可以是多域的组合属性。组合属性由简单属性和其他组合属性组成。组合属性中允许包括其他组合属性意味着属性可以是一个层次结构,如下图所示通信地址就是一种具有层次结构的属性。
                      
                      通信地址属性
                      .属性值,属性可以是单值的,也可以是多值的。例如一个人所获得的学位可能是多值的。当某个属性对某个实体不适应或属性值未知时,可用空缺符NULL表示。
                      在画实体联系图时,为了使得图形更加清晰、易读易懂,可以将实体和实体的属性分开画,并且对实体进行编号,如下图一和下图二所示。
                      
                      实体联系图
                      
                      实体属性图
                      由于人们通常就是用实体、联系和属性这三个概念来理解和描述现实问题的,所以实体联系图非常接近人的思维方式。又因为实体联系图采用简单的图形来表达人们对现实的理解,所以不熟悉计算机技术的用户也都能够接受它,因此实体联系图成为了系统分析员和用户之间沟通的工具。
                      描述加工处理的结构化语言
                      数据流图中所有不进一步分解的加工(处理逻辑),成为基本加工。基本加工是最底层的加工,但并不都在最底层的数据流图中。上层数据流图中某些加工环节不需要进一步分解的,都属于基本加工。基本加工有父项,无子项;而非基本加工均有子项,这是识别基本加工的主要原则。在数据字典中,非基本加工可用基本加工的组合来描述,因而比较简洁。基本加工是实现系统功能的基本组成部分,准确地、清晰地描述基本加工,成为表达系统逻辑功能的关键。
                      由于基本加工涉及详细的数据处理功能和处理过程,为了做到准确、清晰、简洁,基本加工的描述往往需要多种手段与工具,所用工具有自然语言的文字叙述、结构化语言、决策书、决策表、数学公式或者上述工具的联合使用。接下来我们就介绍一下描述加工处理的结构化语言。
                      人们常用自然语言描述各种问题。自然语言语义丰富、语法灵活,可描述十分广泛而复杂的问题,表达人们丰富的感情和智慧。但自然语言没有严格的规范,理解上容易产生歧义。在信息处理中人们广泛使用的计算机语言,是一种形式化语言,各种词汇均有严格定义,语法也很严格、规范,但使用的词汇被限制在很小范围内,叙述方式繁琐,难以清晰、简洁地描述复杂问题。结构化语言的特点介于两者之间,没有严格的语法规定,使用的词汇也比形式化的计算机语言广泛,但使用的语句类型很少,结构规范,表达的内容清晰、准确、易理解,不易产生歧义。适于表达数据加工的处理功能和处理过程。
                      结构化语言使用的语句类型只有以下三种。
                      .祈使语句。
                      .条件语句。
                      .循环语句。
                      上述语句类型可以嵌套,句中可使用逻辑关系式与数学公式。结构化语言使用的词汇有。
                      .祈使语句中的动词。
                      .数据字典中定义的和系统分析其他正式文件中定义的词汇,主要是名词,也可有部分名词性短语。
                      .表达逻辑关系的词汇。
                      使用结构化语言的原则是:
                      .语句意义明确,内容具体,文字简炼。不用抽象、笼统、含糊的词,如“做”、“处理”、“信息”等。所有词汇必须在系统分析文件中有确切定义,所有语言必须具有可读性,使人易于理解。
                      .祈使语句中必须有一个动词和一个宾语,分别表示动作的具体内容和动作的对象。尽量不使用形容词和副词。
                      .表达逻辑关系时,只使用“与”、“或”两种运算用词和“等于”、“大于”、“小于”、“大于或等于”和“小于或等于”5种关系词。
                      .语句结构清晰,开始、结束之处明确,嵌套时层次分明。
                      下面讨论结构化语言三种句型的特点:
                      .祈使语句。祈使语句说明要做什么事,如前所述,一般有一个动词和一个宾语,如:
                      获取收发数据
                      计算补充订货量
                      也有这种结构:
                      将在库数加收入数
                      将在库数减发出数
                      .条件语句。条件语句说明在满足一定条件时做什么事。其一般形式为:
                      
                      例如:
                      
                      条件语句中可以嵌套其他语句。如上述结构中执行A或执行B可以是一组祈使语句,也可以是一个循环语句或是另一个条件语句。
                      .循环语句。循环语句说明在满足某种条件下,继续执行某项处理功能。或者继续执行某项功能直到某个条件满足为止。此语句由两部分组成,第一部分为循环条件,第二部分为重复执行的语句。第二部分的语句,可以是一个或一组祈使语句,也可以是条件语句或循环语句形成的嵌套结构,如:
                      
   题号导航      2024年上半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第28题    在手机中做本题