不可不知的软件架构模式

论坛 期权论坛     
选择匿名的用户   2021-5-22 22:16   42   0
<div id="js_content">
<h2>什么是系统架构(Architecture)</h2>
<blockquote>
  <p>设计不仅仅指的是外观和感觉,它还包括运作方式。—— 史蒂夫·乔布斯</p>
</blockquote>
<p>系统架构(System Architecture),软件架构(Soft Architecture)是 IT 领域常见的名词,架构设计是软件系统构建过程中极其关键的一部分。</p>
<p>系统架构为什么重要?常见的架构模式都有哪些?跟着 【码哥字节】了解不同的架构设计所运用的不同设计哲学。</p>
<p>一起来看下常见的架构模式:<strong>Client-Server、Peer to Peer、MVC、Layered、Distribute-Cluster、Micro-Service、Even-Source、Hexagonal</strong> 逐个击破。</p>
<img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-19e056618926fa2ea096442e57a1dae2">
<p>Architecture,原意建筑学,其实软件架构的概念就是源于建筑学。建筑学是建筑物设计和建造相关的艺术和技术的综合。建筑学是一门横跨工程技术和人文艺术的学科。它研究的是建筑物可资使用的空间、可供欣赏的形象,以及围绕空间、形象如何产生确立、调整美化等的一系列问题。并且其所研究的对象不仅是建筑物本身,更主要的是研究人们对建筑物的要求及其如何得以满足,研究建筑物实体从无到有的产生过程中相应的策划、设计、实施等。</p>
<p>建筑学研究建筑的规划、设计和实施。软件架构研究软件的规划、设计和实施。</p>
<p>在架构设计中,根据业务、技术、组织、灵活性、可扩展性以及可维护性等因素,将应用系统划分成不同的部分,使这些部分之间相互分工、相互协作,从而完成特定的需求。架构贯穿系统实现的整个过程,是软件系统实现的主要参考,是软件系统实现的蓝图。软件系统的规划、设计和实施依架构的设计而组织实施。</p>
<h2>系统架构为什么重要</h2>
<p>我们知道摩尔定律——计算机硬件的能力大致每两年提高一倍的速度发展。然而软件开发的流程却没有这样的提速过程,开发成本也没有下降,系统架构的设计方法论和设计模式不断变化,而这个重要的流程依旧没有一个完全可靠和一劳永逸的解决方案。为什么?软件开发过程有什么特别的难题?有下面几点:</p>
<ol><li> <p>复杂性(Complexity)</p> <p>软件可以说是人类创造的最复杂的系统类型。软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。而理解运用这些复杂性的人并没有太多的变化。</p> </li><li> <p>不可见性(Invisibility)</p> <p>软件工程师能直接看见源代码,但是源代码不是软件本身。并且静态的源代码和运行的系统也不一样,软件运行环境的复杂性也增加了软件系统的不可预测性。软件系统不能以简单的方式描述出来,设计文档,描述说明,流程图,架构图这些也不过是让复杂的软件系统以更易于理解和易于交流的方式展示,却依旧不能完全描述系统的全貌。</p> </li><li> <p>易变性(Changeability)</p> <p>修改软件看似很容易,修改软件比修改硬件容易多了,修改软件系统也比修改一座巍立建筑物容易的多。所以人们自然地期待软件系统能够适应未来的变化。但变化却是复杂的,环境也是复杂的,这些复杂的情况往往让一个易于修改的事情却变成一件越来越困难的事情。</p> </li><li> <p>服从性(Conformity)</p> <p>软件系统不能独立存在,它总是运行在硬件上面,也总是要服从系统中其他组成部分的要求,也要服从用户的要求、行业的要求。</p> </li></ol>
<p>软件系统的以上特性使得系统架构的设计显得尤其重要。系统架构设计通过以下方式来解决上面的软件难题:</p>
<ul><li> <p>抽象</p> <p>抽象是系统架构设计的重要一步。抽象是将复杂的概念简单化。在最高层次上,将软件系统抽象为<strong>对象</strong>和<strong>过程</strong>两个高层次概念。对象可以是系统、组件、接口、类、方法等等不同层次的概念,过程是系统运行的方式和流程。抽象使具象的事物概念化,从而确定边界,易于理解,易于交流。</p> </li><li> <p>分解</p> <p>分解与组合相互作用。分解就是将高层次的抽象概念分解成低层次的抽象概念,就是将实体分成小的部件或组成部分,<strong>在应对复杂度的诸多方式中,”分而治之“是一项基本策略,它把大问题持续分解成小问题,直到每一个小问题都能够解决为止。</strong></p> </li><li> <p>语言</p> <p>语言的边界就是世
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP