当前位置: 首页 > 编程日记 > 正文

uml具有多种视图_UML建模与架构文档化

UML(统一建模语言) 是用元模型描述的,元模型是4层元模型体系结构模式中的一层。此模式的其他层次分别是元-元模型层、模型层和用户对象层。

在原模型层,UML元模型 又被分解为三个子逻辑包:基础包(核心、扩展机制和数据模型)、行为元素包(描述模型动态行为的语言上层结构,支持不同的行为图)、模型管理包(定义了对模型元素进行分组和管理的语义)

UML 通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画。它定型了10种视图,并将其分为以下4类:

①、用例图。从外部用户的角度描述系统的功能,并指出功能的执行者。

②、静态图。包括类图(class diagram),对象图(object diagram)和包图(package diagram)

③、行为图。包括交互图(interactive diagram)、状态图(statechart diagram)与活动图(artive diagram)

④、实现图(implementation )。包括构件图(component diagram)与部署图(deployment diagram)

定义一:用例是对一个活动者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列。

定义二:用例是系统、子系统或类和外部的参与者(actor)交互的动作序列的说明。

编写用例必须包含以下元素:

一:角色 - 指系统以外的,需要使用系统或与系统交互的东西,包括人、设备、外部系统等。

二:用例间的关系

用例除了与参与者有关联(association)关系外,之间的关系 - 关系(relationship),如泛化(generalization)关系、包含(include)关系、扩展(extend)关系等

交互图(interaction diagram)

用来描述对象之间以及对象与参与者(actor)之间的动态写作关系以及协作过程中行为次序的图形文档。

1、顺序图 (时序图):显示对象直接按交互的图,这些对象是按时间排序的。是一个二维图形,以水平方向为对象维。

2、协作图  :用于描述系统的行为是如何由系统的成分协作实现的图。

类图和对象图

类是具有相似结构、及行为和关系的一组对象的抽象。

一般来说,类之间的关系又关联、聚集(一种特殊形式的关联)、组合(是特殊形式的聚集)、泛化(定义了一半和特殊元素之间的关系)和依赖(假设由两个元素X、Y,如果修改元素X的定义可能会导致对另一个元素Y的修改,则称元素Y依赖于元素X),类图(以直观、抽象形式展示了不同对象之间的关系)

状态图和活动图

1、状态图  UML中的状态图(state chart diagram)主要用于描述一个对象在其生存期间的动态行为。

2、活动图 是对系统的动态行为建模的5个之一,用于描述系统的工作流程和并发行为。可看作状态图的特殊形式。包含几个基本概念:

①、活动 (表示的是某流程中的任务执行,可以表示某算法过程中语句的执行)   ②、泳道(是活动图中的区域划分,根据每个活动的职责对多有活动进行划分,每个用到代表一个责任区)   ③、分支(每个可能的转移是一个分支(branch))   ④、分叉和汇合   ⑤、对象流(可作为活动的输出或输入)  

构件图

构件(componet):是系统中遵从一组接口且提供其实现的无力的、可替换的部门。

构件图(componentdiagram)则显示一组构件以及他们之间的相互关系、包括编译、链接或执行时构件之间的依赖关系

构件就是一个实际文件,包含(1)部署构件  (2)工作产品构件(deploymentcomponet),如dll文件、exe文件 (3)执行构件,也就是系统执行后得到的构件

部署图

部署图也称配置图、实施图,它可以用来显示系统中计算节点的拓扑结构和通信路径与节点上运行的软构件等。

基于UML的软件开发过程

1、初启  (软件发起项目人确定项目的主要目标和范围)

2、细化 (标志项目的正式确立)

1)、初步的需求分析

2)、初步的高层设计

3)、部分的详细设计

4)、部分的原型构造

在细化阶段可能需要使用UML语言机制包括描述用户需求的用例及用例图、表示灵魂与概念模型的类图、表示业务流程处理的活动图、表示系统搞成结构的包图和表示用例内部实现过程的交互图

3、构建 (开发人员通过一系列的迭代完成所有用例的软件实现工作)

    软件迭代计划用遵循:①、用户认为业务价值较大的用例应优先安排。②、开发人员评估后认为开发风险较高的的用例应优先安排。

4、部署

基于UML的需求分析

  • 利用用例及用例图表示需求。

  • 利用包图及表示目标软件系统的总体框架结构。

