博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

颠覆传统-面向对象的设计思想(神仙?妖怪?)

Posted on 2007-08-02 23:00  我是程序员  阅读(2736)  评论(16编辑  收藏  举报
相关随笔:
  1. 颠覆传统-面向对象的设计思想(序章)
  2. 颠覆传统-面向对象的设计思想(序章续)
    在我的前两篇随笔中,我大概的陈述了一下我对面向对象设计的一些想法。本人拙于言,不善表达,写文章陈述观点这种技术活就更不擅长了,如果在文章中有什么 表述不清之处,还请各位海涵。此外,非常欢迎大家对我的文章点评,无论是赞扬、还是批评我都笑纳,多多益善,如果有探讨类型的评论就更好了。
    从《颠覆传统-面向对象的设计思想(序章)》和《颠覆传统-面向对象的设计思想(序章续)》的评论来看,对这两篇随笔持不同意见的主要原因是设计和需求之间关系的问题,很多朋友都在他们的评论中一再重申需求的重要性,认为需求和设计密不可分,需求是设计之母,离开需求谈设计都是空谈。


    谁也不能说这些观点是错的,但是说这些有用吗?不可否认,谁也不可否认需求的重要性,但是我们在谈论需求的时候,甚至把这个名词当作一个放之四海而皆准的真理的时候,我们有没有仔细的考虑过我们一天到晚谈论的需求到底是个什么东西?
    需求是什么,需求就是客户的欲望。人的欲望是无穷的,所以客户的需求永远也是无法满足的。我们做需求的目的是什么?不是满足客户的所有需求,也不可能满足客户的所有需求,而是保证我们能够尽可能的游走在客户勉强接受与暴走之间。说到这里,我不由的想到了“朝三暮四”这个典故,这个典故源于《庄子.齐物论》,说的是有一年碰上粮食欠收,养猴子的人对猴子说:“现在粮食不够了,必须节约点吃。每天早晨吃三颗橡子,晚上吃四颗,怎么样?”这群猴子听了非常生气,吵吵嚷嚷说:“太少了!怎么早晨吃的还没晚上多?”养猴子的人连忙说:“那么每天早晨吃四颗,晚上吃三颗,怎么样?”这群猴子听了都高兴起来,觉得早晨吃的比晚上多了,自己已经胜利了。
    是不是很有意思,做需求和养猴子其实也没有什么太大的差别,关键点都是在如何保证自己利益的情况下,取悦客户!这个养猴人实在是一个天才设计师,完全把握住了如何取悦客户这个关键点,至于用户,在取悦了客户的大前提下,用户的利益是可以侵占的(我们做系统的同时就是在损害用户的利益。流程重组,企业再造是用来干什么的,就是用来裁员的)。请记住做需求的关键点是取悦客户,而不是讨好用户。
设计的目的是有以下的两点:
  • 保证公司的利益
  • 取悦客户
    作为一个软件设计人员,如果能够同时站在公司的立场和客户的立场,做一个客户和公司都满意的解决方案就是一个非常合格的设计人员了,如果还能够高瞻远瞩的规划产品的远景目标,那么这个设计师绝对可以堪称是个高手。
    对于软件设计而言,最难做到的是出于业务而超脱于业务,试想在一个团队中不是所有的组员都能够准确的把握和领会客户需求的,对于大多数开发人员而言能够出色的完成技术问题就是一个非常出色的开发人员了,他们不懂业务是非常正常的一件事情,既懂业务又懂技术的人一般就不会做开发人员了。为了解决开发人员不懂业务的现实,我们有必要为开发人员隔离实际的业务问题,架构设计就是这么一个比较高层次的、掺杂技术问题和业务问题的技术活动,它的主要目的是为大多数开发人员隔离业务,将业务需求翻译成为具体的技术要求。在这个层次的设计谈论什么面向对象的设计是一个过于技术性的话题,至少我是这么认为的,面向对象设计更加聚焦到软件工艺这一个层次,是一个非常技术性的话题,我们以后的讨论都会集中在这个层次的讨论,所以在以后的讨论中我们不再考虑具体的业务需求之类的问题。
    刚刚提交就有一位朋友不满了,软件工艺中的需求和业务需求考虑的着眼点不同,但是评判的标准都是一致的就是:平衡。但是解决的问题是不一样的,一个解决的是业务问题,一个解决的是技术问题。在极端情况下,需求文档一个字都不改,整个项目重做的情况也不是不可能发生。
    今天就到这里了,明天继续。本来是准备讨论类、接口的设计的,结果一激动就跑题了,后面改正,姑且当作小品文,随便看一看罢了,明天补上,望海涵。