微软应用软件架构设计指南20 pplication Architecture Guide 2.0 Designing Application on the. NET Platform 王冠三博士 微软总部研究院首席研究员 任N|SD部门首席架构师
微软应用软件架构设计指南2.0 Application Architecture Guide 2.0 Designing Application on the .NET Platform 王冠三博士 微软总部研究院首席研究员 任NISD部门首席架构师
应用软件架构设计指南20 日程 指南导读 应用软件架构设计基础 微软NET平台概述 Rich- Client visual studio演示 网络应用软件的架构设计 移动应用软件的架构设计 案例:微软语音产品设计过程
应用软件架构设计指南2.0 • 日程 – 指南导读 – 应用软件架构设计基础 – 微软.NET平台概述 – Rich-Client Visual Studio 演示 – 网络应用软件的架构设计 – 移动应用软件的架构设计 – 案例:微软语音产品设计过程
微软应用软件架构设计指南2.0 背景概述 2002版的“基于NET的应用软件架构设计:设 计应用软件和服务”( Application Architecture for. NET: Designing Application and Services 基于原理的指南,整合最新实践和技术 微软内部的经验为主,外部专家和用户的积极 参与 本人的参与: 语音AP(SAP)架构转型 ·W3C,ECMA,|sO代表
微软应用软件架构设计指南2.0 • 背景概述 – 2002版的“基于.NET的应用软件架构设计:设 计应用软件和服务”(Application Architecture for .NET: Designing Application and Services) – 基于原理的指南,整合最新实践和技术 – 微软内部的经验为主,外部专家和用户的积极 参与 – 本人的参与: • 语音API(SAPI)架构转型 • W3C, ECMA, ISO 代表
微软应用软件架构设计指南2.0 目的 主要对象:解决方案架构师和开发组长 更加有效地研发NET平台上的应用软件 对其它平台上的软件开发也很有参考价值 提供设计层面的指南 注重最常见的应用类别 有助于架构师选择正确的架构设计方案,选择 正确的技术,做出更有效的设计决策,遵循正 确的模式( pattern)
微软应用软件架构设计指南2.0 • 目的 – 主要对象:解决方案架构师和开发组长 – 更加有效地研发.NET平台上的应用软件 – 对其它平台上的软件开发也很有参考价值 – 提供设计层面的指南 – 注重最常见的应用类别 – 有助于架构师选择正确的架构设计方案,选择 正确的技术,做出更有效的设计决策,遵循正 确的模式(pattern)
微软应用软件架构设计指南2.0 指南的组织机构:围绕六个方面 典型的架构设计风格( arch styles) 应用类别( app types) 架构设计框架( arch frame) 质量属性( quality attributes) 原理,模式,实践(pr rinciples, patterns, practices) 技术与相关功能(tech& capabilities)
微软应用软件架构设计指南2.0 • 指南的组织机构:围绕六个方面 – 典型的架构设计风格(arch styles) – 应用类别(app types) – 架构设计框架(arch frame) – 质量属性(quality attributes) – 原理,模式,实践(principles, patterns, practices) – 技术与相关功能(tech & capabilities)
微软应用软件架构设计指南2.0 主要特征( features) 应用软件的架构设计框架( framework) 模块化 整体化 专业知识 充分验证(微软内部测试评价+外部反馈 不断的局部演进: Net framework已到35版(4.0 版Beta)
微软应用软件架构设计指南2.0 • 主要特征(features) – 应用软件的架构设计框架(framework) – 模块化 – 整体化 – 专业知识 – 充分验证(微软内部测试评价+外部反馈 • 不断的局部演进:.Net Framework已到3.5版(4.0 版Beta)
微软应用软件架构设计指南2.0 应用架构设计基础( fundamentals) 架构设计 设计一个结构的解决方案的过程,以满足技术和运 行需求,同时以最佳的方法达到质量指标要求 涉及众多因素和相关人员 涉及一系列的决策 架构设计的定义 没有统一的定义:是工程,是科学,也是艺术 通常包含构件及其结构,构件之间的关系
微软应用软件架构设计指南2.0 • 应用架构设计基础(fundamentals) – 架构设计 • 设计一个结构的解决方案的过程,以满足技术和运 行需求,同时以最佳的方法达到质量指标要求 • 涉及众多因素和相关人员 • 涉及一系列的决策 – 架构设计的定义 • 没有统一的定义:是工程,是科学,也是艺术 • 通常包含构件及其结构,构件之间的关系
微软应用软件架构设计指南2.0 三种常见的定义(一) Software architecture encompasses the set of significant decisions about the organization of a software system including Selection of the structural elements and their interfaces by which the system is composed Behavior as specified in collaboration among those elements Composition of these structural and behavioral elements into larger subsystems Architectural style that guides this organization Software architecture also involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology constraints, tradeoffs and aesthetic concerns
微软应用软件架构设计指南2.0 • 三种常见的定义(一) “Software architecture encompasses the set of significant decisions about the organization of a software system including: Selection of the structural elements and their interfaces by which the system is composed. Behavior as specified in collaboration among those elements. Composition of these structural and behavioral elements into larger subsystems. Architectural style that guides this organization. Software architecture also involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology constraints, tradeoffs and aesthetic concerns
微软应用软件架构设计指南2.0 种定义(二) The highest-level breakdown of a system into its parts The decisions that are hard to change There are multiple architectures in a system What is architecturally significant can change over a systems lifetime In the end architecture boils down to whatever the important stuff is
微软应用软件架构设计指南2.0 • 三种定义(二) The highest-level breakdown of a system into its parts. The decisions that are hard to change. There are multiple architectures in a system. What is architecturally significant can change over a system’s lifetime. In the end, architecture boils down to whatever the important stuff is
微软应用软件架构设计指南2.0 三种定义(三) The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. Architecture is concerned with the public side of interfaces; private details of elements- details having to do solely with internal implementation -are not architectural
微软应用软件架构设计指南2.0 • 三种定义(三) “The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. Architecture is concerned with the public side of interfaces; private details of elements— details having to do solely with internal implementation—are not architectural