UML软件工程组织

剖析网上商店的模式
Eduardo B. Fernandez 著,Huang Yin 译
网上购物已经变得很普遍,许多网站都为此提供了方便的用户界面。为了支持不同种类的导航视图,网上商店需要良好的基础结构。目录模式和购买流程模式是网上商店基础结构的一部分:目录模式描述了如何组织网上商店的商品信息,购买流程模式描述了在网上购买商品所必需的步骤。我们还将展示在网上商店中如何结合应用这两种模式。

网上商店之所以变得如此普遍,是因为它们给予商家和客户更多的机会。在这一类应用中可以发现很多模式,我们将其分为三类:

· 用于导航视图的模式

· 用于构筑界面的模式

· 用于基础结构的模式

前两类模式在附录参考书中有介绍[Lya98, Lya99, Pal, Ros00]。好的基础结构可以提高服务器的响应速度,使导航视图和界面具有较好的可扩展性和灵活性。这种类型的模式应该是清晰、灵活、有效、可扩展的,并且独立于另两种类型。

在本文中,我们将介绍建立网上商店所必需的两种基础结构模式:目录模式和购买流程模式。目录模式用一种有效灵活的方式来组织商品信息,并为客户决策提供帮助机制。购买流程模式的目标是简化并提供一个方便有效的购买流程。

这些模式都是语义分析模式(Saps)的范例[Fer00a],一个简单的语义单位可以应用于不同的情况。它们也是一种合成模式:它们的组件在其中有自己的值。这两种模式的结合可以用于定义一个网上商店的框架。

目录模式


意图

目录模式组织网上商店所出售的商品信息。

环境

网上商店是公司出售各种商品的地方。在服务器上还有用于提供流程结构、权限表、库存以及其他相关功能的应用。

问题

网上商店出售不同的商品,而这些商品有时是根本没有关联的,例如书和食物。一个重要的问题是:如何组织商品的信息,为客户提供一个友好的网上向导,从而提高网站对客户的吸引力?

约束

· 有大量不同种类的商品供销售

· 商品及其描述时常变化

· 如果查询和选择商品不方便,客户将不会再访问网站,基础结构应该支持这些不同的功能

· 应该将相关的商品介绍给客户来吸引其购买

· 目录的制作通常使用特别的样式,并且不能重复使用,这导致了时间和精力的重复和浪费。

解决方案


定义一个目录类作为收集商品的中心点。将不同关注点的特征,例如商品的细节描述,和相关的商品分成单独的类。利用观察者(Observer)模式来发现改变并关注客户的变化。

类图

目录是一类商品的集合。每个商品至少归属于某个目录。商品类定义了一种供销售的商品,购买者购买的是一种商品,而不是商品的个体。这个类包括了每个商品的基本属性,特别是代表某种特性的状态属性,例如,一个新的商品。导航视图可能将特殊的商品放在屏幕上的显著位置,以便与一般商品相区分,从而让客户了解[Lya98]。

ProductInfo类提供了更多的商品细节信息。其中可能包括同一种商品的不同类别、不同品牌的比较,或是提供一个最好的性价比。例如对电视机,可能就要提供几个不同品牌的比较信息。作为旅游中介,可能就要给客户提供附加的选择,例如让客户能够选择较近的机场,这样可以使飞机票更为便宜。SimilarProduct类则提供相似商品的链接。

通过电子邮件的方式将商品(信息)的修改通知客户,让他们能了解到新的或是感兴趣的商品(信息)。ProductObserve类用于检测变化并通知客户。注意这些类都是观察者(Observer)模式的一种类型。Notification类保证将修改的记录通知客户。



图1.目录模式的类图


动态描述

图2中的序列图显示了当商品信息修改时触发的协同操作。这与标准的观察者(Observer)模式序列相似。



图2.修改商品(信息)的序列图


结论

这种模式有以下好处:

· 它提供了一种描述商品方便、有用的基础结构。导航类可以加入其中,利用有吸引力的方式显示商品信息。

· 它可以复用。这种模式适用于各种不同的网上商店,不管是大商场还是个人商店。

· 它可以容易地和其他模式结合使用,例如个人化模式[Pal,Ros01],我们下面要介绍的购买流程模式,或是库存模式[Fer00b]。

其他结论包括:虽然基本模式涉及商品类型(的概念),但某些站点只是出售一些个别的商品,例如旧车网站、拍卖网站。既然Product类作为个体商品的集合,那么我们需要一个附加类来指出商品的类型。

 

已知的用途

该模式可以适用于很多应用,例如:

· 网上书店。每一个网上书店都利用目录来组织书籍,如计算机、医学、历史和文学。商品就是书。商品信息包括每一本书的评论及描述。状态属性指出特殊的交易情况,新书或是畅销书。如果一些客户对某一类的数据感兴趣,不管什么时候,只要新到这类书或是特殊的交易情况有效,系统都将用电子邮件通知客户。

