- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. 的软件体系架构–设计优良的架构
软件体系架构
1. 设计优良的架构
什么是架构
架构(Architecture)这个词语来⾃建筑学,放在软件领域中,相当于是⼀个隐喻,意味着它是⼀种High
Level的设计指引、原则和具体的设计模型。架构有助于确保系统能够满⾜其利益相关⼈的关注点,在构想、
计划、构建和维护系统时,架构有助于处理复杂性。
不同的⼈因为对软件系统的不同理解,对架构也有不同的定义。例如,IEEE对架构的定义为:
架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某⼀系统的基本组织结构,以及指导
上述内容设计与演化的原则。
⽽在BASS等⼈的著作Software Architecture in practice⼀书中,则将架构定义为:
某个软件或计算机系统的软件架构是该系统的⼀个或多个结构,每个结构均由软件元素、这些元素的外
部可⻅属性、这些元素之间的关系组成。架构关注接⼝公开的⼀⾯,⾄于内部的实现细节则不属于架构
的范畴。
《⼈⽉神话》的作者Frederick Brooks在著作Computer Architecture中则将计算机系统的架构定义为“⼀组最
⼩的特征集,它们决定了哪些程序将运⾏,以及这些程序将得到什么结果。”
John Klein与David Weiss认为,待构建的对象或系统必须具有以下特征:
具备客户要求的功能
能够在要求的⼯期内安全地构建
性能⾜够好
可靠的
可⽤的,并且使⽤时不会造成伤害
安全的
成本是可以接受的
符合法规标准
将超越前⼈及其竞争者
满⾜上述要求的架构或许可以称之为接近完美的架构,但实际上很少有复杂系统能够很好地满⾜这些特征。
那些追求完美主义的架构师,除了学院派的研究创作外,多数可能会在现实中碰壁,因为决定或约束软件系
统的诸多因素在架构中是纠缠不清的,⽭盾纠结的,因⽽⽆法做到尽善尽美。故⽽,架构的真谛是trade
off ,需要结合实际的⽤户场景权衡各种因素可能产⽣的影响,最终做出合理的决策。
错误的架构决策
我曾经做出⼀个错误的决策,是选择了MySQL作为我们⼤数据BI产品的数据集存储,幸好在产品研发
前期我及时地发现了这个错误。因为我们的产品需要在各个层次(Web应⽤层,数据分析层,数据存储
层)都需要⽀持⽔平伸缩,否则不⾜以应付海量数据存储以及实时分析⾼性能的需求。
由于我们选择了Spark作为产品的数据分析框架,最终,我们选择了设计为列式存储结构的Parquet⽂件
作为数据集存储,它除了在容量⼤⼩与查询性能⽅⾯具备独特优势之外,还可以存储在HDFS中,满⾜
了⽔平伸缩的需求。
《架构之美》认为:
架构观点中的常⻅思想是结构,每种结构都由各种类型的组件及其关系构成:它们如何组合、相互调
⽤、通信、同步,以及进⾏其他交互。
架构师需要遵循“关注点分离”原则,在充分理解⽤户或利益相关者的需求前提下,对系统进⾏分解。分解的
结构(可以是⼦系统、模块或组件)必须要遵循⾼内聚、低耦合的标准。这种分离可以是物理上的分离,也
可以是逻辑上的分离,从⽽衍⽣出系统架构的物理架构与逻辑架构。
内聚与耦合
软件设计的关键品质是内聚和耦合。我们的⺫标是通过设计使系统的组件具备下列品质:
⾼内聚(Strong cohesion)
内聚是⼀个测量指标,说明相关的功能如何聚集在⼀起,模块内的各部分作为⼀个整体⼯作得如
何。内聚性是将模块粘成⼀个整体的胶⽔。弱内聚的模块是不良分解的信号。每个模块都必须具有
清晰定义的⾓⾊,⽽不只是⼀堆不相干的功能。
低耦合(Low coupling)
耦合是模块之间独⽴性的测量指标。在最简单的设计中,模块⼏乎没有什么耦合,所以彼此间的依
赖关系较少。显然,模块不能完全解耦,否则它们将根本不能够⼀起⼯作!模块之间的联系有多种
⽅式,有的是直接的,有的是间接的。模块可以调⽤其他模块中的函数,或被其他模块所调⽤。它
可能使⽤其他模块提供的Web服务或设施,可能使⽤其他模块的数据类型,或提供某些数据让其他
模块使⽤,如变量或⽂件。好的软件设计只提供绝对需要的依赖。
什么是优良的架构
简单的架构
让它尽可能简单,但不要过于简单。 ——爱因斯坦
架构是清晰的
简单的架构是容易理解容易维护的架构,这⾸先就要保证架构的清晰。就像设计⼀座城市⼀般,不能因为城
市⾯积的庞⼤,⼈⼝的众多就失去其道路的清晰度,否则城市就会变成⼀座迷
您可能关注的文档
- !微机原理讲的义(第15章总线技术).ppt
- !微机原理讲义(第5章计算机和外设的数据传输W的6).ppt
- ((人教的版))[[初三物理课件]]2008年初三物理《电学》复习ppt课件.ppt
- (TSG2011)防爆电梯年度自行的检查报告.doc
- (上下标正确-可直接打印)高中化学物质的状态和颜色·常见物质的颜色、俗名、用途总汇.doc
- (教育科学出版社)六的年级下册科学教案.doc
- (模拟)南疆四地州乡村教师教学信息的化应用培训考试试题及答案.docx
- (推的荐)压力表校验课件.ppt
- (江苏金的陵中学物理名师工作室)基于《力的分解》教学的评课要点——朱建廉(共26张PPT).ppt
- (的OK)第11章 文件.ppt
- 教科版(2017秋)科学二年级上册2.6 做一顶帽子 教学设计.docx
- 河北高频考点专训四 质量守恒定律的应用教学设计---2024-2025学年九年级化学人教版(2024)上册.docx
- 大单元教学【核心素养目标】6.3 24时计时法教学设计 人教版三年级下册.docx
- 河南省商城县李集中学2023-2024学年下学期九年级历史中考模拟八(讲评教学设计).docx
- 第18章 第25课时 正方形的性质2023-2024学年八年级下册数学课时分层作业教学设计( 人教版).docx
- Module 8 模块测试 教学设计 2024-2025学年英语外研版八年级上册.docx
- 2024-2025学年小学数学五年级下册浙教版教学设计合集.docx
- 2024-2025学年小学劳动四年级下册人民版《劳动》(2022)教学设计合集.docx
- 2024-2025学年小学数学三年级上册冀教版(2024)教学设计合集.docx
- 2024-2025学年高中生物学必修1《分子与细胞》人教版教学设计合集.docx
文档评论(0)