zoukankan      html  css  js  c++  java
  • 架构设计的目标与衡量

    编程即设计,代码即架构。

    概述###

    架构,这个词比较神秘,以致于很多程序员望而却步,以为要什么了不得的本事。

    架构的目标是什么呢?代码,实现所需服务;架构,致力于以更小成本、更高质量地实现所需服务。架构,是兼顾质量与成本的魔法。 但架构并不研究如何实现具体服务,—— 它研究的是如何妥善安置那些实现服务的构件,管理依赖、边界和变化。

    • 如何将不变从变化中分离出来,沉淀为稳定的组件 ?如何管理组件之间的依赖 ?

    • 如何识别组件所在的边界和上下文? 如何管理各种边界和上下文 ?

    • 如何让变化更容易显露和识别 ? 如何管理多维度的变化 ?

    • 如何让业务逻辑变成可配置的易变更的插件 ?


    目标###

    小问题小设计,大问题大架构。架构听上去高大上,实际上也是为了解决问题的。不过,架构与程序不同,是在不同层次上求解问题。

    架构设计是宏观性考量,在整体上理解问题的复杂性,给出方案,并论证方案的可行性,提供一系列准则指导执行。缺乏架构设计而直接着手处理问题,会出现三个严重问题:

    • 在遇到实质性难题时,会一筹莫展或反复折腾,一次次返工,耗费大量的人力和成本;

    • 缺乏质量的考量,上线后发现无法满足用户的需要;

    • 缺乏整体的考虑,在业务发展的时候,原有实现不具扩展性,无法敏捷地支持中期和长远目标。


    因此,架构的目标主要有三个:

    • 提前识别问题的复杂性和关注点,提供可行的经过论证的解决方案;

    • 建立服务质量指标,确定设计方案可以满足指定的质量指标;

    • 规划整体设计,提供长远的可扩展性。

    要实现架构目标,先要问:要解决的问题是什么?问题的复杂性在哪里?弄清楚目标和靶点,才能一击命中。


    衡量###

    一个好的架构设计,它起什么作用呢?

    • 是不是有针对性地解决了问题固有的复杂性? 通过提供渐进稳定的领域模型,让问题理解、描述和求解都更清晰自然了;

    • 是不是令需求更快地实现,大幅降低了开发成本? 比如原来要花时间修改代码、测试、发布系统,后续只要新增配置,测试并刷新配置就搞定了;原来需要5人日,现在只需要 2人时;

    • 是不是让系统的依赖更清晰了?比如原来你调我我调你,乱成一团,现在能够清晰地看到数据流在各个模块的流通和流向、脉络;

    • 是不是更稳定了?比如原来磕磕碰碰,做百次操作就有一次失败,现在做十万次操作才有一次失败;

    • 是不是更容易操作了?比如原来需要ABCDE五步操作,现在一键无忧完成;

    • 是不是足够有弹性和灵活性,可以支撑数年的业务发展? 比如原来遇到新业务就要做许多兼容,现在只要配置一些规则、流程就能适应新业务的发展。对新增开放,对修改关闭。


    综上所述,架构设计至少有几个方面可以衡量:

    • 识别出问题的关键复杂性,建立稳定有效的领域模型。

    • 大幅降低开发与维护成本。 可以落定到人力与时间。

    • 系统脉络更清晰。可以绘制出系统模块的依赖图,通过依赖图的节点与节点链接数量来判断。

    • 更稳定。操作失败、出现各种问题的比率。

    • 更容易操作。 操作的步骤数 乘以 操作失败的比率。

    • 弹性和灵活性。 支持新业务的难度,以新增代码量和修改代码量来衡量。


  • 相关阅读:
    记CentOS-7-x86_64-DVD-1503与Windows7单硬盘双系统的安装
    NetCFSvcUtil.exe and Windows 7
    qq 通信原理(转)
    Qt通过odbc读取excel数据
    Qt中gb2312/GBK的URL编解码函数
    Qt将表格table保存为excel(odbc方式)
    Qt根据类名创建对象(元对象反射)
    亲试,Windows平台上使用Qt5.2.1编写Android
    使用正则表达式限制swing (JTextField等) 的输入
    Winform的"透明"
  • 原文地址:https://www.cnblogs.com/lovesqcc/p/10093846.html
Copyright © 2011-2022 走看看