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

下载本文档

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

文档简介

软件工程信息技术学部陈曦软件工程信息技术学部5.1详细设计概述5.2结构化程序设计5.3详细设计工具5.4Jackson程序设计方法第5章详细设计5.1详细设计概述第5章详细设计5.1详细设计概述详细设计的基本任务

1.算法设计用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。

2.数据结构设计对于需求分析、概要设计确定的概念性的数据类型进行确切的定义。

3.物理设计对数据库进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。5.1详细设计概述详细设计的基本任务1.算法设计

4.其他设计根据软件系统的类型,还可能要进行以下设计:(1)代码设计:为了提高数据的输入、分类、存储及检索等操作的效率,以及节约内存空间,对数据库中的某些数据项的值要进行代码设计。(2)输入/输出格式设计。(3)人机对话设计:对于一个实时系统,用户与计算机频繁对话,因此要进行对话方式、内容及格式的具体设计。4.其他设计(1)代码设计:

5.编写详细设计说明书详细设计说明书有下列的主要内容:(1)引言:包括编写目的、背景、定义、参考资料。(2)程序系统的组织结构。(3)程序1(标识符)设计说明:包括功能、性能、输入、输出、算法、流程逻辑、接口。(4)程序2(标识符)设计说明。(5)程序N(标识符)设计说明。

6.评审对处理过程的算法和数据库的物理结构都要评审。5.编写详细设计说明书(1)引言:包括5.1结构化程序设计处理过程设计中采用的典型方法是结构化程序设计(SP)方法,最早是由E.W.Dijkstra在20世纪60年代中期提出的。详细设计并不是具体地编程序,而是已经细化成很容易从中产生程序的图纸。因此详细设计的结果基本决定了最终程序的质量。详细设计的目标不仅是逻辑上正确地实现每个模块的功能,还应使设计出的处理过程清晰易读。结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于理解、易于验证的程序。结构化程序设计方法有以下几个基本要点。5.1结构化程序设计处理过程设计中采用的典型1.采用自顶向下、逐步求精的程序设计方法在需求分析、概要设计中,都采用了自顶向下、逐层细化的方法。使用“抽象”这个手段,上层对问题抽象、对模块抽象和对数据抽象,下层则进一步分解,进入另一个抽象层次。在详细设计中,虽然处于“具体”设计阶段,但在设计某个模块内部处理过程中,仍可以逐步求精,降低处理细节的复杂度。

