40
ARC110 ARC110 软软软软软软软软软软软软 软软软软软软软软软软软软

ARC110 软件构架设计的原则和指南

Embed Size (px)

DESCRIPTION

ARC110 软件构架设计的原则和指南. 课程内容概述. 介绍和引言 软件构架和构架师 软件构架的设计 模式、框架、和参照设计. 第一代自费留学生:美国南伊利诺州立大学 (SIUE) 电机工程学士 (1984) 及硕士学位 (1985) 历任 Owens-Illinois, Reynolds Metals, Attachmate, Motorola 等公司的高级系统工程师、软件开发工程师、产品经理、项目经理 - PowerPoint PPT Presentation

Citation preview

Page 1: ARC110 软件构架设计的原则和指南

ARC110ARC110

软件构架设计的原则和指南软件构架设计的原则和指南

Page 2: ARC110 软件构架设计的原则和指南

课程内容概述课程内容概述介绍和引言介绍和引言软件构架和构架师软件构架和构架师软件构架的设计软件构架的设计模式、框架、和参照设计模式、框架、和参照设计

Page 3: ARC110 软件构架设计的原则和指南

第一代自费留学生:美国南伊利诺州立大学第一代自费留学生:美国南伊利诺州立大学(SIUE)(SIUE) 电机工程学士电机工程学士 (1984)(1984) 及硕士学位及硕士学位 (1985)(1985)历任 历任 Owens-Illinois, Reynolds Metals, Owens-Illinois, Reynolds Metals, Attachmate, MotorolaAttachmate, Motorola 等公司的高级系统工程师等公司的高级系统工程师、软件开发工程师、产品经理、项目经理 、软件开发工程师、产品经理、项目经理 19981998 年加入微软,年加入微软, 98-200198-2001 为为 ActiveSync 3.xActiveSync 3.x 产产品发行项目经理,品发行项目经理, 2001-20042001-2004 年年 为 为 Windows XP Windows XP EmbeddedEmbedded 嵌入式操作系统的产品设计项目经理嵌入式操作系统的产品设计项目经理20042004 初至今为微软总部中国事务办公室首席项初至今为微软总部中国事务办公室首席项目经理目经理

自我介绍自我介绍

Page 4: ARC110 软件构架设计的原则和指南

软件构架和构架师软件构架和构架师

Page 5: ARC110 软件构架设计的原则和指南

什么是构架设计和构架师?什么是构架设计和构架师?

Page 6: ARC110 软件构架设计的原则和指南

建筑构架建筑构架

建筑构架设计建筑构架设计建筑设计:楼房设计和结构建造的艺术和科学建筑设计:楼房设计和结构建造的艺术和科学建筑风格:反映楼房在特定的时间期间和地域范建筑风格:反映楼房在特定的时间期间和地域范围的风格围的风格  

AAr·chi·tec·turer·chi·tec·ture  [[áaáarki tèkchər]rki tèkchər]1.1. building design: building design: the art and science of designing and the art and science of designing and

constructing buildings constructing buildings 2.2. building style: building style: a style or fashion of building, especially one a style or fashion of building, especially one

that is typical of a period of history or of a particular place that is typical of a period of history or of a particular place

Page 7: ARC110 软件构架设计的原则和指南

计算机系统和软件构架计算机系统和软件构架Ar·chi·tec·tureAr·chi·tec·ture  [[áaáarki tèkchər]rki tèkchər]

Structure of computer system: the design, structure, and Structure of computer system: the design, structure, and behavior of a computer system, microprocessor, or system behavior of a computer system, microprocessor, or system program, including the characteristics of individual program, including the characteristics of individual components and how they interactcomponents and how they interact

计算机及软件的构架和设计计算机及软件的构架和设计计算机系统构架:计算机系统、机芯、和系统程计算机系统构架:计算机系统、机芯、和系统程序的设计、结构、和行为,包括组件的特征和它序的设计、结构、和行为,包括组件的特征和它们之间的互动们之间的互动软件构架:软件系统的结构和风格设计、使用方软件构架:软件系统的结构和风格设计、使用方案和行为的设计,以及软件功能组件的区分、归案和行为的设计,以及软件功能组件的区分、归类、组件接口和它们之间数据交换的规范和标准类、组件接口和它们之间数据交换的规范和标准

Page 8: ARC110 软件构架设计的原则和指南

