内容


应用分析框架

组织和重用宝贵的技术、工具和示例

Comments

在某个地点某个时候某人已经遇到过与您类似的问题,并将其解决了。 如果您能够获得这个人很不容易得来的信息,并将解决方案放在可重用的表格中,这个做法怎么样? 这正是过去十多年向软件工程师提供的设计与分析模式。 不过,这些模式通常讨论具体的解决方案,而在了解如何确定正确的模式并在第一时间应用该模式方面并没有提供太多的指南。

幸运的是,您可以转而求诸于分析框架;分析框架能将可重用解决方案与分析模式、研究、实用组织技术和成功方法的具体示例组合在一起。 分析框架与您自己的个人库有些类似,专门针对您自己的经验和背景定制。

分析模式已经在软件开发领域使用了很多年,用于提供满足数据访问、事务监视和管理、安全性、消息传递、用户界面和其他应用程序需求的解决方案。 其目的不是实现在代码中,而是帮助分析人员了解复杂的问题领域。

分析框架包含了此类模式,还提供了研究特定领域(如业务分析或系统体系结构)所必需的技能、工具和技术的清单。 这对需要特定技能来满足当前需求的公司将非常有用。 如果候选人具有所列出的经验和能力,该候选人就很有可能能够成功地完成任务。

了解分析框架结构

我们这里以接受过木工培训的人将要制作家具的情况为例。 只有简单工具可用而且自己个人知识有限的工人可能会发现制作新家具很困难,而且费时。 另一方面,如果还是同一个人,却为其提供了设备齐全的工作间、强大的工具和全套计划与示例,那么此人就会觉得制作复杂而有意思的家具要简单得多了。 与此类似,通过提供经过验证的分析模式、强大的分析工具和技术以及用于捕获和表示复杂信息的有效建模方法的多个示例,也可以提高分析师的工作效率。

分析框架包含五个主要部分: 工具分类、一组有用的解决方案模式、一个或多个模型形式、多种研究技术和技能以及用于对复杂信息进行分组的方法。 表 1 显示了业务分析框架所必需的元素。

表 1. 业务分析框架
元素描述
工具文字处理、建模软件、文档版本控制
模式行业特定的模式、业务系统模式、业务组织结构
模型形式组织表、统一建模语言(Unified Modeling Language,UML)业务用例、UML 活动、Zachman 框架
技术观察、访谈、文档研究
技能作笔记、主动倾听、会议促进、团队领导、批判性思维、类比推理
归类业务流程框架、部门层次结构、业务用例、业务功能依赖关系图

在此业务分析框架中,发现和捕获业务流程的有效工具包括建模软件(特别是 UML 建模——在业务需求捕获为用例的情况下)、文字处理辅助工具以及对模型和文档的某种形式的版本控制。 可以根据特定需求对工具进行定制,也可以使用更为通用的工具,如简单的可视绘图辅助工具等。

重复使用的分析模式在应用到特定分析领域时将非常有效。 在业务分析框架中,这些模式包括业务系统模式(如订单输入、库存控制和贸易解决)、行业特定的模式(如电话路由、包裹配送与调度以及制药控制)和业务结构(如表格、层次结构和分布式组织)。 模式是发现在特定业务领域重复出现的主题。 有关捕获重复业务主题的方法的更多信息,请参见“Enterprise Patterns and MDA:Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML”(有关更多信息,请参见参考资料部分)。

可以选择模型形式来捕获复杂信息。 对于复杂分析,可以使用一系列有用的模型形式,如用于软件密集系统的统一建模语言 (UML)、用于软件工程的系统建模语言(Systems Modeling Language,SysML)和用于组织横向关注的 Zachman 框架。 在表 1 中所示的业务分析框架示例中,用于研究业务流程的有用模型形式包括 UML(用于流程和用例建模)、体系结构组织表和 Zachman 模型的可能的修改形式。

技术和技能是任何分析方法的关键方面。 能够提供个人或团队的当前可用技能的评估,这一点很重要。 例如,访谈技术需要作笔记和主动倾听的技巧。 进行团队工作,需要鼓励促进和团队领导方面的技能。 系统分析依赖于对问题进行批判思考(认识问题可以如何划分为更小更简单的领域)和应用倾听领域的类似解决方案的能力。

分析的目的是为了向受众说明所得出的结论。 如果不能以有意义、有说明力的方式组织信息,全世界最好的分析也不会成功。 自动工具仅为此问题提供部分解决方案,信息的整体组织确定目标受众将如何使用数据。 在业务分析框架中,这些分类原则表示为业务流程(业务划分为子领域)、业务用例间的依赖关系图以及总体组织结构(通常为层次结构形式)。

应用分析框架

现在已经知道了分析框架的组成内容,接下来需要了解如何使用此框架。 至少有三种情况可以使用分析框架。 第一种情况是需要个人改变角色时。 例如,业务分析人员可能会转而担任系统分析师角色或测试分析师角色。 每个角色具有不同的职责,会产生完全不同的一组文档和工作产品。 如果此人可以利用之前已经存在的分析框架(带有适当的示例),则将能更容易地做好准备,过渡到新角色。 此人必须了解在每种情况下最适合使用哪些工具、技术、模式、模型和组织方法。 能够使用其中每个领域的分析模式可以极大地减少搜索解决方案所花的时间。

可以使用分析框架的第二种情况是评估外包团队的技能和准备情况时。 大部分利用近岸或离岸外包的组织都依赖于团队过去的经验评估其交付所需构件的能力。 如果外包团队遵循经过验证有效的特定分析框架所定义的特定标准,则可以更加确信团队将具有正确的材料与能力集合。 对于内部团队也是如此,不过通常这些团队已经验证了特定的方法,可为分析框架提供信息源。

