取舍的艺术

作者:马克·理查兹(MarkRichards)

架构师应该明白鱼和熊掌不可兼得的道理。世上不存在十全十美的设计——既具有高性能,又具有高可用性;既高度安全,又高度抽象。有一个真实的历史事件,软件架构师应该烂熟于心,在与客户或同事沟通时能派上用场。这就是瓦萨号(Vasa)战舰的故事。

17世纪20年代,瑞典和波兰之间爆发战争。瑞典国王迫于战争经费的压力,急欲速战速决,他下令建造一艘名为瓦萨号的战舰。这可不是一般的战舰,其设计要求绝非同时代战舰可比:舰长超过60米,两个炮台上配备64门舰炮,可以将300名士兵从水路安全运送到波兰。时间紧迫,资金紧张(类似的情况架构师可能都经历过),而且设计师从未设计过这种规模的战舰(他擅长设计单炮台的小舰艇),只能凭经验和猜测着手设计。最终,工匠们按照设计说明建造了战舰。下水那天,瓦萨号在隆重的仪式中驶入海港,鸣完礼炮后,径直沉入了海底。

瓦萨号的问题很明显。参观过17、18世纪大型战舰的人都知道,甲板上空间有限而且危险,作战时情况更糟。建造一艘既能作战又能运兵的战舰是一个巨大的错误。设计师为了满足国王的心愿,设计了一艘性能失衡、不堪一击的战舰。

软件架构师应该从这个故事中吸取教训,避免在工作中重蹈覆辙。妄想实现所有需求(像瓦萨号一样),只会产生脆弱的、一无是入的架构。举个取舍的列子,如果要求面向服务的架构(SOA)实现点对点解决方案(point-to-point solution),你就不得不放弃SOA方法中的各种抽象层,设计出像意大利面条一样盘根错节的架构。有许多工具可以帮助架构师做出取舍,最流行的是架构权衡分析方法(Architecture Tradeoff Analysis Method, ATAM)和成本收益分析方法(CostBenefit Analysis Method, CBAM)。如果想了解这两个工具的详细信息,可以访问软件工程协会(Software Engineering Institute)的网页:http://www.sei.cmu.edu/architecture/ata_method.html和http://www.sei.cmu.edu/architecture/cbam.html。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值