结构化详细设计
结构化系统设计的主要任务和内容
![结构化系统设计的主要任务和内容](https://img.taocdn.com/s3/m/b307f87132687e21af45b307e87101f69e31fb2f.png)
结构化系统设计的主要任务和内容
一、结构化系统设计的主要任务
结构化系统设计的主要任务是将系统的逻辑功能划分为更易于管理的子系统和模块,然后以有组织的结构形式描述它们之间的交互关系,从而实现可复用,可重用的系统设计。
二、结构化系统设计的内容
1、系统建模:对系统的所有功能进行建模,建立整个系统的结构框架和模块划分。
2、功能划分:根据系统需求,划分各个子系统/模块功能。
3、接口定义:确定模块之间的接口,明确模块之间传递的数据类型和接口的参数类型。
4、数据分析:分析模块之间的数据流,并确定数据的格式和数量。
5、抽象模型设计:设计各个模块的抽象模型,确定模型之间的关系。
6、模块功能详细设计:根据各模块之间的关系,详细设计模块之间的各种功能,包括输入、处理、输出等。
7、规划模块的实现:根据模块功能的详细设计,规划模块的实现,包括硬件要求、数据结构、算法、程序框架等。
系统的结构化分析与设计方法
![系统的结构化分析与设计方法](https://img.taocdn.com/s3/m/707e7945ce84b9d528ea81c758f5f61fb7362824.png)
系统的结构化分析与设计⽅法1、结构化⽅法的主要思想:(1)软件是有组织、有结构的逻辑实体,其结构为⾃顶向下的形式(2)软件由程序和数据组成,其结构呈现三层组织形式,即系统、⼦系统、功能模块/数据体(3)软件结构中的各部分既独⽴⼜关联2、结构化⽅法的特点:(1)抽象性:抽象描述系统的本质内容(2)结构化、模块化、层次化:分⽽治之,由分到合(3)分析与设计线索:⾯向过程(处理) – 过程驱动⾯向数据 – 数据驱动3、总体规划:为所规划的软件系统作出⼀个战略的、宏观的、全局的技术⽅案构建宏观结构模型,为后期的分析与设计奠定基础三个⼯作内容:(1)需求调查(2)结构模型建⽴(3)总体规划⽂档撰写4、过程与数据间的关系建⽴ – U/C矩阵(1)过程(处理)对数据的操作可以分为2类: Use – 使⽤,包括Select、Insert、Delete、Update Create – 建⽴,即创建数据(2)U/C 矩阵⼆维矩阵表横向业务 – 过程;纵向 – 主题数据库(3)U/C矩阵的作⽤为⼦系统划分提供帮助5、⼦系统规划:(1)建⽴U/C矩阵(2)整理成“基本U/C矩阵” 在原始的U/C矩阵基础上,反复调换列,使得尽可能多的“C”标记处于矩阵的对⾓线附近(3)⼦系统划分按照“职能域”对U/C矩阵进⾏划分(4)⼦系统定义含业务过程和主题数据库6、⽤传统结构化和oo的观点看待系统的⽐较:1)传统⽅法:系统是处理的集合,处理与数据实体的交互,处理接受输⼊并产⽣输出2)OO⽅法:系统是交互对象的集合,对象与⼈或其他对象交互,对象发送和响应信息7、结构化分析:分析基础:总体规划说明书;分析每个业务过程的详细流程;分析每个主题数据库的数据结构;建⽴分析模型:系统业务流程图、详细的数据流图、数据字典;结构化系统分析结果:系统分析说明书8、系统流程图:对不同计算机程序、⽂件、数据库和相关⼿⼯过程设计的表达;主要从较⾼的层次描述系统的相对独⽴的⼦系统和程序模块;⽤图形化的⽅式描述了对⼦系统的组织;可以表明系统业务类:Batch(批处理) Real time(实时处理)9、10、基于数据流的系统分析 -- 数据流图数据流图:⽤处理、外部实体、数据流以及数据存储来表⽰系统需求的图表DFD的特点:图形元素少且符号简单易懂;较充分表达系统的主要需求:输⼊、输出、处理和数据存储;最终⽤户、管理⼈员和系统开发⼈员只需稍加培训即可读懂DFD图,⽅便交流。
结构化设计
![结构化设计](https://img.taocdn.com/s3/m/34b97210551810a6f42486b4.png)
⑷.按照设计改进原则细化和改进初始的SC图,获得最 终SC图。
⑸.给出模块接口描述。例如,进出模块的参数表,外
界输入输出以及从全程数据(区)得到的信息项等, 此外还要注明它的调用模块和被调用模块。
⑹.复审,如有错误,转⑵修改完善,否则进入详细 设计。
2 SD方法设计步骤
“事务”
区分事务中心和数据接 受通路
(2) 盒图(N—S图)
盒图是为了满足结构化需要,特别 是取消了程序流程图随意跳转规则后而 提出的。
软件工程
5种控制结构N—S图的符号
(2) 盒图(N—S图)
与程序流程图相比较,盒图具有如下明显的优点: l 在盒图中不能任意转移控制。 l 特定控制逻辑的作用范围明确,可以从盒图上一目了然。 l 很容易确定局部和全程数据的作用域。 l 很容易表现嵌套关系,也容易表示模块的层次结构。 l 所有的程序结构均用方框表示。因此程序的结构非常清晰。 l 程序只有一个入口、一个出口,完全能够满足单人口单出口的结 构化程序设计要求。 l 盒图形象直观,具有良好的可视性。循环的范围、条件语句的控 制范围等都是一目了然的。 l 盒图简单,易学易用。 主要缺点是: 当程序内嵌套的层数增多时,内层方框会越来越小,一方 面会增加画图难度,另一方面会影响图形的清晰度。
PDL的缺点:不如图形描述形象直观,很容易使人陷入 程序的具体细节中去,因此人们常常将PDL描述与具体的 图形描述结合起来使用。
软件工程
(5) 判定表
在进行软件设计时如遇到复杂的条件选择,有 必要使用一种描述机制来清晰地表示复杂的条件 组合与动作间的对应关系,判定表就是解决这一 问题的有力工具。
一张判定表由4部分组成。左上部列出所有条 件;左下部列出所有可能做的工作;右上部每一 列表示出各种条件的一种可能组合,填入“T” 表示条件成立,填入“F”表示条件不成立,空 白表示条件成立与否不影响。所以所有列表示条 件组合全部可能情况;右下部的每一列是和每一 种条件组合相对应的工作,填入“×”表示在该 列上部规定的条件下做该行左边列出的那项工作, 空白表示不做该项工作。
结构化详细设计ppt课件
![结构化详细设计ppt课件](https://img.taocdn.com/s3/m/5b5e100aa32d7375a41780b9.png)
结构化详细设计的结构和特点 结构化详细设计工具 人机交互界面设计 数据库设计 编码实现
1
8.1详细设计
详细设计就是在概要设计的基础上决定如何具 体实现各模块的内部细节,直到对系统中的每 个模块给出足够详细的过程描述。
在编码实现阶段就可以完全按照详细设计的细 节过程来映射到代码,最终实现整个系统。
用先全局后局部、先整体后细节、先抽象后具体的逐步求精 过程开发出的程序有清晰的层次结构,因此容易阅读和理解。
仅使用单入口单出口的控制结构,使得程序的静态结构和它 的动态执行情况比较一致。因此,程序容易阅读和理解,开 发时也比较容易保证程序的正确性,即使出现错误也比较容 易诊断和改正。
控制结构有确定的逻辑模式,编写程序代码只限于使用很少 几种直截了当的方式,因此源程序清晰流畅,易读易懂而且 容易测试。
15
PAD图举例
P1
P2 P3
C P4
P5
P6
until C2
11
盒图符号
A B
a.顺序
FPT BA
FPT A
b.IF-THEN-ELSE 选择
S Do until p
d.do-until 循环
P
=1 =2
=n
A1 A2
An
e.多分支选择
Do while p S
c.do-while 循环
12
PAD图
PAD是问题分析图(Problem Analysis Diagram)的英文缩写,自1973年由日本日 立公司发明。
4
结构化详细设计的结构
三种基本结构
顺序结构 选择结构 循环结构
5
A
简述结构化程序设计方法的基本要点
![简述结构化程序设计方法的基本要点](https://img.taocdn.com/s3/m/94bbad3be97101f69e3143323968011ca200f76b.png)
结构化程序设计方法的基本要点简介结构化程序设计方法是一种用于构建大型程序的系统性方法。
它通过将程序分解为一系列小的、可管理的模块,以及规定了模块之间的交互方式,从而降低程序的复杂性,提高程序的可维护性和可读性。
本文将从以下几个方面详细介绍结构化程序设计方法的基本要点。
1. 模块化模块化是结构化程序设计方法的核心思想之一。
模块化将程序分解为多个功能相对独立的模块,每个模块负责完成一个特定的任务。
模块化有助于提高程序的可读性,可维护性和可重用性。
1.1 模块划分在进行模块划分时,可以按照功能划分原则,将程序划分为几个不同的功能模块,每个模块负责完成一个特定的功能。
也可以按照数据划分原则,将程序划分为几个处理不同数据的模块。
模块应该具有清晰的职责和界限,不同模块之间的功能和数据交互应该通过接口进行。
1.2 接口设计模块之间的接口设计是模块化的关键。
接口应该明确定义模块之间的输入和输出,以及数据的传递方式。
良好的接口设计可以降低模块之间的耦合度,提高代码的可复用性,使得模块可以独立开发和测试。
1.3 函数与过程模块可以通过函数或过程来实现。
函数是一段可重用的代码,用于执行特定的计算或操作,并返回一个结果。
过程是一段可重用的代码,用于执行一系列操作,不返回结果。
函数和过程有助于将程序划分为更小的单元,提高程序的可读性和可维护性。
2. 控制结构控制结构是结构化程序设计方法的另一个重要要点。
控制结构用于控制程序的执行流程,改变程序的执行顺序或执行条件。
2.1 顺序结构顺序结构是程序从上到下按照顺序执行的控制结构。
顺序结构是程序的基础,所有的程序都是从顺序结构开始进行。
2.2 选择结构选择结构用于根据条件选择执行不同的代码块。
常见的选择结构包括if语句和switch语句。
if语句用于判断一个条件是否成立,如果条件成立,则执行其中的代码块;否则执行其他代码块。
switch语句可以根据一个表达式的值选择执行不同的代码块。
结构化详细设计
![结构化详细设计](https://img.taocdn.com/s3/m/102cc7fe844769eae109edf7.png)
【六年级】精彩的秋游天气渐渐转凉,金黄的落叶纷纷飘落,这是一个适合秋游的季节。
我们班决定去郊外旅行,感受大自然的美丽,享受秋天的清新。
早晨,我们准时在学校门口集合。
同学们都精神饱满,兴致勃勃地等待着出发。
老师带着我们走进了一辆大巴车,车里热闹非凡,一片欢声笑语。
汽车行驶在一条弯弯曲曲的山路上,两侧是一片片苍翠的林木,树叶在秋风中翩翩起舞,给人一种宁静与宜人的感觉。
不一会儿,大巴车终于停了下来。
我们下车后,来到了一个宽阔的空地上。
周围是高耸入云的山峰,山峰上的树木已被秋风吹得只余几片叶子。
山上有跑步道,有篮球场,还有一个小湖。
尤其是湖里的水波粼粼,美得让人难以言表。
大家迫不及待地开始了各自喜欢的活动。
有的同学选择了打篮球,他们组成了两队,你追我赶,在球场上团团转。
有的同学选择了钓鱼,他们找来鲜艳的鱼饵,在湖边竖起了钓竿,眼巴巴地盼望着鱼儿上钩。
还有的同学选择了跑步,他们在山间悠然奔跑,风吹过他们的脸庞,使他们的脸上洋溢着灿烂的笑容。
我则想来一次亲近大自然的旅行,于是我选择了欣赏美丽的自然景观。
我沿着蜿蜒的小路向前走去,小路两旁的花草树木丰茂,仔细一看,有红色的苹果、橙色的柑橘、绿油油的蔬菜等等。
我还看见了一只可爱的小松鼠,它灵活地跑上树枝,向我张望了一会儿,然后迅速地消失在了树林中。
时间过得飞快,转眼间已是中午。
我们在山上找了一个宽敞的区域,摆开了野餐桌椅,开始享受美食。
同学们吃得津津有味,笑声不断。
午餐后,我们开始了下午的活动。
老师组织了一个寻宝游戏,每个小组都拿到了一张宝藏地图,我们要根据地图上的线索找到宝藏的所在地。
我们跑遍了整个山林,发现了隐藏在各处的线索,大家卯足了劲,寻宝的热情高涨。
最终,我们的小组终于找到了宝藏,宝藏里有很多好吃的零食和小礼物。
我们欢呼雀跃,激动不已。
临近傍晚时分,我们赶回大巴车上,开始了回家的旅程。
车里充满了欢声笑语,大家在车上分享着这个美好的秋游经历。
渐渐地天色暗了下来,我们回到了学校。
软件工程6-1
![软件工程6-1](https://img.taocdn.com/s3/m/874495d233d4b14e852468c9.png)
(1)由于程序流程图的特点,它本身并不是逐步求精的好工具. 因为它使程序员容易过早地考虑程序的具体控制流程,而忽略了程序的 全局结构; (2)程序流程图中用箭头代表控制流,这样使得程序员不受任何 约束,可以完全不顾结构程序设计的精神,随意转移控制;
(3)程序流程图在表示数据结构方面存在不足.
2, 盒图(N-S图) , 盒图( 图
6.4.3 程序设计风格
1,程序内部的文档 2,数据说明 3,语句构造 4,输入/输出 输入/ 5,效率
1, 程序内部的文档 ,
程序内部的文档包括:
(1)恰当的标识符(变量和标号)的名字; 恰当的标识符(变量和标号)的名字; 恰当的标识符 (2)适当的注释; 适当的注释; 适当的注释 (3)程序的视觉组织. 程序的视觉组织
2) (2)面向对象语言 对象+消息 对象 消息 例:Delphi,Visual Basic, JAVA,C++.
6.4.2 程序设计语言的选择 一般情况下,我们采用高级语言来编程. 选择具体高级语言类型的原则: 选择具体高级语言类型的原则: (1)系统的应用领域 ) (2)用户的要求 ) (3)软件的执行环境 ) (4)目标系统的性能要求 ) (5)程序员的知识水平 ) (6)软件的可移植性要求 )
4, 输入/输出 , 输入/
在设计和程序编码时,应考虑输入和输出风格原则: (1)对所有输入数据都进行校验,以保证每个数据的有 效性; 检查重要的输入项组合的合法性; 使得输入的步骤和操作尽可能简单,并保持简单的输 入格式; 输入一批数据时,使用输入结束指示符,不要要求用 户说明输入项数; (2)在以交互式输入/输出方式进行输入时,要指明可 以使用的选择值或界限值; 应允许缺省值; (3)当程序设计语言对输入/输出格式有严格要求时, 应保持输入格式与输入语句的要求一致; 给所有的输出加注释,并设计输出报表格式.
结构化设计
![结构化设计](https://img.taocdn.com/s3/m/c07ad7d3fab069dc50220138.png)
为了更加形象的表达模块之间的关系,通常还有一些附 加的符号,可以用来表示模块之间的选择调用或者循环 调用。
数据流 控制流
好输入
得到好的输入
产生最佳解
位于结构图上方的方框 所代表的模块意指调用 下方的模块,因此,即 使使用直线也不会在模 块之间调用关系这一问 题上产生二义性
Find a Room
2.0
Delete a Room
3.0
Establish a House 4.0
……
By Room ID 2.1
By Square Footage 2.2
By Type of Floor
2.3
……
Add a Room
4.1
Find a Room
4.2
Delete a Room
4.3
HIPO图实际上由两部分组成,
H图
H图就是上面提到的层次图; 为了能使HIPO图具有可跟踪性; 在H图里除了最顶层的方框之外,每个方框都加了编号;
IPO图
对于H图中的每个模块方框,都应该有一张IPO图描述这个方 框所代表的模块处理逻辑;
User’s Interface
Enter a New Room 1.0
具体.
在总体设计阶段,每个模块还处于黑盒子级, 模块通过外部特征标识自己,比如:
名字、
输入、
输出等。
这样在总体设计阶段就可以避免过早的陷入 模块的逻辑,算法设计,从而能够更好的确 定模块和模块之间的结构与调用关系。
软件总体设计的过程
采用某种设计方法,将系统按功能划 分成模块的层次结构
1对需求规约所产生的dfd进行分类2根据分类的结果用不同的方法将数据流图dfd转换成初始模块结构图msd3再根据基本的模块化设计原则高内聚低耦合精化初始模块结构图使之成为最终可供详细设计所使用的模块结构图变换型数据流图具有较明显的输入变换或称主加工和输出界面的数据流图称为变换型数据流图
05详细设计
![05详细设计](https://img.taocdn.com/s3/m/91fcd438376baf1ffc4fad35.png)
结构化程序设计的发展历史
Байду номын сангаас
1965年,E.W.Dijkstra在IFIP(国际信息处理联合会)会议上提 出“可以从高级语言中取消GOTO语言”、“程序的质量与程序中所 包含的GOTO语句的数量成反比”。但是当时并未引起很大反响。 1966年Bohm和Jacopini证明了,只用三种基本的控制结构就能实现 任何单入口单出口的程序,这个结论奠定了结构程序设计的理论基 础。这三种基本的控制结构是“顺序”、“选择”、“循环”。 1968年Dijkstra在ACM通讯上发表了短文“GOTO statement considered harmful”再次建议从一切高级语言中取消GOTO语句, 只使用三种基本控制结构写程序。经过讨论人们认识到,不是简单 地去掉GOTO语句的问题,而是要创立一种新的程序设计思想、方法 和风格,以显著地提高软件生产率和降低软件维护代价。 1971年IBM公司在纽约时报信息库管理系统的设计中成功地使用了 结构程序设计技术(以及主程序员组),随后在美国宇航局空间实 验室飞行模拟系统的设计中,结构程序设计技术(也采用了主程序 员组的形式)再次获得圆满成功。
1966年Bohm和Jacopini证明了,只用三种基本的控制结构就能 实现任何单入口单出口的程序,这个结论奠定了结构程序设计 的理论基础。这三种基本的控制结构是“顺序”、“选择”、 “循环”。
A B B
exp T A A exp F 或
F exp T A
a.顺序
b.if-then-else 选择
c.do-while 循环
PDL的特点
提供全部结构化控制结构、数据说
明和模块特征。能对PDL正文进行 结构分割,使之变得易于理解。 为了区别关键字,规定关键字一律 大写,其它单词一律小写。或者规 定关键字加下划线,或者规定它们 为黑体字。
结构化设计
![结构化设计](https://img.taocdn.com/s3/m/38c9ad3afad6195f312ba663.png)
第5章 结构化设计
6) 性能需求
性能需求主要指信息系统对网络的效率、速度、 可靠性、安全性等性能要求。 2. 网络结构设计 网络结构设计的主要任务是根据网络需求分析的
结果,设计出能够满足信息系统需要、结构合理、易
于扩充、性能价格比高的系统网络总体结构。系统网 络总体结构可以采用单级、二级和多级结构。
方面的内容。
第5章 结构化设计
1) 信息系统的特征对网络的需求
网络设计需要考虑信息系统的类型和特征。例如, 办公自动化系统需要提供能够集成办公设备和办公环 境的信息网络,以构成一体化的企业办公系统,这种 系统就不需要与企业生产过程系统、CAD/CAM系统进 行集成。而企业建立的CIMS系统就必须考虑与生产过 程、CAD/CAM的集成。因此,不同类型的信息系统对 网络的结构和布局有不同的要求。
了解信息系统业务所覆盖的地理分布,主要包括: 信息系统用户的数量以及用户的具体位置;子系统之 间的距离和各个用户之间的距离;在一幢楼、一层楼、 一个办公室中的用户组;一些特殊的需求或限制,例 如在网络覆盖的地域范围内是否有道路、山丘、建筑 物等,电缆布线是否有禁区等。
第5章 结构化设计
4) 网络服务需求
3.详细设计
详细设计是对软件结构中确定出的各个子系统内部 的设计,需要分析和确定每一个子系统中的用例设计、 设计类和接口。 4.界面设计 界面设计是对人和外部系统与信息系统之间交互界 面的设计。它包括输入界面、输出界面和混合界面的 设计。
第5章 结构化设计
5.数据库设计
数据库是信息系统存储和管理数据的主要技术手 段,数据库设计的任务是根据给定的信息系统应用需 求和系统环境,设计出合理的数据库结构。数据库设 计需要经过概念设计、逻辑设计和物理设计等步骤。
8 结构化详细设计
![8 结构化详细设计](https://img.taocdn.com/s3/m/943bb431cfc789eb172dc853.png)
其它求精的规则,与输入部分类同。例如,可以将“PUT 加 / 减速”模块与其下属的两个模块合并为一个模块,将 “ PUT 超速量”模块与其下属的两个模块合并为一个模块 。
通过以上求精之后,可得如下的模块结构图
输出模块
生成mpg 显示 生成mph 显示 生成里程 显示 生成加/减速显示
生成蜂鸣
显示
其它求精的规则,与输入部分类同。例如,可以将“PUT 加 / 减速”模块与其下属的两个模块合并为一个模块,将 “ PUT 超速量”模块与其下属的两个模块合并为一个模块 。
通过以上求精之后,可得如下的模块结构图
输出模块
生成mpg 显示 生成mph 显示 生成里程 显示 生成加/减速显示
生成蜂鸣
显示
第二种表达-框图
s1
s2
第三种表达-PAD图
S1 S2
X5 X<5
. . .
s1
s2
s
S1 S2
S
S3
注:支持逐步求精设计
第四种表达-N-S图
S1 T
X>5
顺序:
选择 :
条件 T F
S1 S2
循环:
循环条件 循环体
S3 S2 N:=1..10 S4 S5 S6
F
T
X>10&Y>3
F
S7
S8
S9
问题空间 解空间
自 顶 向 下
4)该方法的组成
紧紧围绕“自顶向下” “过程抽象”“数据抽象”和“ 模块化”
等基本原理/原则 给出了 完备的符号 可操作的过程 易理解的表示工具
并提供了
控制信息组织复杂性的机制,例如
逐层分解,数据打包等
软件工程结构化设计的基本步骤
![软件工程结构化设计的基本步骤](https://img.taocdn.com/s3/m/bf6c735a974bcf84b9d528ea81c758f5f61f2935.png)
软件工程结构化设计的基本步骤软件工程是一个综合性学科,它涉及到软件的开发、测试、维护等多个方面。
其中,结构化设计是软件工程中非常重要的一个环节,它直接影响到软件的质量和可维护性。
那么,软件工程结构化设计的基本步骤是什么呢?在本文中,我们将深入探讨软件工程结构化设计的基本步骤,帮助你更好地理解这一重要主题。
一、需求分析软件工程结构化设计的第一步是需求分析。
在这个阶段,你需要与用户进行充分的沟通,了解用户的需求和期望。
通过需求分析,你可以明确软件的功能性需求和非功能性需求,从而为后续的设计工作奠定基础。
在需求分析阶段,我建议你采用面向对象的方法来描述用户需求,并将其转化为可执行的任务。
这样做可以帮助你更好地理解用户的需求,并为后续的设计工作提供清晰的指导。
二、概要设计概要设计阶段是软件工程结构化设计的第二步。
在这个阶段,你需要将需求分析阶段得到的需求转化为软件的整体架构。
这包括确定系统的模块划分、模块之间的接口设计等工作。
概要设计是软件工程中非常关键的一个环节,它直接影响到后续的详细设计和编码工作。
在概要设计阶段,我建议你采用结构化的方法来设计软件的整体架构。
这样做可以帮助你清晰地描述软件的功能和结构,并为后续的详细设计提供有力的支持。
三、详细设计详细设计是软件工程结构化设计的第三步。
在这个阶段,你需要进一步细化概要设计阶段得到的软件架构,包括设计每个模块的具体功能和接口。
详细设计阶段是软件工程中非常具体的一个环节,它直接关系到软件的实现和性能。
在详细设计阶段,我建议你采用模块化的方法来设计每个模块的功能和接口。
这样做可以帮助你更好地组织软件的设计思路,并为后续的编码工作提供清晰的指导。
四、编码和测试编码和测试是软件工程结构化设计的最后两步。
在编码阶段,你需要根据详细设计阶段得到的设计图纸来实现软件的各个模块。
你还需要编写相应的测试用例,以确保软件的功能和性能达到预期的要求。
在测试阶段,你需要对软件进行全面的测试,包括单元测试、集成测试和系统测试等多个方面。
结构化设计之详细设计
![结构化设计之详细设计](https://img.taocdn.com/s3/m/6cb101215727a5e9846a611e.png)
问题分析图(PAD)
问题分析图是一种改进的图形描述方式,可以用来取代流程图。
PAD支持SP方法,它仅具有顺 序、选择、循环三类基本成分
例子: 在数组K中找出最大和次大的两个 数
问题分析图(PAD)
PAD的优点: • 逻辑结构清晰,图形标准化; • 强制设计人员使用SP方法,因而提高了产品的质量; • 通过机械地“走树”可以从PAD直接产生程序,该过程便于用计算机自 动实现。
Jackson 方法三种基本结构
在一般数据处理系统中,数据结构有“顺序”、“重复”和“选择”等 三种类型,以数据结构为基础相应地建立的程序结构,也就有“顺序”、 “重复”(循环)和“选择”(条件)等三种类型。
顺序结构 : 顺序结构的数据由一个或多个数据元素组 成,每个元素按确定次序出现一次
选择结构: 选择结构的数据包含两个或多个数据元素, 每次使用这个数据时按一定条件从这些数 据元素中选择一个 重复结构: 重复结构的数据,根据使用时的条件由一 个数据元素出现零次或多次组成
流程图(FC)
一个模块的内部执行过程可用图形来描述,由于图形描述方式比较直 观、形象化,所以易于理解,又易于进行复查。图形描述方式中流程图是 历史最悠久,最广为流行的一种。
流程图包含下面三种基本成分: • 加工步骤——用方框表示 • 逻辑条件——用菱形表示 • 控制流———用箭头表示 设计人员用SP方法的三类标准结构反复嵌套来绘制流程图,这样画出的图 称为结构化流程图。
Jackson 方法概述
SA、SD和 SP方法前后衔接,用于需求分析和设计阶段,是面向数据流 的 。而Jackson 方法是一种面向数据结构的方法,这个方法适用于数据处 理类问题,特别是企事业管理的一类软件系统。
• Jackson方法的目标:获得简单清晰的设计方案,因为这样的方案易于理 解、易于修改。 • Jackson方法的设计原则:使程序结构同数据结构相对应。
8结构化详细设计
![8结构化详细设计](https://img.taocdn.com/s3/m/563b7f69336c1eb91a375d76.png)
4. 先测试后优化 为在效率与健壮性之间做出合理的折衷,应该在为 提高效率而进行优化之前,先测试程序的性能,人 们常常惊奇地发现,事实上大部分程序代码所消耗 的运行时间并不多。
5.3.2 结构化程序设计
详细设计层 --主要引入了关于三种动作控制结构的术语/符号 三种控制结构:顺序,选择和循环 这三种结构在表达系统行为方面是完备的 如果只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE 型循环这3种基本控制结构,则称为经典的结构程序设计; 如果除了上述3种基本控制结构之外,还允许使用DOCASE型多分支结构和DO-UNTIL型循环结构,则称为扩展的 结构程序设计; 如果再加上允许使用LEAVE(或BREAK)结构,则称为修 正的结构程序设计。
PDL应该具有下述特点: (1) 关键字的固定语法,它提供了结构化控制结构、 数据说明和模块化的特点。为了使结构清晰和可读 性好,通常在所有可能嵌套使用的控制结构的头和 尾都有关键字,例如,if…fi(或endif)等等。 (2) 自然语言的自由语法,它描述处理特点。 (3) 数据说明的手段。应该既包括简单的数据结构 (例如纯量和数组),又包括复杂的数据结构(例如, 链表或层次的数据结构)。 (4) 模块定义和调用的技术,应该提供各种接口描 述模式。
PAD图
PAD (problem analysis diagram)图的主要优点如下: (1) 使用表示结构化控制结构的PAD符号所设计出 来的程序必然是结构化程序。 (2) PAD图所描绘的程序结构十分清晰。 (3) 用PAD图表现程序逻辑,易读、易懂、易记。 (4) 容易将PAD图转换成高级语言源程序。 (5) 即可用于表示程序逻辑,也可用于描绘数据结 构。 (6) PAD图的符号支持自顶向下、逐步求精方法的 使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发及维护
第8章 结构化详细设计
2013-11-8
©曲阜师范大学计算机科学学院
1
第8章 结构化详细设计
本章的主要目标是基于总体设计结果,进行结构化的软件 模块详细设计。读完本章,你将了解以下基本内容: 结构化程序设计的理念。 人机界面设计原理及注意问题。 详细设计工具。 面向数据结构的设计方法。 程序复杂程度定量度量标准。 详细设计的根本目标是确定怎样具体地实现所要求的 系统。即经过这个阶段的设计工作,应该得出对目标系统 的精确描述,从而在编码阶段可以把这个描述直接翻译成 用某种程序设计语言书写的程序。 详细设计阶段的任务还不是具体地编写程序代码,而 是设计出程序的“蓝图”,程序员则根据蓝图写出实际的 程序代码。
– 只允许使用顺序、IF_THEN_ELSE型分支和 DO_WHILE型循环这三种基本控制结构。
• 扩展的结构程序设计:
– 还允许使用DO_CASE型多分支结构和DO_UNTIL型循 环结构。
• 修正的结构程序设计:
– 再加上允许使用LEAVE(或BREAK)结构。
12
• 什么是结构化程序设计呢?
29
2013-11-8
©曲阜师范大学计算机科学学院
30
• 8.3.4 判定表
判定表能够清晰地表示复杂的条件组合与应做的动作 之间的对应关系。 一张判定表由4部分组成,左上部列出所有条件,左 下部是所有可能做的动作,右上部是表示各种条件组合的 一个矩阵,右下部是和每种条件组合相对应的动作。判定 表右半部的每一列实质上是一条规则,规定了与特定的条 件组合相对应的动作。 假设某航空公司规定,乘客可以免费托运重量不超过 30kg的行李。当行李重量超过30kg时,对头等舱的国内 乘客超重部分每公斤收费4元,对其他舱的国内乘客超重 部分每公斤收费6元,对外国乘客超重部分每公斤收费比 国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常 乘客少一半。
9
扩充的控制结构
• 为了实际使用方便起见,常常还允许使用 DO_CASE型多分支结构和DO_UNTIL型循环结 构。 • 有时需要立即从循环(甚至嵌套的循环)中转移 出来,如果允许使用LEAVE(或BREAK)结构, 则不仅方便而且会使效率提高很多。
10
扩充的控制结构
11
结构程序设计
• 经典的结构程序设计:
2013-11-8
©曲阜师范大学计算机科学学院
24
从20世纪40年代末到70年代中期,程序流程 图一直是软件设计的主要工具。 程序流程图的主要缺点如下:
– 程序流程图本质上不是逐步求精的好工具。 – 程序流程图中用箭头代表控制流,因此程序员不受任 何约束 。 – 程序流程图不易表示数据结构。
2013-11-8
36
3. 重复结构
根据使用时的条件由一个数据元素出现零次或多次是表示重复结构 。
2013-11-8
©曲阜师范大学计算机科学学院
37
8.4.2
改进的Jackson图
2013-11-8
©曲阜师范大学计算机科学学院
38
8.4.3 Jackson方法
Jackson结构程序设计方法基本上由下述5个步骤组成:
2013-11-8
©曲阜师范大学计算机科学学院
5
三种基本的控制结构
• • • 顺序结构,先执行A再执行B IF_THEN_ELSE型选择(分支)结构 DO_WHILE型循环结构:
– 在循环控制条件成立时,重复执行特定的加工。
•
实际上用顺序结构和循环结构(又称DO_WHILE结 构)完全可以实现选择结构(又称IF_THEN_ELSE 结构),因此,理论上最基本的控制结构只有两种。
2013-11-8
©曲阜师范大学计算机科学学院
39
列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分 配到程序结构图的适当位置。 用伪码表示程序。 下面结合一个具体例子进一步说明Jackson结构程序设计方法。 [例] 一个正文文件由若干个记录组成,每个记录是一个字符串。要求 统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要 求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这 个字符串中的空格数,最后印出文件中空格的总个数。
分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这 些数据结构。 找出输入数据结构和输出数据结构中有对应关系的数据单元。 用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的 Jackson图: – 第一,为每对有对应关系的数据单元,按照它们在数据结构图中 的层次在程序构图的相应层次画一个处理框 ; – 第二,根据输入数据结构中剩余的每个数据单元所处的层次,在 程序结构图的对应层次分别为它们画上对应的处理框; – 第三,根据输出数据结构中剩余的每个数据单元所处的层次,在 程序结构图的对应层次分别为它们画上对应的处理框。
17
18
• 8.2 人机界面设计
人机界面设计是系统接口设计的一个重要的 组成部分。 人机界面的设计质量,直接影响用户对软件 产品的评价,从而影响软件产品的竞争力和寿命。
2013-11-8
©曲阜师范大学计算机科学学院
19
20
21
22
23
• 8.3 过程设计的工具
8.3.1 程序流程图
程序流程图又称为程序框图,它是历史最悠久、使用 最广泛的描述过程设计的方法,然而它也是用得最混乱的 一种方法。
©曲阜师范大学计算机科学学院
25
• 8.3.2 盒图(N-S图)
Nassi和Shneiderman提出了盒图,又称为N-S图 :
2013-11-8
©曲阜师范大学计算机科学学院
26
N-S图有下述特点:
– 功能域(即,一个特定控制结构的作用域)明确,可以从 盒图上一眼就看出来。 – 不可能任意转移控制。 – 很容易确定局部和全局数据的作用域。 – 很容易表现嵌套关系,也可以表示模块的层次结构。
2013-11-8 ©曲阜师范大学计算机科学学院 31
2013-11-8
©曲阜师范大学计算机科学学院
32
• 8.3.5 判定树
2013-11-8
©曲阜师范大学计算机科学学院
33
• 8.3.6 过程设计语言
过程设计语言(PDL)也称为伪码 。 PDL应该具有下述特点: – 关键字的固定语法,它提供了结构化控制结构、数据 说明和模块化的特点。 – 自然语言的自由语法,它描述处理特点。 – 数据说明的手段。 – 模块定义和调用的技术,应该提供各种接口描述模式。
2013-11-8
©曲阜师范大学计算机科学学院
46
当过程设计中包含复合条件时,生成流图的方法稍微 复杂一些。
2013-11-8
©曲阜师范大学计算机科学学院
47
2. 计算环形复杂度的方法
流图中的区域数等于环形复杂度。 流图G的环形复杂度V(G)=E-N+2,其中,E是流图 中边的条数,N是结点数。 流图G的环形复杂度V(G)=P+1,其中,P是流图中判 定结点的数目。
2013-11-8 ©曲阜师范大学计算机科学学院 2
Contents
• • • • • 8.1 结构化程序设计基础 8.2 人机界面设计 8.3 过程设计的工具 8.4 面向数据结构的设计方法 8.5 程序复杂程度的定量度量
2013-11-8
©曲阜师范大学计算机科学学院
3
• 8.1 结构化程序设计基础
数据元素彼此间的逻辑关系只有顺序、选择和重复3类 。 1. 顺序结构
顺序结构的数据由一个或多个数据元素组成,每个数据元素按 确定的次序出现一次 。
2. 选择结构
选择结构的数据包含两个或多个数据元素,每次使用这个数据 时按一定的条件从这些数据元素中选择一个 。
2013-11-8
©曲阜师范大学计算机科学学院
2013-11-8
(1)停止 (2)打开文件 (3)关闭文件 (4)印出字符串 (5)印出空格数目 (6)印出空格总数 (7)sum:=sum+1 (8)totalsum:=totalsum+sum (9)读入字符串 (10)sum:=0 (11) totalsum:=0 (12)pointer:=1 (13) pointer:=pointer+1 I(1)文件结束 I(2)字符串结束 S(3)字符是空格
–
8
结构程序设计的优点
1. 2. 3. 4. 5. 6. 可以显著提高软件开发工程的成功率和生产率 。 程序有清晰的层次结构,因此容易阅读和理解。 开发时比较容易保证程序的正确性,即使出现错 误也比较容易诊断和纠正。 源程序清晰流畅,易读易懂而且容易测试。 程序清晰和模块化使得在修改和重新设计一个软 件时可以重用的代码量最大。 程序的逻辑结构清晰,有利于程序正确性证明。
2013-11-8
©曲阜师范大学计算机科学学院
44
8.5.1 McCabe方法 1. 流图
流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控 制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。 把程序流程图映射成流图的方法。
2013-11-8
©曲阜师范大学计算机科学学院
45
用PDL表示的处理过程及与之对应的流图。
6
三种基本的控制结构
7
结构程序设计的定义
• 结构程序设计是一种设计程序的技术,它采用自顶 向下逐步求精的设计方法和单入口单出口的控制结 构。
– 在总体设计阶段采用自顶向下逐步求精的方法:把一个复 杂问题的解法分解和细化成一个由许多模块组成的层次结 构的软件系统。 详细设计或编码阶段采用自顶向下逐步求精的方法:可以 把一个模块的功能逐步分解细化为一系列具体的处理步骤 或某种高级语言的语句。