业务产品千差万别,没有一个统一的方法论可完成架构设计和技术评审,架构设计只需要从某些关键点来表达系统即可。提纲就是用来帮助大家做架构评审的工具,帮助大家整理思路并形成可实施的方案,因此在做系统设计时,可有选择性地参考此提纲,根据业务特点来完成一个可实现的有效的架构设计。
根据需求规格说明书和项目技术调研报告,进行软件的概要设计,通过技术研讨、系统原型设计等方法,形成软件的设计思路和设计模型,绘制系统设计图表(包括系统总体架构图、系统结构划分图、动态交换关系图、系统流程图、系统运行设计图表、系统部署架构图、系统技术架构图),定义系统关键数据结构,设计系统关键接口。如果有必要的话,需要开发软件原型系统对设计思路进行验证,并作为后续系统开发的基础。
总体结构、外部接口、主要部件功能分配、全局数据结构以及各主要部件之间的接口等方面的合适性。
一句话概括方案的亮点,比如说:双写、主从分离、分库分表、扩容、归档等。
方案的具体描述,文字描述不清楚的话可以结合图(任何图:UML、概念图、框图等)的方式说明,如果是改造方案最好突出变动的地方,以下列举了几种描述的角度:
给出方案的基准数据,并按性能需求评估需要使用的资源数量。
列出方案的优缺点,优缺点要具有确定性,不要有“存在一定风险”这种描述,也就是要量化。
整个方案需要参考技术评审指标提出的各方面指标来考虑满足系统的非功能质量需求。
对比可选方案,并给出选择这种方案的理由,选择倾向的方案。
对上面倾向的方案的更为细致的描述
具体方案设计是如何
整体架构是如何,把架构图画上
把几个关键、重点的点的设计思想表述出来,用户确保大的方向是 OK 的。
整体流程是如何,弄一个整体流程图
关键系统的核心流程是如何
1、模块描述:说明哪些模块实现了哪些功能; 2、模块层次结构:可以使用某个视角的软件框架图来表达; 3、模块间的关系:模块间依赖关系的描述,通信机制描述; 4、模块的核心接口:说明模块传递的信息、信息的结构; 5、处理方式设计:说一些满足功能和性能的算法;
通过一个 xmind 格式去整理相关的异常边界,这样有助于自己在实现的时候有足够的把控度,也便于别人去 review 你的方案和具体实现(如 coding)
异常边界需要考虑:
线上部署拓扑如何,上下游是如何
标识所选方案的风险,提出解决此风险发生时候的应对策略,比如:上线失败时的回滚策略。
架构怎么演进
阶段如何规划
每个阶段该达成什么目标
描述使用所选方案需要做的具体工作,并评估开发、测试等细化任务需要的时间,形成可实施的任务计划表,任务计划表推荐采用简单的表格形式,减少工具使用和学习的成本。
【"欢迎关注我的微信公众号:Linux 服务端系统研发,后面会大力通过微信公众号发送优质文章"】