1、生成用例 (从外部用户的视角看,一个 用例 是执行者(actor)与目标软件系统直之间的一次典型的交互作用;从软件系统内部的视角出发,一个用例代表系统执行的一系列动作,动作执行的结果能够被外部的执行者所察觉)

2、用活动图表示用例

3、生成用例图 (执行者与用例之间的关系有两种:触发执行与信息交换)

4、建立顶层架构 (顶层架构的目的主要是为后续的分析和设计活动建立一种结构和划分,以便开发人员在不同的开发阶段,以及同一开发阶段的不同开发人员,能够聚焦于系统的不同部分)

   1)、UML 包图  (包是UML对类进行分组的一种机制,包之间存在两种依赖关系:依赖和构成)

    2)、顶层架构设计

    目前主要的架构模式:(1)、流程处理模式。(2)、客户/服务模式  (3)、分成模式  (4)、架构中包的数量  (5)、架构中包之间的耦合度  (6)、软件系统的稳定性  (7)软件系统的必然性  (8)、作为软件系统运行环境的物理网络拓扑  (9)、开发团队的技术专长

5、建立概念模型

面向对象的设计方法

一、设计用例实现方法

1、设计用例实现方案 (1)、界面控制  (2)、外部接口  (3)、环境隔离

2、构造交互图 (在UML顺序图中:用例的主动执行者在最左侧,紧邻其右的类是作为用户界面的边界类,再往右是控制类,控制类的右侧应防止辅助类和实体类)

3、根据交互图精化类图

二、设计技术支撑方案

三、设计用户界面 (1、熟悉用户并对用户分类 2、按用户类别分析用户的工作流程与习惯 3、设计命令系统并进行优化  4、设计用户界面的各种细节 5、增加用户界面专用的类与对象)

四、计划设计模型(分精化和设计模型)

系统架构文档化

1、“4+1”视图包括:逻辑视图(logical view)、过程视图(process view)、物理视图(physical view)、开发视图(development view)、场景。

2、逻辑架构:设计的对象模型(使用面对对象的设计方法时)。支持功能性需求,采用抽象、封装或继承的原理,用来识别遍布系统各个部分的通用机制和设计元素。

3、进程架构:捕捉设计的并发和同步特征。考虑一些非功能性的需求,如性能和可用性。在几种层次的抽象上进行描述,每个层次针对不同问题。

4、开发架构:描述了开发环境中软件的静态组织结构。用模块和子系统来表达,显示了“输出”和“输入”关系。

5、物理架构:描述了软件到硬件的映射,反映了分布式特性。主要关注系统非功能性需求,如可用性、可靠性、性能和可伸缩性。

6、场景:架构的描述,及所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例(use cases)或场景(scenarios)来说明,从而形成了第五个视图。

我是小侯,我想和大家一起变厉害07d3fc956e293d41ca64dc6a5a111880.png

eab739e2754e046966f3461316b8ca92.gif

相关文章:

insert into与insert ignore以及replace into的区别

insert ignore表示,如果表中已经存在相同的记录,则忽略当前新数据; INSERT INTO有无数据都插入,如果主键则不插入; REPLACE INTO 如果是主键插入则会替换以前的数据; 例 1.insert语句一次可以插入多组值,每组值用一对…

德国SNS交友/视频网站Poppen.de的技术架构分享

Poppen.de是一个德国的 交友/ 聊天/ 视频 的SNS网站, 部分内容NSFW,网站采用了很多我们熟悉的技术,像Nginx ,MySQL,CouchDB,Erlang,Memcached的,RabbitMQ(消息服务器),采用了Graphit…

对数函数定义域和值域_呆哥数学每日一题 —— 复合函数值域

如果想要获取往期每日一题电子版,可以加我微信:daigemath366,备注:知乎 每日一题呆哥解析:这是一个函数和复合函数的综合问题首先我们先把原函数的值域求出来先直接求导:导数不容易判断单调性,我…

一些常用工具地址,随时更新中~

2019独角兽企业重金招聘Python工程师标准>>> 一些常用工具地址的备份: 一款比较全的先到化界面编辑器Neditor:https://gitee.com/notadd/neditor 前端ui组件库,类似element ui。iView:https://www.iviewui.com &#…

UNIX环境编程

