部分和章节 本书大致从构架商业周期的角度,分为4部分讲述了构架如何适合企业的需要。
第3,6,8,13,15,16和17章提供了案例分析,在各章的标题中已明确标出。
第一章 构架商业周期
系统的构架视图是抽象的,它不考虑实现、算法和数据表示的细节,集中研究“黑盒”元素的行为和交互。在设计具有所期望属性的系统时,开发软件构架是第一步。
构架商业周期的概念:系统需求来自于企业目标,构架来自于系统需求,系统来自于构架。构架与设计师的经验、当时的技术水平有着密切的联系。
如果知道了系统需求,我们就可以为此系统构建架构吗?这种观点是缺乏元件的,试想一下,如果把某个系统的需求分析文档分别交给2个不同组织工作的设计师,结果会如何呢?这2个设计师是给出同一个架构,还是2个不同的架构呢?
答案是:一般情况下,会给出2个不同的架构。这一结果立刻就可以证明系统需求决定架构的观点是错误的。显然,在形成架构的过程中,还有其他的一些因素在起作用,如果找不出这些因素,我们只能在黑暗中进行摸索。 我们关注的焦点问题是:系统的软件构架与构建系统时的环境及系统未来所处的环境有什么关系?此问题的答案就是组织本书内容所遵循的原则。软件构架是技术、商业和社会等诸多因素作用的结果,而软件构架的存在反过来又会影响技术、商业和社会环境,从而影响到未来的构架。我们把这种相互影响的周期--从环境到架构又返回到环境--称作构架商业周期(Architecture Business Cycle,ABC)。
本书详细讨论构架商业周期如下方面:
构架的产生 构架也是若干商业和技术决策的结果。构架的设计受诸多因素的影响,而这些影响因素的实现又随构架所处环境的不同而异。即使是同一个设计师设计某个系统,在时间要求很紧迫和时间要求比较宽松的情况下,所做的决策也会有所不同。如果对设计没有时间限制,他会做出不同的选择。即使在系统需求、硬件环境、支持软件和人力资源等方面的条件完全相同的情况下,某个设计师现在所能设计出的系统和他5年前所能设计出的系统也很可能是不一样的。
在任何一次开发中,系统需求都能够明确反映出对系统最终特性的某些期望。并不是系统需求中的所有内容都和系统最终具备的特性直接相关。开发过程或某个工具的选用可能会受到系统需求的制约,但对系统需求的表述仅仅是万里长征第一步。如果不能满足除系统需求之外的其他一些要求,所开发出来的系统很可能就像不能正常运行的系统一样一文不值。
我们通过确定与架构有关的影响因素开始构建ABC。
构架受系统涉众的影响 很多人和组织都对构建软件系统感兴趣。我们把这样的人或组织称为涉众:客户、最终用户、开发人员、项目经理、维护人员以及那些对系统进行市场营销活动的人等等。这些涉众所关注的问题各不相同,但都要求系统能够在他们所关注的方面提供保证或优化。这可能是要求系统在运行时具有一定的特征、能够在特定的硬件平台上良好运行、用户能够轻松地定制系统、实现短的上市时间或较低的开发成本、使公司雇用到有专长的程序员或提供广泛的功能,如此种种,不一而足。图1.2给出了设计师采纳有帮助的涉众的“建议”的情况。
一个得到各方认可的系统需要在以下方面达到相应要求:性能、可靠性、可用性、平台兼容性、内存的利用、网络使用程度、安全性、可修改性、易用性,与其他系统的互操作性以及行为。上述属性,以及其他一些属性,都会影响此系统的某个涉众对该系统的评价。
最基本的问题是,每个涉众所关心的问题和期望的目标各不相同,而且有些是相互矛盾的。现实情况是设计师通常不得不填补空白并协调冲突。
构架受开发组织的影响 除了通过需求表示的组织目标外,构架还受开发组织的结构或本质的影响。人员的技能也是一个影响因素,开发进度和预算也会对架构产生影响。
开发组织对软件构架的影响可以分为3类,即直接影响、长远影响和组织结构的影响。
构架受设计师的素质和经验的影响 设计架构时所做的各种选择与设计师本人所受的教育或培训背景、对其他成功构架的了解以及对某些性能极佳或极差的系统的了解有关。设计构架时,设计师可能想实践一下某种构架模式,或者是尝试使用在某本书上或某门课程中所学到的技巧。
构架受技术环境的影响 技术环境可以看作是对设计师素质和经验的特殊反映。设计某个构架时所处的技术环境将会对构架的设计产生影响。这里所说的技术环境包括行业中的通常做法或在设计师所属专业团体中占主导地位的软件工程技巧。在当今的技术环境下,如果有哪个设计师根本就不考虑用基于Web、面向对象和支持中间件的方法来设计信息系统,我们就不得不佩服他的勇气了。
影响构架的其他因素 影响构架的因素有很多。一些只是隐含的,还有一些则很明显是冲突的。软件开发者几乎从来没有真正理解过企业目标所要求的系统性能,更不必说完全实现了。确实,连客户的需求都很少完全编成文档,这意味着还没解决不同涉众目标之间不可避免的冲突。
设计师需要尽早知道并理解特性、源以及对项目的限制的优先级。因此,设计师必须确定出各类涉众,并积极促使他们表达出对系统的需求或期望。如果不做这样的工作,在设计展开后,就会出现某些涉众要求设计师解释为什么不采用所提出的其他方案的情况,这显然会影响项目的开发进度,降低工作效率。如果早期工作做得好,设计师就能清楚在设计构架时所应考虑的制约条件,调整对系统的期望,与有关各方商讨各因素的优先级并进行权衡。构架评审和迭代原型建立是实现此目标的两个手段。
要设计好的构架,设计师仅具有高超的专业技术是不够的,这个道理显而易见。设计师需要不断地向涉众解释针对不同属性所做的各种取舍,以及为何无法满足涉众的所有要求。因此,成功的设计师还必须具备与人交往、谈判和交流的技巧。 图1.3给出了对设计师(因此也是对构架)的影响。如图所示,设计师会受到产品需求(从涉众那儿获得)、所在开发组织的结构和目标、可利用的技术环境及自身的素质和经验的影响。
构架对诸影响因素的反作用 本书的主旨就是要阐明企业目标、产品需求、设计师的经验、构架和最终系统之间的关系--它们构成带有反馈回路的、可由开发组织实施管理的周期。开发组织对这个周期管理得好,就能够不断成长壮大,拓展其经营范围,充分利用以前在构架和系统构建方面的投资。图1.4给出了该周期中的这些反馈回路。可以看到,有些反馈是来自构架本身的,而有些则来自根据构架所构建的系统。
下面我们就来看一下该周期是如何运作的:
上述以及其他反馈机制构成我们所称的构架商业周期。图1.4所示的构架商业周期向我们展示了开发组织的业务和文化对软件构架的影响。而构架反过来又成为影响所开发系统各方面属性的决定性因素。但我们也应当认识到,构架商业周期还与精明的开发组织利用开发构架时所做的组织上的或技术经验上的效应有关,这些组织通常会适当调整企业经营策略,以适应未来项目的开发。
软件过程和构架商业周期 我们把对软件开发活动的组织、规范和管理称为软件过程。在创建软件构架,使用该构架实现设计,然后实现或管理目标系统或应用软件的演变的过程中,涉及到哪些活动?这些活动包括
构架活动 就像构架商业周期的结构所显示的那样,这些活动之间存在着复杂的反馈关系。下面我们就对这些活动逐一进行简单的介绍。
什么样的构架才算好 构架并不是注定是好的或是坏的。各种构架总是能够或多或少的满足某些系统的要求,但是,在设计构架时必须遵循一些实践准则。当然,忽视某一条准则并不一定意味着所设计的构架酱油知名的缺陷,但至少应当把准则当作一个警示,进行相应的研究分析。
我们把从软甲开发中所得到的经验分为两大类:关于过程的建议和关于产品(或结构)的建议。我们所提出的关于过程的建议主要有如下几条:
我们所提出的关于结构的建议主要有如下几条:
原文:http://www.cnblogs.com/youxin/p/3514105.html