本文不是介绍架构设计方法,只是给出一种E2E的架构设计流程的实现,具体的架构设计方法需要参考相关的资料。
架构设计流程分析:
具体步骤说明:
1、需求收集,包括从用户收集到的原始需求和项目通过友商的竞争分析得到的需求,需求分为功能需求和非功能需求两大类。
2、需求分析,针对1中搜集到的需求,首先按类划分整理,再对原始需求进行分解,生成子业务需求,在根据业务需求做用例分析。用例分析中,需要对每个用例业务模型和场景进行分析,推荐使用鲁棒图和时序或者协作图,用例分析清楚后得到了分析模型连同场景以及业务用例就得到了设计需求。
3、进入架构设计的重点——逻辑架构设计
a) 系统上下文需要分析所开发软件与系统周边系统的关系。
b) 通过设计需求(包括内部的业务场景和模型分析)我们给领域模型分析提供了语境,在领域分析过程中进一步对业务领域模型做分析,包括其领域范围、领域间边界、调用关系、领域内部的流程细化、模型细化,最终得到领域模型,其一方面可以为用例分析提供领域词汇,优化用例分析,另一方面将来可能作为设计模型的原型。
c) 框架分析,主要分析系统中涉及的第三方框架的架构,因软件本身的架构是可能受到第三方的架构的影响的。
d) 子系统划分,即模块化的过程,在业务模型和领域模型的基础上,需要将系统细分为多个更小的单元,便于分析和理解,模块化过程可以参考:
e) 分层化,虽然可以基于子系统划分进行设计,但多个子系统间的关系还需要整体把握,防止后期设计的偏离,通过分层的方式将子系统划分到层中,这里通常会套用已有的架构模式来实现。
4、运行架构主要关注系统内进程间、线程间的通信,包括多线程的分析,这部分主要基于对业务模型、子系统功能的分析来做,输出的运行视图将作为后续实现设计的输入。
5、物理设计主要考虑系统的部署方式,主要基于业务需求和逻辑架构来分析,其输出也会影响到实现的设计。
6、实现架构分析,可以理解为系统设计的过程,之前从逻辑架构开始理解为系统分析过程。
a) 基于子系统的划分,继续模块化的工作,需要划分子系统内部的模块,即子系统内部的静态结构分析。
b) 模块划分好后,进一步分析其之间的调用关系,需要分析出模块对外暴露的接口。
c) 再对模块进行模块化划分,将模块分解为多个功能单元。分析功能单元间的调用关系,需要分析出功能单元对外暴露的接口。
d) 分析设计模型,深入功能单元内部,基于领域模型与业务分析模型,设计具体的功能单元内部类模型。
e) 分析功能单元内类的调用流程,对设计功能的流程做分析。
7、实现架构的分析清楚后,根据设计模型通过UML工具生成代码,就可以进行编码工作了,整个架构设计工作结束。