软件工程导论期末复习(六)

2023-05-16

本文用书:《软件工程导论》 第六版 清华大学出版社

1、结构程序设计中有哪几种基本控制结构?

2、了解人机界面的设计。

3、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)

4、面向数据结构的设计方法(Jackson图)

5、程序复杂度的定量度量(McCabe)

第六章 详细设计

6.1 结构程序设计

顺序、选择和循环。

16a1182cdbf64bf082b0b713c1b8f2e0.png

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

6.2人机界面设计

1.设计问题

(1)系统响应时间:长度和易变性;

(2)用户帮助设施:集成和附加;

(3)出错信息处理;

(4)命令交互。

2.设计过程

(1)系统及其界面的规格说明书的长度和复杂程度,预示了用户学习使用该系统所需要的工作量。

 (2)命令或动作的数量、命令的平均参数个数或动作中单个操作的个数,预示了系统的交互时间和总体效率。

 (3)设计模型中包含的动作、命令和系统状态的数量,预示了用户学习使用该系统时需要记忆的内容的多少。  

(4)界面风格、帮助设施和出错处理协议,预示了界面的复杂程度及用户接受该界面的程度。

3.人机界面设计指南

(1)一般交互指南;

(2)信息显示指南;

(3)数据输入指南。

6.3 过程设计的工具

1.程序流程图

b26d2e1705a34e48b32ee7be082287e4.png

 (1)优点:对程序的控制流程描述直观、清晰,使用灵活,便于阅读和掌握。

(2)缺点:

<1> 程序流程图中可以随心所欲地使用流程线,容易造成程序控制结构的混乱,与结构化程序设计的思想相违背。

<2>程序流程图难以描述逐步求精的过程,容易导致程序员过早考虑程序的控制流程,而忽略程序全局结构的设计。

<3>程序流程图难以表示系统中的数据结构。

2.盒图(N-S图)

b05a3a5c9ef94fcd8e9387dbe76e2297.png

(1)优点:表达出的程序结构必然符合结构化程序设计的思想,有利于培养软件设计人员的良好设计风格。

 (2)缺点:当所描述的程序嵌套层次较多时,N-S图的内层方框会越画越小,不仅影响可读性而且不易修改。

3.PAD图

453daffc8fa84e8fbe8c9a10ec7c8765.png

 (1)优点:

(1) 使用PAD图描述的程序结构层次清晰,逻辑结构关系直观、易读、易记、易修改。  

(2)  PAD图为多种常用高级语言提供了相应的图形符号, 每种控制语句都与一个专门的图形符号相对应,易于PAD图向高级语言源程序转换。    

(3) 支持自顶向下、逐步求精的设计过程。    

(4) 既能够描述程序的逻辑结构,又能够描述系统中的数据结构。

4.判定表

例:一图书销售系统,其中一加工为“优惠处理”,条件是:顾客的营业额大于1000元,同时必须信誉好,或者虽然信誉不好,但是20年以上的老主顾。

25379f4b88794a129ed441a7f7b7c65a.png27e7097c5e954e9193b39d41328cbff8.png

(1)缺点:虽然能清晰地表示复杂的条件组合与应做的动作之间的对应关系,但其含义却不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。此外,当数据元素的值多于两个时(例如,6.3.4例子中假设对机票需细分为头等舱、二等舱和经济舱等多种级别时),判定表的简洁程度也将下降。 判定

5.判定树

4953b3a9cfa144989208bfe950ecae0e.png

 (1)优点:形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。

6.过程设计语言(PDL):一种用于描述程序算法和定义数据结构的伪代码。

(1)主要特点:

(1) 各种定义语句及控制结构的表达都具有严格的语法形式,使程序结构、数据说明等更加清晰。  

(2) 提供了数据说明机制,可用于定义简单及复杂的数据结构。    

(3) 提供了模块的定义和调用机制,方便了程序模块化的表达。

6.4 面向数据结构的设计方法

1.Jackson图

61185d59ee82429ab74b75f32b03dc79.png

改进后的Jackson图:

 

1.优点

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

(2)形象直观可读性好;

(3)既能表示数据结构也能表示程序结构.

2.Jackson方法

例:一个正文文件由若干个记录组成,每个记录是一个字符串。要求统计每个记录中空格字符的个数,以及文件中空格字符的总个数。要求的输出数据格式是,每复制一行输入字符串之后,另起一行印出这个字符串中的空格数,最后印出文件中空格的总个数。

