软件工程_详细设计_第1页
软件工程_详细设计_第2页
软件工程_详细设计_第3页
软件工程_详细设计_第4页
软件工程_详细设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程(Software Engineering)第五章第五章 详细设计详细设计详细设计前一页 详细设计详细设计(Procedural Design)的目标是的目标是确定,并具体地实现所要求的系统,从而确定,并具体地实现所要求的系统,从而在编码阶段可以把该实现的描述直接翻译在编码阶段可以把该实现的描述直接翻译成用某种程序设计语言书写的程序。成用某种程序设计语言书写的程序。 详细设计的目标不仅是在逻辑上能够详细设计的目标不仅是在逻辑上能够正确地实现每个模块的功能,还要求设计正确地实现每个模块的功能,还要求设计的处理过程应该尽可能简明易懂。的处理过程应该尽可能简明易懂。 本章主要内容本章主要内容

2、结构化程序设计结构化程序设计 详细设计的工具详细设计的工具 Jackson程序设计方法程序设计方法 Warnier程序设计方法程序设计方法 程序复杂程度的定量度量程序复杂程度的定量度量 前一页结构化程序设计前一页 1965年最早由年最早由E.W.Dijkstra提出:提出:“可以从可以从高级语言中取消高级语言中取消goto语句,程序的质量与程序中语句,程序的质量与程序中所包含的所包含的goto语句的数量成反比语句的数量成反比”。 1966年,年,Bohm和和Jacopini证明了,只用证明了,只用“顺序顺序”(Sequence)、“选择选择”(Condition Select)和和“循环循环”

3、(Repetition)三种基本的控制结构就三种基本的控制结构就能实现任何单入口单出口的程序。能实现任何单入口单出口的程序。 1972年,年,IBM公司的公司的Mills进一步提出,程进一步提出,程序应该只有一个入口和一个出口。序应该只有一个入口和一个出口。 前一页三种基本结构前一页结构化程序设计结构化程序设计 结构化程序设计技术采用自顶向下逐步求精的设计结构化程序设计技术采用自顶向下逐步求精的设计和单入口单出口的控制结构。其优点是:和单入口单出口的控制结构。其优点是: (1)自顶向下逐步求精的方法符合人类解决复杂问题)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,可以显著提高软件开发

4、工程的成功率和生产的普遍规律,可以显著提高软件开发工程的成功率和生产率。率。 (2)用先全局后局部,先整体后细节。先抽象后具体)用先全局后局部,先整体后细节。先抽象后具体的逐步求精过程开发的程序有清晰的层次结构,容易阅读的逐步求精过程开发的程序有清晰的层次结构,容易阅读和理解。和理解。 (3)不使用)不使用GOTO语句,仅使用单入口单出口的控制语句,仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致,结构,使得程序的静态结构和它的动态执行情况比较一致,程序容易阅读和理解,开发时容易保证程序的正确性。程序容易阅读和理解,开发时容易保证程序的正确性。 结构化程序设计结构化程

5、序设计前一页 (4)控制结构有确定的逻辑模式,编写程序代)控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,因此源程码只限于使用很少几种直截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。序清晰流畅,易读易懂而且容易测试。 (5)程序清晰和模块化使得在修改和重新设计)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量比较大。一个软件时可以重用的代码量比较大。 (6)程序的逻辑结构清晰,有利于程序正确性)程序的逻辑结构清晰,有利于程序正确性的分析和证明。的分析和证明。 结构化程序设计结构化程序设计前一页 结构化程序设计的缺点是:需要的结构化程序设计的缺点是

6、:需要的运行时间和存储容量都有一些增加(估运行时间和存储容量都有一些增加(估计增加计增加10%20%)。由于计算机硬件)。由于计算机硬件技术的飞速发展,上述缺点对系统已没技术的飞速发展,上述缺点对系统已没有什么影响。有什么影响。结构化程序设计结构化程序设计前一页经典的结构程序设计:只允许使用顺序、经典的结构程序设计:只允许使用顺序、IF-THEN-ELSE型分支和型分支和DO-WHIL型循环三种基型循环三种基本控制结构。本控制结构。扩展的结构程序设计:允许使用扩展的结构程序设计:允许使用DO-CASE型多型多分支结构和分支结构和DO-UNTIL型循环结构。型循环结构。修正的结构程序设计:允许使

