软件工程导论第五章复习总结附思维导图及部分习题答案

总体设计

一、设计过程

1.设想提供选择的方案

2.选取合理的方案

3.推荐最佳方案

4.功能分解

5.设计软件结构

6.设计数据库

7.制定测试计划

8.书写文档

  • 1.系统说明

  • 2.用户手册

  • 3.测试计划

  • 4.详细的实现计划

    • 1.测试策略
    • 2.测试方案
    • 3.预测的测试结果
    • 4.测试进度计划
  • 5.数据库设计结果

9.审查和复查

二、设计原理

1.模块化

2.抽象

3.逐步求精

4.信息隐藏和局部化

5.模块独立 目标:高内聚,低耦合

  • 1.耦合:软件结构内不同模块之间互连程度的度量

    • 1.完全独立:模块间无任何连接

    • 2.数据耦合:两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据

    • 3.控制耦合:传递的信息中有控制信息

    • 4.特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中的一部分数据元素

    • 5.公共环境耦合:两个或多个模块通过一个公共数据环境相互作用

    • 6.内容耦合:

      • 1.一个模块访问另一个模块的内部数据
      • 2.一个模块不通过正常入口而转到另一个模块内部
      • 3.两个模块有一部分程序代码重叠(只可能出现在汇编语言中)
      • 4.一个模块有多个入口
  • 2.内聚:一个模块内各个元素彼此间结合的紧密程度

    • 1.低内聚

      • 偶然内聚:一个模块完成一组任务,这些任务彼此间即使有关系,关系也很松散的
      • 逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类
      • 时间内聚:一个模块包含的任务必须在同一段时间执行
    • 2.中内聚

      • 过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行
      • 通信内聚:模块中所有元素都使用同一个输入数据或产生同一个输出数据
    • 3.高内聚

      • 顺序内聚:一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行
      • 功能内聚:模块内所有处理元素属于同一个整体,完成一个单一的功能

三、启发规则

1.改进软件结构提高模块独立性

2.模块规模应该适中

3.深度,宽度,扇出,扇入都应适当

  • 深度:软件结构中控制的层数,能粗略地标志一个系统的大小和复杂程度
  • 宽度:软件结构内同一个层次上的模块总数的最大值
  • 扇出:一个模块直接控制(调用)的模块数目
  • 扇入:表明有多少个上级模块直接调用它

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

  • 作用域:受该模块内一个判定影响到所有模块的集合
  • 控制域:这个模块本身以及所有直接或间接从属于它的模块的集合

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

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

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

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

1.层次图和HIPO图Page102

  • 层次图:描绘软件的层次结构;适于在自顶向下设计软件的过程中使用
  • HIPO图:层次图加输入/处理/输出图,具有可追踪性

2.结构图Page103

  • 1.一个方块代表一个模块
  • 2.框内注明模块的名字或主要功能
  • 3.方框之间的箭头(或直线)表示模块的调用关系

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

1.概念:面向数据流的设计方法把信息流映射成软件结构

  • 1.变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的的信息通过变换中心,经加工率处理以后再沿输入通路变换成外部形式离开软件系统

  • 2.事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选一个来执行

    • 1.接收输入数据(有称事务)
    • 2.分析每个事务以确定它的类型
    • 3.根据事务类型选取一条活动通路
  • 设计过程Page106

2.变换分析

  • 1.例子:Page106

  • 2.设计步骤

    • 1.复查基本系统模型
    • 2.复查并精华数据流图
    • 3.确定数据流图具有变换特性还是事务特性
    • 4.确定输入流和输出流的边界,从而孤立出变换中心
    • 5.完成第一级分解
    • 6.完成第二级分解
    • 7.使用手机度量和启发规则对第一次分割得到的软件结构进一步精化
  • 3.事务分析

    • 由事务流映射成的软件结构包括一个接受分支和一个发射
  • 4.设计优化

六、小结

总体设计阶段主要由两个小阶段组成

  • 1.系统设计,从数据流图出发设想完成系统功能的若干种合理方案,分析员应该仔细分析比较这些方案,并且和用户共同选定一个最佳方案
  • 2.软件结构设计:确定软件由哪些模块组成以及这些模块之间的动态调用关系

数据流图映射出软件结构

习题

1.为每种类型的模块耦合举一个具体例子

事实上耦合如果细分的话,有7种,分别是非直接耦合、数据耦合、特征耦合、控制耦合、外部耦合、公共耦合、内容耦合,他们的关系从低到高

我在上面的思维导图中只写了6种,课本中就只细讲了4中,老师课堂上也只讲了4种偶尔,所以这道题就只举例4中耦合。

  • 数据耦合:

    • 即一个模块访问另一个模块的时候,彼此间是用过数据参数来交换输入,输出信息的
    • 例子:计算机网络属于松耦合系统
  • 控制耦合:
    • 即如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能
    • 例子:遥控器和电视
  • 公共环境耦合:
    • 一组模块都访问同一个公共数据环境
    • 多机系统
  • 内容耦合:
    • 就是做了多余的工作
    • 例子:汇编程序模块

