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

下载本文档

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

文档简介

软件工程导论

〔第4版〕普通高校本科计算机专业特色教材精选张海藩编著第6章详细设计主要内容6.4面向数据结构的设计方法6.5程序复杂程度的定量度量教学重点Jackson图、McCabe方法。程序流程图NNNNYYYY开始2000→ty不能被4整除y不能被100整除打印y“是闰年”结束y>2500y+1→y打印y“不是闰年”打印y“是闰年”y不能被400整除打印y“不是闰年”判定闰年的算法盒图:判定闰年的算法2000=〉yy+1=〉y直到y>2500y/4的余数为0打印y“是闰年”打印y“非闰年”打印y“是闰年”打印y“非闰年”y/400的余数为0y/100的余数不为0是是是否否否判定表例如:行李托运费规则判定树例如:行李托运费6.3续伪码例如:判定闰年的算法内层选择结构中层选择结构外层选择结构6.4面向数据结构的设计方法面向数据的分析方法分类:⑴面向数据流⑵面向数据结构特点:⑴以信息对象及其操作为核心进行分析,与面向对象分析有相似之处。⑵认为复合信息对象具有层次结构,并且可按顺序、选择、重复三种结构分解为成员信息对象。⑶提供将层次信息结构映射为程序结构的机制,从而为软件设计奠定较好的根底。6.4续面向数据结构的设计方法目标:得出对程序处理过程的描述。数据结构软件所处理的信息的组织结构,相互之间存在一种或多种特定关系的数据元素的集合。面向数据结构的设计方法,也就是用面向数据结构作为程序设计的根底。数据结构与程序结构:重复出现的数据通常由具有循环控制结构的程序来处理;选择数据要用带有分支控制结构的程序来处理;层次的数据组织通常和使用这些数据的程序的层次结构十分相似。方法:Jackson方法、Warnier方法6.4续Warnier图例如标题新闻国内新闻本地新闻股市行情(0,1)商业新闻广告(1,5)文化、体育新闻散文

新书评论文化体育版首版商业金融版报纸6.4续Jackson图数据结构中,各数据元素彼此间的逻辑关系归结起来只有顺序、选择和重复三类根本结构。⑴顺序结构顺序结构的数据由一个或多个数据元素组成,每个元素按确定次序出现一次。A由B、C、D3个元素顺序组成(每个元素只出现一次,出现的次序依次是B、C、D)6.4续Jackson图⑵选择结构选择结构的数据包含两个或多个数据元素,每次使用这个数据时按一定条件从这些数据元素中选择一个。根据条件A选B或C或D中的某一个6.4续Jackson图⑶重复结构重复结构的数据,根据使用时的条件由一个数据元素出现零次或屡次构成。A由B出现N次(N≥0)组成6.4续Jackson图优点:⑴Jackson图不仅便于表示层次结构,而且也有利于对结构自顶向下分解;⑵Jackson图形象直观,可读性好;⑶Jackson图不仅能表示数据结构,也能表示程序结构。缺点:⑴在选择结构和重复结构中,选择条件或循环结束条件不能直接在Jackson图中表示出来,影响了图形的表达能力,也不利于直接把图翻译成程序。⑵框间连线为斜线,不易在行式打印机上输出。6.4续改进的Jackson图ABCD顺序结构(B、C、D中任一个都不能使选择出现或重复出现的数据元素)A由B、C、D3个元素顺序组成6.4续改进的Jackson图A

D°选择结构(S右面括号中的数字i是分支条件的编号)S(i)根据条件A选B或C或D中的某一个6.4续改进的Jackson图A

