潜鱼在渊

Concentrating on Architectures.

posts - 77, comments - 309, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

软件架构:决策与选择

Posted on 2008-09-18 22:54 非鱼 阅读(2080) 评论(4)  编辑  收藏 所属分类: 面向对象设计
架构师最重要的工作是思考。思考导致决策,或者选择。

为决策而思考

架构师思考的出发点是成就受益人的利益,目的就是为了最终做出决策。在开始的时候,往往会有一些明显的途径,也会有一些隐含的途径。架构师要根据所掌握的信息,结合自身的知识、经验,尽可能找出所有的途径,思考哪条途径是最合适的。在这个过程中,有一些途径会很快被排除。排除一条途径的依据,首先是软件的价值,其次是软件的假设和前提。良好的实践是记录这些思考过程中被排除的途径,特别是对于经验不是特别丰富的架构师来说,这非常重要。

需要特别提出的是,不要因为不精通某项技术而排除可行的途径。因为一般情况下,技术对软件价值的影响是次要的。比如,当你在JSF和struts之间摇摆的时候,把这个问题提出来讨论,是更好的做法。

决策需要依据

决策是合理的(Reasonable)选择。架构师需要考虑各种选择的优缺点,再根据实际情况,找到支持决策的依据。因为个人及项目等多方面的原因,这些依据也可能是不充分的。但这不要紧,最重要的是,决策要有依据,这就够了。在思考和讨论的过程中,对于反面的意见(不支持决策的依据),也要充分考虑和记录,因为不知道什么时候,这些因素会因环境、认识的变化而由假成真,如果没有相关的记录,你会为此而失去一次宝贵的成长机会。:)

有时候也需要选择

人的智力是有限的,眼界也是有限的。有时候你会发现几条路径很难说哪个更优一点。这时候你面临的就是选择,像掷骰子一样。这是架构设计中风险最大的地方。墨菲定律说:“凡事只要有可能出错,那就一定会出错。”(Anything that can go wrong will go wrong.)把这个选择记录下来,只要可能,就要来重新评价。

如果没有选择的余地

任何时候,如果你感觉只有一种选择(或者你毫无理由的排除了其他选择),这可能说明:

1. 你的知识还不够,过早进入架构设计的领域,对你不是一件好事;或者

2. 你凭借感觉做决策,实在不适合做架构师这样的工作。




by 非鱼。Technorati 标签: , ,

评论

# re: 软件架构:决策与选择  回复  更多评论   

2008-09-19 08:22 by Jack.Wang
说的很好。
决策方面都点到了,但没展开,希望看到点决策方法技巧和您个人经验的分享。
相信笔者思维和经验都很强。

# re: 软件架构:决策与选择  回复  更多评论   

2008-09-19 11:21 by duan
说的很好,很喜欢这种思想的传授。

# re: 软件架构:决策与选择  回复  更多评论   

2008-09-19 11:45 by leekiang
知识不够,用忽悠来弥补。
最害怕那些连线程、事务、并发,IO等都搞不清楚的架构师了,偏偏这样的人最会忽悠。

# re: 软件架构:决策与选择  回复  更多评论   

2008-09-26 13:26 by xu_zh_h
说的真切

只有注册用户登录后才能发表评论。


网站导航: