第5章软件工程_第1页
第5章软件工程_第2页
第5章软件工程_第3页
第5章软件工程_第4页
第5章软件工程_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章 详细设计软件工程信息技术学部陈曦第5章 详细设计 5.1 详细设计概述详细设计概述 5.2 结构化程序设计结构化程序设计 5.3 详细设计工具详细设计工具 5.4 Jackson程序设计方法程序设计方法第第 5 章章 详详 细细 设设 计计第5章 详细设计5.1详细设计概述详细设计概述详细设计的基本任务详细设计的基本任务 1. 算法设计算法设计 用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。 2. 数据结构设计数据结构设计 对于需求分析、 概要设计确定的概念性的数据类型进行确切的定义。 3. 物理设计物理设计对数据库进行物理设计, 即确定数据库的物理结构。 物理结构

2、主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。第5章 详细设计 4. 其他设计其他设计 根据软件系统的类型, 还可能要进行以下设计: (1) 代码设计:为了提高数据的输入、分类、存储及检索等操作的效率,以及节约内存空间,对数据库中的某些数据项的值要进行代码设计。(2) 输入/输出格式设计。 (3) 人机对话设计: 对于一个实时系统, 用户与计算机频繁对话,因此要进行对话方式、内容及格式的具体设计。 第5章 详细设计 5. 编写详细设计说明书编写详细设计说明书 详细设计说明书有下列的主要内容:(1) 引言: 包括编写目的、 背景、 定义、 参考资料。(2

3、) 程序系统的组织结构。 (3) 程序1(标识符)设计说明: 包括功能、 性能、 输入、 输出、算法、流程逻辑、接口。 (4) 程序2(标识符)设计说明。 (5) 程序N(标识符)设计说明。 6. 评审评审对处理过程的算法和数据库的物理结构都要评审。第5章 详细设计5.1结构化程序设计结构化程序设计 处理过程设计中采用的典型方法是结构化程序设计(SP)方法,最早是由E.W.Dijkstra在 20 世纪 60 年代中期提出的。详细设计并不是具体地编程序,而是已经细化成很容易从中产生程序的图纸。因此详细设计的结果基本决定了最终程序的质量。详细设计的目标不仅是逻辑上正确地实现每个模块的功能,还应使

4、设计出的处理过程清晰易读。结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于理解、易于验证的程序。结构化程序设计方法有以下几个基本要点。第5章 详细设计1. 采用自顶向下、采用自顶向下、 逐步求精的程序设计方法逐步求精的程序设计方法 在需求分析、概要设计中,都采用了自顶向下、逐层细化的方法。 使用“抽象”这个手段,上层对问题抽象、对模块抽象和对数据抽象,下层则进一步分解,进入另一个抽象层次。 在详细设计中,虽然处于“具体”设计阶段,但在设计某个模块内部处理过程中,仍可以逐步求精,降低处理细节的复杂度。 2. 使用三种基本控制结构构造程序使用三种基本控制结构构造程序 任

5、何程序都可由顺序、选择及重复三种基本控制结构构造。 这三种基本结构的共同点是单入口、单出口。它不但能有效地限制使用GOTO语句, 还创立了一种新的程序设计思想、方法和风格,同时为自顶向下、逐步求精的设计方法提供了具体的实施手段。第5章 详细设计 如对一个模块处理过程细化时,开始是模糊的,可以用下面三种方式以模糊过程进行分解:(1)用顺序方式对过程分解, 确定各部分的执行顺序。(2) 用选择方式对过程分解, 确定某个部分的执行条件。(3) 用循环方式对过程分解, 确定某个部分进行重复的开始和结束的条件。 对处理过程仍然模糊的部分反复使用以上分解方法, 最终可将所有细节确定下来。第5章 详细设计3

6、. 主程序员的组织形式主程序员的组织形式 主程序员的组织形式指开发程序的人员应采用以一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据, 文档资料管理等)三人为核心,再加上一些专家(如通信专家、 数据库专家)、 其他技术人员组成小组。 这种组织形式突出了主程序员的领导,设计责任集中在少数人身上,有利于提高软件质量,并且能有效地提高软件生产率。这种组织形式最先由IBM公司实施,随后其他软件公司也纷纷采用主程序员制的工作方式。 因此, 结构化程序设计方法是综合应用这些手段来构造高质量程序的思想方法。第5章 详细设计5.1详细设计

