软件架构设计思想与模式

上传人:第*** 文档编号:61308929 上传时间:2018-11-28 格式:PDF 页数:217 大小:1.40MB
返回 下载 相关 举报
软件架构设计思想与模式_第1页
第1页 / 共217页
软件架构设计思想与模式_第2页
第2页 / 共217页
软件架构设计思想与模式_第3页
第3页 / 共217页
软件架构设计思想与模式_第4页
第4页 / 共217页
软件架构设计思想与模式_第5页
第5页 / 共217页
点击查看更多>>
资源描述

《软件架构设计思想与模式》由会员分享,可在线阅读,更多相关《软件架构设计思想与模式(217页珍藏版)》请在金锄头文库上搜索。

1、中科院计算所培训中心 高级软件系统架构师培训 http:/www.TCICT.cn - 1 - 软件架构设计的思想与模式 中科院计算所培训中心中科院计算所培训中心 谢新华谢新华 第一章 软件架构设计思想与体系创建 在软件组织中,架构师的作用是举足轻重的。本课程针对企业开发最关注的问题深入 研讨,抓住投入产出比这个企业的核心价值,讨论架构设计如何使这个核心价值得以实现。 我们认为, 一个设计如果必须高手云集才能生产出符合质量要求的产品, 并不一定是好的架 构。架构设计的目标是力争使用总体上能力一般的队伍,通过组织和设计的力量,生产出符 合质量要求的产品,从投资回报的角度,两者效果是完全不一样的。

2、另一方面,由于需求变 更不可避免, 而需求的变更必然造成设计调整进而造成总体投入的增加, 这会极大的影响到 投资回报,所以我们必须研究架构设计如何更好的适应变更,通过设计确保变更、维护与升 级的成本下降。对这一系列问题的深入思考,成为现代软件架构设计的核心思维。 软件企业必须认真研究如何培养高水平的架构人员,但仅仅把架构设计作为一个孤立 的节点来讨论,或者仅仅就架构谈架构的在一个很窄的思维空间中研究问题是没有意义的。 任何设计都来自于目的, 我们应该把架构设计放在整个项目过程的大环境下来研究, 针对每 个关键节点对设计的影响特点进行研讨, 这样才可能真正理解架构设计真正精髓的东西, 使 未来的

3、设计工作就会变得极有主动性和想象力。 随着经济全球化进程的不断推进,知识经济的时代已经到来。要增加软件产品的国际 竞争力, 软件质量作为企业发展的战略问题变得越来越重要, 软件质量正被视为软件企业的 生命。 软件质量管理开始在软件组织内全面开展, 强烈的质量意识正慢慢扎根于软件技术和 管理人员的心灵深处,直至整个组织质量文化的形成,所以,如何设计高质量的软件产品, 也成为软件架构设计的重要主题。 统计表明,软件质量问题 80%是由需求分析和架构设计两个环节造成的,因此,在需 求分析的时候,我们必须研究如何充分理解用户需求,给各方面提供充分而有效的信息,在 架构设计上,研究如何尽可能利用已有信息

4、,合理组织技术方案,把人和任务作为一个重要 因素进行考虑, 在达到质量需求的基础上, 使高的投资回报率成为可能, 在项目过程管理上, 如何与架构设计匹配协调, 使技术方案的高质量实现成为可能, 同时对于产品线架构和核心 资产库构建的理论、方法、组织和技术给于足够的重视,这都需要项目经理、分析师、架构 师具有很高的水平。 架构设计绝不是某个神秘人物冥思苦想然后又自鸣得意的产物,架构设计应该是集体 智慧的成果, 软件设计与开发也应该是集体共通劳动的结果, 重要的是各种相互矛盾的要求 的合理平衡,这都需要有非常良好的方法,把团队的智慧集中起来,如何充分激发集体的智 慧,也是一个架构设计师必须具备的能

5、力。 影响这个课程主体的主要思想,是 21 世纪是软件规模经济的时代,下图表达了工具、 构件和过程的三个基本技术的进步,图中表达了在假定要求的质量和人员等级不变的情况 下,投资回报(ROI)的关系,纵坐标表达了实现软件的单位成本(代码行、功能点) ,横 坐标表达了软件规模,这里表示了随着时代的进步,同样规模的软件成本在大幅下降,投资 回报在大幅上升。 中科院计算所培训中心 高级软件系统架构师培训 http:/www.TCICT.cn - 2 - 伴随着非常大型的项目, 比如由系统组成的系统, 长生命力的产品以及多个相似项目的 产品线,软件组织将达到更好的经济规模。这种规模软件经济的理念,对我的

