内容


使资产具有可消费性:您的装备是漂亮的,糟糕的,还是丑陋的?

Comments

cowboy riding a horse引人注目的部分The Good, The Bad, 以及 the Ugly,Sergio Leone 的“意大利式西部片”电影中最精彩的部分是情节的简单。它的核心是简单的财富获取,其中包括三种人物性格,当他们为了寻找 Confederate 黄金而相互欺骗时,我们把他们定义为好的,坏的,以及丑陋的。只有他们联合的智慧才能引导他们找到战利品,并且战利品与巨大墓地中被称作 “Sad Hill” 中的尸体埋葬在一起。在这部电影快结束的时候,这个“丑陋的”的叫做 Tuco 的人物,由 Eli Wallach 扮演,到达了这个墓地,这是电影院中最激动人心的时刻,并且伴着难于忘却的背景音乐,他开始疯狂地杂乱无章地搜寻 Arch Stanton 墓场。.

这个场面给人印象最深的是墓地的巨大场面——看起来有两千多个墓地,环绕排列着。Tuco 在 Sad Hill 中心开始挖起来,并且按照他的方式最初从同心圆开始。但是当他对这个巨大的任务感到失望时,他的搜寻很快变得更加杂乱。最后,当一个个坟墓从他眼前闪过,他突然来到 Arch Stanton 的墓地,发现没有任何金子。的确,那里只存在一具腐烂的尸体。

当我们回想起这个故事时,会思考它的主要难题是关于可重新利用资产消耗 (RAC) 的问题是:在特定的环境下鉴定有重要意义的内容。仅仅靠电影中的主要人物是不能够定位金子的,因为在这个墓场有太多的坟墓;或者说,在 RAC 的情形中,有太多的“坟墓”(比如,存储库)。我们很像剧中的 Tuco,在寻找金子。在可重新利用资产的案例中,我们中有多少人会停止挖掘,而开始构建我们自己的组件?

在软件项目开发中,如果没有适当地界定搜寻的范围,我们就无法鉴定可重新利用构件的有意义的集合。当然,这种界定在人类的许多方面都开始出现,从构建设计到火箭科学,到专利权法。那么我们如何来提供正确的资产,内容,从而帮助轻松解决特定背景下的问题呢?我们所需要的是自动操作从上下文到内容的映射方法,从而为我们的构架师,工程师,以及律师们建议最好的资产。

自动化操作从上下文到内容的映射

作为公司的一位软件开发人员或者一名顾问,您是在一个特定的环境中进行工作的。这个上下文是由这个项目范围以及这个项目的功能性和非功能性需求所提供的。这个项目的范围可能由您所从事的行业所确定的——保险,财政,电信局等等——以及您所使用的建筑风格定义的——面向服务的构架 (SOA), 客户/服务器,分布式,等等。

现在,这里有一个关于可重新使用资产的观念:作为一名从业者,您很可能被导向到您的环境中相关的内容中。例如,对于一个保险项目,一个功能性需求大概是创建一个可以映射到可重新利用软件资产的索赔系统,比如先前的为一个索赔系统设计的保险 Unified Modeling Language (UML) 模型。一个非功能性需求,比如交互式索赔过程,可以映射到可重新软件资产的另一种类型,比如一个软件模式可以帮助制定一致的建筑决定。

但是我们如何自动操作这个上下文到内容的映射,从而开发以一致的方式开发软件,并使可重新使用资产具有可消费性,比如模式或者模式呢?实现这样的可视化的问题是,我们很快陷入了“多个木桶”的问题中。

多个木桶的问题

想象一下您在家里,正把您的衣服分别装入几个不同的木桶中。每个木桶装一种不同类型的衣服——一个木桶装所有的鞋子;另一个装所有的裤子,另一个装所有的夹克,另一个装裙子。现在让我们想象这些都是非常复杂的木桶。这些木桶拥有将它其中物品分类的功能,还能将这些物品进行匹配。例如,这个装鞋的木桶可以将这些鞋子按照颜色和大小分类,还能将这些左脚的鞋子与它们相应的右脚的鞋子匹配。除此之外,每个木桶的前面都有一个平面镜,可以看到木桶中详细物品的情况。因此,有了这样的鞋桶,您可以从前面的平面镜中看到您想了解的鞋子的所有信息,比如您什么时候购买的,您使用它的频率是多高,它是否有鞋带等等。

这样简直是太完美了,但是当您被邀请到一个很有威望的会议去演讲时您却陷进了一个问题。这时一个非常重要的会议,而您是演讲嘉宾。您要向您所有的衣服木桶发送一个信息,“请给我一套搭配好的衣服,让我在这次会议出席时看起来很不错!”但是您的衣服木桶只能茫然地看着您,当您疯狂地在木桶之间进行寻找时,这些平面镜只会显示一些麻木的数字。您所想要的只是一套让您在出席这次会议时看起来很不错的衣服。而并不想穿着您最喜爱的 Harley Davidson 皮夹克和格子花尼裤子以及胶底运动鞋来进行这次关于使资产可重新利用的演讲。问题是,每个木桶对它自己的物品都十分清楚,但是对其它木桶的物品一无所知。

基于存储库的信息管理系统可以通过相同的多个木桶的概念来理解。您管理不同类型的资产,这样您就可以对它们的特性进行最好的利用,当您只关注一种类型的资产时,它可以工作得很好。但是当您从不同的类型元素进行分组时,就像我们的衣服分类,您不能要求不同木桶来记录关于来自不同木桶组装的信息。当您扔掉一双鞋或一件衬衫时,这样迅速变成一场噩梦。