2.使用三种基本控制结构构造程序任何程序都可由顺序、选择及重复三种基本控制结构构造。这三种基本结构的共同点是单入口、单出口。它不但能有效地限制使用GOTO语句,还创立了一种新的程序设计思想、方法和风格,同时为自顶向下、逐步求精的设计方法提供了具体的实施手段。1.采用自顶向下、逐步求精的程序设计方法如对一个模块处理过程细化时,开始是模糊的,可以用下面三种方式以模糊过程进行分解:(1)用顺序方式对过程分解,确定各部分的执行顺序。(2)用选择方式对过程分解,确定某个部分的执行条件。(3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。如对一个模块处理过程细化时,开始是模糊的,3.主程序员的组织形式主程序员的组织形式指开发程序的人员应采用以一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据,文档资料管理等)三人为核心,再加上一些专家(如通信专家、数据库专家)、其他技术人员组成小组。这种组织形式突出了主程序员的领导,设计责任集中在少数人身上,有利于提高软件质量,并且能有效地提高软件生产率。这种组织形式最先由IBM公司实施,随后其他软件公司也纷纷采用主程序员制的工作方式。因此,结构化程序设计方法是综合应用这些手段来构造高质量程序的思想方法。3.主程序员的组织形式主程序员的组织形式指5.1详细设计工具5.3.1程序流程图程序流程图又称为程序框图,它是历史最悠久、使用最广泛的一种描述程序逻辑结构的工具,图5.1为流程图的三种基本控制结构。流程图的优点是直观清晰、易于使用,是开发者普遍采用的工具,但是它有如下严重缺点:(1)可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构,编码时势必不加限制地使用GOTO语句,导致基本控制块多入口多出口,这样会使软件质量受到影响与软件设计的原则相违背。5.1详细设计工具5.3.1程序流程图程序流图5.1三种基本控制结构的流程图图5.1三种基本控制结构的流程图(2)流程图不能反映逐步求精的过程,往往反映的是最后的结果。(3)不易表示数据结构。为了克服流程图的缺陷,要求流程图都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,这样的流程图是结构化的流程图。(2)流程图不能反映逐步求精的过程,往往反5.3.2N-S图(盒状图)盒图的符号5.3.2N-S图(盒状图)盒图的符号将此程序图改为N_S图。将此程序图改为N_S图。第5章软件工程课件请把流程图改为盒图请把流程图改为盒图5.3.3PAD图图PAD图指问题分析图(ProblemAnalysisDiagram),是日本日立公司于1979年提出的一种算法描述工具,它是一种由左往右展开的二维树型结构。PAD图的基本控制结构如图5.2所示。PAD图的控制流程为自上而下、从左到右地执行。图5.3给出了将数组A(1)到A(10)进行选择法排序的算法描述的PAD图。5.3.3PAD图图PAD图指问题分析图(图5.2PAD的基本控制结构图5.2PAD的基本控制结构图5.3PAD图的示例图5.3PAD图的示例从图5.3给出的例子可以看出PAD图的优点如下:(1)清晰地反映了程序的层次结构。图中的竖线为程序的层次线,最左边竖线是程序的主线,其后一层一层展开,层次关系一目了然。(3)易读易写,使用方便。(4)支持结构化的程序设计原理。(5)可自动生成程序。PAD图有对照FORTRAN,Pascal,C等高级语言的标准图式。因此在有PAD系统的计算机上(如日立公司的M系列机),可以直接输入PAD图,由机器自动通过遍历树的办法生成相应的源代码,大大提高了软件的生产率。PAD图为软件的自动化生成提供了有力的工具。(2)支持逐步求精的设计方法,左边层次中的内容可以抽象,然后由左到右逐步细化。从图5.3给出的例子可以看出PAD图的优点如下:例:下面是用PDL写的程序段,请分别画出对应的N-S图和PAD图。例:下面是用PDL写的程序段,请分别画出对应的N-S图5.3.4过程设计语言过程设计语言(ProcessDesignLanguage,简称PDL)是在伪码的基础上,扩充了模块的定义与调用、数据定义和输入输出而形成的。它的控制结构与伪码相同。PDL是一种用于描述模块算法设计和处理细节的语言。PDL与结构化语言的结构相似,一般分为内外两层语法,外层语法应符合一般程序设计语言常用的语法规则,而内层语法则用一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能。PDL具有严格的关键字外层语法,用于定义控制结构、数据结构和模块接口,而它表示实际操作和条件的内层语法又是灵活自由的,使用自然语言的词汇。5.3.4过程设计语言过程设计语言(ProPDL与结构化分析中描述加工逻辑的“结构化语言”有什么不同呢?所不同的仅是它们的作用不同,故抽象层次不同,模糊程度不同。“结构化语言”是描述加工“做什么”的,并且使开发人员和用户都能看懂,因此无严格的外语法,内层自然语言描述较抽象、较概括。而PDL是描述处理过程“怎么做”的细节。开发人员将按其处理细节编程序,故外层语法更严格一些,更趋于形式化,内层自然语言描述实际操作更具体更详细一些。PDL与结构化分析中描述加工逻辑的“结构化语

1.PDL特点PDL的特点如下:所有关键字都有固定语法,以便提供结构化控制结构、数据说明和模块的特征。(2)描述处理过程的说明性语言没有严格的语法。(3)具有数据说明机制,包括简单的与复杂的数据说明。(4)具有模块定义和调用机制,开发人员应根据系统编程所用的语种,说明PDL表示有关程序结构。1.PDL特点所有关键字都有固定语法,

2.程序结构用PDL表示的程序结构一般有下列几种结构。顺序结构采用自然语言描述顺序结构:处理S1处理S2…处理Sn2.程序结构顺序结构2)选择结构(2)IF-ORIF-ELSE结构:IF条件1处理S1ORIF条件2…ELSE处理SnENDIF(1)IF-结构:IF条件IF条件处理S1或处理SELSEENDIF处理S2ENDIF2)选择结构(2)IF-ORIF-ELSE结构:(1)(3)CASE结构:CASEOFCASE(1)处理S1CASE(2)处理S2…ELSE处理SnENDCASE(3)CASE结构:3)重复结构(2)WHILE结构:WHILE条件循环体ENDWHILE(1)FOR结构:FORi=1TOn循环体ENDFOR(3)UNTIL结构:REPEAT循环体UNTIL条件3)重复结构(2)WHILE结构:(1)4)出口结构(1)ESCAPE结构(退出本层结构):WHILE条件处理S1ESCAPELIF条件处理S2ENDWHILEL:…(2)CYCLE结构(循环内部进入循环的下一次):L:WHILE条件处理S1CYCLELIF条件处理S2ENDWHILE4)出口结构(1)ESCAPE结构(退出本层结构):(5)扩充结构(1)模块定义:PROCEDURE模块名(参数)…RETURNEND(2)模块调用:CALL模块名(参数)5)扩充结构(1)模块定义:(2)模块(3)数据定义:DECLARE属性变量名,…属性有:字符、整型、实型、双精度、指针、数组及结构等类型。(4)输入/输出:GET(输入变量表)PUT(输出变量表)(3)数据定义:(4)输入/输出:3.PDL应用示例现以××系统主控模块详细设计为例,说明如何用PDL来描述。PROCEDURE模块名()清屏;显示××系统用户界面;PUT(“请输入用户口令:”);GET(password);IFpassword<>系统口令提示警告信息;退出运行ENDIF3.PDL应用示例现以××系统主控模块详细显示本系统主菜单;WHILE(true)接收用户选择ABC;IFABC=“退出”Break;ENDIF调用相应下层模块完成用户选择功能;ENDWHILE;清屏;RETURNEND显示本系统主菜单;从示例可以看到PDL的总体结构与一般程序完全相同。外语法同相应程序语言一致,内语法使用自然语言,易编写,易理解,也很容易转换成源程序。除此以外,还有以下优点:(1)提供的机制较图形全面,为保证详细设计与编码的质量创造了有利条件。(2)可作为注释嵌入在源程序中一起作为程序的文档,并可同高级程序设计语言一样进行编辑、修改,有利于软件的维护。(3)可自动生成程序代码,提高软件生产率。目前已有PDL多种版本(如PDL/pascal,PDL/C,PDL/Ada等),为自动生成相应代码提供了便利条件。从示例可以看到PDL的总体结构与一般程序完全5.4Jackson程序设计方法面向数据流的设计(SD方法)和面向数据结构的设计(Jackson方法)的共同点都是数据信息驱动的,都试图将数据表示转换成软件表示,不同之处在于面向数据结构的设计不利用数据流图,而根据数据结构的表示来设计。5.4Jackson程序设计方法面向数据流Jackson方法的优缺点Jackson方法的优点:简单,适合于规模不大的系统,建立了问题的数据结构之后,可直接推导出相应的程序结构。Jackson方法的局限性:不适合于大系统,当输入数据结构与输出数据结构不相同且无对应关系时,难于应用。当数据结构发生变化时,程序结构也发生变化,一般是总体上用SD方法,局部范围用Jackson方法。Jackson方法的优缺点Jackson方5.4.1Jackson图Jackson图是Jackson方法的描述工具,在分析、确定问题的数据结构后,用Jackson图来描绘问题的数据结构。

