软g架构是一门学U,开始于 20 世纪 70 q代。面对不断增加的复杂性和开发复杂实时系l的压力Q作Z系l工E和软g开发的基本构造,软g架构应运而生?
与Q何其他久l考验的学U一P软g架构在诞生之初也面许多挑战。Y件架构表C系l的l构和行为方面。在早期Y件架构编写文档说明时Q所使用的文本和 图解表达常常不或者不够精。所需的是某种一致ƈ得到充分理解的伪Q或元)语言Q以便将对Y件架构进行表C和~写文档说明的不同方式统一h。在学术? I的推动下,在用于开发有效Y件架构文说明的最佛_践和指导原则斚wQ工E和计算机科学领域已取得了长的发展?
在本pd中,(zhn)将了解如何~写软g架构文说明。了解编写文说明的不同斚wQ系l上下文、体pȝ构概q、功能体pȝ构、操作体pȝ构和体系l构决策?
在这W一文章中Q了解Y件架构是什么,以及学科的不同方面编写文档说明的重要性?
![]() ![]() |
![]()
|
不同的研Ih员已解释了Y件架构是什么,q且他们Ҏ(gu)兛_何最好地表示软gpȝ的体pȝ构具有不同的观点。其中没有哪一U解释是错误的;每种解释都具有自q价倹{?a >Bass L {h抓住了Y件架构的本质Q?/p>
“E序或计系l的软g架构是该pȝ的结构,包括软glg、那些组件的外部可见的属性,以及那些lg之间的关p?#8221; ?/blockquote>此定义重点关注由_粒度的构造(软glgQ所构成的体pȝ构,可以这些构造看作是体系l构的构建块。每个Y件组件或体系l构构徏块具有某些外部可见的? 性,q是它向其他体系l构构徏块公开的属性。Y件组件的内部设计和实现细节不是系l的其他部分所兛_的内容,pȝ的其他部分只是将某个特定lg视ؓ一个黑 盒。该黑盒h某些所公开的属性,其他软glg可以使用q些属性来共同实现业务?IT 目标。Y件架构在恰当的粒度别标识体pȝ构构建块。Y件架构还标识那些构徏块如何彼此相养Iq进行文记录?/p>
与Y件工E相关的体系l构涉及到将单个pȝ分解或划分ؓ一l可q代地、渐q地和独立地构造的部分。各个部分彼此具有显式的关系。当l合在一hQ各个部分就形成了系l、企业或应用E序的体pȝ构?
关于体系l构与设计之间的区别Q存在一些淆。正?Clements P {h 所指出的,所有体pȝ构都是设计,但不是所有设计都是体pȝ构。需要绑定以使系l满_功能性和非功能性需求和目标的设计本质上是体pȝ构。体pȝ构将? pȝ构构建块视ؓ黑盒Q而设计则处理体系l构构徏块的配置、自定义和内部工作。体pȝ构将软glg与其外部属性绑定在一赗设计通常要比体系l构松散? 多,因ؓ它允总更多的方式遵守组件的外部属性。设计还考虑用于实现lg内部l节的各U方法?/p>
软g架构可以递归C用。请考虑一个属于某个系l的软g架构l成部分的Y件组? (C1)。Y件架构师该lg及其应该公开的属性、功能和非功能特性及其与其他软glg的关pMl系l设计h员。设计h员在分析软glg C1 之后Q决定将该组件分解ؓ更细_度的组ӞC11、C12 ?C13Q,其中每个lg提供可重用的功能Q这些功能将用于实现 C1 的要求属性。设计h员详l设计了 C11、C12、C13 及其接口?/p>
此时Q对设计人员来说QC11、C12 ?C13 是体pȝ构构造(或组ӞQ其中每个构造具有显式定义的外部接口。对设计人员来说QC11、C12 ?C13 是Y件组?C1 的体pȝ构,q且q些构造需要进一步的改进和设计,以处理它们的内部实现。通过大型、复杂的pȝ划分为小型的构成部分q中于每个部分Q可以递归C? 体系l构?
体系l构使用共同满行ؓ和质量目标的体系l构构徏块将pȝl定在一赗参与者必能够理解体pȝ构。因此必Mؓ体系l构~写_的文说明,下一个部分将Ҏ(gu)q行讨论?
回页?/strong>
参与?/strong>Q体pȝ构的下游设计和实现用戗ؓ体系l构的定义、维护和增强功能q行投资的h?/td> 向参与者传达?zhn)正在构徏的系l蓝囄关键是ؓpȝ体系l构~写文说明。Y件架构通过不同的视图进行表C——功能、操作、决{等{。没有Q何单一视图能够表示整个体系l构。ƈ非所有视N需要表C特定企业或问题领域的系l体pȝ构。架构师确定以表C所需软g架构范畴的视N?/p>
通过~写不同视图的文说明ƈ捕获每个部分的开发,(zhn)可以向开发团队和业务?IT 参与者传达有兌不断发展的系l的信息。Y件架构具有一l其预期要满的业务和工E目标。体pȝ构的文说明可以向参与者传达这些目标将如何实现?
Zpȝ构的各个斚w~写文说明Q有助于架构师I补用白板描述解决Ҏ(gu)Q用框U图Ҏ(gu)Q与以对下游设计和实现团队有意义的方式表Cx案之间众所周知的差距。体pȝ构的框线囄下了大量有待解释的空间。需要揭C的l节通常隐藏qo人淆地固守在那些框U背后?/p>
文说明q可以促q创建切合实际ƈ且可以系l开发(例如遵@标准模板Q的体系l构构g。作Z门学U,软g架构是非常成熟的。?zhn)可以利用最佛_践和指导? 则来为每U视囑ֈ建标准模板,以表CZpȝ构的某个部分或范畴。模板可以ؓ架构师提供有关需要实际生什么结果的训练。ƈ且模板还可以帮助架构师执行强? 训练——超框U图技术。模板以更具体的术语定义体系l构Q因此可直接q溯到解x案预期要满的业务和 IT 目标?
׃复杂性,典型的系l开发活动可能要?18 个月左右的时间。h员羃减在设计和开发团队是司空见惯的事情,从而导致疯狂寻找恰当的替换人员。新的团队成员通常ȝq度Q因Z们必ȝ历一个学习过E才能成为高效的参与者。具有良好文说明构件的软g架构可以提供Q?
- Ҏ(gu)团队成员q行有关解决Ҏ(gu)需求教育的完美q_?/li>
- 有关解决Ҏ(gu)如何满业务和工E目标的说明?/li>
- 特定于问题领域的各种解决Ҏ(gu)体系l构视图?/li>
- 对个人将处理的视囄重点x?/li>
误虑一个名?#8220;体系l构决策”的假xӞ后箋部分q将Ҏ(gu)q行讨论Q。此构g定要解决的问题Qƈ评估备选机制以解决该问题。此构g对ؓ什么选择某种备选机制而不选择其他机制提供了论证?/p>
所 定的问题涉及到讉K大型?IBM DB2® 表的机制。对两种备选机制进行了评估Q?IBM MQSeries®Q或者?NEON Shadow Direct 适配器(一U供应商适配器)。尽?MQSeries 具备相关功能q且p较少Q但是后者要E_得多Qƈ且在制定决策Ӟ后者具有一定的优势。现在设惛_架构师在一q后d了该目Q新的架构师_墨d。新 的架构师质问该团队ؓ什么不使用 IBM MQSeries 来访问大型机 DB2 表。该团队很快q回Cpȝ构决{构Ӟq指Z做出该选择的原因。由?IBM MQSeries 已在q去一q中l测试证明与另一个解x案不怸下,q且׃其h(hun)D低,于是对该决策q行了重新审视ƈ做出更改以反映更新后的解x案?/p>
q个CZ说明了ؓ什么对pȝ软g架构的各个方面编写文档说明,是教育新团队成员和在最的停机情况下帮助他们入门所必需的?
回页?/strong>
(zhn)已l了解到可以通过不同的视图来表示体系l构Q每U视N中于该体pȝ构的特定斚w或范畴。正?Bass L {h 所指出的,视图 是由pȝ参与者编写和d的体pȝ构元素或构造以及它们之间关pȝ内聚集合?
体系l构?em>功能 视图描述各个体系l构构徏块、构建块之间的关p,以及如何它们分配到体系l构中的不同层?em>操作 视图Q也UCؓ技术视图)描述各个基础l构和中间g软glgQ这些组件ؓ要部v的功能体pȝ构组件提供运行时q_。对应用E序架构师而言Q功能视囑օ有第一位的重要性。对基础l构架构师而言Q操作视图是要重点关注的视图?/p>
q两U视N用不同的Ҏ(gu)解决相同的问题,两种视图都需要从概念体系l构推进到物理实现。视囄于强调特定的体系l构范畴Q同时有意地抑制其他范畴?
自从 20 世纪 90 q代以来Q已l存在许多不同的视图集?a >Perry ?Wolf 提出Q关于构建具有多U视囄体系l构Q包括Y件架构)Q存在一些非常有的要点。发表Y件架构的 4 + 1 视图?Kruchten 认ؓ存在五种视图Q这些视囄合v来可以表CY件架构。下面将描述前四U视图?
视图 描述 逻辑视图 处理静态设计模?/td> 程视图 处理设计的动态视?/td> 物理视图 处理如何Y件组件映到g基础设施 开发视?/th> 表示软glg在开发时环境中的静态组l?/td>
W五U视图更多的是一U?Litmus Test 视图。它采用一l在体系l构上非帔R要的用例Q业务场景)Qƈ说明如何四U视囄每一U视图中的体pȝ构元素集与针寚w些元素的体系l构U束和决{结合v来,用于实现那些用例?
?Soni {h ?Applied Software Architecture 中发表的另一U视囄四种构成软g架构的主要视囄成:
视图 描述 概念体系l构视图 从主要设计元素及元素间的关系斚w描述pȝ 模块互连体系l构视图 描述功能分解和如何在不同的层中安排Y件模?/td> 执行体系l构视图 描述pȝ的动态结?/td> 代码体系l构视图 描述如何在开发环境中l织源代码、二q制文g和库 软g架构出版物中描述了许多其他视图,但是介绍所有这些视图超Z本文的范围。对软g架构的不同视图进行仔l分析后表明Q不同的研究l果之间存在大量的相似性。我们拥有一个最常用于表C系lY件架构的最优视N合?
下一个部分将提供一些构件的概述Q徏议将q些构g用作可在软g开发生命周期的体系l构阶段生成的体pȝ构文的最集?
回页?/strong>
可以对Y件架构的许多不同视图或方面做文说明。对于Q何中大型软g开发项目,(zhn)至ؓ以下体系l构构g集编写文说明:
- pȝ上下?/strong>
- pȝ上下文对表示为黑盒的整个pȝ如何与外部实体(pȝ和最l用P交互做文说明。它q定义系l与外部实体之间的信息和控制?
pȝ上下文用于对pȝ所在的操作环境q行澄清、确认和~写文档说明。外部系l的性质、其接口以及信息和控制流对体pȝ构中的技术构件的下游规范有帮助?/p>
- 体系l构概述
- 体系l构概述通过单的囄表示形式说明体系l构中的主要概念元素和关pR?zhn)可以产生包括企业视图?IT pȝ视图的体pȝ构概q关pd。概q帮助表C组l所需要的业务?IT 功能?
体系l构概述q提供了要图表,功能和操作体pȝ构中对q些图表做进一步的详述和文说明。ƈ且体pȝ构概q还描述了企业在 IT pȝ斚w的战略方向?/p>
- 功能体系l构
- 功能体系l构构g也称为组件体pȝ构或模型Q用于说明如何将体系l构分解为提供Y件组仉辑分组?IT 子系l?
功能体系l构从以下方面描q?IT pȝ的结构:IT pȝ的Y件组件的职责、接口、静态关pd协作来交付组件所需功能的方式。此构g在各个细化阶D中q代地进行开发?/p>
- 操作体系l构
- 操作体系l构构g表示计算机系l的|络Q这些系l支持解x案的某些性能、可伸羃性和定w{需求。此构gq运行中间g、系lY件和应用E序软glg?
此构件在各个l化阶段中P代地q行开发?/p>
- 体系l构决策
- 体系l构决策构g提供了对所有在体系l构上相关的决策~写文说明的单一位置。决{通常涉及C不限于:
对Q何视为在体系l构上与满业务和工E目标相关的决策~写文说明。文说明通常包括Q?
- pȝ的结构?/li>
- 标识中间件组件以支持集成需求?/li>
- 功能分配到每个体系l构lgQ体pȝ构构建块Q?/li>
- 体pȝ构构建块分配Cpȝ构中的各个层?/li>
- 遵守标准?/li>
- 选择技术以实现特定的体pȝ构构建块或功能组件?/li>
- 问题的确定?/li>
- 各种解决Ҏ(gu)的评伎ͼ包括优点和缺炏V?/li>
- 选定的解x案,包括_的论证和其他对下游设计和实现有帮助的相兌l信息?/li>
本系列的其余部分讨论如何对软g架构中的q五个构件编写文说明?
回页?/strong>
软g架构已经存在 30 多年了。过d十年已见证了软g工程斚w的大量工作。Y件架构师在设计满企业的业务、工E和 IT 目标的解x案中L中流砥柱的作用。ؓ软g架构~写文说明是极光要的。?zhn)可以使用文档说明Q就某个正在发展的系l与参与者进行交。文说明对于 新的团队成员q速投入工作也是非常有用的Q因为新的团队成员可以在实现解决Ҏ(gu)时用体pȝ构透视图作Z下文和边界前提?
关于什么在性质上是体系l构Q什么在性质上不是体pȝ构,以及应该对系l的哪些斚w做文说明,一直存在大量的h。体pȝ构模板定义ƈ标准化每U类型的构g中的内容Q支持采用一致的Ҏ(gu)来对软g架构~写文说明?
在本文中Q?zhn)了解了作Z门学U的软g架构Qƈ了解了对体系l构的基本元素编写文说明的重要性。?zhn)q阅M作ؓ文说明最集的体pȝ构构件的概述。请l箋x本系列的其他文章Q它们将详述如何使用一l指导原则,以及如何Ҏ(gu)个构件编写文档说明?/p>
]]>