zoukankan      html  css  js  c++  java
  • 架构整洁之道读书笔记(一)

    《架构整洁之道》,英文原名《Clean Architecture》,作者Robert. C. Marin(Uncle Bob)。中国亚马逊上该书英文版亦被冠名为《软件架构与设计匠艺》。

    《Clean Architecture》是作者“Clean”系列中的一本,另两本是《Clean Code》和《Clean Coder》。

    架构设计的目标

    作者提出应该使用软件开发所耗费的精力(effort)来度量软件设计的质量。软件架构的目标就是:使用最少的人力资源来创建和维护所需要的软件。

    在这里作者没有使用“cost”(成本),而是用了“effort”一词。我的理解是,effort所涵盖的面比cost要广。虽然所有投入软件开发的有形资源最终都可以使用货币成本来度量,但还是有些无形资源是无法用金钱来度量的。比如软件企业和软件开发者的声誉、软件开发团队的士气、项目参与者的健康和家庭幸福……

    更容易、更快速地进行变更的能力;意味着更少的缺陷;最小化的精力投入;最大化的功能和灵活性;这些都意味着更少的人力资源投入,从而等于更好的软件质量。

    更好的质量意味着更低的成本;更低的成本就是更好的质量的体现。

    The only way to go fast, is to go well.(走的快的唯一途径就是走得稳。或者:欲速则不达。)
    Making messes SLOWER than staying clean.

    软件的价值

    软件的价值从两个方面体现出来。一个是软件的行为,另一个是软件的结构。

    软件的行为表现在控制机器满足用户的需求,而最重要的两个需求就是“挣钱”和“省钱”。开发者一般使用“功能规格说明书”或者“需求文档”来记录用户对软件行为方面的需求。

    软件在结构方面——也就是软件架构——的价值体现在更容易地改变机器的行为。这也是软件一词中“软”的含义所在。

    那么行为方面的价值和结构方面的价值哪个更重要呢?凭直觉来说,应该是满足客户的功能性需求更重要。但实际并非如此。

    一个能满足功能性需求、但是很难变化的系统,意味着当需求发生变化时,需要非常大的投入才能实现新的、或者变化过的功能。极端情况下可能很快在新需求面前变得无用。

    而一个虽然还没有完全满足功能性需求,但是很灵活、很容易修改的系统,并不需要很多投入就可以使其变得满足客户的需要。

    因此,当我们面对的是需求随时可能变化的环境时,设计一个好的软件架构、使系统更加灵活、易于修改,便比只满足当前的功能性需求更重要。

    那么需求有没有可能不变呢?曾经有不少人试图控制软件需求变更,例如通过大量的前期评审尽可能减少后期的需求变更,但现在的软件开发者已经认识到,需求变更非但是不可避免的,能够迅速修改系统行为应对外部环境变化提出的变更需求才是“软”件系统的价值所在。

    软件结构方面的问题虽然很重要,但一般是不紧急的;而功能方面的需求可能重要也可能不重要,但常常显得很紧急。因此掌握这两方面的平衡便是软件开发者——特别是架构师——的责任。

    设计一个好的软件架构是架构师的职责。相对于软件的功能特性来说,架构师要更加专注于软件的结构,并且在必要的时候还需要“Fight”,要勇于“捍卫”好的软件结构的设计,避免来自各方面的要求匆忙实现软件功能的压力。

    总结

    以上是本书“介绍”部分的主要内容。本书的主要内容就是讲解如何设计一个“好的”,也就是能投入最少的精力实现客户需求的软件架构,从而构建一个更容易变化、更少缺陷、更多功能和灵活性的软件系统。

    借鉴:https://zhuanlan.zhihu.com/p/52610428

  • 相关阅读:
    contes配置nginx教程
    jquery 图片放大镜,草稿版
    VUE学习第四次
    VUE学习 第三次
    ryu
    ovs & ryu & mininet
    centos安装mininet 和卸载
    端口镜像
    数据中心网络监控小结
    5、Kafka生产过程分析
  • 原文地址:https://www.cnblogs.com/1061321925wu/p/13053297.html
Copyright © 2011-2022 走看看