软件架构设计:进行软件Software架构设计的益处

  我在这个系列文章中篇文章中讲述了什么是软件Software架构在第 2篇文章中定义了软件Software构架师角色特征在第 3篇文章中涉及到了在软件Software架构设计过程下主题或者特征第 4篇也就是最后篇文章将会讲述个商业和IT组织得自于个健全软件Software体系架构益处

  般来说软件Software架构设计是降低成本改进质量按时交付产品和按需交付产品关键原因在这篇文章中我将会把讨论焦点放在实现这些目标所能带来好处上面作为个构架师证明我们存在是没有任何意义这个部分将会提供些思路方法这些思路方法对于把处理架构设计作为个软件Software开发过程关键部分是很有用处

  架构设计能够满足系统品质

  系统功能性是软件Software构架师通过组成体系架构多种元素的间交互作用来支持然而架构设计个关键特性是系统品质是通过某些手段来实现软件Software品质例如性能安全性和可维护性等它们在缺少统架构设计视图时是无法实现这些品质并不是被限制在个单架构设计元素中而是渗透在整个架构设计体系中例如为了满足性能要求可能需要考虑体系架构中个组件实现时间同时还要考虑各组件的间通讯所花费时间同样地为了满足安全性要求可能需要考虑两个组件的间自然通讯并且要在需要特定地方引入安全性提示组件所有这些关系都属于体系架构在上面例子中这些关系包括组件自身和组件的间

  个和架构设计相关好处是我们可以尽早评估项目开发周期中这些品质架构设计模型建立通常是为了明确确定我们已经满足了这些品质要求这是非常重要不论写在纸上体系架构多么完美实现软件Software才是评价体系架构是否达到这些品质要求标准

  架构设计使我们达成目标

  架构设计过程使得区别涉众达成目标架构设计提供了个辩论系统解决方案媒体为了支持这种辩论体系架构过程需要确保架构设计被清楚地传达和理解个被有效传达体系架构使得涉众们可以辩论决议和权衡反复讨论最终达成共识相反如果个体系架构没有被有效传达那么这种辩论将不会发生没有了有效传达体系架构所带来结果可能会是低品质

  在条相关介绍说明中体系架构可能会使构架师的间或者新成员和老成员的间辩论达成致(以及他们的间视图)我们需要再次强调只有体系架构被有效传达它所带来这个好处才能体现出来清楚地了解他们正在做什么开发小组更可能按照需求完成产品开发

  为此我再次强调恰当文档化体系架构是非常重要这是软件Software构架师主要职责同样个架构设计概念证明是个证明体系架构是否满足最初需求极好思路方法

  架构设计能够支持计划编制过程

  架构设计过程支持些步骤很明显它支持设计和实现活动体系架构是直接使用到这些活动中然而在架构设计过程所带来好处中我们可以证明其中最主要好处通常是那些和支持相关被提供给项目计划和项目管理(project management)活动例如:细节化分日程安排工作分配成本分析风险管理和技能开发等架构设计过程可以支持所有这些相关内容这也正是软件Software构架师和项目经理(project manager)应该拥有种很密切关系个主要原因这个支持大部分来自于体系架构确定系统中重要组件和它们的间关系行为请看图1中UML组件图它已经为我们讨论作了简化这个图显示了这 4个组件的间依赖性

  进行软件Software架构设计<img src='/icons/10856de.gif' />益处

  图1:UML组件图显示了架构设计中重要元素

  在日程安排方面它们的间依赖性暗示了每个元素被考虑顺序个实施透视图来看例如依赖性告诉我们Error Log组件必须最先实现其余所有组件都要使用它Customer Management和Fulfillment组件可以同时实现它们的间不存在依赖关系最后旦这两个组件也被实现完了那么Account Management组件就可以被实现了通过这个信息我们可以画出甘特图(项目经理(project manager)个主要计划编制工具)如图2所示图中显示个任务在实现时间时都需要些研究但是它们中部分可以来源于每个架构设计元素复杂性

  进行软件Software架构设计<img src='/icons/10856de.gif' />益处

  图2:基于架构设计中重要元素的间依赖性甘特图

  很明显这是个很多原因简化例如所有这些元素都不可能作为个单组件被实现但是这对于个用例来说太过复杂了同样我们可以建立"存根"或者部分实现使得每个元素实现都能够平行实现我使用这个例子来简单证明这个原理

  在工作分配中体系架构能够再次帮助我们鉴别需要特定技能区域使得我们可以把工作分配给特定资源(例如:人)

  构架师还能协助估算项目成本个项目成本来自多个方面很明显任务持续时间和分配给每部分资源将会决定劳动力成本体系架构同样会帮助我们决定使用在交付系统中第 3方组件成本以及支持开发成果所有工具成本构架师参和活动是个经过挑选恰当开发环境它允许设计人员实现人员和其他小组成员使用同个有效方式起工作

  构架师另外个焦点是鉴别和管理项目技术风险技术风险管理包括制定每个风险优先次序以及确定个恰当风险缓解策略优先权和风险缓解策略作为输入部分提供给项目经理(project manager)

  最后体系架构确定离散组件解决方案它可以为项目提供所需技术输入如果项目或者组织中没有足够可用资源那么它会明确辨别出哪里需要技术支持这可以通过现存职员或者外包或者通过雇佣新职员来实现

  回页首

  架构设计可以推动体系架构完整性

  架构设计过程个主要目标就是确保体系架构能够为设计人员和实现人员所承担工作提供可靠构架很明显这比简单传送个体系架构视图要复杂为了确保最终体系架构完整性构架师必须明确定义体系架构它确定了体系架构重要元素例如系统组件组件的间接口以及组件的间通信

  构架师同时还必须定义恰当惯例标准和指导方针它们将会引导设计人员和实现人员工作架构设计另外个目标是去除部分设计人员和实现人员不必要创意这是通过对他们所做事情增加必要限制以及让他们清楚地知道如果不遵循这些限制将可能会导致体系架构破坏来实现出于这个原因对活动采取恰当回顾和评估能够确保体系架构完整性这些活动个焦点是考虑设计人员和实现人员工作以及确定体系架构标准和指导方针到位程度

  架构设计能够有效地管理复杂性

  如今系统越来越复杂这种复杂性需要我们去管理自从个体系架构只把焦点集中在这些元素上以来它就提供了个抽象系统因而提供了个复杂管理思路方法同样架构设计过程考虑组件递归分解这是处理个大问题很好个思路方法它可以把这个大问题分解成很多小问题再逐个解决

  抽象体系架构的间通信技术使得管理更加复杂采取业界标准可以表达这种抽象性例如UML因此在现今产业中文档化软件Software系统是非常平常事情

  架构设计为复用奠定了基础

  架构设计过程可以同时支持使用和建立复用资源复用资源对于个组织来说是有益它可以降低个系统成本并且可以改进系统质量这些好处已经被证明过了(自从它被使用以来)

  个体系架构建立能够支持资源复用机会例如体系架构重要组件和它们的间接口和质量能够支持现货供应组件存在系统和封装应用等等选择从而可以用来实现这些组件体系架构自身也可以被用来当作今后开发系统个复用参考资源甚至体系架构内部组件也可以被认为是潜在复用资源

  虽然架构设计过程能够鉴别现今项目中存在资源复用机会但是跨项目和企业资源复用会导致产生很大冲突

  任何有关复用讨论都要和谨慎联系在由于各方面原因只有很少部分复用能够使用到现在从技术角度看个复用需要确保标准过程和工具都在恰当位置幸运些基本元素正在被满足个好例子就是标准化组织:Object Management Group's Reusable As Specication (RAS) 1 它定义了描述复用资源封装复用资源和连接到RAS资源库服务接口标准

  从非技术角度看当你实现个复用策略时需要始终牢记组织考虑例如确定谁是建立复用资源人员?旦复用资源被建立谁是负责维护它人(建立它小组已经解散)?使用和建立复用资源动力是什么?建立个复用资源成本是多少这通常比建立个不恰当复用资源要花费更多



  架构设计能够降低维护费用

  架构设计过程可以在很多方面帮助我们降低维护费用首先最重要是架构设计过程要确保系统维护人员是个主要涉众并且他们需求被作为首要任务满足个被恰当文档化体系架构不应该仅仅为了减轻系统可维护性;构架师还应该确保结合了恰当系统维护机制并且在建立体系架构时候还要考虑系统适应性和可扩充性

  构架师还应该考虑那些需要改变区域并把它们隔离开这样可以保证当单个组件或者小部分组件发生变化时整个系统不会受很大影响但是我们应该承认些变化例如关系到系统质量如实现性和可靠性是不能用这个思路方法隔离这就是构架师必须确保它原因当架构设计现在系统时他们需要考虑将来可能需求这个系统要从几十人用户推广到上千人用户群例如体系架构没有使用基础思路方法改变是不正常

  架构设计能够支持冲突分析

  架构设计个重要好处是它可以允许我们在采取改变的前推断它所产生影响个软件Software构架确定了主要组件和它们的间交互作用两个组件的间依赖性以及这些组件对于需求可追溯性

  有了这个信息例如需求改变等可以通过组件影响来分析同样改变个组件影响可以在依靠它其它组件上分析出来

  这种分析可以协助我们确定个改变所产生成本改变对于系统影响以及改变所带来风险这个信息在我们确定改变优先级以及研究这些改变时是绝对必要



Tags:  组织架构设计 架构设计 软件架构 软件架构设计

延伸阅读

最新评论

发表评论