2.为每种类型的模块内聚举一个例子

  • 功能内聚

    • 一个程序中的所有操作就是为了做一件事(计算年龄)
  • 顺序内聚
    • 有一个程序,通过给出的生日,先计算出年龄,在根据年龄算出退休时间,有顺序进行
  • 通信内聚
    • 有一个子程序将打印实验报告,并且在完成后重新初始化传来的实验数据。这个程序具有通信内聚。因为这两个操作由于使用同一个数据源联系在一起
  • 过程内聚
    • 一个子程序,将开始读取学生的学号,然后是姓名,最后将读取分数,由于特定的顺序将这些操作联系组合在一起
  • 时间内聚
    • 将多个变量的初始化放在同一模块中
  • 逻辑内聚
    • 一个子程序将打印的季度开支报告、月份开支报告和日开支报告,具体打印哪一个,将由传入的控制标志决定,这个子程序具有逻辑内聚行,因为他的内部逻辑是由输入进去的外部竞争标签决定的
  • 偶然内聚
    • 一个模块完成一组任务,这些任务彼此间即使有关系

3.用面向数据流的方式设计下列系统的软件结构

存储系统

机票预订系统

软件工程导论第五章复习总结附思维导图及部分习题答案相关推荐

  1. 软件工程导论第三章复习总结附思维导图

    软件工程导论第三章复习总结附思维导图 概述 准确回答"系统必须做什么" 必须理解并描述问题的信息域,根据这条准则应该建立数据模型 必须定义软件应该完成的功能,这条准则要求建立功能模 ...

  2. 《管理学》第五章 组织(MOOC+思维导图)

    <管理学>第五章 组织(MOOC+思维导图) 前言 9月28号写了课本上的组织部分(<管理学>第五章 组织).今天写一下MOOC上的笔记. 文章目录 <管理学>第五 ...

  3. 软件工程导论第九到十二章章节复习总结附思维导图

    9到12章章节总结 面向对象方法学引论 1.面向对象方法学概述 1.OOM的要点 1.用对象分解取代了功能分解 2.把所有对象都划分成类,并未每个类定义了一组数据和一组方法 3.按照子类与父类的关系把 ...

  4. 计网复习笔记【附思维导图】——【2】应用层

    计网复习笔记[附思维导图]--[2]应用层 计网 应用层 2.1 应用层协议原理 位置 应用层协议含义 应用层协议类型 网络应用程序架构 进程通信 网络应用需要的运输层服务 Internet提供的运输 ...

  5. 2312、卖木头块 | 面试官与狂徒张三的那些事(leetcode,附思维导图 + 全部解法)

    零 标题:算法(leetcode,附思维导图 + 全部解法)300题之(2312)卖木头块 一 题目描述 二 解法总览(思维导图) 三 全部解法 面试官:看你准备得差不多了,我们开始面试吧. 狂徒张三 ...

  6. 一份小白前端可视化学习指南——附思维导图

    一份小白前端可视化学习指南--附思维导图 前言 因为群里粉丝一直要求我写一篇「可视化入门指南」,今天他来了.其实说起前端可视化,大家所能想到的就是各种图表,大屏.这种看着贼炫酷,而笔者呢工作也一直从事 ...

  7. 36、有效的数独 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(36)有效的数独 前言 1)码农三少 ,一个致力于 编写极简.但齐全题解(算法) 的博主. 2)文末附赠 价值上百美刀 资料. 一 ...

  8. 投基取巧:如何选择基金及构建投资组合?基金投资进阶经验分享,附思维导图!

    之前发了一个 Chat"投基取巧:如何通过基金投资获得 20%+ 的收益?基金理财干货分享,附思维导图!",不少网友看后跟我联系反馈,有没有更高阶的基金投资的经验分享,比如:具体到 ...

  9. 众包数据库管理、时空众包、移动群智感知方向的综述整理——附思维导图

    众包数据库管理.时空众包.移动群智感知方向的综述整理--附思维导图 论文介绍 众包数据库管理 时空众包 移动群智感知 总结 论文介绍 该方向的发展主要分为三个模块:时空众包.群智感知.众包数据库管理: ...

最新文章

  1. 网络摄像头+net_今日 Paper | 神经网络结构搜索;视觉目标;人物识别;视频3D人体姿态估计等...
  2. Java入门系列-09-循环结构
  3. 「影视+社交」,网易云信助力「微光」开辟新赛道
  4. php codecept,Yii2 codecept unit 类找不到
  5. Spring Boot——基于OkHTTP的GitHub第三方登录DEMO
  6. 2017 9月java答案_2017年9月计算机二级JAVA试题及答案
  7. Python数据结构学习笔记——栈
  8. 【Tika基础教程之一】Tika基础教程
  9. 手淘适配-flexible
  10. postSQL安装和GIS数据导入
  11. pycharm笔记-动手学深度学习(李沐)线性代数课后习题
  12. 数据驱动下的客群经营逻辑
  13. adc 测试软件,ADC芯片参数测试技术解析
  14. 设计模式之美 精华总结 笔记(一)
  15. 最牛X得“高考”作文
  16. Jvav语言(0.1)版
  17. 小狗AI自动建站V7 sitemap(网站地图)使用说明
  18. 2018“云移杯- 景区口碑评价分值预测
  19. 实现简易字符串压缩算法
  20. 【软件测试及质量保证】小结

热门文章

  1. 【市场调查与预测】市场调查的定义与作用
  2. MaxwellWorkbenchoptiSLang联合优化总结
  3. NGINX源码之:目录导航
  4. 集成电路工艺专题复习(续)
  5. 汽车理论matlab编程,汽车理论1.3和2.7matlab编程答案
  6. QPainter 绘制阴影边界
  7. 软考程序员Java答题速成_软考程序员考试下午题解题技巧
  8. python资源管理错误漏洞_Python 资源管理错误漏洞|CVE-2019-9674|CNNVD-202002-041|互联网安全漏洞库 | 指尖安全 | 垂直互联网安全媒体...
  9. 怎样提高医学论文的级别?
  10. kotlin lateinit