早期决策对系统的最终形态影响最大。最初的决策最难以更改。这些关于系统边界和子系统划分的早期决策,渗入到了团队结构、经费分配、程序管理结构甚至工时表中。团队分配是架构的第一稿(参见7.2节知识框)。极具讽刺意味的是,这些早期决策也是在信息获取最少的情况下做出的。这就是说,你的团队在这个时候对软件的最终结构最无知,但你必须要做出某些不可更改的决策。 即使是“敏捷”项目 ,也最好有远见地做出决策。为了选择最健壮的设计,设计者预测未来的时候似乎必须有决断力。由于不同的选择通常会有相似的实现成本,却带来完全不同的生命周期开销,因而考虑每种决策对可用性、能力和灵活性的影响就显得格外重要。我将结合较好和较差方法的具体例子,阐述各种设计选择的效果 。这些例子都来自于我接手过的真实系统,大多数都曾让我牺牲了宝贵的睡眠。