第6章 详细设计(软件工程导论 第6版)

详细设计的根本目标:

       得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序(确定应该怎样具体地实现所要求的系统)

详细设计的目标:

     (1)逻辑上正确地实现每个模块的功能

     (2)设计出的处理过程应该尽可能简明易懂(更重要)

详细设计的逻辑基础:结构程序设计技术

1、结构程序设计

(1)经典定义

      如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口一个出口,则称这个程序是结构化的

(2)全面定义

      结构程序设计是尽可能少用GO TO语句的程序设计方法,最好仅在检测出错误时才使用GO TO语句,而且应该总是使用前向GO TO语句

2、人机界面设计

(1)重要性

     人机界面设计是接口设计的一个重要的组成部分,其设计质量直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命

(2)设计问题(4个)

  1.系统响应时间

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

     两个重要属性:长度 & 易变性

        A.长度:如果系统响应时间过长,用户就会感到紧张和沮丧;时间过短会迫使用户加快操作节奏,从而可能会犯错误

        B.易变性:指系统响应时间相对于平均响应时间的偏差

  2.用户帮助设施

     常见的帮助设施可分为:集成的 & 附加的

        A.集成的帮助设施:一开始就设计在软件里面,可以缩短用户获得帮助的时间,增加界面的友好性

        B.附加的帮助设施:系统建成后再添加到软件中的

  3.出错信息处理

     交互式系统给出的出错信息或警告信息,应该具有的属性:

         A.信息应该用用户可以理解的术语描述问题

         B.信息应该提供有助于从错误中恢复的建设性意见

         C.信息应该指出错误可能导致哪些负面后果,以便用户检查是否出现了这些问题,并在确实出现问题时及时解决

         D.信息应该伴随着听觉上或视觉上的提示

         E.信息不能带有指责色彩,也就是说,不能责怪用户

  4.命令交互

     命令行曾经是用户和系统软件交互的最常用的方式

(3)设计过程

     用户界面设计是一个迭代的过程,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改

(4)人机界面设计指南:一般交互指南、信息显示指南、数据输入指南

3、过程设计的工具

(1)程序流程图(程序框图)

优点:对控制流程的描绘很直观,便于初学者掌握   

缺点:

    A.本质上不是逐步求精的好工具,诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构

    B.程序流程图用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制

    C.不易表示数据结构

程序流程图中使用的符号:

(2)盒图(N-S图)

特点:

    A.功能域明确

    B.不能任意转移控制

    C.很容易确定局部和全程数据的作用域

    D.很容易表现嵌套关系,也可以表示模块的层次结构

优点:使程序员逐步养成用结构化的方式思考问题和解决问题的习惯

盒图的基本符号:

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

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

优点:

    A.使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序

    B.PAD图所描绘的程序结构十分清晰

    C.用PAD图表现程序逻辑,易读、易懂、易记

    D.容易将PAD图转换成高级语言源程序,有利于提高软件可靠性和软件生产率

    E.即可用于表示程序逻辑,也可用于描绘数据结构

    F.PAD图的符号支持自顶向下、逐步求精方法的使用

(4)判定表

判定表:能够清晰地表示复杂的条件组合与应做的动作之间的对应关系

优点:能够简洁而又无歧义地描述处理规则

缺点:不适于作为一种通用的设计工具

判定表的组成:

    A.左上部列出所有条件

    B.左下部是所有可能做的动作

    C.右上部是表示各种条件组合的一个矩阵

    D.右下部是和每种条件组合相对应的动作

(5)判定树

判定树:能够清晰地表示复杂的条件组合与应做的动作之间的对应关系

优点:形式简单不需任何说明,易于掌握和使用

缺点:简洁性不如判定表,数据元素的同一个值往往要重复写多遍,越接近树的叶端重复次数越多

(6)过程设计语言(PDL/伪码)

伪码:用正文形式表示数据和处理过程的设计工具

特点:

    A.关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点

    B.自然语言的自由语法,它描述处理特点

    C.数据说明的手段,既包括简单的数据结构,又包括复杂的数据结构

    D.模块定义和调用的技术,应该提供各种接口描述模式

优点:

    A.可以作为注释直接插在源程序中间

    B.可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作

    C.已经有自动处理PDL的程序存在,而且可以自动由PDL生成程序代码

缺点:不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单

4、面向数据结构的设计方法

(1)Jackson图

逻辑关系:顺序、选择、重复

逻辑数据结构:顺序结构、选择结构、重复结构

Jackson图的优点:

    A.便于表示层次结构,而且是对结构进行自顶向下分解的有力工具

    B.形象直观可读性好

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

Jackson图的缺点:

    A.表示选择或重复结构时,选择条件或循环结束条件不能直接在图上表示出来,影响了图的表达能力,也不易直接把图翻译成程序

    B.框间连线为斜线,不易在行式打印机上输出

区分层次图&Jackson图:

    A.层次图、结构图:调用关系

    B.Jackson图、层次方框图:组成关系

(2)Jackson方法

Jackson结构程序设计方法的步骤

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

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

    C.从描绘数据结构的Jackson图导出描绘程序结构的Jackson图

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

    E.用伪码表示程序

(3)最著名的两个面向数据结构的设计方法:Jackson方法&Warnier方法

5、程序复杂程度的定量度量

1.McCabe方法

(1)McCabe方法:根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度

(2)流图:实质上是退化了的“程序流程图”,仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件

2.计算环形复杂度的方法

(1)流图G的环形复杂度V(G)=P+1,P是流图中判定结点的数目

(2)流图G的环形复杂度V(G)=E-N+2,E是流图中边的条数,N是结点数

(3)流图中线性无关的区域数等于环形复杂度

猜你喜欢

转载自blog.csdn.net/weixin_65213208/article/details/126926617