`
BradyZhu
  • 浏览: 249112 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

架构的焦点

 
阅读更多

作者:mindwind


"架构从来不是一次性的工作“


------------------------

在真正把一个需求、一种想法变成代码之前,有一个过程称之为设计。
一些经验丰富的程序员执行这个设计过程,我们称其为架构,与之对应的程序员身份也就成了架构师。


架构始于需求过程之后,描述系统的抽象构成,在系统抽象构成与现实的物理技术世界之间建立映射。
建立映射的过程其实就是我们常经历的技术选型过程。
在我过去经历的大部分 java web 项目中,技术选型基本就是框架的选择,大部分项目都使用了一些主流的开源框架来实现。
java 中各种开源通用框架的成熟度和使用广泛度都很高,看上去让选择变的简单,架构的技术选型变得更容易了。
其实不然,正是因为各种流行框架的通用和功能覆盖广,选择仅仅是被后移了,焦点不在用什么而是怎么用。


技术选型的落地,才是后续物理设计的开始。
物理设计从结构开始,包括三个方面:模块结构、数据结构、代码结构。
模块结构是为分治与协作而设计。
模块首先表达了系统抽象构成,一个系统如果整体过于复杂,就通过模块划分来达到分治。
复杂的系统将被拆分为边界清晰的模块,单一模块的复杂度将控制在可接受的范围内。
不同的模块可以分由不同的团队成员来完成,只需界定好模块之间的交互关系。


Linus Torvalds 说:“好程序员关心数据结构”。
数据结构是为功能实现而设计,这看起来像是开发过程层面才应考虑的事情?
其实不然,数据结构直接影响代码实现,好的数据结构产生更少更好的代码。
如果不在架构过程去考虑,而推后到开发过程,必然失去全局性和整体性。


代码结构是为维护和演进而设计。
不关心代码设计的架构,很容易成为空中楼阁。
过去经历的很多项目,架构的工作只做到模块层面,但真正的系统实现出来都与架构的愿景相去甚远。
架构文档上清晰的模块边界,交互过程,反应到代码上都变成了一团乱麻,剪不断理还乱。


软件系统不会随着时间推移而耗损腐坏,它只会因为变化而腐坏。
一开始清晰整洁的架构和实现随着需求的变化而不断变得浑浊、混乱。
借用一个物理学的术语“熵”,它表达体系的混乱程度,那么软件系统的熵总是随着每次变化而变得更高。
模块清晰、结构良好、代码整洁无不是为控制“熵”这一目标,需求变化带来的变动总是带来软件系统“熵”值的增长。
软件系统熵有个临界值,当达到并超过临界值后,软件系统的生命也基本到头了。
这时我们爱采取的一个行动就是干脆推倒重来吧,重写一个新的吧。

下图示例了软件系统熵值的生命周期变化。


架构始于系统生命之初,并伴随系统生命周期全程。
每次需求变化带来的变动都应进行一次或大或小的重新架构过程。
架构的焦点在于控制软件系统变动时熵值的变化。
架构的本质让我想起一句软件开发箴言:“少写代码”。
更少的代码,更少的熵。

分享到:
评论

相关推荐

    2014中国系统架构师大会ppt_part1

    重点关注云架构实践与解析、大数据架构及应用和这些技术场景下的自动化运维等焦点话题 2. 软件定义IT基础架构:IT基础架构优化的最新定义 邀请资深专家分享架构设计与优化方面的实践经验,包括软件定义IT、高性能高...

    软件架构设计说明书.docx

    本文档全面与系统地表述了图书杂志采购和借阅系统的构架,并通过使用多种视图来从不同角度描述本系统的各个主要方面,以满足图书杂志采购和借阅系统的相关涉众(客户、设计人员等)对本系统的不同关注焦点和需求。...

    架构创新或将成为FPGA业竞争焦点.pdf

    架构创新或将成为FPGA业竞争焦点.pdf

    信息架构 超越Web设计(第4版).pdf

    焦点小组 271 用户研究会议 272 访谈 272 卡片分类法 273 用户测试 277 研究的保卫战 278 克服研究阻力 279 本章回顾 280 第12章策略 283 什么是信息架构策略? 284 遭到抨击的策略 285 从研究到策略 287 策略的开发...

    信息架构:超越Web设计(第4版)(全彩).[美]Louis Rosenfeld(带详细书签) PDF 下载 高清 完整版

    《信息架构:超越Web设计(第4版)(全彩)》 的前三个版本都是信息架构领域的开山著作。其中描述了信息组织的普遍和永恒原则,这一原则也适用于不断增长的移动世界。在第4版中,作者运用大量最新的插图和例子为这些...

    高可用架构 (第1卷).part2

    各技术焦点,均由极具代表性的领域专家或实践先行者撰文深度剖析,共同组成“高可用”的全局视野与领先高度,内容包括精华案例、分布式原理、电商架构等热门专题,及云计算、容器、运维、大数据、安全等重点方向。...

    2014中国系统架构师大会ppt_part2

    重点关注云架构实践与解析、大数据架构及应用和这些技术场景下的自动化运维等焦点话题 2. 软件定义IT基础架构:IT基础架构优化的最新定义 邀请资深专家分享架构设计与优化方面的实践经验,包括软件定义IT、高性能高...

    5G承载网络架构和技术方案白皮书.pdf.pdf

    “5G商用,承载先行”,随着5G诸多新特性的引入和5G试验及预商用计划的逐步推进,面向5G的承载架构与多样化的技术方案更是成为业界普遍关注的焦点。本白皮书基于5G承载需求,结合运营商承载网络现状和主要特性等,...

    高可用架构 (第1卷).part1

    各技术焦点,均由极具代表性的领域专家或实践先行者撰文深度剖析,共同组成“高可用”的全局视野与领先高度,内容包括精华案例、分布式原理、电商架构等热门专题,及云计算、容器、运维、大数据、安全等重点方向。...

    图书系统软件架构设计说明书

    本文档全面与系统地表述了图书杂志采购和借阅系统的构架,并通过使用多种视图来从不同角度描述本系统的各个主要方面,以满足图书杂志采购和借阅系统的相关涉众(客户、设计人员等)对本系统的不同关注焦点和需求。...

    5G工业互联网的边缘计算技术架构与应用

    5G工业互联网是当前我国5G和工业互联网发展中的热点与焦点,工业互联网和5G中都引入了边缘计算技术,但是着眼点有所不同。分析了基于5G边缘计算的工业互联网应用和发展情况,总结了工业互联网边缘计算技术架构,在此...

    2021字节跳动基础架构可观测性论坛(DataFunTalk 2021)PPT汇总.zip

    如何借助多样、全面的数据,让架构师更简单、高效地定位问题、分析问题、解决问题,已经成为业内的一个技术焦点。 1、阿里十年链路追踪与应用可观测实战 2、分布式链路追踪在字节跳动的实践 3、如何设计出好用的...

    [SiS预览版]用于讨论大型网站架构

    项目名称:Sailing in Sun(阳光下远航) ...焦点在于项目的设计和架构。同时,SiS的另外一个主要作 用是作为一个有详细文档,详细注释,代码规范的中文开源项目, 提供给初学者学习(这在国外也很少见)。

    软件项目架构设计说明书.doc

    本文档全面与系统地表述目标软件系统的构架,并通过使用多种视图来从不同角度描述系统的各个主要方面,以满足相关涉众(客户、设计人员等)对目标系统的不同关注焦点。 本文档记录并表述了架构师对系统构架方面做出...

    计算机网络安全服务器的网络架构.doc

    计算机网络安全服务器的网络架构 计算机网络安全服务器的网络架构 如何确保服务器的安全性,保障服务器上相关应用服务进程的稳定性已经成为人 们关注的焦点。 计算机网络安全服务器的网络架构【1】 摘要:如何确保...

    社交电商的本质、模式及竞争焦点分析.pdf

    社交电商的本质、模式及竞争焦点分析.pdf

    焦点阅读是一种深度学习——从《海底世界》的教学说开去.pdf

    焦点阅读是一种深度学习——从《海底世界》的教学说开去.pdf

    巧设问题驱动 激发深度学习——以“抛物线焦点弦性质探究”为例.pdf

    巧设问题驱动 激发深度学习——以“抛物线焦点弦性质探究”为例.pdf

    企业QQSaaS团队,谈企业级LNMP架构设计

    本期,我们将带大家了解该服务的打造团队,以及这个基于LNMP的企业级SaaS平台架构与调优。对比IaaS和PaaS,SaaS得到的关注显然要少一些。究其根本,不仅因为SaaS关注的是功能方面的探索,更偏向于某个领域或层面的...

    论文研究-基于Hibernate的EJB架构的研究 .pdf

    基于Hibernate的EJB架构的研究,李雪生,杨春金,随着J2EE技术在企业级应用程序中越来越广泛的使用,对J2EE技术的研究越来越深入,作为J2EE核心的EJB技术是争论的焦点,主要是实现持久

Global site tag (gtag.js) - Google Analytics