第6章-详细设计-2._第1页
第6章-详细设计-2._第2页
第6章-详细设计-2._第3页
第6章-详细设计-2._第4页
第6章-详细设计-2._第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-4-180回顾回顾q详细设计的内容详细设计的内容q过程设计工具过程设计工具1程序流程图程序流程图2 盒图盒图(N_S图图)3 PAD图图4 判定表判定表5 判定树判定树6 过程设计语言过程设计语言(PDL)2022-4-181过程设计的工具过程设计的工具n 判定表判定表n 当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。n 然而判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。n 判定表用于以紧凑的形式描述复杂的逻辑。判定表与if-else、switch-case语句类似,将条件判断与执行的动作联系起

2、来。2022-4-182过程设计的工具过程设计的工具n 判定表判定表n 一张判定表由4部分组成。n 左上部列出所有条件,左下部是所有可能的动作。n 右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。n 判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的操作。2022-4-183操作条目操作条目条件条目条件条目2022-4-184过程设计的工具过程设计的工具n 判定表:举例判定表:举例1n 问题描述:问题描述:“某公司规定,对于大于某公司规定,对于大于70马力的机马力的机器或已运行器或已运行15年以上的机器,应给予优先维修处年以上的机器,应给予优先维修处理

3、理”。用判定表可以清楚地表示与上述每种条件组。用判定表可以清楚地表示与上述每种条件组合相对应的维修处理的算法,如下表所示。合相对应的维修处理的算法,如下表所示。 1234功率大于功率大于70马力马力FTTT运行超过运行超过15年年FFFT优先维修处理优先维修处理作其他处理作其他处理2022-4-185n 判定表:举例判定表:举例2n 假设某航空公司规定,乘客可以免费托运重量假设某航空公司规定,乘客可以免费托运重量不超过不超过3030公斤的行李。公斤的行李。n 当行李重量超过当行李重量超过3030公斤时:公斤时:n 对头等舱的国内乘客超重部分每公斤收费对头等舱的国内乘客超重部分每公斤收费4 4元

4、;元;n 对其他舱的国内乘客超重部分每公斤收费对其他舱的国内乘客超重部分每公斤收费6 6元;元;n 对外国乘客超重部分每公斤收费比国内乘客多对外国乘客超重部分每公斤收费比国内乘客多一倍;一倍;n 对残疾乘客超重部分每公斤收费比正常乘客少对残疾乘客超重部分每公斤收费比正常乘客少一半。一半。 过程设计的工具过程设计的工具2022-4-186规则规则 规则数规则数 条件条件 动作动作过程设计的工具过程设计的工具2022-4-187判定表:举例判定表:举例3 :一图书销售系统,其中一加工为:一图书销售系统,其中一加工为“优惠处优惠处理理”,条件是:顾客的营业额大于,条件是:顾客的营业额大于100010

5、00元,同时必须信誉好,元,同时必须信誉好,或者虽然信誉不好,但是或者虽然信誉不好,但是2020年以上的老主顾。年以上的老主顾。1 2 3 41 2 3 4 10001000元元 Y Y Y Y N Y Y N 信誉好信誉好 Y N N - Y N N - 20 20 年年 - Y N - - Y N - 优优 惠惠 X XX X 正正 常常 X XX X 化简后化简后 1 2 3 4 5 6 7 81 2 3 4 5 6 7 8 10001000元元 Y Y Y Y Y N N N N Y Y Y N N N N 信誉好信誉好 Y Y N N Y Y N NY Y N N Y Y N N 2

6、0 20 年年 Y N Y N Y N Y NY N Y N Y N Y N优优 惠惠 X X XX X X正正 常常 X X X X XX X X X XY-Y-满足条件满足条件 N-N-不满足条件不满足条件 X-X-选中判定的结论选中判定的结论过程设计的工具过程设计的工具2022-4-188n 判定树判定树n 判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。n 判定树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。n 多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。过程设计的工具过程设计的工具2022-4