6、设计方法和思 路提出了和过去完全不同的要求,重用、复用和变更促成为重要的主题。 架构设计应该从方法论的角度、从质量属性对架构设计影响的角度、从建立可度量的 架构质量保证体系以及安全性和可扩展性的角度,在理论和实践两方面全方位研究问题。 1.1 软件架构师的角色和应掌握的知识体系软件架构师的角色和应掌握的知识体系 一、软件架构的定义与问题一、软件架构的定义与问题 软件架构(software archiecture)是一组有关如下要素的重要决策: 软件系统的组织,构成系统的结构化元素,接口和它们相互协作的行为的选择,结构化 元素和行为元素组合成粒度更大的子系统的方式的选择, 以及指导这一组织 (元

7、素及其接口、 协作和组合方式)的架构风格的选择。 软件架构是对系统整体结构设计的刻划,包括全局组织与控制结构,构件间通讯、同步 和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设 计选择等。 但是,所谓架构其实并不仅仅指的是软件产品体系结构设计,它还包括管理架构、过程 架构以及质量保证架构等一系列问题的研究,因为高质量软件并不能只靠一个节点解决问 题,而是需要有一个全面的解决方案。 重要的是要知道, 一个软件系统的质量, 很大程度上是由架构设计的质量决定的, 所以, 中科院计算所培训中心 高级软件系统架构师培训 http:/www.TCICT.cn - 3 - 研

8、究架构设计的思想和方法, 成为软件设计领域中一个十分引人注目的问题。 但是很长时间 以来,人们大都把目光关注在流程、方法、结构原理甚至编码的本身,而不太注意架构设计 最本质的东西,思考的深度也欠深入,结果,很多产品即使设计出来,后期运行中也是问题 百出。 这就给我们提出了一个问题, 架构设计的核心思维到底是什么?什么是好的架构设计 呢? 首先,任何软件系统都是以满足需求作为目的,所以,好的架构设计必须以深入全面的 需求分析作为基础, 事实上架构设计是没有统一的模式的, 任何模式只有针对问题才有意义。 作为架构设计来说,必须对需求分析有足够的理解,这样才能有针对性地解决问题,才可能 设计出真正优

9、秀的产品来。但是,如果需求分析本身问题的信息就不足,那怎么可能设计出 解决问题到位的架构来呢? 另一方面,任何架构思想的实现,都依赖于好的项目管理。项目管理必须与架构思想相 匹配才能发挥作用。一个好的架构设计,必须关注成本,也必须关注时间,以期在约定的时 间内、不超过规定的成本、生产出符合质量要求的软件产品来。因此,系统架构师应该仔细 研究现代项目管理的思想和方法,吃透其中的精髓,根据自己的设计思想,提出项目管理的 解决方案。 谈到项目管理,人们往往想到的是某种规范,某种文档模版,甚至某种流程。当然这些 是重要的,不过,无论多么美好的规范,如果不能和自己的实际情况结合起来,尤其是和自 己的架构

10、特点结合起来,有的放矢的改进自己的过程,从而达到降低成本提高质量的目的, 那什么样的规范都是没有意义的。 作为一个架构师来说,上述的讨论引发了三个核心思维,一个是架构设计的源泉来自 于需求分析,第二个是架构设计重心和特点来自于质量需求(非功能性需求) ,第三个观点 是,架构的实现依赖于好的项目管理。因此,软件架构设计是一个系统工程,它需要系统构 架师有很宽的知识面, 从需求分析、 架构设计到类设计甚至代码实现一直到项目管理都需要 有透彻的理解,这之间的关系是你中有我我中有你,是不可能截然分开的。必须说明,软件 系统设计的方法不是一个僵化的规则, 关键是在实践中实事求是的摸索规律, 从而找出符合

11、 实际达到要求的设计来。 二、软件复用和系统架构二、软件复用和系统架构 现代软件架构设计的原则来自于软件复用, 软件复用是指重复使用 “为了复用目的而设 计的软件”的过程。在过去的开发实践中,我们也可能会重复使用“并非为了复用目的而设 计的软件”的过程,或者在一个应用系统的不同版本间重复使用代码的过程,这两类行为都 不属于严格意义上的软件复用。 通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析、 设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高 质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。 良好的软件架构提供

