SE06瀑布模型-设计过程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

管道和过滤器
过滤器,输入到输出的转换 过滤器不了解整体 系统输出的正确性不依赖与过滤器使用的顺序 过滤器是线性顺序的
编译器可使用此模型
词法分析 语法分析 语义分析 代码生成
管道和过滤器
特性
设计人员能理解整个系统对输入输出的影响 容易将过滤器复用到其他系统(用管道连接) 系统演化简单(增删过滤器容易) 过滤器独立性,可模拟系统行为 允许过滤器并发执行
例,输入数据,检查,操作数据
内聚
通信内聚
将某些功能关联起来,仅因为他们操作或生成同 一数据集,则称为通信内均 会破坏设计的模块化和功能独立性
顺序内聚
构件的某部分输出是下一部分的Hale Waihona Puke Baidu入,则该构件 是顺序内聚
功能内聚
构件中的每个处理元素对于执行的单个功能是必 须的,且在一个构件中包含了所有必须的元素
访问另一个模块内部数据 不通过正常入口而转到另一个模块内部 两模块有程序代码重迭 有多个入口
耦合
两个模块间有依赖关系 对一个软件结构内部不同模块之间的互连程度的 度量 耦合的强弱取决于模块间接口的复杂程度、进入 或访问一个模块的点,通过接口的数据 耦合程度强烈影响系统的可理解性、可测试性、 可靠性和可维护性
数据耦合
通过参数交换信息,且交换的仅仅是数据
无耦合
耦合举例
q P Q R S t 数据
r 控制
s 数据 数据
t 公共
U 公共
数据
数据 公共
耦合
独立工作 通过参数交换信息,且交换的仅仅是数据数据耦合 交换信息,且交换的仅仅是数据结构自身标记耦合 通过公共环境相互作用公共环境耦合 内容耦合:一个修改另一个
其他
改进软件结构,降低模块间耦合程度 改进软件结构提高模块独立性 模块规模适中 深度、宽度、扇入和扇出都应适中 模块的作用域应该在控制域之内 力争降低模块接口的复杂程度 设计单输入单输出的模块 模块功能应该可以预测
带内部“存储器”的模块的功能有可能 不可预测
M
A
B D C E
设计过程不应该受“隧 道视野”的限制 设计对于分析模型来说 应是可跟踪的 设计不应该从头做起 设计应该缩短软件和现 实世界中问题的距离 应表现出一致性和集成 性 应该被构造以适应变更 设计不是编码,编码也 不是设计 在创建设计时就应该能 够评估质量,而不是在 事情做完之后 应该评审设计以减少概 念性错误
以独立单位可被理解,则易于构造和修改
模块连续性
对系统微小变更只需修改单个模块
模块保护
异常情况的影响限制在模块内部
模块的关系
模块间的耦合程度——越低越好
(高)内容耦合、公共耦合、控制耦合、标记耦合、 数据耦合、无耦合(低) 面向对象设计的构件多有低耦合度
模块内的内聚程度——越高越好
(高)功能内聚、顺序内聚、通信内聚、过程内聚、 时态内聚、逻辑内聚、偶然内聚(低)
设计概念
每一种概念都为设计者 提供了应用更加复杂的 设计方法的基础
模块化 抽象 求精
详细描述的过程
软件工程师的智慧的开始 体现于识别使程序工作和 使程序正确之间的区别
信息隐蔽和局部化 软件体系结构 控制层次 结构划分 数据结构 软件过程
复杂问题简单
C(x)复杂度E(x)工作量 If C(P1)>C(P2) Then E(P1)>E(P2)
面向结构设计
SD SA、SD、SP和ST基本是顺序进行的
混合方式
OO与S的混合使用 SA/OOA+OOD/SD+OOP/SP+OOT/ST
SD总体设计
决定“怎么做”
系统设计,确定系统的具体实现方案。将系统划 分成组成系统的物理元素——程序、文件、数据 库、人工过程和文档 设计软件的结构:确定系统中每个程序由那些模 块组成,以及这些模块之间的关系
选取合理的方案
低、中、高成本三种方案 系统流程图+物理元素清单+成本/效益分析+进度计划
翻译分析模型到设计
PSPEC DFD 数据 字典 DS ERD 过程设计
接口设计 STD
CSPEC 体系结构设计 数据设计
DS 数据对象描述 STD 状态变迁图 PSPEC 加工规约 CSPEC 控制规约
设计原则
区别
概念设计与技术设计的区别
概念设计:客户可解读 系统的外部特征
详细设计:开发人员可 解读系统的内部特征与 解决方案
概要设计需解决的问题
数据来自哪里 系统中的数据会发生什么情况 对用户来说,系统将会怎样 向用户提供的选择有哪些 事件的计时是什么 报表和屏幕是什么样的 等等
SLOC (Million) 4-5 7-8 11-12 > 29 45
Debian 3.0
Debian 3.1 Debian 4.0 Debian 5.0 OpenSolaris FreeBSD Mac OS X 10.4 Linux kernel 2.6.0 Linux kernel 2.6.29 Linux kernel 2.6.32 Linux kernel 2.6.35
耦合程度
一个构件引用另一个构件 一个构件传递给另一个构件的数据量 某个构件控制其他构件的数量 构件之间接口的复杂程度
尽量使用数据耦合, 少用控制耦合, 限制公共环境耦合的范围, 完全不用内容耦合
内容耦合
公共耦合
内聚
标志模块内部个元素彼 此结合的紧密程度 偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能内聚
信号处理和模式识别多用此模式
例子
难处为共享
可复用构件库 大型数据库 搜索引擎
黑板系统
解释器
读入一串字符(伪代码),将其转换成可随 后执行的实际代码 组成
内存 解释引擎 解释引擎的当前状态 正被模拟的程序的当前状态
解释器例子
Shell编程,matlab语言,basic语言
过程控制
图形工具
层次图
功能性
HIPO图
层次图+IPO 每个功能框均有IPO图与之对 应
结构图
带箭头的线表示调用关系 带注释表示调用过程中传递的 信息 O表示数据, ●表示控制
产生最佳解
得到好输入
计算最佳解
输出结果
获得输入 输出结果
输出结果 输出结果
面向数据流的设计方法
变换流与事务流

内聚程度
力求做到高内聚

内聚
偶然内聚
构件各个部分不相关,只是出于方便或偶尔的原因,处于 统一构件中
逻辑内聚
逻辑相关的功能或数据元素处于同一构件 其元素是功能不相关
时间内聚
构件顺序执行的功能,具有时间相关性(如顺序)
过程内聚
必须按照某个顺序执行一系列功能,构件中的功能组合仅 是为确保该顺序,则该构件是过程内聚的
分层
每一层为外层提供服务,同时又是内层的客 户 每层可访问部分或所有层;每层仅能访问相 邻层
较好利用了抽象的概念 层次结构的协调会影响效率
文件安全性的系统
信息库
中心数据存储和其上的存储、检索与更新系 信息的构件集 两种类型构件的交互
事物以输入流的形式触发进程 黑板系统,中心数据存储控制进程的触发
缺点
鼓励使用批处理不善于处理交互式应用 两个数据流相关时,系统需维护其对应关系 过滤器独立性意味着可能需处理其他过滤器已处理的功能, 对性能有影响的代码将相当复杂
例:处理日期
面向对象的设计
需求按对象和其抽象(类)来组织 设计围绕抽象数据类型来构造构件 对象需保证数据表示的完整性 数据表示对其他对象是隐藏的 对象之间交互时,需知道其他对象的标识 相互联系增加,不独立
SD总体设计过程
设想供选择的方案 选取合理的方案 推荐最佳方案 功能分解
DFD IPO的细化
书写文档
系统说明 用户手册 测试计划 详细地实现计划 数据库设计结果
设计软件结构 数据库设计 制定测试计划
审查和复查
SD总体设计过程
设想供选择的方案
寻找实现目标系统的各种不同的方案,并力求从中选出最 佳方案 可能的方法是:将DFD中某些处理按逻辑地放在一个自动 化边界内作为一组,对处理进行各种分组,抛弃在技术上 行不通的分组方法,余下的分组方法,不同的自动化边界 分法意味着不同的实现策略。
基于系统必须处理的事件,事件改变系统状态
例:消息处理机制,Windows 高层对状态分类低层描述状态如何转移
由外到内的设计 面向对象的设计
分解与模块化
模块化分解 面向数据的分解 面向事件的分解 由外到内的设计
黑盒法,基于系统输入输出
高层描述所有可能输入低层描述如何处理每个输入, 并产生相应输出
代码设计
含算法和数据结构;其构件是编程语言原语、数据操 纵原语以及组装机制
可执行设计
静态层次处理代码设计,讨论内存分配、数据格式等
设计方式
自顶向下
先体系结构,再代码设计,最后可执行设计 正常情况下,是往返于上述各层之间(类似迭代)
例如表驱动(时间响应)数组驱动
体系结构分类
管道和过滤器 面向对象 隐含调用 分层 信息库 解释器 过程控制 C/S B/S
总成本
C(P1+P2)>C(P1)+C(P2)

