[软件工程导论(第六版)]第6章 详细设计(复习笔记)

news2024/9/24 3:21:16

文章目录

    • 6.1 结构程序设计
    • 6.2 人机界面设计
    • 6.3 过程设计的工具
      • 6.3.1 程序流程图(程序框图)
      • 6.3.2 盒图(N-S图)
      • 6.3.3 PAD图(问题分析图)
      • 6.3.4 判定表
      • 6.3.5 判断树
      • 6.3.6 过程设计语言
    • 6.4 面向数据结构的设计方法
      • 6.4.1 Jackson图
      • 6.4.2 改进的Jackson图
    • 6.5 程序复杂程度的定量度量
      • 6.5.1 McCabe方法
      • 6.5.2 Halstead方法


  • 详细设计阶段的根本目标:确定应该怎样具体地实现所要求的系统
  • 详细设计阶段的任务不是具体地编写程序
  • 详细设计不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
  • 结构程序设计技术是实现详细设计目标的关键技术,也是详细设计的逻辑基础。

6.1 结构程序设计

  1. 经典定义
    • 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
  2. 程序设计新定义:
    • 结构程序设计方法是尽可能少用GO TO语句的程序设计方法。
  3. 控制结构
    • (1)基本控制结构
      • 三种基本的控制结构是“顺序”“选择”和“循环”,它们的流程图分别为
      • 在这里插入图片描述
      • 【注意】牢记三种基本控制结构,此为常考内容。
      • 3种基本控制结构保证每个代码块单入口和单出口,结构程序设计是详细设计的逻辑基础。
    • (2)扩展的控制结构
      • DO UNTIL和DO CASE的流程图分别是
      • 在这里插入图片描述
  • 如果只允许使用顺序、IF_THEN_ELSE型分支、DO_WHILE型循环这三种基本控制结构,为经典结构程序设计
  • 还允许使用DO_CASE型多分支结构和DO_UNTIL型循环结构,为扩展的结构程序设计
  • 如果还允许使用LEAVE(或BREAK)结构,为修正的结构程序设计

6.2 人机界面设计

  • 重要性
    • 人机界面设计是接口设计的重要组成部分
    • 对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。
    • 人机界面的质量直接影响用户对软件产品的接受程度。
  • 设计问题
    • (1)系统响应时间;
    • (2)用户帮助设施;
    • (3)出错信息处理;
    • (4)命令交互。
  • 设计过程
    • 用户界面设计是一个迭代的过程,也就是说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。
  • 人机界面设计指南
    • 有助于设计者设计出友好、高效的人机界面
    • 一般交互指南
    • 信息显示指南
    • 数据输入指南

6.3 过程设计的工具

  • 过程设计的工具,描述程序处理过程的工具,可以分为图形、表格、语言三类

6.3.1 程序流程图(程序框图)

  • (1)符号表示
    • 程序流程图中使用的符号表示如图所示。
    • 在这里插入图片描述
  • (2)优点
    • 对控制流程的描绘很直观,便于初学者掌握。
  • (3)缺点
    • ① 没遵循逐步求精的原则,它诱使程序员过早地考虑程序的控制流程, 而不去考虑程序的全局结构。
    • ② 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以随意转移控制。
    • ③ 程序流程图不易表示数据结构。

6.3.2 盒图(N-S图)

  • (1)特点
    • ① 功能域明确;
    • ② 不可能任意转移控制;
    • ③ 很容易确定局部和全程数据的作用域;
    • ④ 很容易表示嵌套关系,也可以表示模块的层次结构。
  • (2)表示
    • 下图给出了结构化控制结构的盒图表示,也给出了调用子程序的盒图表示方法。
    • 在这里插入图片描述
  • (3)优点
    • ① 盒图没有箭头,因此不允许随意转移控制。
    • ② 盒图可以使程序员逐步养成用结构化的方式思考问题和解决问题的习惯。

6.3.3 PAD图(问题分析图)

  • (1)符号表示
    • PAD图用二维树形结构的图来表示程序的控制流,下图给出PAD图的基本符号。
    • 在这里插入图片描述
  • (2)优点
    • ① 使用PAD符号所设计出来的程序必然是结构化程序。
    • ② PAD图所描绘的程序结构十分清晰。
    • ③ 用PAD图表现程序逻辑,易读、易懂、易记。
    • ④ 容易使用软件工具将PAD图自动转换成高级语言源程序,提高了软件可靠性和软件生产率。
    • ⑤ 即可用于表示程序逻辑,也可用于描绘数据结构。
    • ⑥ PAD图的符号支持自顶向下、逐步求精方法的使用。
  • 【注意】PAD图中竖线的总条数就是程序的层次数。
  • 在这里插入图片描述
  • PAD图是面向高级程序设计语言的,为每种常用的高级程序设计语言提供了一整套相应的图形符号

6.3.4 判定表

  • (1)适用性
    • 算法中包含多重嵌套的条件选择时使用判定表。
    • 判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系
  • (2)组成
    • ① 左上部列出所有条件;
    • ② 左下部是所有可能做的动作;
    • ③ 右上部是表示各种条件组合的一个矩阵;
    • ④ 右下部是和每种条件组合相对应的动作。
    • 在这里插入图片描述
    • 在这里插入图片描述
    • 在这里插入图片描述
  • 【注意】判定表右半部的每一列实质上是一条规则,规定了与特定的条件组合相对应的动作。

6.3.5 判断树

  • 判定树是判定表的变种,能够清晰地表示复杂的条件组合与应做的动作之间的对应关系
  • 在这里插入图片描述

6.3.6 过程设计语言

  • (1)定义
    • 过程设计语言(PDL),即伪码,它是用正文形式表示数据和处理过程的设计工具。
  • (2)优点
    • ① 可作为注释直接插在源程序中,有助于保持文档和程序的一致性,提高文档的质量。
    • ② 可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。
    • ③ 已经有自动处理PDL的程序存在,且可以自动由PDL生成程序代码。
  • (3)缺点
    • 不如图形工具形象直观,不如判定表清晰简单。

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

6.4.1 Jackson图

  • (1)分类
    • Jackson图根据程序中数据元素彼此间的逻辑关系可分为顺序结构、选择结构和重复结构3类,具体如下:
    • ① 顺序结构
      • 在这里插入图片描述
      • 【注意】图中每个元素只出现一次,出现的次序依次是B、C和D。
    • ② 选择结构
      • 在这里插入图片描述
      • 【注意】在B、C和D的右上角有小圆圈做标记。
    • ③ 重复结构
      • 在这里插入图片描述
      • 【注意】在B的右上角有星号标记。
  • (2)优点
    • ① 便于表示层次结构,而且是对结构进行自顶向下分解的有力工具。
    • ② 形象直观可读性好。
    • ③ 既能表示数据结构也能表示程序结构。
  • (3)缺点
    • ① 图中无法表示选择条件或循环结束条件,影响了图的表达能力,也不易直接把图翻译成程序。
    • ② 框间连线为斜线,不易在行式打印机上输出。

6.4.2 改进的Jackson图

  • (1)表示
    • 改进的Jackson图。
    • 在这里插入图片描述
    • (a)顺序结构:B、C、D中任一个都不能是选择出现或重复出现的数据元素。
    • (b)选择结构:S右面括号中的数字i是分支条件的编号。
    • (c)可选结构:A或者是元素B或者不出现。
    • (d)重复结构:循环结束条件的编号为i。
  • (2)与层次图的比较
    • ① 层次图中的一个方框代表一个模块;而Jackson图中一个方框并不代表一个模块。
    • ② 层次图表现的是调用关系;而Jackson图表现的是组成关系。

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

6.5.1 McCabe方法

  • (1)流图
    • ① 定义
      • 流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据具体操作以及分支或循环的具体条件。
    • ② 程序流程图映射成流图
      • 下图说明了把程序流程图映射成流图的方法。
      • 在这里插入图片描述
      • a.流图中用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。
      • b.流图中的箭头线称为边,代表控制流。流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句。
      • c.由边和结点围成的面积称为区域,计算区域数时应包括图外部未被围起来的区域。
    • ③ PDL翻译成流图
      • a.基本情况
        • 下图是用PDL表示的处理过程及与之对应的流图。
        • 在这里插入图片描述
      • b.包含复合条件
        • 复合条件,就是在条件中包含了一个或多个布尔运算符。下图是由包含复合条件的PDL片段翻译成的流图。
        • 在这里插入图片描述
  • (2)环形复杂度
    • ① 定义
      • McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,度量出的结果称为程序的环形复杂度。
    • ② 计算方法
      • 环形复杂度定量度量程序的逻辑复杂度,可以用下述3种方法中的任何一种来计算环形复杂度:
        • a.流图中线性无关的区域数等于环形复杂度。
        • b.流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
        • c.流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
  • 环形复杂度V(G)=10是模块规模的合理上限。

6.5.2 Halstead方法

  • (1)定义
    • Halstead方法是根据程序中运算符和操作数的总数来度量程序的复杂程度。
  • (2)方法
    • ① 程序长度N定义(N1为程序中运算符出现的总次数,N2为操作数出现的总次数):N=N1+N2;
    • ② 预测程序长度的公式(使用的不同运算符的个数n1,不同操作数的个数n2):H=n1log2(n1)+n2log2(n2);
    • ③ 预测程序中包含错误的个数的公式:E=Nlog2(n1+n2)/3000。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud Nacos实战(二)- 服务提供者注册

Nacos服务提供者注册 Nacos代替Eureka ​ Nacos可以直接提供注册中心(Eureka)配置中心(Config),所以它的好处显而易见,我们在上节课成功安装和启动了Nacos以后就可以发现Nacos本身就是一个小平台&#xf…

解决IDEA报错:无效的目标发行版: 17

解决IDEA报错:无效的目标发行版: 17 目录解决IDEA报错:无效的目标发行版: 17报错由来解决报错【1】检查setting设置,查看编译器编译模块的编译版本是否是你需要的【2】尝试去修改当前项目的启动设置,设置JRE为你需要的版本。【3】…

odoo如何完成员工借款、报销、归还余款的会计操作?【业财一体】

ODOO中如何实现财务场景:一个员工从公司借款1000元,然后用这个借款,支付了电费500元,然后又归还剩余500元呢? 一、基本流程如下: 二、基础科目的设置 1.1 预付账款科目:设置在 产品【Employee…

DQL 多表查询

1、多表关系 一对多(多对一) 案例: 部门 与 员工的关系 关系: 一个部门对应多个员工,一个员工对应一个部门 实现: 在从表的一方建立外键,指向主表一方的主键 多对多 案例: 学生 与 课程的关系 关系: 一个学生可以选修多门课程&am…

Revisiting Distributed Synchronous SGD 带有Back-up机制的分布式同步SGD方法 论文精读

论文链接:Revisiting Distributed Synchronous SGD ABS 本文介绍了用于分布式机器学习的同步和异步SGDSGDSGD,同时指出各自的缺点:stragglersstragglersstragglers和stalenessstalenessstaleness。 同时为了解决同步SGDSGDSGD存在straggle…

【go语言grpc之client端源码分析二】

go语言grpc之server端源码分析二DialContextparseTargetAndFindResolvergetResolvernewCCResolverWrapperccResolverWrapper.UpdateStatecc.maybeApplyDefaultServiceConfigccBalancerWrapper.updateClientConnState上一篇文章分析了ClientConn的主要结构体成员,然后…

扫雷小游戏 - C语言

目录 一、扫雷游戏 1.游戏一共创建使用了三个文件 2.test.c 文件代码(游戏逻辑) 3.game.h - 必要的函数声明代码 4.game.c 游戏所有函数实现代码 一、扫雷游戏 1.游戏一共创建使用了三个文件 test.c - 测试游戏逻辑 game.h - 游戏代码包含的函数…

