您好,欢迎访问三七文档
®IBMSoftwareGroup©2006IBMCorporation软件架构原理IBM软件部王家欣IBMSoftwareGroup|Rationalsoftware2内容什么是软件架构?架构带来什么好处?以架构为核心的软件开发过程用例与架构架构的步骤架构的描述与架构基线架构开发实现IBMSoftwareGroup|Rationalsoftware3架构一词的来源建筑行业:建筑中包含多个层面的技术外观、挖掘、地基、结构、墙、地板、电梯、电气、空调、水、卫生其它专门为居住者提供服务的设施架构师需要把所有的层次结合起来:使客户理解在建造的过程中为施工者提供指导架构相关于所有事情架构为所有人提供一个共同的远景目标架构不包括每个部分的细节IBMSoftwareGroup|Rationalsoftware4Architecture:三种不同的解释Architectureasaprocessordiscipline建造供所有类型的人使用的大厦的艺术或科学Theartorscienceofbuildingorconstructingedificesofanykindforhumanuse建造的活动或过程Theactionorprocessofbuilding依据建筑物的详细的结构和装饰的组织而采用的特殊的方法或风格ThespecialmethodorstyleinaccordancewithwhichthedetailsofthestructureandornamentationofabuildingarearrangedArchitectureasanartifact架构设计工作:结构,建筑物总体的构造或结构Webster’sNinthCollegiateDictionaryIBMSoftwareGroup|Rationalsoftware5什么是软件架构?期望其与建筑架构起到相同的作用:将软件的所有层次组合在一起便于客户理解为建造过程提供指导软件架构包含了过于下列方面的重要决定:软件系统的组成对所包括的系统及其接口的结构元素的选择,以及元素间的协作行为结构和行为元素如何组成不断增长的更大的子系统架构风格:组成元素与接口、相互协作、相互组合架构元素不仅与结构和行为有关,也和用法、功能、性能、适应性、重用、可理解性、经济和技术的限制、折中、美学等有关IBMSoftwareGroup|Rationalsoftware6软件架构定义的发展PerryandWolf,1992Asetofarchitectural(ordesign)elementsthathaveaparticularform.PerryandWolffurtherdistinguishbetweenprocessingelements,dataelements,andconnectingelements.Boehmetal.,1995AsoftwaresystemarchitecturecomprisesAcollectionofsoftwareandsystemcomponents,connections,andconstraintsAcollectionofsystemstakeholders'needstatementsArationalewhichdemonstratesthatthecomponents,connections,andconstraintsdefineasystemthat,ifimplemented,wouldsatisfythecollectionofsystemstakeholders'needstatements.Clementsetal.,1997Thesoftwarearchitectureofaprogramorcomputingsystemisthestructureorstructuresofthesystem,whichcomprisesoftwarecomponents,theexternallyvisiblepropertiesofthosecomponents,andtherelationshipsamongthem.PaulClement'spage@|Rationalsoftware7所有定义中的公共元素架构定义了关键组件架构定义了组件之间的关系(结构)和交互架构忽略了组件中与组件之间交互无关的内容的信息从另外一个组件的视点能够观察到的组件的行为是架构的一个部分每个系统都有一个架构(即便这个系统只有一个组件组成)架构定义了组件和结构背后的基本原理在架构定义中不包含组件的定义架构不是简单的结构定义–在架构定义中不只是单一的结构定义IBMSoftwareGroup|Rationalsoftware8RATIONAL对架构的定义软件架构将关于软件系统的组织的正确的决定组合在一起系统组成所需要的结构元素以及它们之间的结构的选择在这些元素之间的特定的协作行为将这些结构元素和行为元素组合成为一个更大的子系统用于制导系统组织的架构风格GradyBooch,PhilippeKruchten,RichReitman,KurtBittner;Rational(derivedfromMaryShaw)IBMSoftwareGroup|Rationalsoftware9RATIONAL对架构的定义(2)软件架构也关系到功能性Functionality可用性Usability系统弹性Resilience性能Performance重用Reuse可理解性Comprehensibility经济和技术的约束及相关折中Economicandtechnologyconstraintsandtradeoffs美学的考虑AestheticconcernsIBMSoftwareGroup|Rationalsoftware10(软件)组件是什么?可以被用于分布、集成、交付、替换的单元实现关键的功能由组件所提供的和它所要求的(需要的)服务定义服务只展现集成所必需的组件行为在下列的上下文关系中有意义:架构组件模型和框架不一定是一个单一的代码单元或单一的二进制文件IBMSoftwareGroup|Rationalsoftware11架构约束设计和实施架构涉及到一系列对设计和建造起约束作用的的策略性的设计决定、规则和模式CODEimplementationdesignarchitecture架构的决定是昀为基本的决定,改变他们将掀起宣然巨波IBMSoftwareGroup|Rationalsoftware12常见的错误概念架构和设计是相同的事情架构和基础架构(infrastructure)是相同的事情架构就是结构架构是平面化的,一个蓝图就足够了架构是不能够被度量和验证的架构是艺术或架构是科学IBMSoftwareGroup|Rationalsoftware13错误概念:架构=设计架构是设计的一个表象,它关注于:对于结构来讲关键的的元素对于性能、可靠性、成本、适用性等有重大影响的元素架构捕获了一组重要的设计决定架构不关心每个独立元素的详细设计IBMSoftwareGroup|Rationalsoftware14错误概念:架构=基础架构Infrastructure架构比基础架构包含的内容更多基础架构是一个完整的、重要的架构的组成部分架构也定义了也定义了应用在基础架构上的运行架构定义了基础架构和应用组件之间的互操作性IBMSoftwareGroup|Rationalsoftware15错误概念:架构=结构架构相关于结构、分解、接口等架构比结构包含的更多:动态表象基本原理适合于上下文关系:业务上下文开发上下文IBMSoftwareGroup|Rationalsoftware16错误概念:架构是平面化的只有在那些非常细小的案例中,架构才是平面化的架构有很多的维度,分别表述不同的涉众的不同的关注点利用一个单一的蓝图来表达全部(大部分的)的维度将导致语义的过度使用和不完整架构需要多个视图IBMSoftwareGroup|Rationalsoftware17错误概念:架构是不能够被度量和验证的架构不是一个粗略的、用草纸和铅笔进行的顶层的设计对于架构能够就功能和质量的需求、风险、和其他的系统关键属性进行系统化地评估评审架构的工件测试架构原型IBMSoftwareGroup|Rationalsoftware18两者都不是/两者都是难于应用分析方法非常大的问题空间,却只有非常少的可选择的量化的度量标准好的架构师拷贝过去成功地解决方案并与当前增加的改进结合架构定义的过程有明确定义的步骤和明确描述的工件架构相关的知识体系开始被编成法典模式,框架,服务,启发模式,…直觉和创造性仍然重要错误概念:架构是艺术或架构是科学ArtScienceIBMSoftwareGroup|Rationalsoftware19内容什么是软件架构?架构带来什么好处?以架构为核心的软件开发过程用例与架构架构的步骤架构的描述与架构基线架构开发实现IBMSoftwareGroup|Rationalsoftware20复杂性功能性技术技能过程组织和文化质量业务关注点架构是权衡IBMSoftwareGroup|Rationalsoftware21架构师功能技术复杂性组织和文化业务关注点技能质量过程ArchitectureSystemSoftwareArchitectureinPractice:L.Bass,P.Clements,R.Kazman,Addison-Wesley,1998架构业务流程架构的业务流程producesdrives架构的约束IBMSoftwareGroup|Rationalsoftware22好处:系统完整性和质量架构能够在变更中保持概念的完整性和系统质量所要求的功能质量属性新需求变更的需求融合技术架构延长系统的寿命容易进化系统弹性弹性化的应变能力IBMSoftwareGroup|Rationalsoftware23好处:控制复杂度“排除与克服”分解到组件隐藏实施的细节关注点的分离组件(层次)封装细节不同组件可以由掌握不同专业技能的人员来实施IBMSoftwareGroup|Rationalsoftware24好处:可预见过程可预见性架构原型允许你收集度量指标开发成本的度量指标进度的度量指标行为可预见性架构迭代排除关键风险IBMSoftwareGroup|Rationalsoftware25好处:可测试性良好构件化了的系统支持更好的、更容易的诊断跟踪能力发现错误测试是用例驱动的IBMSoftwareGroup|Rationalsoftware26好处:重用架构定义了替换规则组件接口定义替换物的边界架构使得各种粒度的重用成为可能组建级别的小范围的重用大范围的重用子系统产品框架IBMSoftwareGroup|Rationalsoftware27好处:沟通架构支持涉众间的沟通不同的视图定位于不同涉众的关注点架构沟通的是关键的设计决定架构设计的基本原理沟通折中IBMSoftwareGroup|Rationalsoftware28好处:组织和项目管理组织的结构与架构协同开发团队分包商组件/子系统作为下列单元使用:开发配置管理测试交付与升级组件/子系统被并行开发IBMSoftwareGroup|Rationalsoftware29SoftwareProjectManagement:AUnifiedFramework(AppendixB),WalkerRoyc
本文标题:软件架构原理讲座
链接地址:https://www.777doc.com/doc-1910282 .html