<五>面向对象分析之UML核心元素之边界
一:基本概念 ---->边界在UML图符里的定义只是一个简单的矩形,四个边决定了边界的内外。参与者,用例和边界相生相克。
---->边界是一个很重要的概念,和封装的概念师出同门。面向对象,任何一个对象都有一个边界。
--->在收集需求时,我们总要先假定一个范围边界。在这个边界内寻找需求,而找到的需求集合又决定了最终边界的大小。在需求出来之前,我们必须先设想一个边界,这个边界的大小是不确定的,随着需求的明确,边界也逐步变得明朗。但是问题出在确定需求靠什么?靠参与者和用例对吧?而参与者和用例得意明确的前提条件是边界确定的,而偏偏这个时候边界是无法确定的。是的,这是一个矛盾,实际上需求就是在不断地调整这个矛盾的过程中逐步明确进而更加确定边界的。这个调整过程不可避免地会导致参与者和用例的变化,所以需求过程是一个动态的过程,不可能一蹴而就,也因为统一过程需要迭代,而不能采用瀑布方法。
二:边界决定视界
---->站在不同的边界外,看到的参与者和用例是不一样的。
---->站在大楼外边,看见楼层,大门。站在大楼内部,看见电梯,柱子。
三:边界决定抽象层次
---->一般大型系统,自顶向下抽象。寻找边界,参与者,用例
四:灵活使用边界
---->其实边界不仅能够在需求方面发挥作用,在设计层面也能发挥重要作用。软件设计也面临着很大的信息量,既要实现需求,又要保证性能,要具有扩展能力,还要友好易用。如果把这些要求都参杂在一起,设计师的脑袋就得痛了。这时设定一些边界就能有效地降低复杂度,比如将实现需求的任务交给分析墨香,在这个边界内只考虑需求实现;将扩展能力交给框架设计,在这个边界内专心设计灵活的框架;然后在框架的束缚下把分析模型转化为设计模型,这就比分析模型中考虑扩展能力简单多了。
----->总之,边界是无形的,与其说它是一个UML元素,不如说它是一种分析方法。在面向对象的方法中,边界大到业务建模,小到接口设计都发挥重要的作用。读者在实际工作中应当学会灵活地使用边界,用边界来决定抽象层次和视角,进而排除边界外大量的杂音来降低复杂程度,这也是面向对象能够比面向过程厉害的地方。
<五>面向对象分析之UML核心元素之边界的更多相关文章
- <四>面向对象分析之UML核心元素之用例
一:基本概念 --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值. --->所谓用例,就是一件事情,要完成这 ...
- <十>面向对象分析之UML核心元素之关系
关系 --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构. 一,关联关系(association)
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- <八>面向对象分析之UML核心元素之分析类
一:基本概念 ---->在那大数项目中,分析类是被忽视的一种非常有用的元素. ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...
- <三>面向对象分析之UML核心元素之参与者
一:版型 --->在UML里有一个概念叫版型.有些书里也称类型,构造型. --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...
- <十二>面向对象分析之UML核心元素之节点和设备
节点,设备
- <七>面向对象分析之UML核心元素之包
一:基本概念
- <六>面向对象分析之UML核心元素之业务实体
一:基本概念
- <十一>面向对象分析之UML核心元素之组件
组件
随机推荐
- failed creating the Direct3d device--debug
D3DDEVTYPE_REF 使用REF设备,用软件模拟Direct3D API 照理说是为了让电脑能跑本机不能硬件执行的渲染命令的 但我 pDeviceSettings->d3d9.Devic ...
- Gitlab安装和使用相关信息
Gitlab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...
- HDU 1087 Super Jumping! Jumping! Jumping!(最长上升子序列,dp)
以下引用自:http://www.cnblogs.com/Lyush/archive/2011/08/31/2161314.html沐阳 该题可以算是一道经典的DP题了,题中数据是这样的.以 3 1 ...
- Android开发--Activity生命周期回顾理解
Activity和Servlet一样,都用了回调机制.我们通过类比servlet来学习Activity.当一个servlet开发出来之后,该servlet运行于Web服务器中.服务器何时创建servl ...
- 在C#中调用另一个应用程序或命令行(.exe 带参数)<zz>
在.net中使用system.diaglostics.Process可以用来调用另一个命令行或程序. using System.Diagnostics; 如果是dos Proces ...
- Oracle安装后,服务中没有监听器怎么处理?
运行中输入netca 回车运行oracle net configuration assistant, 选择监听程序配置->下一步->接下来的步骤可以都选默认一直下一步到最后,即可.
- MD5加密算法测试
在用户注册这一块,密码加密保证客户信息安全是最重要的,在网上查询了一些资料,发现加密算法比较流行的有MD5,DES和SHA. 虽然SHA与MD5通过碰撞法被破解了,但是MD5和SHA仍被公认是安全的加 ...
- 去掉eclipse的xml和js验证
一.XML Properties > Validation you have two options: 1- Configure Workspace Settings (disable the ...
- 为什么开发者热衷在Stack Overflow上查阅API文档?
摘要:一项新研究跟踪了Android开发者的访问历史,发现开发者多达二分之一的文档是从Stack Overflow上获取到的,而Stack Overflow上的示例也多于官方指南,开发者通过搜索更多时 ...
- python list去重的方法
转载于:http://yxmhero1989.blog.163.com/blog/static/112157956201381443244790/ Python很简洁 我们喜欢简单有效的代码 一. ...