软件构架设计的目的软件构架设计的目的1.1. 使软件系统能够达到为用户提供最佳的功使软件系统能够达到为用户提供最佳的功能和服务的状态能和服务的状态2.2. 使软件与系统的结合达到最佳运行性能 使软件与系统的结合达到最佳运行性能 3.3. 合理和最佳地利用系统的各项资源合理和最佳地利用系统的各项资源4.4. 在软件的开发、部署、运行、维护、升级在软件的开发、部署、运行、维护、升级换代上为提供最大的灵活性换代上为提供最大的灵活性5.5. 为系统提供最大的安全性、稳定性、和可为系统提供最大的安全性、稳定性、和可靠性,以及各项质量素质靠性,以及各项质量素质

Page 9: ARC110 软件构架设计的原则和指南

构架师的素质 构架师的素质 

Explorer Advocate

Designer探索者探索者设计师设计师

倡导人倡导人

Page 10: ARC110 软件构架设计的原则和指南

软件构架师应该起到的作用软件构架师应该起到的作用1.1. 探索者探索者

为企业的商业利益不断探索新技术的运用为企业的商业利益不断探索新技术的运用为提高竞争能力寻找和尝试优化的解答方案为提高竞争能力寻找和尝试优化的解答方案

2.2. 设计师设计师将优秀的功能和性能将优秀的功能和性能 (( 强度强度 )) 、可用性、和使、可用性、和使用性用性 (( 美观美观 )) 设计到软件中去设计到软件中去

3.3. 倡导人倡导人为开发出真正能为用户提供最佳服务的软件而为开发出真正能为用户提供最佳服务的软件而做用户利益的倡导人-倾听和观察用户的回馈做用户利益的倡导人-倾听和观察用户的回馈推动开发团队建立前瞻性的战略眼光 推动开发团队建立前瞻性的战略眼光 

Page 11: ARC110 软件构架设计的原则和指南

软件构架的设计软件构架的设计

Page 12: ARC110 软件构架设计的原则和指南

构架设计的责任和目的构架设计的责任和目的构架设计首先是设计为解决实际问题构架设计首先是设计为解决实际问题所需提供的答案的思路和计划所需提供的答案的思路和计划

你的责任是创立出一个能够满你的责任是创立出一个能够满足这样需要的构架足这样需要的构架为了使整个开发团队都能为达到同样的目标为了使整个开发团队都能为达到同样的目标而努力,构架师必须对不同的听众用不同的而努力,构架师必须对不同的听众用不同的工具和方法,将设计思路准确无误地向大家工具和方法,将设计思路准确无误地向大家沟通、建立共识。沟通、建立共识。

Page 13: ARC110 软件构架设计的原则和指南

构架设计所需要思考的问题构架设计所需要思考的问题客户和市场最需要解决的问题是什么?客户和市场最需要解决的问题是什么?   我们是否在解决真正需要解决的正确问题?我们是否在解决真正需要解决的正确问题?   开发中的局限是什么?开发中的局限是什么?  我们究竟需要开发什么样的功能、我们究竟需要开发什么样的功能、多少功能,才能满足需要?多少功能,才能满足需要?  

这个软件在设计、部署、运行、维这个软件在设计、部署、运行、维护、升级等方面是否有特别要求?护、升级等方面是否有特别要求?是否有更灵活或简单的设计?是否有更灵活或简单的设计?

Page 14: ARC110 软件构架设计的原则和指南

构架设计的思考往往从需求开始构架设计的思考往往从需求开始我所要开发的软件和系统究竟是解决什么我所要开发的软件和系统究竟是解决什么问题,各种需求是什么?  问题,各种需求是什么?  

我从哪里得到和总结各种需求?我从哪里得到和总结各种需求?  我应该考虑那些因素使我应该考虑那些因素使我能够得到完整的需求我能够得到完整的需求分析?分析?

Page 15: ARC110 软件构架设计的原则和指南

如果一群人来到一个草地进行踢球比赛如果一群人来到一个草地进行踢球比赛… …     如果既没有球门、球场边界,也没有比赛规则 如果既没有球门、球场边界,也没有比赛规则     

他们可以毫无目标地到处跑动以至于筋疲力尽 他们可以毫无目标地到处跑动以至于筋疲力尽     

但是他们能够达到任何比赛的目的吗?但是他们能够达到任何比赛的目的吗?

Page 16: ARC110 软件构架设计的原则和指南

