Chinaunix首页 | 论坛 | 博客
  • 博客访问: 947929
  • 博文数量: 134
  • 博客积分: 7443
  • 博客等级: 少将
  • 技术积分: 1411
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 20:18
文章分类

全部博文(134)

文章存档

2012年(7)

2011年(29)

2010年(16)

2009年(6)

2008年(18)

2007年(58)

分类: 项目管理

2010-06-18 10:08:53

我习惯把软件系统的逻辑放到两个维度上来分别来考量:

相关整体结构的逻辑 VS 相关组成部分的逻辑
 

应对可能的变化,是系统设计的重要目标,亦是一个常见的挑战。对变化的部分进行总结,根据变化的形式不同,有两种情况:

  1. 系统的整体结构或秩序没有变化,系统的某一部分被更新,或者新的组成部分添加到已有的结构中
  2. 系统的各个组成部分没有变化,只是使用新的秩序和结构把旧的组成部分重新拼接在一起

注意,即便是这两种变化同时发生,往往也可以把变化分割成逻辑上独立的两部分,一部分是整体结构的变化,另一部分是组成部分的变化。

传统的结构化设计方法中,推崇自顶向下的设计方法,从系统的整体功能和结构开始,推迟底层模块的设计和实现,容易应对第一种变化,适应整体结构不会发生变化的情况。而自底向上的设计方法,从最可能通用的功能模块开始设计,推迟模块的组成秩序和结构,容易应对第二种变化。

自然而然的就会奢望: 能不能同时使用自顶向下和自底向上的思路,并且期望能同时应对这两种变化?

把系统的整体结构的逻辑和组成部分的逻辑区分开,分别独立考虑,使用自顶向下的思路来分析整体结构,使用自底向上的方法来构造通用模块。发现整体结构和组成模块中的“元模型”,既能产生模型的模型。忘记用户个性化的要求,抽象出最一般化的问题。发现模块组成的规律,甚至“元规律”(规律之规律),规制化的接口,让不同组成部分能够按照任意的秩序和结构随意拼接,也让各个组成部分成为通用的配件。

题目中为什么使用“维度”这个词,为什么不是“两个方向”,或是“两个角度”?

这里的“维度”,除了酷一点,玄一点之外,还强调这是"两个正交的方向",两个"完全垂直的角度"。要衡量一个多维空间中,事物的运动和变化,要创建一个对应的坐标系统。好的坐标系统有这样的特征,其坐标轴是正交的。在一个维度或轴向的变动,不影响其他维度或轴向的映射点。例如:在直角坐标系中,x坐标的增加不影响y坐标值,如果在一个非正交的坐标系中观察事物运动,其复杂度将是不可想象的。

设计一个系统,当考量复杂的多种因素的时,也要找到恰当的坐标系,不管是几维。他们的坐标轴之间一定要正交才行。“整体结构”和“组成部分”代表的两个思路,就是正交的两个坐标轴。构成了一个软件设计中使用的非常好的一个直角坐标系。

原生的,萌芽状态的方法论,其概念仍是是模糊的。其实我只是抓住了一个模糊的灵感。灵感是容易挥发掉的,记在这里备忘。其实我博客上的东西,大部分都是这样的内容。

这样的灵感,因为靠近从无到有过程的,也许能让我体会到产生思想的“元思想”。

阅读(1722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~