1.Jackson图的表示虽然程序中实际使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和重复三种,因此,逻辑数据结构也只有这三种。5.4.1Jackson图Jackson1)顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。如图5.4(a)中的A是一个顺序结构,指出基本成份B,C,D顺序组成。注意,这里的A并非模块,它既可以是数据(表示数据结构时),又可以是程序(表示程序结构时),而B,C,D仅是A的成份,上、下层是“组成”的关系,A中除了B,C,D外不包含其他代码,不同于Yourdon方法的软件结构。2)选择结构选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。如图5.4(b)中的A是一个选择结构,由数据元素B,C或D组成。1)顺序结构顺序结构的数据由一个或多个

图5.4Jackson图(a)顺序结构;(b)选择结构;(c)重复结构3)重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。如图5.4(c)所示,表示A由多个数据元素B组成。图5.4JackJackson图具有如下优点:(1)便于表示层次结构,是对结构进行自顶向下分解的有力工具。(2)形象直观可读性好。(3)既能表示数据结构也能表示程序结构(因为程序结构也只有上述三种基本类型)。Jackson图具有如下优点:(1)便于表3.Jackson图应用的示例某仓库管理系统每天要处理大批由单据所组成的事务文件。单据分为订货单和发货单两种,每张单据由多行组成,订货单每行包括零件号、零件名、单价及数量等4个数据项,发货单每行包括零件号、零件名及数量等3个数据项,用Jackson结构图表示该事务文件的数据结构。图5.5为该事务文件的数据结构。3.Jackson图应用的示例某仓库管理图5.5事务文件的Jackson结构图图5.5事务文件的Jackson结构图纲要逻辑纲要逻辑是类似于伪码的一种语言表示工具,与Jackson结构图对应,用于将Jackson结构图表示的程序结构转换为语言表示。图5.4中对应的纲要逻辑为:(1)顺序结构:AseqBCDAend纲要逻辑纲要逻辑是类似于伪码的一种语言表示(2)选择结构:Asel条件1Balt条件2Calt条件3DAend(3)重复结构:Aiteruntil(或while)条件BAend(2)选择结构:Asel条件1(35.4.2Jackson方法Jackson方法基本由下列5个步骤组成:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须是重复的次序和次数都相同才可能有对应关系)。(3)用下列3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:5.4.2Jackson方法Jackson方法基本由下列①为每对有对应关系的数据单元,按照它们在数据结构图中的层次和在程序结构图的相应层次画一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。②根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。③根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。①为每对有对应关系的数据单元,按照它们在数(4)列出所有操作和条件(包括选择条件和重复结束条件),并把它们分配到程序结构图的适当位置。(5)用纲要逻辑表示程序。(4)列出所有操作和条件(包括选择条件JSP方法应用示例现举例说明JSP方法设计过程。1)问题陈述某仓库存放多种零件(如P1,P2,……),每个零件的每次进货、发货都有一张卡片作出记录,每月根据这样一叠卡片打印一张月报表。报表每行列出某种零件本月库存量的净变化。用JSP方法对该问题进行设计。2)建立输入、输出数据结构建立输入、输出数据结构的步骤如下:JSP方法应用示例现举例说明JSP方法设计过程。1)(1)输入数据:根据问题陈述,同一种零件的进货、发货状态不同,每月登记有若干张卡片。把同一种零件的卡片放在一起组成一组,所有的卡片组按零件名排序。所以输入数据是由许多零件组组成的文件,每个零件组有许多张卡片,张卡片上记录着本零件进货或发货的信息。因此输入数据结构的Jackson图为图5.6(a)。(2)输出数据:根据问题陈述,输出数据是一张如图5.6(c)的月报表,它由表头和表体两部分组成,表体中有许多行,一个零件的净变化占一行,其输出数据结构的Jackson图为图5.6(b)。(1)输入数据:根据问题陈述,同一种零3)找出输入、输出数据结构中有对应关系的单元月报表由输入文件产生,有直接的因果关系,因此顶层的数据单元是对应的。表体的每一行数据由输入文件的每一个“零件组”计算而来,行数与组数相同,且行的排列次序与组的排列次序一致,都按零件号排序。因此“零件组”与“行”两个单元对应,以下再无对应的单元。图5.6某仓库系统输入、输出数据结构(a)输入数据结构;(b)输出数据结构;(c)输出表3)找出输入、输出数据结构中有对应关系的单元4)导出程序结构找出对应关系后,根据以下规则导出程序结构:对于输入数据结构与输出数据结构中的数据单元,每对有对应关系的数据单元按照它们所在的层次,在程序结构图适当位置合画一个处理框,无对应关系的数据单元,各画一个处理框。根据以上规则,画出的程序结构图如图5.7所示。在图5.7的程序结构的第4层增加了一个“处理零件组”的框,因为改进的Jackson图规定顺序执行的处理中不允许混有重复执行和选择执行的处理。增加了这样一个框,使符合该规定,同时也提高了结构图的易读性。4)导出程序结构找出对应关系后,根据以下规图5.7某仓库系统程序结构图5.7某仓库系统程序结构5)列出并分配操作与条件为了对程序结构作补充,要列出求解问题的所有操作和条件,然后分配到程序结构图的适当位置,就可得到完整的程序结构图。(1)本问题的基本操作列出如下:A、终止B、打开文件C、关闭文件D、打印字符行E、读一张卡F、产生行结束符G、累计进货量H、累计发货量I、计算净变化J、置零件组开始标志(2)列出条件如下:I(1):输入条件未结束I(2):零件组未结束S(3):进发货标志将操作与条件分配到适当位置的程序结构图如图5.8所示。5)列出并分配操作与条件为了对程序结构作补图5.8分配操作后的程序结构图图5.8分配操作后的程序结构图在分配操作时注意:为了能获得重复和选择的条件,Jackson建议至少超前读一个记录,以便使得程序不论在什么时候判定,总有数据已经读入,并做好使用准备。因此在图9.5中,将操作E(读一张卡)放在打开文件之后,同时在处理完一张卡片后再读一次。6)用纲要逻辑写出程序Jackson方法中的纲要逻辑与Jackson所示的程序结构图完全对应,用纲要逻辑写出程序的过程,实际上就是自顶向下用这些纲要逻辑替换Jackson图中每个处理框的过程,每个处理框都看作是下层处理框及分配在上面的操作组成。图5.8所示的程序结构的纲要逻辑为:在分配操作时注意:为了能获得重复和选择的条件产生月报表seq打开文件读一张卡产生表头seq打印字符行产生表头end置零件组开始标志产生表体iterwhile输入文件未结束由零件组产生输出行seq处理零件组iterwhile零件组未结束处理卡片sel进货标志产生月报表seq处理进货seq累计进货量处理进货endalt发货标志处理发货seq累计发货量处理发货end处理卡片end读一张卡处理零件组end处理进货seq处理卡片end产生零件名seq打印字符行产生零件名end产生净变化seq计算净变化打印字符行产生净变化end换行置零件组开始标志产生零件名seq由零件组产生输出行end产生表体end关闭文件终止产生月报表end用纲要逻辑书写程序可以很方便地转换成源代码,还可以检查前面步骤的错误。如果分配操作不正确或者结构图不正确,都难以写出它的纲要逻辑。由零件组产生输出行end一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出格式是,每复制一行输入字符串之后,另起一行印出这个字符串的空格数,最后印出文件中空格的总个数。请用Jackson方法设计。一个正文文件由若干个记录组成,每个记录是一个首先分别画出输入和输出的Jackson图,并确定联系。首先分别画出输入和输出的Jackson图,并确定联系。画出合并后的Jackson图。画出合并后的Jackson图。列出所有操作和条件:操作:⑴停止⑵打开文件⑶关闭文件⑷印出字符串⑸印出空格数目⑹印出空格总数⑺sum:=sum+1⑻totalsum:=totalsum+sum⑼读入字符串⑽sum:=0⑾totalsum:=0⑿pointer:=1⒀pointer:=pointer+1条件:I⑴文件结束I⑵字符串结束S⑶字符是空格列出所有操作和条件:操作:画出整体Jackson图。画出整体Jackson图。给出刚要逻辑给出刚要逻辑用Jackson方法对学生成绩管理系统进行结构设计。学生成绩管理系统在学生入学时输入学生基本信息。每次单科成绩是按班级内学生学号的顺序依次输入每位学生的平时成绩和考试成绩,成绩输入格式见表1。然后由计算机计算每位学生的单科成绩总评分。输出的学生个人成绩单格式,见表2。班级各科成绩汇总表格式,见表3。用Jackson方法对学生成绩管理系统进行结构设计。表1班级单科成绩表格式上海应用技术学院2004-2005年第一学期成绩表课程号:1090课程名:计算机网络基础系:计算机科学与技术班级04104111学号姓名性别平时成绩考试成绩总评分数段人数百分比90分以上80-89分70-79分60-69分不及格任课教师签名:日期:年月日表1班级单科成绩表格式学号姓名性别平时成绩考试成绩总评分表2学生个人成绩单格式上海应用技术学院2004-2005年第一学期学生成绩单学号:041011116姓名:王力系:计算机科学与技术班级:0410111课程名平时成绩考试成绩总评考试/考察表2学生个人成绩单格式课程名平时成绩考试成绩总评考试/考表3班级各科成绩汇总表格式上海应用技术学院2004-2005年第一学期班级成绩汇总表系:计算机科学与技术班级:0410111学号姓名高等数学计算机网络基础英语政治体育表3班级各科成绩汇总表格式学号姓名高等数学计算机网络基础英输入、输出的Jackson图输入、输出的Jackson图列出所有操作和条件,结合输入、输出结构关系导出程序结构Jackson图。输入学生基本情况;输入学生单科成绩;计算单科成绩总评分;输出班级单科成绩表;输出考生个人成绩单;输出班级成绩汇总;输出重修名单;输出重修名单;输出留级名单。列出所有操作和条件,结合输入、输出结构关系学生成绩管理系统结构Jackson图学生成绩管理系统结构Jackson图其中重复条件如下:重复条件sum1:对所有学生都执行一次。重复条件sum2:总评成绩不及格人数。重复条件sum3:留级人数。其中重复条件如下:重复条件sum1:对所有学生都执行一次。例:一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。例:一个正文文件由若干个记录组成,每个记录是一个第一、二步:画出输入输出的Jackson图并找出对应关系。第一、二步:画出输入输出的Jackson图并找出对应第三步:画出初步整体Jackson图。第三步:画出初步整体Jackson图。第四步:列出所有操作和条件:停止打开文件关闭文件印出字符串印出空格数目印出空格总数sum:=sum+1totalsum:=totalsum+sum读入字符串sum:=0totalsum:=0pointer:=1pointer:=pointer+1I(1)文件结束I(2)字符串结束S(3)字符是空格第四步:列出所有操作和条件:停止I(1)文件结束第5章软件工程课件软件工程信息技术学部陈曦软件工程信息技术学部5.1详细设计概述5.2结构化程序设计5.3详细设计工具5.4Jackson程序设计方法第5章详细设计5.1详细设计概述第5章详细设计5.1详细设计概述详细设计的基本任务

