刻戒于碑,铸法于鼎

软件特性、质量属性。

将两个元素以某种方式连接在一起,就形成了结构。

module

component-connector 就是我们经常讲的系统交叉点

allocation 就涉及到我们的部署设计

每一本书都会讲到利益相关者,也就是 stakeholder。

主动撰写设计决策,承担设计职责。

软件之所以叫软件,是因为它灵活而易于变动。架构是软件里硬的部分,为变动提供了章法,也制造了约束-否则我们不用经常“对架构产生冲击”,而需要打破架构。

设计原则:

  • 以人为本(能落地能产生价值的架构才是真的好架构)
  • 推迟决策
  • 善于借鉴
  • 化虚为实

推迟决策不是推迟大的设计决策,要推迟的是细枝末节的决策。不要陷入舍本逐末的优化中,导致项目无法受控。

忽视前人的设计,是最低效的设计方法之一。所以寻找架构风格是很重要的。

设计思维模式:

  • 理解:换位思考
  • 探索:尝试各种结构组合,找到最能提升目标质量属性的那种组合。-大多数情况下,是我们手头最简单最现成的解决方案。
  • 展示:用图、表、模型、原型来展示,探讨。原型应该尽量具有交互性,可以直接和客户评审。
  • 评估:评估到底我们要做什么东西

软件只有发布状态,没有完成状态。

如何关注用户价值,先理清用户的关系。

加上约束,可以简化问题。过多的约束,会增加设计难度。

一定要区分好,外部约束和自己做的决策。外部的约束不可变动,不能讨价还价。自己的设计决策有时候反而会让自己束手束脚。识别出潜在的软、硬的约束,是一个很重要的软能力

所有的架构都是设计,所以设计的下限是要保住的;不是所有的设计都是架构,所以不要盲目地随时随地地进行高成本的设计