一、概述
子系统的概念没有一个统一的定义,有人说是模块,有人说是构件,现在比较时髦的说法是微服务。这里的子系统是指可独立部署、独立升级、对外提供接口(一般是restful接口)的程序。
那么如何来设计这样一个子系统呢?从我多年做软件开发的经验和理解来看,设计这样一个系统需要做三件事情:1、理解系统的定位。2、理清系统的边界。3、设计系统的内部结构。
二、理解系统的定位
理解系统的定位是指搞清楚系统存在的价值,即通常我们说的需求分析。搞清楚这样一个系统能给客户带来什么样的价值,是能提升客户的工作效率吗,还是能给客户降低成本。这个系统针对的客户痛点是什么,这是方向性问题,是在开发系统前一定要搞清楚的。
搞清楚系统的定位非常关键,否则做出来的东西,技术含量再搞,界面再炫也没用。做的东西不是客户想要的,就没有价值。
三、理清系统的边界
系统边界包含两方面的内容:一方面是系统需求的边界,客户有很多需求,经常这也想做那也想做,这时候就要考虑这些东西是不是都在这这个系统里面做,什么时候做,要有路标;另一方面是技术的边界,搞清楚这个系统所依赖的,和被依赖的;即通常我们说的系统间接口。
清楚了系统的需求边界后才不至于把系统搞成大杂烩,什么都做,啥都没做好。开发人员疲于奔命,大家没有成就感。理清了系统间的接口后减少了后续联调的工作,多个系统也可以并行开发,不用关注彼此内部的实现。
四、设计系统的内部结构
系统内部结构包含系统内各子模块的设计,数据库设计,消息通信机制设计,日志维护接口,权限管理等。这一块内容是我们开发人员经常接触的HLD和LLD部分。
搞清楚了这三块,基本上对一个子系统的分析就差不多了。后面再对这三块展开详述,每一块该怎么做,有哪些方法和技巧。