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

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

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

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

(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结构

软件工程——结构化设计相关推荐

  1. [软件人生]大学未毕业的朋友过来看看

    对话内容: -------------------------------------------------- 消息对象:青蛙(青蛙) ------------------------------- ...

  2. 结构化与面向对象化之应用比较

    本篇博客意在对比软件工程领域的结构化方法与面向对象化方法,在开始对比之前我们要先知道这些方法出现的背景,并对这两种方法有一个大致的了解.下面先让我们来一起探究一下它们出现的背景. 1. 背景 对于软件 ...

  3. 软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2

    本系列文章为笔记,内容根据北京大学<软件工程>MOOC 初始化模块结构图精化的启发式规则 常见的启发式规则 什么叫做"启发式" 根据设计准则,从长期的软件开发实践中,总 ...

  4. 【软件工程】 文档 - 银行业务管理 - 结构化设计

    软件工程 银行业务管理和现金结算系统 --- 结构化设计文档 ***原创所有,本文禁止一切形式的转载. 一.   体系结构设计 1)    软件结构化设计概述 该阶段主要在于定义银行业务管理系统的主要 ...

  5. 【软件工程】软件工程系统设计——结构化设计

    halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言.指点 软件工程系统设计--结构 ...

  6. 软件设计师备考笔记(十)软件工程(开发模型、结构化设计、软件测试)

    目录 软件开发模型 信息系统开发方法 需求分类 结构化设计 软件测试 软件开发模型 瀑布模型 历史 盛极一时,但被淘汰:有重大缺陷,会导致项目失败(延期.超支.做不下去) 注意事项:每个阶段(绿框)末 ...

  7. 【软件工程】第五章 结构化设计

    5.1 结构化设计的概念 5.1.1 设计的定义 何谓设计: 一种软件开发活动,定义实现需求规约所需的软件结构 目标: 依据需求规约在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构), ...

  8. 软件工程(四)——结构化设计之总体设计

    一,什么是总体设计 把系统的功能需求分配到一个特定的软件系统结构中. 1.模块结构图 2.层次图 3.HIPO图:H就是层次图+IPO是输入/处理/输出图 模块图例子: 层次图例子: HIPO图例子 ...

  9. 软件工程之结构化设计篇

    1 软件设计的基本概念 完成了需求分析,回答了软件系统能"做什么"的问题后,软件的生命周期就进入了设计阶段.软件设计阶段,研发人员将集中精力研究如何把需求规格说明书里归纳的分析模型 ...

最新文章

  1. jQuery 实现图片的特效1[原]
  2. 计算机发现概述教案,计算机网络概述教案
  3. spring boot源码分析之SpringApplication
  4. 翻翻git之---溜的飞起的载入效果AVLoadingIndicatorView
  5. 《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(1) -- 性能...
  6. Android 自定义环形圆形显示统计数据z
  7. Python直接调用C库的printf()函数打印一条消息
  8. Cocos2dx 之 ButtonSprite
  9. Go没有枚举类型(enums),用const常量的iota替代
  10. 比较两个sheet页中的内容,自动切换
  11. awk双文件互相匹配查找
  12. 安全体系(三)——SHA1算法详解
  13. 疯狂java讲义第七章课后习题答案
  14. 整人代码好玩到没朋友
  15. 银河麒麟桌面系统V10解决微信无法登录
  16. TFHE同态库的Torus32
  17. 最强内存稳定性测试软件,内存稳定性测试软件TM5
  18. 网站使用手机相机_孩子拿手机是在上课,还是玩游戏、看不良网站?4招查看使用记录...
  19. Visual Studio 修改
  20. 使用markdown写出Leaky ReLU的计算公式

热门文章

  1. 上位机开发——Modbus联合运动控制卡实时通信
  2. OSError: [WinError 1455] 页面文件太小,无法完成操作的问题——格局打开
  3. 一声“小度”唤醒的AI晨曦
  4. UPC 6445 棋盘
  5. nba2kol服务器不稳定,nba2kol常见客户端问题有哪些
  6. 基础知识-线性代数、高数
  7. 变频串联谐振如何正确的做交流耐压试验你知道吗?
  8. 揭发百分百垃圾软件,骗子不得好死!
  9. unify-v2.5谷歌字体替换
  10. 关于五子棋五子连珠判定问题