一:基本概念
        ---->边界在UML图符里的定义只是一个简单的矩形,四个边决定了边界的内外。参与者,用例和边界相生相克。
        ---->边界是一个很重要的概念,和封装的概念师出同门。面向对象,任何一个对象都有一个边界。
        --->在收集需求时,我们总要先假定一个范围边界。在这个边界内寻找需求,而找到的需求集合又决定了最终边界的大小。在需求出来之前,我们必须先设想一个边界,这个边界的大小是不确定的,随着需求的明确,边界也逐步变得明朗。但是问题出在确定需求靠什么?靠参与者和用例对吧?而参与者和用例得意明确的前提条件是边界确定的,而偏偏这个时候边界是无法确定的。是的,这是一个矛盾,实际上需求就是在不断地调整这个矛盾的过程中逐步明确进而更加确定边界的。这个调整过程不可避免地会导致参与者和用例的变化,所以需求过程是一个动态的过程,不可能一蹴而就,也因为统一过程需要迭代,而不能采用瀑布方法。

二:边界决定视界
        ---->站在不同的边界外,看到的参与者和用例是不一样的。
        ---->站在大楼外边,看见楼层,大门。站在大楼内部,看见电梯,柱子。
三:边界决定抽象层次
        ---->一般大型系统,自顶向下抽象。寻找边界,参与者,用例

四:灵活使用边界
        ---->其实边界不仅能够在需求方面发挥作用,在设计层面也能发挥重要作用。软件设计也面临着很大的信息量,既要实现需求,又要保证性能,要具有扩展能力,还要友好易用。如果把这些要求都参杂在一起,设计师的脑袋就得痛了。这时设定一些边界就能有效地降低复杂度,比如将实现需求的任务交给分析墨香,在这个边界内只考虑需求实现;将扩展能力交给框架设计,在这个边界内专心设计灵活的框架;然后在框架的束缚下把分析模型转化为设计模型,这就比分析模型中考虑扩展能力简单多了。
        ----->总之,边界是无形的,与其说它是一个UML元素,不如说它是一种分析方法。在面向对象的方法中,边界大到业务建模,小到接口设计都发挥重要的作用。读者在实际工作中应当学会灵活地使用边界,用边界来决定抽象层次和视角,进而排除边界外大量的杂音来降低复杂程度,这也是面向对象能够比面向过程厉害的地方。

<五>面向对象分析之UML核心元素之边界的更多相关文章

  1. <四>面向对象分析之UML核心元素之用例

    一:基本概念        --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值.        --->所谓用例,就是一件事情,要完成这 ...

  2. <十>面向对象分析之UML核心元素之关系

    关系        --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构.        一,关联关系(association)

  3. <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性

    设计类

  4. <八>面向对象分析之UML核心元素之分析类

    一:基本概念        ---->在那大数项目中,分析类是被忽视的一种非常有用的元素.        ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...

  5. <三>面向对象分析之UML核心元素之参与者

    一:版型        --->在UML里有一个概念叫版型.有些书里也称类型,构造型.        --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...

  6. <十二>面向对象分析之UML核心元素之节点和设备

    节点,设备

  7. <七>面向对象分析之UML核心元素之包

    一:基本概念 

  8. <六>面向对象分析之UML核心元素之业务实体

    一:基本概念

  9. <十一>面向对象分析之UML核心元素之组件

    组件

随机推荐

  1. [转载]C#获取进程的主窗口句柄

    public class User32API { private static Hashtable processWnd = null; public delegate bool WNDENUMPRO ...

  2. java和javascript真的有关系=。=

    相同点:1. 内存管理,两者都采用GC来对内存进行回收.因此Java与javascript的内存泄露情况十分相似. 2. 代码编译为机器码后由中间件执行:Java使用前会编译为字节码后由JVM执行,V ...

  3. HTML5 动画引擎 小记

    国内: Cocos2d-x js版本   layabox Egret Sirius2D lufylegend.js Fireball 国外: CreateJS(EaselJS.TweenJS)http ...

  4. c# 4.0新特性一览

    原文:http://www.cnblogs.com/palo/archive/2009/03/01/1400949.html 终于静下心来仔细听了一遍Anders Hejlsberg(Visual S ...

  5. POJ 2253 Frogger (求某两点之间所有路径中最大边的最小值)

    题意:有两只青蛙,a在第一个石头,b在第二个石头,a要到b那里去,每种a到b的路径中都有最大边,求所有这些最大边的最小值.思路:将所有边长存起来,排好序后,二分枚举答案. 时间复杂度比较高,344ms ...

  6. hdu 4427 Math Magic DP

    思路: dp[i][j][k]表示满足前i个数,和为j,lcm为k的数目. 设a为解的第i+1个数. 那么状态转移就为 dp[i+1][j+a][lcm(a,k)]+=dp[i][j][k]. 但是由 ...

  7. hdu 1352 I Conduit!

    计算几何,主要是排序问题,其他都很好做…… ;}

  8. [PHP]如何在百度(BAE)和新浪(SAE)的云平台使用PHP连接MySQL并返回结果数据

    <?php $dbname = 'VnOTxPFWoxzUBLtrQCCg'; $host = getenv('HTTP_BAE_ENV_ADDR_SQL_IP'); $port = geten ...

  9. 李洪强iOS开发支付集成之支付宝支付

    iOS开发支付集成之支付宝支付 下载支付宝SDK 首先是开发包下载,还是比较难发现的,网上以前文章中的链接都打不开,我找了好久才找到的.最新的地址在这里(注意的是下载出来的SDK包里面并没有传说中的开 ...

  10. lintcode:合并排序数组 II

    题目: 合并排序数组 II 合并两个排序的整数数组A和B变成一个新的数组. 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] ...