版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-5-191教学内容 详细设计的目的、原则、过程;详细设计说明书;详细设计工具;结构化程序(chngx)(chngx)设计方法;面向数据结构的设计方法;环形复杂度的度量方法和文本复杂度的度量方法;人- -机界面设计要点。教学要求 1 1熟练掌握:详细设计工具,包括图形工具(程序(chngx)(chngx)流程图、N-SN-S图和PADPAD图)、表格工具(判定表和判定树)、语言工具(PDLPDL语言);结构化程序(chngx)(chngx)设计方法;环形复杂度的度量方法。 2 2一般掌握:详细设计的目的、原则、过程;人- -机界面设计的要求与设计、实现原则。 3 3了解:详细设计文档;
2、面向数据结构的设计方法;文本复杂度的度量方法。 第1页/共70页第一页,共71页。2022-5-1927.1 详细(xingx)设计概述 1 1详细设计详细设计( (过程设计过程设计) )目的目的 目的是为系统结构图中的每一个模块确定采用的算法和块内数据流图,用某种选定的表达工具目的是为系统结构图中的每一个模块确定采用的算法和块内数据流图,用某种选定的表达工具给出清晰的描述,使程序员可以将这种描述直接翻译为某种语言程序。给出清晰的描述,使程序员可以将这种描述直接翻译为某种语言程序。 2 2详细设计的原则详细设计的原则 为了能够使模块的逻辑描述清晰准确,在详细设计阶段应遵循下列原则。为了能够使模
3、块的逻辑描述清晰准确,在详细设计阶段应遵循下列原则。 (1) (1) 将保证程序的清晰度放在首位将保证程序的清晰度放在首位 (2) (2) 设计过程中应采用逐步细化的实现方法设计过程中应采用逐步细化的实现方法 (3) (3) 选择选择(xunz)(xunz)适当的表达工具适当的表达工具 第2页/共70页第二页,共71页。2022-5-193 3 3详细设计的过程详细设计的过程 (1 1)为每个模块确定采用的算法,并用适当的工具表达算法的过程,给出详细的描述)为每个模块确定采用的算法,并用适当的工具表达算法的过程,给出详细的描述(mio sh)(mio sh); (2 2)确定每一模块使用的数据
4、结构和模块接口的细节,包括内部接口、外部接口、模块的输入、输出)确定每一模块使用的数据结构和模块接口的细节,包括内部接口、外部接口、模块的输入、输出及局部数据等;及局部数据等; (3 3)为每个模块设计一组测试用例,以便在编码阶段对模块代码进行预定的测试;)为每个模块设计一组测试用例,以便在编码阶段对模块代码进行预定的测试; (4 4)编写详细设计说明书,提交复审。)编写详细设计说明书,提交复审。 第3页/共70页第三页,共71页。2022-5-194 4 4详细设计说明书详细设计说明书 (1) (1) 引言:用于说明编写引言:用于说明编写(binxi)(binxi)本说明书的目的、背景,定义
5、所用到的术语和缩略语,以及列本说明书的目的、背景,定义所用到的术语和缩略语,以及列出文档中所引用的参考资料等。出文档中所引用的参考资料等。 (2) (2) 总体设计:用于给出软件系统的体系结构图。总体设计:用于给出软件系统的体系结构图。 (3) (3) 模块描述:依次对各个模块进行详细的描述,主要包括模块的功能和性能、实现模块功能的算法、模块描述:依次对各个模块进行详细的描述,主要包括模块的功能和性能、实现模块功能的算法、模块的输入及输出、模块接口的详细信息等。模块的输入及输出、模块接口的详细信息等。 参见参见GB8567-2006GB8567-2006计算机软件文档编制规范。计算机软件文档编
6、制规范。第4页/共70页第四页,共71页。2022-5-1957.2 详细(xingx)设计的工具 描述程序处理过程的工具描述程序处理过程的工具(gngj)(gngj)称为过程设计工具称为过程设计工具(gngj)(gngj),它们可以分为图形、表格和语言,它们可以分为图形、表格和语言三类。三类。 1 1图形工具图形工具(gngj)(gngj):包括程序流程图、:包括程序流程图、N-SN-S图和图和PADPAD图;图; 2 2表格工具表格工具(gngj)(gngj):包括判定表和判定树;:包括判定表和判定树; 3 3语言工具语言工具(gngj)(gngj):包括:包括PDLPDL语言。语言。 第
7、5页/共70页第五页,共71页。2022-5-1961程序(chngx)流程图 程序流程图也称为程序流程图也称为(chn(chn wi) wi)程序框图,它是历史最悠久、使用最广泛的一种描述程序逻辑结构程序框图,它是历史最悠久、使用最广泛的一种描述程序逻辑结构的工具。的工具。1 1)程序流程图的符号和表示方式)程序流程图的符号和表示方式 程序流程图常用的基本符号如图所示。程序流程图常用的基本符号如图所示。 第6页/共70页第六页,共71页。2022-5-197用程序流程图表达的三种用程序流程图表达的三种(sn zhn(sn zhn) )基本控制结构如图所示。基本控制结构如图所示。第7页/共70
8、页第七页,共71页。2022-5-1982 2)程序流程图的实例)程序流程图的实例例:求一组数中的最大值,画出程序流程图。例:求一组数中的最大值,画出程序流程图。 将这组数存于一个数组将这组数存于一个数组A A中,用语言描述其计算过程中,用语言描述其计算过程(guchng)(guchng):(1 1)输入一个数组)输入一个数组A A,元素个数为,元素个数为N N;(2 2)令最大数)令最大数MAX=AMAX=A(1 1)(数组中的第)(数组中的第1 1元素);元素);(3 3)从)从A A(2 2)至)至A A(N N)(即第)(即第2 2个元素至最末一个元素)依次与最大数个元素至最末一个元素
9、)依次与最大数MAXMAX进行比较;进行比较;(4 4)如新元素)如新元素MAXMAX,则,则MAX=MAX=新元素;新元素;(5 5)输出最大数)输出最大数MAXMAX。第8页/共70页第八页,共71页。2022-5-199用程序用程序(chngx)(chngx)流程图来描述这一算法的过程,结果如图所示。流程图来描述这一算法的过程,结果如图所示。图7-3 用程序(chngx)流程图描述的求最大值的算法第9页/共70页第九页,共71页。2022-5-1910 3 3)程序流程图的优缺点)程序流程图的优缺点优点:比较直观、清晰,使用灵活,便于阅读和掌握。优点:比较直观、清晰,使用灵活,便于阅读和
10、掌握。 缺点:缺点: 可以随心所欲地画控制流程线的流向,容易造成非结构化可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构,编码时势必不加限制地使用的程序结构,编码时势必不加限制地使用GOTOGOTO语句语句(yj)(yj),导,导致基本控制块多入口多出口,这样会使系统质量受到影响,与系致基本控制块多入口多出口,这样会使系统质量受到影响,与系统设计的原则相违背;统设计的原则相违背; 程序流程图本质上不支持逐步求精,它使程序员容易过早程序流程图本质上不支持逐步求精,它使程序员容易过早地考虑程序的具体控制流程,而忽略了程序的全局结构;地考虑程序的具体控制流程,而忽略了程序的全局结构; 程
11、序流程图难以表示系统中的数据结构;程序流程图难以表示系统中的数据结构; 对于大型系统而言,程序流程图描述过于琐碎,不容易阅对于大型系统而言,程序流程图描述过于琐碎,不容易阅读和修改。读和修改。 为了克服程序流程图的缺陷,要求程序流程图都应由三种为了克服程序流程图的缺陷,要求程序流程图都应由三种基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,基本控制结构顺序组合和完整嵌套而成,不能有相互交叉的情况,这样的程序流程图才是结构化的程序流程图。这样的程序流程图才是结构化的程序流程图。 第10页/共70页第十页,共71页。2022-5-19112盒图 盒图(盒图(N-SN-S图)是由图)是由N
12、assiNassi和和ShneidermanShneiderman 按照结构化的程序设计要求提出按照结构化的程序设计要求提出(t ch)(t ch)的描述一种图的描述一种图形算法工具。形算法工具。 1 1)盒图的表示方式)盒图的表示方式 用盒图表达的三种基本控制结构如图所示。用盒图表达的三种基本控制结构如图所示。 第11页/共70页第十一页,共71页。2022-5-1912 2 2)盒图的实例)盒图的实例 以前面以前面(qin mian)(qin mian)求一组数中最大值的算法为例,如用盒图描述,结果如图求一组数中最大值的算法为例,如用盒图描述,结果如图7-7-5 5所示。所示。 第12页/
13、共70页第十二页,共71页。2022-5-1913 3 3)盒图的优缺点)盒图的优缺点 盒图有如下一些优点:盒图有如下一些优点: 所有的程序结构均用方框来表示,无论并列或者所有的程序结构均用方框来表示,无论并列或者(huzh)(huzh)嵌套,程序的结构嵌套,程序的结构清晰可见;清晰可见; 它的控制转移不能任意规定,必须遵守结构化程序设计的要求;它的控制转移不能任意规定,必须遵守结构化程序设计的要求; 很容易确定局部和全程数据的作用域;很容易确定局部和全程数据的作用域; 很容易表现嵌套关系,也可以表示模块的层次结构。很容易表现嵌套关系,也可以表示模块的层次结构。盒图不足的是,当程序内嵌套的层数
14、增多时,内层的方块越画越小,不仅会增加画盒图不足的是,当程序内嵌套的层数增多时,内层的方块越画越小,不仅会增加画图的困难,并将使图形的清晰性受到影响;当需要对设计进行修改时,盒图的修改工作图的困难,并将使图形的清晰性受到影响;当需要对设计进行修改时,盒图的修改工作量会很大。量会很大。 第13页/共70页第十三页,共71页。2022-5-19143PAD图PAD (Problem Analysis Diagram)-PAD (Problem Analysis Diagram)-问题分析图问题分析图PADPAD图的基本原理是:采用自顶向下、逐步细化和结构设计的原则,将模糊的问题解的概念逐步转换为确
15、定的图的基本原理是:采用自顶向下、逐步细化和结构设计的原则,将模糊的问题解的概念逐步转换为确定的和详尽的过程,使之最终可采用计算机直接和详尽的过程,使之最终可采用计算机直接(zhji)(zhji)进行处理。进行处理。 1 1) PAD PAD图的表示方式图的表示方式 用用PADPAD图表达的三种基本控制结构如图所示。图表达的三种基本控制结构如图所示。 第14页/共70页第十四页,共71页。2022-5-19152) PAD2) PAD图的实例图的实例 以前面以前面(qin mian)(qin mian)求一组数中最大值的算法为例,如用求一组数中最大值的算法为例,如用PADPAD图来描述,结果如
16、图图来描述,结果如图所示。所示。 第15页/共70页第十五页,共71页。2022-5-1916 3 3)PADPAD图的优缺点图的优缺点PADPAD图的主要优点如下:图的主要优点如下: 支持自顶向下,逐步求精的要求;支持自顶向下,逐步求精的要求; PAD PAD图满足结构化程序设计要求,因此采用图满足结构化程序设计要求,因此采用(ciyng)PAD(ciyng)PAD图导出的程序必然图导出的程序必然是结构化的;是结构化的; PAD PAD图描述的算法结构清晰、易读易懂、使用方便。图中每条竖线表示一个嵌套图描述的算法结构清晰、易读易懂、使用方便。图中每条竖线表示一个嵌套层次,图示随层次增加向右伸
17、展;层次,图示随层次增加向右伸展; PAD PAD图既可以描述控制,也可以描述数据结构,很容易将图既可以描述控制,也可以描述数据结构,很容易将PADPAD图描述的算法转换图描述的算法转换为源程序代码;为源程序代码; 可自动生成程序。可自动生成程序。 与程序流程图和盒图相比,与程序流程图和盒图相比,PADPAD图的使用不是很普遍。图的使用不是很普遍。 第16页/共70页第十六页,共71页。2022-5-19174综合(zngh)实例 下面分别下面分别(fnbi)(fnbi)使用程序流程图、使用程序流程图、盒图和盒图和PADPAD图来表达计算应发工资模块图来表达计算应发工资模块的算法过程,结果如图
18、所示。的算法过程,结果如图所示。(a)采用程序(chngx)流程图描述计算应发工资模块第17页/共70页第十七页,共71页。2022-5-1918 (b) (b) 采用N NS S图描述计算应发工资模块 (c) (c) 采用PADPAD图描述计算应发工资模块 图7-8 7-8 三种详细设计(shj)(shj)中使用的图形工具示例 第18页/共70页第十八页,共71页。2022-5-1919 5判定(pndng)表和判定(pndng)树 请分别用判定表和判定树工具来描述某单位工资档案管理系统中请分别用判定表和判定树工具来描述某单位工资档案管理系统中“职务津贴计算职务津贴计算”加工逻辑过程。加工逻
19、辑过程。 假定职工的职称只分为助工、工程师和高工三种,保低津贴分别是假定职工的职称只分为助工、工程师和高工三种,保低津贴分别是350350、400400、500500元,并且单位根据职工元,并且单位根据职工的工作年限给予津贴适当的上浮奖励的工作年限给予津贴适当的上浮奖励(jingl)(jingl),具体上浮情况如下:无论助工、工程师和高工工作年限,具体上浮情况如下:无论助工、工程师和高工工作年限在在1010年以下的无浮动;对于在单位工作超过年以下的无浮动;对于在单位工作超过1010年但不到年但不到2020年的职工,助工、工程师津贴上浮年的职工,助工、工程师津贴上浮20%20%,高工上,高工上浮
20、浮30%30%;对于在单位工作超过;对于在单位工作超过2020年的职工,助工津贴上浮年的职工,助工津贴上浮30%30%,工程师津贴上浮,工程师津贴上浮35%35%,高工上浮,高工上浮40%40%。 第19页/共70页第十九页,共71页。2022-5-1920对应对应(duyng)(duyng)的判定表如表的判定表如表7-17-1所示所示 。第20页/共70页第二十页,共71页。2022-5-1921对应对应(duyng)(duyng)的判定树如图的判定树如图7-97-9所示。所示。 第21页/共70页第二十一页,共71页。2022-5-19226PDL语言(yyn) PDL PDL语言即过程设
21、计语言语言即过程设计语言(Process Design Language)(Process Design Language),是一种用于,是一种用于描述程序算法和定义数据结构的伪码设计语言。描述程序算法和定义数据结构的伪码设计语言。 1 1)PDLPDL的构成的构成 PDL PDL是一种是一种“混杂混杂”语言,它使用一种语言(通常是某种自然语言)的语言,它使用一种语言(通常是某种自然语言)的词汇来表示实际操作,同时却使用另一种语言(某种结构化的程序设计语言)词汇来表示实际操作,同时却使用另一种语言(某种结构化的程序设计语言)的语法来定义控制结构和数据结构。自然语言的采用使算法的描述灵活自由、的
22、语法来定义控制结构和数据结构。自然语言的采用使算法的描述灵活自由、清晰易懂,结构化程序设计语言的采用使控制结构的表达具有固定的形式且清晰易懂,结构化程序设计语言的采用使控制结构的表达具有固定的形式且符合结构化设计的思想。符合结构化设计的思想。 PDL PDL语言的构成与用于描述加工的结构化语言相似但又有区别,主要区语言的构成与用于描述加工的结构化语言相似但又有区别,主要区别在于:由于别在于:由于PDLPDL语言表达的算法是编码的直接依据,因此其语法结构更加严语言表达的算法是编码的直接依据,因此其语法结构更加严格并且格并且(bngqi)(bngqi)处理过程描述更加具体详细。处理过程描述更加具体
23、详细。 第22页/共70页第二十二页,共71页。2022-5-1923 2 2)PDLPDL的实例的实例 前面求一组数中最大值的过程如果用前面求一组数中最大值的过程如果用PDLPDL语言语言(yyn)(yyn)描述,结果如下描述,结果如下: : INPUT ARRAY A INPUT ARRAY A MAX=A(1) MAX=A(1) DO FOR I=2 TO N DO FOR I=2 TO N IF MAXA(I) IF MAXO THEN A1 ELSE A2 END IF; IF A O THEN A1 ELSE A2 END IF; S1; S1; IF B0 THEN B1; IF
24、 B0 THEN B1; WHILE C DO S2;S3 ENDWHILE;WHILE C DO S2;S3 ENDWHILE; ELSE B2 ELSE B2 ENDIF; ENDIF; B3 B3 ENDWHILE; ENDWHILE;第25页/共70页第二十五页,共71页。2022-5-1926第26页/共70页第二十六页,共71页。2022-5-19277.3 结构化程序设计(shj)方法 1 1结构化程序设计的概念结构化程序设计的概念 定义:结构化程序设计是一种设计程序的技术,采用自顶向下、逐定义:结构化程序设计是一种设计程序的技术,采用自顶向下、逐步细化的设计方法和单入口、单出口
25、的控制技术,认为任何程序都可以通步细化的设计方法和单入口、单出口的控制技术,认为任何程序都可以通过顺序、选择(过顺序、选择(IF_THEN_ELSEIF_THEN_ELSE型选择)和循环(型选择)和循环(DO_WHILEDO_WHILE型循环)三种型循环)三种基本控制结构的复合实现。基本控制结构的复合实现。 如果只允许使用顺序、如果只允许使用顺序、IF_THEN_ELSEIF_THEN_ELSE型分支和型分支和DO_WHILEDO_WHILE型循环这三型循环这三种基本控制结构,则称为种基本控制结构,则称为(chn(chn wi) wi)经典的结构程序设计;经典的结构程序设计; 如果除了上述三种
26、基本控制结构之外,还允许使用如果除了上述三种基本控制结构之外,还允许使用DO_CASEDO_CASE型多分支型多分支结构和结构和DO_UNTILDO_UNTIL型循环结构,则称为型循环结构,则称为(chn(chn wi) wi)扩展的结构程序设计;扩展的结构程序设计;如果再加上允许使用如果再加上允许使用LEAVELEAVE(或(或BREAKBREAK)结构,则称为)结构,则称为(chn(chn wi) wi)修正修正的结构程序设计。的结构程序设计。第27页/共70页第二十七页,共71页。2022-5-19282结构化程序设计(shj)的原则结构化程序设计的主要原则包括:结构化程序设计的主要原则
27、包括:1)1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。序逻辑。2)2)选用的控制结构只准许有一个入口和一个出口。选用的控制结构只准许有一个入口和一个出口。3)3)复杂结构应该用基本控制结构进行组合嵌套来实现。复杂结构应该用基本控制结构进行组合嵌套来实现。4) 4) 语言中没有的控制结构,可用一段等价的程序段模拟。语言中没有的控制结构,可用一段等价的程序段模拟。5) 5) 严格控制严格控制GOTOGOTO语句,仅在下列情形才可使用:语句,仅在下列情形才可使用: (a) (a)用一个非结构化的程序设计语言来实现一个结构化的
28、构用一个非结构化的程序设计语言来实现一个结构化的构造。造。 (b) (b)若不使用若不使用GOTOGOTO语句就会使程序功能模糊。语句就会使程序功能模糊。 (c) (c) 在某种可以在某种可以(ky)(ky)改善而不是损害程序可读性的情况改善而不是损害程序可读性的情况下。下。 第28页/共70页第二十八页,共71页。2022-5-19293使用结构化程序设计(shj)技术的优缺点使用结构化程序设计技术的好处体现在:使用结构化程序设计技术的好处体现在: (1 1)自顶向下、逐步)自顶向下、逐步(zhb)(zhb)细化的方法符合人类解决复杂问题的普遍规律,细化的方法符合人类解决复杂问题的普遍规律,
29、可以显著提高系统开发的成功率和生产率。可以显著提高系统开发的成功率和生产率。 (2 2)先全局后局部、先整体后细节、先抽象后具体的逐步)先全局后局部、先整体后细节、先抽象后具体的逐步(zhb)(zhb)求精过程求精过程开发出的程序有清晰的层次结构。开发出的程序有清晰的层次结构。 (3 3)使用单入口单出口的控制结构而不使用)使用单入口单出口的控制结构而不使用GO TOGO TO语句,使得程序的静态结构语句,使得程序的静态结构和它的动态执行情况比较一致。和它的动态执行情况比较一致。 (4 4)控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当)控制结构有确定的逻辑模式,编写程序代码
30、只限于使用很少几种直截了当的方式。的方式。 (5 5)程序清晰和模块化使得在修改和重新设计一个系统时可以重用的代码量最)程序清晰和模块化使得在修改和重新设计一个系统时可以重用的代码量最大。大。 (6 6)程序的逻辑结构清晰,有利于程序正确性证明。)程序的逻辑结构清晰,有利于程序正确性证明。 第29页/共70页第二十九页,共71页。2022-5-1930 结构程序设计技术的主要缺点是:结构化方法编制结构程序设计技术的主要缺点是:结构化方法编制(binzh)(binzh)的源代码较长,存储容量和运行时间的源代码较长,存储容量和运行时间有所增加(估计增加有所增加(估计增加10%10%20%20%);
31、有些非结构化语言不直接提供单入、单出的基本控制结构;个别情况下);有些非结构化语言不直接提供单入、单出的基本控制结构;个别情况下结构化程序的结构也十分复杂。然而随着计算机硬件技术的发展,存储容量和运行时间已经不是严重问题;结构化程序的结构也十分复杂。然而随着计算机硬件技术的发展,存储容量和运行时间已经不是严重问题;如果使用非结构化语言编程,有限制地使用如果使用非结构化语言编程,有限制地使用GOTOGOTO语句,常常可以达到既满足程序结构清晰的要求,又能够语句,常常可以达到既满足程序结构清晰的要求,又能够保证程序执行的效率。保证程序执行的效率。 第30页/共70页第三十页,共71页。2022-5
32、-19314自顶向下、逐步细化的设计(shj)方法 在详细设计以及编码阶段采用自顶向下、逐步细化的方法,可以把一个模块的功能再逐步细化为一系在详细设计以及编码阶段采用自顶向下、逐步细化的方法,可以把一个模块的功能再逐步细化为一系列具体的处理步骤或某种高级语言的语句。列具体的处理步骤或某种高级语言的语句。 逐步细化的步骤可以归纳为三步:逐步细化的步骤可以归纳为三步: 1 1)由粗到细地对程序进行逐步的细化,每一步可选择)由粗到细地对程序进行逐步的细化,每一步可选择(xunz)(xunz)其中一条或数条将它们分解为更多其中一条或数条将它们分解为更多或更详细的程序步骤。或更详细的程序步骤。 2 2)
33、在细化程序过程时,对数据的描述同时进行细化。)在细化程序过程时,对数据的描述同时进行细化。 3 3)每步细化均使用相同的结构语言,最后一步一般直接用伪码来描述。)每步细化均使用相同的结构语言,最后一步一般直接用伪码来描述。 第31页/共70页第三十一页,共71页。2022-5-1932 下面用一个简单的例子来说明下面用一个简单的例子来说明“逐步细化逐步细化”的实现的实现(shxin)(shxin)方法。方法。 设学生信息管理系统模块图中统计模块的功能之一是:输入一个班学生某门课的成设学生信息管理系统模块图中统计模块的功能之一是:输入一个班学生某门课的成绩,分别统计成绩在绩,分别统计成绩在858
34、5分分100100分、分、6060分分8484分和分和6060分以下各分数段的人数。分以下各分数段的人数。 编程思路是:读入学生成绩(可利用已存在的学生成绩数据文件),成绩用编程思路是:读入学生成绩(可利用已存在的学生成绩数据文件),成绩用scorescore表示,对每一个成绩确定它所在的分数段,并将所在分数段人数加。为此须设三个计表示,对每一个成绩确定它所在的分数段,并将所在分数段人数加。为此须设三个计数变量数变量num1num1、num2num2、num3num3来存放各分数段人数。来存放各分数段人数。 第32页/共70页第三十二页,共71页。2022-5-1933 一级算法过程为:一级算
35、法过程为: (1 1)将各分数段人数设置为;)将各分数段人数设置为; (2 2)循环:循环控制变量初值,终值班级人数,改变量(若从)循环:循环控制变量初值,终值班级人数,改变量(若从数据文件读成绩,执行循环体条件应是数据文件读成绩,执行循环体条件应是“未到文件尾未到文件尾”);); (3 3)读入成绩;)读入成绩; (4 4)确定成绩所在)确定成绩所在(suzi)(suzi)分数段,并将所在分数段,并将所在(suzi)(suzi)分数段人数加;分数段人数加; (5 5)输出各分数段人数。)输出各分数段人数。 其中第步和第步需细化求精。其中第步和第步需细化求精。 二级求精过程为:二级求精过程为:
36、 (1 1)num1=0num1=0、num2=0num2=0、num3=0num3=0 (4 4) IF score=85 THEN num1=num1+1 IF score=85 THEN num1=num1+1 ELSE IF score=60 THEN num2=num2+1 ELSE IF score=60 THEN num2=num2+1 ELSE num3=num3+1 ELSE num3=num3+1第33页/共70页第三十三页,共71页。2022-5-19347.4 面向数据结构的设计(shj)方法 在详细设计阶段,还会用到一些面向数据结构的设计方法。下面主要介绍两种面向数据
37、结构的方法:在详细设计阶段,还会用到一些面向数据结构的设计方法。下面主要介绍两种面向数据结构的方法:JacksonJackson方法和方法和WarnierWarnier方法。方法。 1 1JacksonJackson方法方法 Jackson Jackson方法是面向数据结构设计方法的代表之一,它的基本思想是:在充分理解问题输入、输出数方法是面向数据结构设计方法的代表之一,它的基本思想是:在充分理解问题输入、输出数据的基础上,找出输入、输出数据的层次结构对应关系据的基础上,找出输入、输出数据的层次结构对应关系(gun x)(gun x),根据数据结构的层次关系,根据数据结构的层次关系(gun (
38、gun x)x)映射为软件控制层次结构,然后对问题进行求精,给出对外求解的精确描述。映射为软件控制层次结构,然后对问题进行求精,给出对外求解的精确描述。 第34页/共70页第三十四页,共71页。2022-5-19351)Jackson图 Jackson Jackson图由方框、连线及有特殊含义的一些标记组成。由于图由方框、连线及有特殊含义的一些标记组成。由于(yuy)(yuy)尽管数据结构种类繁多,但其尽管数据结构种类繁多,但其数据元素之间的联系只有顺序、选择和循环三种。因此,使用数据元素之间的联系只有顺序、选择和循环三种。因此,使用JacksonJackson图无论表达数据结构或程序结构,都
39、图无论表达数据结构或程序结构,都是由这三种基本结构组合而成的。这三种基本结构在是由这三种基本结构组合而成的。这三种基本结构在JacksonJackson图中的表示符号如图图中的表示符号如图7-107-10所示。所示。 第35页/共70页第三十五页,共71页。2022-5-19362)Jackson方法(fngf) Jackson Jackson方法是一种典型的面向数据结构的结构化程序设计方法,其设计目标是从分析系统的数据结方法是一种典型的面向数据结构的结构化程序设计方法,其设计目标是从分析系统的数据结构出发,最后得出用构出发,最后得出用JacksonJackson伪代码表示的程序处理过程。为了
40、便于理解,下面通过一个简单的例子来说明伪代码表示的程序处理过程。为了便于理解,下面通过一个简单的例子来说明JacksonJackson方法的具体设计步骤。假定某单位原来存在一个职工工资文件和一个职工档案文件,两个方法的具体设计步骤。假定某单位原来存在一个职工工资文件和一个职工档案文件,两个(lin(lin )文件中的记录均按照职工编号升序排列且数目相等,现在要将这两个文件中的记录均按照职工编号升序排列且数目相等,现在要将这两个(lin(lin )独立的文件合并为独立的文件合并为一个职工工资档案文件。一个职工工资档案文件。 采用采用JacksonJackson方法设计,共分为以下四步进行:方法设
41、计,共分为以下四步进行:第36页/共70页第三十六页,共71页。2022-5-1937(1 1)分析问题,确定输入、输出)分析问题,确定输入、输出(shch)(shch)数据的逻辑结构,并用数据的逻辑结构,并用JacksonJackson图将其描述出来。图将其描述出来。第37页/共70页第三十七页,共71页。2022-5-1938 (2 2)找出输入数据结构和输出数据结构中有对应关系的单元,并按下列规则)找出输入数据结构和输出数据结构中有对应关系的单元,并按下列规则(guz)(guz)导出描述程序结构的导出描述程序结构的JacksonJackson图,结果如图图,结果如图7-127-12所示。
42、所示。 第38页/共70页第三十八页,共71页。2022-5-1939 (3 3)列出完成结构图中各处理框功能的所有操作、分支及循环条件,并把它们放到程序)列出完成结构图中各处理框功能的所有操作、分支及循环条件,并把它们放到程序结构图上的适当位置。例子结构图上的适当位置。例子(l zi)(l zi)中所涉及的基本操作和条件如下:中所涉及的基本操作和条件如下:A. A. 打开输入文打开输入文件;件;B. B. 新建工资档案文件;新建工资档案文件;C. C. 读取输入文件中的一条记录;读取输入文件中的一条记录;D. D. 关闭文件;关闭文件;E. E. 合并合并生成工资档案记录;生成工资档案记录;
43、F. F. 将工资档案记录写入文件;将工资档案记录写入文件;G. G. 终止;终止;I(1). I(1). 输入文件未结束。输入文件未结束。(a) 改进前的程序结构图;(b) 改进后的程序结构图 图7-13 加入(jir)基本操作和条件后的程序结构图第39页/共70页第三十九页,共71页。2022-5-1940 (4 4)用)用JacksonJackson伪代码写出程序的处理过程。伪代码写出程序的处理过程。 图图7-13 (b)7-13 (b)所示的程序结构图对应的伪代码表示如下:所示的程序结构图对应的伪代码表示如下: 产生工资产生工资(gngz)(gngz)档案文件档案文件seqseq 打开
44、两个输入文件打开两个输入文件 新建工资新建工资(gngz)(gngz)档案文件档案文件 程序体程序体itel while itel while 输入文件未结束输入文件未结束 产生工资产生工资(gngz)(gngz)档案记录档案记录seqseq 从两个输入文件中各读取一条记录从两个输入文件中各读取一条记录 合并生成工资合并生成工资(gngz)(gngz)档案记录档案记录 将生成的工资将生成的工资(gngz)(gngz)档案记录写入工资档案记录写入工资(gngz)(gngz)档案文件中档案文件中 产生工资产生工资(gngz)(gngz)档案记录档案记录endend 程序体程序体endend 关闭所
45、有文件关闭所有文件 终止终止 产生工资产生工资(gngz)(gngz)档案文件档案文件endend第40页/共70页第四十页,共71页。2022-5-19412Warnier方法(fngf) 1 1)WarnierWarnier图图 在在WarnierWarnier图中,数据元素按从上到下顺序出现,元素选图中,数据元素按从上到下顺序出现,元素选择出现或重复出现的事实用在元素下面圆括号中标出的出现次择出现或重复出现的事实用在元素下面圆括号中标出的出现次数注明。数注明。WarnierWarnier图除了表示数据结构外,也可表示程序结构。图除了表示数据结构外,也可表示程序结构。2 2)使用)使用Wa
46、rnierWarnier方法的步骤方法的步骤 (1 1)分析确定输入数据、输出)分析确定输入数据、输出(shch)(shch)数据的逻辑结数据的逻辑结构,并用构,并用WarnierWarnier图描绘数据结构。图描绘数据结构。 (2 2)依据输入数据结构导出程序结构,并用)依据输入数据结构导出程序结构,并用WarnierWarnier图描图描绘数据程序的处理层次。绘数据程序的处理层次。 (3 3)将程序结构图改为流程图,并自下至上给每个处理)将程序结构图改为流程图,并自下至上给每个处理框编号。框编号。 (4 4)根据程序流程图分类写出程序的伪代码指令。)根据程序流程图分类写出程序的伪代码指令。
47、 (5 5)按分类写出的指令按序号排序,从而得出描述处理)按分类写出的指令按序号排序,从而得出描述处理过程的伪码。过程的伪码。第41页/共70页第四十一页,共71页。2022-5-1942 面向数据结构的方法主要适用于数据结构比较稳定、变化不大的程序模块。如果一个程序的数据结面向数据结构的方法主要适用于数据结构比较稳定、变化不大的程序模块。如果一个程序的数据结构经常有变化,或无法准确地定义数据结构,则不适宜采用构经常有变化,或无法准确地定义数据结构,则不适宜采用(ciyng)这样的设计方法。这样的设计方法。第42页/共70页第四十二页,共71页。2022-5-1943 7.5 程序(chngx
48、)的复杂性度量 定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出系统中故障的数定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出系统中故障的数量以及系统开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;量以及系统开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模程序的定量的复杂程度可以作为模块规模(gum)(gum)的精确限度。的精确限度。环形复杂度的度量方法环形复杂度的度量方法文本复杂度的度量方法。文本复杂度的度量方法。 第43页/共70页第四
49、十三页,共71页。2022-5-1944 7.5.1 环形(hun xn)复杂度的度量方法1 1程序图程序图 使用使用(shyng)McCabe(shyng)McCabe方法首先需要画出程序图方法首先需要画出程序图(Program Graph)(Program Graph),所谓程序图可以看成是,所谓程序图可以看成是“退化退化了的了的”程序流程图,也就是把程序流程图中的每个处理符号都退化成一个点,原来连接不同处理符号的箭程序流程图,也就是把程序流程图中的每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的有向弧,这样得到的有向图就称为程序图。几种基本结构的程序图如图头变成连接
50、不同点的有向弧,这样得到的有向图就称为程序图。几种基本结构的程序图如图7-147-14示。示。第44页/共70页第四十四页,共71页。2022-5-1945 例如,对如图例如,对如图7-15 (a)7-15 (a)所示的程序流程图进行简化所示的程序流程图进行简化(jinhu)(jinhu),可得到如图,可得到如图7-15 (b)7-15 (b)所示的程序图。所示的程序图。第45页/共70页第四十五页,共71页。2022-5-19462. 环形(hun xn)复杂度的度量方法 环形复杂度等于强连通环形复杂度等于强连通(lintng)(lintng)的程序图中线性无关的有向环的个数。根据图论,在一
51、个强连通的程序图中线性无关的有向环的个数。根据图论,在一个强连通(lintng)(lintng)的有向图中线性无关环的个数由下面的公式给出:的有向图中线性无关环的个数由下面的公式给出: V(G) V(G)m mn np p 其中,其中,V(G)V(G)表示有向图表示有向图G G中的线性无关的环数;中的线性无关的环数; m m表示有向图表示有向图G G中有向边中有向边( (弧弧) )的个数;的个数; n n表示有向图中的结点个数;表示有向图中的结点个数; p p是有向图是有向图G G中的分离部分的数目。中的分离部分的数目。 第46页/共70页第四十六页,共71页。2022-5-1947 对于一个
52、正常的程序来说,应该从程序图内的入口点到达图中任何一个结点(一个不能达到的结点代对于一个正常的程序来说,应该从程序图内的入口点到达图中任何一个结点(一个不能达到的结点代表永远不能执行的程序代码,显然是错误表永远不能执行的程序代码,显然是错误(cuw)(cuw)的),因此,程序图总是连通的,也就是说,的),因此,程序图总是连通的,也就是说,p=1p=1。m m和和n n的值从程序图中可以方便地得到。现在的关键问题是,程序图虽然是连通图,但却不是强连通图的值从程序图中可以方便地得到。现在的关键问题是,程序图虽然是连通图,但却不是强连通图( (图中图中靠近入口的结点可以到达下面的结点,而靠近出口的结
53、点往往不能到达上面的结点靠近入口的结点可以到达下面的结点,而靠近出口的结点往往不能到达上面的结点) ),而强连通图是要求从,而强连通图是要求从图中任一结点出发都可以到达所有其他结点。为了使程序图能够满足图论中计算环形复杂度公式的要求,图中任一结点出发都可以到达所有其他结点。为了使程序图能够满足图论中计算环形复杂度公式的要求,可以在程序图中增加一条从出口点到入口点的虚弧,此时,程序图就变成了一个强连通图。可以在程序图中增加一条从出口点到入口点的虚弧,此时,程序图就变成了一个强连通图。 第47页/共70页第四十七页,共71页。2022-5-1948 对图对图7-15 (b)7-15 (b)所示的程
54、序图添加虚弧后,就得到所示的程序图添加虚弧后,就得到(d do)(d do)了如图了如图7-167-16所示的强所示的强连通图。连通图。强连通程序图的环形复杂度:强连通程序图的环形复杂度: V(G) V(G)131310101 14 4 第48页/共70页第四十八页,共71页。2022-5-1949 实质上,除了采用上面的公式可以计算环形复杂度的值以外,还可以使用下实质上,除了采用上面的公式可以计算环形复杂度的值以外,还可以使用下面两个公式来计算程序图中的环形复杂度。面两个公式来计算程序图中的环形复杂度。 V(G) V(G)强连通的程序图在平面上围成的区域数强连通的程序图在平面上围成的区域数
55、V(G) V(G)判定判定(pndng)(pndng)结点数结点数1 1 结构化程序的程序图总是平面图,因此均可采用公式来进行环形复杂度的计结构化程序的程序图总是平面图,因此均可采用公式来进行环形复杂度的计算。图算。图7-167-16中,程序图围成的区域有中,程序图围成的区域有(b,c,d,f,b)(b,c,d,f,b),(c,d,f,e,c)(c,d,f,e,c),(g,h,E,g)(g,h,E,g)和和(S,a,b,g,E,S)(S,a,b,g,E,S),因此,根据公式可得该程序图的环形复杂度为,因此,根据公式可得该程序图的环形复杂度为4 4。 通过公式可以看出,一个程序的环形复杂度取决于
56、它的程序图中所包含的判通过公式可以看出,一个程序的环形复杂度取决于它的程序图中所包含的判定定(pndng)(pndng)结点的个数。在图结点的个数。在图7-167-16中,判定中,判定(pndng)(pndng)结点分别为结点分别为b b,c c和和g g,每个判定每个判定(pndng)(pndng)结点都在程序图中产生一个环域,因此,程序中的分支或循结点都在程序图中产生一个环域,因此,程序中的分支或循环结构越多,嵌套层次数越多,程序的环形复杂度就越大。根据公式可得图环结构越多,嵌套层次数越多,程序的环形复杂度就越大。根据公式可得图7-167-16的环形复杂度为:的环形复杂度为:3 31 14
57、 4。 第49页/共70页第四十九页,共71页。2022-5-19503环形(hun xn)复杂度的用途 程序的环形复杂度取决于程序控制流的复杂程度,也即取决于程序结构的复杂程度。当程序内分支数程序的环形复杂度取决于程序控制流的复杂程度,也即取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对系统最终的可或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对系统最终的可靠性给出某种预测。靠性给出某种预测。 McCabe McCabe研究大量程序后发现研究大量程序后发现(fxin)(fxin),程序的环
58、形复杂度越高,程序的可理解性就越差,程序测试,程序的环形复杂度越高,程序的可理解性就越差,程序测试和维护的难度也就越大,并且,环形复杂度高的程序,往往就是最容易出问题的程序。实践证明,模块规和维护的难度也就越大,并且,环形复杂度高的程序,往往就是最容易出问题的程序。实践证明,模块规模以模以V(G)10V(G)10为宜,即尽量将程序的环形复杂度控制在为宜,即尽量将程序的环形复杂度控制在1010以下。以下。 第50页/共70页第五十页,共71页。2022-5-1951 7.5.2 文本(wnbn)复杂度的度量方法 文本复杂度的度量方法又称为文本复杂度的度量方法又称为HalsteadHalstead
59、方法。方法。 HalsteadHalstead度量方法是度量方法是Halstead M.HHalstead M.H于于19771977年提出的关于度量软件复杂性的一种最有效年提出的关于度量软件复杂性的一种最有效(yuxio)(yuxio)的方的方法。法。 此方法可根据源程序中运算符此方法可根据源程序中运算符( (包括关键字包括关键字) )和操作数和操作数( (包括常量和变量包括常量和变量) )的总数来度量程序复杂度,并可以的总数来度量程序复杂度,并可以预测程序的文本复杂度和程序中包含的错误个数。预测程序的文本复杂度和程序中包含的错误个数。第51页/共70页第五十一页,共71页。2022-5-1
60、9521预测程序(chngx)的文本复杂度 对源程序文本复杂度进行度量的具体方法为:首先找出整个程序中运算符出现的总对源程序文本复杂度进行度量的具体方法为:首先找出整个程序中运算符出现的总次数次数N1N1及操作数出现的总次数及操作数出现的总次数N2N2,接着使用下面的公式即可计算,接着使用下面的公式即可计算(j sun)(j sun)出程序的出程序的文本复杂度文本复杂度N N: N NN1N1N2N2 在详细设计结束后,可以知道程序中需使用的不同运算符的个数在详细设计结束后,可以知道程序中需使用的不同运算符的个数n1n1和不同操作数的和不同操作数的个数个数n2n2,此时可通过下面的公式预测程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年低压电工证考试题库及低压电工试题及答案
- 2026版宁夏麻醉学医学高级职称考试试题及答案(副高)
- 2025年安全管理员考核试题及答案解析
- 2026年秋季开学小学书写规范心理健康教育课件
- 2026年秋季开学学科教师课堂艺术培训课件
- 七年级地理下册 第四章 第一节 水资源及其开发利用教案1 中图版
- 三年级品社下册《家乡风貌》教案 辽师大版
- 2026年秋季开学高中手机管理复习备考策略课件
- 2026年注册土木工程师(水利水电)考试《水利水工建筑物》模拟试题及答案
- 中文输入教学设计中职专业课-计算机应用基础-计算机类-电子与信息大类
- 重庆万州区2026年社区工作者招聘考试试卷-含答案解析
- 湖北省宜昌市秭归县县域高中联合体2025-2026学年高一下学期期末测评语文试题(含答案)
- 餐饮业餐厅经理经营效益及团队管理KPI考核表
- 2026年作风建设年研讨发言材料-强化责任担当、认真履职尽责,抓好作风建设
- 丹东施工方案
- 沪教版初中英语八年级上册Unit 2 Amazing Numbers语法教案
- 2026年江苏省省属事业单位统一公开招聘《综合知识和能力素质》真题
- 2026浙江省空港融资租赁有限公司招聘1人笔试备考题库及答案详解
- 宿舍管理员安全工作全流程培训
- 《3~6岁儿童学习与发展指南》考试题库及答案2026年
- 高中英语3500词汇完整
评论
0/150
提交评论