级别: 中级
Arun Chhatpar (arunchhatpar@gmail.com), 软件架构师, OmniViz
2007 年 8 月 23 日
有这么多的工具,却没有足够的时间学习!如果您是一位 IT 架构师,在架构您的软件系统时选择合适的设计工具,这可能是一项艰巨的任务。通过对这些工具进行调查研究,以帮助确定对于项目生命周期的各个阶段,哪些工具是最适合的,并且当您处于这些阶段时,发现如何缩短时间以便按时交付。
如果您是一位 IT 架构师,您将参与到软件开发生命周期中几乎所有的阶段,并且必须做出相应的决策,而这些决策可能会影响到一个软件应用程序的命运。其中的许多决策可能是基于您的个人经验和认识,但是系统设计和体系结构设计工具常常在这个过程中扮演了比较重要的角色。
在本文中,您将获取更多关于各种工具及其基础概念的信息。我们还对 IT 架构师使用的各种常用软件工具进行了比较,包括 IBM® Rational® 系列产品,它提供了一整套工具,以帮助采用最有效的方式来完成工作。
如果您是一位软件架构师,而您使用了某种工具,或者将在系统设计和需求设计的过程中采用某种工具,那么本文可以为您提供相关的信息。您需要对软件开发生命周期的不同阶段非常熟悉。实际的设计和体系结构设计过程,或者各种 UML 图,这些内容超出了本文的范围。
![]() ![]() |
![]()
|
我所见过的关于体系结构的最准确的定义之一来自 Bobby Woolf,Bobby Woolf 是 IBM WebSphere® 软件服务部的成员,他曾给出了这样的定义,“系统的体系结构是创建系统的专家对系统的最高层次的共同理解。”(请参见参考资料。)系统体系结构主要由软件要素和它们之间的关系组成。它定义了这些软件要素是什么,以及它们如何与其他的部分产生联系。过去,人们通常在纸上对系统进行描述,但是这种方法的缺点是它不能很好地重用。随着软件和软件工具的发展,架构师们已经克服了这一局限性。
使用软件工具提供了更简单的方式以完成下列工作:
- 与利益相关者,或在利益相关者之间沟通相关的思想和设计。
- 通过可转换的抽象,对类似系统中的部分设计进行重用。
- 跟踪更改,并管理计划和时间安排。
![]() ![]() |
![]()
|
一个软件开发生命周期由五个重要的阶段组成,如图 1 所示。
图 1. 软件开发生命周期的五个阶段
![软件开发生命周期的五个阶段](https://i-blog.csdnimg.cn/blog_migrate/fb95e2a0afa195281b9c939012c6484c.png)
那么,架构师可以介入其中的哪些阶段呢?是需求阶段、设计阶段、实现阶段、还是测试阶段呢?答案是,所有的阶段。架构师的任务从需求收集开始,一直到部署。
表 1 描述了架构师在这些阶段中执行的一些活动。
表 1. 架构师参与的阶段
阶段 | 活动 |
---|---|
需求 | 架构师无需参与到需求阶段,这是一个常见的错误观念。事实上,这正是架构师能够理解利益相关者所认为的、所谓的软件“质量属性”的关键。 |
分析和设计 | 在这一阶段,架构师提供系统的概要设计,确定软件要素、它们的接口,以及它们之间的关系。在这一阶段,还描述了这些要素的部署。 |
执行和开发 | 对于您的软件,实际的开发和编码都是在这个阶段中进行的。在这个阶段中,需要对软件体系结构进行确认和修改,这可能会导致对设计的更改、对项目时间安排的更改。 |
测试和质量保证 | 在这一阶段,需要验证软件的质量属性(可伸缩性、性能特征,等等)。 |
部署 | 在这一阶段,IT 架构师仔细检查部署平台上软件应用程序的最终部署。 |
在上述的各阶段中,IT 架构师都必须不断地评估自己的设计,以确保它能够满足需求。如果需求发生了更改,这在现实世界中是非常普遍的,那么最终产品的计划和时间安排都必须随之进行相应的更新。使用一些优秀的软件工具,可以使这项工作变得更加容易。让我们来看看在这个周期的各个阶段可以使用的一些工具。
![]() ![]() |
![]()
|
需求分析是系统设计过程中的一个重要部分,系统中所有的利益相关者通过这项工作来确定客户以及软件应用程序自身的要求和需求。这是一个漫长的过程,并且会影响到最终产品,所以 IT 架构师必须确保不遗漏任何一个方面。需求分析和管理工具必须具备完成所有这些任务所需的功能。
市场上有一些用于需求分析、收集和管理的、优秀的工具。其中最突出的工具是 IBM Rational RequisitePro。
IBM Rational® RequisitePro® 解决方案是针对项目组(想要改进项目目标的交流、增强协作开发、减少项目风险,以及在部署之前提高应用程序质量的项目组)的需求和用例管理工具。
Rational RequisitePro 提供的功能包括:
- 高级 Microsoft® Word® 集成(Word 是 IT 架构师用来为任何系统收集需求的最常用的工具。RequisitePro 并没有阻止用户使用 Word;相反,它能够很好地与 Word 集成在一起。用户在 Word 中处理并保存收集到的数据,而在后台,RequisitePro 将数据保存到了中央数据库中。)
- 可靠的数据库基础结构,并支持大量的行业标准企业数据库,如 IBM DB2®、Oracle 和 Microsoft SQL Server。
- 创建并比较项目基准的能力。
- 详细的更改影响分析,并提供了审核跟踪和电子邮件通知。
- 深入的可跟踪性和覆盖率分析。
- 可靠的、灵活的、内置的报告系统。
- 为分布式团队提供 Web 访问的模块。
- 用户定义他们的需求类型的能力。
- 大量可配置的项目和文档模板。
请参见参考资料以获取更多信息,并从 IBM 下载试用版。
如果您正在寻找用于需求收集和管理的开放源代码产品,那么有一种产品正在积极开发中。它被称为开放源代码需求管理工具(Open Source Requirements Management Tool,OSRMT)。(请参见参考资料。)
这种工具也使用数据库来保存所有的数据,并且使用 JDBC 连接到数据库,所以您可以根据需要来选择数据库。它正式地支持 Oracle (Express) 数据库、MySql 4.1,以及 SQL Server (Express) 数据库,但并不局限于这几种数据库。
它使用 Java™ 编写,并且也提供了基于 Web 的接口,以便进行协作。该工具还支持多种方式的可跟踪性:您可以选择一个构件,并浏览依赖的对等项,或者您可以简单地将一个构件拖动到另一个构件上,以创建依赖关系。在 OSRMT 中,构件可以是特性、需求、设计项目、源代码或者测试用例。
这个工具中的一些特性允许您进行以下工作:
- 使用定义的构件(产品中所包括的)列表,并且您还可以定义自己的构件。
- 支持在文档中添加附件,构件可以包含二进制附件。
- 跟踪整个更改历史,以及该更改对系统产生的影响,指出对该更改进行验证所必须使用的测试用例。
- 导入/导出 XML 格式的引用数据。
- 自定义用户视图。
OSRMT 缺少一个非常重要的特性,即不支持 Word 文档。首先在 Word 文档中记录下您的需求,然后使用所需的工具对其进行处理,这是很容易、并且很直观的做法。IBM Rational RequisitePro 提供了与 Word 集成的优势,这使其成为更易于使用的工具。
![]() ![]() |
![]()
|
在软件开发生命周期中,体系结构设计得当的系统总是能够在某些看不见的问题上获得战略优势,这并非神话。当需求和业务需要发生更改,或者需要进行更新时,经过良好设计且结构合理的系统有助于降低成本。它还有助于架构师采用一种非常具有成本效益的方式来管理各种资源。经过良好设计的系统,其质量也要比通过代码补丁拼凑在一起而组成的系统高得多。
系统设计和体系结构设计工具可以在很大程度上帮助 IT 架构师完成可靠的和高质量的软件。在当今的市场中,几乎有几十种这样的工具可供使用;接下来我们将讨论其中功能比较强大的一些工具。
Rational Rose® 已经成为一种很受欢迎的、广泛使用的系统设计和建模工具。在 IBM 合并了 Rational 以后,发布了该工具的下一代产品,称为 Rational Software Modeler,它提供了许多新的特性。它几乎提供了在对软件系统中的工作流进行建模时所需的所有特性。这个工具所提供的特性包括:
- 充分地支持使用 Unified Modeling Language (UML) 2.1 进行建模。
- 开放的、可扩展的 Eclipse 3.2 软件开发环境。
- 易于安装、易于使用,在单个产品中为 Microsoft Windows 和 Linux® 提供了各种灵活的安装选项。
- 从需求到设计,提供了自动化的可跟踪性。
- 与其他 IBM Rational 软件设计以及架构设计产品紧密地集成,如 Rational RequisitePro 和 Rational Software Architect,这使协作开发变得非常容易。
- 提供了一套定义良好的设计模式,您可以在自己的模型中直接地使用这些模式,或者您可以创建自己的模式以确保遵循相应的约定和最佳实践。
- 模型到模型和模型到代码的转换开发工具。
我曾使用过这种工具,并对其感到非常满意。我发现使用该工具可以很容易地创建所有 UML 图表,并与我的同事共享它们。
ArgoUML 是一种用于系统设计和架构设计的、优秀的开放源代码工具。(请参见参考资料以获取更多信息)。它提供了一些有趣的特性,这些特性使得它成为市场中最流行的 UML 工具之一。ArgoUML 是:
- 基于开放标准(XMI、SVG 和 PGML)的。
- 完全用 Java 语言编写,所以它是平台独立的。
- 开放源代码,这使得它易于扩展,甚至可以根据您的具体需要对它进行自定义。
- 基于 UML 1.4。
Rational Software Modeler 和 ArgoUML 之间最重要的区别在于,Software Modeler 支持 UML 2.1,而 ArgoUML 仅支持 1.4。
ArgoUML 的最新版本令人印象颇为深刻。这种工具的特点在于,如果您在计算机上安装了 Java,那么您可以将它作为一个 Web 启动应用程序来运行。您不需要安装任何软件,因为您使用了 Java 的 Web 启动技术来运行该应用程序。
![]() ![]() |
![]()
|
根据进行应用程序开发工作的平台,可以使用一些不同的工具以使您的开发任务变得更加容易。作为一个 Java 专业人员,我更喜欢 Eclipse。它是用于开发的、使用得最广泛的集成开发环境(IDE)之一。
Eclipse 是一个开放源代码 IDE,可以使用不同的语言来开发应用程序。尽管它是因为其 Java IDE 而闻名,但是 Eclipse 社区中包含面向其他语言的子项目,如 AspectJ 编程、C/C++ 和 COBOL。使用 Eclipse IDE 的主要优点包括:
- 在单个 IDE 中,您可以无缝地编辑源代码文件、编译和调试您的项目。
- 它是一个使用开放标准的开放源代码项目。
- 有数以百计的插件可供使用,从格式化、概要分析到进行调试工作,其中一些是开放源代码的,也有一些是商业化的产品。
- 它适合于开发任何规模的项目。
这些仅仅是使用 Eclipse IDE 所提供的许多优点中的一小部分。您绝对应该亲自尝试一下。(请参见参考资料,以获得相关链接。)
如前所述,可能有许多可用的工具都适合于您的特定需要,它们中有一些是开放源代码的,有一些是商业化产品。这里为您提供了一个简短的列表:
- 来自 Sun 的NetBeans,但现在是开放源代码的。
- 来自 Borland 的 JBuilder。
- 来自 Microsoft 的 Visual Studio。
- 来自 Oracle 的 JDeveloper。
请参见参考资料,以获得对所有这些工具的链接。
![]() ![]() |
![]()
|
这里列举了 IT 架构师在进行测试工作时非常有价值的一些工具。
IBM Rational Functional Tester
IBM 的 Rational Functional Tester 是用于测试 Java、Microsoft Visual Studio .NET 和基于 Web 的应用程序的一种非常优秀的测试工具。该工具是自动化的,并且可以用于功能测试和回归测试。它所提供的特性包括:
- 为入门的测试人员提供了自动化功能,以便进行各种测试活动,如数据驱动的测试。
- 为高级用户提供了本机 Java 和 .NET 编辑器及调试器。
- 支持版本控制,这使得可以并行地开发测试脚本,并且可供分散在各个位置的分布式团队并发使用。
这一工具提供了许多优点,但是也存在一个缺点,它只能在 Linux 中使用。
TestLink 是一个在 GPL 许可证(免费使用)下的、开放源代码的、基于 Web 的测试用例管理和测试执行系统。它的基本思想是,QA 团队可以创建和管理测试用例,并将它们纳入测试计划。然后,这些测试计划允许团队成员执行测试用例,并动态地跟踪测试结果。它还有一个用于生成报告的非常有用的子系统。
TestLink 的主要特征包括:
- 动态地组织测试用例。
- 详细的测试执行报告以及与其相关的指标。
- 有价值的、含义丰富的、并且可自定义的报告。
- 可对其进行自定义,以符合您的需求和流程。
![]() ![]() |
![]()
|
IT 架构师在部署中通常并不扮演关键的角色,那是部署管理人员或者发布管理人员的工作。对任何应用程序的部署都非常有价值的一些工具包括:
- Batch/Shell 脚本。使用这种基本的方法,可以将一系列命令组合在一起;对于大多数情况,脚本是平台独立的。
- 打包和包管理工具。创建高度可自定义的安装工具包;两个关键工具是 InstallAnywhere 和 InstallShield。
- 虚拟化软件。使用软件工具(VMWare 和 Microsoft Virtual PC)以便简单地管理远程部署和更新。
还有一些其他工具可供使用,但是将这一列表限制在本文的范围以内,这是很有必要的。
![]() ![]() |
![]()
|
除了本文中介绍的工具以外,差不多还有几十种工具,这些工具可用于软件开发生命周期的各个阶段。我们不可能在这篇简短的文章中对它们进行一一介绍,但是这里列举了一些您应该予以考虑的其他工具。
用于需求收集和管理:
用于系统设计和体系结构设计:
这一列表应该可以帮助您入门,查看这些产品并着手提高您的工作效率。
![]() |
您可以看到,为您的工作选择合适的工具可以显著影响您和您的团队的整体工作效率。在本文中,您了解了架构师在软件开发生命周期的各个阶段可以用来提高工作效率的一些最流行的工具,包括需求收集和管理工具。这些工具将提高您的工作效率以便按时交付产品,并帮助您管理需求的更改。系统设计工具将帮助您更好地与项目的所有利益相关者进行沟通。希望本文有助于您找到设计更好的软件系统并改进交付时间的方法。