7、用修正的结构程序设计:允许使用LEAVE(或(或BREAK)结构。)结构。 详细设计的工具详细设计的工具前一页 描述程序处理过程的工具称为描述程序处理过程的工具称为详细设计的工具,分为图形、表格详细设计的工具,分为图形、表格和语言三类。都要求能提供对设计和语言三类。都要求能提供对设计的无歧义(无二义性)的描述。的无歧义(无二义性)的描述。 前一页详细设计的工具详细设计的工具程序流程图程序流程图 盒图(盒图(N-S图)图) PAD图图判定表判定表判定树判定树 过程设计语言(过程设计语言(PDL) 模块开发文件夹模块开发文件夹 主要内容详详细细设设计计的的工工具具前一页程序流程图 程序流程图又称为

8、程序框图,是历史最悠久、程序流程图又称为程序框图,是历史最悠久、使用最广泛、也是用得最混乱的一种描述软件设计使用最广泛、也是用得最混乱的一种描述软件设计的方法。总的趋势是正在逐步被淘汰的方法。总的趋势是正在逐步被淘汰 。 (1)程序流程图在本质上并不是逐步求精的好)程序流程图在本质上并不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。而不去考虑程序的全局结构。 (2)程序流程图中用箭头代表控制流,因此程)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构化程序设计序员不受任何约束,可以完全不顾结

9、构化程序设计的原则,随意转移控制。的原则,随意转移控制。 (3)程序流程图不便于表示数据结构。)程序流程图不便于表示数据结构。 前一页程序流程图前一页详详细细设设计计的的工工具具盒图(N-S图) Nassi和和Shneiderman提出盒图提出盒图 (1)功能域(一个特定控制结构的作用)功能域(一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。域)明确,可以从盒图上一眼就看出来。 (2)不能够随意转移控制。)不能够随意转移控制。 (3)很容易确定局部和全局数据的作用)很容易确定局部和全局数据的作用域。域。 (4)很容易表现嵌套关系,也可以表示)很容易表现嵌套关系,也可以表示模块的层次结

10、构。模块的层次结构。 前一页盒图(N-S图)详详细细设设计计的的工工具具前一页PAD图 PAD是问题分析图(是问题分析图(Problem Analysis Diagram)的英文缩写,自)的英文缩写,自1973年由日本日立公司发明以后,已年由日本日立公司发明以后,已得到一定程度的推广。它用二维树结得到一定程度的推广。它用二维树结构的图来表示程序的控制流,将这种构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。图翻译成程序代码比较容易。 详详细细设设计计的的工工具具前一页PAD图优点优点: (1)使用表示结构化控制结构的)使用表示结构化控制结构的PAD符号所符号所设计出来的程序必然是结构

11、化程序。设计出来的程序必然是结构化程序。 (2)PAD图所描绘的程序结构十分清晰。图图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主干线,即第一层结构。中最左面的竖线是程序的主干线,即第一层结构。随着程序层次的增加,随着程序层次的增加,PAD图逐渐向右延伸,每图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。增加一个层次,图形向右扩展一条竖线。PAD图图中竖线的总条数就是程序的层次数。中竖线的总条数就是程序的层次数。 前一页详详细细设设计计的的工工具具PAD图 (3)用)用PAD图表现程序逻辑,易读、易懂、易图表现程序逻辑,易读、易懂、易记。记。PAD图是二维树形结构的图形,程序从图

