如何分析一个复杂系统
最近要分析好几个系统。简单总结一个学习和分析系统的方法,供大家参考。
如何去了解一个庞大的现有软件系统:
- 先从业务角度出发,了解产品、客户、功能、价值。
- 业务架构:了解这个产品中都有哪些业务组件,以及相互之间的关系如何。了解这个产品还与外部哪些业务应用有何种关系。
- 逻辑架构:了解整个系统划分为哪些子系统或模板。这些子系统间是什么关系。
- 物理/部署架构:了解整个系统(含子系统),分为哪些物理的部署组件,以及这些组件如何部署在各物理机上,以及它们的调用关系是怎样的。
- 开发架构:从开发人员视角,了解各子系统的开发架构,如分层逻辑、划分模块、调用关系等。
- 领域模型:在深入了解业务子系统或业务模块时,重点需要对内部的业务进行领域建模,绘制出相应的领域模型图。
- 数据架构:了解子系统内部的领域模型是以何种方式来存储的。
- 关键模块设计:先了解此模块的使用方法、对外的接口,然后再了解此模块的内部结构。一边看代码的同时,一边绘制相应的包图、类图、序列图。
整个分析过程,我觉得至少必备的工具:思维导图、UML。