写在前面:本文纯属个人想法和">经验总结,如转载请注明出处,如有雷同纯属巧合 (:
1. 一般的架构设计流程
所有的软件开发方法都要解决从需求到实践的转换问题,为了提高软件的质量,前辈们提出了需求分析工程和各种建模技术,但是在需求和设计之间还是很难逾越,也就是说缺乏能够反映做决策的中间过程,于是软件架构设计应运而生。
对于架构设计人们已经提出了许多方法,分类为:工件驱动的方法;用例驱动的法;模式驱动的方法;领域驱动的方法(这些分类就不介绍了,有兴趣的朋友可以看看相关的书籍 (: )。
一个经典的架构设计过程模型,沿用了RUP中迭代增量的思想,他由分析、描述、选择、构造和组合5个阶段组成,如图:(有兴趣的可以学习一下架构设计的元模型来设计属于自己领域或者产品线的设计过程模型,其实下面的模型也是元模型的实例化)
依据需求规格说明书分析出功能需求和架构需求,通过用例和场景的描述,把需求分为关键的,次要的和可选的3类。关键需求决定架构,结合软件架构风格和通用知识选择最关键、影响最大的子系统分析设计并产生构件。组合就是定义构件接口,构件作为一个封闭的功能实体,对外提供交互接口,并通过连接件将构件连接起来形成最终的软件架构描述。5个阶段是不断迭代的过程,在每一次迭代中,都选取并实现一组用例和场景来确认并完善架构。
这个过程模型看似很流畅,但是,架构师在设计时很难把握他的正确性和精准性,而且用它架构的系统是否对后续设计开发形成一种原则上的指导是很难说的。我们知道层次化分析是解决复杂问题的一般性方法,下面的方法将从层次的角度来设计系统的架构模型,他将直接指导开发人员实现系统,是一个架构设计的理想方式。
2. 引入四层驱动模型后的架构设计方法
软件开发的过程中是存在着多个层次的,而对于每一个层次,驱动其进行的因素也所不同,所以更好的方式是,区分和建立必要的层次,从而形成一种层次化的多因素驱动的软件架构设计模型,我们将整个软件架构的设计划分为四个层次-----目标层、信息层、构件层和实现层。同时,软件的整体复杂性也透过这四个不同的抽象层次得到清晰的刻画。
模型中每一层都有一种因素在驱动其建模设计的进行。目标层的驱动因素是所要实现系统的各种相关角色,信息层的驱动因素是目标层中的各种目标,构造层的驱动因素是信息层中的各种信息及其信息活动,实现层的驱动因素是构件层中的类、对象、对象交互等各种面向对象设计的元素,实现层所产生的接口、类及其属性、方法的具体某种语言代码实现框架则对接下来的编码实现阶段提供直接的支持。
图片看不清楚?请点击这里查看原图(大图)。
3. CKM(客户知识管理)中的实践
3.1 系统概述
CRM系统大家可定不陌生,其实CKM = CRM+KM(知识管理),靠近BI商务智能方面的一个应用级系统,这方面在经济管理学中理论是很成熟的,有兴趣的朋友可以看看,客户知识管理是构建客户统一视图,进行客户研究,管理并传播客户知识的开方平台,为运营商实施以客户为中心的信息运营提供支撑。
我就不多说了,还是看我的四层模型怎么展开吧。
3.2 功能性需求
这里我就不介绍其他的架构视图啦,只是简单描述一下部分功能结构(所谓的树形层次结构,其他的架构视图,比如应用架构,视图架构,场景架构等可以看看我的相关文章)。