概要设计

  • 任务
  • 模块和模块化
  • 耦合和内聚
    • 耦合
      • 1 非直接耦合
      • 2 数据耦合
      • 3 特征耦合
      • 4 控制耦合
      • 5 外部耦合
      • 6 公共耦合
      • 7 内容耦合(最高的耦合)
    • 结论
    • 例题
    • 内聚
      • 1 偶然内聚
      • 2 逻辑内聚
      • 3 时间内聚
      • 4 过程内聚
      • 5 通信内聚
      • 6 顺序内聚
      • 7 功能内聚
    • 结论
  • 层次图和HIPO图
    • 层次图
    • HIPO图
  • 结构图(SC)
  • 结构化设计方法(SD)
    • 流类型
      • 变换映射
      • 事务映射
    • 设计步骤
      • 变换映射
        • 例题
      • 事务映射
        • 例题
    • 结论
  • 控制域与作用域

任务

模块和模块化


耦合和内聚

耦合

耦合:模块联系的程度(依赖于模块间接口的复杂性)

1 非直接耦合

两模块间没有直接关系

2 数据耦合

两模块之间交换的是简单数据(数据输出、输出参数)

用水量,水费,电费,用电量就是数据输入输出的简单参数,这里构成的是数据耦合

3 特征耦合

模块之间交换的是数据结构
与数据耦合不同的是,这里预先定义了这样的数据结构:
房租水电+用水量+用电量+租房开始日期,而此时传递是数据结构,所以构成特征耦合

4 控制耦合

传递的信息中有控制信息(中等耦合)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
此时。模块间传递的信息不是一般的数据,而是控制信号
如图中,模块A通过传递一个控制标记给模块B,以便选择所需的操作。
此时模块A、B间就构成了控制耦合。

5 外部耦合

一组模块都访问同一全局变量

图中模块3和模块4都可以访问全局变量“日期”。
如果因为模块3错误的修改了“日期”,便会在模块4引用“日期”时得出错误的结果,虽然问题出在模块4,但是根源在于模块3,这就增加了调试和排错的困难。

6 公共耦合

一组模块都访问同一全局数据结构


7 内容耦合(最高的耦合)

图中模块M通过一条GOTO语句直接转移到模块N中去。如果模块N中的语句顺序发生了变换,就必须特别细心的检查会不会因此影响到模块M的执行结果。
此时,模块M和模块N构成了内容耦合。

结论

例题

模块A和模块E都引用了专用数据区的内容,所以是公共耦合。

内聚

模块成分之间的紧密程度

1 偶然内聚

模块内各组成成分在功能上是不相关。

例如:如果有几个模块都需要执行“读A”、“写B”等相同的一组操作,为了避免重复书写,可以把这些操作汇成一个模块,供有关的模块调用。这类模块内部成分的组合纯属偶然,称为偶然性内聚.

2 逻辑内聚

通常由若干个逻辑功能相同或相似的成分组成,目的是省去程序中的重复部分。
如一个用于计算全班同学的平均分和最高分的模块,如图所示,无论是计算哪种分数,都要经过读入全班分数、进行计算、输出计算结果等步骤。实际上出了中间的一步需要按照不同的方法计算外,前、后这两步都是相同的。把这两种在逻辑相似的功能放在一个模块中,就可以省去程序中重复的部分。
但缺点是,执行中要从模块外引入用作判断的的开关量,这会增大块间的耦合。

3 时间内聚

在相同的时间内执行的成分组合在一个模块内
例如一个初始化模块可能包含”为变量赋初值“、”打开某个文件“等为正式处理作准备的功能。由于要求它们在同一时间内执行,所以称为时间内聚。
注意,这里模块的各个部分不存在顺序依赖

4 过程内聚

一个模块内部包含一组任务并以特定的次序执行

5 通信内聚

模块内使用了同一组输入数据或者产生同一组的输出结果 ,它们靠公共数据而联系在一起。


6 顺序内聚

模块内各成分密切相关,一个组成部分的输出作为另一个组成部分的输入。
强调的是一个部分的输出要作为另一个部分的输入,这样,当上一个部分没有完成时,下一个部分不能执行,也就不可能是在"同一时间"执行

7 功能内聚

模块内部各成分结合在一起完成单一的功能

结论


层次图和HIPO图

层次图

