写架构设计文档有感

前段时间写了篇架构设计文档,一直想就这件事聊点什么,结果一拖就拖到如今了。算起来这是我第二次写架构设计文档了。一路摸爬滚打,算是有一点点领悟,也不知道对不对,就随便说说。程序员

不少人以为架构文档没有什么写的,或者说不知道要怎么写。其实我以为这是由于本身对架构、或者对业务需求并非那么理解。若是真的理解了,再来写这个文档,会发现真的有不少能够写的地方。由于你在明白架构设计文档的目的、做用后,就知道这个东西不只仅是拿来糊弄公司的,而是真的有指导意义的。面试

首先要理解架构设计文档的做用,架构设计文档其实对项目开发是有很大帮助的,并且在写架构设计文档的过程当中,也能让设计师认真的从新梳理一遍业务需求,从而有针对性的去设计,而不是在写代码过程当中临时决定要用什么方法去写。数据库

忽然想起以前面试的时候问面试者,架构是什么? 听到的回答五花八门,什么都有。有的人干脆就说架构就是 MVC,MVP 等等,让人有点无奈。我在这里简单聊一下个人理解。微信

什么是架构?

架构这个词其实并非软件领域专有的。它甚至能够追溯到人类起源的时候。markdown

刚开始人类只有很简单的需求:有东西吃、有地方睡。一我的就能作完全部的事情。可是随着需求变得多样性,还有技术领域的细分化,一我的作不完全部的事情了,并且也学不会那么多技能。这个时候社会分工就出现了。随即演变出了社会组织架构。包括如今的企业组织架构,都是为了更好的分工而生的。网络

建筑中的架构也是相似的。一开始就一个茅草屋,一个火坑,简简单单的屋子就够了,不须要什么架构设计。随着社会的发展,人们对建筑功能的需求也愈来愈多,空间的切分也愈来愈细致。以居所为例,出现了客厅、餐厅、厨房、卧室、卫生间等专用空间。随着人们对空间划分变得细致、空间组合变得多样,建筑架构就应运而生了。架构

那么在软件领域,架构最根本的目的,我认为也是为了让一个团队能更好的分工,进而更好的合做框架


以前说了,写不出文档一方面是由于对架构理解不到位。另外一方面就是由于对业务需求理解的不到位,那么为何业务需求对架构这么重要呢?工具

什么是业务需求?

业务在很大的程度上决定了一个团队的分工。可是在讲业务需求以前,我想先聊一下程序员所须要解决的两类问题性能

第一类就是生意问题。咱们制做的软件,其实都是为了作生意。并且不少时候,这个生意没有了软件同样能作,只是比较低效而已。咱们只是生产了一个工具,能够提高作生意的效率

另外一类问题,就是计算机问题,是用来支撑咱们去生产这个工具的,好比计算机、数据库、网络等等,都是为了更好的支撑咱们去模拟作生意的过程。

这两类问题,都会对咱们的架构设计产生或深或远的影响,因此必定要在设计前就有必定的了解。

接下来聊聊业务需求为何会对架构设计产生深远的影响。咱们先看一下建筑的用途是怎么影响到建筑的架构的。

像农村里的普通住宅(通常规模),砖混结构就够用了;城镇的中低层住宅楼(规模变大),就须要框架结构;高层住宅(规模进一步变大)的结构也不同,是核心筒 + 剪力墙;至于像机场、车站这种须要超大空间的建筑体(另外一种使用场景),则又须要大跨结构。你看,建筑上不一样的空间诉求,对架构的要求也是不一样的。

回到软件领域,不一样的业务,它的特色也不同。像活动这种,每天在变,那么架构设计上就须要考虑快速迭代和快速开发;像日志系统,天天都有大量写入,可是读取比较少,因此在设计的时候也要考虑性能和稳定性等因素。不一样的业务需求,有不一样的特性,咱们要在架构设计的时候就考虑进去这些特性,而且尽力去知足这些需求。

在这里我再多嘴一句,不少时候咱们接收到的任务,实际上是别人给过来一个解决方案,并非他想解决的问题。咱们要学会识别这个陷阱,由于别人给的解决方案可能并非最优的解决方案,甚至多是错的。咱们须要直面问题,而后解决问题,这样是最高效的。

怎么写架构设计文档

说了这么多,到底要怎么写架构设计文档呢?

我以为架构文档最应该体现的就是:对业务需求的合理分解,以及对各个子业务的特性的理解。对业务进行了合理的分解后,咱们的项目就有了一个比较合理的骨架,这个骨架就是咱们的底层架构。而后再对每一个子模块作概要设计,随后将底层架构和上层的各个子模块的设计进行融合。其实这个过程就是一个化繁为简的过程,将繁琐的业务转化为一个个关键类和协议接口。

到了这一步,咱们对业务已经有了很明确的认知了,天然也清楚每一个模块的特性,此时再作技术选型,就有很强的目的性了。这样一来计算机问题也就随着业务问题一块儿解决了。


这里有一个文档纲领,只要思路正确,直接填鸭也没啥问题。

1、概述
2、目的
3、项目背景
4、系统建设目标
5、参考资料
6、架构设计
6.1 架构分析
6.2 设计思想
6.3 架构体系
6.4 系统视图
6.5 模块划分
6.5.1 模块描述
6.5.2 模块接口
``


---

最新更新请关注微信公众号
![](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/2/5/170134ee28fdd62e~tplv-t2oaga2asx-image.image)复制代码
相关文章
相关标签/搜索