(1) 分析并确定输入数据输出数据的逻辑结构,并用Jackson图描绘这些数据结构。(左输入右输出)

 

(2) 找出输入数据结构和输出数据结构中有对应关系的数据单元。所谓有对应关系是指有直接的因果关系,在程序中可以同时处理的数据单元(对于重复出现的数据单元必须重复的次序和次数都相同才可能有对应关系)。(虚线表示找出的有对应关系的数据单元)

(3) 用下述3条规则从描绘数据结构的Jackson图导出描绘程序结构的Jackson图:

<1>为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意,如果这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应);

 <2>根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框;  

 <3>根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。

 

(4) 列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。

 

(5) 用伪码表示程序。

统计空格seq

        打开文件

        读入字符串

        totalsum∶=0

        程序体iter until文件结束

             处理字符串seq

            印字符串seq

                 印出字符串

            印字符串end

            sum∶=0

            pointer∶=1

            分析字符串iter until字符串结束

                分析字符select字符是空格

                处理空格seq

                    sum∶=sum+1

                    pointer∶=pointer+1

                处理空格end

                分析字符or字符不是空格

                处理非空格seq

                    pointer∶=pointer+1

                处理非空格end

                分析字符end

            分析字符串end

            印空格数seq

                印出空格数目

            印空格数end

            totalsum∶=totalsum+sum

            读入字符串

             处理字符串end

        程序体end

        印总数seq

            印出空格总数

        印总数end

        关闭文件

        停止

统计空格end

6.5 程序复杂程度的定量度量

1.McCabe方法

(1)映射方法

(2) 环形复杂度的计算:

(1) 流图中的区域数等于环形复杂度。

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

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

(3)程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。  McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明,模块规模以V(G)≤10为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。

(4)例子

做题步骤:

<1>做出程序流程图;

<2>根据程序流程图映射出流图;

<3>根据流图计算环形复杂度。

 

2.Halstead方法(略)

令N1为程序中运算符出现的总次数,N2为操作数出现的总次数,程序长度N定义为:N=N1+N2

 详细设计完成之后,可以知道程序中使用的不同运算符(包括关键字)的个数n1,以及不同操作数(变量和常数)的个数n2。Halstead给出预测程序长度的公式如下:H=n1 log2  n1+n2 log2 n2

 多次验证都表明,预测的长度H与实际长度N非常接近。

Halstead还给出了预测程序中包含错误的个数的公式如下:E=N log2 (n1+n2)/3000

 有人曾对从300条到12000条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在8%之内。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件工程导论期末复习(六) 的相关文章

