六、详细设计
详细设计的根本目标是确定怎样具体地实现所要求的系统。
结构化设计
定义:结构程序设计是尽可能少用GO TO语句的程序设计方法。最好仅在检测出错误时才使用GO TO语句,而且应该总是使用前向GOTO语句。
如果只允许使用顺序、IF-THEN-ELSE型分支和DO_WHILE型循环这三种基本控制结构则成为经典结构程序设计。
如果除了这三种基本结构之外还允许使用DO_CASE型和DO_Until型循环结构,则成为扩展的结构程序设计。
如果在允许使用LEAVE(BREAK)结构,则成为是修正的结构程序设计。
优点:
对控制流程描绘直观,便于初学者掌握。
缺点:
(1)不是逐步求精好工具,过早考虑控制流程,非整体结构;
(2)用箭头代表控制流,程序员随意转移控制;
(3)不易表示数据结构和调用关系。
盒图(NS图)
他有以下特点
(1)功能域(一特定控制结构的作用域)明确;
(2)不可能任意转移控制;
(3)容易确定局部和全程数据的作用域;
(4)容易表现嵌套关系,也可表示模块的层次结构。
PAD图
PAD是问题分析图的英文缩写。
下面是PAD的图符。
判定树
判定表变种,表示复杂条件组合与应做动作间对应关系。
改进后的Jackson图
在线上多了判断条件。
Jackson方法步骤:
1.确定输入数据和输出数据逻辑结构,用Jackson图表达;
2.确定输入结构和输出结构中有对应关系(因果)的单元;
3.描绘数据结构的Jackson图导出描绘程序结构Jackson图;
4.列出所有操作和条件,分配到Jackson图中;
5.用伪码表示。
大家可以结合133页例子更好的理解Jackson方法。
程序复杂程度的度量
现在使用比较广泛的是McCabe方法和Halstead方法
McCabe方法
1、画流图
流图描述程序控制流,基本图形符 如下图所示。
2.计算流图的环形复杂度
三种方法:
- V(G)=区域数
- V(G)=E-N+2 (E为流图中边数,N为流图中节点数)
- V(G)=P+1 ( P为判定点数)
上图的环形复杂度是4
程序的环形复杂度取决于程序控制流的复杂度,即取决于程序结构的复杂程度,当程序内分支数或循环个数增加时,环形复杂度也随之增加。
一般来说环形复杂度《=10.
halstead方法(了解就行了吧应该)
halstead度量方法不仅仅度量了程序长度,还描述了程序的最小实现和实际实现之间的关系,并据此阐释程序语言的等级高低。它以程序中出现的操作符和操作数为计数对象,以它们的出现次数作为计数目标来测算程序容量和工作量。
设 n1 表示程序中不同的操作符个数,n2 表示程序中不同的操作数个数,N1 表示程序中出现的操作符总数,N2表示程序中出现的操作数总数。
程序长度N=N1+N2
以 N^ 表示程序的预测长度 Calculated program length: N^ = n1 log2 n1 + n2 log2 n2
课后题
3、程序流程图
4、(1)因为程序的循环控制结构居然有两个出口/p>
(2)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!