E(P1+P2)>E(P1)+E(P2)
集成成本
成本/模块
分解与模块化
模块化分解
将功能分配给构件/模块
功能的高层描述给出每个构件及构件间连接的低层说明
面向数据的分解
依据外部数据结构
高层描述总体数据结构低层包含的数据元素及相互关系
面向事件的分解
104
215 283 324 9.7 8.8 86 5.2 11.0 12.6 13.5
1993 Windows NT 3.1 1994 Windows NT 3.5 1996 Windows NT 4.0 2000 Windows 2000 2001 Windows XP
2003 Windows Server 2003 50
耦合
内容耦合:一个修改另一个
访问另一个模块内部数据 不通过正常入口而转到另一个模块内部 两模块有程序代码重迭 有多个入口

P修改q的一条语句 P依据q中的数值位移来访问q的局部数据 P跳到q中的一个局部标签
耦合
公共(环境)耦合
通过公共环境相互作用
缺陷
代码不可读
耦合
控制耦合
通过参数交换信息,含有控制信息
G
F
规模适中
7,2规则
规则 模块数
代码行
7-2 781
62,480
7 137,257
7+2 48,427,651
10,980,560 3,874,204,880
每模块以80代码行计
Operating System Debian 2.2
SLOC (Million) 55-59 Year Operating System
详细设计需解决
对主要硬件部分及其功能描述 软件构件的层次和功能 数据结构和数据流
硬件配置、软件需求、通信接口、系统的输入输 出、网络体系结构等
两者可以综合在一个文档中
不在一个文档中时,需保持二者的联系
系统区分方式
面向对象设计
OOD OOA、OOD、OOP、OOT基本上是迭代进行的
设计工程
总体设计 详细设计
设计
设计是将问题转换成解决方案的创造性过程。
满足需求规格说明中所有需求的设计,就是一个 可行的解决方案 要从若干可行方案中选择一种合适的方案
设计分概要设计和详细设计
后者是前者的细化 概要设计、系统设计、总体设计的含义一样
介绍做什么
详细设计、技术设计的含义一样
介绍怎么做
面向对象的设计
对象的类及相互关系
高层描述对象类型低层讨论对象属性和动作,并解 释对象间如何交互
分解与模块化
环境集成的NIST/ECMA参考模型
与客户打交道,此模型OK
设计人员还不能设计
体系结构与策略
完成任务/设计的3个层次
体系结构设计
将SRS中确定的系统能力与实现这些能力的构件关联 起来;构件多为模块; 体系结构还定义从子系统创建系统的相关操作
三个部分分离
计算元素:过程与控制分离 数据元素: 控制循环方案:
分布式系统
C/S B/S
抽象
过程抽象 数据抽象 控制抽象
模块化
三个芯片构建的左图
计算机中的设计
另外三个芯片构建的左图
模块化
模块
执行一个或一系列操作,并与其他模块相连
模块化的要求
模块可分解性 模块可组装性 模块可理解性
相关文档
最新文档