分析框架可派上用场的第三种情况是在培训中。 如果分析表 1 中所给出的框架,则应该很明显地发现,这些内容可以作为团队提高培训计划的基础。 可以执行评估,以确定组织成员中是否已经有了恰当的框架元素、工具、模式和技能,或者是否必须通过购买工具或培训人员来增加这些东西。

创建和采用框架

仅在建模人员熟悉工具时,分析框架才有用。 回到前面的木工身上,如果没有天赋和相关的培训,最好的工具也没有用处。 类似地,从审美角度而言,构建比较美观的模型需要对问题领域应用一个或多个分析框架。 您需要知道如何选择最相关的框架,让自己熟悉框架的元素,并将框架元素应用到目前的问题处理中来。

很多问题都有重复出现的方面,因此经常可以采用紧密相关的框架。 例如,如果是仅仅出于就系统的维护和扩展培训新开发人员,则几乎所有的遗留计算机系统都需要某种形式的设计研究。 因此,系统设计框架应该比业务流程框架更适用于此情况。

新框架的创建可能会非常简单,只需要复制现有框架然后添加新模式和示例即可。 另一方面,越复杂的框架(如为嵌入式系统项目的分析和管理开发的框架)与其他现有框架的相同的地方越少,因此需要从头进行创建。 应该从考虑可以应用于相应领域的工具和技术着手。 例如,您可能需要修改现有技术(如访谈或团队促进)来支持新领域。 还可以向建模人员提供用于特定任务的其他工具,如计算机辅助软件工程(Computer-Aided Software Engineering,CASE),以用于对网站联合的内容进行组织。 随着时间的增长,可以对框架进行扩展,以包括多个示例。 最后,在项目结束时,可以将经过验证最有用的技术和模式捕获为分析模式,以便对以后适用的问题使用。

您可能需要对分析框架进行调整,然后才能够将其用于特定的上下文。 调整框架时需要将新模式或组织方案包括进来,以更好地与主体需求匹配。 通过这样,可以扩展和开发这些框架,以用于新出现的问题领域。 随着新工具和技术的出现,以及新分析模式的发现和正式化,可以将这些新内容添加到工具集中,并将其组织为修改后的框架。 如果修改的程度很大,则可能表明应该构建全新的框架。

将分析框架投入使用

假定您是刚刚被任命为遗留系统的架构师的一位资深开发人员。 您没有参与过最初的开发工作,但必须快速了解系统并快速建立新团队,这很棘手。 幸运的是,您手边有一些不错的东西。 首先,您有来自公司中的其他类似系统的一组不错的示例体系结构。 其次,有软件体系结构的分析模式(请参见表 2)。

表 2. 软件体系结构分析框架
元素描述
工具代码探测器、数据库报告工具、软件体系结构文档示例、建模软件、代码分析
模式软件开发模式、体系结构模式、系统设计模式、数据存储模式
模型形式动态模型(如 UML 序列、算法表、UML 状态和 UML 活动)、数据库实体关系图、结构模型(如 UML 类和函数调用图)、数据流表、企业系统模型
技术抽象思维、组织和分类、批判性分析、作笔记
技能代码结构、流分析、硬件探测、系统行为
归类功能行为、子系统依赖关系、组件依赖关系、部署打包

使用软件体系结构框架时,第一步是组装建议的所有组件。 建模工具提供将现有代码可视化为 UML 模型,从而让您了解代码的现有结构。 运行时探测器对于将调用堆栈作为执行的应用程序功能进行重新记录非常重要。

接下来,我们将研究应用程序中给出的公共体系结构模式。 可以通过使用框架中说明的公共模式描述标识这些模式,特别是分析和设计模式。 目前已经发布了很多此类模式;了解最常用的模式通常就足够处理体系结构分析工作了。

熟悉各种模型形式,如实体关系图(Entity-Relationship Diagram,ERD)、UML 和其他面向系统的建模方法,将提供广泛的建模选项。 按照功能行为、逻辑结构与物理结构的比较及内部行为状态对这些模型进行归类,可得到有用的系统总体体系结构记录。 最后,务必了解您自己的局限性。 自我评估是一项很难但却非常必要的任务,可确保和让您自己确信团队已经获得了所有真正必需的技能。 通过软件体系结构分析框架中列出的预期技能,可为确定体系结构分析任务所需的能力类型提供一个很好的基础。 分析框架提供成功所需的最少元素的清单。 对于特殊体系结构(如传输网络),可能会需要其他技能。

总结

研究和了解复杂软件系统可能是一项非常具有挑战的任务。 要成功,您必需采用各种工具和技术来收集、安排和呈现系统描述。 通过创建和采用分析框架,可以事先准备好,并收集有用的工具和示例,以用于当前的情况。 通过本文,我们已经了解了成功的分析框架所包含的要素、如何重用框架以及如何创建新框架,您现在已经准备好处理目前各种复杂的问题中的常见情况。


相关主题

  • 您可以参阅本文在 developerWorks 全球网站上的 英文原文
  • 有关业务体系结构类型的更多信息,请参阅 Jim Arlow 和 Ila Neustadt 所撰写的 Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML(Addison-Wesley Professional,2003 年)。
  • 参阅 Ben Lieberman 撰写的关于建模艺术的系列文章(PDF,包含三个部分),其中介绍了如何构造分析框架、模型组装和构造以及可视组合(developerWorks,2003 年 8 月)。
  • 通过 Lieberman 的文章“构建有效的系统模型”(developerWorks,2007 年 12 月)了解如何使用结构表格、组织主题和关系图轴心内容进行建模。

评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=277689
ArticleTitle=应用分析框架
publish-date=12072007