12、中最图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点顺序执行,遍历所有结点 (4)容易将)容易将PAD图转换成高级语言源程序,这图转换成高级语言源程序,这种转换可用软件工具自动完成种转换可用软件工具自动完成 (5)PAD图的符号支持自顶向下,逐步求精方图的符号支持自顶向下,逐步求精方法的使用法的使用 。前一页PAD图基本符号前一页用PAD图逐步求精前一页判定表 当算法中包含多重嵌套的条件选择时,当算法中包含多重嵌套的条件选择时,用程序流图、盒图、用程序流图、盒图、PDL等都难以清楚地描等都难以清楚

13、地描述。而判定表和判定树都能清晰地表示复杂述。而判定表和判定树都能清晰地表示复杂的条件组合与操作之间的关系。一张判定表的条件组合与操作之间的关系。一张判定表由四部分组成:由四部分组成: 左上部:所有可能的条件左上部:所有可能的条件 右上部:各种条件的组合右上部:各种条件的组合 左下部:所有可能的操作左下部:所有可能的操作 右下部:每种组合的动作右下部:每种组合的动作详详细细设设计计的的工工具具前一页判定表例:某航空公司规定,乘客可以免费托运不例:某航空公司规定,乘客可以免费托运不超过超过3 30公斤的行李。对超重部分:公斤的行李。对超重部分:头等仓国内乘客头等仓国内乘客4元元/公斤;其他仓国内

14、公斤;其他仓国内乘客乘客6元元/公斤;外国乘客比国内乘客多公斤;外国乘客比国内乘客多收一倍;残疾乘客比正常乘客少收一收一倍;残疾乘客比正常乘客少收一半。半。详详细细设设计计的的工工具具前一页123456789国内乘客TTTTFFFF头等仓TFTFTFTF残疾乘客FFTTFFTT行李W 30TFFFFFFFF免费 (W-30) 2 (W-30) 3 (W-30) 4 (W-30) 6 (W-30) 8 (W-30) 12 用判定表计算行李费前一页判定树 判定树与判定表类似,同样能够清晰地判定树与判定表类似,同样能够清晰地表示复杂的条件组合与操作之间的关系,但表示复杂的条件组合与操作之间的关系,但

15、它的表达形式比判定表更直观清晰。它的表达形式比判定表更直观清晰。详详细细设设计计的的工工具具前一页用判定树计算行李费详详细细设设计计的的工工具具前一页过程设计语言(PDL) PDL也称为伪码,这是一个笼统的名也称为伪码,这是一个笼统的名称,类似于高级语言,现在有许多种不同的称,类似于高级语言,现在有许多种不同的过程设计语言在使用。它是用正文形式数据过程设计语言在使用。它是用正文形式数据和处理过程的设计工具。和处理过程的设计工具。 详详细细设设计计的的工工具具前一页模块开发文件夹 每个开发文件夹中包含一个(或多个)模每个开发文件夹中包含一个(或多个)模块的全部文档,文件夹的封皮上列出工程项目块的

16、全部文档,文件夹的封皮上列出工程项目的名称、模块名字、程序员姓名、完成的日期、的名称、模块名字、程序员姓名、完成的日期、修改的日期、源程序行数、目标代码长度、对修改的日期、源程序行数、目标代码长度、对模块的简要描述、以及设计、编码、单元测试模块的简要描述、以及设计、编码、单元测试和集成测试等阶段的起止时间(预计的时间和和集成测试等阶段的起止时间(预计的时间和实际时间)等等实际时间)等等。 JACKSONJACKSON程序设计方法程序设计方法Jackson图图改进的改进的Jackson图图 Jackson方法方法前一页主要内容JACKSON程程序序设设计计方方法法前一页JACKSON图 虽然程序

17、中实际使用的数据虽然程序中实际使用的数据结构种类繁多,但是数据元素彼结构种类繁多,但是数据元素彼此间的逻辑关系只有顺序、选择此间的逻辑关系只有顺序、选择和重复三类,因此,逻辑数据结和重复三类,因此,逻辑数据结构也只有这三类。构也只有这三类。 前一页JACKSON图1.顺序结构顺序结构 顺序结构的数据由一个或多个数据元素组成,顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。每个元素按确定次序出现一次。2.选择结构选择结构 选择结构的数据包含两个或多个数据元素,每选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选次使用这个数据时按一定条件从这些

