起码要有两个可选的解决方案
2015-08-09 18:59
169 查看
作者:蒂莫西·海伊
你可能听过这条规矩。如果你是一名经验丰富的架构师,你肯定知道这点:对于某个问题,如果只考虑了一个解决方案,那你就有麻烦了。
软件架构是要在所有给定的约束条件下,寻找到解决问题的最佳方案。期望第一个解决方案即满足全部的需求和约束,几乎是不可能的。一般来说,必须根据优先级次序进行权衡,选择最符合需求的解决方案。
如果对手头的问题只有一个解决方案,这意味着将没有进行折衷权衡的余地。这个唯一的解决方案很可无法令系统投资方满意。这也意味着,如果由于商业环境瞬息万变而导致优先级次序发生转变,系统很可能没有空间来适应新的需求。
这种情况即使有——也绝少是真地由于缺乏可选方案而造成的,它更可能是架构师缺乏特定问题域的经验所致。如果事实确是如此,别费力气,赶紧让更有经验的架构师助你一臂之力。
如果依照习设计架构,这个问题将更不容易为人所察觉。架构师也许己熟稔于某种单一风格的架构(例如,三层或多层的客户机-服务器系统),却没有充分认识它不适用的情。如果发现自己在还没有对比其它方法之前,就己经想当然的给出了解决方案,那么,停下来,向后退一步,问问自己,是否能够想出另一种方法。如果不能,你可以需要帮助了。
我的一个朋友,曾是一家成长中的小型互联网创业公司的技术负责人。随着用户群扩大,他们系统的负载与日俱增,性能也每况愈下,公司开始渐渐失去来之不易的用户。
于是,老板问他,“我们该如何提高系统性能?”
我的朋友回答:“买一台更大的机器!”
“还有什么其他可做的?”
“嗯……据我所知,只有这样了。”
我的朋友被当场解雇了。当然,这个老板是正确的。
你可能听过这条规矩。如果你是一名经验丰富的架构师,你肯定知道这点:对于某个问题,如果只考虑了一个解决方案,那你就有麻烦了。
软件架构是要在所有给定的约束条件下,寻找到解决问题的最佳方案。期望第一个解决方案即满足全部的需求和约束,几乎是不可能的。一般来说,必须根据优先级次序进行权衡,选择最符合需求的解决方案。
如果对手头的问题只有一个解决方案,这意味着将没有进行折衷权衡的余地。这个唯一的解决方案很可无法令系统投资方满意。这也意味着,如果由于商业环境瞬息万变而导致优先级次序发生转变,系统很可能没有空间来适应新的需求。
这种情况即使有——也绝少是真地由于缺乏可选方案而造成的,它更可能是架构师缺乏特定问题域的经验所致。如果事实确是如此,别费力气,赶紧让更有经验的架构师助你一臂之力。
如果依照习设计架构,这个问题将更不容易为人所察觉。架构师也许己熟稔于某种单一风格的架构(例如,三层或多层的客户机-服务器系统),却没有充分认识它不适用的情。如果发现自己在还没有对比其它方法之前,就己经想当然的给出了解决方案,那么,停下来,向后退一步,问问自己,是否能够想出另一种方法。如果不能,你可以需要帮助了。
我的一个朋友,曾是一家成长中的小型互联网创业公司的技术负责人。随着用户群扩大,他们系统的负载与日俱增,性能也每况愈下,公司开始渐渐失去来之不易的用户。
于是,老板问他,“我们该如何提高系统性能?”
我的朋友回答:“买一台更大的机器!”
“还有什么其他可做的?”
“嗯……据我所知,只有这样了。”
我的朋友被当场解雇了。当然,这个老板是正确的。
相关文章推荐
- solr 4.4添加索引是新手容易遇到的有关问题
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- 分享一下MinGW和cygwin
- [BZOJ1618] [Usaco2008 Nov]Buying Hay 购买干草
- 【网络流】 POJ 2125 Destroying The Graph
- Java注解之常用注解
- 【整理】C语言中常见的字符串操作函数
- 在 Exchange 服务器上的操作系统中的防病毒软件
- 中值滤波去除噪点项目设计书
- 并查集算法介绍
- GestureDetector你需要知道的一点
- Java程序设计之链表结构
- crontab 详解
- Java集合类总结
- Java基础学习总结---------IO概述(1)
- Qt杂记
- Leetcode# 112 Path Sum
- Jena API 使用介绍
- rman备份脚本
- linux调优工具使用