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

2023-05-16

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

1、在设计过程中,总体设计一般有哪两个主要阶段组成?

2、什么模块化?模块独立性包含哪些内容?度量准则是什么?

3、启发规则有哪些?

4、描绘软件结构的图形工具

5、面向数据流的设计方法

第五章 总体设计

5.1 设计过程

1.两个主要阶段:

(1)系统设计阶段;

(2)结构设计阶段。

2.九个步骤:

(1)设想供选择的方案。需求阶段的数据流图是总体设计的极好出发点。

(2) 选取合理的方案。

(3)推荐最佳方案。

(4)功能分解。(结构设计和过程设计)

(5)设计软件结构。

(6)设计数据库。

(7)制定测试计划。

(8)书写文档。

(9)审查和复查。

5.2 设计原理

1.模块化

(1)模块:一个拥有明确定义的输入、输出和特性的程序实体。

(2)模块化:将系统划分为若干个模块,每个模块完成一个子功能。

(3)并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数M。注意选择分解的最佳模块数。下图描述了模块化与软件成本的关系。

 

2.抽象:抽出事物的本质特性而暂时不考虑它们的细节。

3.逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

4.信息隐藏和局部化:

信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。

局部化是指把一些关系密切的软件元素物理地放得彼此靠近。

5.模块独立(高内聚低耦合)

(1)三个基本属性:

⑴功能  即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。

⑵逻辑  即描述模块内部怎么做。

⑶状态  即该模块使用时的环境和条件。

(2)定性准则:

耦合性:用于描述模块之间联系的紧密程度;

1.类型: 

<1>数据耦合:若两个模块之间仅通过模块参数交换信息,且交换的信息全部为简单数据。

<2>复合耦合:

<3>控制耦合:若模块之间交换的信息中包含有控制信息(尽管有时控制信息是以数据的形式出现的)。

void output(flag) {

if (flag) printf("OK! ");

 else printf("NO! ");

}

main() {

int flag; output(flag);

  }/*主函数与output函数之间即为控制耦合关系*/

<4>公共耦合:若两个或多个模块通过引用公共数据相互联系。

<5>内容耦合:

一个模块直接访问另一模块的内部数据。     

一个模块不通过正常入口转到另一模块的内部。   

 一个模块有多个入口。     

两个模块有部分代码重迭。

内聚性:用于描述模块内部联系的紧密程度。

1.类型:

<1>偶然内聚:若一个模块由多个完成不同任务的语句段组成,各语句段之间的联系十分松散或根本没有任何联系,则称此模块的内聚为偶然内聚。

<2>逻辑内聚:若一个模块可实现多个逻辑上相同或相似的一类功能

<3>瞬时内聚:若一个模块包含了需要在同一时间段中执行的多个任务

<4>过程内聚:若一个模块中的各个部分相关,并且必须按特定的次序执行

<5>通信内聚:若一个模块中的各个部分使用同一个输入数据或产生同一个输出数据

<6>顺序内聚:若一个模块中的各个部分都与同一个功能密切相关,并且必须按照先后顺序执行(通常前一个部分的输出数据就是后一个部分的输入数据)

<7>功能内聚:若一个模块中各个组成部分构成一个整体并共同完成一个单一的功能

模块独立性比较强的模块应该是具有高内聚性和的低耦合度。

5.3 启发规则

1.改进软件结构提高模块独立性。(高内聚低耦合)

2.模块规模应该适中。(一页内<60行)

3.深度、宽度、扇出和扇入都应适中。

有关指标:

⑴深度:表示软件结构中从顶层模块到最底层模块的层数。

⑵宽度:表示控制的总分布。

⑶扇出数:指一个模块直接控制下属的模块个数。

⑷扇入数:指一个模块的直接上属模块个数。

模块的扇入扇出数不宜太多 一个模块调用其他模块的个数,称为该模块的扇出。模块的扇出不宜过大,一般认为不要超出7个。 一个模块被其他模块调用的个数,称为该模块的扇入。扇入越大,除服务性模块外,模块的扇入扇出数不宜太多。否则块间联系增加。

 

4.模块的作用域应该在控制域之内。

 

5.力争降低模块接口的复杂程度。

6.设计单入口单出口模块。

7.模块功能应该可以预测。

5.4 描绘软件结构的图形工具(略)

5.5 面向数据流的设计方法

1.两种数据流

 

2.变换分析设计

(1)复查基本系统模型

(2)复查并精化数据流图

 

(3)确定数据流图具有变换特性还是事务特性

(4)确定输入流和输出流的的边界,从而孤立出变换中心

左边输入流(I)、中间变换中心(O)、右边输出流(P)

(5)完成第一级分解

 

(6)完成第二级分解

(7)使用设计度量和启发规则对第一次分割得到的软件结构进一步精化

 

3.事务分析设计

与变换分析设计类似,不同的点在于孤立出的是事务中心(只有一个)

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

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

随机推荐

  • noVNC连接多台远程主机

    noVNC是一个HTML5 VNC客户端 xff0c 采用HTML5 websockets Canvas和JavaScript实现 xff0c noVNC被普遍应用于各大云计算 虚拟机控制面板中 xff0c 比如OpenStack Dash
  • 如何进入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 启发规则