您好,欢迎访问三七文档
◆中科院计算所培训中心高级软件系统架构师培训软件架构设计的思想与模式中科院计算所培训中心谢新华第一章软件架构设计思想与体系创建在软件组织中,架构师的作用是举足轻重的。本课程针对企业开发昀关注的问题深入研讨,抓住投入产出比这个企业的核心价值,讨论架构设计如何使这个核心价值得以实现。我们认为,一个设计如果必须高手云集才能生产出符合质量要求的产品,并不一定是好的架构。架构设计的目标是力争使用总体上能力一般的队伍,通过组织和设计的力量,生产出符合质量要求的产品,从投资回报的角度,两者效果是完全不一样的。另一方面,由于需求变更不可避免,而需求的变更必然造成设计调整进而造成总体投入的增加,这会极大的影响到投资回报,所以我们必须研究架构设计如何更好的适应变更,通过设计确保变更、维护与升级的成本下降。对这一系列问题的深入思考,成为现代软件架构设计的核心思维。软件企业必须认真研究如何培养高水平的架构人员,但仅仅把架构设计作为一个孤立的节点来讨论,或者仅仅就架构谈架构的在一个很窄的思维空间中研究问题是没有意义的。任何设计都来自于目的,我们应该把架构设计放在整个项目过程的大环境下来研究,针对每个关键节点对设计的影响特点进行研讨,这样才可能真正理解架构设计真正精髓的东西,使未来的设计工作就会变得极有主动性和想象力。随着经济全球化进程的不断推进,知识经济的时代已经到来。要增加软件产品的国际竞争力,软件质量作为企业发展的战略问题变得越来越重要,软件质量正被视为软件企业的生命。软件质量管理开始在软件组织内全面开展,强烈的质量意识正慢慢扎根于软件技术和管理人员的心灵深处,直至整个组织质量文化的形成,所以,如何设计高质量的软件产品,也成为软件架构设计的重要主题。统计表明,软件质量问题80%是由需求分析和架构设计两个环节造成的,因此,在需求分析的时候,我们必须研究如何充分理解用户需求,给各方面提供充分而有效的信息,在架构设计上,研究如何尽可能利用已有信息,合理组织技术方案,把人和任务作为一个重要因素进行考虑,在达到质量需求的基础上,使高的投资回报率成为可能,在项目过程管理上,如何与架构设计匹配协调,使技术方案的高质量实现成为可能,同时对于产品线架构和核心资产库构建的理论、方法、组织和技术给于足够的重视,这都需要项目经理、分析师、架构师具有很高的水平。架构设计绝不是某个神秘人物冥思苦想然后又自鸣得意的产物,架构设计应该是集体智慧的成果,软件设计与开发也应该是集体共通劳动的结果,重要的是各种相互矛盾的要求的合理平衡,这都需要有非常良好的方法,把团队的智慧集中起来,如何充分激发集体的智慧,也是一个架构设计师必须具备的能力。影响这个课程主体的主要思想,是21世纪是软件规模经济的时代,下图表达了工具、构件和过程的三个基本技术的进步,图中表达了在假定要求的质量和人员等级不变的情况下,投资回报(ROI)的关系,纵坐标表达了实现软件的单位成本(代码行、功能点),横坐标表达了软件规模,这里表示了随着时代的进步,同样规模的软件成本在大幅下降,投资回报在大幅上升。◆中科院计算所培训中心高级软件系统架构师培训伴随着非常大型的项目,比如由系统组成的系统,长生命力的产品以及多个相似项目的产品线,软件组织将达到更好的经济规模。这种规模软件经济的理念,对我的设计方法和思路提出了和过去完全不同的要求,重用、复用和变更促成为重要的主题。架构设计应该从方法论的角度、从质量属性对架构设计影响的角度、从建立可度量的架构质量保证体系以及安全性和可扩展性的角度,在理论和实践两方面全方位研究问题。1.1软件架构师的角色和应掌握的知识体系一、软件架构的定义与问题软件架构(softwarearchiecture)是一组有关如下要素的重要决策:软件系统的组织,构成系统的结构化元素,接口和它们相互协作的行为的选择,结构化元素和行为元素组合成粒度更大的子系统的方式的选择,以及指导这一组织(元素及其接口、协作和组合方式)的架构风格的选择。软件架构是对系统整体结构设计的刻划,包括全局组织与控制结构,构件间通讯、同步和数据访问的协议,设计元素间的功能分配,物理分布,设计元素集成,伸缩性和性能,设计选择等。但是,所谓架构其实并不仅仅指的是软件产品体系结构设计,它还包括管理架构、过程架构以及质量保证架构等一系列问题的研究,因为高质量软件并不能只靠一个节点解决问题,而是需要有一个全面的解决方案。重要的是要知道,一个软件系统的质量,很大程度上是由架构设计的质量决定的,所以,◆中科院计算所培训中心高级软件系统架构师培训研究架构设计的思想和方法,成为软件设计领域中一个十分引人注目的问题。但是很长时间以来,人们大都把目光关注在流程、方法、结构原理甚至编码的本身,而不太注意架构设计昀本质的东西,思考的深度也欠深入,结果,很多产品即使设计出来,后期运行中也是问题百出。这就给我们提出了一个问题,架构设计的核心思维到底是什么?什么是好的架构设计呢?首先,任何软件系统都是以满足需求作为目的,所以,好的架构设计必须以深入全面的需求分析作为基础,事实上架构设计是没有统一的模式的,任何模式只有针对问题才有意义。作为架构设计来说,必须对需求分析有足够的理解,这样才能有针对性地解决问题,才可能设计出真正优秀的产品来。但是,如果需求分析本身问题的信息就不足,那怎么可能设计出解决问题到位的架构来呢?另一方面,任何架构思想的实现,都依赖于好的项目管理。项目管理必须与架构思想相匹配才能发挥作用。一个好的架构设计,必须关注成本,也必须关注时间,以期在约定的时间内、不超过规定的成本、生产出符合质量要求的软件产品来。因此,系统架构师应该仔细研究现代项目管理的思想和方法,吃透其中的精髓,根据自己的设计思想,提出项目管理的解决方案。谈到项目管理,人们往往想到的是某种规范,某种文档模版,甚至某种流程。当然这些是重要的,不过,无论多么美好的规范,如果不能和自己的实际情况结合起来,尤其是和自己的架构特点结合起来,有的放矢的改进自己的过程,从而达到降低成本提高质量的目的,那什么样的规范都是没有意义的。作为一个架构师来说,上述的讨论引发了三个核心思维,一个是架构设计的源泉来自于需求分析,第二个是架构设计重心和特点来自于质量需求(非功能性需求),第三个观点是,架构的实现依赖于好的项目管理。因此,软件架构设计是一个系统工程,它需要系统构架师有很宽的知识面,从需求分析、架构设计到类设计甚至代码实现一直到项目管理都需要有透彻的理解,这之间的关系是你中有我我中有你,是不可能截然分开的。必须说明,软件系统设计的方法不是一个僵化的规则,关键是在实践中实事求是的摸索规律,从而找出符合实际达到要求的设计来。二、软件复用和系统架构现代软件架构设计的原则来自于软件复用,软件复用是指重复使用“为了复用目的而设计的软件”的过程。在过去的开发实践中,我们也可能会重复使用“并非为了复用目的而设计的软件”的过程,或者在一个应用系统的不同版本间重复使用代码的过程,这两类行为都不属于严格意义上的软件复用。通过软件复用,在应用系统开发中可以充分地利用已有的开发成果,消除了包括分析、设计、编码、测试等在内的许多重复劳动,从而提高了软件开发的效率,同时,通过复用高质量的已有开发成果,避免了重新开发可能引入的错误,从而提高了软件的质量。良好的软件架构提供了构件组装的基础和上下文。一个典型的软件架构是由系统中的构件、连接和约束构成的配置格局。从这个观点看,架构决不是概要设计,架构设计本身就可以看成一个项目,架构的结果应该是一个可执行、可验证的产品,也必须通过评审,为昀终产品的复用与可持续发展打下框架上的基础。研究软件构架有利于发现不同系统的高层共性、保证灵活和正确的系统设计、对系统的整体结构和全局属性进行规范约束、分析、验证和管理。将构架作为系统构造和演化的基础,可以实现大规模、系统化的软件复用。研究软件架构对于进行高效的软件工程具有非常重要的意义:◆中科院计算所培训中心高级软件系统架构师培训通过对软件架构的研究,有利于发现不同系统在较高级别上的共同特性;z获得正确的架构对于进行正确的系统设计非常关键;z对各种软件架构的深入了解,使得软件工程师可以根据一些原则在不同的软件架构之间作出选择。从架构的层次上表示系统,有利于系统较高级别性质的描述和分析。特别重要的是,在基于复用的软件开发中,为复用而开发的软件架构本身就可以作为一种大粒度的、抽象级别较高的软件构件进行复用,而且软件架构还为构件的组装提供了基础和上下文,对于成功的复用具有非常重要的意义。软件架构研究如何快速、可靠地用可复用构件构造系统的方式,着眼于软件系统自身的整体结构和构件间的互联。其中主要包括:软件架构原理和风格,软件架构的描述和规范,特定领域软件架构,构件如何向软件构架的集成机制等。软件开发实际上是从问题域向昀终解决方案逐步映射和转换的过程,而特定领域软件架构(DSSA)和软件架构风格(ArchitecturalStyle)分别从问题域和软件解决方案两个方向提供了若干经过考验的候选转换路径。特定领域软件架构(DSSA):这是一个领域中的所有应用系统所共有的体系结构,是针对领域模型中的领域需求给出的解决方案,也是识别、开发和组织特定领域可复用构件的基础。在国内外的金融、MIS、通讯和军事等领域中都开始注意到开发特定领域的软件架构和集成框架的重要性。架构风格(AS):这是根据系统结构的组织模式确定了一组可以用于某种风格实例中的构件和连接方案,以及它们的拓扑结构、组装规则以及局部和全局约束,从而定义了一个面向系统结构的架构家族。软件架构风格与面向对象的设计模式或框架一样,为设计经验的复用提供了技术支持。三、软件架构师的角色尽管对软件架构师的角色有这样或那样的定义,但大体上下面几个职责是必需的:1、技术负责,解决方案的提供者;2、与项目经理合作,制定计划,决定成员,组织团队;3、保证项目按计划和走向完成;由于设计是由需求驱动的,所以,掌握需求分析的技巧,是一个好的架构师必备的能力。事实上,现代迭代开发所有的驱动力都在于需求变更,如果架构师不关注需求,不关注和用户的讨论和沟通,那是很难设计出真正有用的东西来的。另一方面,架构设计的结果主要依赖于对质量属性的理解,不同的质量需求往往可能得到一个完全不同架构设计,所以架构师对质量问题需要有一个透彻的理解。软件架构设计是一个非常严肃、细致、敏感而且困难的工作,所以我们必须摒弃那些华而不实的名词堆砌,一点一滴认真做起,扎扎实实的努力,实实在在的积累经验,尤其是在失败中积累经验,这是一个软件架构师成功的必由之路。1.3在信息技术战略规划(ITSP)中的软件架构好的架构设计,必须在信息系统战略规划(ITSP)的大环境下进行设计,才可能设计出真正优秀而且有价值的系统来,那么什么是信息系统战略规划呢?信息技术战略规划(ITSP)的核心思想简述如下:在信息时代知识经济的背景下,正确的结合IT规划,整合企业的核心竞争力,在新一◆中科院计算所培训中心高级软件系统架构师培训轮的产生、发展中取得更大的市场竞争力是必要的。信息化的问题首先是企业管理层概念的问题。企业管理层的重视,和对信息化的高度认同是企业信息化的关键所在。当前国内很多企业管理层很关心资本运作的问题,而对很多国企业而言,管理层昀关心的是扭亏增盈。信息化建设投入大、周期长、见效慢、风险高,往往不是企业需要优先解决的问题,导致管理层对信息化的重视程度不够,无法就信息化建设形成共识企业管理信息化必然带来管理模式的变化,如果对这种变化不适应,有抵触心态,或者仅是为了形象问题,赶潮流搞信息化。或者由于国家提出信息化带动工业化,信息化成为一种时髦,信息化工程往往成为企业的形象工程。结果软件架构的设计仅仅是企业目前业务流程的复制,并不可能给企业带来实实在在的好处。有些公
本文标题:软件架构设计
链接地址:https://www.777doc.com/doc-5088475 .html