12、了构件组装的基础和上下文。 一个典型的软件架构是由系统中的构 件、连接和约束构成的配置格局。从这个观点看,架构决不是概要设计,架构设计本身就可 以看成一个项目,架构的结果应该是一个可执行、可验证的产品,也必须通过评审,为最终 产品的复用与可持续发展打下框架上的基础。 研究软件构架有利于发现不同系统的高层共性、 保证灵活和正确的系统设计、 对系统的 整体结构和全局属性进行规范约束、 分析、 验证和管理。 将构架作为系统构造和演化的基础, 可以实现大规模、系统化的软件复用。 研究软件架构对于进行高效的软件工程具有非常重要的意义: 中科院计算所培训中心 高级软件系统架构师培训 http:/www.T

13、CICT.cn - 4 - ? 通过对软件架构的研究,有利于发现不同系统在较高级别上的共同特性; ? 获得正确的架构对于进行正确的系统设计非常关键; ? 对各种软件架构的深入了解, 使得软件工程师可以根据一些原则在不同的软件架构 之间作出选择。 从架构的层次上表示系统,有利于系统较高级别性质的描述和分析。特别重要的是,在 基于复用的软件开发中, 为复用而开发的软件架构本身就可以作为一种大粒度的、 抽象级别 较高的软件构件进行复用, 而且软件架构还为构件的组装提供了基础和上下文, 对于成功的 复用具有非常重要的意义。 软件架构研究如何快速、 可靠地用可复用构件构造系统的方式, 着眼于软件系统自身

14、的 整体结构和构件间的互联。其中主要包括:软件架构原理和风格,软件架构的描述和规范, 特定领域软件架构,构件如何向软件构架的集成机制等。 软件开发实际上是从问题域向最终解决方案逐步映射和转换的过程, 而特定领域软件架 构(DSSA)和软件架构风格(Architectural Style)分别从问题域和软件解决方案两个方向提供了 若干经过考验的候选转换路径。 特定领域软件架构(特定领域软件架构(DSSA) :) : 这是一个领域中的所有应用系统所共有的体系结构, 是针对领域模型中的领域需求给出 的解决方案,也是识别、开发和组织特定领域可复用构件的基础。在国内外的金融、MIS、 通讯和军事等领域中

15、都开始注意到开发特定领域的软件架构和集成框架的重要性。 架构风格(架构风格(AS): 这是根据系统结构的组织模式确定了一组可以用于某种风格实例中的构件和连接方案, 以及它们的拓扑结构、 组装规则以及局部和全局约束, 从而定义了一个面向系统结构的架构 家族。 软件架构风格与面向对象的设计模式或框架一样, 为设计经验的复用提供了技术支持。 三、软件架构师的角色三、软件架构师的角色 尽管对软件架构师的角色有这样或那样的定义,但大体上下面几个职责是必需的: 1、技术负责,解决方案的提供者; 2、与项目经理合作,制定计划,决定成员,组织团队; 3、保证项目按计划和走向完成; 由于设计是由需求驱动的, 所

16、以, 掌握需求分析的技巧, 是一个好的架构师必备的能力。 事实上,现代迭代开发所有的驱动力都在于需求变更,如果架构师不关注需求,不关注 和用户的讨论和沟通,那是很难设计出真正有用的东西来的。另一方面,架构设计的结果主 要依赖于对质量属性的理解, 不同的质量需求往往可能得到一个完全不同架构设计, 所以架 构师对质量问题需要有一个透彻的理解。 软件架构设计是一个非常严肃、细致、敏感而且困难的工作,所以我们必须摒弃那些华 而不实的名词堆砌,一点一滴认真做起,扎扎实实的努力,实实在在的积累经验,尤其是在 失败中积累经验,这是一个软件架构师成功的必由之路。 1.3 在信息技术战略规划(在信息技术战略规划(ITSP)中的软件架构)中的软件架构 好的架构设计,必须在信息系统战略规划(ITSP)的大环境下进行设计,才可能设计 出真正优秀而且有价值的系统来,那么什么是信息系统战略规划呢? 信息技术战略规划(ITSP)的核心思想简述如下: 在信息时代知识经济的背景下,正确的结合 IT 规划,整合企

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号