第8章结构化详细设计
软件工程导论课件第8章

5. 数据重构 对数据体系结构差的程序很难进行适应性和 完善性维护,因此,数据体系结构比源代码对程序 的长期生存力有更大影响。 数据重构是一种全范围的再工程活动。由于 数据重构对程序体系结构及程序中的算法有很大影 响,对数据的修改必然会导致程序体系结构或代码 层的改变。
3
2.适应性维护 为适应变化了的环境界面而修改软件的活动, 称为适应性维护。包括: (1)因硬件或支撑软件改变引起的变化; (2)将软件移植到新的机种上运行; (3)因数据环境的变化而做的变更。 这类维护大约占软件维护总工作量的25%。
4
3.完善性维护 为了满足用户要求,就得对软件进行修改和 扩充,我们称这种维护为完善性维护。完善性维护 主要包括: (1)提高处理效率; (2)提高性能。 在整个维护工作中, 完善性维护大约占50% 左右,区居第一位。
3. 逆向工程 软件的逆向工程是,分析程序以便在比源代码 更高的抽象层次上创建出程序的某种描述的过程, 也就是说,逆向工程是一个恢复设计结果的过程。 4. 代码重构 某些老程序的体系结构比较合理,但是,一些 模块的编码方式却是难于理解、测试和维护的。在 这种情况下,可以重构这些模块的代码。 通常,代码重构并不修改程序的体系结构,它 只关注个体模块的设计细节以及在模块中定义的局 部数据结构。如果重构扩展到模块边界以外并涉及 软件体系结构,则重构变成了正向工程。
13
(四)软件维护过程 维护过程的实质是对软件定义和开发过程的修 改和压缩。维护过程的主要任务是:建立维护机构, 填写维护报告和评价,为每个维护要求规定一种规 范化的处理序列,建立对维护活动的登记制度及规 定评价复审的标准。 1.维护组织 机构中有一名维护管理员总负责,每项维护要 求都通过维护管理员转交给相应的系统管理员去评 价。系统管理员对维护任务做出评价之后,由变化 授权人决定应该进行的活动,最后由系统管理员去 执行维护任务。
详细设计

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
简述结构化程序设计方法的基本要点

结构化程序设计方法的基本要点简介结构化程序设计方法是一种用于构建大型程序的系统性方法。
它通过将程序分解为一系列小的、可管理的模块,以及规定了模块之间的交互方式,从而降低程序的复杂性,提高程序的可维护性和可读性。
本文将从以下几个方面详细介绍结构化程序设计方法的基本要点。
1. 模块化模块化是结构化程序设计方法的核心思想之一。
模块化将程序分解为多个功能相对独立的模块,每个模块负责完成一个特定的任务。
模块化有助于提高程序的可读性,可维护性和可重用性。
1.1 模块划分在进行模块划分时,可以按照功能划分原则,将程序划分为几个不同的功能模块,每个模块负责完成一个特定的功能。
也可以按照数据划分原则,将程序划分为几个处理不同数据的模块。
模块应该具有清晰的职责和界限,不同模块之间的功能和数据交互应该通过接口进行。
1.2 接口设计模块之间的接口设计是模块化的关键。
接口应该明确定义模块之间的输入和输出,以及数据的传递方式。
良好的接口设计可以降低模块之间的耦合度,提高代码的可复用性,使得模块可以独立开发和测试。
1.3 函数与过程模块可以通过函数或过程来实现。
函数是一段可重用的代码,用于执行特定的计算或操作,并返回一个结果。
过程是一段可重用的代码,用于执行一系列操作,不返回结果。
函数和过程有助于将程序划分为更小的单元,提高程序的可读性和可维护性。
2. 控制结构控制结构是结构化程序设计方法的另一个重要要点。
控制结构用于控制程序的执行流程,改变程序的执行顺序或执行条件。
2.1 顺序结构顺序结构是程序从上到下按照顺序执行的控制结构。
顺序结构是程序的基础,所有的程序都是从顺序结构开始进行。
2.2 选择结构选择结构用于根据条件选择执行不同的代码块。
常见的选择结构包括if语句和switch语句。
if语句用于判断一个条件是否成立,如果条件成立,则执行其中的代码块;否则执行其他代码块。
switch语句可以根据一个表达式的值选择执行不同的代码块。
结构化方法PPT课件

