Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技术方案设计的方法

技术方案设计的方法

作者头像
静儿
发布于 2020-11-24 07:23:04
发布于 2020-11-24 07:23:04
1.3K01
代码可运行
举报
文章被收录于专栏:编程一生编程一生
运行总次数:1
代码可运行

背景

前段时间接手了一个还处于方案设计阶段的工作,我重新做了设计。觉得新方案比旧方案业务清晰明朗、解决了旧方案的缺陷。我就很高兴,跟同事聊这个事情。同事就问我是怎么想到这些的呢。

我说了一些细节的,但是没有把核心本质讲出来。我觉得这是个很难回答的问题。因为一个方案怎么更合适,主要因素包含业务理解、个人经验、思维逻辑。这3个要素一般都是靠经年累月的积累才获得的。从这些中提取出别人可以学习和使用的方法确实不是一会儿就能想出来的事情。

市面上可以看到的关于技术方案设计的经典的书都没有仔细的去讲这个问题。比如《人月神话》讲的是项目大了怎么办、《架构即未来》讲的是架构扩展性的问题。那对于最普通的CURD(创建更新读取删除)系统究竟怎么去设计。都是做CURD的,架构师和普通开发区别在哪里。本文就来探讨一下这个问题。

CURD系统怎么做出技术含量

我前几年在面试别人的时候,遇到过一些面试者,已经带领别人做过项目了。可能人家的管理能力是不错的。项目管理是个博大精深的学问,可能一个项目在不同的阶段,更上层会找不同的管理者来做。

比如初创团队,会找些善于创业、擅长打造敏捷团队的管理者。这样的管理者可能会比较善于鼓舞团队士气。而到了一定阶段,项目业务量起来之后,不再求快,而是求稳。这时候管理者可能会换人,新的管理者做事并不那么快,但是做决策的路很正。路很正怎么理解,打个比方说:别人提了需求,前一个领导人很好,人家来需求他就接。这个领导不是,他会分析利弊和领域、业务是否合适放在这里。再比如更一层领导提了一个需求,要求什么什么时间做完。这个领导会去分析上层领导更本质的需求,宁可延期,要做稳做好。而项目稳定之后,继续稳定下去已经没有什么业绩了。这时候可能会再换领导,这个领导会带来一些原来积累的规划、方法。

总之,这个面试者可能有这些能力,但是我们要招聘一个技术人员,先考察硬实力,所以很自然的先请他介绍之前的项目做了什么和怎么做的。他自己也很没底气的说就是CURD嘛。给人感觉就是没有想法,在工作过程中思考的少。

拿一个后台管理系统来说,要对重要数据进行添加修改删除,一般需要审核、审计,敏感数据脱敏,甚至需要数据灰度。将这整套流程串联起来,需要一个工作流系统,可能会用到工作流引擎。目前有些数据脱敏已经用上了NLP(自然语言处理)技术。这里面每一步都涉及知识点。

数据模型

有限状态机设计

刚才提到后台管理系统里用到审核、审计、灰度。这三个可以与业务流程分离,做成三个工具组件。审核有审核状态:审核中、审核成功,审核失败。灰度也有待灰度、灰度中、灰度成功、灰度失败四种状态。

假如有一条数据,目前它的状态可以分成数据状态:有效数据和无效数据。另外还有审核状态和灰度状态。这时候数据模型(可以简单理解成数据库的数据表设计)应该设计成三个状态用三个数据字段表示呢,还是用一个数据字段来表示这三种状态呢。

这要看情况,一般来说,如果三种状态之前是相互独立的,比如:审核中是否可以待灰度,也可能是灰度中?对于一个工作流系统来说,一般要先审核通过才会进行灰度流程。就是说各个状态是互斥的。所以设计成三个字段,程序的判断逻辑会很复杂,因为有些组合是不成立的。这时候更合理的一个设计是用一个状态字段表示,通过状态机流转来控制。

设计方案中可以通过类似下面的流转图来体现:

实际方案设计过程中我改造了一下,状态正常从左到右流转,将终态用不同的形状(这里用椭圆)来表示。这样表示秩序感强些,更好理解。

数据表设计

在数据表设计时,要至少考虑数据类型、是否默认、是否为空和索引设计。比如对于钱什么的,需要用decimal(10,2),具体精确到多少位,要根据业务理解来定。对于加密字符什么的,加密如果是md5的,可以用char,而不用varchar来提高效率。

这里面就好像《红楼梦》里的台词一样,每条都很有学问。所以面试时的场景题也经常爱让进行一个数据表设计。

流程设计

我比较建议在一个设计方案开始时先把设计流程图先给出来,便于对方案有个整体认知。

流程图也很有学问,【亿图】软件上把流程图分成了下面的子类。

我个人最常用的是泳道图和BPMN。BPMN可以简单理解为业务流程图和泳道图差别不大。就是在普通流程图基础上增加一个分类,这个分类可以是阶段、也可以是执行者这些。就是给流程图多增加一个维度的信息,理解起来更清晰。