另一种解决方案是将所有的元素都集中在一个共同所有的木桶中,但是这样将变得十分不方便,因为我们再也不能根据它的家族特性来选择一个元素了(像没有鞋带的鞋子,有袖子或者没有袖子的衬衫,等等)。

“超级”木桶

更好的解决方案是,当这些物品与一种“超级”木桶联合在一起的时候要维持不同的木桶,并且这个“超级”木桶管理着这些衣服的元数据,比如哪件夹克与哪条裤子,哪件衬衫相匹配,等等,同时还要记录这些夹克,裤子以及衬衫实际装在哪些特定的木桶中。

这个超级木桶还需要记录并且从您做的选择中得知这些信息。当您要求这个超级木桶提供一套您参加会议的适当衣服时,这个超级木桶将会为主人提供一套包括夹克,裤子以及衬衫的相匹配的选择。当您最终做出选择,决定穿哪件夹克和哪条裤子以及衬衫时,您也希望它具备获取并记录这个信息的能力。这种跟踪能力在随后您想要进行的任何种类的冲突分析中都非常重要,还将在您下次发生相同事件寻找衣服时提供很好的指导。

要做到真正可利用,这个超级木桶还将需要满足以下非功能性需求:

  • 管理联合的复杂性。 回到这个衣服木桶。很清晰我需要能够管理和维护我所有衣服之间的匹配关系——例如,哪条裤子与夹克相匹配,等等。假设我的衣柜随着我年龄的增长而增加,将需要更多的钱来购买更漂亮的衣服,因此这些匹配之间的管理将变得越来越重要。进一步说,我还需要记录像上面所述的匹配数据案例。
  • 可测量性以及性能。 无论这个超级木桶怎样构建,它都必须像木桶(夹克木桶,衬衫,鞋子,围巾等等)的数量一样可被测量,并且木桶中的物品(夹克木桶中的夹克数量)也在不断增加。实际物品的数量与它们相匹配的元数据之间有着直接的联系。并且——这里是非常简单的——这个超级木桶必须要执行。也就是说,当我询问“我参加这次会议做好的配套服装是什么”时,我希望在我参加这个会议之前得到答案。
  • 确认和限制以及一致性校验。这里讲述的是一个老谚语,“错误信息输入,错误信息输出。”超级木桶需要自我管理,需要一种确认它包含信息的方法。同时,它还必须是我们所输入的有意义信息。自从这个超级木桶管理衣服元数据之后,它对输入的您的汽车或者您的狗的接种疫苗安排的元数据就变得不重要。
  • 自动推断。 自从我们陷入这些收集元数据的困惑中,我们想要做的最后的事就是使它停留在现状。我们想要这些元数据为我们而工作。因此,如果我知道皮夹克可以与牛仔裤以及牛仔裤可以与飙车靴一起搭配,那么经过推论,牛仔裤可以与飙车靴一起搭配。
  • 基线标准。 最后,无论我们提出什么样的执行需求都要在标准的基础上进行。这看起来像另一个不费脑子的问题,但是却有许多木桶的优势没被发现。

填充木桶

唯一比不能向您的超级木桶询问有意义问题更糟糕的事情是,拥有一个空的超级木桶。如果我被迫腾空每个木桶,一件一件拿出所有的物品,并手工将它们的元数据输入这个超级木桶,我将会厌烦这个系统,并且不再使用它。因此,为了使它工作,我需要有一种为超级木桶填充我从所有木桶中寻找的需要管理物品元数据的方法。我还必须保证需要寻找的所有元数据都包含在这个预先定义的工作中。如果不能从我的木桶中恢复衣服,那么木桶将会变得没多大用。这需要谨慎维护木桶中这些衣服的定义和描述。

使木桶可视化

最后,就是橡胶与道路合成的地方,您需要一种向用户展现这些信息的有意义的并且富有想象力的方法。换句话说,您需要构建一个简单易懂的从上下文到内容的映射视图到您的每日工具中。在这个木桶类推理论中,上下文是“在这次会议中看起来很得体,”并且您想要知道的是“这次活动中最适合穿的是什么衣服?”然而,根据您的衣柜的大小可能有很多种信息。您可能有适合许多裤子和鞋子的十五件夹克,但是有些鞋子与有些夹克不相匹配。最后,这个用户需要在所有可能匹配的裤子和鞋子等等中做出决定,因此必须向这个用户展现可以使用的最佳化信息。这样做的方法之一是,以图表的方式显示这些组合和排列,按照顺序展现出哪些衬衫与哪些裤子以及哪些鞋子可以搭配出有意义的选择,并且避免显示皮夹克与格子花尼和胶底运动鞋的搭配。这样,当您选择您最喜爱的夹克时,还可以让您看到哪些裤子与鞋子您可以或者不可以与这件夹克匹配。

对于实现的注释

我们故意将这篇文章保持在一个较高的,思维经验的水平,这样可以让我们进行思考这些问题,并且不会因为任何技术的执行限制而受到干扰。最为工程师,我们通常考虑关于我们所知道的执行问题的解决方案。在以后的文章中,我们将利用带有这些关于对软件模式匹配非功能性需求观念的具体例子的语义网,来探究这些观念的可能实现问题。

结论

在这篇文章中,我们使用了一个从上下文到内容的方法来帮助处理资产可可消费性问题。从上下文到内容的方法的内在问题,就是我们在多个木桶类比的描述中所提出的问,我们通过描绘我们使用超级木桶管理和维护资产之间复杂的联系的方法提出解决方案,从而解决这个问题。在以后的文章中,我们将会回来,并对我们所提出的一些问题提供解决方案。


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=331289
ArticleTitle=使资产具有可消费性:您的装备是漂亮的,糟糕的,还是丑陋的?
publish-date=08182008