7、工具详细设计工具5.3.1程序流程图程序流程图 程序流程图又称为程序框图,它是历史最悠久、使用最广泛的一种描述程序逻辑结构的工具,图 5.1 为流程图的三种基本控制结构。 流程图的优点是直观清晰、易于使用, 是开发者普遍采用的工具,但是它有如下严重缺点: (1) 可以随心所欲地画控制流程线的流向, 容易造成非结构化的程序结构,编码时势必不加限制地使用GOTO语句, 导致基本控制块多入口多出口,这样会使软件质量受到影响与软件设计的原则相违背。 第5章 详细设计图 5.1 三种基本控制结构的流程图AB顺序选择B多分支选择“当型”循环“直到型”循环其中 或 为:非转移语句(可以是空)三种基本结构之一

8、C为判定条件第5章 详细设计 (2) 流程图不能反映逐步求精的过程, 往往反映的是最后的结果。 (3) 不易表示数据结构。 为了克服流程图的缺陷,要求流程图都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况, 这样的流程图是结构化的流程图。 第5章 详细设计5.3.2 N-S图(盒状图)图(盒状图)盒图的符号第5章 详细设计将此程序图改为图。第5章 详细设计第5章 详细设计请把流程图改为盒图第5章 详细设计5.3.3 PAD图图 图PAD图指问题分析图(Problem Analysis Diagram),是日本日立公司于1979年提出的一种算法描述工具, 它是一种由左往右展开的

9、二维树型结构。 PAD图的基本控制结构如图 5.2 所示。 PAD图的控制流程为自上而下、从左到右地执行。图 5.3 给出了将数组A(1)到A(10)进行选择法排序的算法描述的PAD图。第5章 详细设计图 5.2 PAD的基本控制结构B条件BBM顺序选择多分支选择WHILE条件AUNTIL条件AAS1S2S3def“当型”循环“直到型”循环定义A(对A细化)CASE值1值2值n第5章 详细设计图 5.3 PAD图的示例ji1maxA(i)开始输入A(1)到A(10)的值置初值:n10sort输入A(1)到A(10)的值结束sortdefi1WHILE in1WHILE jnA(i)maxii1

10、jj1maxA(j)BmaxmaxA(j)A(j)B第5章 详细设计从图 5.3 给出的例子可以看出PAD图的优点如下: (1) 清晰地反映了程序的层次结构。图中的竖线为程序的层次线,最左边竖线是程序的主线, 其后一层一层展开,层次关系一目了然。 (3) 易读易写, 使用方便。 (4) 支持结构化的程序设计原理。 (5) 可自动生成程序。 PAD图有对照FORTRAN, Pascal, C等高级语言的标准图式。因此在有PAD系统的计算机上(如日立公司的M系列机),可以直接输入PAD图,由机器自动通过遍历树的办法生成相应的源代码,大大提高了软件的生产率。 PAD图为软件的自动化生成提供了有力的工

11、具。 (2) 支持逐步求精的设计方法, 左边层次中的内容可以抽象, 然后由左到右逐步细化。第5章 详细设计例:下面是用写的程序段,请分别画出对应的图和图。While C do If A0 Then A1 Else A2 Endif If B0 Then B1 If C0 Then C1 Else C2 Endif Else B2 Endif B3 Endwhiles 第5章 详细设计5.3.4 过程设计语言过程设计语言 过程设计语言(Process Design Language, 简称PDL)是在伪码的基础上,扩充了模块的定义与调用、数据定义和输入输出而形成的。它的控制结构与伪码相同。PDL

12、是一种用于描述模块算法设计和处理细节的语言。PDL与结构化语言的结构相似,一般分为内外两层语法,外层语法应符合一般程序设计语言常用的语法规则,而内层语法则用一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能。PDL具有严格的关键字外层语法,用于定义控制结构、数据结构和模块接口,而它表示实际操作和条件的内层语法又是灵活自由的,使用自然语言的词汇。第5章 详细设计 PDL与结构化分析中描述加工逻辑的“结构化语言”有什么不同呢? 所不同的仅是它们的作用不同,故抽象层次不同, 模糊程度不同。 “结构化语言”是描述加工“做什么”的,并且使开发人员和用户都能看懂,因此无严格的外语法,内层自然语言

13、描述较抽象、较概括。而PDL是描述处理过程“怎么做”的细节。 开发人员将按其处理细节编程序,故外层语法更严格一些, 更趋于形式化,内层自然语言描述实际操作更具体更详细一些。 第5章 详细设计 1. PDL特点特点 PDL的特点如下:(1) 所有关键字都有固定语法, 以便提供结构化控制结构、 数据说明和模块的特征。(2) 描述处理过程的说明性语言没有严格的语法。(3) 具有数据说明机制,包括简单的与复杂的数据说明。(4) 具有模块定义和调用机制,开发人员应根据系统编程所用的语种,说明PDL表示有关程序结构。第5章 详细设计 2. 程序结构程序结构 用PDL表示的程序结构一般有下列几种结构。1)