第8章 结构化方法
8.3.2画数据流图
为了表达较为复杂问题的数据处理过程, 用一张数据流图 是不够的。 要按照问题的层次结构进行逐步分解, 并以一套 分层的数据流图反映这种结构关系。
1.
画系统的输入输出即先画顶层数据流图。顶层流图只包含 一个加工,用以标识被开发的系统,然后考虑该系统有哪些输 入数据,这些输入数据从哪里来;有哪些输出数据,输出到哪 里去。这样就定义了系统的输入、输出数据流。顶层图的作用 在于表明被开发系统的范围以及它和周围环境的数据交换关系, 顶层图只有一张。图8.3为飞机机票预订系统的顶层图。
图8.2是一个飞机机票预订系统的数据流图,其功能为旅行 社把预订机票的旅客信息(姓名、年龄、单位、身份证号码、 旅行时间及目的地等)输入机票预订系统。系统为旅客安排航 班,打印出取票通知单(付有应交的账款)。
旅客在飞机起飞的前一天凭取票通知等交款取票, 系统 检验无误,输出机票给旅客。
第8章 结构化方法
第8章 结构化方法
订 票 单 旅 行 社
机 票 飞 机 机 票 预 订 系 统
取 票 通 知 单
取 票 单
旅 客
图 8.3 飞机机票预订系统顶层图
第8章 结构化方法
2.
画系统内部即画下层数据流图。一般将层号从0开始编号, 采用自顶向下,由外向内的原则。画0层数据流图时,一般根 据当前系统工作分组情况,并按新系统应有的外部功能,分解 顶层流图的系统为若干子系统,决定每个子系统间的数据接口 和活动关系。如机票预订系统按功能可分成两部分,一部分为 旅行社预订机票,另一部分为旅客取票,两部分通过机票文件 的数据存储联系起来,0层数据流图如图8.4。画更下层数据流 图时, 则分解上层图中的加工,一般沿着输入流的方向,凡数 据流的组成或值发生变化的地方则设置一个加工,这样一直进 行到输出数据流(也可从输出流到输入流方向画)。
结构化详细设计

【六年级】精彩的秋游天气渐渐转凉,金黄的落叶纷纷飘落,这是一个适合秋游的季节。
我们班决定去郊外旅行,感受大自然的美丽,享受秋天的清新。
早晨,我们准时在学校门口集合。
同学们都精神饱满,兴致勃勃地等待着出发。
老师带着我们走进了一辆大巴车,车里热闹非凡,一片欢声笑语。
汽车行驶在一条弯弯曲曲的山路上,两侧是一片片苍翠的林木,树叶在秋风中翩翩起舞,给人一种宁静与宜人的感觉。
不一会儿,大巴车终于停了下来。
我们下车后,来到了一个宽阔的空地上。
周围是高耸入云的山峰,山峰上的树木已被秋风吹得只余几片叶子。
山上有跑步道,有篮球场,还有一个小湖。
尤其是湖里的水波粼粼,美得让人难以言表。
大家迫不及待地开始了各自喜欢的活动。
有的同学选择了打篮球,他们组成了两队,你追我赶,在球场上团团转。
有的同学选择了钓鱼,他们找来鲜艳的鱼饵,在湖边竖起了钓竿,眼巴巴地盼望着鱼儿上钩。
还有的同学选择了跑步,他们在山间悠然奔跑,风吹过他们的脸庞,使他们的脸上洋溢着灿烂的笑容。
我则想来一次亲近大自然的旅行,于是我选择了欣赏美丽的自然景观。
我沿着蜿蜒的小路向前走去,小路两旁的花草树木丰茂,仔细一看,有红色的苹果、橙色的柑橘、绿油油的蔬菜等等。
我还看见了一只可爱的小松鼠,它灵活地跑上树枝,向我张望了一会儿,然后迅速地消失在了树林中。
时间过得飞快,转眼间已是中午。
我们在山上找了一个宽敞的区域,摆开了野餐桌椅,开始享受美食。
同学们吃得津津有味,笑声不断。
午餐后,我们开始了下午的活动。
老师组织了一个寻宝游戏,每个小组都拿到了一张宝藏地图,我们要根据地图上的线索找到宝藏的所在地。
我们跑遍了整个山林,发现了隐藏在各处的线索,大家卯足了劲,寻宝的热情高涨。
最终,我们的小组终于找到了宝藏,宝藏里有很多好吃的零食和小礼物。
我们欢呼雀跃,激动不已。
临近傍晚时分,我们赶回大巴车上,开始了回家的旅程。
车里充满了欢声笑语,大家在车上分享着这个美好的秋游经历。
渐渐地天色暗了下来,我们回到了学校。
第8章 数据库系统的概要设计

