简易软件开发流程

实践中,use case and description、class diagram与sequence diagram三者搭配,几乎是UML项目的基本类型,所以在分工或外包的设计文档中,通常少不了这三款UML图。常见的开发程序是并行建构use case、description与class diagram,接着才构建sequence diagram以及按图编码,如下图所示。

一个软件系统,对外提供各种服务(use case描述)。外部行为由于环境、市场、政策等等因素具有动态行为以及不可预测性。无论系统对外服务多么不确定性,运作方式差异多么大,他所依赖的系统内部结构都是稳定的。一个系统只有一个内部结构,class diagram正是描述系统内部这种未定的静态结构。软件开发过程中,class diagram不是一蹴而就的,需要与use case、sequence diagram多次迭代更新后才能逐步稳定下来。

上图涉及的三种UML图功能如下:

use case:表示系统对外提供的服务

sequence diagram:表示软件内部对象交互的情况。

class diagram:用来呈现系统内部的静态结构,而这样的静态结构通常可以直接对应代码,因此,从程序员的角度来看,类图是最值得关注的UML图。

association

在OO的认识论中,世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同驱动力和规则的作用下体现出不同的运动过程,然后这些过程便展现出了我们这个生动的世界。在软件设计中,我们往往采用领域术语做类,识别类的具体手段有软件专家Sally Shlaer和Stephen J.Mellor提出的对象种类理论,以及软件专家Peter Coad提出的transaction patterns。本文的重点不是如何设计类,而是如何刻画类与类之间的关系。

类与类之间的关系,有过C++等面向对象语言基础的人很容易理解。上图对应的inheritance、access level、virtual class在C++中都有语法支撑,大多数C++程序员很容易理解这些概念。

对象之间的关系则要丰富的多。C++中我们使用类来描述某种事物的共同特性,使用对象来描述具体事务的共同特性的实际值,有的甚至还有个性的实际值。对象很少独立存在,通常会与其他种类的对量产生关系,达到1+1>2的效果。本文重点讲述对象与对象之间的关系,不过虽说是对象之间的关系,但是体现在class diagram上还是在类与类之间建立联系,用来表达两个类所产生对象之间的关系。

static relationship

static relationship包括association、aggregation、composition。这三种关系在C++类定义代码里面可以直接体现出来,才C++中attributes、static relationship的实现方法相同,都当作静态的数据来处理,因此static relationship也会想attributes一样收到access level的限制,进而影响到子类继承后的使用情况。static relationship中最常见的又是association,只要两个对相见需要协作,都能和association扯上勾

UML——从类图到C++的更多相关文章

  1. [UML]UML系列——类图class的关联关系(聚合、组合)

    关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...

  2. [UML]UML系列——类图class的依赖关系

    相关文章          [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列—— ...

  3. [UML]UML系列——类图class的泛化关系

    系列文章       [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图C ...

  4. [UML]UML系列——类图class的实现关系Realization

    系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图Class   ...

  5. UML(一) 类图及类间关系

    原创文章,同步发自作者个人博客,http://www.jasongj.com/uml/class_diagram/ UML类图 UML类图介绍 在UML 2.*的13种图形中,类图是使用频率最高的UM ...

  6. UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)

    UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...

  7. 20170908工作日记--UML画类图、HTTP协议、Volley源码走读

    随手搜了一下,Android studio居然能够自动帮追我们生成UML的类图,简直太棒了http://www.gcssloop.com/course/UsePlantUMLInAS(Win),具体做 ...

  8. [UML]UML系列——类图Class

    相关文章       [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成 1.类图的概念 类图是描述类.接 ...

  9. Uml学习-类图简介

    类图(Class Diagram)简介  类图是面向对象分析(OOA,Object-Oriented Analysis)和面向对象设计(OOP,Object-Oriented Deisgn)思想的重要 ...

  10. UML的类图、时序图表示方法以及惯例

    <UML类图图示样例>说明:http://wenku.baidu.com/link?url=DEaRFyVIAH4kZ7TolplfFhFhmAk3gFaNSOH7XPzfTnCWY4CB ...

随机推荐

  1. hackbar简单安装使用教程

    安装hackbar: 在火狐的附加组件中搜索“hackbar”,将它添加到火狐浏览器中, 重启后Firefox后安装完成,按F9键打开我们就会看到在地址栏下面会出现一个大框框就是hackbar了 框框 ...

  2. 使用Javascript从Google Places搜索api获取纬度和经度

    如何使用谷歌地图搜索框api从搜索到的位置获取经度和纬度. 我使用与谷歌演示相同的代码 – https://developers.google.com/maps/documentation/javas ...

  3. angular4.x实现一个全选,反选,外加从下一页返回上一页,选中上一次的操作记录

    productMap:any = new Map<string, string>(); //定义一个map的数据模型 //只要操作这个checkbox 那么只管把数据全部勾起了就行了 刷新 ...

  4. 解决SQL语句在Dapper执行超时比Query慢的问题

    在语句结尾加上 Add OPTION (RECOMPILE) to the end https://stackoverflow.com/questions/10933366/sp-executesql ...

  5. 一段隐藏文字的css代码,记录下

    <span style="width:1px; height:1px; color:#fff; outline-width:hidden; overflow:hidden; displ ...

  6. openstack集群访问外部服务出现访问失败

    场景描述: openstack私有云中的容器服务A(部署在openshift上)需要通过http访问阿里云中的B服务,中间需要经过openstack的nat网关,以及阿里云的lb.但在访问时发现访问失 ...

  7. 解析Java反射java.lang.IllegalArgumentException: wrong number of arguments

    项目中遇到的问题 import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; public cl ...

  8. nginx 进程问题

    1 nginx的进程分为四种 master worker cacheLoader cacheManager. 实际接收请求的进程是 worker,master监控worker节点,之所以会多进程模式, ...

  9. 【剑指offer】删除链表中重复的结点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针.例如,链表1->2->3->3->4->4->5 处理后为 ...

  10. 通过werkzeug了解wsgi

    Django有wsgi当做socket,而flask自身是没有wsgi的,他是通过werkzeug来实现的. 看源码 下面看下源码是如何实现的: #这是我们写的flask代码from flask im ...