18、数据元素中选择一个。择一个。3.重复结构重复结构 重复结构的数据,根据使用时的条件由一个数重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。据元素出现零次或多次构成。 JACKSON程程序序设设计计方方法法JACKSON图前一页JACKSON图 Jackson图的优点:便于表示层图的优点:便于表示层次结构次结构,而且是对结构进行自顶向下分而且是对结构进行自顶向下分解的有力工具;形象直观可读性好;解的有力工具;形象直观可读性好;既能表示数据结构也能表示程序结构既能表示数据结构也能表示程序结构(因为结构程序设计也只是使用上述(因为结构程序设计也只是使用上述三种基本结构)。三种基本结

19、构)。 JACKSON程程序序设设计计方方法法前一页改进的JACKSON图前一页JACKSON方法Jackson结构程序设计方法基本上由下述五结构程序设计方法基本上由下述五个步骤组成个步骤组成 :1、分析并确定输入数据和输出数据的分析并确定输入数据和输出数据的 逻辑结构,并用逻辑结构,并用Jackson图描绘这图描绘这些数据结构。些数据结构。 JACKSON程程序序设设计计方方法法前一页2、找出输入数据结构和输出数据结构结找出输入数据结构和输出数据结构结构中有相对应关系的数据单元。对应构中有相对应关系的数据单元。对应关系是指有直接的因果关系,在程序关系是指有直接的因果关系,在程序中可以同时处理

20、的数据单元。中可以同时处理的数据单元。 JACKSON方法JACKSON程程序序设设计计方方法法前一页3、用下述三条规则从描绘数据结构、用下述三条规则从描绘数据结构 为每对有对应关系的数据单元,按照它们在数为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画据结构图中的层次在程序结构图的相应层次画一个处理框。一个处理框。 根据输入数据结构中剩余的每个数据单元所处根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们的层次,在程序结构图的相应层次分别为它们画上对应的处理框。画上对应的处理框。 根据输出数据结构中剩余的每个数据单元所处根据输出数

21、据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们的层次,在程序结构图的相应层次分别为它们画上对应的处理框。画上对应的处理框。 JACKSON程程序序设设计计方方法法JACKSON方法前一页4、列出所有操作和条件(包括分支和列出所有操作和条件(包括分支和循环结束条件)并且把它们分配到循环结束条件)并且把它们分配到程序结构图的适当位置程序结构图的适当位置 。JACKSON程程序序设设计计方方法法5、用伪码表示程序。、用伪码表示程序。 JACKSON方法三种伪码WARNIERWARNIER方法方法前一页 由法国人由法国人J.D.Warnier提出的另一种面向数提出的另一种面向数

22、据结构的设计方法,逻辑构造程序的方法(简称据结构的设计方法,逻辑构造程序的方法(简称LCP方法)。方法)。 Warnier方法的原理和方法的原理和Jackson方法类似,也方法类似,也是从数据结构出发设计程序,但是这种方法的逻是从数据结构出发设计程序,但是这种方法的逻辑更严格。北京大学计算机研究所使用辑更严格。北京大学计算机研究所使用Warnier方法开发汉字激光照排软件,取得了较好效果。方法开发汉字激光照排软件,取得了较好效果。 WARNIERWARNIER方法方法Warnier方法方法 Warnier方法的辅助技术方法的辅助技术 主要内容前一页WARNIER方方法法前一页WARNIERWA

23、RNIER方法方法 Warnier程序设计方法的最终目标同样是程序设计方法的最终目标同样是得出对程序处理过程的详细描述。由下述五个得出对程序处理过程的详细描述。由下述五个步骤组成步骤组成: 第一步,分析和确定输入数据和输出数据的第一步,分析和确定输入数据和输出数据的逻辑结构,并用逻辑结构,并用Warnier图描绘这些数据结构。图描绘这些数据结构。 第二步,主要依据输入数据结构导出程序结第二步,主要依据输入数据结构导出程序结构,并用构,并用Warnier图描绘程序的处理层次。图描绘程序的处理层次。 第三步,画出程序流程图并自上而下依次给第三步,画出程序流程图并自上而下依次给每个处理框编序号。每个