2.数据库概念结构设计的方法 概念模型是数据模型的前身,它比数据模型更独立于机器、更 抽象,也更加稳定。概念设计的方法有以下4种: (1)自顶向下的设计方法。 该方法首先定义全局概念结构的框架,然后逐步细化为完整的全 局概念结构。 (2)自底向上的设计方法。 即首先定义各局部应用的概念结构,然后将它们集成起来,得到 全局概念结构的设计方法。 (3)逐步扩张的设计方法。 此方法首先定义最重要的核心概念结构,然后向外扩充,生成其 他概念结构,直至完成总体概念结构。 (4)自顶向下与自底向上相结合的方法。 最常采用的策略是自底向上的方法,即自顶向下地进行需求分析, 然后再自底向上地设计概念结构,其方法如图8-1所示。其中,概 念模式对应于概念模型。
8.1.2 数据库系统的概要设计
对于基于结构化的数据库系统开发方法而言,数据库系统在完成 需求分析之后应进入数据库系统的概要设计阶段,此阶段不仅需要 进行数据库概念结构设计(也可简称数据库概念设计)工作,即数 据库结构特性设计;而且还需要确定数据库系统的软件系统结构, 进行模块划分,确定每个模块的功能、接口以及模块间的调用关系, 即进行数据库行为特性的设计过程。 数据库概念结构设计是将系统需求分析得到的用户需求抽象为 信息结构过程。只有将系统应用需求抽象为信息世界的结构,也就 是概念结构后,才能转化为机器世界中的数据模型,并用DBMS实现 这些需求。
成 批 成 绩 单 录 入
打 印 班 级 成 绩
打 印 成 绩 统 计 表
图8-19 成绩管理系统层次图
8.4.2
IPO图
IPO图(input process output图)输入—处理—输出图是在层 次结构图的基础上推出的一种描述系统结构和模块内部处理功能 的工具。在总体设计、详细设计、设计、评审、测试和维护的不 同阶段,都可以使用IPO图对设计进行描述。如下图所示的IPO图 :
建设工程信息管理(第8章)

建设工程信息管理 6-30
8.4 管理信息系统运行及维护
8.4.1 系统维护的定义
1.改正性维护——诊断和改正软件错误的过程。 2.适应性维护——为适应软硬件等新的变化进行修 改。 3.完善性维护——为了满足用户提出增加新功能, 修改已有的功能以及一般的改进要求和建议进行 的工作。这类维护占软件维护工作的大部分。 4.预防性维护——为进一步改进系统的可维护性和 可靠性等进行的修改,在系统维护中这类维护相 对来说是很少的。 建设工程信息管理 6-31
建设工程信息管理 6-8
8.1 硬软件系统的建立
8.1.2 软件系统的建立
1.程序设计及数据库系统集成编程工具 集成编程工具: Visual Basic Visual C++ PowerBuilder Delphi
建设工程信息管理 6-9
8.1 硬软件系统的建立
8.1.2 软件系统的建立
1.程序设计及数据库系统集成编程工具 关系型数据库软件:
试点 过渡法
建设工程信息管理
8.4 管理信息系统运行及维护
一个系统运行的质量高低和系统维护有很大关 系,在许多情况下,维护比开发更为困难,需要更多的 创造性工作,这是因为: (1)维护人员必须用较多时间理解别人编写的程序和 文挡,并且对系统的修改不能影响程序的正确性和完 整。 (2)整个维护工作必须在所规定的很短时间内完成。
8.2.2 测试的过程 3.系统测试
(1)总调——可采用一些精心设计的数据量较少的测试 用例,这样可以使处理的工作量减少,而且也更容易发 现错误和确定错误所在范围。 (2)安全测试——是指测试系统对外来有意或恶意攻击 的自我保护能力。 (3)恢复测试——是指系统出现意外故障时,能否正确 和迅速恢复的测试。 (4)系统有效性测试——通过测试来证实系统功能与用 户要求一致。 建设工程信息管理 6-22
详细设计的方法与表达工具