14、顺序结构 采用自然语言描述顺序结构: 处理S1 处理S2 处理Sn第5章 详细设计2) 选择结构(2) IF-ORIF-ELSE结构: IF 条件1 处理S1 ORIF 条件2 ELSE 处理Sn ENDIF(1) IF-结构: IF 条件 IF 条件 处理S1 或 处理S ELSE ENDIF 处理S2 ENDIF第5章 详细设计(3) CASE结构: CASE OF CASE(1) 处理S1 CASE(2) 处理S2 ELSE 处理Sn ENDCASE第5章 详细设计 3) 重复结构 (2) WHILE 结构: WHILE 条件 循环体 ENDWHILE(1) FOR 结构: FOR i=

15、1 TO n 循环体 END FOR(3) UNTIL 结构: REPEAT 循环体 UNTIL 条件第5章 详细设计4) 出口结构(1) ESCAPE 结构(退出本层结构): WHILE 条件 处理S1 ESCAPE L IF 条件 处理S2 ENDWHILE L: (2) CYCLE结构(循环内部进入循环的下一次): L: WHILE 条件 处理S1 CYCLE L IF 条件 处理S2 ENDWHILE第5章 详细设计 5) 扩充结构 (1) 模块定义: PROCEDURE 模块名(参数) RETURN END(2) 模块调用: CALL 模块名(参数)第5章 详细设计 (3) 数据定义

16、: DECLARE 属性 变量名, 属性有: 字符、 整型、 实型、 双精度、 指针、 数组及结构等类型。(4) 输入/输出: GET(输入变量表) PUT(输出变量表)第5章 详细设计3. PDL应用示例应用示例 现以系统主控模块详细设计为例, 说明如何用PDL来描述。 PROCEDURE模块名( ) 清屏; 显示系统用户界面; PUT(“请输入用户口令:”); GET(password); IF password系统口令 提示警告信息; 退出运行 ENDIF第5章 详细设计 显示本系统主菜单; WHILE(true) 接收用户选择ABC; IF ABC=“退出” Break; ENDIF

17、调用相应下层模块完成用户选择功能; ENDWHILE; 清屏; RETURN END第5章 详细设计 从示例可以看到PDL的总体结构与一般程序完全相同。 外语法同相应程序语言一致,内语法使用自然语言,易编写, 易理解,也很容易转换成源程序。 除此以外,还有以下优点: (1) 提供的机制较图形全面, 为保证详细设计与编码的质量创造了有利条件。 (2) 可作为注释嵌入在源程序中一起作为程序的文档,并可同高级程序设计语言一样进行编辑、修改,有利于软件的维护。 (3) 可自动生成程序代码,提高软件生产率。目前已有PDL多种版本(如PDL/pascal, PDL/C, PDL/Ada等),为自动生成相应

18、代码提供了便利条件。第5章 详细设计5.4 Jackson程序设计方法程序设计方法 面向数据流的设计(SD方法)和面向数据结构的设计(Jackson方法)的共同点都是数据信息驱动的,都试图将数据表示转换成软件表示,不同之处在于面向数据结构的设计不利用数据流图,而根据数据结构的表示来设计。第5章 详细设计Jackson方法的优缺点方法的优缺点 Jackson方法的优点:简单,适合于规模不大的系统,建立了问题的数据结构之后,可直接推导出相应的程序结构。 Jackson方法的局限性:不适合于大系统,当输入数据结构与输出数据结构不相同且无对应关系时,难于应用。当数据结构发生变化时,程序结构也发生变化,

19、一般是总体上用SD方法, 局部范围用Jackson方法。第5章 详细设计5.4.1 Jackson图图 Jackson图是Jackson方法的描述工具,在分析、确定问题的数据结构后, 用Jackson图来描绘问题的数据结构。 1. Jackson图的表示图的表示 虽然程序中实际使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和重复三种,因此, 逻辑数据结构也只有这三种。 第5章 详细设计 1) 顺序结构 顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。 如图5.4(a)中的A是一个顺序结构,指出基本成份B, C, D顺序组成。 注意, 这里的A并非