· 音乐商店,鞋店,酒店…..

很多的Web应用服务,例如IBM的Websphere的商务套餐都体现了目录模式。[ibm]

相关模式

目录模式包括容器/上下文模式[Coa97]。股票经纪通过跟踪大量股票中的商品来实现这个模式[Fer00b]。其他经常和目录模式一起使用的模式是搜索模式[Lya99]。

购买流程模式


意图

为网上商店选择及购买商品的流程建模。

关联

网上商店包括很多商品。客户可以在同一次会话中选择和购买不同的商品。客户寻找自己感兴趣的商品,选择他想买的东西放入购买列表中。他可以随时检查和更改他所购买的商品。有一些顾客还可以在网站上登记并可以得到不同的待遇。网上商店还包括目录,成员表,运输以及其他的应用程序。

问题

购买流程必须有定义良好的步骤,以便告诉客户他现在正处于流程中的那一步。现在问题是:怎样用精确的方式来描述购买流程?

约束

· 客户有可能在购买流程的步骤中感到很迷惑。我们要尽可能地让购买流程对于客户而言清晰而且方便。很明显,这要依靠那些显示给客户的特殊网页。在这里,我们所考虑的是使这项工作更为方便的后台结构。

· 我们需要向客户显示他现在正处于购买流程中的什么位置。

· 因为新的商品或是商业模式而可能需要改变流程的步骤。这可能暗示新的实体或新的步骤。

· 客户希望有不同的支付方式。

· 有些客户必须要区别对待。

· 如果购买(流程)的结构不安全,那么客户将不再光顾。

解决方案

用“购物车”来实现购买流程,是一种最为普遍的方法。一个客户可能会有几个购物车,每个购物车中都有客户所选择的商品。当客户决定购买购物车中的商品时,产生订单和收据。

类图

ShoppingProcess类是这个完整流程的单一入口。ShoppingCart类包括了客户所选择商品的信息,CartItem类定义了客户购买的商品和数量。客户可以查询、删除其购物车中的商品。Customer类定义了购物车所对应的客户,这个类中还提供给客户修改个人信息的操作。系统提供了集中支付的方式,如信用卡支付或者电子支票。一旦客户决定对购物车中的商品结账时,产生订单和收据。



图3.购买流程的类图


动态描述

这种模式包括了以下交互(图4):

· 选择:当客户对同一种商品进行选择时,产生一个新的购物车项目(cartItem)对象,并将其加入到购物车中。

· 结帐:当客户结帐时,计算所选择商品的金额,用户账单和送货信息被重置,随之产生收据。



图4.购买和支付商品的序列图


结论

使用该模式的好处如下:

· 该模式描述了一种抽象的购物流程。它被应用于不同的网上商店,从卖鞋的到卖软件的。

· 该模式为因特网上建立商店提供了公用的元素。

· 该模式可以简化因特网上的购物流程,部分或所有的步骤在向导中显示给用户。

· 对于会员用户可以不需要重新进入。

· 在总体结构中容易加入授权(功能)。例如,仅有流程管理员才有权变更流程。

其他需要注意的地方:

· 该模式并没有提供出错处理的机制,例如对错误的信用卡、错误的付款地址或送货地址的处理等,这些必须要包含在一个特殊的模块中。

· 这是一个通用的网上商店模型,当用于一些特殊的网上商店的典型时,可能需要修订。

· 对有效性而言,这个模式需要低级的基础结构来支持,例如数据库系统。

· 在模式中定义的安全约束必须被低级别的机制所执行,例如数据库授权、文件访问权限、加密和其他一些机制。

已知用途

大多数的网上商店使用购物车的概念,在基础结构上和该模式相似。相似模式的特殊模型和代码可参见附录[Bar96], [Bol00]和[Kob01]。

相关模式

该模式可以用于支持网络用户的两种模式:

· 动态配置(Dynamic Configuration)模式[Lya98],该模式帮助用户从不同选项中进行选择并验证其选择。

· 显式流程(Explicit process)模式[Ros00],该模式帮助用户理解购买流程。

导航模式,如新闻[Lya98]和广告[Ross00],可以利用这两种模式作为其基础结构的一部分。

订单和送货模式[Fer00],可以补充本模式中的运送细节。付款的细节处理参见 [Fow97]以及[Hay96]。购物车,客户相关类以及付款类都是各司其职的基本模式。这里所介绍的两种模式的抽象版本的结合是购物框架的基础。

感谢

我们要感谢我们的领导Gustavo Rossi有见地的建议,他的建议使这篇文章增色不少。

 

 

版权所有:UML软件工程组织