您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 软件体系结构-第三讲(架构设计)
2012-7-1111SoftwareAArchitectureDesign——ChapterthreeSoftwareArchitectureDesign李哲洙lizhezhu@163.com•软件体系结构设计过程•预备架构设计阶段•概念架构设计阶段•细化架构设计阶段目录『contents』2012-7-112Architecturaldesign•Identify,select,andvalidate“architecturallysignificant”elements•Noteverythingisarchitecture–Main“business”classes–Importantmechanisms–Processorsandprocesses–Layersandsubsystems–Interfaces•ProduceaSoftwareArchitectureDocument体系结构设计的目标重用:为了避免重复劳动,为了降低成本,希望能够重用之前的代码、之前的设计。透明:有些时候,为了提高效率,把实现的细节隐藏起来,仅把客户需求的接口呈现给客户。扩展:对扩展的渴求源于需求的易变。简明:一个复杂的架构不论是测试还是维护都是困难的。高效:不论是什么系统,都希望架构是高效的安全:是架构的一个很重要的方面。2012-7-113架构设计的复杂性架构设计是一种权衡一个问题总是有多种的解决方案。而我们要确定唯一的架构设计的解决方案,就意味着我们要在不同的矛盾体之间做出一个权衡。在设计的过程中总可以看到很多的矛盾体:开放和整合一致性和特殊化稳定性和延展性SoftwareengineeringprocessAsetofpartiallyorderedstepsintendedtoreachagoal.Insoftwareengineeringthegoalistobuildasoftwareproductortoenhanceanexistingone.•Architecturalprocess–Sequenceofactivitiesthatleadtotheproductionofarchitecturalartifacts:•Asoftwarearchitecturedescription•Anarchitecturalprototype2012-7-114RationalUnifiedProcess•Iterative•Architecture-centric•Use-casedriven•RiskconfrontingArchitectureDesignProcessMode2012-7-115FocusovertimeDiscoveryInventionFocusImplementationKeyconceptsPhase,IterationsProcessWorkflows–Activity,stepsArtifacts–models–reports,documentsWorker:ArchitectWhatdoeshappen?Whatisproduced?Whodoesit?Whendoesarchitecturehappen?2012-7-116LifecyclePhasestimeInceptionElaborationConstructionTransitionInceptionDefinethescopeoftheprojectanddevelopbusinesscaseElaborationPlanproject,specifyfeatures,andbaselinethearchitectureConstructionBuildtheproductTransitionTransitiontheproducttoitsusersMajorMilestonestimeVisionBaselineArchitectureInitialCapabilityProductReleaseInceptionElaborationConstructionTransition2012-7-117PhasesandIterationsAniterationisasequenceofactivitieswithanestablishedplanandevaluationcriteria,resultinginanexecutablereleaseArchIteration...DevIterationDevIteration...TransIteration...ReleaseReleaseReleaseReleaseReleaseReleaseReleaseReleasePrelimIteration...InceptionElaborationConstructionTransitionArchitecture-CentricModelsarevehiclesforvisualizing,specifying,constructing,anddocumentingarchitectureTheUnifiedProcessprescribesthesuccessiverefinementofanexecutablearchitecturetimeArchitectureInceptionElaborationConstructionTransition2012-7-118UnifiedProcessstructureManagementEnvironmentBusinessModelingImplementationTestAnalysis&DesignPreliminaryIteration(s)Iter.#1PhasesProcessWorkflowsIterationsSupportingWorkflowsIter.#2Iter.#nIter.#n+1Iter.#n+2Iter.#mIter.#m+1DeploymentConfigurationMgmtRequirementsElaborationTransitionInceptionConstructionArchitectureandIterationsUsecaseModelDesignModelDeploymentModelTestModelImplementationModelContent2012-7-119PhaseofArchitecture业务架构用例模型逻辑架构部署架构实现架构TaskforDesignPhase•TaskforOperationAnalysis–Todefineprojectoperationobjectandillustrateoperationrequirementforobject’ssatisfaction•TaskforTechnicalRequirement–Startedfromoperationgeneratedatoperationanalysisphase,totransferthemintotechnicalcriterionthatusedforarchitecturedesignanddeploy.2012-7-1110TaskforDesignPhase•TaskforLogicDesign–Todesignalogicarchitecturewhichexpresscaseandscenedefinedattechnicalrequirementphase•TaskforDesigndeploy–Tocreatedeployarchitecturewhichcanreflectmappingrelationbetweendesignproposalandphysicalcondition•实现阶段–在测试环境中创建和部署试验性和/或原型部署–设计和运行功能性测试来衡量与系统要求的符合度–设计和运行负载测试来衡量峰值负载下的性能–创建生产部署,可能需要分阶段部署到生产中TaskforDesignPhase2012-7-1111Architecturaldesignworkflow(Booch)•Selectscenarios:criticalityandrisk•Identifymainclassesandtheirresponsibility•Distributebehavioronclasses•Structureinsubsystems,layers,defineinterfaces•Definedistributionandconcurrency•Implementarchitecturalprototype•Derivetestsfromusecases•EvaluatearchitectureIterateUsecaseviewLogicalviewDeploymentviewImplementationviewProcessview架构设计过程最佳实践222012-7-1112架构设计总体指导原则•原则1:看透需求–看透需求,就是设计人员要做到“理解、能说出所以然”–看透需求,不仅要把需求找全,还要把需求项之间的矛盾关系、追述关系也都搞清楚•原则2:架构大方向正确,这是一种策略。概念架构更重视宏观定义,比如架构模式、集成技术选型•原则3:设计好架构的各个方面。运用多视图设计方法,从多个方面进行架构设计23架构设计过程:6个步骤242012-7-1113架构设计阶段具体划分•架构设计前准备阶段(预备架构阶段)•概念架构设计阶段•细化架构设计阶段•软件体系结构设计过程•预备架构设计阶段•概念架构设计阶段•细化架构设计阶段目录『contents』2012-7-1114架构设计的思考往往从需求开始我所要开发的软件和系统究竟是解决什么问题,各种需求是什么?我从哪里得到和总结各种需求?我应该考虑那些因素使我能够得到完整的需求分析?架构设计-架构源自需求为什么要从需求开始?IT界的技术层出不穷,面对着如此之多的技术、平台、框架、函数库,我们如何选择一组适合软件的技术?每一个客户的软件都有自身的特点,如何才能够设计出符合客户利益的架构?软件中往往都充斥着众多的问题,在一开始就把所有的问题都想清楚往往很难做到,但是如果不解决问题,风险又居高不下2012-7-1115架构设计-架构源自需求(举例)例1:城市中自来水管的架设是一项非常的复杂的工程。为了需要满足每家每户的需要,自来水管组成了一个庞大的网络。在这样一个复杂的网络中,如何完成铺设的任务呢。一般的做法是,先找出问题的根源,也就是水的源头。从水源铺设一条管道通至城市,然后根据城市的区域划分,设计出主管道,剩下的就是使用的问题了,每家每户的管道最终都是连到主管道上的。因此,虽然自来水网络庞大复杂。但是真正的主管道的非常简单的。从哪里得到需求分析的信息和数据?•项目的合同书•对市场的调查和对竞争者产品的分析•对使用者的调查及回馈总结•对用户使用产品过程的观察•访问用户的谈话记录•用户对系统的升级要求•以往类似项目的总结分析•现有系统的问题报告和维护历史记录•对用户的售后服务和技术支持的历史•项目资助者的要求2012-7-1116•功能需求是描述一个产品或项目该做什么,该提供什么功能,该完成什么任务的总结完整的需求分析必须考虑的各种因素预备架构阶段要点•最大误区:架构师是技术人员不必懂需求•实践要点:摒弃“需求列表”方式,建立二维需求观。•思维工具:需求矩阵2012-7-1117什么对架构设计成败非常关键?•功能需求、质量属性及约束共同决定了架构,对这三类需求的把握是否到位、设计决策是否对路,是架构设计成败的关键所在!架构设计前准备阶段主要工作•理解需求•建立需求大局观•确定架构设计方向2012-7-1118在预备架构总体工作内容•在架构设计之初,就全盘考虑架构设计要重点支持的关键质量目标
本文标题:软件体系结构-第三讲(架构设计)
链接地址:https://www.777doc.com/doc-6149492 .html