20、模块, 它既可以是数据(表示数据结构时),又可以是程序(表示程序结构时), 而B, C, D仅是A的成份,上、 下层是“组成”的关系,A中除了B, C, D外不包含其他代码,不同于Yourdon方法的软件结构。2) 选择结构 选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。如图5.4(b)中的A是一个选择结构, 由数据元素B, C或D组成。 第5章 详细设计(b)ACDB(a)AC D B AB *(c) 图 5.4 Jackson图(a) 顺序结构; (b) 选择结构; (c) 重复结构3) 重复结构 重复结构的数据, 根据使用时的条件由一个数据元

21、素出现零次或多次构成。 如图5.4(c)所示,表示A由多个数据元素B组成。 第5章 详细设计Jackson图具有如下优点: (1) 便于表示层次结构, 是对结构进行自顶向下分解的有力工具。(2) 形象直观可读性好。 (3) 既能表示数据结构也能表示程序结构(因为程序结构也只有上述三种基本类型)。 第5章 详细设计3. Jackson图应用的示例图应用的示例 某仓库管理系统每天要处理大批由单据所组成的事务文件。 单据分为订货单和发货单两种,每张单据由多行组成,订货单每行包括零件号、零件名、单价及数量等 4 个数据项,发货单每行包括零件号、零件名及数量等 3 个数据项,用Jackson结构图表示该

22、事务文件的数据结构。图5.5为该事务文件的数据结构。第5章 详细设计图 5.5 事务文件的Jackson结构图事务文件单据 *订货单发货单发货行*订货行*零件号零件名数量数量单价零件名零件号第5章 详细设计纲要逻辑纲要逻辑 纲要逻辑是类似于伪码的一种语言表示工具, 与Jackson结构图对应, 用于将Jackson结构图表示的程序结构转换为语言表示。 图5.4中对应的纲要逻辑为:(1) 顺序结构: A seq B C D A end第5章 详细设计(2) 选择结构: A sel 条件1 B alt 条件2 C alt 条件3 D A end (3) 重复结构: A iter until(或wh

23、ile)条件 B A end 第5章 详细设计5.4.2 Jackson方法方法 Jackson方法基本由下列5个步骤组成: (1) 分析并确定输入数据和输出数据的逻辑结构, 并用Jackson图描绘这些数据结构。 (2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须是重复的次序和次数都相同才可能有对应关系)。 (3) 用下列3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:第5章 详细设计 为每对有对应关系的数据单元,按照它们在数据结构图中的层次和在程序结构图的相

24、应层次画一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同, 则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。 根据输入数据结构中剩余的每个数据单元所处的层次, 在程序结构图的相应层次分别为它们画上对应的处理框。 根据输出数据结构中剩余的每个数据单元所处的层次, 在程序结构图的相应层次分别为它们画上对应的处理框。第5章 详细设计 (4) 列出所有操作和条件(包括选择条件和重复结束条件),并把它们分配到程序结构图的适当位置。 (5) 用纲要逻辑表示程序。第5章 详细设计JSP方法应用示例方法应用示例 现举例说明JSP方法设计过程。 1

25、) 问题陈述 某仓库存放多种零件(如P1, P2, ),每个零件的每次进货、发货都有一张卡片作出记录,每月根据这样一叠卡片打印一张月报表。 报表每行列出某种零件本月库存量的净变化。用JSP方法对该问题进行设计。 2) 建立输入、 输出数据结构 建立输入、 输出数据结构的步骤如下:第5章 详细设计 (1) 输入数据: 根据问题陈述, 同一种零件的进货、 发货状态不同,每月登记有若干张卡片。 把同一种零件的卡片放在一起组成一组,所有的卡片组按零件名排序。 所以输入数据是由许多零件组组成的文件,每个零件组有许多张卡片, 张卡片上记录着本零件进货或发货的信息。因此输入数据结构的Jackson图为图5.

26、6(a)。 (2) 输出数据:根据问题陈述,输出数据是一张如图5.6(c)的月报表, 它由表头和表体两部分组成,表体中有许多行, 一个零件的净变化占一行,其输出数据结构的Jackson图为图5.6(b)。第5章 详细设计3) 找出输入、 输出数据结构中有对应关系的单元 月报表由输入文件产生,有直接的因果关系, 因此顶层的数据单元是对应的。表体的每一行数据由输入文件的每一个“零件组”计算而来,行数与组数相同,且行的排列次序与组的排列次序一致,都按零件号排序。因此“零件组”与“行”两个单元对应,以下再无对应的单元。 输入文件零件组 *卡片 *进货 发货 月报表表头表体行 *零件名净变化对应对 应月

