您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 软件架构设计原则和指南
ARC110ARC110软件构架设计的原则和指南软件构架设计的原则和指南课程内容概述课程内容概述介绍和引言介绍和引言软件构架和构架师软件构架和构架师软件构架的设计软件构架的设计模式、框架、和参照设计模式、框架、和参照设计第一代自费留学生:美国南伊利诺州立大学第一代自费留学生:美国南伊利诺州立大学(SIUE)(SIUE)电机工程学士电机工程学士(1984)(1984)及硕士学位及硕士学位(1985)(1985)历任历任OwensOwens--Illinois,ReynoldsMetals,Illinois,ReynoldsMetals,Attachmate,MotorolaAttachmate,Motorola等公司的高级系统工程师、等公司的高级系统工程师、软件开发工程师、产品经理、项目经理软件开发工程师、产品经理、项目经理19981998年加入微软,年加入微软,9898--20012001为为ActiveSync3.xActiveSync3.x产品产品发行项目经理,发行项目经理,20012001--20042004年年为为WindowsXPWindowsXPEmbeddedEmbedded嵌入式操作系统的产品设计项目经理嵌入式操作系统的产品设计项目经理20042004初至今为微软总部中国事务办公室首席项目初至今为微软总部中国事务办公室首席项目经理经理自我介绍自我介绍软件构架和构架师软件构架和构架师什么是构架设计和构架师?什么是构架设计和构架师?建筑构架建筑构架建筑构架设计建筑构架设计建筑设计:楼房设计和结构建造的艺术和科学建筑设计:楼房设计和结构建造的艺术和科学建筑风格:反映楼房在特定的时间期间和地域范建筑风格:反映楼房在特定的时间期间和地域范围的风格围的风格AArr··chichi··tectec··tureture[[ááaarkirkittèèkchkchəərr]]1.1.buildingdesign:buildingdesign:theartandscienceofdesigningandconstructingtheartandscienceofdesigningandconstructingbuildingsbuildings2.2.buildingstyle:buildingstyle:astyleorfashionofbuilding,especiallyonethatisastyleorfashionofbuilding,especiallyonethatistypicalofaperiodofhistoryorofaparticularplacetypicalofaperiodofhistoryorofaparticularplace计算机系统和软件构架计算机系统和软件构架ArAr··chichi··tectec··tureture[[ááaarkirkittèèkchkchəərr]]Structureofcomputersystem:thedesign,structure,andbehavioStructureofcomputersystem:thedesign,structure,andbehaviorofarofacomputersystem,microprocessor,orsystemprogram,includingthcomputersystem,microprocessor,orsystemprogram,includingtheecharacteristicsofindividualcomponentsandhowtheyinteractcharacteristicsofindividualcomponentsandhowtheyinteract计算机及软件的构架和设计计算机及软件的构架和设计计算机系统构架:计算机系统、机芯、和系统程计算机系统构架:计算机系统、机芯、和系统程序的设计、结构、和行为,包括组件的特征和它序的设计、结构、和行为,包括组件的特征和它们之间的互动们之间的互动软件构架:软件系统的结构和风格设计、使用方软件构架:软件系统的结构和风格设计、使用方案和行为的设计,以及软件功能组件的区分、归案和行为的设计,以及软件功能组件的区分、归类、组件接口和它们之间数据交换的规范和标准类、组件接口和它们之间数据交换的规范和标准软件构架设计的目的软件构架设计的目的1.1.使软件系统能够达到为用户提供最佳的功使软件系统能够达到为用户提供最佳的功能和服务的状态能和服务的状态2.2.使软件与系统的结合达到最佳运行性能使软件与系统的结合达到最佳运行性能3.3.合理和最佳地利用系统的各项资源合理和最佳地利用系统的各项资源4.4.在软件的开发、部署、运行、维护、升级在软件的开发、部署、运行、维护、升级换代上为提供最大的灵活性换代上为提供最大的灵活性5.5.为系统提供最大的安全性、稳定性、和可为系统提供最大的安全性、稳定性、和可靠性,以及各项质量素质靠性,以及各项质量素质构架师的素质构架师的素质ExplorerAdvocateDesigner探索者探索者设计师设计师倡导人倡导人软件构架师应该起到的作用软件构架师应该起到的作用1.1.探索者探索者为企业的商业利益不断探索新技术的运用为企业的商业利益不断探索新技术的运用为提高竞争能力寻找和尝试优化的解答方案为提高竞争能力寻找和尝试优化的解答方案2.2.设计师设计师将优秀的功能和性能将优秀的功能和性能((强度强度))、可用性、和使用性、可用性、和使用性((美观美观))设计到软件中去设计到软件中去3.3.倡导人倡导人为开发出真正能为用户提供最佳服务的软件而为开发出真正能为用户提供最佳服务的软件而做用户利益的倡导人-倾听和观察用户的回馈做用户利益的倡导人-倾听和观察用户的回馈推动开发团队建立前瞻性的战略眼光推动开发团队建立前瞻性的战略眼光软件构架的设计软件构架的设计构架设计的责任和目的构架设计的责任和目的构架设计首先是设计为解决实际问题构架设计首先是设计为解决实际问题所需提供的答案的思路和计划所需提供的答案的思路和计划你的责任是创立出一个能够满你的责任是创立出一个能够满足这样需要的构架足这样需要的构架为了使整个开发团队都能为达到同样的目标为了使整个开发团队都能为达到同样的目标而努力,构架师必须对不同的听众用不同的而努力,构架师必须对不同的听众用不同的工具和方法,将设计思路准确无误地向大家工具和方法,将设计思路准确无误地向大家沟通、建立共识。沟通、建立共识。构架设计所需要思考的问题构架设计所需要思考的问题客户和市场最需要解决的问题是什么?客户和市场最需要解决的问题是什么?我们是否在解决真正需要解决的正确问题?我们是否在解决真正需要解决的正确问题?开发中的局限是什么?开发中的局限是什么?我们究竟需要开发什么样的功我们究竟需要开发什么样的功能、多少功能,才能满足需要?能、多少功能,才能满足需要?这个软件在设计、部署、运行、维这个软件在设计、部署、运行、维护、升级等方面是否有特别要求?护、升级等方面是否有特别要求?是否有更灵活或简单的设计?是否有更灵活或简单的设计?构架设计的思考往往从需求开始构架设计的思考往往从需求开始我所要开发的软件和系统究竟是解决什么我所要开发的软件和系统究竟是解决什么问题,各种需求是什么?问题,各种需求是什么?我从哪里得到和总结各种需求?我从哪里得到和总结各种需求?我应该考虑那些因素使我应该考虑那些因素使我能够得到完整的需求我能够得到完整的需求分析?分析?如果一群人来到一个草地进行踢球比赛如果一群人来到一个草地进行踢球比赛……如果既没有球门、球场边界,也没有比赛规则如果既没有球门、球场边界,也没有比赛规则他们可以毫无目标地到处跑动以至于筋疲力尽他们可以毫无目标地到处跑动以至于筋疲力尽但是他们能够达到任何比赛的目的吗?但是他们能够达到任何比赛的目的吗?要赢得比赛必须要能够进球要赢得比赛必须要能够进球……要进球必须要有比赛规则、场地边界、和球门要进球必须要有比赛规则、场地边界、和球门你的开发项目的你的开发项目的““赢球规则赢球规则””和和““球门球门””是什么?是什么?项目的需求是你的项目的需求是你的““赢球规则赢球规则””和和““球球门门””你从哪里得到需求分析的信息和数据?你从哪里得到需求分析的信息和数据?项目的合同书项目的合同书对市场的调查和对竞争者产对市场的调查和对竞争者产品的分析品的分析对使用者的调查及回馈总结对使用者的调查及回馈总结对用户使用产品过程的观察对用户使用产品过程的观察访问用户的谈话记录访问用户的谈话记录用户对系统的升级要求用户对系统的升级要求以往类似项目的总结分析以往类似项目的总结分析现有系统的问题报告和维护现有系统的问题报告和维护历史记录历史记录对用户的售后服务和技术支对用户的售后服务和技术支持的历史持的历史项目资助者的要求项目资助者的要求••功能需求是描述一个产品或项目该做什么功能需求是描述一个产品或项目该做什么,,该提供什么功能该提供什么功能,,该完成什么该完成什么任务的总结任务的总结完整的需求分析必须考虑的各种因素完整的需求分析必须考虑的各种因素用质量属性的选择帮助确定项目的需求范围用质量属性的选择帮助确定项目的需求范围利用利用质量标准的互相对立和制约因素质量标准的互相对立和制约因素来决定开发工作的侧重点和优先权来决定开发工作的侧重点和优先权--++--可用性可用性(Usability)(Usability)++++++++--++可测性可测性(Testability)(Testability)++++--++健全性健全性(Robustness)(Robustness)++--++++++--++--重复使用性重复使用性((ReusabilityReusability))++++++++++--++稳定性稳定性(Reliability)(Reliability)--++++--++++--多用转换性多用转换性(Portability)(Portability)++++++--++可维护性可维护性(Maintainability)(Maintainability)++--++--兼容性兼容性(Interoperability)(Interoperability)----------完整性完整性(Integrity)(Integrity)++++++++----灵活性灵活性(Flexibility)(Flexibility)----------------效率性效率性(Efficiency)(Efficiency)++++可靠性可靠性((Availability)Availability)可可用用性性可可测测性性健健全全性性重重复复使使用用性性稳稳定定性性多多用用转转换换性性可可维维护护性性兼兼容容性性完完整整性性灵灵活活性性效效率率性性可可靠靠性性对客户重要的质量标志对客户重要的质量标志对开发者重要的质量标志对开发者重要的质量标志需求影响到甚至决定了软件的构架需求影响到甚至决定了软件的构架……项目的总体范围项目的总体范围不同功能的开发的重要性和顺序优先权不同功能的开发的重要性和顺序优先权与外部组件和系统的接口规范和标准与外部组件和系统的接口规范和标准开发资源的分配开发资源的分配开发时间表的制定开发时间表的制定软件各质量属性的选择和通过标准的制定软件各质量属性的选择和通过标准的制定对软件各种质量的测试范围对软件各种质量的测试范围软件发行通过关口的检测标准软件发行通过关口的检测标准良好的需求分析的特征是什么?良好的需求分析的特征是什么?TimeTime--BoundBoundTTRealisticRealisticRRActionableActionableAAMeasurableMeasurableMMSpecificSpecificSS具体的:具体的:每个所需开发的功能都是清晰每个所需开发的功能都是清晰地定义了的地定义了的可衡量的:可衡量的:整个系统和每个组件的功能整个系统和每个组件的功能完整性和质量
本文标题:软件架构设计原则和指南
链接地址:https://www.777doc.com/doc-1910288 .html