蔡 超


4+1视图与UML


软件架构设计已经逐渐成为现代软件开发过程的核心,然而能够清晰表明架构设计并不是一件容易的事,就面向对象开发而言,RUP 的4+1视图已在架构设计的撰写中得到了广泛的应用和认可。


对于4+1 view的描述有几个不同版本(或包含的视图不同,或视图的名称不同),文中以Philippe Kruchten, November 1995提出的4+1视图为准。


4+1视图包括:逻辑视图(Logic View),开发视图(Develop View),进程视图(Process View),物理视图(Physical View)和场景视图(Scenarios)。


 




c4架构设计 4+4架构_c4架构设计


视图间的关系


 


4+1视图不仅便于我们记录架构设计,实际上它也指导了我们进行架构设计活动的部分过程。


通常我们选择UML来表现各种视图,以下列出了UML和各视图的对应关系


4+1 视图                                    UML


场景视图                             use case


逻辑视图                             类图


开发视图                             类图,组件图


进程视图                             无完全对应


部署视图                             部署图


在架构设计稳定中通常不会给出较多的用例描述,这些是在需求稳定中定义。但是往往架构文档会选择一些用例,列入文档中,这些用例和一些非功能性需求一起用以证明架构的有效和正确性。在逻辑视图中用例的实现是必不可少的一节,尽管架构设计更关注非功能性需求。


融入MDA的思想


对于逻辑视图和开发视图所应包含的内容常常会觉得很难区分两者间的明显界限。逻辑视图包含更多的分析模型与实现技术本身相关性应该较少,如业务对象模型及其扩展。而开发视图则会与实现技术紧密相关。


随着MDA思想的推广,在架构设计文档的撰写方面也产生了影响,我们不难把MDA的PIM和逻辑视图联系起来,而把MDA中的PSM和开发视图联系起来。


在编写逻辑视图是我们应该描述与技术平台无关的模型,而开发视图则描述与实现技术平台相关的模型。


如在逻辑视图中表现的某些实体类,我们会在开发视图中转换为EJB组件(实体Bean)。


这种做法不仅有利于我们编写架构设计文档,同时更是一种好的架构设计思考流程。