1.算法设计用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。

2.数据结构设计对于需求分析、概要设计确定的概念性的数据类型进行确切的定义。

3.物理设计对数据库进行物理设计,即确定数据库的物理结构。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。5.1详细设计概述详细设计的基本任务1.算法设计

4.其他设计根据软件系统的类型,还可能要进行以下设计:(1)代码设计:为了提高数据的输入、分类、存储及检索等操作的效率,以及节约内存空间,对数据库中的某些数据项的值要进行代码设计。(2)输入/输出格式设计。(3)人机对话设计:对于一个实时系统,用户与计算机频繁对话,因此要进行对话方式、内容及格式的具体设计。4.其他设计(1)代码设计:

5.编写详细设计说明书详细设计说明书有下列的主要内容:(1)引言:包括编写目的、背景、定义、参考资料。(2)程序系统的组织结构。(3)程序1(标识符)设计说明:包括功能、性能、输入、输出、算法、流程逻辑、接口。(4)程序2(标识符)设计说明。(5)程序N(标识符)设计说明。

6.评审对处理过程的算法和数据库的物理结构都要评审。5.编写详细设计说明书(1)引言:包括5.1结构化程序设计处理过程设计中采用的典型方法是结构化程序设计(SP)方法,最早是由E.W.Dijkstra在20世纪60年代中期提出的。详细设计并不是具体地编程序,而是已经细化成很容易从中产生程序的图纸。因此详细设计的结果基本决定了最终程序的质量。详细设计的目标不仅是逻辑上正确地实现每个模块的功能,还应使设计出的处理过程清晰易读。结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于理解、易于验证的程序。结构化程序设计方法有以下几个基本要点。5.1结构化程序设计处理过程设计中采用的典型1.采用自顶向下、逐步求精的程序设计方法在需求分析、概要设计中,都采用了自顶向下、逐层细化的方法。使用“抽象”这个手段,上层对问题抽象、对模块抽象和对数据抽象,下层则进一步分解,进入另一个抽象层次。在详细设计中,虽然处于“具体”设计阶段,但在设计某个模块内部处理过程中,仍可以逐步求精,降低处理细节的复杂度。