层次图是用来描绘软件的层次结构
层次图中的矩形框表示模块
矩形框间的连线表示调用关系

HIPO图

HIPO图是美国IBM公司发明的“层次图+IPO图”的英文缩写

层次图的每个模块都加了编号
与层次图中的每个模块相对应,应该有一张IPO图描绘模块的处理过程
所以HIPO图是由一个带编号的H图一组模块的IPO图组成
为了能使HIPO图具有可追踪性,在H图里除了最顶层的方框之外,每个方框都加了编号。编号规则和数据流图的编号规则相同

结构图(SC)


选择调用——表示当模块A中某个判断为真时调用模块B,为假时调用模块c。
循环调用——表示模块A循环调用模块B、C、D。

在使用”层次图“和”结构图“时,有几点需要说明:

  1. 层次图和结构图并不严格表示模块的调用次序。因此出于某些方面的考虑(如、为了减少交叉线),完全可以调整模块出现的顺序
  2. 层次图和结构图不指明什么时候调用下层模块。通常上层模块中除了调用下层模块的语句之外还有其他语句,究竟是先执行调用下层模块的语句还是先执行其他语句,在图中丝毫没有指出。
    事实上,层次图和结构图只表明一个模块调用那些模块,至于模块内还有没有其他成分则完全没有表示。
  3. 通常用层次图作为描绘软件结构文档。结构图作为文档并不很合适,因为图上包含的信息太多反而降低了清晰程度。
    完全可以通过IPO图或数据字典得到模块调用时传递的信息。
  4. 结构图可以作为检查复审软件结构的方法。

结构化设计方法(SD)


流类型

变换映射

从图中可以看出,数据沿着两条输入通路进入系统,然后沿着五条通路离开,没有明显的事务中心。因而可以认为这个信息流具有变换流的总特征

事务映射

事务流的特征:
以事务中心为核心,根据事物的要求,去执行不同的通路

设计步骤

变换映射



实际上,输入流和输出流的边界和对他们的解释有关,也就是说,不同设计人员可能会在流内选取稍微不同的点作为边界的位置。

完成“第一级分解”
映射出顶层和第一层软件结构。
对于变换流的情况,位于软件结构最顶层的控制模块M协调从属的控制功能:
M1:输入信息处理控制模块,协调所有输入数据的接收
M2:变换中心控制模块
M3:输出信息处理控制模块

完成“第二级分解”,把数据流图中的每个变换映射成软件结构中的一个适当的模块

  1. 把输入通路中每个变换映射成软件结构中M1控制下的一个低层模块。从变换中心的边界开始沿着输入通路向外移动
  2. 把输出通路中每个变换映射成软件结构中M3控制下的一个低层模块。从变换中心的边界开始沿着输出通路向外移动
  3. 把变换中心内的每个变换映射成软件结构中M2控制下的一个低层模块

例题









事务映射


这张图显示了动作分支的典型结构。含有P、T、A、D共4层。
P层是处理层,相当于调度模块。
T层为事务层,每一个动作路径可映射为一个事务模块
在事务层以下可以再分解出事务层一个操作层(A层),以及一至多层的细节层(D层)
从图中可以看出,
多个事务层事务往往可以含有一些相同的操作
各操作又可能具有一部分相同的细节
因此,操作层和事务层的模块往往能为他们的上层模块所共享。


例题


加工1.4包括登记售书和打印领书单两个功能
为提高模块独立性,可以将它分解为两个加工——登记售书、打印领书单

结论

控制域与作用域


控制域与作用域的关系,作用域在控制域内且越近越好

