按图索骥---软件的设计图纸

序:

我一直以为,在软件设计中,各种图要比文档重要的多。图可以更加直接的反应软件的构造。尤其是在面向对象的软件设计中。图可以让我们直观的了解各个类和对象直接的交互和关系。

1、 用例图

定义:展示系统中参与者与用例之间的关系

我的理解 用例图是根据需求分析得到的,也是软件设计中的第一张图纸。描述了软件系统的全部用户(角色)和全部功能点(业务需求),以及他们之间的关系。也是软件开发中最重要的一张图纸。

用例准则:用例描述了为参与者提供可测量的价值的一个动作顺序,如:提取资金,登记文件。

参与者准则:参与者是和系统进行一次或多次交互的某个角色,它可以是人,组织,进程或者外部系统,如:客户,学生,付款机

技巧:通过竖排用例,隐含表达用例之间的时间顺序。

用例名以意义明确的动词开头。

主要参与者放在图的左上角

图例:

2、 类图

定义:类图展示的系统中的类,类之间的相互关系,类的方法和属性。

理解:根据用例图,可以基本上设计出系统的类和他们的之间的关系。类图描述的就是类的静态结构

类关系:

关联:关联指的是类之间的特定的对应关系,在UML中拥戴实现的箭头表示。按照类之间的数量对比,关联可分为以下3种。

聚合:聚合指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。例如台灯和灯泡之间就是聚集关系。当台灯类(ReadingLamp类)由灯泡类(Bulb类)和Circuit类聚集而成时,在ReadingLamp类中应该包含Bulb类和Circuit类型的成员变量。

聚集关系中,子系统允许被拆卸和替换。例如:电灯和灯泡

Bulb bulb1 = new Bulb(); //创建第一个灯泡

Bulb bulb2 = new Bulb(); //创建第二个灯泡

ReadingLamp lamp = new ReadingLamp(bulb1); //创建的时候使用第一个灯泡

lamp.setBulb(bulb2); //创建以后还可以换成第二个灯泡

组合:是关联关系的一种,是比聚集关系强的关联关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期,合成关系是不能共享的。

合成关系中,子系统不允许被拆卸和替换。例如:Windows的窗口和窗口上的菜单就是组合关系。生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。

依赖:依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或方法,或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B类型的属性。例如Panel与Shape类之间存在依赖关系,因为Panel类会调用Shape类的draw()方法。

继承:类之间的继承关系,在UML中用带实线的三角形箭头表示。例如长方形Rectangle、圆形Circle和直线Line都继承Shape类

实现:实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示,这里的接口指的是接口类型,接口名字用斜体字表示,接口中的方法都是抽象方法,也采用斜体字表示。

图例:

3、 状态图

定义:状态图中展示实体基于它当前的状态对不同的事件是如何反应的。

我的理解:状态图是系统即时、实施的图纸。从这个图开始,消息的概念开始贯穿设计始终。通过状态图,我们可以了解系统中的主要对象的状态变迁和变迁散发出的消息。

图例:

4、 活动图

定义:工作流程活动图用于研究实现业务目标时所要执行的各项任务或活动的顺序安排。活动既可以是手动执行的任务,也可以是自动执行的任务。它可完成一个工作单元。

我的理解:活动图是状态图的延续,不止是在图中标记了对象状态的变迁,还加入了状态变迁相关的操作。

基本元素:活动状态表示在工作流程中执行某个活动或步骤。   

转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。   

决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。   

同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。

泳道:可以使用垂直实线将活动图划分为泳道。每条泳道代表整个工作流程的某活动图个部分的职责,该职责由组织的某个部门来执行。泳道最终可以由组织单元或者业务对象模型中的一组类来实施。

图例:

5、 顺序图

定义:描述涉及用例实现的多个对象实例以及对象交互时传递的消息,并按照用例的执行步骤为顺序指明对象的交互顺序。

我的理解:主要描述对象间消息的传递和消息传递的顺序。

重点:画顺序的关键是要理清对象间的交互,也就是决定消息该发给那个对象。

图例:

活动图与流程图区别

活动图面向对象分析设计,流程面向过程的

活动图描述对象的活动顺利关系应尊守的规则,主要强调行为而非过程。流程图是面向过程,通过顺序,条件、循环来描述过程的顺序关系和时间序列。

uml中活动图与流程图的区别

活动图定义:

  活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。

  它是UML中用于对系统动态活动建模的图形,反映系统中一个活动到另一个活动的流程,常常用于描述业务过程和并行处理过程。活动图中包括泳道、活动开始、活动结束、活动、对象、分支、消息等图形符号。

泳道将一个活动图中的活动划分为不同的组,每个组分别对应不同角色的操作。活动图描述多个角色之间的协作处理非常有效。

  一张活动图可以有多个开始状态和结束状态。

  一个活动可以与多个实体对象相关(相关指的是一种访问操作)。

  分支用在有多条路径可选的流程中,针对不同的路径进行不同的分支处理。

活动图的走向可以是横向的也可以是纵向的,根据个人喜好而定。上图的这个销售订单处理活动图重点展示的是并发处理符号,它反映多个活动可以同时并发处理,并发结束后,又转变为顺序处理。

流程图定义:

1: 有起止框、输入框、输出框、处理框 、流程线、连接点组成。

2: 起止框:表示算法的开始或结束