随机推荐

  • 如何进入ThinkServer RQ940服务器的UEFI HII SAS RAID阵列配置界面

    操作步骤 内容导航 一 进入SAS RAID阵列配置界面 二 硬盘选择操作 三 确认操作 一 进入SAS RAID阵列配置界面 启动服务器 xff0c 在出现ThinkServer logo的时候按F2或者Delete键进入BIOS配置界面
  • 联想服务器在UEFI HII界面中配置阵列的基本操作

    重要提示 xff1a 配置阵列时请谨慎操作 xff0c 并仔细阅读各种提示 xff0c 以防误操作导致数据损失 内容导航 一 进入阵列卡配置界面并查看硬盘状态 二 创建RAID0 1 5 6阵列 三 创建RAID10阵列 四 创建分卷的RA
  • 戴尔dell poweredge r730服务器系统安装配置详解教程

    这篇文章主要介绍了戴尔dell poweredge r730服务器系统安装配置详解教程 需要的朋友可以参考下 第一次给服务器安装的是ubantu系统 xff1b 首先我们开机进入小型BIOS设置一下RAID 或者进入服务器管理系统 xff0
  • Huawei交换机配置Telnet登录

    Huawei交换机配置Telnet登录 一 交换机开启Telnet服务 lt Huawei gt system view 进入系统视图 Huawei telnet server xff1f 查看有enable还是disable选项 xff0
  • Huawei设备配置系统时间

    系统时钟是设备上的系统时间戳 由于地域的不同 xff0c 用户可以根据当地规定设置系统时钟 用户必须正确设置系统时钟以确保其与其他设备保持同步 华为设备出厂时默认采用了协调世界时 UTC xff0c 但是没有配置时区所有在配置设备系统时钟前
  • A start job is running for Raise network interface(5min 13s )问题解决方法

    我在笔记本电脑上安装了Ubuntu 16 04 xff0c 当我有局域网连接时 xff0c 启动ubuntu是很快的 xff0c 当LAN电缆断开时 xff0c 需要大约5分钟才能获得登录屏幕 xff0c 这个实在是无法忍受 我的推测 xf
  • Linux常用浏览器

    1 火狐浏览器是一个安全高效的浏览器 xff0c 它具有速度快 隐私保护 丰富的插件资源 不同设备之间同步数据 分页浏览 个性化定制等特性 2 谷歌浏览器 谷歌浏览器是一个由Google公司开发的网页浏览器 xff0c 具有稳定 快速 安全
  • Ubuntu18.04 解压zip文件乱码的解决方法

    在Ubuntu的系统下解压zip文件的时候居然出现了乱码 xff0c 通过查找网上的资料 xff0c 解决的办法有两种 一 通过unzip行命令解压 xff0c 指定字符集 xff0c 由于zip格式中并没有指定编码格式 xff0c Win
  • /etc/resolv.conf文件详解

    etc resolv conf它是DNS客户机配置文件 xff0c 用于设置DNS服务器的IP地址及DNS域名 xff0c 还包含了主机的域名搜索顺序 该文件是由域名解析器 xff08 resolver xff0c 一个根据主机名解析IP地
  • CCF 201812-4 数据中心 Java

    一 题目 问题描述 试题编号 xff1a 201812 4试题名称 xff1a 数据中心时间限制 xff1a 1 0s内存限制 xff1a 512 0MB问题描述 xff1a 样例输入 4 5 1 1 2 3 1 3 4 1 4 5 2 3
  • QT 显示文件目录

    include lt QDir gt include lt iostream gt int main int argc char argv QCoreApplication app argc argv QDir dir dir setPat
  • 面向对象设计——系统动态模型设计(1,交互模型)

    在这张图中 xff0c 系统对象静态设计前边我们在分析中已经学习了 xff0c 这个阶段需要做的就是细化优化 这里我们主要学习系统设计 xff0c 这篇博客我们学习系统动态建模中交互模型建模 首先需要我们学习的是对象之间的通信 xff0c
  • 面向对象设计——系统动态模型设计(2,状态模型)

    这篇总结状态模型建模 xff1a 状态图和活动图 先看看状态图和活动图小结 xff1a 下边我们看一下 xff0c 状态图的事务 xff08 活动图的在前边的博客中已经给出 xff0c 活动图另一个大用处就是细化说明用例 xff09 xff
  • 【sql语句基础】——查(select)(单表查询)

    目录 查 select 单表查询基本语法表代码样例select注意事项 where子句排序order by子句合计 统计函数 count求和sum平均值avg最大值最小值max和min 分组group by过滤having 分页查询limi
  • 软件工程导论期末复习(一)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 第一章 软件工程学概述 一 软件危机 1 什么是软件危机 xff1f 指在计算机软件开发和维护过程中所遇到的一系列严重问题 2 软件危机的典型表现 xff1a xff08 不怎么重
  • 软件工程导论期末复习(二)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 可行性研究的目的是什么 xff1f 2 应从哪些方面研究可行性 xff1f 3 如何画系统流程图 xff1f 4 如何画数据流图 xff1f 5 了解数据字典及成本效益分析 第
  • 软件工程导论期末复习(三)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 需求分析的基本任务是什么 xff1f 2 分析建模 2 1什么是模型 xff1f 模型 xff1a 就是为了理解事物而对事物做出的一种抽象 xff0c 是对事物的一种无歧义的书
  • 软件工程导论期末复习(四)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 有穷状态机 2 peri网技术 第四章 形式化说明技术 4 1 概述 1 非形式化方法的缺点 用自然语言书写的系统规格说明书 可能存在矛盾 二义性 含糊性 不完整性及抽象层次混
  • 软件工程导论期末复习(五)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 在设计过程中 xff0c 总体设计一般有哪两个主要阶段组成 xff1f 2 什么模块化 xff1f 模块独立性包含哪些内容 xff1f 度量准则是什么 xff1f 3 启发规则
  • 软件工程导论期末复习(六)

    本文用书 xff1a 软件工程导论 第六版 清华大学出版社 1 结构程序设计中有哪几种基本控制结构 xff1f 2 了解人机界面的设计 3 掌握过程设计的工具 xff08 程序流程图 盒图 PAD图 xff0c 判定树 xff09 4 面向