-°S(i)可选结构(A或者是元素B或者不出现)6.4续改进的Jackson图重复结构(循环结束符号的编号为i)AB*I(i)A由B出现N次(N≥0)组成6.4续层次图例如:6.4续层次方框图例如6.4续Jackson图Jackson图与层次图⑴层次图中的一个方框通常代表一个模块;在Jackson图中,一个方框通常只代表几个语句。⑵层次图表现的是调用关系;而Jackson图表现的是组成关系。Jackson图与层次方框图Jackson图是对层次方框图的一种细化。6.4续Jackson方法1975年,英国人提出了软件工程领域中著名的Jackson方法,当时它只用于软件设计。1983年,Jackson又对它进行了多方面的扩充和完善,又应用于需求分析过程中。核心思想:根据作用于数据的操作序列的结构〔顺序、选择、重复〕,建立目标软件系统的模型,然后将其转换为相应的程序结构。6.4续Jackson方法设计步骤⑴分析并确定输入数据和输出数据的逻辑结构,并用Jackson图表示这些数据结构。⑵找出输入数据结构和输出数据结构中有对应关系的数据单元。⑶按一定的规那么从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。⑷列出所有操作与条件,并把它们分配到程序结构图的适当位置。⑸用伪代码写出程序。6.4续Jackson方法设计例如1一个正文文件由假设干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。6.4续步骤Ⅰ—数据结构表示对要求解的问题进行分析,确定输入数据和输出数据的逻辑结构,并用Jackson图描述这些数据结构。正文文本字符串*字符*空格°非空格°IIS输入数据的Jackson图串信息*表格体空格总数输出表格字符串空格数输出数据的Jackson图6.4续步骤Ⅱ—找出输入数据结构和输出数据结构的对应关系所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元。需要注意的是,对于重复的数据单元,必须是重复的次序与次数都相同才有可能有对应关系。6.4续步骤Ⅲ—确定程序结构图由Jackson图导出相应的程序结构图的规那么:⑴为每对有对应关系的数据单元,按照它们在数据结构图中所处的层次,在程序结构图中的相应层次画一个处理框。如果这对数据单元在输入数据结构图和输出数据结构图中所处的层次不同,那么应以它们在输入数据结构图和输出数据结构图中层次较低的那个层次作为它们在程序结构图中的处理框所处的层次。⑵对于输入数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框;⑶对于输出数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框。6.4续步骤Ⅲ—确定程序结构图实质上,这一步是一个综合的过程:每对有对应关系的数据单元合画一个处理框,没有对应关系的数据单元那么各画一个处理框。6.4续步骤Ⅳ—列出并分配所有操作和条件列出所有操作和条件〔包括分支条件和循环结束条件〕,并把它们分配到程序结构图的适当位置。操作:⑴停止⑵翻开文件⑶关闭文件⑷印出字符串⑸印出空格数目⑹印出空格总数⑺sum:=sum+1⑻totalsum:=totalsum+sum⑼读入字符串⑽sum:=0⑾totalsum:=0⑿point:=1⒀pointer:=pointer+1条件:I⑴文件结束I⑵字符串结束S⑶字符是空格6.4续步骤Ⅳ—列出并分配所有操作和条件把操作和条件分配到程序结构图的适当位置

6.4续步骤Ⅴ—用伪码表示程序Jackson方法中使用的伪码与Jackson图是完全对应的。针对三种根本程序结构,有相对应的Jackson伪码。⑴顺序结构AseqBCDAendABCD6.4续步骤Ⅴ—用伪码表示程序⑵选择结构Aselectcond1BAorcond2CAorcond3DAendA

D°S(i)⑶重复结构Aiteruntil(或while)condBAendAB*I(i)6.4续步骤Ⅴ—用伪码表示程序用Jackson伪码描述的程序:统计空格seq 翻开文件 读入字符串 totalsum∶=0 程序体iteruntil文件结束 处理字符串seq 印字符串seq 印出字符串 印字符串end sum∶=0 pointer∶=1

6.4续步骤Ⅴ—用伪码表示程序分析字符串iteruntil字符串结束

分析字符select字符是空格处理空格seq sum∶=sum+1 pointer∶=pointer+1

处理空格end

分析字符or字符不是空格

处理非空格seq pointer∶=pointer+1

处理非空格end

分析字符end

分析字符串end

6.4续步骤Ⅴ—用伪码表示程序印空格数seq

印出空格数目 印空格数end

totalsum∶=totalsum+sum 读入字符串 处理字符串end

程序体end

印总数seq 印出空格总数 印总数end