27、报表零件名增加数量P1P2P3 1500 100 200(c)(b)(a) 图 5.6某仓库系统输入、 输出数据结构(a) 输入数据结构; (b) 输出数据结构; (c) 输出表第5章 详细设计4) 导出程序结构 找出对应关系后,根据以下规则导出程序结构:对于输入数据结构与输出数据结构中的数据单元,每对有对应关系的数据单元按照它们所在的层次,在程序结构图适当位置合画一个处理框,无对应关系的数据单元,各画一个处理框。 根据以上规则, 画出的程序结构图如图5.7所示。 在图5.7的程序结构的第4层增加了一个“处理零件组”的框,因为改进的Jackson图规定顺序执行的处理中不允许混有重复执行和选择执

28、行的处理。 增加了这样一个框, 使符合该规定,同时也提高了结构图的易读性。 第5章 详细设计图 5.7 某仓库系统程序结构由输入文件产生月报表产生表头产生表体产生零件名产生净变化处理零件组处理卡片 *处理发货处理进货由零件组产生输出行 *第5章 详细设计5) 列出并分配操作与条件 为了对程序结构作补充,要列出求解问题的所有操作和条件,然后分配到程序结构图的适当位置, 就可得到完整的程序结构图。 (1) 本问题的基本操作列出如下: A、 终止B、 打开文件C、 关闭文件D、 打印字符行E、 读一张卡 F、产生行结束符G、累计进货量H、累计发货量I、计算净变化 J、 置零件组开始标志(2) 列出条

29、件如下: I(1):输入条件未结束I(2):零件组未结束S(3): 进发货标志 将操作与条件分配到适当位置的程序结构图如图5.8所示。 第5章 详细设计图 5.8 分配操作后的程序结构图 由输入文件产生月报表产生表头产生表体产生零件名产生净变化处理零件组处理卡片 *处理发货处理进货由零件组产生输出行 *IS(3)GHI(2)DIDFJDJEBCAI(1)第5章 详细设计 在分配操作时注意:为了能获得重复和选择的条件, Jackson建议至少超前读一个记录,以便使得程序不论在什么时候判定, 总有数据已经读入,并做好使用准备。 因此在图9.5中, 将操作E(读一张卡)放在打开文件之后,同时在处理完

30、一张卡片后再读一次。6) 用纲要逻辑写出程序 Jackson方法中的纲要逻辑与Jackson所示的程序结构图完全对应,用纲要逻辑写出程序的过程,实际上就是自顶向下用这些纲要逻辑替换Jackson图中每个处理框的过程,每个处理框都看作是下层处理框及分配在上面的操作组成。 图5.8所示的程序结构的纲要逻辑为:第5章 详细设计产生月报表 seq 打开文件 读一张卡 产生表头 seq 打印字符行 产生表头 end 置零件组开始标志 产生表体 iter while 输入文件未结束 由零件组产生输出行 seq 处理零件组 iter while 零件组未结束 处理卡片 sel 进货标志第5章 详细设计处理进

31、货 seq 累计进货量处理进货 endalt 发货标志处理发货 seq 累计发货量处理发货 end 处理卡片 end 读一张卡 处理零件组 end第5章 详细设计产生零件名 seq 打印字符行产生零件名 end产生净变化 seq 计算净变化 打印字符行 产生净变化 end 换行 置零件组开始标志第5章 详细设计 由零件组产生输出行end 产生表体 end 关闭文件 终止 产生月报表 end 用纲要逻辑书写程序可以很方便地转换成源代码, 还可以检查前面步骤的错误。如果分配操作不正确或者结构图不正确, 都难以写出它的纲要逻辑。 第5章 详细设计 一个正文文件由若干个记录组成,每个记录是一个字符串。

32、要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出格式是,每复制一行输入字符串之后,另起一行印出这个字符串的空格数,最后印出文件中空格的总个数。 请用Jackson方法设计。第5章 详细设计首先分别画出输入和输出的Jackson图,并确定联系。第5章 详细设计画出合并后的Jackson图。第5章 详细设计列出所有操作和条件:操作:停止 打开文件关闭文件 印出字符串印出空格数目 印出空格总数sum:=sum+1 totalsum:=totalsum+sum读入字符串 sum:=0totalsum:=0 pointer:=1pointer:=pointer+1条件:I文件结束I字符串结束S字符是空格第5章 详细设计画出整体Jackson图。第5章 详细设计给出刚要逻辑第5章 详细设计用Jackson方法对学生成绩管理系统进行结构设计。 学生成绩管理系统在学生入学时输入学生基本信息。每次单科成绩是按班级内学生学号的顺序依次输入每位学生的平时成绩和考

温馨提示

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

评论

0/150

提交评论