架构设计中设计思维的四条原则

Posted 记在这里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构设计中设计思维的四条原则相关的知识,希望对你有一定的参考价值。

    与其说设计思维是一种流程,不如说它是从他人的角度思考总是及其解决方案的一种方式。设计思维有基本的规则,在《Design Thinking: Understand - Improve - Apply》一书中,Christoph Meinel 和 Larry Leifer提出了四条基本的设计原则。这些原则不公适用于软件架构设计,也适用于程序设计、交互设计,以及所有设计工作。下面是这四条设计原则:

  • 以人为本(human):设计的本质是社交。

  • 推迟决策(ambiguity):推迟不确定的决策。

  • 善于借鉴(redesign):所有设计都是在已有设计基础上的重新设计和调整创新。

  • 化虚为实(tangibility):让想法具体化,有形化,以便于沟通和交流。



  我们使用这4个单词在首字母(HART)来记忆这些原则。


1. 以人为本(Design for Humans)

    设计本身就是黑线人开展的工作。软件既为人所用,也依靠人开发。架构设计中的每个决策都以某种方式让人们受益。每个设计决策也都必须与他人分享并获得理解。

    架构师必须有同理心,能够理解利益相关方的要求。我们要关心的不公是最终用户,还有最终用户要帮助的人、编写代码的程序员、测试人员、密切关注开发进度的项目经理。设计软件系统需要与团队成员合作。请尊重他们,倾听他们的心声,理解wbwur意图,这才是以人为本的设计方法。

    以人为本的原则时刻提醒我们,架构师离不开团队,必须与团队一起设计架构。软件开发是一项频繁的社交活动。身居象牙塔,孤立于团队之外的架构师设计出来的只能是“空中楼阁”。架构师应该融入团队,成为的一部分。切断架构师与团队成员的联系,架构将无法发挥它应用的作用。

    尊重所有直接和间接与架构有关的人,换位思考,理解他们的感受,你才能成为出色的架构师、沟通者、领导者。



2. 推迟决策(Preserve Ambiguity)

    工程上的“模棱两可”是危险的,设计决策必须做到准确、清晰。模糊的需求、设计、承诺会撕掉项目。因此,不到条件成熟的最后一刻,不要关键做出最终的设计决策。

    软件架构的目标是安排系统结构,提升期望的质量属性。Ruth Malan 和 Dana Bredemeyer 在文章《Less is More with Minimalist Architecture》中建设设计极简高义架构,极简主义架构只关心高优先级的质量属性,只考虑如何在提升这些质量忏悔的同时尽量降低风险。除此以外的其他设计决策都可以悬置,等时机成熟后再决定。

    极简主义架构要求我们尽可能推迟那种一旦决定就难以更忙的设计决策。通常,那些不直接影响质量属性和软件交付进度的设计决策都是些细枝末节,对整体架构影响不大。这些设计决策完全可能放到架构设计之外,留给后来的设计人员决定。

    推迟决策可以让我们更从容地应对软件开发大环境的变化。


3. 善于借鉴(Design Is Redesign)

    Christopher Alexander 等人在《 A Pattern Language: Towns, Buildings, Construction》一书中总结了253个已有较好解决方案的土木工程问题,涵盖了建筑材料、社区组织、建筑结构各个方面。如果你曾在春日的清晨,流连于路边咖啡店,品尝香浓的咖啡,那都要感谢Christopher Alexander 将路边咖啡店的解决方案记录在书中,供后人借鉴。

    善于借鉴原则鼓励我们留心琢磨熟悉的事物----研究以往的设计、探索其中的规律。随着人们开发的软件越来越多,我们在软件设计方面沉淀的知识也越来越多。你所面临的问题,其他团队可能已经遇到过,甚至有可借鉴的解决方案。你完全可以在别人的基础上开始自己的设计。又或许有人已经搭建了框架,正好可以解决你的问题。

    设计软件架构之前,我们应该多花点时间研究已有的设计,而不是凭空创造一个新的出来。忽视前人的经验是最低效的架构设计方法之一。


4. 化虛为实(Make the Architecture Tangible)

    虽然架构中的结构以代码形式存在,但代码不够直观,不适合用来讨论质量属性、组件、设计原理、决策结果之类的问题。讲解架构设计,只展示代码是行不通的,必须用其他方式把架构呈现出来。

    呈现架构的方式很多,可以画出来,可以制作原型或简单的模型,可以演示部分系统的控制流程,甚至还可以打比方。这些方式能从不同的角度展示软件的结构和质量属性,方便他人理解架构设计。

    化虛为实以人为本密切相关。人们只有通过感性的认识才能理解和消化架构。分享架构的唯一方式是把它具体地呈现出来。

    HART原则是我们设计架构的基础准则和指导方针。它可以解释我们为什么要按照这样一种方式开发软件。

以上是关于架构设计中设计思维的四条原则的主要内容,如果未能解决你的问题,请参考以下文章

成为架构师课程系列架构设计中的核心思维方法

如何在 SQL Server 数据库中设计用户/角色架构?

SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则

JAVA6中设计原则和23种设计模式

解决方案架构设计实践的方法模型与思维

以第一性原理思维模型解读tensorFlow 2.0的架构设计