作者:蒂莫西·海伊(TimothyHigh)
在软件开发社区,对于文档尤其是关于软件自身设计的文档的价值,争论颇多。分歧一般集中于两处,一处是“详细的前期设计(big upform design)”的有效价值,另一处则是使设计文档和不断变化的代码库保持同步的难易程度。
记录软件架构决策理由的文档,长期有用,又无须为之付出过多维护精力,具有很高的投资回报价值。正如马克·理查兹(MarkRichards)在《取舍的艺术》一篇(译注1)中所说的,定义软件架构,就是要在质量属性、成本、时间以及其他各种因素之间,做出正确的权衡。此份文档应能向你自己、经理人员、开发人员及软件的其他利益相关者,清楚阐明选择某种解决方案,而非另外一种的原因,包括其中做出的权衡。有没有打着减少硬件和许可费用的幌子,牺牲了系统的水平伸缩性(horizontal scalability)?虽然缩短了数据交换的整体响应时间,但数据加密是否足够安全?
根据项目的不同,可以灵活选择合适的文档格式记录架构决策的方方面面,格式可以是文本、维基(wiki)或博客(blog)形式的速记备忘录,也可以使用更为正式的模板。无论使用何种形式和格式,些文档都应回答以下基本问题:“我们做了什么决策?”“为什么这样决策?”有一个稍次要的问题,经常有人会问到&