<五>面向对象分析之UML核心元素之边界
一:基本概念 ---->边界在UML图符里的定义只是一个简单的矩形,四个边决定了边界的内外。参与者,用例和边界相生相克。
---->边界是一个很重要的概念,和封装的概念师出同门。面向对象,任何一个对象都有一个边界。
--->在收集需求时,我们总要先假定一个范围边界。在这个边界内寻找需求,而找到的需求集合又决定了最终边界的大小。在需求出来之前,我们必须先设想一个边界,这个边界的大小是不确定的,随着需求的明确,边界也逐步变得明朗。但是问题出在确定需求靠什么?靠参与者和用例对吧?而参与者和用例得意明确的前提条件是边界确定的,而偏偏这个时候边界是无法确定的。是的,这是一个矛盾,实际上需求就是在不断地调整这个矛盾的过程中逐步明确进而更加确定边界的。这个调整过程不可避免地会导致参与者和用例的变化,所以需求过程是一个动态的过程,不可能一蹴而就,也因为统一过程需要迭代,而不能采用瀑布方法。
二:边界决定视界
---->站在不同的边界外,看到的参与者和用例是不一样的。
---->站在大楼外边,看见楼层,大门。站在大楼内部,看见电梯,柱子。
三:边界决定抽象层次
---->一般大型系统,自顶向下抽象。寻找边界,参与者,用例
四:灵活使用边界
---->其实边界不仅能够在需求方面发挥作用,在设计层面也能发挥重要作用。软件设计也面临着很大的信息量,既要实现需求,又要保证性能,要具有扩展能力,还要友好易用。如果把这些要求都参杂在一起,设计师的脑袋就得痛了。这时设定一些边界就能有效地降低复杂度,比如将实现需求的任务交给分析墨香,在这个边界内只考虑需求实现;将扩展能力交给框架设计,在这个边界内专心设计灵活的框架;然后在框架的束缚下把分析模型转化为设计模型,这就比分析模型中考虑扩展能力简单多了。
----->总之,边界是无形的,与其说它是一个UML元素,不如说它是一种分析方法。在面向对象的方法中,边界大到业务建模,小到接口设计都发挥重要的作用。读者在实际工作中应当学会灵活地使用边界,用边界来决定抽象层次和视角,进而排除边界外大量的杂音来降低复杂程度,这也是面向对象能够比面向过程厉害的地方。
<五>面向对象分析之UML核心元素之边界的更多相关文章
- <四>面向对象分析之UML核心元素之用例
一:基本概念 --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值. --->所谓用例,就是一件事情,要完成这 ...
- <十>面向对象分析之UML核心元素之关系
关系 --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构. 一,关联关系(association)
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- <八>面向对象分析之UML核心元素之分析类
一:基本概念 ---->在那大数项目中,分析类是被忽视的一种非常有用的元素. ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...
- <三>面向对象分析之UML核心元素之参与者
一:版型 --->在UML里有一个概念叫版型.有些书里也称类型,构造型. --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...
- <十二>面向对象分析之UML核心元素之节点和设备
节点,设备
- <七>面向对象分析之UML核心元素之包
一:基本概念
- <六>面向对象分析之UML核心元素之业务实体
一:基本概念
- <十一>面向对象分析之UML核心元素之组件
组件
随机推荐
- 已收录的帝国cms文章被误删除了怎么办?
我们一直提倡网站要经常备份,但是有时也会遗忘,一不小心被谁删除了那就欲哭无泪了.就像ytkah刚弄了一个站,开了个权限比较高的后台帐号给别人用,居然把两三个栏目都删除了,想发狂啊.刚好又有段时间没备份 ...
- linux源码阅读笔记 jmpi指令(转)
jmpi是段间跳转指令,用于x86实模式下, 如:BOOTSEG = 0x0c70 jmpi 4, #BOOTSEG 假如当前段CS==00h,那么执行此指令后将跳转到段CS==0x0c70,当 ...
- hdoj 1875 畅通工程再续
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1875 //9403289 2013-10-24 17:00:49 Accepted 1875 62M ...
- Struts2 常用的常量配置
在struts2-core-2.1.8.1.jar的org.apache.struts2包下面的default.properties资源文件里可以查到常用的常量配置,这些不用刻意的记住:忘记的时候可以 ...
- PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)
定义字符串的时候,用单引号或者双引号都是可以的.我个人习惯是用双引号.在输出字符串的时候,若字符串中含有字符串变量,使用单引号和双引号则是有区别的.如下面程序: 1 2 3 4 5 6 7 8 < ...
- poj 1730 Perfect Pth Powers
这个有2种方法. 一种是通过枚举p的值(p的范围是从1-32),这样不会超时,再就是注意下精度用1e-8就可以了,还有要注意负数的处理…… #include<iostream> #incl ...
- Linux shell 脚本小记
if结构 #!/bin/env bash -gt ] then echo "$1 is positive" -lt ] then echo "$1 is negative ...
- A. Counting Kangaroos is Fun(贪心)
#include<stdio.h> #include<algorithm> using namespace std; ]; int main() { int i,n,high; ...
- Python Snippet
python按行读取文件,如何去掉换行符"\n" for line in file.readlines(): line=line.strip('\n') python没有subst ...
- javaWEB邮件测试
新建一个工具类: Mail.java 该类的主要关键点是:1.设置系统属性.也就是你是用什么协议来进行邮件发送的,邮件协议有很多在种,比如impt,smpt,prop等协议, 我现在测试用的是smpt ...