技术开发 频道

选择一种UML建模工具

    类和方法的选择列表

    建模工具应在一些关键界面上提供选择列表:

    协作图(Collaboration Diagrams)和顺序图(Sequence Diagrams) --工具应允许从模型的类列表中选择一个类,把一个对象分配给它,并允许对象间传送的消息能够从接收消息对象(类)的有效方法列表中选取。

    类图(Class Diagram) --工具应允许从别的包或模型的类列表中选择并引入类 。

    选择列表特性在直观上对建模工具至关重要,可以看作是必备特性。能够迅速从列表中选择一个对象到另一个对象的消息,给开发顺序图和协作图带来很大的方便。

    数据建模集成

    对象建模工具应允许集成数据建模工具。有许多方法可以提供这种功能。一种方法是UML工具提供将对象模型转换成DDL(数据定义语言,用于为类创建表的SQL)。另一种方法是UML工具输出元数据到能够输入这些元数据的数据建模工具,并将其作为数据模型的基础。一套先进、完整的工具应允许数据模型和对象模型之间在每次设计的迭代之后同步。

    版本控制

    建模工具应允许储存各种版本,以便后续迭代开始时,以前的版本仍然可以得到,并用于重建或保持基于该版本的已有代码。

    模型导航

    建模工具应提供强的导航支持以允许开发者全盘浏览模型中的所有图表和类。一种方法是提供一个按名字排序的类目录或选择列表,以便设计人员随意跳到图表中想去的类。

    对于大的图表,工具应使得在缩放和平移时,能够轻松实现浏览。

    工具也应允许在使用双向工程时,对类的源代码轻松浏览。

    打印支持

    建模工具应允许一张大图表能够准确地用多个页面打印出来,并提供打印预览和缩放功能,轻松地使图表能够在所需页数内放置。允许将一张图表放置在单页中的能力在清单中是高要求。不幸的是,我们发现许多工具很难用无缝的方式完成这项重要的任务。

    图表视图

    建模工具应能方便定制类及其细节的视图。例如,它应有可能从图表中排除所有的get/set方法,因为它们会对阐明一个图表造成混乱。方法的全部信息应允许容易地根据不同级别细节的需要显示或隐藏。属性和方法的可见性(private, protected, public)是用于选择什么该显示,什么该隐藏的另一个尺度。

    输出图表

    一个经常被忽略的关键特性是用某种格式输出图表,以便引入到文字处理文档或Web页面中。用于输出的最流行图像格式是GIF、PNG和JPEG。输出时,工具应允许你定义所产生图形的首选分辨率和尺寸。这个功能需求来自那些野心勃勃,需要写一本包括图表的UML书籍的作者,或者希望将他们的工作展示在网站上的人。

    脚本

    用脚本编程是建模工具应该支持的另一个强大的特性。有了脚本功能,高级用户可以创建能在建模工具内直接访问对象模型的脚本来添加其它功能,例如:为当前开发的项目做的项目管理表格,定制文档,定制代码,报表和度量。一个定制代码的例子是集合类和用于访问集合类的get/set方法。

    为了方便使用脚本,建模工具应公开访问自身对象模型的接口,以便在开发时能提供对对象模型组件的访问。(如果这一句听起来有点绕口,请再读一遍。)例如,脚本编写者应能在整个迭代周期中访问类图中类的集合,从而能够通过类对象的accessor方法来访问类的属性。当然,脚本语言自身应该是面向对象的;一个明显的选择就是Java语言本身,另一种选择就是Python脚本语言。

    健壮性(Robustness)

    你的UML工具需要象岩石般坚固可靠,以防止设计期间工具崩溃而使用户的时间和生产率在不知不觉中损失,或者在模型没有备份的情况下崩溃。我们曾亲眼见过许多领先的工具因为崩溃或文件损坏而引起数小时的工作成果丢失。如果你是一位开发人员,你知道那种因“生产率高的软件”反而比粗糙的代码工具生产率要低而产生的蔑视感觉。如果你是一位经理,你会看到被要求使用一种不可靠的工具时开发人员的愤恨。

    今天,健壮性常被发现于用Java实现的应用程序(JVM运行时保护)或开放源码的项目(在web范围内并行调试)。发现某种特定的UML工具是否健壮的最快方法是在comp.object等新闻组四处询问,你一定会听到许多抱怨的!

    可用于此处的另一个策略可以借鉴有效率的办公应用程序,我们也推荐工具开发商采用这种策略。该策略就是让UML工具每隔一定时间间隔就在背后自动保存模型。

    平台

    为了使你在建模工具上的投资得到最大回报,请慎重地考虑工具将运行在哪种平台上。你需要为Windows还是Unix开发软件?还是二者都要?将在哪种平台上开发?

    最近的各种事件一起推翻了这个神话:一流的跨平台图形用户界面还不能实现或者拥有一个"最少共同支配者"的视感。很长时间以来,这是不可能的(除了基于HTML的应用程序之外),直到最近Java的Swing用户界面的出现。但是,跨平台工具需要在Linux等常用平台得到支持,以大规模地被程序员们采用。

    Sun最初几乎没有做什么事情来促进Java在Linux上的应用。但最近工业界元老们,主要是IBM,IBM保证在他们所有的硬件平台上为Linux提供无限广泛的支持,并支持Apache/Jakarta项目, IBM现正快速地在Linux上推广Java。也许因为IBM已经开始为主要的Linux厂商发放它的JDK 1.1.8版本,Sun被迫支持在Linux上的 全功能JDK 1.2 (带Swing的Java2)的发放。通过Blackdown小组的努力,这个Linux上的Java端口大部分已被完成。

    迄今为止我们已经测试了一种Linux平台上基于Swing的领先Linux工具,结果优秀。但要告诫的是:128M内存是必需的。

    版本更新

    你需要选择一种将会不断通过修正错误、改进性能、添加新特性来进行改进的建模工具,毕竟你在时间和金钱上进行了一项大的投资,而且改换到另一种建模工具并不容易。

    小心那些已经被大公司拥有的产品。在兑现所有期权之后,最初的开发者常常会离开公司,寻找下一次大的机会。寻找有才能的、能读懂和维护最初并非由其编码的软件复杂模块的程序员并不容易。这种场景也会出现在开放源码项目上。

    如何能知道一种产品是否在改进?向销售代表询问下一版本发放的详细时间表以及该产品将来的蓝图。密切观察产品改进和添加新特性的速度。产品计划什么时候支持UML 1.3?图形界面是否支持最新的流行样式?你也可以看看该公司的网站:如果产品发布和外界评论是旧的,就是可疑的。

0
相关文章