作者:mindwind
"架构从来不是一次性的工作“
------------------------在真正把一个需求、一种想法变成代码之前,有一个过程称之为设计。一些经验丰富的程序员执行这个设计过程,我们称其为架构,与之对应的程序员身份也就成了架构师。架构始于需求过程之后,描述系统的抽象构成,在系统抽象构成与现实的物理技术世界之间建立映射。建立映射的过程其实就是我们常经历的技术选型过程。在我过去经历的大部分 java web 项目中,技术选型基本就是框架的选择,大部分项目都使用了一些主流的开源框架来实现。java 中各种开源通用框架的成熟度和使用广泛度都很高,看上去让选择变的简单,架构的技术选型变得更容易了。其实不然,正是因为各种流行框架的通用和功能覆盖广,选择仅仅是被后移了,焦点不在用什么而是怎么用。技术选型的落地,才是后续物理设计的开始。物理设计从结构开始,包括三个方面:模块结构、数据结构、代码结构。模块结构是为分治与协作而设计。模块首先表达了系统抽象构成,一个系统如果整体过于复杂,就通过模块划分来达到分治。复杂的系统将被拆分为边界清晰的模块,单一模块的复杂度将控制在可接受的范围内。不同的模块可以分由不同的团队成员来完成,只需界定好模块之间的交互关系。Linus Torvalds 说:“好程序员关心数据结构”。数据结构是为功能实现而设计,这看起来像是开发过程层面才应考虑的事情?其实不然,数据结构直接影响代码实现,好的数据结构产生更少更好的代码。如果不在架构过程去考虑,而推后到开发过程,必然失去全局性和整体性。代码结构是为维护和演进而设计。不关心代码设计的架构,很容易成为空中楼阁。过去经历的很多项目,架构的工作只做到模块层面,但真正的系统实现出来都与架构的愿景相去甚远。架构文档上清晰的模块边界,交互过程,反应到代码上都变成了一团乱麻,剪不断理还乱。软件系统不会随着时间推移而耗损腐坏,它只会因为变化而腐坏。一开始清晰整洁的架构和实现随着需求的变化而不断变得浑浊、混乱。借用一个物理学的术语“熵”,它表达体系的混乱程度,那么软件系统的熵总是随着每次变化而变得更高。模块清晰、结构良好、代码整洁无不是为控制“熵”这一目标,需求变化带来的变动总是带来软件系统“熵”值的增长。软件系统熵有个临界值,当达到并超过临界值后,软件系统的生命也基本到头了。这时我们爱采取的一个行动就是干脆推倒重来吧,重写一个新的吧。下图示例了软件系统熵值的生命周期变化。
架构始于系统生命之初,并伴随系统生命周期全程。
每次需求变化带来的变动都应进行一次或大或小的重新架构过程。
架构的焦点在于控制软件系统变动时熵值的变化。
架构的本质让我想起一句软件开发箴言:“少写代码”。
更少的代码,更少的熵。
分享到:
相关推荐
重点关注云架构实践与解析、大数据架构及应用和这些技术场景下的自动化运维等焦点话题 2. 软件定义IT基础架构:IT基础架构优化的最新定义 邀请资深专家分享架构设计与优化方面的实践经验,包括软件定义IT、高性能高...
本文档全面与系统地表述了图书杂志采购和借阅系统的构架,并通过使用多种视图来从不同角度描述本系统的各个主要方面,以满足图书杂志采购和借阅系统的相关涉众(客户、设计人员等)对本系统的不同关注焦点和需求。...
架构创新或将成为FPGA业竞争焦点.pdf
焦点小组 271 用户研究会议 272 访谈 272 卡片分类法 273 用户测试 277 研究的保卫战 278 克服研究阻力 279 本章回顾 280 第12章策略 283 什么是信息架构策略? 284 遭到抨击的策略 285 从研究到策略 287 策略的开发...
《信息架构:超越Web设计(第4版)(全彩)》 的前三个版本都是信息架构领域的开山著作。其中描述了信息组织的普遍和永恒原则,这一原则也适用于不断增长的移动世界。在第4版中,作者运用大量最新的插图和例子为这些...
各技术焦点,均由极具代表性的领域专家或实践先行者撰文深度剖析,共同组成“高可用”的全局视野与领先高度,内容包括精华案例、分布式原理、电商架构等热门专题,及云计算、容器、运维、大数据、安全等重点方向。...
重点关注云架构实践与解析、大数据架构及应用和这些技术场景下的自动化运维等焦点话题 2. 软件定义IT基础架构:IT基础架构优化的最新定义 邀请资深专家分享架构设计与优化方面的实践经验,包括软件定义IT、高性能高...
“5G商用,承载先行”,随着5G诸多新特性的引入和5G试验及预商用计划的逐步推进,面向5G的承载架构与多样化的技术方案更是成为业界普遍关注的焦点。本白皮书基于5G承载需求,结合运营商承载网络现状和主要特性等,...
各技术焦点,均由极具代表性的领域专家或实践先行者撰文深度剖析,共同组成“高可用”的全局视野与领先高度,内容包括精华案例、分布式原理、电商架构等热门专题,及云计算、容器、运维、大数据、安全等重点方向。...
本文档全面与系统地表述了图书杂志采购和借阅系统的构架,并通过使用多种视图来从不同角度描述本系统的各个主要方面,以满足图书杂志采购和借阅系统的相关涉众(客户、设计人员等)对本系统的不同关注焦点和需求。...
5G工业互联网是当前我国5G和工业互联网发展中的热点与焦点,工业互联网和5G中都引入了边缘计算技术,但是着眼点有所不同。分析了基于5G边缘计算的工业互联网应用和发展情况,总结了工业互联网边缘计算技术架构,在此...
如何借助多样、全面的数据,让架构师更简单、高效地定位问题、分析问题、解决问题,已经成为业内的一个技术焦点。 1、阿里十年链路追踪与应用可观测实战 2、分布式链路追踪在字节跳动的实践 3、如何设计出好用的...
项目名称:Sailing in Sun(阳光下远航) ...焦点在于项目的设计和架构。同时,SiS的另外一个主要作 用是作为一个有详细文档,详细注释,代码规范的中文开源项目, 提供给初学者学习(这在国外也很少见)。
本文档全面与系统地表述目标软件系统的构架,并通过使用多种视图来从不同角度描述系统的各个主要方面,以满足相关涉众(客户、设计人员等)对目标系统的不同关注焦点。 本文档记录并表述了架构师对系统构架方面做出...
计算机网络安全服务器的网络架构 计算机网络安全服务器的网络架构 如何确保服务器的安全性,保障服务器上相关应用服务进程的稳定性已经成为人 们关注的焦点。 计算机网络安全服务器的网络架构【1】 摘要:如何确保...
社交电商的本质、模式及竞争焦点分析.pdf
焦点阅读是一种深度学习——从《海底世界》的教学说开去.pdf
巧设问题驱动 激发深度学习——以“抛物线焦点弦性质探究”为例.pdf
本期,我们将带大家了解该服务的打造团队,以及这个基于LNMP的企业级SaaS平台架构与调优。对比IaaS和PaaS,SaaS得到的关注显然要少一些。究其根本,不仅因为SaaS关注的是功能方面的探索,更偏向于某个领域或层面的...
基于Hibernate的EJB架构的研究,李雪生,杨春金,随着J2EE技术在企业级应用程序中越来越广泛的使用,对J2EE技术的研究越来越深入,作为J2EE核心的EJB技术是争论的焦点,主要是实现持久