文章目录
- 前言
- 一、需求分析阶段
-
- 1.结构化分析方法
-
- 1.1 DFD数据流图
- 2.面向对象分析方法
-
- 2.1 UML-类图
- 2.2 UML-状态图
- 2.3 UML-用况图
- 2.4 UML-时序图
- 3.其他方法
-
- 3.1 思维导图
- 3.2 泳道图
- 3.3 IT界常用-原型图
- 3.4 数据库ER图
- 二、总体设计阶段
-
- 1.结构化设计
-
- 1.1 MSD模块结构图
- 1.2 层次图(软件结构图)
- 2.面向对象设计
-
- 2.1 UML-类图
- 2.2 UML-状态图
- 2.3 UML-时序图
- 2.4 UML-用况图
- 3.其他总体设计
-
- 3.1 个人推荐-C4图
- 三、详细设计阶段
-
- 1.结构化设计
-
- 1.1 程序流程图
- 2.面向对象设计
-
- 2.1 UML-类图
- 2.2 UML-状态图
- 2.3 UML-时序图
- 2.4 UML-用况图
- 3.其他详细设计
- 总结
前言
程序员在软件开发中, 不可避免地要绘图, 例如, 经常可以看到软件系统, 会绘制软件架构图.
然而, 在传统软件工程领域, 其实是没有软件架构图的!
传统的软件工程领域, 一般有2种方式来分析设计:
- 结构化方式(Structure Analysis,SA)
- 面向对象方式(Object-Oriented Method,OOA)
有的图难以匹配规范, 在传统软件工程中, 就划分为示意图.
不过, 大佬们在传统软件工程领域范围外, 也制定了C4图等新的软件图规范.
下面系统化整理常用的绘图.
一、需求分析阶段
1.结构化分析方法
结构化分析方法的关注点是: 信息的流动,
它认为一切信息系统都是由信息流构成的, 信息流有起点(数据源), 有终点(数据潭), 有中间的加工.
需求分析阶段使用: 数据流图(Data Flow Diagram)
1.1 DFD数据流图
DFD用于描述数据变化, 是结构化方式的核心图.
基本符 有4种, 如下:
第一级的DFD称为0层DFD,
继续分解, 得到1层DFD,
同时还要提供数据字典(数据字典是对数据概念的解释)。
完整示例:
0层DFD:
数据字典如下,“{}”表示多个,“|”表示或者:
存折=户名+所 +帐 +开户日+性质+(印密)+1{存取行}50
户名=2{字母}24
所 =“001”…“999” 注:储蓄所编码,规定三位数字
帐 =“00000001”…“99999999” 注:帐 规定由八位数字组成
开户日=年+月+日
性质=“1”…“6” 注:“1“表示普通用户,“5”表示工资户等
印密=“0”
存取行=日期+(摘要)+支出+存入+余额+操作+复核
日期=年+月+日
年=“0000”…“9999”
月=“01”…“12”
日=“01“…“31”
摘要=1{字母}4 注:表明是存还是取
支出=金额
存入=金额
金额=0.01…999999.99
操作=“00001”…“99999” 注:操作、复核是银行职员代码
复合=“00001”…“99999”
2.面向对象分析方法
UML是面向对象方式的经典模型表达工具.
UML图分为静态的和动态的,
静态图, 表达了结构, 有: 类图, 构件图, 部署图, 对象图, 包图, 组合结构图
动态图, 表达了行为, 有: 用况图, 活动图, 状态图, 顺序图, 通信图, 交互概观图, 定时图
2.1 UML-类图
类图(Class diagram)是可视化地表达系统静态结构模型的工具, 包含类、接口、关联、泛化和依赖等关系。
类图是面向对象方式的核心图.
例如,在设计模式中,类图是常见的表达方式。
实现(realization)
常见的是接口的实现, 示例:
聚合(aggregation)
聚合是松散聚合, 表达了整体/部分的关系, 但是部分可脱离整体而单独存在. 示例:
-
System Context(系统上下文)
描述角色和各个系统的关系.
-
Component(组件)
容器由组件构成, 有工具组件, 共享组件等.
2.3 UML-用况图
用况图(use case diagram), 有时也被称为用例图, 是一种表达系统功能模型的图形化工具.
用况图是各个开发阶段都使用的UML图形.
用况图包含6个元素:
1.主题(subject)
主题是由一组用况锁描述的一个类, 通常是一个系统或者子系统, 示例:
3.参与者(actor)
参与者表达了一组高内聚的角色, 一般就是系统用户, 示例:
5.泛化(generalization)
在用况图中, 用况之间有三种关系: 泛化, 扩展, 包含.
泛化类似于继承, 例如, 个人客户和企业客户泛化于客户, 示例:
2.4 UML-时序图
时序图(Sequence Diagram), 也被称为顺序图, 是一种交互图,
由一组对象以及按照时间顺序组织的对象直接的关系组成, 其中还包含对象之间发送的消息.
3.2 泳道图
参照百度经验, 泳道图(Swimlane Diagram),也叫跨职能流程图。旨在分析和展示各个部门在同一任务流程上的不同进程,明确流程环节所属的阶段、流程环节负责人、组织机构或部门。泳道图的名称由来,是流程图中对职能部门的划分像游泳池泳道相类似比拟而来。
3.4 数据库ER图
数据库ER图中有3个关系:
1对1(1:1)
1对多(1:N)
多对多(M:N)
实体的表示:方形
属性的表示:椭圆
联系的表示:菱形
示例:
2.面向对象设计
2.1 UML-类图
参照需求分析阶段, 是各个阶段图的细化
2.2 UML-状态图
参照需求分析阶段, 是各个阶段图的细化
2.3 UML-时序图
参照需求分析阶段, 是各个阶段图的细化
2.4 UML-用况图
参照需求分析阶段, 是各个阶段图的细化
3.其他总体设计
3.1 个人推荐-C4图
C4模型是个理解门槛很低的可视化架构设计模型, 对软件从业者很简洁友好, 这也是我个人推荐的主要理由.
C4是指System Context(系统上下文), Container(容器), Component(组件), Code(代码).
假设从从高空俯瞰软件系统, 系统会从System Context逐渐细化到Code.
外部系统使用灰色背景, 系统本身使用蓝色背景.
注意, C4图中的箭头, 一般表示的是调用, 而不是数据流向
三、详细设计阶段
1.结构化设计
详细设计阶段有多种图, 例如: 程序流程图, 盒图(N-S图), PAD图等, 实际很少见到用盒图和PAD图的.
详细设计阶段使用: 程序流程图
1.1 程序流程图
程序流程图是一种历史悠久且使用广泛的工具, 主要优点是对控制流程的描绘很直观, 便于初学者掌握.
有多直观呢, 掌握以下3个图形, 一般就够用了:
2.面向对象设计
2.1 UML-类图
参照需求分析阶段, 是各个阶段图的细化
2.2 UML-状态图
参照需求分析阶段, 是各个阶段图的细化
2.3 UML-时序图
参照需求分析阶段, 是各个阶段图的细化
2.4 UML-用况图
参照需求分析阶段, 是各个阶段图的细化
3.其他详细设计
无
总结
结构化和面向对象的区别:
结构化:任何模块都可以控制数据,随着软件规模增大,软件复杂度难以控制,偏向于函数式编程的思想
面向对象:用对象控制数据,最终控制软件复杂度
1. 结构化开发流程的各个阶段图
需求分析:
功能模型 结构化方式的核心-DFD (0层和1层等+数据字典)
数据模型-ER图
行为模型-推荐使用UML状态图
总体设计:
层次图(不关心模块间的关系,即软件结构图,常用它)
模块结构图(关心模块间的关系)
详细设计:
程序流程图
2. 面向对象开发流程的各个阶段图
需求分析:
功能模型-用例图
数据模型 面向对象方式的核心-类图
行为模型-时序图
总体设计:
UML的总体设计,是对类图等图的不断细化
详细设计:
UML的详细设计,是对类图等图的不断细化
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!