进行软件架构设计的益处
文章作者 100test 发表时间 2007:03:13 22:13:02
来源 100Test.Com百考试题网
一般来说,软件架构设计是降低成本,改进质量,按时交付产品和按需交付产品的关键因素。在这篇文章中,我将会把讨论的焦点放在实现这些目标所能带来的好处上面。作为一个构架师,证明我们的存在是没有任何意义的。这个部分将会提供一些方法,这些方法对于把处理架构设计作为一个软件开发过程的关键部分是很有用处的。
架构设计能够满足系统的品质
系统的功能性是软件构架师通过组成体系架构的多种元素之间的交互作用来支持的。然而,架构设计的一个关键特性是,系统的品质是通过某些手段来实现的。软件的品质,例如性能,安全性和可维护性等,它们在缺少统一的架构设计视图时是无法实现的,因为这些品质并不是被限制在一个单一的架构设计元素中,而是渗透在整个架构设计体系中的。例如,为了满足性能要求,可能需要考虑体系架构中的每一个组件的实现时间,同时还要考虑各组件之间通讯所花费的时间。同样地,为了满足安全性要求,可能需要考虑两个组件之间自然的通讯,并且要在需要的特定的地方引入安全性提示组件。所有的这些关系都属于体系架构,在上面的例子中,这些关系包括组件自身的和组件之间的。来源:www.examda.com
一个和架构设计相关的好处是,我们可以尽早的评估项目开发周期中的这些品质。架构设计模型的建立,通常是为了明确的确定我们已经满足了这些品质的要求。这是非常重要的,因为不论写在纸上的体系架构多么的完美,实现的软件才是评价体系架构是否达到这些品质的要求的唯一标准。
架构设计使我们达成一致的目标
架构设计的过程使得不同的涉众达成一致的目标,因为架构设计提供了一个辩论系统解决方案的媒体。为了支持这种辩论,体系架构的过程需要确保架构设计被清楚地传达与理解。一个被有效传达的体系架构使得涉众们可以辩论决议和权衡,反复讨论,最终达成共识。相反,如果一个体系架构没有被有效的传达,那么这种辩论将不会发生。没有了有效的传达,体系架构所带来的结果可能会是低品质的。
在一条相关的说明中,体系架构可能会使构架师之间或者新成员与老成员之间的辩论达成一致(以及他们之间的视图)。我们需要再次强调,只有体系架构被有效传达,它所带来的这个好处才能体现出来。清楚地了解他们正在做什么的开发小组更可能按照需求完成产品的开发。
为此,我再次强调恰当的文档化体系架构是非常重要的,这是软件构架师的主要职责。同样的,一个架构设计的概念证明是一个证明体系架构是否满足最初的需求的极好的方法。
架构设计能够支持计划编制过程
架构设计的过程支持一些步骤。很明显,它支持设计和实现活动,因为体系架构是直接使用到这些活动中的。然而,在架构设计过程所带来的好处中,我们可以证明其中最主要的好处通常是那些和支持相关的,被提供给项目计划和项目管理的活动,例如:细节化分,日程安排,工作分配,成本分析,风险管理和技能开发等。架构设计的过程可以支持所有这些相关内容,这也正是软件构架师和项目经理应该拥有一种很密切关系的一个主要原因。这个支持的大部分来自于体系架构确定的系统中重要的组件和它们之间关系的行为。请看图1中的UML组件图,它已经为我们的讨论作了简化。这个图显示了这四个组件之间的依赖性。
![](/soft/Files/2006-12/16/101189079.gif)
图1:UML组件图显示了架构设计中的重要元素
在日程安排方面,它们之间的依赖性暗示了每一个元素被考虑的顺序。从一个实施透视图来看,例如,依赖性告诉我们Error Log组件必须最先实现,因为其余的所有组件都要使用它。Customer Management和Fulfillment组件可以同时实现,因为它们之间不存在依赖关系。最后,一旦这两个组件也被实现完了,那么Account Management组件就可以被实现了。通过这个信息,我们可以画出甘特图(项目经理的一个主要计划编制工具),如图2所示。图中显示的每一个任务在实现时间时都需要一些思考,但是它们中的一部分可以来源于每一个架构设计元素的复杂性。
![](/soft/Files/2006-12/16/101191480.gif)
图2:基于架构设计中重要元素之间依赖性的甘特图
很明显这是一个很多原因的总的简化。例如,所有这些元素都不可能作为一个单一的组件被实现,但是这对于一个用例来说太过复杂了。同样,我们可以建立"存根的"或者部分的实现,使得每一个元素的实现都能够平行实现。我使用这个例子来简单的证明这个原理。
在工作分配中,体系架构能够再次帮助我们鉴别需要特定技能的区域,使得我们可以把工作分配给特定的资源(例如:人)。
构架师还能协助估算项目成本。一个项目的成本来自多个方面。很明显,任务的持续时间和分配给每一部分的资源将会决定劳动力的成本。体系架构同样会帮助我们决定使用在交付的系统中的第三方组件的成本,以及支持开发成果的所有工具的成本,因为构架师参与的活动是一个经过挑选的恰当的开发环境,它允许设计人员,实现人员和其他小组成员使用同一个有效的方式一起工作。
构架师的另外一个焦点是鉴别和管理项目的技术风险。技术风险的管理包括制定每一个风险的优先次序,以及确定一个恰当的风险缓解策略。优先权和风险缓解策略作为输入部分提供给项目经理。
最后,体系架构确定离散组件的解决方案,它可以为项目提供所需的技术输入。如果项目或者组织中没有足够可用的资源,那么它会明确的辨别出哪里需要技术支持。这可以通过现存的职员,或者外包,或者通过雇佣新职员来实现。