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

全部博文(134)

文章存档

2012年(7)

2011年(29)

2010年(16)

2009年(6)

2008年(18)

2007年(58)

分类: 项目管理

2009-03-12 13:04:54

软件设计时,总是有追求完美的冲动,希望能设计出通用的软件产品,解决更一般化的问题;希望模块之间能够低耦合,高内聚;希望设计可扩展的框架;希望写出的代码今后容易被重用。

开发人员也常常感觉到,追求完美和保持简单是互相矛盾的。追求完美常意味着更复杂系统,要求更多的开发工作量。在追求完美的方向上多前进一步,就要考虑更多的细节,考虑更多变化的可能性,这当然就意味着更复杂的解决方案。而现实上,工期是计划好的,人力也是有限的。

如上图所示。设计人员必须从实际情况出发,找到完美和简单之间的平衡点。或在设计的争论之中,找到一个折中(这往往更糟糕)。

可是事情,没有这么简单(还好,没有这么简单)。如果充分的思考,很可能会出现一个创造性的思路,利用了某种技巧,找到又简单,又完美的方案。

 

如上图,当你的思路扩展到二维空间上,冲破了“非黑即白”的思维定势,你就会发现:代表“完美”和“简单”的已经不是两个端点,而是两条线,并且不是距离恒定永不相交的平行线,而是两条可能相交的曲线。如果你在创造性前进,在提升到一定的高度后,就会发现同时接近了“完美”和“简单”。甚至可能达到二者交点的“理想点”,设计出最完美同时又最简单的方案。

同时也要注意,即便是在创造性的思路上,也不能走得过远。当超过了“理想点”,可能会达到了“过犹不及”的境地。就像你在设计时,使用了太多的高级的实现技巧或设计模式,反而把情况搞乱。即便是高级的实现技巧和设计模式,在引入到解决方案的同时,也会把相关问题引入到我们的系统中。某一东西,如果不是解决方案的一部分,肯定会成为问题的一部分。

软件设计的过程,就是追求平衡的过程,但是如果你能够开拓视野。你发现这个平衡,不是简单的一维空间上左和右的平衡。很可能需要在二维,甚至是在三维、四维空间上寻找平衡点。而更复杂的是,在这个多维空间上,线可能不是直的,面可能是不平的,空间也可能是弯曲的。-------软件设计领域之外。其他领域的情况,何尝不是这样。

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