软件工程——结构化设计

一、结构化软件设计的任务

在结构化设计方法中,概要设计阶段将软件需求转化为数据结构和软件的系统结构。概要设计阶段要完成体系结构设计、数据设计及接口设计。详细设计阶段要完成过程设计。

二、结构化设计与结构化分析的关系 

结构化设计方法的实施要点:

        (1) 研究、分析和审查数据流图。

        (2) 根据数据流图决定问题的类型:变换型和事务型。针对两种不同的类型分别进行分析处理。

        (3) 由数据流图推导出系统的初始结构图。

        (4) 利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。 

        (5) 根据分析模型中的实体关系图和数据字典进行数据设计,包括数据库设计或数据文件的设

      (6) 在上面设计的基础上,并依据分析模型中的加工规格说明、状态转换图进行过程设计

        (7) 制定测试计划 

三、模块结构表示——结构图

结构图(structure chart,SC)是精确表达模块结构的图形表示工具

(1) 模块的调用关系和接口:在结构图中,两个模块之间用单向箭头连接。箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。但其中隐含了一层意思,就是被调用模块执行完成之后,控制由返回到调用模块。

(2) 模块间的信息传递:当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行。

 (3)两个辅助模块(条件调用和反复调用)

        当模块A有条件地调用另一个模块B时,在模块A的箭头尾部标以一个菱形符 ;当一个模块A反复地调用模块C和模块D时,在调用箭头尾部则标以一个弧形符

 (4)结构图的形态特征

模块间的连线:模块之间的调用箭头也可用没有箭头方向的直线表示,在用直线表示时,用模块所处的位置表示它们之间的调用关系,位于上方的模块调用位于下方的模块。

结构图的深度:在多层次的结构图中,模块结构的层次数称为结构图的深度。

结构图的宽度:结构图中同一层模块的最大模块数称为结构图的宽度。

模块的扇入扇出:扇出表示一个模块直接调用(或控制)的下属模块的数目。扇入则定义为调用(或控制)一个给定模块的调用模块的数目。多扇出意味着需要控制和协调许多下属模块。而多扇入的模块通常时公用模块。

四、体系结构设计

4.1基于数据流方法的设计过程

4.2 典型的数据流类型和系统结构

        典型的数据流类型有变换型数据流和事务型数据流,数据流的类型不同,得到的系统结构也不同。 通常,一个系统中的所有数据流都可以认为是变换流,但是,当遇到有明显事务特性的数据流时,建议采用事务型映射方法进行设计。

4.2.1变换型数据流

变换型数据处理问题的工作过程大致分为3步,即取得数据、变换数据和给出数据

变换型系统的结构图相应于取得数据、变换数据、给出数据、系统的结构图由输入、中心变换和输出3部分组成

 4.2.2事务型数据流

通常接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。 完成选择分派任务的部分称为事务处理中心,或分派部件。

4.3映射方法

4.3.1变换型映射方法

变换分析方法:

        (1) 重画数据流图。在需求分析阶段得到的数据流图侧重于描述系统如何加工数据,而重画数据流图的出发点是描述系统中的数据是如何流动的。

        (2)在数据流图上区分系统的逻辑输入、逻辑输出和中心变换部分。  

        (3) 进行一级分解,设计系统模块结构的顶层和第一层。自顶向下设计的关键是找出系统树形结构图的根或顶层模块。 首先设计一个主模块,并用程序的名字为它命名,然后将它画在与中心变换相对应的位置上。 第1层设计:为每个逻辑输入设计一个输入模块,它的功能是为主模块提供数据;为每个逻辑输出设计一个输出模块,它的功能是将主模块提供的数据输出;为中心变换设计一个变换模块,它的功能是将逻辑输入转换成逻辑输出

        (4) 进行二级分解,设计中、下层模块。 这一步工作是自顶向下,逐层细化,为每一个输入模块、输出模块、变换模块设计它们的从属模块。 设计下层模块的顺序是任意的。但一般是先设计输入模块的下层模块。

 4.3.2事务型映射方法

        在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事物。

事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统的结构图。

事务分析方法:

        (1) 识别事务源。利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。

        (2) 规定适当的事务型结构。在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。

        (3) 识别各种事务和它们定义的操作。

        (4) 注意利用公用模块。

        (5) 建立事务处理模块。对每一事务,或对联系密切的一组事务,建立一个事务处理模块。

        (6) 对事务处理模块规定它们全部的下层操作模块。

        (7) 对操作模块规定它们的全部细节模块。    

大型的软件系统通常是变换型结构和事务型结构的混合结构,所以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构设计。

五、接口设计

接口设计的依据是数据流图中的自动化系统边界。

接口设计主要包括3个方面:模块或软件构件间的接口设计;软件与其他软硬件系统之间的接口设计;软件与人(用户)之间的交互设计。人机交互(用户)界面是人机交互的主要方式。

5.1用户界面应具备的特性  

可使用性:包括使用简单、界面一致、拥有HELP帮助功能、快速的系统响应和低的系统成本、具有容错能力等。

灵活性:考虑到用户的特点、能力和知识水平,应当使用户接口满足不同用户的要求。