7、-189过程设计的工具过程设计的工具行李费行李费算法算法行李重量行李重量W 30行李重量行李重量W 30免费免费国内乘客国内乘客外国乘客外国乘客头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30) 2(W-30) 4残疾乘客残疾乘客正常乘客正常乘客(W-30) 3(W-30) 6头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30) 4(W-30) 8残疾乘客残疾乘客正常乘客正常乘客(W-30) 6(W-30) 12用判定树表示计算行李费的算法用判定树表示计算行李费的算法例22022-4-1810营业额营业额 10001000元元 10001000元元 正常处理正

8、常处理好的支付信誉好的支付信誉 优惠处理优惠处理坏的支付信誉坏的支付信誉 20 20年年 优惠处理优惠处理 20 20年年 正常处理正常处理判定树:举例判定树:举例3:一图书销售系统,其中一加工为一图书销售系统,其中一加工为“优惠处优惠处理理”,条件是:顾客的营业额大于,条件是:顾客的营业额大于10001000元,同时必须信誉元,同时必须信誉好,或者虽然信誉不好,但是好,或者虽然信誉不好,但是2020年以上的老主顾。年以上的老主顾。过程设计的工具过程设计的工具2022-4-1811课堂练习课堂练习 某校制定了教师的讲课课时津贴标准。某校制定了教师的讲课课时津贴标准。对于各种性质的对于各种性质的

9、讲座讲座,无论教师是什么,无论教师是什么职称,每课时津贴费一律是职称,每课时津贴费一律是50元元;而对;而对于一般的于一般的授课,则根据教师的职称来决授课,则根据教师的职称来决定每课时津贴费:教授定每课时津贴费:教授30元,副教授元,副教授25元,讲师元,讲师20元,助教元,助教15元。元。请用判定树和判定表表示请用判定树和判定表表示。2022-4-1812判定树判定树 教师课时津贴判定树教师课时津贴判定树 课时津贴 一般授课 讲座 教授 副教授 讲师 助教 30 25 20 15 50 2022-4-1813 12345教授 TFFF副教授 FTFF讲师 FFTF助教 FFFT讲座TFFFF

