1、Software Architecture提要提要l引言l软件体系结构l概念l作用l描述l基于体系结构的软件开发l体系结构设计l软件产品线l(个人研究:自省动态体系结构)No silver bulletFrederick P.Brooks,Jr.There Is Nothing New Under the SUN.Ecclesiastes 1:9-14引言引言l“Architecture”一词与建筑有关l(“Design Pattern”也从建筑领域借用)l引用Grady Booch的几张PPT:6 Architecting a dog house Can be built by one pe
2、rsonRequiresMinimal modelingSimple processSimple tools 7 Architecting a houseBuilt most efficiently and timely by a teamRequiresModelingWell-defined processPower tools 8 Modeling a house 9 Architecting a high rise 10 Early architectureProgress -Limited knowledge of theory 11 Modern architectureProgr
3、ess -Advances in materials -Advances in analysisScale -5 times the span of the Pantheon -3 times the height of Cheops 12 Forces in civil architectureAvoiding failure -Safety factors -Redundancy -EquilibriumCompressionLoadTensionLoadKinds of loads -Dead loads -Live loads -Dynamic loadsAny time you de
4、part from established practice,make ten times theeffort,ten times the investigation.Especially on a very large project.-LeMessuier 13 Dimensions of software complexityHigher technical complexity-Embedded,real-time,distributed,fault-tolerant-Custom,unprecedented,architecture reengineering-High perfor
5、manceLower technical complexity-Mostly 4GL,or component-based-Application reengineering-Interactive performanceHighermanagement complexity -Large scale -Contractual -Many stake holders -“Projects”Lowermanagement complexity -Small scale -Informal -Single stakeholder -“Products”Defense MIS SystemDefen
6、se Weapon SystemTelecom SwitchCASE ToolNational Air TrafficControl SystemEnterprise IS(Family of ISApplications)CommercialCompilerBusinessSpreadsheetIS ApplicationDistributed Objects(Order Entry)Small ScientificSimulationLarge-ScaleOrganization/EntitySimulation An average software project:-5-10 peop
7、le-10-15 month duration-3-5 external interfaces-Some unknowns&risksEmbeddedAutomotive SoftwareIS ApplicationGUI/RDB(Order Entry)Walker Royce 14 Forces in SoftwareTechnology churnOur enemy is complexity,and its our goal to kill it.Jan BaanPerformanceThroughputCapacityAvailabilityFail safeFault tolera
8、nceFunctionalityCostCompatibilityResilienceThe challenge over the next 20 years will not be speed or cost or performance;it will be a question of complexity.Bill Raduchel,Chief Strategy Officer,Sun Microsystems 15 The domain of architectingArchitectureQualitiesProcessArchitecture RepresentationThe“w
9、hat”The“why”The“how”The“who”SystemFeaturesArchitectureS/W RequirementsSystemQuality AttributesSatisfiesConstrainOrganizationArchitectSkillsStakeholdersDefines roleProducesFollowsDefinesTechnologyWojtek Kozaczynski什么是什么是“软件体系结构软件体系结构”“The software architecture of a program or computing system is the
10、structure or structures of the system,which comprise software elements,the externally visible properties of those elements,and the relationships among them.”-Software Architecture in Practice如何理解如何理解lSA概念本身所指lSA的rationale,constrains l功能,性能l可伸缩性,可重用性,可理解性 l经济和技术方面的制约和权衡l美软件体系结构软件体系结构l概念、技术的形成与发展l60年度
11、末软件工程l90年代初l90年代中后l2000年后软件体系结构用途软件体系结构用途l早期设计决策l后续开发、维护的基础l各方沟通依据l架构设计师,需求分析师,客户/用户,项目管理人员,实现人员,维护人员 等等l(潜在的高层复用制品)l软件开发组织的一种核心财富软件体系结构:早期设计决策软件体系结构:早期设计决策l必须重视l高难度l较强创造性l高要求l影响深远l在后继开发阶段改动困难,代价高昂软件体系结构:早期设计决策软件体系结构:早期设计决策l技术内容l对实现的约束(模块,交互)l软件质量特征支持与指标预测分析l项目管理依据l风险管理,任务分解,费用评估,进度计划质量因素从头考虑质量因素从头考
12、虑软件体系结构技术的核心是在系统开发过程中尽可能早地处理相关质量问题。l通过软件的执行可见的质量因素lPerformance,Security,Availability,Functionality,Usabilityl非执行可见因素l Modifiability,Portability,Reusability,Testability软件体系结构:后续开发维护的基础软件体系结构:后续开发维护的基础l后续开发的依据l何种技术保证conformancel维护的基础l维护开销极大(多至7080)l软件体系结构信息至关重要l修改是否为“局部的”l体系结构演化?沟通依据沟通依据高层复用制品,企业战略财富高
13、层复用制品,企业战略财富l软件产品线如何描述软件体系结构如何描述软件体系结构l体系结构视图l4+1视图模型l体系结构描述语言(ADLs)体系结构视图体系结构视图l选取一个特定视角,着重考虑某些问题,而忽略与此视角无关之内容。l在此视图下,刻画:l结构配置(常用图型方式)l各个组成元素,其间的关系(行为,接口)l背景假设,设计动机,分析结论等l上下文(Hierarchical Decomposition),可变点4+1视图模型视图模型(Development View)(Physical View)Scenarios逻辑视图(逻辑视图(Logical View)l应用相关核心概念的抽象l元素(类
14、),l关系(泛化,依赖,聚合等等)l主要关注功能需求过程视图过程视图(Process View)l刻划 并发、同步、分布等特性l专注于性能、容错、可用性、系统一致性等非功能质量属性方面的考虑(用顺序图亦可)实现视图实现视图(Implementation View)l软件的静态组成:模块划分,相互联系l软件的开发方便程度、复用、模块化等内部质量因素和工程组织管理因素。部署视图部署视图(Deployment View)l原称物理视图(Physical View)l软件模块的物理分布l关注可用性、可靠性、性能、扩展性等非功能指标用例视图(用例视图(Use Case View)l用若干用例来串接上述四
15、个视图(1)l两方面作用l各个视图的设计,实际上均是从用例出发来发现其中的元素、关系等l通过用例场景的推演,来展示并验证体系结构。l这是对体系结构的“测试”。体系结构中的各种体系结构中的各种“结构结构”lSoftware Architecture in Practice 书中的分类lModulelDecomposition,Uses/Layered,Class/generalizationlComponent-and-ConnectorlProcesses,Concurrency,Shared data,Client-ServerlAllocationlDeployment,Implement
16、ation,Work assignment视图的取舍视图的取舍l依据所关心的质量因素作取舍l并非一定要面面俱倒l单机软件 一般无需 部署视图l串行程序 可能无需 过程视图l。体系结构描述语言体系结构描述语言l专门的语言,用于支持严格的体系结构描述,形式的、(半)自动的分析和代码生成。l实际现有ADL多用于描述C&C结构相关视图l例如ACMElComponent,Connector,Port,Role,System,Representation,Rep-MapS oftw a re Arc hite c tureS oftw a re Arc hite c ture De s c ription
17、Arc hite c tura l v ie wis m a de ofis re pre s e nte d byArc hite c ture De s ign P roc e s sproduc e sFormCom pone ntConne c tionArc hite c tura l P a tte rnis ais m a de ofS oftw a re Arc hite c tsa re a c tors inLogic a l v ie wP roc e s s v ie wIm ple m e n-ta tion v ie wDe ploy m e nt v ie wRe
18、 quire m e ntss a tis fie sArchitectural styleha sha sha sis aSystem architectureis pa rt ofArc hite c ture S ty le guideCons tra intsc ons tra insc ons tra insUs e c a s e v ie wre la te s toArc hite c tura l Blue printde pic ts软件体系结构设计软件体系结构设计l体系结构设计的组织保证l架构设计师的职权l一般流程l关键:l质量要求驱动l模式复用体系结构设计一般流程体系结
19、构设计一般流程(Booch)l选择场景(关键步骤,有风险)l标识主要的类和它们的责任l给类分配行为l子系统结构,层,定义接口l定义分配和并发性l实现体系结构原型l从用例导出测试用例l评估体系结构循环反复循环反复用例图逻辑视图分布视图实现视图过程视图质量属性驱动的体系结构设计质量属性驱动的体系结构设计l上述的体系结构设计步骤更多的关注于功能需求l软件体系结构设计中一个关键是尽早考虑其它的质量属性l这些质量属性定义是描述性的,不是可操作的。lClements等人提出一种基于“质量属性场景”(Quality Attribute Scenarios)的办法。质量属性场景质量属性场景可用性可用性易修改性
20、:修改界面易修改性:修改界面性能场景性能场景:操作限时完成操作限时完成好用性场景好用性场景:Undo还有更多还有更多l安全l可测试性l易维护性l设计解决方案设计解决方案l通过功能需求场景和质量属性场景,我们可对体系结构设计的各种Forces有比较具体的把握。l据此设计解决方案l直觉与创造。l一般对策:学习吸收前人知识l模式:系统的设计经验复用借鉴,方法,创造借鉴,方法,创造TheftMethodIntuitionClassical systemUnprecedented systemTheftMethodIntuition提高可用性提高可用性l对故障(fault)的屏蔽 或者 对系统的修复l办
21、法:提高易修改性提高易修改性其它对策其它对策lSoftware Architecture in Practice 一书中还给出了提高易用性、易测试性、安全性等等的常用对策。模式模式l模式是在一定的情境下对某(反复出现)问题的(业经实践检验的)解决方案。l经验的汇集,交流的手段What is a Design Pattern?Christopher Alexander:Each pattern describes a problem which occurs over and over again in our environment,and then describes the core of
22、 the solution to that problem,in such a way that you can use this solution a million times over,without ever doing it the same way twice 本质上是设计经验的文档化。模式模式l两本经典书lEric Gamma,John Vlissides,Richard Helm,Ralph Johnson,Design Patterns:Elements of,Addison-Wesley 1995.(GoF patterns)lFrank Buschmann,Regine
23、Meunier,Hans Rohnert,Peter Sornmerlad,Michael Stal,Pattern Oriented Software Architecture VOL1 A System of Patterns.VOL2 Patterns for Concurrent and Networked Objects Wiley 模式分类模式分类lGang of Four的分类lCreational,Structural,Behavioral lPOSAlArchitectural pattern,Design pattern,Idioms设计模式设计模式l简介?软件产品线软件产
24、品线l软件复用是一个久远的理想。lMcIlroy 1969年就提出要工业化的生产可复用软件构件l35年过去,基于构件的复用有长足进展,但仍不十分理想l基于软件产品线的复用可能更有效l软件产品线的核心在于其公共体系结构软件产品线软件产品线l产品线是工业化生产中的常见现象l爱立信的手机 TlIBM的Thinkpad笔记本系列 X Tl产品线内的复用要远远超过产品线外的复用l软件产品线:lA software product line(SPL)is a set of software-intensive systems that share a common,managed set of featu
25、res satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way.软件产品线软件产品线l软件工程的全面复用l需求l体系结构l构件(包括其设计)l建模与分析(比如性能模型,安全分析等)l测试l管理,计划l过程,方法,工具l样品系统l教训(改正缺陷)l人员软件产品线软件产品线l界定(Scoping)l划定产品线所支持的范围l平衡的艺术l体系结构设计l软件产品线中保
26、持稳定的部分l明确设计那些部分可以变l变的方式 (半)自动的 手动的l基于此架构的软件产品设计自省动态体系结构自省动态体系结构l动态体系结构l自省概念与技术l自省动态体系结构小结小结l软件体系结构l算法、数据表示和实现细节之上的质量关键l高级的复用制品,企业的战略财富l应成为软件开发活动的中心l投入实践需要决心和耐心l“Scientific reasoning is nothing but the result of starting from ordinary observations and continuing with simple deductions-only very patie
27、ntly and stubbornly”参考资料参考资料lMary Shaw,David Garlan.Software Architecture:Perspectives on an Emerging DisciplinelLen Bass,Paul Clements,Rick Kazmand.Software Architecture in Practice,Second EditionlPhilippe Kruchten,“The 4+1 View Model of Architecture,”IEEE Software,12 (6),November 1995,IEEE.lMartin Fowler,David Rice,Matthew Foemmel,Edward Hieatt,Robert Mee,Randy Stafford,Patterns of Enterprise Application Architecture 谢谢!Q&A