导图社区 8. 系统分析和设计方法
《系统架构师》第八章系统分析和设计方法思维导图笔记。
编辑于2019-07-28 07:39:41系统分析和设计方法
问题定义与归结模型
问题分析
在问题定义上达成共识: 把问题写出来,看看是否获得大家认同
问题概述
影响
结果
优点
概要性提出解决方案,并列出解决方案优点
理解问题的本质
问题定义: 根本原因分析
因果鱼骨图
帕累托图
方式:根据问题的相对频率或大小从高往低姜旭排列,帮助设计师将精力集中在重要的问题上
步骤
明确问题
找出各种可能原因
选择评价标准和考察期限
收集各种原因发生的频率及费用依据
原因排序
绘制图
确定项目干系人和用户
定义系统边界
定义:系统边界指解决方案系统和现实世界之间的边界
划分
系统
和系统交互的事物
描述系统边界方法
上下文范围图
数据流图中的顶层图
反应领域信息,描述系统的工作职责和相邻系统的工作职责
用例模型
引入参与者来描述“和系统进行交互的事物”
确定系统实现的约束
问题定义
完整定义
目标
优势
目标不仅仅是解决问题,还应具有优势
度量标准
合理性
可行性
可达成性
对于组织而言,是否具备获取该系统的技能,构件完成后是否能够操作它
功能需求
系统必须达到的要求
描述需求时注意二义性
子主题
非功能需求
定义
系统必须具备的属性
不改变产品的功能,为工作赋予特征
与功能需求区别
功能需求以动词作为特征
非功能需求以副词作为特征
种类
感官需求
易用性需求
性能需求
可操作性
可维护性与可移植性
安全性
文化与政策
法律需求
需求分析和软件设计
定义
开发人员和用户进行广泛交流,不断澄清一些模糊的概念,最终形成一个完整的、清晰的、一致的需求说明
需求分析的任务和过程
工作过程
问题识别
发现、描述需求
功能
性能
环境
可靠性
安全
用户界面
资源使用
成本
开发进度
分析和综合
对问题进行分析,然后整合出解决方案
方法
面向数据流的结构化分析法
面向数据结构的Jackson方法
面向对象分析法
用于建立动态模型的状态前意图和Petri网
编制需求分析的文档
需求分析与评审
需求分类
归类1
功能需求
非功能需求
设计约束
归类2
业务需求
组织机构、客户对系统、产品高层次的目标要求
通常问题定义本身就是业务需求
用户需求
用户使用产品必须要完成什么任务
系统需求
需求工程
需求开发
需求捕获
需求分析
编写需求规格说明书
需求验证
需求管理
需求基线
需求变更
需求跟踪
需求分析方法
结构化分析方法
软系统方法
结构化分析方法采用相对形式化的模型
解决不确定性问题时比较吃力
过渡性方案,没有流行过
面向对象分析方法
面向问题域的分析
软件设计的任务与活动
阶段
概要设计
详细设计
设计方法
结构化方法
jsckson方法
parnas方法
对象技术
结构化分析和设计
概念
自顶向下逐层分解,一种强烈依赖数据流图的建模方法
与面向对象分析法的差异
结构化法把系统看做一个过程的集合体
面向对象把系统看做一个相互影响的对象集
工作步骤
研究物质环境
画出当前系统的数据流图
建立系统逻辑模型
画出相对于真实系统的等价逻辑数据流图 将自然数据都转换成等价的逻辑流 (需求变功能设计)
划清人机界限
工具
数据流图
要素
过程
外部实体
数据存储
数据流
实时连接
层次
顶层图 context图 系统上下文范围图
最高结构DFD
将整个待开发系统表示为一个过程
0层图 逐级分解
数据字典
对所有与系统相关的数据元素的一个有组织的列表和精确严格的定义 表达数据格式的手段
信息
名称
何处使用/如何使用
内容描述
=
由...构成
+
和
[|]
或,代表从中选取一个
{}*
n次重复
()
可选数据项
*...*
注释
补充信息
结构化语言
判定表
判定树
结构化设计
内容
结构设计
接口设计
数据设计
过程设计
概要设计
目标
设计软件结构
确定系统模块组成
模块之间关系
图
结构图
DFD上的进一步设计,将DFD的信息流分为两种类型
交换流
信息进入系统后,转换成内部表示, 通过变换中心处理,转换成外部形式离开系统
事务流
信息进入系统后,事务中心根据信息类型, 在若干个动作序列中选择一个执行
基本成分
模块
调用
数据
由于其随意性,可能导致流程图称为非结构化的流程图
盒图用于解决该问题
使用层次图
HIPO 层次图家输入/处理/输出图
过程
复查基本系统模型
复查并精华数据流图
确定数据流图的信息流类型
交换流
事务流
根据流类型分别实施变换分析和事务分析
根据软件设计原则对得到的软件结构图进一步优化
详细设计
目标
确定如何具体的实现系统,得出对目标的精确描述
方法
自顶向下、逐步求精的设计方式
单入口单出口的控制结构
图
流程图
盒图
PAD(problem analysis diagram,问题分析图)
PDL(program design language,程序设计语言)
模块设计
模块化: 将待开发的软件分解成若干个小的模块, 每个模块可以独立开发、测试
原则
信息隐蔽原则
难的决策
可能修改的决策
数据结构
内部链接
操作细节
内部特征码
与计算机硬件有关的细节
模块独立性原则
低耦合、高内聚
耦合:模块之间的紧密程度
内聚:模块内部各元素的紧密程度
内聚类型 (从高到低)
功能内聚
顺序内聚
通信内聚
过程内聚
瞬时内聚
逻辑内聚
偶然内聚
耦合类型
非直接耦合
数据耦合
标记耦合
控制耦合
外部耦合
公共耦合
内容耦合
面向对象分析和设计
基本概念
对象和类
实体类
边界类
控制类
泛化和继承
多态和重载
模板类
消息和消息通信
面向对象分析
OOA/OOD方法
Booch方法
OMT方法
OOSE方法
统一建模语言
概述
模型
功能模型
对象模型
动态模型
结构
构造块
建模元素
关系
图
公共机制
规格说明
修饰
公共分类
扩展机制
架构
逻辑视图
进程视图
实现视图
部署视图
用例视图
图
用例图
概念
用例模型描述了外部参与者所理解的系统功能,用于需求阶段
要素
参与者
用例
包含和扩展
类图
类和对象
命名
属性
属性名:类型=默认值{约束特性}
操作
操作名(参数表):返回类型{约束特性}
关系
依赖
泛化
关联
聚合
组合
实现
多重性问题
n...m
图
类图
对象图
交互图
时序图
通信图
用于描述相互合作的对象间的交互和链接关系
定时图
特殊形式的顺序图
状态图
内容
状态
初始状态
结束状态
状态转移
活动图
构件图
定义
构件指源代码文件、二进制代码文件和可执行文件等
构件图用来显示编译、链接或执行时构件之间的依赖关系
面向对象物理建模图
部署图
描述系统硬件的物理拓扑结构和在此结构上执行的软件
用于帮助理解分布式系统
组成
节点和连接
构件和接口
用户界面设计
原则
置用户于控制之下
减少用户记忆负担
保持界面一致
过程
用户、任务和环境分析
界面设计
实现
界面确认
工作流设计
定义
工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则、文档、信息或任务在不同的执行者之间传递、执行
概述
工作流
显示中的具体工作从开始到结束过程的抽象和概括
流程定义
对业务过程的形式化表示,定义了过程运动中的活动和所涉及的各种信息
流程实例
一个流程定义的运行实例
工作流管理系统
流程定义工具
参与者
活动
活动所有者
工作所有者
工作项
管理系统
流程定义工具
工作流执行服务
其他工作流执行服务
客户应用程序
被调用应用程序
管理和监控工具
简单分布式计算机应用系统的设计
两种协同合作方式
基于实例的协作
所有实例处理自己范围内的数据
基于服务的协作
系统运行环境的集成与设计
集中式系统
单计算机结构
集群结构
多计算机结构
分布式系统
CS结构
多层结构
internet/intranet/extranet
系统过渡计划
直接过渡
并行过渡
两套并行,但成本高、可能无法同时使用,数据不同步
阶段过渡
系统过于庞大