2.使用三种基本控制结构构造程序任何程序都可由顺序、选择及重复三种基本控制结构构造。这三种基本结构的共同点是单入口、单出口。它不但能有效地限制使用GOTO语句,还创立了一种新的程序设计思想、方法和风格,同时为自顶向下、逐步求精的设计方法提供了具体的实施手段。1.采用自顶向下、逐步求精的程序设计方法如对一个模块处理过程细化时,开始是模糊的,可以用下面三种方式以模糊过程进行分解:(1)用顺序方式对过程分解,确定各部分的执行顺序。(2)用选择方式对过程分解,确定某个部分的执行条件。(3)用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。如对一个模块处理过程细化时,开始是模糊的,3.主程序员的组织形式主程序员的组织形式指开发程序的人员应采用以一个主程序员(负责全部技术活动)、一个后备程序员(协调、支持主程序员)和一个程序管理员(负责事务性工作,如收集、记录数据,文档资料管理等)三人为核心,再加上一些专家(如通信专家、数据库专家)、其他技术人员组成小组。这种组织形式突出了主程序员的领导,设计责任集中在少数人身上,有利于提高软件质量,并且能有效地提高软件生产率。这种组织形式最先由IBM公司实施,随后其他软件公司也纷纷采用主程序员制的工作方式。因此,结构化程序设计方法是综合应用这些手段来构造高质量程序的思想方法。3.主程序员的组织形式主程序员的组织形式指5.1详细设计工具5.3.1程序流程图程序流程图又称为程序框图,它是历史最悠久、使用最广泛的一种描述程序逻辑结构的工具,图5.1为流程图的三种基本控制结构。流程图的优点是直观清晰、易于使用,是开发者普遍采用的工具,但是它有如下严重缺点:(1)可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构,编码时势必不加限制地使用GOTO语句,导致基本控制块多入口多出口,这样会使软件质量受到影响与软件设计的原则相违背。5.1详细设计工具5.3.1程序流程图程序流图5.1三种基本控制结构的流程图图5.1三种基本控制结构的流程图(2)流程图不能反映逐步求精的过程,往往反映的是最后的结果。(3)不易表示数据结构。为了克服流程图的缺陷,要求流程图都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,这样的流程图是结构化的流程图。(2)流程图不能反映逐步求精的过程,往往反5.3.2N-S图(盒状图)盒图的符号5.3.2N-S图(盒状图)盒图的符号将此程序图改为N_S图。将此程序图改为N_S图。第5章软件工程课件请把流程图改为盒图请把流程图改为盒图5.3.3PAD图图PAD图指问题分析图(ProblemAnalysisDiagram),是日本日立公司于1979年提出的一种算法描述工具,它是一种由左往右展开的二维树型结构。PAD图的基本控制结构如图5.2所示。PAD图的控制流程为自上而下、从左到右地执行。图5.3给出了将数组A(1)到A(10)进行选择法排序的算法描述的PAD图。5.3.3PAD图图PAD图指问题分析图(图5.2PAD的基本控制结构图5.2PAD的基本控制结构图5.3PAD图的示例图5.3PAD图的示例从图5.3给出的例子可以看出PAD图的优点如下:(1)清晰地反映了程序的层次结构。图中的竖线为程序的层次线,最左边竖线是程序的主线,其后一层一层展开,层次关系一目了然。(3)易读易写,使用方便。(4)支持结构化的程序设计原理。(5)可自动生成程序。PAD图有对照FORTRAN,Pascal,C等高级语言的标准图式。因此在有PAD系统的计算机上(如日立公司的M系列机),可以直接输入PAD图,由机器自动通过遍历树的办法生成相应的源代码,大大提高了软件的生产率。PAD图为软件的自动化生成提供了有力的工具。(2)支持逐步求精的设计方法,左边层次中的内容可以抽象,然后由左到右逐步细化。从图5.3给出的例子可以看出PAD图的优点如下:例:下面是用PDL写的程序段,请分别画出对应的N-S图和PAD图。例:下面是用PDL写的程序段,请分别画出对应的N-S图5.3.4过程设计语言过程设计语言(ProcessDesignLanguage,简称PDL)是在伪码的基础上,扩充了模块的定义与调用、数据定义和输入输出而形成的。它的控制结构与伪码相同。PDL是一种用于描述模块算法设计和处理细节的语言。PDL与结构化语言的结构相似,一般分为内外两层语法,外层语法应符合一般程序设计语言常用的语法规则,而内层语法则用一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能。PDL具有严格的关键字外层语法,用于定义控制结构、数据结构和模块接口,而它表示实际操作和条件的内层语法又是灵活自由的,使用自然语言的词汇。5.3.4过程设计语言过程设计语言(ProPDL与结构化分析中描述加工逻辑的“结构化语言”有什么不同呢?所不同的仅是它们的作用不同,故抽象层次不同,模糊程度不同。“结构化语言”是描述加工“做什么”的,并且使开发人员和用户都能看懂,因此无严格的外语法,内层自然语言描述较抽象、较概括。而PDL是描述处理过程“怎么做”的细节。开发人员将按其处理细节编程序,故外层语法更严格一些,更趋于形式化,内层自然语言描述实际操作更具体更详细一些。PDL与结构化分析中描述加工逻辑的“结构化语

1.PDL特点PDL的特点如下:所有关键字都有固定语法,以便提供结构化控制结构、数据说明和模块的特征。(2)描述处理过程的说明性语言没有严格的语法。(3)具有数据说明机制,包括简单的与复杂的数据说明。(4)具有模块定义和调用机制,开发人员应根据系统编程所用的语种,说明PDL表示有关程序结构。1.PDL特点所有关键字都有固定语法,

2.程序结构用PDL表示的程序结构一般有下列几种结构。顺序结构采用自然语言描述顺序结构:处理S1处理S2…处理Sn2.程序结构顺序结构2)选择结构(2)IF-ORIF-ELSE结构:IF条件1处理S1ORIF条件2…ELSE处理SnENDIF(1)IF-结构:IF条件IF条件处理S1或处理SELSEENDIF处理S2ENDIF2)选择结构(2)IF-ORIF-ELSE结构:(1)(3)CASE结构:CASEOFCASE(1)处理S1CASE(2)处理S2…ELSE处理SnENDCASE(3)CASE结构:3)重复结构(2)WHILE结构:WHILE条件循环体ENDWHILE(1)FOR结构:FORi=1TOn循环体ENDFOR(3)UNTIL结构:REPEAT循环体UNTIL条件3)重复结构(2)WHILE结构:(1)4)出口结构(1)ESCAPE结构(退出本层结构):WHILE条件处理S1ESCAPELIF条件处理S2ENDWHILEL:…(2)CYCLE结构(循环内部进入循环的下一次):L:WHILE条件处理S1CYCLELIF条件处理S2ENDWHILE4)出口结构(1)ESCAPE结构(退出本层结构):(5)扩充结构(1)模块定义:PROCEDURE模块名(参数)…RETURNEND(2)模块调用:CALL模块名(参数)5)扩充结构(1)模块定义:(2)模块(3)数据定义:DECLARE属性变量名,…属性有:字符、整型、实型、双精度、指针、数组及结构等类型。(4)输入/输出:GET(输入变量表)PUT(输出变量表)(3)数据定义:(4)输入/输出:3.PDL应用示例现以××系统主控模块详细设计为例,说明如何用PDL来描述。PROCEDURE模块名()清屏;显示××系统用户界面;PUT(“请输入用户口令:”);GET(password);IFpassword<>系统口令提示警告信息;退出运行ENDIF3.PDL应用示例现以××系统主控模块详细显示本系统主菜单;WHILE(true)接收用户选择ABC;IFABC=“退出”Break;ENDIF调用相应下层模块完成用户选择功能;ENDWHILE;清屏;RETURNEND显示本系统主菜单;从示例可以看到PDL的总体结构与一般程序完全相同。外语法同相应程序语言一致,内语法使用自然语言,易编写,易理解,也很容易转换成源程序。除此以外,还有以下优点:(1)提供的机制较图形全面,为保证详细设计与编码的质量创造了有利条件。(2)可作为注释嵌入在源程序中一起作为程序的文档,并可同高级程序设计语言一样进行编辑、修改,有利于软件的维护。(3)可自动生成程序代码,提高软件生产率。目前已有PDL多种版本(如PDL/pascal,PDL/C,PDL/Ada等),为自动生成相应代码提供了便利条件。从示例可以看到PDL的总体结构与一般程序完全5.4Jackson程序设计方法面向数据流的设计(SD方法)和面向数据结构的设计(Jackson方法)的共同点都是数据信息驱动的,都试图将数据表示转换成软件表示,不同之处在于面向数据结构的设计不利用数据流图,而根据数据结构的表示来设计。5.4Jackson程序设计方法面向数据流Jackson方法的优缺点Jackson方法的优点:简单,适合于规模不大的系统,建立了问题的数据结构之后,可直接推导出相应的程序结构。Jackson方法的局限性:不适合于大系统,当输入数据结构与输出数据结构不相同且无对应关系时,难于应用。当数据结构发生变化时,程序结构也发生变化,一般是总体上用SD方法,局部范围用Jackson方法。Jackson方法的优缺点Jackson方5.4.1Jackson图Jackson图是Jackson方法的描述工具,在分析、确定问题的数据结构后,用Jackson图来描绘问题的数据结构。

