结构化设计之详细设计
系统的结构化分析与设计方法
系统的结构化分析与设计⽅法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图,⽅便交流。
结构化设计
⑷.按照设计改进原则细化和改进初始的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课件
结构化详细设计的结构和特点 结构化详细设计工具 人机交互界面设计 数据库设计 编码实现
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
详细设计
19
PAD图
特点
结构清晰,层次分明,易读 支持逐步求精的设计思想 容易将PAD自动转换为高级语言源程序
20
判定表
判定表可以清晰地描述复杂的条件组合。
21
判定表
其优点在于使别人很容易看清楚各种条件组合 以及由此产生的各种动作,甚至简单到不需要加以 任何说明。 表示复杂的条件组合与应做动作之间的对应关系; 判定表并不适用于作为一种通用的设计工具,通 常将之用于辅助测试 ; 要求将程序流程图中的多分支判断都改成两分支 判断; 缺点: --含义不清楚; --数据元素多于两个时,判定表简洁性下降。
PAD图
PAD是Problem Analysis Diagram的英文缩写,是日本日立公 司在1973年提出的。它是用结构化程序设计思想表现程序逻辑 结构的图形工具。 A A A
p p
B
顺序型
While P
B
选择型
=1 =2
A1 A2
S
当型循环型
p
=n
Until P
S
直到型循环型
An 多分支选择型
30
谢 谢!
全部细节;
4.为系统每一个模块设计测试用例。 以上这些内容所组成的文档就是系统详细设计说明书,这些文档设 计完成以后,经过审核合格交付给下一阶段,作为编码的依据。
5
结构化程序设计
… … if (A.LT.B) goto 120 if (B.LT.C) goto 110 100 write(6,*) C goto 140 110 write(6,*) B goto 140 120 if(A.LT.C) goto 130 goto 100 130 write(6,*) A 140 continue
结构化详细设计
【六年级】精彩的秋游天气渐渐转凉,金黄的落叶纷纷飘落,这是一个适合秋游的季节。
我们班决定去郊外旅行,感受大自然的美丽,享受秋天的清新。
早晨,我们准时在学校门口集合。
同学们都精神饱满,兴致勃勃地等待着出发。
老师带着我们走进了一辆大巴车,车里热闹非凡,一片欢声笑语。
汽车行驶在一条弯弯曲曲的山路上,两侧是一片片苍翠的林木,树叶在秋风中翩翩起舞,给人一种宁静与宜人的感觉。
不一会儿,大巴车终于停了下来。
我们下车后,来到了一个宽阔的空地上。
周围是高耸入云的山峰,山峰上的树木已被秋风吹得只余几片叶子。
山上有跑步道,有篮球场,还有一个小湖。
尤其是湖里的水波粼粼,美得让人难以言表。
大家迫不及待地开始了各自喜欢的活动。
有的同学选择了打篮球,他们组成了两队,你追我赶,在球场上团团转。
有的同学选择了钓鱼,他们找来鲜艳的鱼饵,在湖边竖起了钓竿,眼巴巴地盼望着鱼儿上钩。
还有的同学选择了跑步,他们在山间悠然奔跑,风吹过他们的脸庞,使他们的脸上洋溢着灿烂的笑容。
我则想来一次亲近大自然的旅行,于是我选择了欣赏美丽的自然景观。
我沿着蜿蜒的小路向前走去,小路两旁的花草树木丰茂,仔细一看,有红色的苹果、橙色的柑橘、绿油油的蔬菜等等。
我还看见了一只可爱的小松鼠,它灵活地跑上树枝,向我张望了一会儿,然后迅速地消失在了树林中。
时间过得飞快,转眼间已是中午。
我们在山上找了一个宽敞的区域,摆开了野餐桌椅,开始享受美食。
同学们吃得津津有味,笑声不断。
午餐后,我们开始了下午的活动。
老师组织了一个寻宝游戏,每个小组都拿到了一张宝藏地图,我们要根据地图上的线索找到宝藏的所在地。
我们跑遍了整个山林,发现了隐藏在各处的线索,大家卯足了劲,寻宝的热情高涨。
最终,我们的小组终于找到了宝藏,宝藏里有很多好吃的零食和小礼物。
我们欢呼雀跃,激动不已。
临近傍晚时分,我们赶回大巴车上,开始了回家的旅程。
车里充满了欢声笑语,大家在车上分享着这个美好的秋游经历。
渐渐地天色暗了下来,我们回到了学校。
软件工程18(结构化设计详细设计)
4.6.4 PAD图
• PAD的扩充控制结构
4.6.4 PAD图
• PAD的优点
使用 PAD 符号所设计出来的程序必然是结 构化程序。 PAD 图描绘程序结构清晰,图中竖线的总
条数就是程序的层次数。
用 PAD 图表现程序逻辑易读、易懂、易记
。
4.6.4 PAD图
• PAD的优点
(3) 程序自顶向下、逐步细化,分解成树形结构。
任何一步发生错误,一般只影响它下层的结点
,同一层的其他结点不受影响。
4.6.6 自顶向下、逐步细化的设计过程
自顶向下、逐步求精的方法的优点 件时,可复用的代码量最大。
(4) 程序清晰和模块化,使得在修改和重新设计一个软 (5) 程序的逻辑结构清晰,有利于程序正确性证明。 (6) 每一步工作仅在上层结点的基础上做不多的设计扩
下课了。。。
休息一会儿。。。
容易将PAD图自动转换为高级语言源程序。 PAD图既可以表示程序逻辑,也可用于描绘 数据结构。
PAD图的符号支持自顶向下、逐步求精方法
的使用。
4.6.5 伪代码
伪代码是一种介于自然语言和形式化语 言之间的半形式化语言,是一种用于描 述功能模块的算法设计和加工细节的语 言 , 也 称 为 程 序 设 计 语 言 ( Program Design Language,PDL)。
软件工程
主讲:陈利平
计算机与信息科学学院 2015
概述:
• 一、主要内容 • 讲述详细设计的几种工具的表示。 • 二、目的与要求 • 了解结构化设计的表示工具,理解PAD图 和伪代码的应用。 • 三、重点与难点 • PAD图和伪代码的应用。
05详细设计
结构化程序设计的发展历史
Байду номын сангаас
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正文进行 结构分割,使之变得易于理解。 为了区别关键字,规定关键字一律 大写,其它单词一律小写。或者规 定关键字加下划线,或者规定它们 为黑体字。
软件工程学 结构化详细设计
第6章(结构化)详细设计目录6.1 结构程序设计6.3 过程设计的工具6.5 程序复杂度的定量度量详细设计的目标确定如何具体实现所要求的系统,即得出对目标系统的精确描述,从而在编码阶段可以把这个描述翻译成用某种程序设计语言书写的程序。
不是具体编写程序,而是设计程序的“蓝图”,以后程序员将根据这个“蓝图”写出实际的代码。
6.1 结构程序设计E.W.Dijkstra 最早提出结构程序设计:程序质量与程序中包含的Goto 语句的数量成反比(1965)。
1966 ,Bohm, Jacopini ,证明了只用“顺序”、“选择”、“循环”控制结构就能实现任何单入口单出口程序。
相当于“A、B”相当于“If exp then A else B endif ”循环结构相当于“While exp do A”扩充:多分支结构相当于“Case I of I=1:C1; I=2:C2; I=3:C3; … ; I=n:Cn”扩充:DO_UNTIL循环结构相当于“Repeat A Until exp”结构程序设计的经典定义如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
经典的结构程序设计:只允许使用顺序、IF_THEN_ELSE选择和WHILE_DO循环扩展的结构程序设计:除了三种基本控制结构,还使用多分支和DO_UNTIL循环修正的结构程序设计:除了三种基本控制结构和两种扩充结构,还使用CONTINUE和BREAK(从本次循环或整个循环结构中转移出来)。
使用结构程序设计技术的好处提高软件开发工程的成功率和生产率;系统有清晰的层次结构,容易阅读理解;单入口单出口的控制结构,容易诊断纠正;模块化可以使得软件可以重用;程序逻辑结构清晰,有利于程序正确性证明。
6.3 过程设计的工具程序流程图是一种描述程序的控制结构流程和指令执行情况的有向图。
优点:历史悠久、使用广泛、直观描绘控制流程、便于初学者掌握。
8 结构化详细设计
其它求精的规则,与输入部分类同。例如,可以将“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)该方法的组成
紧紧围绕“自顶向下” “过程抽象”“数据抽象”和“ 模块化”
等基本原理/原则 给出了 完备的符号 可操作的过程 易理解的表示工具
并提供了
控制信息组织复杂性的机制,例如
逐层分解,数据打包等
结构化设计之详细设计
问题分析图(PAD)
问题分析图是一种改进的图形描述方式,可以用来取代流程图。
PAD支持SP方法,它仅具有顺 序、选择、循环三类基本成分
例子: 在数组K中找出最大和次大的两个 数
问题分析图(PAD)
PAD的优点: • 逻辑结构清晰,图形标准化; • 强制设计人员使用SP方法,因而提高了产品的质量; • 通过机械地“走树”可以从PAD直接产生程序,该过程便于用计算机自 动实现。
Jackson 方法三种基本结构
在一般数据处理系统中,数据结构有“顺序”、“重复”和“选择”等 三种类型,以数据结构为基础相应地建立的程序结构,也就有“顺序”、 “重复”(循环)和“选择”(条件)等三种类型。
顺序结构 : 顺序结构的数据由一个或多个数据元素组 成,每个元素按确定次序出现一次
选择结构: 选择结构的数据包含两个或多个数据元素, 每次使用这个数据时按一定条件从这些数 据元素中选择一个 重复结构: 重复结构的数据,根据使用时的条件由一 个数据元素出现零次或多次组成
流程图(FC)
一个模块的内部执行过程可用图形来描述,由于图形描述方式比较直 观、形象化,所以易于理解,又易于进行复查。图形描述方式中流程图是 历史最悠久,最广为流行的一种。
流程图包含下面三种基本成分: • 加工步骤——用方框表示 • 逻辑条件——用菱形表示 • 控制流———用箭头表示 设计人员用SP方法的三类标准结构反复嵌套来绘制流程图,这样画出的图 称为结构化流程图。
Jackson 方法概述
SA、SD和 SP方法前后衔接,用于需求分析和设计阶段,是面向数据流 的 。而Jackson 方法是一种面向数据结构的方法,这个方法适用于数据处 理类问题,特别是企事业管理的一类软件系统。
• Jackson方法的目标:获得简单清晰的设计方案,因为这样的方案易于理 解、易于修改。 • Jackson方法的设计原则:使程序结构同数据结构相对应。
结构化系统设计(总体设计)精要
案例三:客户关系管理系统的结构设计
需求分析
客户关系管理系统需要满足企业客户信息管理、销售管理、服务 管理等需求,提高客户满意度和忠诚度。
系统结构
客户关系管理系统的系统结构通常包括客户信息管理、销售管理、 服务管理、数据分析等模块。
关键技术
客户关系管理系统需要使用到的关键技术包括数据挖掘、人工智能、 云计算等。
分配资源
根据开发计划,合理分配人力、物力和财力等资源,确保项目顺利进行。
结构设计
1 2 3
设计系统功能模块
根据系统需求和规划,将系统划分为若干个功能 模块,明确各模块的职责和相互关系。
设计系统流程
确定系统的工作流程,包括数据流程、控制流程 和业务流程等,确保系统能够高效地完成各项任 务。
设计系统界面
THANKS
结构化系统设计(总体设计)精要
$number {01}
目 录
• 引言 • 结构化系统设计原理 • 总体设计过程 • 总体设计的工具和技术 • 总体设计实践与案例
01 引言
目的和背景
目的
结构化系统设计是一种系统化的方法,用于规划和设计计算机信息系统。它的 目的是确保系统能够满足用户需求,同时保持系统的完整性、一致性和可靠性。
背景
随着计算机技术的快速发展,信息系统在各个领域的应用越来越广泛。为了确 保信息系统能够有效地支持业务运营和管理,需要进行系统化的设计和规划。 结构化系统设计方法就是在这种背景下发展起来的。
总体设计的重要性
确保系统满足用户需求
通过总体设计,可以明确系统的功能 、性能和安全性等方面的要求,从而 确保系统能够满足用户的需求。
设计数据字典
03
对数据库中的数据项进行定义和说明,包括数据项的名称、类
8结构化详细设计
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)。
SP方法的要点归纳如下: • 由顶向下逐步加细 • 三种基本结构 • 开发支持库 (DSL) • 主程序员组 (CPT)
开发支持库是指在整个开发过程中,将项目 • 第一步:以时间顺序考虑我们的模块内部 的进展状况和程序的有关资料等均记录在文 执行过程 主程序员组是程序员的组织方式,它由主程 档库中,文档库由专职的资料员来维持 • 第二步:确定是否有选择的情况 序员、后备程序员和资料员三人构成核心。 • 第三步:确定是否有循环的情况 再加上若干初级程序员和一些专家组成,在 开发过程中每人都有确定的任务 • 第四步:若是任然有模糊的部分,反复使 用上述三步去分解模糊部分
程序设计语言(PDL)
PDL 同结构化英语的想法是一致的,如果是在需求分析阶段描述用户需 求,可以描述得比较抽象; 如果是在详细设计阶段描述模块的内部算法,则 应比较详细具体; PDL的优点: • 同自然语言(英语)很接近,易于理解。 • 可以作为注释嵌在源程序中成为程序的内部文档,有效地提高程序的自 我描述性。 • 由于是语言形式,所以易于被计算机处理。 • 由于同程序是同结构的,相对地说,从中自动产生程序亦较容易。 PDL的缺点: • 不如图形描述直观,但是如果有从PDL导出相应流程图或NS图的自动工 具,这一缺点就能得以弥补。 • 支持SP方法的各种描述手段(结构化流程图、NS图、PAD图、PDL等)各 有优缺点,总的说来,PDL是比较令人满意的,所以在英语国家中最为 流行。
Jackson 方法举例
对一般数据处理系 统而言,问题的结 构可用它所处理的 数据结构来表示。 大多数系统处理的 是具有层次结构的 数据,如文件由记 录组成,记录又由 数据项组成(图 4.69(a),图中* 号表 示重复)
Jackson方法以此为基础相应地建立模块的层次结构 (图4.69(b))
Jackson 方法定义
Jackson 方法用图形描述数据结构和程序结构,这种图形称为Jackson图, 数据结构图中的方框表示数据,程序结构图中的方框表示模块(过程或函数 等),结构图中的 * 表示重复,° 表示选择。
Jackson 方法的基本步骤: • 建立数据结构。 • 以数据结构为基础,对应地建立程序结构。 • 列出程序中要用到的各种基本操作,再将这些操作分配到程序结构中适当 的模块。 这三步分别对应结构化方法的需求分析、概要设计和详细设计。
软件系统设计
软件系统设计
——详细设计
概述
概要设计: 将软件系统分解成许多个模 块,并决定每个模块的外部 特征,即功能(做什么)和 界面(输入和输出)
详细设计: 确定每个模块的内部特征, 即每个模块内部的执行过程 (怎样做) 详细设计时,每个模块是单 独考虑的 详细执行过程包括局部数据 组织、控制流、每一步的具 体加工要求及种种实现的细 节等 典型方法是结构化程序设计 (SP)另外还有Jackson 方 法
问题分析图(PAD)
问题分析图是一种改进的图形描述方式,可以用来取代流程图。
PAD支持SP方法,它仅具有顺 序、选择、循环三类基本成分
例子: 在数组K中找出最大和次大的两个 数
问题分析图(PAD)
PAD的优点: • 逻辑结构清晰,图形标准化; • 强制设计人员使用SP方法,因而提高用计算机自 动实现。
程序设计语言(PDL)
PDL 同结构化英语的想法是一致的,如果是在需求分析阶段描述用户需 求,可以描述得比较抽象; 如果是在详细设计阶段描述模块的内部算法,则 应比较详细具体; PDL的优点: • 同自然语言(英语)很接近,易于理解。 • 可以作为注释嵌在源程序中成为程序的内部文档,有效地提高程序的自 我描述性。 • 由于是语言形式,所以易于被计算机处理。 • 由于同程序是同结构的,相对地说,从中自动产生程序亦较容易。 PDL的缺点: • 不如图形描述直观,但是如果有从PDL导出相应流程图或NS图的自动工 具,这一缺点就能得以弥补。 • 支持SP方法的各种描述手段(结构化流程图、NS图、PAD图、PDL等)各 有优缺点,总的说来,PDL是比较令人满意的,所以在英语国家中最为 流行。
总结
总结、谢谢~
结构化程序设计(SP)方法
结构化程序设计方法用于 详细设计和编程阶段指导人们 用良好的思想方法开发出易于 理解又正确的程序。 SP方法建立在结构定理之上。
结构定理指出:任何程序逻辑都可用顺序、选择和循环等三种基本结构来表示
结构化程序设计(SP)方法
SP方法使用的描述方式包括结构化流程图、盒图、问题分析图和程 序设计语言PDL等。
注意: ·即使采用Jackson方法,块间联系和块内联系仍然是评价程序结构质量的 基本标准。 ·在软件生命期中,数据结构往往是会发生变化的,一旦数据结构改变了, 以数据结构为基础建立的整个程序结构也就都要改变了。
面向对象设计原则
1. 单一职责原则(Single Responsibility Principle) 每一个类应该专注于做一件事情。 2. 里氏替换原则(Liskov Substitution Principle) 超类存在的地方,子类是可以替换的。 3. 依赖倒置原则(Dependence Inversion Principle) 实现尽量依赖抽象,不依赖具体实现。 4. 接口隔离原则(Interface Segregation Principle) 应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口。 5. 迪米特法则(Law Of Demeter) 又叫最少知识原则,一个软件实体应当尽可能少的与其他实体发生相互作用。 6. 开闭原则(Open Close Principle) 面向扩展开放,面向修改关闭。
Jackson 方法三种基本结构
在一般数据处理系统中,数据结构有“顺序”、“重复”和“选择”等 三种类型,以数据结构为基础相应地建立的程序结构,也就有“顺序”、 “重复”(循环)和“选择”(条件)等三种类型。
顺序结构 : 顺序结构的数据由一个或多个数据元素组 成,每个元素按确定次序出现一次
选择结构: 选择结构的数据包含两个或多个数据元素, 每次使用这个数据时按一定条件从这些数 据元素中选择一个 重复结构: 重复结构的数据,根据使用时的条件由一 个数据元素出现零次或多次组成
Jackson 方法的设计结果清晰地描述了程序由哪几个模块组成,并指出了每 个模块包含的主要操作,在此基础上,就可以直接编程了。
Jackson 方法小结
Jackson方法的优点: 简单,易学易用,对于一些规模不大的数据处理系统,使用Jackson方法是 相当成功的,在了解了系统需处理的数据结构后,如果能找到输入和输出 数据结构之间的对应性,其程序结构是很容易导出的。 Jackson方法的缺点: 较大的系统往往涉及许多输入数据和输出数据,其结构又不相对应,此时 使用Jackson方法将比较困难。鉴于这一原因,可将SD方法同Jackson方法 结合起来使用;在画出了系统的数据流图之后,先用SD方法建立程序的总 体结构,然后在局部范围内使用Jackson方法。
流程图(FC)
一个模块的内部执行过程可用图形来描述,由于图形描述方式比较直 观、形象化,所以易于理解,又易于进行复查。图形描述方式中流程图是 历史最悠久,最广为流行的一种。
流程图包含下面三种基本成分: • 加工步骤——用方框表示 • 逻辑条件——用菱形表示 • 控制流———用箭头表示 设计人员用SP方法的三类标准结构反复嵌套来绘制流程图,这样画出的图 称为结构化流程图。
盒图(NS图)
在NS图中,每个“处理步骤”是用一个盒子表示的,所谓“处理步骤” 可以是语句或语句序列。
盒图(NS图)
用NS图作为详细设计的描述手段时,常需用两个盒子:数据盒和模块 盒(图 4.63),前者描述有关的数据,包括全程数据、局部数据和模块界面 上的参数等,后者描述执行过程。 NS图的优点: • 首先,它强制设计人员按SP方法进行思考 并描述他的设计方案,因为除了表示几种 标准结构的符号之处,它不再提供其他描 述手段,这就有效地保证了设计的质量, 从而也保证了程序的质量; • 第二,NS图形象直观,具有良好的可见度。 例如循环的范围、条件语句的范围都是一 目了然的,所以容易理解设计意图,为编 程、复查、选择测试用例、维护都带来了 方便; • 第三,NS图简单、易学易用,可用于软件 教育和其他方面 缺点:修改起来很麻烦
Jackson 方法设计过程
Jackson 方法的设计过程同结构化方法亦有类似之处
• 第一步是理解并确定用户提出的问题, 即把要处理的数据结构确定下来, 这相当于第三章讨论的需求分析阶段; • 第二步完成模块分解,这相当于概要设计阶段; 第三步确定每个模块的 主要操作,这相当于详细设计阶段 • 第三步是很关键的,在这一步可以检查前两步是否做得合理。如果在分 配操作时遇到了困难,例如一个操作无法分配,或者必须对结构作许多 修改才成,这往往是前两步做得不合适的迹象,此时必须再认真检查程 序的结构,并找出困难的原因
Jackson 方法概述
SA、SD和 SP方法前后衔接,用于需求分析和设计阶段,是面向数据流 的 。而Jackson 方法是一种面向数据结构的方法,这个方法适用于数据处 理类问题,特别是企事业管理的一类软件系统。
• Jackson方法的目标:获得简单清晰的设计方案,因为这样的方案易于理 解、易于修改。 • Jackson方法的设计原则:使程序结构同数据结构相对应。
优点:结构清晰、易于理解、易于修改。 缺点:只能描述执行过程而不能描述有关的数据
盒图(NS图)
NS图是用于取代传统流程图的一种描述方式
以 SP方法为基础, NS图仅含有5种基本成 分,它们分别表示SP方 法的几种标准控制结构
盒图(NS图)
在NS图中,每个“处理步骤”是用一个盒子表示的,所谓“处理步骤” 可以是语句或语句序列。
程序设计语言(PDL)
详细设计的结果也可以用语言来描述,程序设计语言就是一个典型的代 表,它是一种非形式的比较灵活的语言,它用于描述模块内部的具体算法, 以便在开发人员之间比较精确地进行交流。 PDL的特点: • 语法是开放式的,其外层语法是确定的,而内层语法则故意不确定 • 例如,在PDL 描述 if X is not negative then return(square root of X as a real number); else return(square root of -X as an imaginary number); 中,外层语法 IF—THEN —ELSE是确定的,内层操作“square root of X”是不确定的。 • PDL的总体结构同一般程序相同,它也包括注释部分、数据说明部分和 过程部分;其内层则可以是任意的英语语句。PDL仅仅是对算法的一种 描述,它是不可执行的