10、50 30 25 20 15 判定表判定表 2022-4-1814n 过程设计语言(过程设计语言(PDLPDL)n PDL也称为伪码,这是一个笼统的名称,它是用正文形式表示数据和处理过程的设计工具。n 一般说来PDL是一种“混杂”语言,它使用一种语言(通常是某种自然语言)的词汇,同时却使用另一种语言(某种结构化的程序设计语言)的语法。 过程设计的工具过程设计的工具2022-4-1815PDL程序的构成程序的构成类型类型子类型子类型数据说明数据说明declareas具体的数据结构:具体的数据结构:scalararraylistcharstructure子程序结构子程序结构procedureint

11、erfacereturnend分程序结构分程序结构beginend过程设计的工具过程设计的工具2022-4-1816顺序结构顺序结构选择型选择型if thenelseend ifif thenelse if thenelseend ifWHILE循环型循环型loop while end loopUNTIL循环型循环型loop until end loopCASE型型case of,default :end case过程设计的工具过程设计的工具2022-4-1817n 举例n procedure 判定质数ndeclare x,n,j as 整型简单变量n从键盘读入xn将变量n赋值为x1/2n将变

12、量i赋值为2nloop while i=n+1n输出:x是质数nelsen输出:x不是质数nend ifn End 判定质数过程设计的工具过程设计的工具2022-4-1818流程图图图语言决策表(树)容易使用好好好很好尚好逻辑表示尚好好好好很好易编码尚好好好很好好易维护不好不好尚好好好自动处理不好不好尚好很好很好结构化构造不好很好好好不适用数据表示不好不好不好好不好块结构不好好尚好好不适用逻辑验证不好尚好尚好尚好很好使用频率高低低中等低过程设计工具比较过程设计工具比较过程设计的工具过程设计的工具2022-4-1819本章要点本章要点q一、详细设计的概述 q二、界面设计二、界面设计q三、结构程序

13、设计三、结构程序设计q四、过程设计工具四、过程设计工具q五、案例讲解五、案例讲解q六、程序复杂度度量六、程序复杂度度量2022-4-1820案例分析案例分析还书总控模块流程图 还书界面处理流程图 n 程序流程图程序流程图2022-4-1821还书数据输入及验证模块流程图还书数据输入及验证模块流程图 案例分析案例分析2022-4-1822还书处理模块流程图还书处理模块流程图 案例分析案例分析2022-4-1823案例讲解案例讲解n 登录模块的设计登录模块的设计它对权限控制、系统安全有着重要的作用!它对权限控制、系统安全有着重要的作用!步骤:步骤:、界面显示、界面显示、接收用户名及密码、接收用户名

14、及密码、检查用户名和密码的正确性、检查用户名和密码的正确性、正确,进入主界面、正确,进入主界面、错误,提示错误信息,否则,转入第步。、错误,提示错误信息,否则,转入第步。2022-4-1824案例讲解案例讲解p如何防止密码被跟踪破解?如何防止密码被跟踪破解?使用使用MID5加密算法加密算法p如何防止穷举登录?如何防止穷举登录?随机数验证方式增加穷举的代价随机数验证方式增加穷举的代价在在isual Studio中,有专门的控件。中,有专门的控件。p如何防止错误的输入?如何防止错误的输入?在编程语言的控件中、在编程语言中、在数据在编程语言的控件中、在编程语言中、在数据库中用库中用Check进行数据

15、完整性设定。进行数据完整性设定。2022-4-1825本章要点本章要点q一、详细设计的概述 q二、界面设计二、界面设计q三、结构程序设计三、结构程序设计q四、过程设计工具四、过程设计工具q五、案例讲解五、案例讲解q六、程序复杂度度量六、程序复杂度度量2022-4-1826程序复杂度度量程序复杂度度量n 经过详细设计之后每个模块的内容都非常具体了,经过详细设计之后每个模块的内容都非常具体了,人们希望能够定量度量软件人们希望能够定量度量软件的性质。的性质。n 定量度量程序复杂程度的价值定量度量程序复杂程度的价值: (1) (1) 把程序的复杂程度乘以适当常数即可估算出把程序的复杂程度乘以适当常数即

16、可估算出软件中错误的数量以及软件开发需要用的工作量;软件中错误的数量以及软件开发需要用的工作量; (2) (2) 定量度量的结果可以用来比较两个不同的设定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;计或两个不同算法的优劣; (3) (3) 程序的定量的复杂程度可以作为模块规模的程序的定量的复杂程度可以作为模块规模的精确限度。精确限度。2022-4-1827n 程序复杂性程序复杂性?n 主要指主要指模块内程序的复杂性模块内程序的复杂性。它直接关联到。它直接关联到软件开发费用的多少,开发周期的长短和软软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。件内部潜伏错误的多少。

17、n 减少程序复杂性,可提高软件的简单性和可减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。缩短,软件内部潜藏错误减少。程序复杂度度量程序复杂度度量2022-4-1828为了度量程序复杂性,要求复杂性度为了度量程序复杂性,要求复杂性度量应满足以下假设:量应满足以下假设: 对于不合理的程序,例如对于长度动态增对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算;不应当使用它进行复杂性计算; 它可以用来计算任何一个程序

18、的复杂性;它可以用来计算任何一个程序的复杂性; 如果程序中指令条数、附加存储量、如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。计算时间增多,不会减少程序的复杂性。程序复杂度度量程序复杂度度量2022-4-1829程序复杂度度量程序复杂度度量1 代码行代码行2 McCode2 McCode方法方法3 Halstead3 Halstead方法方法2022-4-18301 1、代码行度量法:、代码行度量法: 统计程序中的源代码的行数统计程序中的源代码的行数较小的程序较小的程序 -1.3%1.3%1.8%/1.8%/行行较大的程序较大的程序 -2.7%2.7%3.2%/3.2%/

19、行行如果设每行代码的出错率为每如果设每行代码的出错率为每100100行行源程序中源程序中可能的错误数目。例如,每行代码的出错率为可能的错误数目。例如,每行代码的出错率为 1%1%,也就是说,每,也就是说,每 100 100 行源程序中就可能有行源程序中就可能有一个错误。一个错误。程序复杂度度量程序复杂度度量存在问题:程序的复杂性与语句行数并非呈线性增长。存在问题:程序的复杂性与语句行数并非呈线性增长。评价缺乏准确性。评价缺乏准确性。2022-4-18312、环形复杂度、环形复杂度-McCode方法n McCabe方法根据程序控制流的复杂程度定量方法根据程序控制流的复杂程度定量度量程序的复杂程度

20、,这样度量出的结果称为度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。程序的环形复杂度。n 流图流图: n 为了突出表示程序的控制流,人们通常使用流为了突出表示程序的控制流,人们通常使用流图图(也称为程序图也称为程序图)。所谓流图实质上是。所谓流图实质上是“退化退化了的了的”程序流程图,它仅仅描绘程序的控制流程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或程,完全不表现对数据的具体操作以及分支或循环的具体条件。循环的具体条件。程序复杂度度量程序复杂度度量2022-4-18322、环形复杂度、环形复杂度-McCode方法n 在流图中用圆表示结点,一个圆代表一条

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

22、面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。该包括图外部未被围起来的那个区域。程序复杂度度量程序复杂度度量2022-4-1833程序图符号程序图符号程序复杂度度量程序复杂度度量2、环形复杂度、环形复杂度-McCode方法2022-4-1834程序复杂度度量程序复杂度度量2、环形复杂度、环形复杂度-McCode方法2022-4-1835程序复杂度度量程序复杂度度量n 由程序流程图导出程序图TOTAL=TOTAL+AK+输入输入A输出输出K, L, TOTAL停止停止T开始开始K=0L=0TOTAL=0输入输入ADo While TOTAL0TL+Fa(开始)(开始)b(入口入

23、口)cdefghij(出口出口)k(停止停止)导导出出2、环形复杂度、环形复杂度-McCode方法2022-4-1836计算环形复杂度计算环形复杂度V(G)V(G)的方法的方法 环形复杂度定量度量程序的环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制逻辑复杂度。有了描绘程序控制流的流图流的流图G G之后,可以用下述之后,可以用下述3 3种种方法中的任何一种来计算环形复方法中的任何一种来计算环形复杂度。杂度。(1) (1) 流图中的区域数等于环形复流图中的区域数等于环形复杂度杂度区域:区域:由边和结点围由边和结点围成的面积称为区域,成的面积称为区域,当计算区域数时应该当计算区域数时应该包括图

24、外部未被围起包括图外部未被围起来的那个区域。来的那个区域。V(G) = 42022-4-1837(2) 流图G的环形复杂度V(G)= E N + 2 其中,E是流图中边的条数,N是结点数。(3) 流图G的环形复杂度V(G)= P + 1 其中,P是流图中判定结点的数目。计算环形复杂度计算环形复杂度V(G)V(G)的方法的方法V(G) = 42022-4-1838程序复杂度度量程序复杂度度量n McCode方法方法n 实例计算实例计算a(开始开始)b(入口入口)cdefghij(出口出口)k(停止停止)31911V(G)2022-4-1839程序复杂度度量程序复杂度度量n 计算环形复杂度小结n

25、可以用下列任何一种方法计算环形复杂度1、流图中的区域数等于环形复杂度2、流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。3、流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。2022-4-1840startpABQendFFT课堂练习:计算课堂练习:计算它的它的McCabe复杂复杂性度量。性度量。2022-4-1841n n=6n m=7n v(G)=m-n+2=3n 答答 McCabe复杂性度量都为复杂性度量都为3 2022-4-18422、环形复杂度、环形复杂度-McCode方法环形复杂度的用途环形复杂度的用途n 程序的环形复杂度取决于程序控

26、制流的复杂程度,也即是取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。n 实践表明,模块规模以V(G)10为宜,也就是说,V(G)10是模块规模的一个更科学更精确的上限。 程序复杂度度量程序复杂度度量2022-4-1843n Halstead方法又称为文本复杂性度量又称为文本复杂性度量方法方法, ,是另一个著名的方法,它根据程序中运算符和操作数的总数来度量程序的复杂程度。令令: N1: N1为程序中运算符出现的总次数,为程序中运算符出现的总次数,N2N2为操作数出现的总次数,为操作数出现的总次

27、数,程序实际长度程序实际长度N N定定义为:义为: N = N1 + N2N = N1 + N23、Halstead方法方法程序复杂度度量程序复杂度度量2022-4-1844详细设计完成之后,可以知道程序中使用的详细设计完成之后,可以知道程序中使用的不同运算符不同运算符( (包括关键字包括关键字) )的个数的个数n1n1,以及不,以及不同操作数同操作数( (变量和常数变量和常数) )的个数的个数n2n2。HalsteadHalstead给出给出预测程序长度预测程序长度H H的公式如下:的公式如下: H = n1 logH = n1 log2 2 n1 + n2 log n1 + n2 log2

28、 2 n2 n2程序复杂度度量程序复杂度度量3、Halstead方法方法2022-4-1845n 经过多次验证,预测的经过多次验证,预测的Halstead长度与实长度与实际的际的Halstead长度是非常接近的。长度是非常接近的。3、Halstead方法方法程序复杂度度量程序复杂度度量2022-4-1846程序的潜在错误程序的潜在错误HalsteadHalstead度量还可以用来预测程序中可能存在的错度量还可以用来预测程序中可能存在的错误误E E。预测公式为。预测公式为 E E = ( = (N N1+1+N N2)2) log2(log2(n n1+1+n n2) / 30002) / 30

29、00例如,一个程序对例如,一个程序对7575个数据库项共访问个数据库项共访问13001300次,次,对对150150个运算符共使用了个运算符共使用了12001200次,那么预测该程次,那么预测该程序的错误数:序的错误数: E E = (1200+1300)= (1200+1300) log2(75+150)/3000 log2(75+150)/3000 6.56.5 即预测该程序中可能包含即预测该程序中可能包含6 67 7个错误个错误3、Halstead方法方法程序复杂度度量程序复杂度度量2022-4-1847有人曾对从有人曾对从300300条到条到1200012000条语句范围内的程序核实了

30、上条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在述公式,发现预测的错误数与实际错误数相比误差在8%8%之内。之内。3、Halstead方法方法程序的潜在错误程序的潜在错误程序复杂度度量程序复杂度度量2022-4-1848小结小结n 学生的掌握情况学生的掌握情况n计算机系的学生熟悉常用的数据结构与算法,但是很计算机系的学生熟悉常用的数据结构与算法,但是很多学生没有学过多学生没有学过“科学计算算法科学计算算法”,面对具有数学难,面对具有数学难度的软件,根本无从下手。度的软件,根本无从下手。n测试这样的小题目:请编写浮点变量测试这样的小题目:请编写浮点变量x x与零值比较的与零值比较的ifif语句,竟然有语句,竟然有5050以上的程序员这样写以上的程序员这样写if(x=0)if(x=0) DoSomething(); DoSomething(); 他们根本没有意识到浮点变量有精度限制,他们根本没有意识到浮点变量有精度限制,x x不能不能用用“=”或者或者“!=!=”直接与数值比较。很多程序员在读直接与数值比较。很多程序员在读书的时候没有学过数值计算,在工作

温馨提示

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

评论

0/150

提交评论