软件工程复习提纲——第五章

软件工程复习提纲,期末、考研的学霸笔记

第五章——详细设计

第五章详细设计 

  1. 详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统。
  2. 结构程序设计:

        1)如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每

          个代码块只有一个入口一个出口,则称这个程序是结构化的。

        2)三种基本的控制结构:

  1. 人机界面设计:

        1)在设计人机界面的过程中,有下述4个问题:

                系统响应时间:从用户完成某个控制动作到软件给出预期的响应之间的这段时间。

                用户帮助设施:常见的帮助设施可分为集成的和附加的两类。

                出错信息处理:(无)

                命令交互:菜单+键盘输入。

  1. 过程设计工具:

        1)程序流程图:

            优点:直观、容易掌握,且历史“久”, 使用广泛。

            缺点:本质上不具备逐步求精的特点;用箭头代表控制流,转移控制太方便;

                  不易表示数据结构。

 2)盒图(N-S图):

            概念:是一种符合结构化程序设计原则的图形描述工具,用方框图代替传统的流程图。

            特点:(1) 功能域明确,可以从盒图上一眼就看出来。

                   (2) 不可能任意转移控制。

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

                   (4) 很容易表现嵌套关系,也可以表示模块的层次结构。

   3)PAD图(问题分析图):

            概念:用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。

            优点:(1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。

                  (2)  PAD图所描绘的程序结构十分清晰。   

                  (3) 用PAD图表现程序逻辑,易读、易懂、易记。

                  (4) 容易将PAD图转换成高级语言源程序。

                  (5) 即可用于表示程序逻辑,也可用于描绘数据结构。

                  (6)  PAD图的符号支持自顶向下、逐步求精方法的使用。

   4)判定表:

            概念:当算法中包含多重嵌套的条件选择时,判定表能够清晰地表示复杂的条件组合与

                  应做的动作之间的对应关系。

    5)判定树:它是判定表的变种。

 判定树和判定表的优缺点:

 注:判定表与判定树并不适用于作  为一种通用的设计工具,通常用于辅助测试。

  1. 面向数据结构的设计方法:

       1) 定义:根据数据结构设计程序处理过程的方法。

          目标:得出对程序处理过程的描述。

          步骤:使用面向数据流的方法设计软件结构——使用面向数据结构的方法来设计每个模块  

                的处理过程。

          代表:Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法。

       2) Jackson图:

           (1)优点:a. 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。

                   b. 形象直观可读性好。

                   c. 既能表示数据结构也能表示程序结构。

           (2)三种类型:

 (3)Jackson方法的步骤:

                 ①分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构。

                 ②找出输入数据结构和输出数据结构中有对应关系的数据单元。

                 ③从描绘数据结构的Jackson图导出描绘程序结构的Jackson图。

                 ④列出所有操作和条件,并且把它们分配到程序结构图的适当位置。

                 ⑤用伪码表示程序。

        3)程序复杂程度的定量度量:

           (1)概念:程序的复杂性主要指模块内程序的复杂性。

           (2)McCabe方法:根据程序控制流的复杂程度定量度量程序的复杂程度。其结果称为程序

的环形复杂度。

                  ①方法:先画出流图,然后用该图的环路数作为程序复杂性的度量值。

                  ②流图组成:  圆:结点(一个圆代表一条或多条语句)。

                                         箭头线:边。

                  ③计算环形复杂度的方法:

                     a. 环形复杂度=流图中的区域数。

                     b. 环形复杂度V(G)=E-N+2,其中E是边数,N是结点数。

                     c. 环形复杂度V(G)=P+1,其中P是判定结点数。

                  ④例子:

 【【【实践表明,模块规模以V(G)≤10为宜,V(G)=10是模块规模的一个更科学

                      更精确的上限。】】】

            3)Halstead方法:根据程序中可执行代码行的运算符和操作数(运算对象)的个数来计

                           算程序的复杂性。

                  ①n1:程序中不同运算符的个数

                    n2:程序中不同操作数(运算对象)的个数

                    N1:程序中实际出现的运算符总个数

                    N2:程序中实际出现的操作数(运算对象)总个数

                    N(程序长度)=N1+N2

                    H(程序预测长度)=n1log2n1+n2log2n2

                    E:预测程序中包含错误的个数

                    E=Nlog2(n1+n2)/3000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是一只派大鑫

一块两块不嫌少,三块四块不嫌多

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值