可靠性:用户界面的可靠性是指无故障使用的间隔时间。用户界面应能保证用户正确、可靠地使用系统,保证有关程序和数据的安全性。

人机交互的设计有若干准则

 (1) 一致性。采用一致的术语、一致的步骤和一致的活动。

(2) 操作步骤少。使击键或点击鼠标的次数减到最少,甚至要减少做某些事所需的下拉菜单的距离。

(3) 不要“哑播放”。

(4) 提供Undo功能。

(5) 减少人脑的记忆负担。不应该要求人从一个窗口中记住某些信息,然后在另一个窗口中使用。

(6) 提高学习效率。为高级特性提供联机帮助,以便用户在需要时容易找到。

六、数据设计

文件设计   以下几种情况适合于选择文件存储。

(1) 数据量较大的非结构化数据,如多媒体信息。

(2) 数据量大,信息松散,如历史记录、档案文件等。

(3) 非关系层次化数据,如系统配置文件。

(4) 对数据的存取速度要求极高的情况。

(5) 临时存放的数据。

七、数据库设计

根据数据库的组织,可以将数据库分为 状数据库、层次数据库、关系数据库、面向对象数据库、文档数据库、多维数据库等。 关系数据库最成熟,应用也最广泛,一般情况下,大多数设计者都会选择关系数据库。 在结构化设计方法中,很容易将结构化分析阶段建立的实体—关系模型映射到关系数据库中。

八、过程设计

概要设计的任务完成后,就进入详细设计阶段,也就是过程设计阶段。 在这个阶段,要决定各个模块的实现算法,并使用过程描述工具精确地描述这些算法。

 表达过程规格说明的工具称为过程描述工具,可以将过程描述工具分为以下3类。

(1) 图形工具:把过程的细节用图形方式描述出来,如程序流程图、N-S图、PAD图、决策树等。

(2) 表格工具:用一张表来表达过程的细节。这张表列出了各种可能的操作及其相应的条件,即描述了输入、处理和输出信息,如决策表。

(3) 语言工具:用某种类高级语言(称为伪代码)来描述过程的细节,如很多数据结构教材中使用类Pascal、类C语言来描述算法。

8.1 结构化程序设计

概念:如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。

结构程序设计的主要原则

(1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。

(2)选用的控制结构只准许有一个入口和一个出口。

(3)程序语句组成容易识别的块(Block),每块只有一个入口和一个出口。

(4)复杂结构应该用基本控制结构进行组合嵌套来实现。

(5)语言中没有的控制结构,可用一段等价的程序段模拟, 但要求该程序段在整个系统中应前后一致

(6) 严格控制GOTO语句,仅在下列情形才可使用: 用非结构化的程序设计语言去实现结构化的构造。

(7) 在程序设计过程中,尽量采用自顶向下(Top-Down)、逐步细化(Stepwise  Refinement)的原则,由粗到细,一步步展开。

8.2程序流程图

程序流程图也称为程序框图,是软件开发者最熟悉的算法表达工具

8.2.1程序流程图的基本控制结构

(1) 顺序型:几个连续的加工步骤依次排列构成。

(2) 选择型:由某个逻辑判断式的取值决定选择两个加工中的一个。

(3) 先判定(while)型循环:在循环控制条件成立时,重复执行特定的加工。

(4) 后判定(until)型循环:重复执行某些特定的加工,直至控制条件成立。

(5) 多情况(case)型选择:列举多种加工情况,根据控制变量的取值,选择执行其一。

 8.2.2程序流程图的标准符 :

循环的界限设有一对特殊的符 。循环开始符是削去上面两个直角的矩形,循环结束符是削去下面两个直角的矩形

 8.3 N-S图(盒图)

Nassi和Shneiderman 提出了一种符合结构化程序设计原则的图形描述工具,叫做盒图 (box-diagram),也叫做N-S图

在N-S图中,为了表示5种基本控制结构,规定了5种图形构件。

8.3.1 N-S图的基本控制结构

 8.3.2N-S图的扩展表示

 8.4PAD图

PAD(problem analysis diagram)是日本日立公司提出,由程序流程图演化来的,用结构化程序设计思想表现程序逻辑结构的图形工具

8.4.1PAD图的基本控制结构

8.4.2 PAD的扩充控制结构

8.4.3 PAD的优点

        使用PAD符 所设计出来的程序必然是结构化程序。 PAD图描绘程序结构清晰,图中竖线的总条数就是程序的层次数。 用PAD图表现程序逻辑易读、易懂、易记。 容易将PAD图自动转换为高级语言源程序。 PAD图既可以表示程序逻辑,也可用于描绘数据结构。 PAD图的符 支持自顶向下、逐步求精方法的使用。

8.5伪代码

伪代码是一种介于自然语言和形式化语言之间的半形式化语言,是一种用于描述功能模块的算法设计和加工细节的语言,也称为程序设计语言(Program Design Language,PDL)

伪代码的基本控制结构

        简单陈述句结构:避免复合语句。

        判定结构:IF_THEN_ELSE或CASE_OF结构。

        重复结构:WHILE_DO或REPEAT_UNTIL结构

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月6日
下一篇 2022年10月6日

相关推荐