3: 输入\输出框:表示算法的输入和输出操作。输入操作是指从输入设备山过江算法所需要的数据传递给指定的内存变量;输出操作                    则是将常量或变量的值由内存贮器传递到输出设备。

4: 处理框:算法中各种技术和赋值的操作均一处理框加以表示。处理框内填写处理说明或具体的算式。

5: 判断框:算法中的条件判断操作。判断框说明算法中尝试了分支,需要根据某个灌水或提哦案件的成立与否来确定下一步的执行路                 线。判断框内应当填写判断条件,一般用关系比较运算或逻辑运算来表示。

6: 注释框:表示对算法的走向,流程线箭头的方向就是算法执行的方向。

7: 连接点:表示不同地方的流程图的连接。

活动图与流程图的区别:

(1)、流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。

(2)、活动图能够表示并发活动的情形,而流程图不行。

(3)、活动图是面向对象的,而流程图是面向过程的。

【软件架构】软件的设计图纸(用例图,类图,状态图,活动图,顺序图)相关推荐

  1. UML建模与软件开发设计(六)——类图设计与类之间的关系

    3.2.5.关联关系的分类 然而,通过关联关系来描述类与类时还是比较抽象,有些关系的细节难以通过关联关系表达出来,比如类A与类B的角色定位.数量关系,关联方向等都描述得不够清晰准确(但你不能说仅仅通过 ...

  2. UML 建模步骤 用例图 类图 对象图 包图 顺序图/时序图 状态图 活动图 协作图

    统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言. UML是面向对象设计的建 ...

  3. 类图、用例图、时序图、状态图、活动图、流程图、顺序图(转)

    软件工程(软件工程中的各种图一般用于以下三个阶段): 需求分析阶段: 用例图:用例图是指由参与者(Actor).用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图.是系统的蓝 ...

  4. OOSE-5-用例图/顺序图/状态图/活动图

    文章目录 1 用例图 1.1 参与者 1.2 用例 1.3 用例描述 1.4 一个示例 2 顺序图 2.1 基本概念 2.2 组成部分 2.2.1 对象 2.2.2 生命线 2.2.3 激活 2.2. ...

  5. django自动生成问卷表的软件的设计与实现毕业设计源码291138

    摘 要 本论文主要论述了如何使用PHP语言开发一个自动生成问卷表的软件的设计与实现,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述自 ...

  6. python 自动生成问卷表的软件的设计与实现 毕业设计源码291138

    摘 要 本论文主要论述了如何使用PHP语言开发一个自动生成问卷表的软件的设计与实现,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言中,作者将论述自 ...

  7. 建筑施工图很难看懂吗?工作了二十年的设计师教教你看懂设计图纸!

    很多刚刚开始接触CAD的小伙伴对于建筑图纸真的是很恐惧,可谓是望图生畏!很多人都觉得建筑施工图很难看懂,其实这都需要讲究方法的,拿到图纸后不是说想看什么就看什么,而是按顺序的.建筑施工图很难看懂吗?工 ...

  8. LCD段码液晶屏设计图纸分析

    完整的一份LCD段码液晶屏的设计图纸应该包含四个部分:尺寸参数图.真值表图.走线图.显示效果图. 尺寸参数图包含的参数:外观尺寸,可视区域大小,针脚大小和间距,厚度,材质,电压,正负显,全透还是半透或 ...

  9. vscode remote 第三方库_还能这么玩?用VsCode画类图、流程图、时序图、...不要太爽

    软件设计中,有好几种图需要画,比如流程图.类图.组件图等,我知道大部分人画流程图一般都会用微软的viso绘制,我之前也是这个习惯.viso画图有个不好的地方是需要时刻去调整线条和边框已达到简洁美观,今 ...

最新文章

  1. vector大小为1,如果直接输出它-2,为何不是-1?
  2. 用FIO测试存储性能
  3. iOS_根据文字字数动态确定Label宽高
  4. ckeditor5加字数_CKEditor5基本使用
  5. 【NLP机器学习基础】从线性回归和Logistic回归开始
  6. 算法设计7—哈希表1
  7. Winform中在使用VS+svn进行协同开发时添加引用时的相对路径和绝对路径的问题
  8. 一个稍微复杂的VTK程序
  9. UG NX12.0安装教程
  10. 【千字过程分析】剑指 Offer 04. 二维数组中的查找
  11. Ubuntu 进入单用户模式—修改启动项利器
  12. vue 自定义指令(directive)实例
  13. 破解sourceInsight4
  14. VMware下安装Linux,Centos-7-x86_64-NetInstall.iso版本
  15. 存储单位--MBR-GPT
  16. 使用ffmpeg对视频、音频进行分离
  17. javaweb项目页面崩溃报错
  18. rho是什么 matlab,RHO值是什么?如何理解RHO值?
  19. 2022-06-26 笔记本新机重装系统
  20. Android ToggleButton:状态切换的Button

热门文章

  1. 大型扫码点餐小程序系统源码
  2. 报错:This dependency was not found
  3. K-means 之国足小例子
  4. APP刚刚上线,出现一些线上bug,客户回访电话如何打?
  5. 入网许可证_进网许可证(CTA)
  6. linux开源同步软件,开源备份也安全 六大国外免费Linux工具
  7. 1019 数字黑洞 (20 分)
  8. android经典DEMO
  9. 【信息汇总】国际“顶尖”计算机视觉、机器学习会议大搜罗--附排名接收率
  10. 如何使用Scanner