zoukankan      html  css  js  c++  java
  • 假期阅读笔记二

    架构之美——论架构(二)

     

          今天我阅读的是《架构之美》的第二章,主要讲的是两个系统的故事——混乱大都市和设计之城,它们属于现代软件的神话,揭示了软件架构如何影响系统的演进和开发者在项目中的参与情况。

          看到“内聚”和“耦合”两个词汇时,想必学过软件设计模式的人都不会感到陌生吧?在刚刚结束不久的考试中还出现了关于高内聚低耦合的题目。那么,关于内聚和耦合,你究竟又了解多少呢?简单地说,内聚就是从功能角度来度量模块内的联系,就是一个模块内各个元素彼此结合的紧密程度;而耦合就是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。《架构之美》中关于高内聚低耦合是这样描述的:内聚是一个测量指标,说明相关的功能如何聚集在一起,模块内的各部分作为一个整体工作得如何,内聚性是将模块粘成一个整体的胶水。弱内聚的模块是不良分解的信号,每个模块都必须具有清晰定义的角色,而不只是一堆不相关的功能。耦合是模块之间独立性的测量指标——他们之间进出“电线”的数量。在最简单的设计中,模块几乎没有什么耦合,所以彼此间的依赖关系较少。显然,模块不能够完全解耦,否则它们将根本不能够在一工作!模块之间的联系有多种方式,有的是直接的,有的是间接的。模块可以调用其他模块中函数,或被其他模块所调用。它可能使用其他模块提供的Web或设施,可能使用其他模块的数据类型,或提供某些数据让其他模块使用(可能是变量或文件)。

          花了这么大的篇章介绍高内聚和低耦合,然而高内聚低耦合的系统究竟有什么好处呢?事实上,短期来看,并没有很明显的好处,甚至短期内会影响系统的开发进度,因为高内聚低耦合的系统对开发设计人员提出了更高的要求。高内聚低耦合的好处体现在系统持续发展的过程中,高内聚低耦合的系统具有更好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发,持续的支持业务的发展,而不会成为业务发展的障碍。

          这个关于两个软件系统的简单故事当然不是软件构架的全面介绍,但已展示了架构如何对软件项目产生深远的影响。架构几乎影响所有与之相关的人和事,它决定了代码集的健康,也决定了相关领域的健康。就像一个繁荣的城市会为当地带来成功和声望,好的软件架构将帮助项目获得发展,为依赖于它的人带来成功。

          同样的,在本文的最后,将很精辟的话分享给大家:软件设计的关键品质是内聚和耦合!

  • 相关阅读:
    51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)
    51nod 1307 绳子与重物 (标记父节点更新即可)
    AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)
    AOJ GRL_1_B: Shortest Path
    AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
    【算法】prim算法(最小生成树)(与Dijkstra算法的比较)
    【算法】Dijkstra算法(单源最短路径问题)(路径还原) 邻接矩阵和邻接表实现
    【算法】Bellman-Ford算法(单源最短路径问题)(判断负圈)
    面试之二:Redis是单线程还是多线程?以及处理模型。
    面试之一:CMS收集器整理
  • 原文地址:https://www.cnblogs.com/niujunyan/p/6283442.html
Copyright © 2011-2022 走看看