要赢得比赛必须要能够进球要赢得比赛必须要能够进球……    

要进球必须要有比赛规则、场地边界、和球门要进球必须要有比赛规则、场地边界、和球门  你的开发项目的“赢球规则”和“球门”是什么? 你的开发项目的“赢球规则”和“球门”是什么?   

项目的需求是你的“赢球规则”和“球项目的需求是你的“赢球规则”和“球门”门”  

Page 17: ARC110 软件构架设计的原则和指南

你从哪里得到需求分析的信息和数据?你从哪里得到需求分析的信息和数据?项目的合同书项目的合同书对市场的调查和对竞争者产对市场的调查和对竞争者产品的分析品的分析对使用者的调查及回馈总结对使用者的调查及回馈总结对用户使用产品过程的观察对用户使用产品过程的观察访问用户的谈话记录访问用户的谈话记录用户对系统的升级要求用户对系统的升级要求以往类似项目的总结分析以往类似项目的总结分析现有系统的问题报告和维护现有系统的问题报告和维护历史记录历史记录对用户的售后服务和技术支对用户的售后服务和技术支持的历史持的历史项目资助者的要求项目资助者的要求

Page 18: ARC110 软件构架设计的原则和指南

• 功能需求是描述一个产品或项目该做什么功能需求是描述一个产品或项目该做什么 , , 该提供什么功能该提供什么功能 , , 该完成什该完成什么任务的总结么任务的总结完整的需求分析必须考虑的各种因素完整的需求分析必须考虑的各种因素   

Page 19: ARC110 软件构架设计的原则和指南

用质量属性的选择帮助确定项目的需求范围用质量属性的选择帮助确定项目的需求范围  利用利用质量标准的互相对立和制约因素质量标准的互相对立和制约因素来决定开发工作的侧重点和优先权来决定开发工作的侧重点和优先权     对客户重要的质量标志对客户重要的质量标志 对开发者重要的质量标志对开发者重要的质量标志

可可靠靠性性效效率率性性

灵灵活活性性完完整整性性

兼兼容容性性可可维维护护性性

多多用用转转换换性 性

稳稳定定性性重重复复使使用用性性

健健全全性性可可测测性性

可可用用性性

可靠性 可靠性 ((Availability)Availability) ++ ++

效率性 效率性 (Efficiency)(Efficiency) -- -- -- -- -- -- -- --

灵活性 灵活性 (Flexibility)(Flexibility) -- -- ++ ++ ++ ++完整性 完整性 (Integrity)(Integrity) -- -- -- -- --

兼容性 兼容性 (Interoperability) (Interoperability) -- ++ -- ++可维护性 可维护性 (Maintainability)(Maintainability) ++ -- ++ ++ ++多用转换性 多用转换性 (Portability)(Portability) -- ++ ++ -- ++ ++ --稳定性 稳定性 (Reliability)(Reliability) ++ -- ++ ++ ++ ++ ++重复使用性 重复使用性 ((ReusabilityReusability)) -- ++ -- ++ ++ ++ -- ++健全性 健全性 (Robustness)(Robustness) ++ -- ++ ++可测性 可测性 (Testability)(Testability) ++ -- ++ ++ ++ ++可用性 可用性 (Usability)(Usability)    -- ++ --

Page 20: ARC110 软件构架设计的原则和指南

需求影响到甚至决定了软件的构架需求影响到甚至决定了软件的构架… … 项目的总体范围项目的总体范围

不同功能的开发的重要性和顺序优先权不同功能的开发的重要性和顺序优先权与外部组件和系统的接口规范和标准与外部组件和系统的接口规范和标准开发资源的分配开发资源的分配开发时间表的制定开发时间表的制定软件各质量属性的选择和通过标准的制定软件各质量属性的选择和通过标准的制定对软件各种质量的测试范围对软件各种质量的测试范围软件发行通过关口的检测标准软件发行通过关口的检测标准

Page 21: ARC110 软件构架设计的原则和指南

良好的需求分析的特征是什么? 良好的需求分析的特征是什么? SS SpecificSpecific

MM MeasurablMeasurablee

AA ActionableActionable

RR RealisticRealistic

TT Time-Time-BoundBound