软件工程——概要设计相关推荐

  1. 软件工程小组第六次会议记录

    会议主题:软件工程概要设计写作 与会时间:5月8日 与会地点:图书馆小组研究室寒露A627 与会成员:尚卓燃.张世豪.王昊钰.傅宇豪 会议记录: 主要讨论了概要设计的写作内容,并进行分工写作. 转载于 ...

  2. 软件工程课程实践-概要设计说明书

    1.引言 1.1编写目的 在本基金管理系统项目的前一阶段,也就是需求分析阶段中,已经将系统用户对本系统的需求做了详细的阐述,这些用户需求已经在上一阶段中对基金市场和基金用户的实地调研中获得,并在需求规 ...

  3. 【软件工程】——概要设计说明书

    1引言 1.1编写目的 本阶段完成系统的大致设计并说明系统的数据结构与软件结构,本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成程序细节上非常接近与源程序开发的软件标识. 预 ...

  4. 【软件工程】概要设计说明书

    概要设计说明书 1引言 1.1编写目的 这篇文章的编写目的主要是为了开发此系统为系统做一个总体的结构设计,经评审后进一步细化,分别对每一模块进行详细细化的解决方案.接口和数据库等方面的设计,明确描述所 ...

  5. 软件工程小组问世第六章之概要设计青铜篇

    概要设计 1引言 1.1目的 该文档的目的是描述约跑软件的概要设计,主要内容包括系统功能简介.系统结构设计.系统接口设计.模块设计和界面设计等. 1.2范围 1.2.1系统目标 设计一个约跑软件. 1 ...

  6. 软件工程——软件开发阶段(概要设计、详细设计)

    需求分析确定了系统的开发目标,下一步工作就是软件设计.软件设计可以进一步地 分为两个阶段:总体设计和详细设计.确定系统的具体 实现方案.给出软件的模块结构.编写各个文档 目的是什么? 承上(需求)启下 ...

  7. 软件工程——软件设计方法(概要设计)

    软件设计方法主要分为两个方面:1.概要设计  2.详细设计 概要设计: 一.软件设计的目标和任务 1.定义 将文字转化为结构图,根据用信息域表示的软件需求,以及功能和性能需求进行数据设计,系统结构设计 ...

  8. (软件工程)——概要设计说明书

    步骤:概要设计和详细设计 软件设计的目标和任务 用信息域表示的软件需求,以及功能和性能需求,进行:数据设计.系统结构设计.过程设计 信息阶段的信息流 软件设计任务: 从工程管理的角度来看,软件设计分为 ...

  9. 【软件工程】课程作业(三道题目:需求分析、概要设计、详细设计、软件测试)

    文章目录: 故事的开头总是极尽温柔,故事会一直温柔--

  10. 【软件工程基础复习整理】第五章概要设计(3) 面向数据流图的软件结构设计

    面向数据流图的软件结构设计 是一种结构化的设计方法 研究.分析和神擦好数据流图,确保数据流图符合实际,必要时细化数据流图 确定数据流图的类型,即变换型的数据流或事物型的数据流 (变换型把数据变成另一种 ...

最新文章

  1. MySQl笔记8:把good表中商品名为‘诺基亚xxxx‘的商品,改为‘HTCxxxx‘
  2. 阿里云 Serverless 助力企业全面拥抱云原生
  3. 9、Power Map—应用拾取坐标系统确定经纬度
  4. 变种 背包问题_动态规划入门——传说中的零一背包问题
  5. MATLAB机器学习系列-9:决策树和随机森林的原理及其例子代码实现
  6. 将node.js程序作为服务,并在windows下开机自动启动(使用forever)
  7. 2018 OpenInfra Days China 大咖来袭——开源,我们是认真的
  8. OpenSuSE 网络配置
  9. 请求发送者与接收者解耦——命令模式(四)
  10. 二 IP核的行业发展
  11. Axure8.0 注册码
  12. PS案例教程:photoshop路径运算和路径组合操作
  13. 改变文本颜色和字体大小的脚本
  14. linux最新bbr加速,CentOS 7.8 安装BBR加速
  15. qt 截图 视频 截屏幕 截窗口
  16. php 睡眠,win10睡眠是什么意思
  17. FairMOT多目标跟踪(安装+代码解读)
  18. 0day攻击防护措施有哪些?
  19. 百度网盘怎么批量转存到阿里云盘
  20. unity 蒙皮混合权重

热门文章

  1. 51单片机矩阵键盘控制数码管
  2. backfire openwrt安装click modular router
  3. JavaScript:点击按钮打开/关闭网页
  4. c++病毒代码(附源码)
  5. Tensor for argument #2 ‘mat1‘ is on CPU, but expected it to be on GPU (while checking arguments for
  6. 最详细的vs2015使用教程(有图)
  7. IDEA打包jar包及运行jar包命令
  8. 常用计算机英文缩写,常用计算机英文缩写含义
  9. oracle erp atp是什么意思,三种ATP(ERP原理与应用教程第2版)
  10. PCA9685与 NXP1768单片机iic通信,扩展PWM端口。已调试成功。