分类: 项目管理
2010-06-18 10:08:53
我习惯把软件系统的逻辑放到两个维度上来分别来考量:
应对可能的变化,是系统设计的重要目标,亦是一个常见的挑战。对变化的部分进行总结,根据变化的形式不同,有两种情况:
注意,即便是这两种变化同时发生,往往也可以把变化分割成逻辑上独立的两部分,一部分是整体结构的变化,另一部分是组成部分的变化。
传统的结构化设计方法中,推崇自顶向下的设计方法,从系统的整体功能和结构开始,推迟底层模块的设计和实现,容易应对第一种变化,适应整体结构不会发生变化的情况。而自底向上的设计方法,从最可能通用的功能模块开始设计,推迟模块的组成秩序和结构,容易应对第二种变化。
自然而然的就会奢望: 能不能同时使用自顶向下和自底向上的思路,并且期望能同时应对这两种变化?
把系统的整体结构的逻辑和组成部分的逻辑区分开,分别独立考虑,使用自顶向下的思路来分析整体结构,使用自底向上的方法来构造通用模块。发现整体结构和组成模块中的“元模型”,既能产生模型的模型。忘记用户个性化的要求,抽象出最一般化的问题。发现模块组成的规律,甚至“元规律”(规律之规律),规制化的接口,让不同组成部分能够按照任意的秩序和结构随意拼接,也让各个组成部分成为通用的配件。
题目中为什么使用“维度”这个词,为什么不是“两个方向”,或是“两个角度”?
这里的“维度”,除了酷一点,玄一点之外,还强调这是"两个正交的方向",两个"完全垂直的角度"。要衡量一个多维空间中,事物的运动和变化,要创建一个对应的坐标系统。好的坐标系统有这样的特征,其坐标轴是正交的。在一个维度或轴向的变动,不影响其他维度或轴向的映射点。例如:在直角坐标系中,x坐标的增加不影响y坐标值,如果在一个非正交的坐标系中观察事物运动,其复杂度将是不可想象的。
设计一个系统,当考量复杂的多种因素的时,也要找到恰当的坐标系,不管是几维。他们的坐标轴之间一定要正交才行。“整体结构”和“组成部分”代表的两个思路,就是正交的两个坐标轴。构成了一个软件设计中使用的非常好的一个直角坐标系。
原生的,萌芽状态的方法论,其概念仍是是模糊的。其实我只是抓住了一个模糊的灵感。灵感是容易挥发掉的,记在这里备忘。其实我博客上的东西,大部分都是这样的内容。
这样的灵感,因为靠近从无到有过程的,也许能让我体会到产生思想的“元思想”。