免费智能真题库 > 历年试卷 > 软件设计师 > 2019年上半年 软件设计师 上午试卷 综合知识
  第16题      
  知识点:   结构化设计方法   结构化设计   结构化设计方法   结构图   软件系统
  关键词:   结构化设计   模块   软件系统        章/节:   软件工程基础知识       

 
结构化设计方法中使用结构图来描述构成软件系统的模块以及这些模块之间的调用关系。结构图的基本成分不包括( )。
 
 
  A.  模块
 
  B.  调用
 
  C.  数据
 
  D.  控制
 
 
 

 
  第69题    2021年上半年  
   33%
下列关于结构化分析方法的数据字典中加工逻辑的叙述中,不正确的是( )。
  第16题    2018年下半年  
   30%
某航空公司拟开发一个机票预订系统, 旅客预订机票时使用信用卡付款。付款通过信用卡公司的信用卡管理系统提供的接口实现。若采用..
  第34题    2017年上半年  
   46%
模块A、B和C有相同的程序块,块内的语句之间没有任何联系,现把该程序块取出来,形成新的模块D,则模块D的内聚类型为(33)内聚。以..
   知识点讲解    
   · 结构化设计方法    · 结构化设计    · 结构化设计方法    · 结构图    · 软件系统
 
       结构化设计方法
               结构化设计(Structured Design,SD)方法是一种面向数据流的设计方法,它可以与SA方法衔接。结构化设计方法的基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
               结构化设计方法中用结构图(Structure Chart)来描述软件系统的体系结构,指出一个软件系统由哪些模块组成,以及模块之间的调用关系。
               结构化设计的步骤
               结构化设计大致可以分为两步进行,第一步是建立一个满足软件需求规约的初始结构图,第二步是对结构图进行改进。
                      建立初始结构图
                      结构化方法本质上是一种功能分解方法。在结构化设计时,可以将整个软件看作一个大的功能模块(结构图中的模块),通过功能分解将其分解成若干个较小的功能模块,每个较小的功能模块还可以进一步分解,直到得到一组不必再分解的模块(结构图中的底层模块)。当一个功能模块分解成若干个子功能模块时,该功能模块实际上就是根据业务流程调用相应的子功能模块,并根据其功能要求对子功能的结果进行处理,最终实现其功能要求。
                      功能模块的分解应满足自顶向下、逐步求精、信息隐蔽、高内聚低耦合等设计准则,模块的大小应适中。通常,一个模块的大小以so~ioo行程序代码为宜,即一个模块的程序代码可以写在1-2页纸上。
                      对结构图的改进
                      初始结构图往往存在一些不合理的设计(包括不合理的模块分解),因此,可根据设计准则对其进行改进。
                      书写设计文档
                      在概要设计完成之后应书写设计规格说明,特别要为每个模块书写模块的功能、接口、约束和限制等,必要时可建立模块开发卷宗。
                      设计评审
                      对设计结果及文档进行评审。
               数据流图到软件体系结构的映射
               结构化设计是将结构化分析的结果(数据流图)映射成软件的体系结构(结构图)。根据信息流的特点,可将数据流图分为变换型数据流图和事务型数据流图,其对应的映射分别称为变换分析和事务分析。
                      信息流的类型
                      在需求分析阶段,用SA方法产生了数据流图。面向数据流的设计能方便地将DFD转换成程序结构图。DFD中从系统的输入数据流到系统的输出数据流的一连串连续变换形成了一条信息流。DFD的信息流大体上可以分为两种类型:变换流和事务流。
                      (1)变换流。信息沿着输入通路进入系统,同时将信息的外部形式转换成内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统。具有这种特性的信息流称为变换流。变换流型的DFD可以明显地分成输入、变换(主加工)和输出三大部分。
                      (2)事务流。信息沿着输入通路到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务流有明显的事务中心,各活动流以事务中心为起点呈辐射状流出。
                      变换分析
                      变换分析是从变换流型的DFD导出程序结构图。
                      1)确定输入流和输出流,分离出变换中心
                      把DFD中系统输入端的数据流称为物理输入,系统输出端的数据流称为物理输出。物理输入通常要经过编辑、格式转换、合法性检查、预处理等辅助性的加工才能为主加工的真正输入(称为逻辑输入)。从物理输入端开始,一步步向系统的中间移动,可找到离物理输入端最远,但仍可被看作系统输入的那个数据流,这个数据流就是逻辑输入。同样,由主加工产生的输出(称为逻辑输出)通常也要经过编辑、格式转换、组成物理块、缓冲处理等辅助加工才能变成物理输出。从物理输出端开始,一步步向系统的中间移动,可找到离物理输出端最远,但仍可被看作系统输出的那个数据流,这个数据流就是逻辑输出。
                      DFD中从物理输入到逻辑输入的部分构成系统的输入流,从逻辑输出到物理输出的部分构成系统的输出流,位于输入流和输出流之间的部分就是变换中心。
                      2)第一级分解
                      第一级分解主要是设计模块结构的顶层和第一层。一个变换流型的DFD可以映射成如下图所示的程序结构图。图中顶层模块的功能就是整个系统的功能。输入控制模块用来接收所有的输入数据,变换控制模块用来实现输入到输出的变换,输出控制模块用来产生所有的输出数据。
                      
                      变换分析的第一级分解
                      3)第二级分解
                      第二级分解主要是设计中、下层模块。
                      (1)输入控制模块的分解。从变换中心的边界开始,沿着每条输入通路,把输入通路上的每个加工映射成输入控制模块的一个低层模块。
                      (2)输出控制模块的分解。从变换中心的边界开始,沿着每条输出通路,把输出通路上的每个加工映射成输出控制模块的一个低层模块。
                      (3)变换控制模块的分解。变换控制模块通常没有通用的分解方法,应根据DFD中变换部分的实际情况进行设计。
                      4)事务分析
                      事务分析是从事务流型DFD导出程序结构图。
                      (1)确定事务中心和每条活动流的流特性。下图给出了事务流型DFD的一般形式。其中,事务中心(图中的T)位于数条活动流的起点,这些活动流从该点呈辐射状流出。每条活动流也是一条信息流,它可以是变换流,也可以是另一条事务流。一个事务流型的DFD由输入流、事务中心和若干条活动流组成。
                      
                      事务流图
                      (2)将事务流型DFD映射成高层的程序结构。事务流型DFD的高层结构如下图所示。顶层模块的功能就是整个系统的功能。接收模块用来接收输入数据,它对应于输入流。发送模块是一个调度模块,控制下层的所有活动模块。每个活动流模块对应于一条活动流,它也是该活动流映射成的程序结构图中的顶层模块。
                      
                      事务流型DFD的高层程序结构
                      (3)进一步分解。接收模块的分解类同于变换分析中输入控制模块的分解。每个活动流模块根据其流特性(变换流或事务流)进一步采用变换分析或事务分析进行分解。
                      5)SD方法的设计步骤
                      (1)复查并精化数据流图。
                      (2)确定DFD的信息流类型(变换流或事务流)。
                      (3)根据流类型分别实施变换分析或事务分析。
                      (4)根据系统设计的原则对程序结构图进行优化。
 
       结构化设计
        结构化设计包括体系结构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。
        在结构化方法中,模块化是一个很重要的概念,它是指将一个待开发的软件分解成为若干个小的简单部分——模块。每个模块可以独立地开发、测试。这是一种复杂问题的“分而治之”原则,其目的是使程序的结构清晰、易于测试与修改。
        具体来说,模块是指执行某一特定任务的数据结构和程序代码。通常将模块的接口和功能定义为其外部特性,将模块的局部数据和实现该模块的程序代码称为内部特性。在模块设计时,最重要的原则就是实现信息隐蔽和模块独立。模块通常具有连续性,也就意味着作用于系统的小变动将导致行为上的小变化,同时规模说明的小变动也将影响到一小部分模块。
               抽象化
               对软件进行模块设计的时候,可以有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言描述问题的解法。而在较低的抽象层次上,则宜采用过程化的方法。抽象化包括对过程的抽象、对数据的抽象和对控制的抽象。
               (1)过程的抽象。在软件工程过程中,从系统定义到实现,每进展一步都可以看做是对软件解决方案的抽象化过程的一次细化。在从概要设计到详细设计的过程中,抽象化的层次逐渐降低,当产生源程序时到达最低的抽象层次。
               (2)数据抽象。数据抽象与过程抽象一样,允许设计人员在不同层次上描述数据对象的细节。
               (3)控制抽象。控制抽象可以包含一个程序控制机制,而无须规定其内部细节。
               自顶向下,逐步细化
               将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个体系结构。最初的说明只是概念性地描述了系统的功能或信息,并未提供有关功能的内部实现机制或有关信息的内部结构的任何信息。设计人员对初始说明仔细推敲,进行功能细化或信息细化,给出实现的细节,划分出若干成分。然后再对这些成分施行同样的细化工作。随着细化工作的逐步展开,设计人员就能得到越来越多的细节。
               信息隐蔽
               信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,并且尽可能少地暴露其内部的处理过程。通常会将困难的决策、可能修改的决策、数据结构的内部连接,以及对它们所做的操作细节、内部特征码、与计算机硬件有关的细节等隐蔽起来。
               通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性,它也是现代软件设计的一个关键性原则。
               模块独立
               模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系最简单。保持模块的高度独立性也是在设计时的一个很重要的原则。通常用耦合(模块之间联系的紧密程度)和内聚(模块内部各元素之间联系的紧密程度)两个标准衡量,目标是高内聚、低藕合。
               模块的内聚类型通常可以分为7种,根据内聚度从高到低的排序如下表所示。
               
               模块的内聚类型
               与此相对应,模块的耦合类型通常也分为7种,根据耦合度从低到高排序如下表所示。
               
               模块的耦合类型
               除了满足以上两大基本原则之外,通常在模块分解时还需要注意以下事项。
               (1)保持模块的大小适中,尽可能减少调用的深度。
               (2)直接调用该模块的次数应该尽量多,但调用其他模块的次数则不宜过多。
               (3)保证模块是单入口、单出口的。
               (4)模块的作用域应该在模块之内,功能应该是可预测的。
 
       结构化设计方法
        结构化设计是将结构化分析得到的数据流图映射成软件体系结构的一种设计方法,强调模块化、自顶向下逐步求精、信息隐蔽、高内聚、低耦合等设计原则。
        在结构化方法中,软件设计分为概要设计和详细设计两个步骤。概要设计是对软件系统的总体设计,采用结构化设计方法,其任务是将系统分解为模块,确定每个模块的功能、接口(模块间传递的数据)及其调用关系,并用模块及对模块的调用来构建系统体系结构。详细设计是对模块实现细节的设计,采用结构化程序设计方法。
               结构图
               结构化设计方法中使用结构图来描述系统的体系结构,指出一个系统由哪些模块组成,以及模块之间的调用关系。结构图的基本成分有:模块、调用和数据。
                      模块
                      在结构化设计中,模块指具有一定功能并可以用模块名调用的一组程序语句,如函数、子程序等,它们是组成程序的基本单元。
                      一个模块具有外部特征和内部特征。模块的外部特征包括:模块的接口(模块名、输入/输出参数、返回值等)和模块功能。模块的内部特征包括:模块的内部数据和完成其功能的程序代码。
                      在结构图中,模块用矩形表示,并用名字标识该模块,名字应体现该模块的功能。
                      调用
                      结构图中模块之间的调用关系用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者。
                      数据
                      模块间还经常用带注释的短箭头表示模块调用过程中来回传递的信息。箭头尾部带空心圆的表示传递的是数据,带实心圆的表示传递的是控制信息,如下图所示。
                      
                      模块间的数据传递
                      可以在结构图上添加一些辅助符号进一步描述模块间的调用关系。如果一个模块是否调用一个从属模块决定于调用模块内部的判断条件,则该调用模块间的判断调用采用菱形符号表示;如果一个模块通过其内部循环的功能来循环调用一个或多个从属模块,则该调用称为循环调用,用弧形箭头表示。判断调用和循环调用的表示方法如下图所示。
                      
                      模块调用示例
                      结构图的形态特征
                      .深度。指结构图控制的层次,也就是模块的层数。
                      .宽度。指一层中最大的模块个数。
                      .扇出。指一个模块的直接下属模块的个数。
                      .扇入。指一个模块的直接上属模块的个数。
               数据流图到软件体系结构的映射
               在需求分析阶段,用结构化分析方法产生了数据流图。面向数据流的设计能方便地将DFD转换成软件结构图。
               DFD中从系统的输入数据流到系统的输出数据流的一连串连续变换形成了一条信息流。DFD的信息流大体上可以分为两种类型:一种是变换流,另一种是事务流;其对应的映射分别称为变化分析和事务分析。
               (1)变换流。信息沿着输入通路进入系统,同时将信息的外部形式转换成内部表示,然后通过变换中心(也称主加工)处理,再沿着输出通路转换成外部形式离开系统,具有这种特性的信息流称为变换流。变换流型的DFD可明显地分为输入、变换(主加工)和输出三大部分。
               (2)事务流。信息沿着输入通路到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务流有明显的事务中心,各活动流以事务中心为起点呈辐射状流出。
               从变换流型的DFD导出结构图也称为变换分析。
               (1)确定输入流和输出流,分离出变换中心。把DFD中系统输入端的数据流称为物理输入,系统输出端的数据流称为物理输出。物理输入通常要经过编辑、格式转换、合法性检查、预处理等辅助性的加工才能为主加工的真正输入(称为逻辑输入)。从物理输入端开始,一步步向系统的中间移动,可找到离物理输入端最远,但仍可被看作系统输入的那个数据流,这个数据流就是逻辑输入。同样,由主加工产生的输出(称为逻辑输出)通常也要经过编辑、格式转换、组成物理块、缓冲处理等辅助加工才能变成物理输出。从物理输出端开始,一步步向系统的中间移动,可找到离物理输出端最远,但仍可被看作系统输出的那个数据流,这个数据流就是逻辑输出。
               DFD中从物理输入到逻辑输入的部分构成系统的输入流,从逻辑输出到物理输出的部分构成系统的输出流,位于输入流和输出流之间的部分就是变换中心。
               (2)第一级分解。第一级分解主要是设计模块结构的顶层和第一层。一个变换流型的DFD可以映射成如下图所示的程序结构图。图中顶层模块的功能就是整个系统的功能。输入控制模块用来接收所有的输入数据,变换控制模块用来实现输入到输出的变换,输出控制模块用来产生所有的输出数据。
               
               变换分析的第一级分解
               (3)第二级分解。第二级分解主要是设计中、下层模块。
               ①输入控制模块的分解。从变换中心的边界开始,沿着每条输入通路,把输入通路上的每个加工映射成输入控制模块的一个低层模块。
               ②输出控制模块的分解。从变换中心的边界开始,沿着每条输出通路,把输出通路上的每个加工映射成输出控制模块的一个低层模块。
               ③变换控制模块的分解。变换控制模块通常没有通用的分解方法,应根据DFD中变换部分的实际情况进行设计。
               (4)事务分析。事务分析是从事务流型DFD导出程序结构图。
               ①确定事务中心和每条活动流的流特性。下图给出了事务流型DFD的一般形式。其中,事务中心(图中的T)位于数条活动流的起点,这些活动流从该点呈辐射状流出。每条活动流也是一条信息流,它可以是变换流,也可以是另一条事务流。一个事务流型的DFD由输入流、事务中心和若干条活动流组成。
               
               事务流
               ②将事务流型DFD映射成高层的程序结构。事务流型DFD的高层结构如下图所示。顶层模块的功能就是整个系统的功能。接收模块用来接收输入数据,它对应于输入流。发送模块是一个调度模块,控制下层的所有活动模块。每个活动流模块对应于一条活动流,它也是该活动流映射成的程序结构图中的顶层模块。
               
               事务流型DFD的高层程序结构
               ③进一步分解。接收模块的分解类同于变换分析中输入控制模块的分解。每个活动流模块根据其流特性(变换流或事务流)进一步采用变换分析或事务分析进行分解。
               数据流图映射到结构图的步骤
               从数据流图映射到结构图的步骤如下:
               (1)复审和精化数据流图。首先应复审DFD的顶层图,确保系统的输入、输出数据流符合系统规格说明的要求。然后复审分层DFD,以确保它符合软件的功能需求,必要时对DFD进行净化。
               (2)确定数据流图的类型。如果是变换型,确定变换中心和逻辑输入、逻辑输出的界限,映射为变换结构的顶层和第一层;如果是事务型,确定事务中心和加工路径,映射为事务结构的顶层和第一层。
               (3)分解上层模块,设计中下层模块结构。
               (4)根据优化准则对软件结构求精。
               (5)描述模块功能、接口及全局数据结构。
               (6)复查,如果有错,转向第(2)步修改完善,否则进入详细设计阶段。
 
       结构图
        结构化设计方法中使用结构图来描述系统的体系结构,指出一个系统由哪些模块组成,以及模块之间的调用关系。结构图的基本成分有:模块、调用和数据。
               模块
               在结构化设计中,模块指具有一定功能并可以用模块名调用的一组程序语句,如函数、子程序等,它们是组成程序的基本单元。
               一个模块具有外部特征和内部特征。模块的外部特征包括:模块的接口(模块名、输入/输出参数、返回值等)和模块功能。模块的内部特征包括:模块的内部数据和完成其功能的程序代码。
               在结构图中,模块用矩形表示,并用名字标识该模块,名字应体现该模块的功能。
               调用
               结构图中模块之间的调用关系用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者。
               数据
               模块间还经常用带注释的短箭头表示模块调用过程中来回传递的信息。箭头尾部带空心圆的表示传递的是数据,带实心圆的表示传递的是控制信息,如下图所示。
               
               模块间的数据传递
               可以在结构图上添加一些辅助符号进一步描述模块间的调用关系。如果一个模块是否调用一个从属模块决定于调用模块内部的判断条件,则该调用模块间的判断调用采用菱形符号表示;如果一个模块通过其内部循环的功能来循环调用一个或多个从属模块,则该调用称为循环调用,用弧形箭头表示。判断调用和循环调用的表示方法如下图所示。
               
               模块调用示例
               结构图的形态特征
               .深度。指结构图控制的层次,也就是模块的层数。
               .宽度。指一层中最大的模块个数。
               .扇出。指一个模块的直接下属模块的个数。
               .扇入。指一个模块的直接上属模块的个数。
 
       软件系统
        网络系统软件包括网络操作系统和网络协议等。网络操作系统是指能够控制和管理网络资源的软件,是由多个系统软件组成,在基本系统上有多种配置和选项可供选择,使得用户可根据不同的需要和设备构成最佳组合的互联网络操作系统。网络协议是保证网络中两台设备之间正确传送数据的约定。
   题号导航      2019年上半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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题    在手机中做本题