详细设计的方法与表达工具详细设计是软件开发中至关重要的一步,它是软件架构和程序设计的实现方法,是软件的实际编写工作的基础。
详细设计的过程需要软件工程师对软件架构和程序设计进行细化,具体到每个功能模块、每个数据结构、每个算法和每个界面的设计,从而确保程序实现的正确性和高效性。
在本文中,我们将详细介绍详细设计的方法和表达工具,包括设计方法的优化、常用的表达工具以及注意事项等内容。
设计方法的优化在进行详细设计之前,设计师需要根据系统的需求和功能,制定相应的设计方法。
本节将介绍一些常见的设计方法,并分析它们的优点和缺点,以供设计师在实际工作中参考。
1. 结构化设计结构化设计是一种基于模块化思想的设计方法。
在结构化设计中,软件系统被分成模块,并且模块之间的接口和数据传递都非常清晰。
结构化设计方法的主要优点是可以支持模块的独立性和可重用性,并且可以提高程序的可读性和可维护性。
然而,结构化设计也可能导致系统过于复杂,降低了性能和效率。
2. 面向对象设计面向对象设计是一种基于对象的设计方法。
在面向对象设计中,系统被视为由对象组成的集合,对象通过消息传递进行通信。
面向对象设计方法的主要优点是可以提高软件的可重用性、可读性和可维护性,并且可以提高程序的性能和效率。
然而,面向对象设计的缺点是过于灵活,需要特定的设计方法和工具才能有效实现。
3. 数据驱动设计数据驱动设计是一种基于数据驱动的设计方法。
在数据驱动设计中,系统的设计是基于数据的结构和数据处理流程的,而不是基于功能。
数据驱动设计方法的主要优点是可以支持复杂的数据关系和数据处理流程,并且可以提高程序的性能和效率。
然而,数据驱动设计需要特定的数据结构和数据处理算法,可能导致系统的复杂性和可读性降低。
常用的表达工具在进行详细设计的过程中,设计师需要使用一些表达工具来记录设计的过程,以便其他设计师或开发者能够理解设计的目的和实现方式。
下面我们将介绍一些常见的表达工具,包括UML、编程语言、伪代码和流程图等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
容易将图转换成高级语言源程序,这种转换可用软件工具自动完 成,从而可省去人工编码的工作,有利于提高软件可靠性和软件 生产率。
既可用于表示程序逻辑,又可用于描绘数据结构。
结构化详细设计的结构
三种基本结构 顺序结构 选择结构 循环结构
A
exp
B
A
B
a.顺序
b.if-then-else 选择
T
或
A
exp
F
c.do-while 循环
F
T A
结构化程序设计优点
自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此 可以显著提高软件开发工程的成功率和生产率。
结构化详细设计也称为结构化程序设计。 结构化程序设计的理念是在20世纪60年代,由
等人提出并加以完善的。 结构化的程序一般只需要用三种基本的逻辑结
构就能实现。这三种基本逻辑结构是顺序结构、 选择结构和循环结构。 结构化程序设计是一种设计程序的技术,它采 用自顶向下逐步求精的设计方法和单入口单出 口的控制结构。
盒图符号
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 循环
图
是问题分析图( )的英文缩写,自1973年由 日本日立公司发明。
它是由程序流程图演化而来,用二维树形结构 的图来表示程序的控制流,将这种图翻译成程 序代码比较容易。
图举例
P1
P2 P3
C P4
P5
P6
until C2
P7
C1
def
P2
P8
until C3
P9
P1 0
a.初始的 PAD 图
b.使用 def 符号细化处理框 P2 后的 PAD 图
图
( ,层次加输入-处理-输出)图是根据公司研制 的软件设计与文件编制技术发展而来的。
图采用功能框图和来描述程序逻辑,它由两部 分组成:
可视目录表给出程序的层次关系 体系框图:又称层次图(H图),是可视目录表
语言工具:用类语言来表示过程的细节,这种 类语言很接近于编程语言。
程序流程图
程序流程图又称为程序框图,于1946年首先采用。 它的主要优点是对控制流程的描绘很直观,便于初学者
掌握。 程序流程图的主要缺点: 程序流程图本质上不是逐步求精的好工具,它诱使程序
员过早地考虑程序的控制流程,而不去考虑程序的全局 结构; 程序流程图中用箭头代表控制流,因此程序员不受任何 约束,可以完全不顾结构程序设计的精神,随意转移控 制; 程序流程图不易表示数据结构。
图的基本原理:采用自顶向下、逐步细化和结 构化设计的原则,力求将模糊的问题解的概念 逐步转换为确定的和详尽的过程,使之最终可 采用计算机直接进行处理。
图符号
P1 P2 a.顺序
While c
P1 C
P2
P1 L1
L2
P2
X=
b.if-then-else 选择
Ln Pn
c.case 多分支选择
P
until c
程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代 码量最大。
程序的逻辑结构清晰,有利于程序正确性证明。
8.3结构化详细设计工具
图形工具:把过程的细节表示成一个图的组成 部分,在这个图上,逻辑构造用具体的图形来 表示。
列表工具:用一个表来表示过程的细节,这个 表列出了各种操作及其相应的条件。也即,描 述了输入、处理和输出信息。
一般使用结构化程序设计工具来描述
详细设计的基本任务
为每个模块进行详细的算法设计 为模块内的数据结构进行设计 为数据结构进行物理设计,即确定数据库的物理结构 其他设计:根据软件系统的类型,还可能要进行以下设计: 代码设计 输入/输出格式设计 人机对话设计 编写详细设计文档 评审
8.2结构化详细设计
程序流程图符号
(a)预处理 (b)选择
(c)多分支 (d)循环上界 (e)循环下界
(f)开始/结束 (g)准备 (h)注释 (i)虚线 (j)省略 (k)并行方式 (l)控制流
盒图
盒图是由和提出的,所以又称为图。 每个处理步骤都用一个盒子来表示,这些处理步骤可以是语句或语句
序列,在需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有 限制。 盒图具有下述特点: 功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼 就看出来。 由于只能从上边进入盒子然后从下面走出盒子,除此之外没有其它的 入口和出口,所以盒图限制了任意的控制转移,保证程序有良好的结 构。 很容易确定局部和全程数据的作用域。 很容易表现嵌套关系,也可以表示模块的层次结构。 盒图很容易表示程序结构化的层次结构,确定局部和全局数据的作用 域。由于没有箭头,因此不允许随意转移控制。
第8章 结构化详细设计
结构化详细设计的结构和特点 结构化详细设计工具 人机交互界面设计 数据库设计 编码实现
8.1详细设计
详细设计就是在概要设计的基础上决定如何具 体实现各模块的内部细节,直到对系统中的每 个模块给出足够详细的过程描述。
在编码实现阶段就可以完全按照详细设计的细 节过程来映射到代码,最终实现整个系统。
用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开 发出的程序有清晰的层次结构,因此容易阅读和理解。
仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态 执行情况比较一致。因此,程序容易阅读和理解,开发时也比较容 易保证程序的正确性,即使出现错误也比较容易诊断和改正。
控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直 截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。
P
d.do-while 型循环
e.repeat-until 型循环
图的主要优点
使用表示结构化控制结构的符号设计出来的程序必然是结构化程 序。
图所描绘的程序结构十分清晰。图中最左边的竖线是程序的主线, 即第一层结构。随着程序层次的增加,图逐渐向右延伸,每增加 一个层次,图形向右扩展一条竖线。图中竖线的总条数就是程序 的层次数。