标签:docker 类设计 有关 web页面 拓扑 前后端分离 dock shel 对象模型
软件设计是设计什么?说下我现在的做法。
程序猿出文档,接口文档、数据存储相关文档(数据库文档、redis每个key的规则文档、es索引文档 等持久化和缓存的都要有)、框架结构uml、关键和复杂业务的时序、部署图。
为何需要这些呢?
1、接口文档
软件使用,就关注请求和响应,无论是cmd shell的交互还是图形化交互 或web页面,都是请求和响应,这种接口形式。所以接口文档很重要。
接口根据是否立马得到结果可以有同步、异步。根据逻辑是否复杂有简单的crud接口和复杂的接口。
2、数据库模型、redis的key规则等数据存储类设计图
在这之前一般会有关键业务的领域对象模型图,这里先说数据的。
程序就是读写数据。
程序跟人交互就是接口,而内部就是人们操作的数据。所以各种数据模型就很重要。
这个模型有数据库的ER等。
3、关键业务和复杂业务的模型以及时序。
这个跟数据模型关系密切,就像讲算法 脱离不了数据结构,讲数据结构脱离不了算法。
领域对象模型感觉是数据和业务算法的杂合体。应该是现有领域对象才有的数据模型和关键业务时序等这些。
关键业务和复杂业务模型,就是关键的和重要的,e...。
有些中间的数据结构也挺重要,但不完全是数据模型文档中的,比如 登录以后跟登录用户绑定的数据,一般跟session id绑定的,可以做一个文档。
4、框架结构uml图
这个跟业务有点关系,不过有时候是固定的。
拿web开发距离。web开发框架基本是mvc和业务逻辑 数据访问这类的 三层。mvc跟业务逻辑 数据访问的关系是分开的,这两个东西不是一个概念。
mvc是,v视图 现在都是前后端分离 这个基本就是接了。c就是控制器。m是数据,mvc没有规定m是怎么来的,只是直接用数据。这时候就要service业务逻辑和dao数据访问了。
mvc大体上框架的数据流转就是请求到控制器 到业务逻辑到数据访问。
框架结构图就是描述数据的大体流转的。因为你的代码有自己的设计。需要把这个描述清楚,比如在控制器中如何定义统一的响应规则 等等。
5、部署图
这个首先得知道网络拓扑,更多的是服务器拓扑图,不过现在有了docker后,网络环境复杂,比如k8s,fannel网络的使用,使几台服务器就跟以前一个机房的网络环境一样复杂。
部署图 更多的是关注服务部署情况。
做这些设计,不用过分纠结做文档的先后顺序,我做的过程中,基本都有返工,比如接口文档先出的,但跟业务相关的设计出来后 发现接口有调整。
做完设计后,就可以启动代码了。
在写代码的时候,可以把方法体里要写的逻辑 先用文字描述下,再写代码。
现在我写代码的阶段,简单的crud功能几乎没有返工,复杂接口返工会有,但总体还是少。现在代码质量比较高,最起码比以前高,而且一直在提高。
总结
开发时,出的文档有 接口文档,数据库文档等数据文档,框架结构文档,关键和复杂业务模型 时序,部署图。
标签:docker 类设计 有关 web页面 拓扑 前后端分离 dock shel 对象模型
原文地址:https://www.cnblogs.com/chengjunchao/p/10921737.html