总结

在设计方案里还必须要有里程碑和未来规划。有句废话叫只怕有心人。在工作中,往往工作出色的并不是最聪明的,也不是花时间最长的。而是真正用心做的人。特别是设计方案,建议多用前人和大家总结的设计模板。模板最能代表一种设计思路。自己想到的、设计模板想到的都要考虑清楚,把方案做细。

遇到具体的问题,要做业界调研。之前听过一个实习生做的方案,他说业界调研的时候并没有查到特别相关的方案资料。当时我的领导就说了一句特别值得思考的话:如果没有查到,肯定是你的检索关键词不对。

我后来反复斟酌这句话,发现能想到的检索关键词才是真正体现自己对业务理解的。同时,业界调研的时候不仅要对业务相关做调研,需求可以分解,具体到每个步骤也需要调研。调研过程是个极好的学习机会。

下功夫和不下功夫的区别,想想《红楼梦》,之所以这么多红学者。人家红楼梦的作者设计每句话都是剧透,人物说出的话,都会被啪啪打脸。里面的每道菜谱都是值得专业厨师来研究的。这都是心用到了。优秀架构师也是这样炼成的。之所以说这个废话,因为我就被diss过方案做的不够细,我也看过别人的方案不够细的。时常回想被diss不够细的那句话,觉得真的是金玉良言。心怀感激。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
我终于统一了团队的技术方案设计模板
不管我们是做业务开发,还是做基础建设,虽然产品诉求千差万别,但是我们必然需要做好方案设计,然后还需要进行方案设计评审。
Allen.Wu
2022/12/19
10.3K0
迭代技术方案设计文档规范
规范在团队管理中的意义无需多言,对于开发团队来说,技术方案的设计和执行无疑是日常工作中很重要的一块。编码一定要在思考清楚之后在开始,以免把问题带入线上,或者反复修改造时间、精力的浪费。
程序员架构进阶
2021/02/17
2.8K0
迭代技术方案设计文档规范
我独到的技术见解--技术方案的调研和设计过程
技术方案设计属于架构能力中的一种,当我们开始作为某些功能/应用的 Owner 或是技术负责人来参与项目时,便会面临独立完成技术方案的调研和设计这样的工作内容。
被删
2024/02/05
6721
我独到的技术见解--技术方案的调研和设计过程
如何写一篇可实施的技术方案?
在日常开发中,老大经常要求我们给出一个完善并合理的技术方案之后才能进行开发。并且要求技术方案一定要细,要重点覆盖监控、异常处理、灰度、降级方案。同时要注重边界处理。最初,我的技术方案写的很粗,也没有理解老大说的边界处理到底是怎么一回事。于是乎,辛辛苦苦写了一周的方案,就会在技术方案评审的时候直接打回重做,甚至多次打回。 不过还好,在经历过几次大项目的方案设计后,我的方案设计越来越完善,直到最后老大非常认可并在组内进行参考。随着我的方案设计逐渐完善,也逐渐发现,不但编码效率越来越高,编码时思维更加清晰,而且方案中的每一个模块都贯穿了整个软件生命周期。
全栈程序员站长
2022/08/26
3.6K0
如何写一篇可实施的技术方案?
WMS入库和出库多方案设计对比说明(入库篇)
对于不同发展阶段的公司、大中型公司和小微企业,在进行有实物的物理流转管理时,都需要对其仓内的物料或商品进行出入库的动作管理。那么,不同公司的WMS出入库方案都是如何设计的呢?
物流IT圈
2023/03/09
1.7K1
WMS入库和出库多方案设计对比说明(入库篇)
如何写好技术方案
对于开发同学,通过写技术方案,把需求和实现提前梳理一遍,减少等到编码阶段才发现前期考虑不全导致返工的情况;并且写好技术方案再编码,使得编码时思维更加清晰,提高编码效率和质量。
全栈程序员站长
2022/08/31
1.3K0
如何写好技术方案
说说我理解的技术项目管理
技术到了一定阶段势必会面临充当技术项目管理的角色,这个角色不仅仅要求具备技术视野和技术规划决策能力,面对庞大的组织如何运筹帷幄,拉资源拉团队干成事是技术管理者的升级打怪的必要技能,项目越复杂,越是考验项目管理者或者项目owner应对复杂多变情况的应变能力。下面结合自己工作中的经验及所见所闻谈谈我对技术项目管理的理解。
liddytang
2024/09/06
2030
企业BI项目蓝图规划建设方案
BI——商业智能,一个高大上的名字,一直被很多人认为是企业信息化中的“面子工程”。
肉眼品世界
2021/09/27
1.5K0
企业BI项目蓝图规划建设方案
以任务为核心的 BTSD 设计模型
提起 B 端设计,我们可能下意识的会想起后台设计,大部分情况是以 PC 端为主的界面设计。更深一步去想,B 端设计的需求来源是复杂业务,设计师的主要工作是为了满足这些需求给出合理方案。在大量的需求和逻辑中,设计师的方案往往顾此失彼,使得设计不能同时满足用户体验和业务需求。
我只是会一点编程
2022/04/01
6812
系统设计到撸代码?我用了这些方法和工具
大家好,我是老猫。今天和大家分享一下程序员日常的绘图思路,以及一些老猫日常使用的绘图工具。
程序员老猫
2024/04/22
1880
系统设计到撸代码?我用了这些方法和工具
在政采云如何写前端技术方案文档
百度百科对计算机软件的的定义为:“计算机软件( Software,也称软件)是指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器”。
政采云前端团队
2021/12/15
2.2K0
在政采云如何写前端技术方案文档
后端的技术方案怎么写?
并且记录实现的初衷,后续方便进行迭代。 我们经常会说之前的人没留下文档,导致很多时候都是通过代码来猜测功能的意图,导致最后很多代码我们不敢删,一直堆积在那里。
程序猿川子
2024/07/21
2650
后端的技术方案怎么写?
如何写出一个好的设计文档?
大部分的工程师都不重视设计文档的书写,对于一个需求,都是经过一些简单的讨论,写一个简单的方案甚至就是自己简单的想想就开始进行编码的工作。
一个会写诗的程序员
2019/07/18
2.3K0
设计方案,写了才知道有多香
大家好,我是零一,今天要跟大家聊聊开发流程中不起眼的环节——设计方案。你们可能没听过,也可能只是简单得走过过场,别划走,这非常重要!
@零一
2021/08/19
5010
设计图都不会画,还想做”架构师“?
什么是系统架构师? 系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。 架构师在软件开发的整个过程中起着很重要的作用。 如何才能成为系统架构师? 首先必须具有丰富的软件设计与开发经验,这有助于理解并解释所进行的设计是如何映射到实现中去。 其次要具有领导能力与团队协作技能,软件架构师必须是一个得到承认的技术领导,能在关键时候对技术的选择作出及时、有效的决定。 第三
互扯程序
2018/03/26
27K2
设计图都不会画,还想做”架构师“?
数据安全-数据分类分级方案设计
通过前期市场调研与分析,发现已经有多家企业在数据分类分级方向发力,国家政策也是21年才正式发布,市场还处于早期阶段,多家产品也是近一两年才出炉,地方政府相关单位也在逐步出台相关政策和做出动作。数据分类分级产品,还是大有市场的,那么我们来看一下针对分类分级方案的具体设计。
鲲志说
2025/04/07
1460
数据安全-数据分类分级方案设计
lnmp - 登录技术方案设计与实现
登录功能是对于每个动态系统来说都是非常基础的功能,用以区别用户身份、和对应的权限和信息,设计出一套安全的登录方案尤为重要,接下来我介绍一下常见的认证机制的登录设计方案。
stark张宇
2024/09/17
2702
职场人涨薪30%的秘诀,看完这篇你就明白了
如果有人问:未来十年最值钱的技能是什么?数据思维能力一定名列前茅! 不知道大家有没有发现,在近几年的招聘中,不少岗位都要求具备数据思维处理问题的能力。拥有此能力的职场人薪资往往比同岗位高出30%,而且在面试过程中更容易受到面试官的欣赏。 在各大招聘网站中,我们很容易就可以看到与数据思维处理问题能力相关的岗位,薪资极具竞争力。可以这么说,如果你具备数据思维处理问题的能力,加上一些过往的工作经验,你将获得相当丰厚的待遇。 向左滑动查看更多 现在扫码进群或点击文末阅读原文,即可获得
博文视点Broadview
2023/05/06
1710
职场人涨薪30%的秘诀,看完这篇你就明白了
Elasticsearch灾备同步方案设计(二)
最近因为客户项目需要,所以专门调研了Elasticsearch的这些不常用的重要功能,并整理成文档,现在分享出来,希望对有这方面需求的同行有些帮助 由于内容较多,一共分为三部分分享 Elasticsearch多主、多数据、多协调、多冷节点节点说明及配置 Elasticsearch灾备同步方案设计 Elasticsearch灾备同步方案设计验证 为了避免ElasticSearch发生意外情况所以对存储的数据进行灾备是在使用ElasticSearch过程中,必不可少的重要环节,通过快照快照进行本地或者分布
低代码布道者
2022/07/26
1.2K0
Elasticsearch灾备同步方案设计(二)
容易引起雪崩的两个处理
先介绍标题《容易引起雪崩的两个处理》的第一个处理:慢查询。上周在测试环境遇到一个慢查询问题,虽然是测试环境,但是现象还是很让人担忧的:“在大量执行update操作”“已经执行1个多小时”“负载200多,基本上库都卡死了”。把库都要搞挂了,细思极恐啊。于是,这个事件处理的优先级即刻被升级为S级别,我们进行了点线面的梳理和分析。
静儿
2021/10/09
5940
容易引起雪崩的两个处理
相关推荐
我终于统一了团队的技术方案设计模板
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验