<五>面向对象分析之UML核心元素之边界
一:基本概念
---->边界在UML图符里的定义只是一个简单的矩形,四个边决定了边界的内外。参与者,用例和边界相生相克。
---->边界是一个很重要的概念,和封装的概念师出同门。面向对象,任何一个对象都有一个边界。
--->在收集需求时,我们总要先假定一个范围边界。在这个边界内寻找需求,而找到的需求集合又决定了最终边界的大小。在需求出来之前,我们必须先设想一个边界,这个边界的大小是不确定的,随着需求的明确,边界也逐步变得明朗。但是问题出在确定需求靠什么?靠参与者和用例对吧?而参与者和用例得意明确的前提条件是边界确定的,而偏偏这个时候边界是无法确定的。是的,这是一个矛盾,实际上需求就是在不断地调整这个矛盾的过程中逐步明确进而更加确定边界的。这个调整过程不可避免地会导致参与者和用例的变化,所以需求过程是一个动态的过程,不可能一蹴而就,也因为统一过程需要迭代,而不能采用瀑布方法。
二:边界决定视界
---->站在不同的边界外,看到的参与者和用例是不一样的。
---->站在大楼外边,看见楼层,大门。站在大楼内部,看见电梯,柱子。
三:边界决定抽象层次
---->一般大型系统,自顶向下抽象。寻找边界,参与者,用例
四:灵活使用边界
---->其实边界不仅能够在需求方面发挥作用,在设计层面也能发挥重要作用。软件设计也面临着很大的信息量,既要实现需求,又要保证性能,要具有扩展能力,还要友好易用。如果把这些要求都参杂在一起,设计师的脑袋就得痛了。这时设定一些边界就能有效地降低复杂度,比如将实现需求的任务交给分析墨香,在这个边界内只考虑需求实现;将扩展能力交给框架设计,在这个边界内专心设计灵活的框架;然后在框架的束缚下把分析模型转化为设计模型,这就比分析模型中考虑扩展能力简单多了。
----->总之,边界是无形的,与其说它是一个UML元素,不如说它是一种分析方法。在面向对象的方法中,边界大到业务建模,小到接口设计都发挥重要的作用。读者在实际工作中应当学会灵活地使用边界,用边界来决定抽象层次和视角,进而排除边界外大量的杂音来降低复杂程度,这也是面向对象能够比面向过程厉害的地方。