结构化设计方法课件_第1页
结构化设计方法课件_第2页
结构化设计方法课件_第3页
结构化设计方法课件_第4页
结构化设计方法课件_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

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

文档简介

引言结构化开发方法(StructuredDevelopingMethod)

是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD法)及结构化程序设计方法(SP法)构成的。

结构化设计方法(SD法StructuredDesign)是结构化开发方法的核心,与SA法,SP法密切联系,主要完成软件系统的总体结构设计。面向数据流的设计方法又称结构化设计。结构化设计方法课件1传统的结构化软件设计有两种基本方法:(1)面向行为的设计如:面向数据流的设计方法基于数据处理过程建立软件结构,也称为结构化设计方法(SD)。(2)面向数据的设计如:Jackson(JSD)设计方法基于输入/输出数据结构设计软件结构。传统的结构化软件设计有两种基本方法:2

结构化设计方法概述设计先于编码”,这是软件工程“推迟实现”基本原则的又一体现。结构化设计方法(StructuredDesign,SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。结构化设计方法用模块结构图来表达程序模块之间的关系。软件设计分为两个阶段:概要设计详细设计结构化设计方法概述设计先于编码”,这是软件工程“推迟实现”3概要设计概要设计也称总体设计,确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。概要设计的主要任务是:将系统划分成模块;决定每个模块的功能;决定模块的调用关系;决定模块的界面,即模块间传递的数据。概要设计阶段的主要任务是通过数据流图来确定系统的结构图,并且对这些结构图进行分析和细化。在概要设计阶段,结构化设计主要采用面向数据流的设计方法。概要设计概要设计也称总体设计,确定软件的结构以及各组成成分(4详细设计详细设计就是在概要设计的基础上决定如何具体实现各模块的内部细节,直到对系统中的每个模块给出足够详细的过程描述。在编码实现阶段就可以完全按照详细设计的细节过程来映射到代码,最终实现整个系统。一般使用结构化程序设计工具来描述,如程序流程图(B-S流程图)、盒图(N-S流程图)、PAD图等。详细设计详细设计就是在概要设计的基础上决定如何具体实现各模块5数据流类型根据基本系统模型,数据信息必须以“外部”信息形式进入软件系统,经过内部处理以后再以“外部”的形式离开系统。基本思想:将系统设计成由相对独立、单一功能的模块组成的结构。有三种数据流类型:变换型数据流事务型数据流混合型数据流数据流类型根据基本系统模型,数据信息必须以“外部”信息形式进6变换型数据流信息可以通过各种路径进入系统,信息在“流”入系统的过程中由外部形式变换成内部数据形式,这被标识为输入流。在软件的核心,输入数据经过一系列加工处理,这被标识为变换流。通过变换处理后的输出数据,沿各种路径转换为外部形式“流”出软件,这被标识为输出流。整个数据流体现了以输入、变换、输出的顺序方式,沿一定路径前行的特征,这就是变换型数据流,简称变换流。变换型数据流信息可以通过各种路径进入系统,信息在“流”入系统7变换型数据流时间输入流输出流变换流信息

信息沿输入通路进入系统,同时由外部形式变换成内部形式;

进入系统的信息通过变换中心;经加工处理以后再沿输出通路变换成外部形式离开软件系统;

当数据流图具有这些特征时,这种信息流就叫作变换流。变换型数据流时间输入流输出流变换流信息信息82022/11/149变换流输入变换输出2022/11/119变换流输入变换输出9事务型数据流当数据流经过一个具有“事务中心”特征的数据处理时,它可以根据事务类型从多条路径的数据流中选择一条活动通路。这种具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称事务流。……活动通路……………………事务中心⊕⊕⊕事务型数据流事务型数据流当数据流经过一个具有“事务中心”特征的数据处理10事务流

原则上所有信息流都可以归结为变换流。当数据流图具有如图所示的形状时,这种数据流是“以事务为中心的”。数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类特殊的数据流,称为事务流,处理T称为事务中心,它完成下述任务:(1)接收输入数据(事务);(2)分析每个事务确定它的类型;(3)根据事务类型选取一条活动通路。事务流原则上所有信息流都可以归结为变换流。11混合型数据流在一个大型系统的DFD中,变换流和事务流往往会同时出现。例如,在一个事务型的DFD中,分支动作路径上的信息流也可能会体现出变换流的特征。这种具有将事务流和变换流组合出现,就是混合型数据流,简称混合流。混合型数据流1混合型数据流在一个大型系统的DFD中,变换流和事务流往往会同12混合型数据流2变换3……变换2传出数据传入数据事务中心变换1结果混合型数据流2变换3……变换2传出传入事务变换1结果139.3数据流设计方法面向数据流分析(DFA,DataFlowAnalysis)的设计是一种结构化的软件体系结构设计方法。面向数据流分析的设计能与大多数需求规格说明技术配合,可以使模块达到高内聚性(顺序性内聚)。这一设计技术是从数据流图(DFD)分析模型映射为软件模块组成结构设计的描述,所以也称为结构化设计(SD,StructuredDesign)方法。通常所说的结构化设计方法(简称SD方法),也就是基于数据流的设计方法。目标系统的DFD

SD目标系统的SC9.3数据流设计方法面向数据流分析(DFA,DataFl14数据流映射步骤复查基本系统模型,并精化系统数据流图;分析数据流类型,确定数据流具有变换流特征还是事务流特征:如果是变换流特征,确定输入流和输出流的边界(也分别称为最高输入/输出抽象点),输入流边界和输出流边界之间就是变换流,也称为“变换中心”。变换流加工处理的是某些形式的内部数据;如果是事务流特征,则可确定一个接收分支和一个发送分支。其中发送分支包含一个“事务中心”和各个事务动作流;采用自顶向下、逐步求精的方式完成模块分解,确定相应的软件组成结构;根据模块独立性原理和运用设计度量标准,对导出的软件结构进行优化。数据流映射步骤复查基本系统模型,并精化系统数据流图;15从DFD图导出SC图的步骤开始细化修改SRS中的DFD图判断DFD图的结构类型是变换型吗?F事务分析变换分析完善SC图T对最终的SC图进行评审结束从DFD图导出SC图的步骤开始细化修改SRS中判断D16变换流设计(变换分析)变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。变换流设计的要点是分析数据流图,确定输入流、输出流边界,根据输入、变换、输出三个数据流分支将软件映射成一个标准的“树型”体系结构。在有多个输入流和多个输出流时,应分别找出各个输入流和输出流的边界,即最高抽象点,然后分别连接这些输入流的最高抽象点和输出流的最高抽象点,分别形成输入边界和输出边界。变换流设计(变换分析)变换分析是一系列设计步骤的总称,经过这17检查顺序(物理输入)检查合理性扩充代码核对检查和修改压缩代码配检查和(逻辑输入)(逻辑输出)输入主加工输出卡片旧文件(物理输出)新文件

中心变换型(transformcenter)—

变换分析其特点是:DFD图可以明显分为“输入-处理-输出”三部分。检查(物理输入)检查扩充核对修改压缩配(逻辑输入)(逻辑输出18①确定主加工及逻辑输入/输出主加工—描述了系统的主要功能、特征。其特点是:输入/输出数据流较多,往往主加工不止一个。逻辑输入/输出—是指输入/输出主加工的数据流。输入流—是把物理输入转换为逻辑输入的数据流。输出流—是将逻辑输出转换为物理输出的数据流。②进行一级分解,设计上层模块

为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为每个主加工设计一个处理模块。FDC中心加工2号加工3号加工1号加工4号加工ABE

输入流转换流输出流

输入流转换流输出流MCICTCOCCDDCICTCO

变换分析技术变换分析①确定主加工及逻辑输入/输出②进行一级分解,设计上层模块19③进行二级分解,设计中下层模块

这一步的工作是自顶向下,逐步细化,为第一层的每一个输入模块、输出模块、处理模块设计它们的从属模块,设计下层模块的顺序是任意的。但一般是先设计输入模块的下层模块。处理C取B转换B转换D送EDDCCMCICTCOCCDDDCCDBBEE④进一步细化取A转换A转换E送FAABFFEDC中心加工2号加工3号加工1号加工4号加工AB

E

输入流转换流输出流转换流F⑤利用启发规则优化结构③进行二级分解,设计中下层模块处理C取B转换B转换D送ED20第一级分解的方法第二级分解的方法第一级分解的方法第二级分解的方法21第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数实例:输入流边界输出流边界有效的文件名单词总数格式化单词数验证文件名统计单词数格式化单词数读文件名文件名单词总数显示单词数文件名文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数格式化单词数显示单词数读文件名验证文件名第二次分解第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化22事务流设计(事务分析)事务流分析设计是把事务流映射成包含一个接收分支和一个发送分支的软件结构。接收分支的映射方法和变换流设计映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接收流通路的处理映射成一个个模块。发送分支结构包含了一个分类控制模块和它下层的各个动作模块。数据流图的每一个事务动作流路径应映射成与其自身信息流特征相一致的结构。事务流设计(事务分析)事务流分析设计是把事务流映射成包含一个23分类报名付款注销查询复审

事务处理型(transaction)—

事务分析这类数据流图可看成是对一个数据经过某种加工后,按加工的结果选择一个输出数据流继续执行的处理。分类报名付款注销查询复审事务处理型(transaction24①确定流界;首先从数据流图中找出事务流、事务处理中心和事务路径。对应模块图原始的数据流图IP1P2P3事物流事务中心事务处理事务控制接受事务发送事务P1P2P3②进行一级分析,设计上层模块;对事务中心设计“事物控制”模块;对事物流应设计“接受事物”模块;对事务路径,应设计“发送控制”模块。③进行二级分解,设计中下层模块;接受分支,用类似于变换处理型数据流图中对输入数据流的方法设计中下层。对于发送分支,在发送控制模块下为每条事务路径设计一个事务处理模块,这一层称为事务层。

事务分析技术事务分析①确定流界;首先从数据流图中找出事务流、事务处理中心和事务路25事务分析的映射方法结构化设计方法课件26事务流设计事务选择确定事务类型审计记录事务1事务2事务3事务4审计信息事务5更新事务v有效事务查询更新事务w有效事务存款更新事务x有效事务取款更新事务y有效事务转账更新事务z有效事务修改密码ATM机处理事务主控调度器更新文件查询编辑事务分析器事务选择存款转账取款修改密码ATM机系统结构映射成事务流设计事务选择确定事审计审计信息更新事务v有效查询更新事27混合流设计读入数据判别

订货处理

订货输入

提货发票进货输入

库存修改

进货票据

订单记录

分析统计生成统计表映射成混合流设计读入数据判别订货处理订货输入提货发票进货输28

设计优化应该力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单的数据结构。对于时间是决定性因素的应用场合,可能有必要在详细设计阶段,也可能在编写程序的过程中进行优化。软件开发人员应该认识到,程序中相对说比较小的部分(典型地,10%~20%),通常占用全部处理时间的大部分(50%~80%)。设计优化设计优化应该力求做到在有效的模块化的前提下使29用下述方法对时间起决定性作用的软件进行优化是合理的:在不考虑时间因素的前提下开发并精化软件结构;在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们的处理过程(算法),以求提高效率;使用高级程序设计语言编写程序;在软件中孤立出那些大量占用处理机资源的模块;必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码,以求提高效率。

上述优化方法遵守了一句格言:“先使它能工作,然后再使它快起来。”用下述方法对时间起决定性作用的软件进行优化是合理的:309.4面向数据的设计大多数软件本质上都是数据信息处理系统,而数据信息都有清楚的层次结构,即输入数据、内部存储信息、输出数据都可能有独特的数据结构。面向数据的设计原理就是根据软件操作的数据结构设计软件。适合于总体设计和详细设计“合而为一”的软件设计。面向数据的设计技术最常用的有Jackson方法(JacksonStructuredDesign,JSD)由数据结构导出它的程序结构是Jackson方法的基本思想。9.4面向数据的设计大多数软件本质上都是数据信息处理系统,31Jackson图Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观、可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。(a)顺序结构(b)选择结构(c)可选结构(d)重复结构BACDI(j)AB*S(i)BoDoACoBo—oAS(i)Jackson图Jackson图是Jackson方法分析和设32JSD方法设计步骤分析并确定问题的输入和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。找出输入数据结构和输出数据结构中有对应关系的数据单元。根据下述三条规则从数据结构的Jackson图导出程序结构的Jackson图。为每个有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。列出操作和条件,并把它们分配到程序结构图的适当位置。用某种形式的伪码给出程序结构图对应的过程性描述。JSD方法设计步骤分析并确定问题的输入和输出数据的逻辑结构,33JSD举例分析(Jackson图)JSD举例分析(Jackson图)34JSD举例分析(Jackson图)JSD举例分析(Jackson图)35输出数据输出数据结构输出数据输出数据结构36程序结构程序结构37三种基本控制结构三种基本控制结构38伪码

PROCESS_CUST_DATAseq

openPAY_FILE;openCUST_M_FILE;{分别打开支付文件和顾客主文件}

PROCESS_CNO_GROUPiteruntileof:PAY_FILE;{处理顾客号码组}

readPAY_FILE;{读支付文件一个记录}

PROCESS_CNO;{读顾客主文件一个记录,找老结余}

PROCESS_PAY_RECORDiteruntilend:CNO_GROUP;

{处理顾客号码组中每个支付记录}

writereportline;{写出报告行}

computetotalpayments;{计算总支付额}

readPAY_FILE;{读支付文件下一个记录}

PROCESS_PAY_RECORDend; {一位顾客数据处理完}

COMPUTE_CUST_TOTAL; {计算顾客总数}

COMPUTE_BALANCEseq {计算结余}

PROCESS_OLD_BALANCE; {处理老结余}

COMPUTE_NEW_BALANCE;{计算新结余)

writereportline;{写出报告行}

COMPUTE_BALANCEend;{计算结余完毕}

PROCESS_CNO_GROUPend;{支付文件处理完成}

PROCESS_CUST_DATAend;{SubstructurePROCESS_CUST_DATA}伪码PROCESS_CUST_DATAseq

399.5结构化程序设计方法详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述,并使设计出的处理过程尽可能简明易懂。常用的描述工具

-程序流程图(B-S流程图)

-盒图(N-S流程图)

-PAD图(问题分析图)

-HIPO图(层次加输入-处理-输出图)结构化程序设计技术是详细设计的逻辑基础。9.5结构化程序设计方法详细设计阶段的任务是开发一个可以直409.5结构化程序设计方法结构化程序设计的理念是在20世纪60年代,由Dijkstra等人提出并加以完善的。结构化的程序一般只需要用三种基本的逻辑结构就能实现。这三种基本逻辑结构是顺序结构、选择结构和循环结构。结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。9.5结构化程序设计方法结构化程序设计的理念是在20世纪6413种基本的控制结构1966年Bohm和Jacopini证明了只用3种基本的控制结构就能实现任何单入口单出口的程序。这3种基本的控制结构是:“顺序”、“选择”和“循环。为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两种控制结构。其他常用的控制结构3种基本的控制结构1966年Bohm和Jac42结构化程序设计优点自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。不使用GOTO语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致。因此,程序容易阅读和理解,开发时也比较容易保证程序的正确性,即使出现错误也比较容易诊断和改正。控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。程序的逻辑结构清晰,有利于程序正确性证明。结构化程序设计优点自顶向下逐步求精的方法符合人类解决复杂问题43结构程序设计的经典定义如下所述:“如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。”上述经典定义过于狭隘了,结构程序设计本质上并不是无GOTO语句的编程方法,而是一种使程序代码容易阅读、容易理解的编程方法。结构程序设计尽可能少用GOTO语句,最好仅在检测出错误时才使用GOTO语句。结构程序设计的经典定义如下所述:“如果一个程序的代码块仅仅通44

如果只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构,则称为经典的结构程序设计。如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构,则称为扩展的结构程序设计。如果再加上允许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计。如果只允许使用顺序、IF-THEN-ELSE型分45abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支选择结构先判定型循环结构选择结构后判定型循环结构程序流程图abX1X2X7X6X4X3X5higfedcjFTFFFT46如图所示的程序流程图描绘了一个非结构化的程序。问题:1.为什么说它是非结构化的?2.利用附加变量flag设计一个等价的结构化程序,用盒图描绘你的设计结果。3.不用附加变量,设计一个等价的结构化程序,用盒图描绘你的设计结果。答:1.程序的循环控制结构有两个出口,因此是非结构化的程序。2.如图1

。3.如图2

。图1图2如图所示的程序流程图描绘了一个非结构化的程序。问题:47结构化程序设计工具图形工具:把过程的细节表示成一个图的组成部分,在这个图上,逻辑构造用具体的图形来表示。列表工具:用一个表来表示过程的细节,这个表列出了各种操作及其相应的条件。也即,描述了输入、处理和输出信息。语言工具:用类语言来表示过程的细节,这种类语言很接近于编程语言。结构化程序设计工具图形工具:把过程的细节表示成一个图的组成部481.程序流程图(

B-S流程图)程序流程图又称为程序框图,Goldstine于1946年首先采用。从20世纪40年代末到70年代中期,程序流程图一直是软件设计的主要工具。它的主要优点是对控制流程的描绘很直观,便于初学者掌握。程序流程图的主要缺点:程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构;程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;程序流程图不易表示数据结构。1.程序流程图(B-S流程图)程序流程图又称为程序框图,49程序流程图符号(a)预处理(b)选择(c)多分支(d)循环上界(e)循环下界(f)开始/结束(g)准备(h)注释(i)虚线(j)省略(k)并行方式(l)控制流尽管它有种种缺点,许多人建议停止使用它,但至今仍在广泛使用着。不过总的趋势是越来越多的人不再使用程序流程图了。程序流程图符号(a)预处理(b)选择502.盒图(N-S流程图)盒图是由Nassi和Shneiderman提出的,所以又称为N-S图。每个处理步骤都用一个盒子来表示,这些处理步骤可以是语句或语句序列,在需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制。盒图具有下述特点:

—功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。

—由于只能从上边进入盒子然后从下面走出盒子,除此之外没有其它的入口和出口,所以盒图限制了任意的控制转移,保证程序有良好的结构。

—很容易确定局部和全程数据的作用域。

—很容易表现嵌套关系,也可以表示模块的层次结构。盒图很容易表示程序结构化的层次结构,确定局部和全局数据的作用域。由于没有箭头,因此不允许随意转移控制。2.盒图(N-S流程图)盒图是由Nassi和Shneide51盒图的基本符号结构化设计方法课件52ab条件1TF

Case

Xi,i=2,3,4X2X3X4当条件3成立条件2直到条件4成立直到条件成立cdefghij顺序结构选择结构多分支选择结构先判定型循环结构后判定型循环结构FTTFN-S图举例ab条件1TFCaseXi,i=2,53

PAD是问题分析图(problemanalysisdiagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

PAD图的基本原理:采用自顶向下、逐步细化和结构化设计的原则,力求将模糊的问题解的概念逐步转换为确定的和详尽的过程,使之最终可采用计算机直接进行处理。3.PAD图(问题分析图)PAD是问题分析图(problemanal54PAD图的基本符号结构化设计方法课件55PAD图的主要优点:使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。PAD图所描绘的程序结构十分清晰。图中最左边的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。既可用于表示程序逻辑,又可用于描绘数据结构。PAD图的主要优点:使用表示结构化控制结构的PAD符号设计出56使用PAD图提供的def功能来逐步求精的例子结构化设计方法课件574.HIPO图(层次加输入-处理-输出图)HIPO(HiberarchyPlusInput-Process-Output,层次加输入-处理-输出)图是根据IBM公司研制的软件设计与文件编制技术发展而来的。HIPO图采用功能框图和PDL来描述程序逻辑,它由两部分组成:可视目录表给出程序的层次关系体系框图:又称层次图(H图),是可视目录表的主体,用它表明各个功能的隶属关系图例:图形符号说明描述说明:每一框的补充说明IPO图则为程序各部分提供具体的工作细节4.HIPO图(层次加输入-处理-输出图)HIPO(Hib58盘存/销售系统工作流程图盘存/销售系统工作流程图59盘存/销售系统的可视目录表盘存/销售系统的可视目录表60IPO图IPO图61详细的IPO图详细的IPO图62

详细设计阶段设计出的模块质量如何呢?

定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量。定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。9.6程序复杂程度的定量度量详细设计阶段设计出的模块质量如何呢?9.6631.流图

McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。为了突出表示程序的控制流,人们通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。McCabe方法1.流图McCabe方法64程序流程图转化为流图(程序图)的一般过程:

(1)在流图中用圆表示结点,一个圆代表一条或多条语句。(2)程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。(3)流图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。(4)在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句(实际上相当于一个空语句)。(5)由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。

程序流程图转化为流图(程序图)的一般过程:65例:根据给出的程序流程图,画出它的程序图(流图),并计算它的McCabe复杂性度量。

例:根据给出的程序流程图,画出它的程序图(流图),并计算它的66

用任何方法表示的过程设计结果,都可以翻译成流图。

由PDL翻译成的流图用任何方法表示的过程设计结果,都可以翻译成流67由包含复合条件的PDL映射成的流图在条件中包含了一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)的复合条件下,应该把复合条件分解为若干个简单条件,每个简单条件对应流图中一个结点。包含条件的结点称为判定节点,从每个判定结点引出两条或多条边。由包含复合条件的PDL在条件中包含了一个或多682.计算环形复杂度的方法

环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。(1)流图中的区域数等于环形复杂度。(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。2.计算环形复杂度的方法693.环形复杂度的用途

程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。

McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明,模块规模以V(G)≤10为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。3.环形复杂度的用途70出卷系统出卷系统总控模块读出用户命令出卷试题管理试卷管理系统维护设置要求手动出卷自动出卷添加试题修改试题删除试题打印试卷修改试卷删除试卷课程维护样式管理①②③④⑤9.7案例分析①接口:没有输入参数,输出参数为用户命令。②接口:输入参数为出卷命令,没有输出参数。③接口:输入参数为设置试卷要求,没有输出参数。④接口:输入参数为手动出卷命令,没有输出参数。⑤接口:输入参数为自动出卷命令,没有输出参数。出卷系统出卷系统总控模块读出用户命令出卷试题管理试卷管理系统71自动出卷自动出卷读出试卷要求出卷显示试卷抽取试题评价写入试卷①②③④⑤⑥教师出卷要求试题试题试卷试题试题试卷获取出卷要求抽取试题评价出卷要求试卷出卷要求出卷要求分析出卷计算分值题型试题写入试卷显示试卷试题自动出卷自动出卷读出试卷要求出卷显示试卷抽取试题评价写入试卷72手动出卷手动出卷读出试卷要求出卷显示试卷筛选试题评价写入试卷选择试题①②③④⑤⑥⑦分析出卷挑选试题题型试题写入试卷显示试卷试题教师出卷要求试题试题试卷试题试题试卷获取出卷要求筛选试题计算分值出卷要求试卷出卷要求出卷要求手动出卷手动出卷读出试卷要求出卷显示试卷筛选试题评价写入试卷73图书馆系统图书馆系统74图书馆系统图书馆系统75维护管理系统维护管理系统76小结概要设计就是确定系统的模块以及模块之间的结构和关系,将软件的功能需求分配给所划分的最小单元模块。详细设计要确定数据结构、文件结构、数据库模式以及确定测试方法与策略。在概要设计阶段主要树立一个模块化的思想。将分析阶段的数据流图,将数据流进行分析。是变换流还是事务流,或者是两种的结合混合流。按照数据流到软件结构图的映射步骤将数据流图转化为系统的软件结构图。再对结构图进行分析、细化得到合理的软件模块结构。在软件模块确定后,就需要考虑为软件结构图中的每一个模块确定相应的算法和块内的数据结构,用结构化程序设计工具来描述。结构化程序设计工具通常以图形语言来描述,然后用PDL语言来加工。使得操作的步骤尽可能详细和清晰。在详细设计工具中主要有程序流程图、盒图、PAD图和HIPO图等。用面向数据结构的结构化程序设计方法JSD方法来详细描述程序的结构。小结概要设计就是确定系统的模块以及模块之间的结构和关系,将软77引言结构化开发方法(StructuredDevelopingMethod)

是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD法)及结构化程序设计方法(SP法)构成的。

结构化设计方法(SD法StructuredDesign)是结构化开发方法的核心,与SA法,SP法密切联系,主要完成软件系统的总体结构设计。面向数据流的设计方法又称结构化设计。结构化设计方法课件78传统的结构化软件设计有两种基本方法:(1)面向行为的设计如:面向数据流的设计方法基于数据处理过程建立软件结构,也称为结构化设计方法(SD)。(2)面向数据的设计如:Jackson(JSD)设计方法基于输入/输出数据结构设计软件结构。传统的结构化软件设计有两种基本方法:79

结构化设计方法概述设计先于编码”,这是软件工程“推迟实现”基本原则的又一体现。结构化设计方法(StructuredDesign,SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。结构化设计方法用模块结构图来表达程序模块之间的关系。软件设计分为两个阶段:概要设计详细设计结构化设计方法概述设计先于编码”,这是软件工程“推迟实现”80概要设计概要设计也称总体设计,确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。概要设计的主要任务是:将系统划分成模块;决定每个模块的功能;决定模块的调用关系;决定模块的界面,即模块间传递的数据。概要设计阶段的主要任务是通过数据流图来确定系统的结构图,并且对这些结构图进行分析和细化。在概要设计阶段,结构化设计主要采用面向数据流的设计方法。概要设计概要设计也称总体设计,确定软件的结构以及各组成成分(81详细设计详细设计就是在概要设计的基础上决定如何具体实现各模块的内部细节,直到对系统中的每个模块给出足够详细的过程描述。在编码实现阶段就可以完全按照详细设计的细节过程来映射到代码,最终实现整个系统。一般使用结构化程序设计工具来描述,如程序流程图(B-S流程图)、盒图(N-S流程图)、PAD图等。详细设计详细设计就是在概要设计的基础上决定如何具体实现各模块82数据流类型根据基本系统模型,数据信息必须以“外部”信息形式进入软件系统,经过内部处理以后再以“外部”的形式离开系统。基本思想:将系统设计成由相对独立、单一功能的模块组成的结构。有三种数据流类型:变换型数据流事务型数据流混合型数据流数据流类型根据基本系统模型,数据信息必须以“外部”信息形式进83变换型数据流信息可以通过各种路径进入系统,信息在“流”入系统的过程中由外部形式变换成内部数据形式,这被标识为输入流。在软件的核心,输入数据经过一系列加工处理,这被标识为变换流。通过变换处理后的输出数据,沿各种路径转换为外部形式“流”出软件,这被标识为输出流。整个数据流体现了以输入、变换、输出的顺序方式,沿一定路径前行的特征,这就是变换型数据流,简称变换流。变换型数据流信息可以通过各种路径进入系统,信息在“流”入系统84变换型数据流时间输入流输出流变换流信息

信息沿输入通路进入系统,同时由外部形式变换成内部形式;

进入系统的信息通过变换中心;经加工处理以后再沿输出通路变换成外部形式离开软件系统;

当数据流图具有这些特征时,这种信息流就叫作变换流。变换型数据流时间输入流输出流变换流信息信息852022/11/1486变换流输入变换输出2022/11/119变换流输入变换输出86事务型数据流当数据流经过一个具有“事务中心”特征的数据处理时,它可以根据事务类型从多条路径的数据流中选择一条活动通路。这种具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称事务流。……活动通路……………………事务中心⊕⊕⊕事务型数据流事务型数据流当数据流经过一个具有“事务中心”特征的数据处理87事务流

原则上所有信息流都可以归结为变换流。当数据流图具有如图所示的形状时,这种数据流是“以事务为中心的”。数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类特殊的数据流,称为事务流,处理T称为事务中心,它完成下述任务:(1)接收输入数据(事务);(2)分析每个事务确定它的类型;(3)根据事务类型选取一条活动通路。事务流原则上所有信息流都可以归结为变换流。88混合型数据流在一个大型系统的DFD中,变换流和事务流往往会同时出现。例如,在一个事务型的DFD中,分支动作路径上的信息流也可能会体现出变换流的特征。这种具有将事务流和变换流组合出现,就是混合型数据流,简称混合流。混合型数据流1混合型数据流在一个大型系统的DFD中,变换流和事务流往往会同89混合型数据流2变换3……变换2传出数据传入数据事务中心变换1结果混合型数据流2变换3……变换2传出传入事务变换1结果909.3数据流设计方法面向数据流分析(DFA,DataFlowAnalysis)的设计是一种结构化的软件体系结构设计方法。面向数据流分析的设计能与大多数需求规格说明技术配合,可以使模块达到高内聚性(顺序性内聚)。这一设计技术是从数据流图(DFD)分析模型映射为软件模块组成结构设计的描述,所以也称为结构化设计(SD,StructuredDesign)方法。通常所说的结构化设计方法(简称SD方法),也就是基于数据流的设计方法。目标系统的DFD

SD目标系统的SC9.3数据流设计方法面向数据流分析(DFA,DataFl91数据流映射步骤复查基本系统模型,并精化系统数据流图;分析数据流类型,确定数据流具有变换流特征还是事务流特征:如果是变换流特征,确定输入流和输出流的边界(也分别称为最高输入/输出抽象点),输入流边界和输出流边界之间就是变换流,也称为“变换中心”。变换流加工处理的是某些形式的内部数据;如果是事务流特征,则可确定一个接收分支和一个发送分支。其中发送分支包含一个“事务中心”和各个事务动作流;采用自顶向下、逐步求精的方式完成模块分解,确定相应的软件组成结构;根据模块独立性原理和运用设计度量标准,对导出的软件结构进行优化。数据流映射步骤复查基本系统模型,并精化系统数据流图;92从DFD图导出SC图的步骤开始细化修改SRS中的DFD图判断DFD图的结构类型是变换型吗?F事务分析变换分析完善SC图T对最终的SC图进行评审结束从DFD图导出SC图的步骤开始细化修改SRS中判断D93变换流设计(变换分析)变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。变换流设计的要点是分析数据流图,确定输入流、输出流边界,根据输入、变换、输出三个数据流分支将软件映射成一个标准的“树型”体系结构。在有多个输入流和多个输出流时,应分别找出各个输入流和输出流的边界,即最高抽象点,然后分别连接这些输入流的最高抽象点和输出流的最高抽象点,分别形成输入边界和输出边界。变换流设计(变换分析)变换分析是一系列设计步骤的总称,经过这94检查顺序(物理输入)检查合理性扩充代码核对检查和修改压缩代码配检查和(逻辑输入)(逻辑输出)输入主加工输出卡片旧文件(物理输出)新文件

中心变换型(transformcenter)—

变换分析其特点是:DFD图可以明显分为“输入-处理-输出”三部分。检查(物理输入)检查扩充核对修改压缩配(逻辑输入)(逻辑输出95①确定主加工及逻辑输入/输出主加工—描述了系统的主要功能、特征。其特点是:输入/输出数据流较多,往往主加工不止一个。逻辑输入/输出—是指输入/输出主加工的数据流。输入流—是把物理输入转换为逻辑输入的数据流。输出流—是将逻辑输出转换为物理输出的数据流。②进行一级分解,设计上层模块

为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为每个主加工设计一个处理模块。FDC中心加工2号加工3号加工1号加工4号加工ABE

输入流转换流输出流

输入流转换流输出流MCICTCOCCDDCICTCO

变换分析技术变换分析①确定主加工及逻辑输入/输出②进行一级分解,设计上层模块96③进行二级分解,设计中下层模块

这一步的工作是自顶向下,逐步细化,为第一层的每一个输入模块、输出模块、处理模块设计它们的从属模块,设计下层模块的顺序是任意的。但一般是先设计输入模块的下层模块。处理C取B转换B转换D送EDDCCMCICTCOCCDDDCCDBBEE④进一步细化取A转换A转换E送FAABFFEDC中心加工2号加工3号加工1号加工4号加工AB

E

输入流转换流输出流转换流F⑤利用启发规则优化结构③进行二级分解,设计中下层模块处理C取B转换B转换D送ED97第一级分解的方法第二级分解的方法第一级分解的方法第二级分解的方法98第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数实例:输入流边界输出流边界有效的文件名单词总数格式化单词数验证文件名统计单词数格式化单词数读文件名文件名单词总数显示单词数文件名文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数格式化单词数显示单词数读文件名验证文件名第二次分解第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化99事务流设计(事务分析)事务流分析设计是把事务流映射成包含一个接收分支和一个发送分支的软件结构。接收分支的映射方法和变换流设计映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接收流通路的处理映射成一个个模块。发送分支结构包含了一个分类控制模块和它下层的各个动作模块。数据流图的每一个事务动作流路径应映射成与其自身信息流特征相一致的结构。事务流设计(事务分析)事务流分析设计是把事务流映射成包含一个100分类报名付款注销查询复审

事务处理型(transaction)—

事务分析这类数据流图可看成是对一个数据经过某种加工后,按加工的结果选择一个输出数据流继续执行的处理。分类报名付款注销查询复审事务处理型(transaction101①确定流界;首先从数据流图中找出事务流、事务处理中心和事务路径。对应模块图原始的数据流图IP1P2P3事物流事务中心事务处理事务控制接受事务发送事务P1P2P3②进行一级分析,设计上层模块;对事务中心设计“事物控制”模块;对事物流应设计“接受事物”模块;对事务路径,应设计“发送控制”模块。③进行二级分解,设计中下层模块;接受分支,用类似于变换处理型数据流图中对输入数据流的方法设计中下层。对于发送分支,在发送控制模块下为每条事务路径设计一个事务处理模块,这一层称为事务层。

事务分析技术事务分析①确定流界;首先从数据流图中找出事务流、事务处理中心和事务路102事务分析的映射方法结构化设计方法课件103事务流设计事务选择确定事务类型审计记录事务1事务2事务3事务4审计信息事务5更新事务v有效事务查询更新事务w有效事务存款更新事务x有效事务取款更新事务y有效事务转账更新事务z有效事务修改密码ATM机处理事务主控调度器更新文件查询编辑事务分析器事务选择存款转账取款修改密码ATM机系统结构映射成事务流设计事务选择确定事审计审计信息更新事务v有效查询更新事104混合流设计读入数据判别

订货处理

订货输入

提货发票进货输入

库存修改

进货票据

订单记录

分析统计生成统计表映射成混合流设计读入数据判别订货处理订货输入提货发票进货输105

设计优化应该力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单的数据结构。对于时间是决定性因素的应用场合,可能有必要在详细设计阶段,也可能在编写程序的过程中进行优化。软件开发人员应该认识到,程序中相对说比较小的部分(典型地,10%~20%),通常占用全部处理时间的大部分(50%~80%)。设计优化设计优化应该力求做到在有效的模块化的前提下使106用下述方法对时间起决定性作用的软件进行优化是合理的:在不考虑时间因素的前提下开发并精化软件结构;在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们的处理过程(算法),以求提高效率;使用高级程序设计语言编写程序;在软件中孤立出那些大量占用处理机资源的模块;必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码,以求提高效率。

上述优化方法遵守了一句格言:“先使它能工作,然后再使它快起来。”用下述方法对时间起决定性作用的软件进行优化是合理的:1079.4面向数据的设计大多数软件本质上都是数据信息处理系统,而数据信息都有清楚的层次结构,即输入数据、内部存储信息、输出数据都可能有独特的数据结构。面向数据的设计原理就是根据软件操作的数据结构设计软件。适合于总体设计和详细设计“合而为一”的软件设计。面向数据的设计技术最常用的有Jackson方法(JacksonStructuredDesign,JSD)由数据结构导出它的程序结构是Jackson方法的基本思想。9.4面向数据的设计大多数软件本质上都是数据信息处理系统,108Jackson图Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观、可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。(a)顺序结构(b)选择结构(c)可选结构(d)重复结构BACDI(j)AB*S(i)BoDoACoBo—oAS(i)Jackson图Jackson图是Jackson方法分析和设109JSD方法设计步骤分析并确定问题的输入和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。找出输入数据结构和输出数据结构中有对应关系的数据单元。根据下述三条规则从数据结构的Jackson图导出程序结构的Jackson图。为每个有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框。根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。列出操作和条件,并把它们分配到程序结构图的适当位置。用某种形式的伪码给出程序结构图对应的过程性描述。JSD方法设计步骤分析并确定问题的输入和输出数据的逻辑结构,110JSD举例分析(Jackson图)JSD举例分析(Jackson图)111JSD举例分析(Jackson图)JSD举例分析(Jackson图)112输出数据输出数据结构输出数据输出数据结构113程序结构程序结构114三种基本控制结构三种基本控制结构115伪码

PROCESS_CUST_DATAseq

openPAY_FILE;openCUST_M_FILE;{分别打开支付文件和顾客主文件}

PROCESS_CNO_GROUPiteruntileof:PAY_FILE;{处理顾客号码组}

readPAY_FILE;{读支付文件一个记录}

PROCESS_CNO;{读顾客主文件一个记录,找老结余}

PROCESS_PAY_RECORDiteruntilend:CNO_GROUP;

{处理顾客号码组中每个支付记录}

writereportline;{写出报告行}

computetotalpayments;{计算总支付额}

readPAY_FILE;{读支付文件下一个记录}

PROCESS_PAY_RECORDend; {一位顾客数据处理完}

COMPUTE_CUST_TOTAL; {计算顾客总数}

COMPUTE_BALANCEseq {计算结余}

PROCESS_OLD_BALANCE; {处理老结余}

COMPUTE_NEW_BALANCE;{计算新结余)

writereportline;{写出报告行}

COMPUTE_BALANCEend;{计算结余完毕}

PROCESS_CNO_GROUPend;{支付文件处理完成}

PROCESS_CUST_DATAend;{SubstructurePROCESS_CUST_DATA}伪码PROCESS_CUST_DATAseq

1169.5结构化程序设计方法详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述,并使设计出的处理过程尽可能简明易懂。常用的描述工具

-程序流程图(B-S流程图)

-盒图(N-S流程图)

-PAD图(问题分析图)

-HIPO图(层次加输入-处理-输出图)结构化程序设计技术是详细设计的逻辑基础。9.5结构化程序设计方法详细设计阶段的任务是开发一个可以直1179.5结构化程序设计方法结构化程序设计的理念是在20世纪60年代,由Dijkstra等人提出并加以完善的。结构化的程序一般只需要用三种基本的逻辑结构就能实现。这三种基本逻辑结构是顺序结构、选择结构和循环结构。结构化程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。9.5结构化程序设计方法结构化程序设计的理念是在20世纪61183种基本的控制结构1966年Bohm和Jacopini证明了只用3种基本的控制结构就能实现任何单入口单出口的程序。这3种基本的控制结构是:“顺序”、“选择”和“循环。为了实际使用方便起见,常常还允许使用DO-UNTIL和DO-CASE两种控制结构。其他常用的控制结构3种基本的控制结构1966年Bohm和Jac119结构化程序设计优点自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。不使用GOTO语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致。因此,程序容易阅读和理解,开发时也比较容易保证程序的正确性,即使出现错误也比较容易诊断和改正。控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式,因此源程序清晰流畅,易读易懂而且容易测试。程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。程序的逻辑结构清晰,有利于程序正确性证明。结构化程序设计优点自顶向下逐步求精的方法符合人类解决复杂问题120结构程序设计的经典定义如下所述:“如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。”上述经典定义过于狭隘了,结构程序设计本质上并不是无GOTO语句的编程方法,而是一种使程序代码容易阅读、容易理解的编程方法。结构程序设计尽可能少用GOTO语句,最好仅在检测出错误时才使用GOTO语句。结构程序设计的经典定义如下所述:“如果一个程序的代码块仅仅通121

如果只允许使用顺序、IF-THEN-ELSE型分支和DO-WHILE型循环这3种基本控制结构,则称为经典的结构程序设计。如果除了上述3种基本控制结构之外,还允许使用DO-CASE型多分支结构和DO-UNTIL型循环结构,则称为扩展的结构程序设计。如果再加上允许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计。如果只允许使用顺序、IF-THEN-ELSE型分122abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支选择结构先判定型循环结构选择结构后判定型循环结构程序流程图abX1X2X7X6X4X3X5higfedcjFTFFFT123如图所示的程序流程图描绘了一个非结构化的程序。问题:1.为什么说它是非结构化的?2.利用附加变量flag设计一个等价的结构化程序,用盒图描绘你的设计结果。3.不用附加变量,设计一个等价的结构化程序,用盒图描绘你的设计结果。答:1.程序的循环控制结构有两个出口,因此是非结构化的程序。2.如图1

。3.如图2

。图1图2如图所示的程序流程图描绘了一个非结构化的程序。问题:124结构化程序设计工具图形工具:把过程的细节表示成一个图的组成部分,在这个图上,逻辑构造用具体的图形来表示。列表工具:用一个表来表示过程的细节,这个表列出了各种操作及其相应的条件。也即,描述了输入、处理和输出信息。语言工具:用类语言来表示过程的细节,这种类语言很接近于编程语言。结构化程序设计工具图形工具:把过程的细节表示成一个图的组成部1251.程序流程图(

B-S流程图)程序流程图又称为程序框图,Goldstine于1946年首先采用。从20世纪40年代末到70年代中期,程序流程图一直是软件设计的主要工具。它的主要优点是对控制流程的描绘很直观,便于初学者掌握。程序流程图的主要缺点:程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构;程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;程序流程图不易表示数据结构。1.程序流程图(B-S流程图)程序流程图又称为程序框图,126程序流程图符号(a)预处理(b)选择(c)多分支(d)循环上界(e)循环下界(f)开始/结束(g)准备(h)注释(i)虚线(j)省略(k)并行方式(l)控制流尽管它有种种缺点,许多人建议停止使用它,但至今仍在广泛使用着。不过总的趋势是越来越多的人不再使用程序流程图了。程序流程图符号(a)预处理(b)选择1272.盒图(N-S流程图)盒图是由Nassi和Shneiderman提出的,所以又称为N-S图。每个处理步骤都用一个盒子来表示,这些处理步骤可以是语句或语句序列,在需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制。盒图具有下述特点:

—功能域(即,一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。

—由于只能从上边进入盒子然后从下面走出盒子,除此之外没有其它的入口和出口,所以盒图限制了任意的控制转移,保证程序有良好的结构。

—很容易确定局部和全程数据的作用域。

—很容易表现嵌套关系,也可以表示模块的层次结构。盒图很容易表示程序结构化的层次结构,确定局部和全局数据的作用域。由于没有箭头,因此不允许随意转移控制。2.盒图(N-S流程图)盒图是由Nassi和Shneide128盒图的基本符号结构化设计方法课件129ab条件1TF

Case

Xi,i=2,3,4X2X3X4当条件3成立条件2直到条件4成立直到条件成立cdefghij顺序结构选择结构多分支选择结构先判定型循环结构后判定型循环结构FTTFN-S图举例ab条件1TFCaseXi,i=2,130

PAD是问题分析图(problemanalysisdiagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。

温馨提示

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

评论

0/150

提交评论