关闭文件 停止统计空格end6.4续Jackson方法设计例如2例:高考后将考生的根本情况文件〔简称考生根本情况文件〕和考生高考成绩文件〔简称考分文件〕合并成一个新文件〔简称考生新文件〕。考生根本情况文件和考分文件都是由考生记录组成的。为简便起见,考生根本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。6.4续步骤Ⅰ—数据结构表示对要求解的问题进行分析,确定输入数据和输出数据的逻辑结构,并用Jackson图描述这些数据结构。6.4续步骤Ⅱ—找出输入数据结构和输出数据结构的对应关系所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元。需要注意的是,对于重复的数据单元,必须是重复的次序与次数都相同才有可能有对应关系。6.4续步骤Ⅲ—确定程序结构图实质上,这一步是一个综合的过程:每对有对应关系的数据单元合画一个处理框,没有对应关系的数据单元那么各画一个处理框。6.4续步骤Ⅳ—列出并分配所有操作和条件列出所有操作和条件〔包括分支条件和循环结束条件〕,并把它们分配到程序结构图的适当位置。操作:⑴停止;⑵翻开两个输入文件;⑶建立输出文件。⑷从输入文件中各读一条记录。⑸生成一条新记录。⑹将新记录写入输出文件。⑺关闭全部文件。条件:I⑴文件结束。6.4续步骤Ⅳ—列出并分配所有操作和条件把操作和条件分配到程序结构图的适当位置

6.4续步骤Ⅴ—用伪码表示程序用Jackson伪码描述的程序:产生新文件seq翻开两个输入文件从输入文件中各读一条记录分析考生记录iteruntil文件结束处理考生记录seq产生准考证号产生姓名产生通讯地址产生考分生成一条新记录将新记录写入输出文件从输入文件中各读一条记录处理考生记录end分析考生记录end关闭全部文件停止产生新文件end6.4续Jackson方法小结⑴关于结构冲突问题。输入数据和输出数据结构之间找不到对应关系的情况,称为结构冲突。引入中间数据结构或中间文件的方法,将冲突总分分隔开来,建立多个程序结构,再利用中间文件把它们联系起来,构成一个系统的整体。⑵JSP方法主要表达程序结构的设计,不明确地划分软件总体设计和详细设计的两个阶段。根据它能直接推出程序结构的规那么,可以将它与SD方法相结合,用SD方法设计体系结构,用JSP方法设计它的局部模块。⑶JSP方法主要用于规模不大的数据处理系统,输入、输出数据结构能较容易地描述出来的情况。对于较大的系统,涉及很多输入、输出数据,其结构又不互相对应的情况,用JSP方法解决要困难一些。6.5程序复杂程度的定量度量定性度量软件设计根本原理⑴模块化⑵抽象⑶逐步求精⑷信息隐藏和局部化⑸模块独立6.5续定量度量价值:⑴把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量;⑵定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;⑶程序的定量的复杂程度可以作为模块规模的精确限度。方法:⑴McCabe方法⑵Halstead方法。6.5续McCabe方法——流图流图实质上是一种简化了的程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。程序流程图中的各种框〔包括处理框,判定框等〕,在流图中都被简化为一个用圆圈表示的结点。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。6.5续McCabe方法——流图从图论的观点看,流图是一个可以用G=<N,E>来表示的有向图。其中N表示结点,可以取代程序流程图中的各种框;E代表有向边,用以指明程序的控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句(实际上相当于一个空语句)。由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。6.5续McCabe方法——流图6.5续McCabe方法——流图流图可以由程序流程图导出,也可直接由PAD图或代码等其它详细设计表达工具变换获得。当过程设计中包含复合条件时,应该把复合条件分解为假设干个简单条件,每个简单条件对应流图中一个结点。包含条件的结点称为判定节点,从每个判定结点引出两条或多条边。6.5续McCabe方法——流图6.5续McCabe方法——流图6.5续McCabe方法McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度——环形复杂度。环形复杂度定量度量程序的逻辑复杂度。程序的环形复杂度取决于程序控制流的复杂程度,即取决于程序结构的复杂程度。在对结构复杂性进行度量的时候,关心的仅是程序的流程,并不关心各个框的细节。流图保存了控制流的全部轨迹,舍弃了不需要的内容,从而使画面更加简洁,更好地适应了度量的需要。6.5续计算环形复杂度的方法利用流图计算环形复杂度:⑴流图中的区域数等于环形复杂度。⑵流图G的环形复杂度V(G)=E–N+2,其中,E是流图中边的条数,N是结点数。⑶流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。上述3种方法中的任何一种都可计算出程序的环形复杂度。6.5续计算环形复杂度的方法6.5续计算环形复杂度⑴流图中的区域数等于环形复杂度。

温馨提示

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

评论

0/150

提交评论