技术开发 频道

模型驱动系统开发的RUP插件入门

    在考虑分解的一个层级时,有以下三个重要的因素:

    *模型层级的目的和类型(上下文、分析、设计或者实现)
    *什么元素被考虑为黑盒
    *暴露和强调的交互作用

    这些因素将在下面被详细的讨论。

    模型层级和它们目的 

    在开发一个复杂的“系统中的系统”模型的过程中,无论它是用于一个产品、一个企业级的 IT 开发项目,还是一个新的业务单元,主要的挑战就是指出层级的正确集合,并通过它们表达该模型。在 MDSD 中,我们识别四种模型层级,每一个层级都有着不同的目的:

    *上下文
    *分析
    *设计
    *实现

    上下文模型层级,包括分解的顶层或者企业级,允许行动者和其他外部系统看到该系统使用的上下文。这一层级所表达的区域往往超出团队的控制。例如,如果我们要对一种新的交通灯进行建模,我们可能希望从全市交通系统的层级开始,以便我们能够将交通灯置于它的上下文中。于是,全市交通系统就将成为我们模型的企业级、0层级和起点。这将成为上下文模型层级的部分。一个复杂的系统在上下文模型层级中拥有不止一种的分解层级,但是在实践中,通常只有一种。

    分析模型层级详细描述功系统的能性、逻辑结构和分发。在这一层级上,我们创建逻辑元素、分发元素和系统功能性的收集,并且对它们的交互作用进行建模。这种方法的独特性在于这些交互作用并不是孤立存在,而是从系统的高层使用中获得的。分析模型层级提供了实际设计的一个抽象。没有人从分析层级上设计或者建造。在上面全市交通系统的例子中,分析层级可能包括诸如交通信号、交通探测、中央控制和过载控制等系统元素。

    在分析模型层级中,我们考虑为黑盒元素的逻辑和分发元素,是由硬件、软件、人员和信息结合而成的。它们小可以小到一个单独自动实现的功能,大可以大到一支军队。我们将它们选作体系结构中的元素,以便我们能够思考它们的交互作用和责任。创建层级的数量依赖于系统的复杂性。

    设计模型层级捕获了“可设计的”各个元素之间的交互作用。在这个模型层级上,各个元素通常都是同质的;也就是说,它们可能由硬件、软件或者人员组成,但并不是这些元素的一个结合。通过 MDSD 方法,我们将为这些元素指派负责特定操作的责任,设计者将使用这些规范来创建元素。

    如何设计处理依赖于元素的类型。软件元素能够使用 UML 和用例实现(一种同 MDSD 非常类似的方法,但是被应用于软件设计层级上),创建软件的技术设计。一个电子组成要素的设计更像是被表达为一个示意性的图表,“人员”元素可能使用有组织的图表和技巧列表。

    实现模型层级处理设计模型层级中被表达的元素如何在现实世界中被创建。对于软件来说,包括代码模型、实现、DLL 等的结构,而对于硬件来说,可能包括电路布线、电路板布局等。

    在 MDSD 中我们首先关注上下文和分析模型层级,这是因为我们的主要目的就是在上下文中理解系统,分析整个系统的行为,并且通过设计-建造团队安排工作的实现。这些设计-建造团队可能是用 RUP 进行软件创建,使用其他专门规程的方法进行硬件设计和人员设计。

    黑盒和白盒透视图

    我们进一步考虑一下黑盒和白盒透视图之间的区别。“黑盒”和“白盒”是指处理一个系统或者系统的某一个部分时所采用的透视图。采用黑盒透视图是指,我们忽略系统的内部工作,仅仅关注同该系统进行的交互作用。大多数人对于电视机就是采用这种透视图。他们不知道也不关心电视是如何工作的、里面都存在那些组成要素,他们所做的只是通过输入(遥控器、电源等)和输出(屏幕和扬声器)来同电视进行互动。采用黑盒透视图就是将注意力仅仅放在输入和输出上面,而隐藏或者忽视所有的内部细节。

    改变电视频道的操作将被简单的描述为:观看者按下‘+’键并且电视改变了其当前的显示。请注意,这里并没有提到屏幕或者调节器,这是因为它们都是内部的系统元素。

    另一方面,白盒透视图包括系统的另外两个方面的信息。除了输入和输出,白盒透视图还描述了:

    *内在的过程和功能
    *内在的系统元素

    以白盒的顺序进行描述,改变电视频道的操作将指定:观看者如何按下遥控器上面的‘+’键,遥控器如何发送一个红外线信号到电视上,电视控制接口如何通知调节器转换到另外一个频道,以及显示控制器如何将新频道的图像显示出来。请注意,采用一个白盒描述并不意味着系统被完全分解到它的最低层级元素。白盒描述依然包括黑盒一样的抽象。“电视控制接口”就被视作一个黑盒来处理。在一个更低层级的分解中,它还可以进一步被描述为它自身的组成要素。

    黑盒和白盒属性并不是一个元素的内在特性,注意到这一点非常有用。也就是说,并不存在“黑盒元素”或者“白盒元素”。只存在黑盒和白盒透视图,并且在 MDSD 的整个建模过程中都被我们所使用。

0
相关文章