低频量化之指数 PE-PB-偏离 数据

目录历史文章股票明日涨停预测指数PEPB分位指数PE分位指数PB分位行业指数PEPB分位行业指数PE分位行业指数PB分位指数60日线偏离数据指数MA60偏离统计上证指数 MA60偏离度深证成指 MA60偏离度创业板指 MA60偏离度中小100 MA60偏离度上证50 MA60偏离度沪深300 MA60偏离度中证500 …

代码随想录算法训练营第45天动态规划 背包基础 1 2、 416. 分割等和子集

文章目录01背包基础 (二维数组)思路递推公式初始化遍历顺序一维dp数组(滚动数组)一维数组的递推公式遍历顺序LeetCode 416. 分割等和子集思路总结01背包基础 (二维数组) 思路 根据动态规划五部进行分析&a…

Vulnhub 渗透练习(八)—— THE ETHER: EVILSCIENCE

环境搭建 环境下载 靶机和攻击机网络适配都选 NAT 即可。 信息收集 主机扫描 两个端口,22 和 80,且 apache httpd 2.4.0~2.4.29 存在换行解析漏洞。 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中…

跨域问题的三种解决办法

我们平时对于前后端联调的项目,以下的错误是经常常见的,我们查看浏览器报错: Access to XMLHttpRequest at http://localhost:63110/system/dictionary/all fromorigin http://localhost:8601 has been blocked by CORS policy: No Access…

自动化测试5年经验,分享一些心得

自动化测试介绍 自动化测试(Automated Testing),是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模拟手工测试过程。比如说,在项目迭代过程中,持…

【Flutter入门到进阶】Dart进阶篇---Dart多线程异步原理

1 Isolate 1.1 什么是Isolate 1.1.1 概念 线程?异步?隔离?到底什么意思? Isolate中文意思是隔离,从使用角度来说是Dart的线程,但是从本质虚拟机的实现角度来讲Isolate是一组封装。 isolate可以理解为dar…

群晖-第1章-IPV6的DDNS

群晖-第1章-IPV6的DDNS 方案:腾讯云群晖DS920 本文参考群晖ipv6 DDNS-go教程-牧野狂歌,感谢原作者的分享。 这篇文章只记录了我需要的部分,其他的可以查看原文,原文还记录了更多的内容,可能帮到你。 一、购买域名 …

【基于众包标注的语文教材句子难易度评估研究 论文精读】

基于众包标注的语文教材句子难易度评估研究 论文精读信息摘 要0 引言1 相关研究2 众包标注方法3 语料库构建3.1 数据收集3.1 基于五点量表的专家标注3.3 基于成对比较的众包标注4 特征及模型4.1 特征抽取4.2 模型与实验设计4.2.1 任务一:单句绝对难度评估4.2.2 任务二:句对相对…

《JavaScript百炼成仙》,简单但是挺有效的

编程之修,重在积累,而非资质。资质虽然重要,可是后天的努力更不可少。 《JavaScript百炼成仙》是一本以玄幻小说的形式,来讲述JavaScript的知识。 此篇仅仅是我快速阅读《JavaScript百炼成仙》这本书的笔记,流水账笔…

MySQL进阶篇之InnoDB存储引擎

06、InnoDB引擎 6.1、逻辑存储结构 表空间(Tablespace) 表空间在MySQL中最终会生成ibd文件,一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。 段(Segment) 段,分为数据段&#x…

python基于vue微信小程序 房屋租赁出租系统

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2.1 2.2MyEclipse环境配置 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 2. 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行…

面试准备知识点与总结——(虚拟机篇)

目录JVM的内存结构JVM哪些部分会发生内存溢出方法区、永久代、元空间三者之间的关系JVM内存参数JVM垃圾回收算法1.标记清除法2.标记整理3.标记复制说说GC和分代回收算法三色标记与并发漏标的问题垃圾回收器项目中什么时候会内存溢出,怎么解决类加载过程三个阶段何为…

Docker 架构简介

Docker 架构 Docker 包括三个基本概念: 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器&am…