linux函数分析查询工具1.优先推荐linux 中man命令2.一个不错的中文Linux手册:http://cpp.ezbty.org/manpage3.在线查英文Man手册:http://www.kernel.org/doc/man-pages/http://man7.org/linux/man-pages/dir_all_alphabetic.htmlhttp://linux.about.com/…

WCF优化的几个常规思路

前几天用WCF做项目时发现了一个效率问题,由于系统对效率要求较高,困扰了很长时间终于将问题解决了,写下来为以后的兄弟们参考,第一次写博客有不准确的地方还望同行们多喷多指点,先行谢过啦... 问题场景是这样的&#x…

使复选框选中_勾选复选框单元格变色,自动计数,在Excel中是如何实现的?

Excel中,我们经常会使用复选框来打勾打叉,这是复选框最基本的功能,相信很多小伙伴都会,但今天我跟大家分享的是复选框的其他操作技巧,勾选复选框变色,统计人数。下图中,我们要利用复选框是否打钩…

[短文速读] 重载有暗坑,JVM是如何执行方法的

前言 这将是一个系列文章。原因是自己写了很多文章,也看了很多文章。从最开始的仅仅充当学习笔记,到现在认认真真去写文章去分享。中间发现了很多事情,其中最大发现是:收藏不看!总是想着先收藏以后有时间再看&#xff…

一笔画问题【数据结构-图论】

回家路上听到2个人在说:田字怎么一笔写成,并且笔划不重复。 田 我回家想了许久,觉得无论如何走正常的途径肯定是不行的,投机取巧脑筋急转弯的我不讨论。 那么是否可以找到数学定理? 其实就是欧拉七桥问题:1…

解析并符号 读取dll_Spring IOC容器之XmlBeanFactory启动流程分析和源码解析

一. 前言Spring容器主要分为两类BeanFactory和ApplicationContext,后者是基于前者的功能扩展,也就是一个基础容器和一个高级容器的区别。本篇就以BeanFactory基础容器接口的默认实现类XmlBeanFactory启动流程分析来入门Spring源码的学习。二. 概念要点1. 概念定义Be…

安装多个gcc

删除gcc #yum remove gcc 安装最新的 #yum install gcc 查找gcc源 可先通过“yum list compat-gcc*”查看版本,然后再利用“yum install compat-gccXXX”安装 #yum list compat-gcc* #sudo yum install compat-gcc-34.i686 查看gcc版本 #gcc -v #gcc34 -v参考&…

JAVA - HashMap和HashTable

1. HashMap 1) hashmap的数据结构 Hashmap本质就是一个数组,只是当key值重复时,使用链表的方式来存储重复的key值(拉链法),注意:链表中存放的仍然是key值。如下图示: 当我们往hashmap中put元素…

empress和queen区别_queen与empress

(1)「queen」和「empress」不仅可以用来指称「king」和「emperor」的妻子,也能指代握有正式权力的女性君主。(2) 英国的君主(queen或king)之所以曾经有过empress或emperor的头衔,是因为英国曾统治过印度次大陆, 他们曾是印度的empress或emperor。如今&am…

在UIWindow上加类似于“回到顶部”的按钮

在公司上个版本的开发中遇到了一个UI布局的小问题: 某个页面需要增加一个分享按钮,但是该页面是二级页面,导航栏右边也已经放置了2个button。 起初和老大谈论这个问题的时候想到的方法是导航栏右边加三个button得了~但是一回想,这…

修改mysql 默认字符集 , 默认引擎

cd /var/lib/mysql/gamell vim db.optdefault-character-setutf8default-collationutf8_general_ciwq service mysqld restart或者service mysqld reload默认字符集修改完毕vim /etc/my.cnf[mysqld]datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sockusermysqldefault-stor…

bzoj2724: [Violet 6]蒲公英(分块)

传送门 md调了一个晚上最后发现竟然是空间开小了……明明算出来够的…… 讲真其实我以前不太瞧得起分块,觉得这种基于暴力的数据结构一点美感都没有。然而今天做了这道分块的题才发现分块的暴力之美(如果我空间没有开小就更美了) 我们先将整个…

Linux0.01内核根目录Makefile注释

# # Makefile for linux. # If you dont have -mstring-insns in your gcc (and nobody but me has :-) # remove them from the CFLAGS defines. ## #8086汇编编译器和连接器. -0生成8086目标程序;-a生成与gas和gld部分兼容的代码 # AS86 as -0 -a CC86 cc -0 LD86 ld -0# #G…

快速滚动_方老师教滚动快速作文

五年级第一单元作文集阴沉天空中有一小束照着你的阳光。亲爱的孩子,让时间在知识的枝条上、智慧的绿叶上、成熟的果实上留下它勤奋的印痕!罗婉汀作文集自律且努力,别让生活太安逸。亲爱的孩子,耕耘者最信得过自己的汗水&#xff0…

liunx复制备份命令,copy命令,liunx命令

2019独角兽企业重金招聘Python工程师标准>>> 拷贝到的文件夹 /usr/local/文件夹/需要拷贝的路径文件夹 /usr/local/tomcat/webapps/文件夹/复制命令cp -r /usr/local/文件夹/ /usr/local/tomcat/webapps/文件夹/ 转载于:https://my.oschina.net/u/2336787/blog/635…

20.Valid Parentheses (python)

这道题主要用栈来实现的。什么是栈呢,参照书上的后缀表达式的例子谈谈自己的理解,栈最明显的特征是先进后出。所以可以有效的结合题目中 ()对匹配问题,可以把从列表中获取的符号先存到栈中。 首先建个空列表用于映射栈…

The HipHop Virtual Machine

目前Facebook已将该HipHop虚拟机开源,源代码发布在GitHub上。关于该工具的技术原理在Facebook的开发者页面上有一篇详细的文章介绍,查看这里。如果看不到的可以看下面的转载:Were always looking for ways to make our computing infrastruct…

node建立博客系统遇到的问题,1,乱码。2,multer的使用错误。3使用session问题...

2019独角兽企业重金招聘Python工程师标准>>> 1,乱码 文件存储为utf-8格式后还是报错。 原来这个设置只对新建文件编码有效,旧文件不处理的,我还以为旧文件也给转换了。 2,上传文件的multer模块使用错误。 throw new Ty…

python时间函数入门_calendar在python3时间中有哪些常用函数?怎么用?

想要在python中写代码游刃有余,没有函数的支持是万万不行的。很多小伙伴反映,最近函数的应用知识不够了,所以小编挑选了python3时间中的函数,希望可以帮助大家在处理日历方面更加的迅速。其他更多的函数,大家也可以自行…

9.spark core之共享变量

简介 spark执行操作时,可以使用驱动器程序Driver中定义的变量,但有时这种默认的使用方式却并不理想。 集群中运行的每个任务都会连接驱动器获取变量。如果获取的变量比较大,执行效率会非常低下。每个任务都会得到这些变量的一份新的副本&…

【CSDN2012年度博客之星】需要您的一票,感谢大家的支持

从2004年9月,本人一直将自己工作和学习经验写成博文分享给大家,本人有幸被选为2012年88位候选博客之星,如果各位IT‘er喜欢我的博文,请投我一票,做…

双绞线和同轴电缆

线缆作为连接器件,相当于不同系统之间沟通的“桥梁”,选择线缆类型的好坏,也决定着传输信号的质量,影响着整个系统的稳定性。 (1)特性阻抗 先说一下关于线缆在传输过程中的特性阻抗问题。 特性阻抗是指电缆…

keras训练完以后怎么预测_使用Keras建立Wide Deep神经网络,通过描述预测葡萄酒价格...

你能通过“优雅的单宁香”、“成熟的黑醋栗香气”或“浓郁的酒香”这样的描述,预测葡萄酒的价格吗?事实证明,机器学习模型可以。在这篇文章中,我将解释我是如何利用Keras(tf.keras)建立一个Wide & Deep神经网络,并…

如何发布自己的NPM包(模块)?

1.注册NPM 账号 注册地址:https://www.npmjs.com/。 2.初始化自己要发布的项目 搭建本地环境:安装node.js,包含了npm命令。新建目录,在该目录下,初始化项目:npm init。按照提示填写初始化信息,我…

PHP对于浮点型的数据需要用不同的方法去解决

Php: BCMathbc是Binary Calculator的缩写。bc*函数的参数都是操作数加上一个可选的 [int scale],比如string bcadd(string $left_operand, string $right_operand[, int $scale]),如果scale没有提供,就用bcscale的缺省值。这里大数直接用一个…

mysql提示符详解_MySQL字符集使用详解

查看字符集相关变量mysql> show variables like character%;————————–——————————-| Variable_name | Value |————————–——————————-| character_set_client | latin1 || character_set_connection | latin1 || character_set_database…