1.Jackson图的表示虽然程序中实际使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和重复三种,因此,逻辑数据结构也只有这三种。5.4.1Jackson图Jackson1)顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。如图5.4(a)中的A是一个顺序结构,指出基本成份B,C,D顺序组成。注意,这里的A并非模块,它既可以是数据(表示数据结构时),又可以是程序(表示程序结构时),而B,C,D仅是A的成份,上、下层是“组成”的关系,A中除了B,C,D外不包含其他代码,不同于Yourdon方法的软件结构。2)选择结构选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。如图5.4(b)中的A是一个选择结构,由数据元素B,C或D组成。1)顺序结构顺序结构的数据由一个或多个

图5.4Jackson图(a)顺序结构;(b)选择结构;(c)重复结构3)重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或多次构成。如图5.4(c)所示,表示A由多个数据元素B组成。图5.4JackJackson图具有如下优点:(1)便于表示层次结构,是对结构进行自顶向下分解的有力工具。(2)形象直观可读性好。(3)既能表示数据结构也能表示程序结构(因为程序结构也只有上述三种基本类型)。Jackson图具有如下优点:(1)便于表3.Jackson图应用的示例某仓库管理系统每天要处理大批由单据所组成的事务文件。单据分为订货单和发货单两种,每张单据由多行组成,订货单每行包括零件号、零件名、单价及数量等4个数据项,发货单每行包括零件号、零件名及数量等3个数据项,用Jackson结构图表示该事务文件的数据结构。图5.5为该事务文件的数据结构。3.Jackson图应用的示例某仓库管理图5.5事务文件的Jackson结构图图5.5事务文件的Jackson结构图纲要逻辑纲要逻辑是类似于伪码的一种语言表示工具,与Jackson结构图对应,用于将Jackson结构图表示的程序结构转换为语言表示。图5.4中对应的纲要逻辑为:(1)顺序结构:AseqBCDAend纲要逻辑纲要逻辑是类似于伪码的一种语言表示(2)选择结构:Asel条件1Balt条件2Calt条件3DAend(3)重复结构:Aiteruntil(或while)条件BAend(2)选择结构:Asel条件1(35.4.2Jackson方法Jackson方法基本由下列5个步骤组成:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须是重复的次序和次数都相同才可能有对应关系)。(3)用下列3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:5.4.2Jackson方法Jackson方法基本由下列①为每对有对应关系的数据单元,按照它们在数据结构图中的层次和在程序结构图的相应层次画一个处理框(如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。②根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。③根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。①为每对有对应关系的数据单元,按照它们在数(4)列出所有操作和条件(包括选择条件和重复结束条件),并把它们分配到程序结构图的适当位置。(5)用纲要逻辑表示程序。(4)列出所有操作和条件(包括选择条件JSP方法应用示例现举例说明JSP方法设计过程。1)问题陈述某仓库存放多种零件(如P1,P2,……),每个零件的每次进货、发货都有一张卡片作出记录,每月根据这样一叠卡片打印一张月报表。报表每行列出某种零件本月库存量的净变化。用JSP方法对该问题进行设计。2)建立输入、输出数据结构建立输入、输出数据结构的步骤如下:JSP方法应用示例现举例说明JSP方法设计过程。1)(1)输入数据:根据问题陈述,同一种零件的进货、发货状态不同,每月登记有若干张卡片。把同一种零件的卡片放在一起组成一组,所有的卡片组按零件名排序。所以输入数据是由许多零件组组成的文件,每个零件组有许多张卡片,张卡片上记录着本零件进货或发货的信息。因此输入数据结构的Jackson图为图5.6(a)。(2)输出数据:根据问题陈述,输出数据是一张如图5.6(c)的月报表,它由表头和表体两部分组成,表体中有许多行,一个零件的净变化占一行,其输出数据结构的Jackson图为图5.6(b)。(1)输入数据:根据问题陈述,同一种零3)找出输入、输出数据结构中有对应关系的单元月报表由输入文件产生,有直接的因果关系,因此顶层的数据单元是对应的。表体的每一行数据由输入文件的每一个“零件组”计算而来,行数与组数相同,且行的排列次序与组的排列次序一致,都按零件号排序。因此“零件组”与“行”两个单元对应,以下再无对应的单元。图5.6某仓库系统输入、输出数据结构(a)输入数据结构;(b)输出数据结构;(c)输出表3)找出输入、输出数据结构中有对应关系的单元4)导出程序结构找出对应关系后,根据以下规则导出程序结构:对于输入数据结构与输出数据结构中的数据单元,每对有对应关系的数据单元按照它们所在的层次,在程序结构图适当位置合画一个处理框,无对应关系的数据单元,各画一个处理框。根据以上规则,画出的程序结构图如图5.7所示。在图5.7的程序结构的第4层增加了一个“处理零件组”的框,因为改进的Jackson图规定顺序执行的处理中不允许混有重复执行和选择执行的处理。增加了这样一个框,使符合该规定,同时也提高了结构图的易读性。4)导出程序结构找出对应关系后,根据以下规图5.7某仓库系统程序结构图5.7某仓库系统程序结构5)列出并分配操作与条件为了对程序结构作补充,要列出求解问题的所有操作和条件,然后分配到程序结构图的适当位置,就可得到完整的程序结构图。(1)本问题的基本操作列出如下:A、终止B、打开文件C、关闭文件D、打印字符行E、读一张卡F、产生行结束符G、累计进货量H、累计发货量I、计算净变化J、置零件组开始标志(2)列出条件如下:I(1):输入条件未结束I(2):零件组未结束S(3):进发货标志将操作与条件分配到适当位置的程序结构图如图5.8所示。5)列出并分配操作与条件为了对程序结构作补图5.8分配操作后的程序结构图图5.8分配操作后的程序结构图在分配操作时注意:为了能获得重复和选择的条件,Jackson建议至少超前读一个记录,以便使得程序不论在什么时候判定,总有数据已经读入,并做好使用准备。因此在图9.5中,将操作E(读一张卡)放在打开文件之后,同时在处理完一张卡片后再读一次。6)用纲要逻辑写出程序Jackson方法中的纲要逻辑与Jackson所示的程序结构图完全对应,用纲要逻辑写出程序的过程,实际上就是自顶向下用这些纲要逻辑替换Jackson图中每个处理框的过程,每个处理框都看作是下层处理框及分配在上面的操作组成。图5.8所示的程序结构的纲要逻辑为:在分配操作时注意:为了能获得重复和选择的条件产生月报表seq打开文件读一张卡产生表头seq打印字符行产生表头end

温馨提示

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

评论

0/150

提交评论