具体的:具体的:每个所需开发的功能都是清晰每个所需开发的功能都是清晰地定义了的地定义了的可衡量的:可衡量的:整个系统和每个组件的功能整个系统和每个组件的功能完整性和质量程度都具备可以衡量和检完整性和质量程度都具备可以衡量和检测的标准测的标准可付诸行动的:可付诸行动的:每个需求都可以用具体每个需求都可以用具体的功能和性能设计来满足的功能和性能设计来满足现实的:现实的:每个需求都是符合实际的、可每个需求都是符合实际的、可以用现有技术和资源加以解决以用现有技术和资源加以解决有时间限制性的:有时间限制性的:每个具体功能的开发每个具体功能的开发任务都是可以在目前项目的时间范围内任务都是可以在目前项目的时间范围内完成得了的完成得了的

Page 22: ARC110 软件构架设计的原则和指南

模式、框架、和参照设计模式、框架、和参照设计

Page 23: ARC110 软件构架设计的原则和指南

构架设计运用模式构架设计运用模式 (Pattern) (Pattern)

Page 24: ARC110 软件构架设计的原则和指南

古代埃及的文明征服他们周围地域近三千年。究竟是古代埃及的文明征服他们周围地域近三千年。究竟是什么使得他们具备比周边其它文明更强的竞争力呢? 什么使得他们具备比周边其它文明更强的竞争力呢?   可被学习和重复仿效的文明可被学习和重复仿效的文明模式 模式   

知识是来之不易的知识是来之不易的  用模式的方法将知识、经验、和学问代代相传、用模式的方法将知识、经验、和学问代代相传、让后人可以学习前人、超越前人,是一个文明保让后人可以学习前人、超越前人,是一个文明保持竞争力、维护利益和争取优势具有不可替代的持竞争力、维护利益和争取优势具有不可替代的关键。关键。

Page 25: ARC110 软件构架设计的原则和指南

模式模式PatternsPatterns

应用设计应用设计框架框架FrameworksFrameworks

应用实践的参照设计应用实践的参照设计(Reference Implementation)(Reference Implementation)

平台 平台 (P(Platform)latform)

抽象的 抽象的 (a(abstract)bstract)

具体的 具体的 (concrete(concrete))

模式在知识理念中的地位 模式在知识理念中的地位

Page 26: ARC110 软件构架设计的原则和指南

模式的概念 模式的概念 模式模式 (pattern)(pattern) 是人为设计的思路是人为设计的思路它是为解决某个或某些具体问题的答案和解答它是为解决某个或某些具体问题的答案和解答参照参照模式并不是一个完成的具体软件设计或源代码,模式并不是一个完成的具体软件设计或源代码,也不是程序中的计算法也不是程序中的计算法 (Algorithm)(Algorithm) ,而是为,而是为解决共有问题的通用的解答思路和方案模版解决共有问题的通用的解答思路和方案模版(template)(template)模式常常被整合在一起或集中使用,提供一个模式常常被整合在一起或集中使用,提供一个为解决更大和更复杂的问题的解答方案、而组为解决更大和更复杂的问题的解答方案、而组成一个解决问题的通用框架成一个解决问题的通用框架 (framework)(framework)

Page 27: ARC110 软件构架设计的原则和指南

框架的概念 框架的概念 框架框架 (framework)(framework) 是在使用模式的基础上,是在使用模式的基础上,具体采用一个或多个模式,为解决具体的应用具体采用一个或多个模式,为解决具体的应用问题而建立的答案问题而建立的答案框架为开发软件和系统提供了一个高效率的开框架为开发软件和系统提供了一个高效率的开发环境发环境

统一的平台和开发工具统一的平台和开发工具最高效率地采用被验证了的模式、技术、组件最高效率地采用被验证了的模式、技术、组件推动软件再使用和质量的提高、避免重复开发推动软件再使用和质量的提高、避免重复开发充分利用大量共享的开发知识充分利用大量共享的开发知识

目前的通用框架目前的通用框架.NET Framework,.NET Framework, Web Sphere,Web Sphere, etc.etc.

Page 28: ARC110 软件构架设计的原则和指南

Mobile Client Software FactoryMobile Client Software Factory RI: RI: AdventureWorks2GoAdventureWorks2Go

Business Logic

Data and Web Svc

Occasionally Connected Web Services

Data Synchronization

Business Logic

Management

Deployment

Logging

User Experience

WinForms CAB Extensions for

Mobile

Views

Presenters

Business Logic

ControllersBusiness

Workflows CAB

Configuration

Replication

Web Services Calls

GatewayStaging DB