24、处理框编序号。前一页 第四步,分类写出伪码指令,第四步,分类写出伪码指令,Warnier定义了下列五类指令:输入和输出准备、分定义了下列五类指令:输入和输出准备、分支和分支准备、计算、输出和输出准备、子支和分支准备、计算、输出和输出准备、子程序调用。程序调用。 第五步,把前一步中分类写出的指令按第五步,把前一步中分类写出的指令按序号排序,从而得出描述处理过程的伪码。序号排序,从而得出描述处理过程的伪码。 WARNIER方方法法WARNIERWARNIER方法方法程序复杂程度的定量度量程序复杂程度的定量度量前一页 定量度量程序复杂程度的方法很有价值:把定量度量程序复杂程度的方法很有价值:把程序的

25、复杂程度乘以适当常数即可估算出软件中程序的复杂程度乘以适当常数即可估算出软件中故障的数量以及软件开发需要用的工作量;定量故障的数量以及软件开发需要用的工作量;定量度量的结果可以用来比较两个不同的设计或两个度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作不同算法的优劣;程序的定量的复杂程度可以作为模块化的精确限度。为模块化的精确限度。本章内容结束前一页回首页本章小结 详细设计阶段的关键任务是,确定具体实现所要求详细设计阶段的关键任务是,确定具体实现所要求的目标系统。除了保证程序完成系统的功能和性能指标的目标系统。除了保证程序完成系统的功能和性能指标之外,还程序

26、的容易读、容易测试、容易维护和修改等之外,还程序的容易读、容易测试、容易维护和修改等也是详细设计的重要目标。也是详细设计的重要目标。 理论研究和实践表明,采用自顶向下逐步求精和设理论研究和实践表明,采用自顶向下逐步求精和设计单入口和单出口的控制结构是完全可行的,具有重要计单入口和单出口的控制结构是完全可行的,具有重要的优点。结构化程序设计技术是实现该目标的重要保证。的优点。结构化程序设计技术是实现该目标的重要保证。是进行详细设计的逻辑基础。是进行详细设计的逻辑基础。 程序流程图、盒图、程序流程图、盒图、PAD图、图、HIPO图、判定表、图、判定表、判定树和判定树和PDL语言等都是完成详细设计的

27、工具,选择合语言等都是完成详细设计的工具,选择合适的工具并且正确地使用它们是十分重要的。适的工具并且正确地使用它们是十分重要的。前一页本章习题一、名词解释一、名词解释1.1.结构化程序设计结构化程序设计2.2.流程图流程图3.3.盒图盒图5. PAD图图7. Jackson方法方法8. Warnier方法方法本章习题二、回答问题二、回答问题1.1.什么是结构化程序设计,它在软件发展史上什么是结构化程序设计,它在软件发展史上有什么重要地位?有什么重要地位?2.2.Jackson方法是以控制为中心还是以数据为中方法是以控制为中心还是以数据为中心,为什么心,为什么?3.3.控制结构有哪几种?控制结构有哪几种?4.4.为什么说设计单入口和单出口的模块是完全为什么说设计单入口和单出口的模块是完全可能的?可能的?本章习题三、综合三、综合1.1.在总体设计的基础上,作出教务管理系统在总体设计的基础上,作出教务管理系统的两个模块的详细设计。的两个模块的详细设计。2.2.假设只有假设只有 SEQUENCE SEQUENCE 和和 DO WHILE DO WHILE 两种控两种控制结构,如何用来完成制结构,如何用来完成 IF THEN ELSE IF THEN ELSE 操操作。作。本章习题3.3.画出下列伪码程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论