Business DataConfiguration DataDeployment Data

Web Services

Admin Console

VS.NETMobile Designer

Form FactorDot Density (DPI)Orientation

Mobile Device

Business TransactionsLogging

QueuesManaging Subscriptions

Business Entities

User Experience

Security

Web Service CredentialsAuthorization

ConnectivityManaging Connection

Physical Addresses

参照设计的案例参照设计的案例

Page 29: ARC110 软件构架设计的原则和指南

信息系统的构架设计信息系统的构架设计

Page 30: ARC110 软件构架设计的原则和指南

Functional Aspect of Architecture

Functional Requirements Operational Requirements

Operational Aspect of Architecture

Konceptuella vyerConceptual viewsConceptual views Conceptual viewsKonceptuella vyerConceptual views

Konceptuella vyerConceptual viewsLogical views Konceptuella vyerConceptual viewsLogical views

Konceptuella vyerConceptual viewsPhysical views Konceptuella vyerConceptual viewsPhysical views

Solution Development Hardware setup and operations

ToolsPatterns

Installation packages

Network ofcomputers etc.

Configuration tools, standards

Components

Interface

Operation

Signature

Collaboration

Interaction

Sub-System

Node

Connection

Deployment Unit

Walkthrough

Performance

Availability

Security

Viability

System Management

IT System Architecture

Application Focus Infrastructure Focus

More abstract views

More concrete views

信息系统的构架和组件信息系统的构架和组件

Page 31: ARC110 软件构架设计的原则和指南

总结总结借用模式的概念来进行设计借用模式的概念来进行设计采用先进的设计框架和工具来提高开发的效采用先进的设计框架和工具来提高开发的效率率把信息系统的构架设计的框架来作为进行你把信息系统的构架设计的框架来作为进行你的系统的设计思考参照的系统的设计思考参照

Page 32: ARC110 软件构架设计的原则和指南

由笔者所著、由上海交大出版社于由笔者所著、由上海交大出版社于 20052005 年年 88月出版的“月出版的“软件开发项目管理软件开发项目管理”一书”一书书本销售:书本销售:

各地新华书店各地新华书店互动网上书店:互动网上书店: http://www.china-pub.com/computers/common/info.asp?id=27300http://www.china-pub.com/computers/common/info.asp?id=27300

当当网上书店:当当网上书店: http://www.dangdang.com/product_detail/product_detail.asp?product_id=9035233http://www.dangdang.com/product_detail/product_detail.asp?product_id=9035233

批量廉价订购联系:批量廉价订购联系:上海交通大学出版社发行科上海交通大学出版社发行科地址:上海市番禺路地址:上海市番禺路 877877号 号 [200230][200230]电话:电话: 021-64071208021-64071208 ,, 6447313664473136联系人:常韶伟(联系人:常韶伟( 1391621758313916217583);李辉();李辉( 1381755414013817554140))  

进一步参照 进一步参照

Page 33: ARC110 软件构架设计的原则和指南

参加参加中国项目管理俱乐部中国项目管理俱乐部的社区论坛讨的社区论坛讨论论 阅读作者和其他读者的留言阅读作者和其他读者的留言 向作者提问及提供反馈意见向作者提问及提供反馈意见 交流学习心得交流学习心得

    www.chinapmclub.comwww.chinapmclub.com   

社区资源社区资源

Page 34: ARC110 软件构架设计的原则和指南

问答问答谢 谢 大 家 谢 谢 大 家 !!微软公司 中国事务办公室微软公司 中国事务办公室首席项目经理 栾跃首席项目经理 栾跃

Page 35: ARC110 软件构架设计的原则和指南
Page 36: ARC110 软件构架设计的原则和指南
Page 37: ARC110 软件构架设计的原则和指南
Page 38: ARC110 软件构架设计的原则和指南

Add link to external Community websiteAdd link to external Community websiteList top 3 newsgroups related to this slideList top 3 newsgroups related to this slide

112233

Advise when your next chat isAdvise when your next chat isNext user group meeting you will be atNext user group meeting you will be atAdd Other related 3rd party sitesAdd Other related 3rd party sites

Page 39: ARC110 软件构架设计的原则和指南

讲师的讲师的 Chalk TalkChalk Talk 和其他和其他 SessionSession

Page 40: ARC110 软件构架设计的原则和指南

与本次主题有关的与本次主题有关的 SessionSession 和活动和活动