如何做好技术方案设计

技术方案设计 概要设计文档-技术方案: 1.由原始需求逐步拆分,深入;后期迭代增加; 2.数据流图,整体流程+每一条数据流链路,便于查问题节点; 3.不仅给技术开发看,面向产品和测试,对测试的输出和产品的输出; 4.写出支撑功能点,前端对接的数据结构; 流程: 需求评审--设计方案评审(数据链路,需求拆分)--技术方案评审(实现方案合理性,性能,复杂度)--开发--测试--上线--维护 架子: 目录 ... 阅读详情
AI摘要

本文强调了技术方案设计对软件开发工程师的重要性,它能提高开发效率和产品质量,也是企业的数字资产。还阐述了好的技术方案应包含概要设计和详细设计两部分,分别介绍了各部分的关键要素,如系统架构图、数据模型图等的设计要点。

目录

一、为什么要做好技术方案设计?

二、好的技术方案应该包含哪些部分?

2.1 概要设计

2.1.1 系统架构图

2.1.2 数据模型图

2.1.3 核心业务流程图

2.1.4 关键上下游交互设计

2.2 详细设计

2.2.1 包图

2.2.2 类图

2.2.3 表设计

2.2.4 接口设计

2.2.5 系统监控设计


一、为什么要做好技术方案设计?

作为一名软件开发工程师,技术方案设计的重要性不言而喻。技术方案是我们从全局到局部去理解项目需求、技术挑战和解决方案的关键步骤。它确保了项目的每个环节都能有序衔接,每个细节都能得到充分考虑,从而提高开发效率和产品质量。

技术方案也是企业的数字资产,不仅记录了项目的设计思路和实现细节,还沉淀了设计过程中遇到的问题和权衡决策。这些宝贵的信息对于后来者来说,是理解和维护系统的重要参考,也是传承知识、避免重复错误的关键。

二、好的技术方案应该包含哪些部分?

一个好的技术方案应该包括:概要设计、详细设计两部分;

  • 概要设计:包括系统架构图、数据模型图、核心业务流程图、关键上下游交互
  • 详细设计:具体落地过程中的包图、类图、基于业务用例的业务流程设计、接口设计、系统监控设计

分别总结一下每一部分设计过程中的关键要素:

2.1 概要设计

2.1.1 系统架构图

  • 组件划分:为了简化系统的复杂性,提高模块化,应该将系统分解成若干个高内聚、低耦合的模块或组件。
  • 技术选型:应该从成本、稳定性等多个因素来考虑关键系统选型,例如:存储方案、消息中间件方案等。
  • 数据流向:描述了数据在系统中的流动路径,包括数据如何在不同的组件、服务或系统之间传输和处理。

2.1.2 数据模型图

  • 实体识别:是现实世界中可以区分的事物,可以是人、地点、物品或概念。
  • 属性定义:是指为每个实体确定和定义其属性的过程,属性是实体的特定特征或属性。在属性定义过程中的关键是确定数据类型、考虑非空约束、定义默认值
  • 关系建立:明确实体之间的关系,如一对一、一对多或多对多。
  • 范式优化:范式优化是指通过应用数据库范式原则来优化数据模型,过程中需要在减少数据冗余和提高系统性能方面取的平衡。

2.1.3 核心业务流程图

  • 流程步骤:需要针对核心业务用例(可以忽略分支流程),列出业务流程中的每个步骤。
  • 用户交互:如果涉及用户操作,明确用户在流程中的角色和交互。

2.1.4 关键上下游交互设计

  • 推拉模式:需要考虑两个系统交互时,应该使用推模式还是拉模式。
  • 系统边界:定义在两个系统交互过程中各自系统的定位,并明确职责范围。
  • 安全性考虑:考虑数据传输的安全性,如加密和认证机制。
  • 性能优化:评估和优化数据交换的性能,确保系统的响应速度。

2.2 详细设计

2.2.1 包图

  • 包的划分:将系统中概念或语义相近的要素,分组到不同的包中。
  • 依赖关系:描述了包之间的相互关系,特别是它们之间的访问和使用关系。
  • 复用和封装:
    • 复用等价原则:对于同类可重用的模型元素尽量放到一个包中,不要把可重用模型元素和不可重用的模型元素混到一个包中。
    • 共同重用原则:把同一个应用要重用的多个模型元素放到同一个包中,以减少包间的依赖,提高包的独立性。
    • 共同封闭原则:把可能同时修改,同时维护的模型元素放到一个包中,以便于今后维护和升级。
    • 非循环依赖原则:包之间的依赖关系不要形成循环,即不要出现A依赖B,B又依赖于A的现象。

2.2.2 类图

  • 类的定义:确定系统中需要哪些类,并定义它们的属性、方法、构造器等
  • 继承和接口实现:继承和接口实现描述了类之间的层次结构和契约关系,包括继承、接口实现、多重继承等。
  • 关联和依赖:标识类之间的关联、聚合和组合等关系。
  • 设计模式应用:设计模式是解决特定问题的成熟模板,它们在类图中体现为特定的类结构和关系。

2.2.3 表设计

  • 字段定义:为每个表定义具体的字段、数据类型、非空约束、默认值等。
  • 索引设计:索引设计用于提高查询性能,减少数据检索所需的时间,常见的包括:主键索引、唯一索引、辅助索引、符合索引。

2.2.4 接口设计

  • 接口规范:主要定义接口通信协议、接口同步还是异步、接口的安全性要求。
  • 参数和返回值:明确接口的输入参数、返回结构体。
  • 异常处理:需要定义好异常码、异常处理机制。
  • 版本管理:考虑接口的版本管理,以支持向后兼容。

2.2.5 系统监控设计

  • 业务监控:常见的业务监控包括数据正确性监控、数据一致性监控、业务流程正确性监控、业务变化趋势监控等。
  • 系统监控:常见的系统监控不仅包括CPU、磁盘、IO、网络等系统监控,也需要考虑慢查询、消息积压等中间件的关键监控。
技术方案的调研和设计过程 详细介绍前端技术方案的调研和设计的过程 阅读详情

相关推荐

如何编制企业数据治理体系建设项目投标技术方案?

背景与目标:简述客户当前数据管理现状及面临的问题,明确数据治理体系建设的目标,如提升数据质量、确保合规性、支持决策等。- 数据治理平台:选择合适的数据治理平台,明确其功能模块,如数据目录、数据质量管理、元数据管理等。- 组织架构:设计数据治理的组织架构,明确各角色职责,如数据治理委员会、数据所有者等。- 技术需求:评估现有技术架构,识别数据治理的技术需求,如数据集成、数据质量管理等。- 政策与流程:制定数据治理政策与流程,涵盖数据质量管理、数据安全、数据隐私等。

cdfunlove的博客 862

【 技术栈】技术方案到底怎么写?

技术方案应该是相关方共同参与并且需要达成共识,技术方案需要考虑现有的资源成本,现有系统影响,以及合理性多方位来分析,通过技术文档可以让相关方理解整个功能的业务流转逻辑,对于后续工作推进也有一定作用。本文结合作者工作中写技术方案的经验做了总结,存在不足欢迎补充或者指正,欢迎大家在评论区分享下自己如何写技术方案。关注我们一起学习技术吧,坚持相信有输入一定要有输出,希望我们的技术能力越来越强大。

DreamSun的博客 2819

在银河麒麟V10上部署Atlas 300i Duo:从固件到驱动的一站式踩坑笔记

日期:2025-09-09关键词:鲲鹏920、Atlas 300i Duo、银河麒麟V10、NPU、驱动、固件。

weixin_41544125的博客 2813

技术人 | 如何写出一篇好的技术方案?

近期在写某个项目的技术方案时,来来回回修改了许多版,很是苦恼。于是,将自己之前写的和别人写的技术方案都翻出来看了几遍,产生了一些思考,分享给大家。我们为什么需要写技术方案?总结下来无非是几点,从不同人的视角来看: 产品:验证技术方案是否能够 match 上产品方案 测试:验证技术方案对测试方案是否有足够 & 准确的输入 同事 & leader:参与技术方案评审,验证技术方案的合理性 新人(不单单指新同学也指新接触这一块的同学):拿到技术方案可以很快对某一块的事情熟悉起来 那么,什么样的技

云布道师 1685

国家大地2000坐标系投影坐标转高德地图经纬度坐标-【高斯投影坐标】

国家大地2000坐标系投影坐标转换成高德经纬度坐标显示画图。

devil_zhuzhu的博客 1万+

麒麟V10 SP3国产化环境部署MySQL 8.0全流程实战

本文详细介绍了在国产化操作系统麒麟V10 SP3上部署MySQL 8.0的全流程实战指南。从环境准备、冲突排查到安装包处理、服务配置与安全加固,提供了详细的命令和技巧,帮助用户顺利完成MySQL 8.0的部署与优化,适用于国产化环境下的数据库应用。

weixin_29231027的博客 268

技术方案包括哪些内容_技术方案的选择包括哪些内容?

技术方案的选择包括哪些内容?1. 生产方法选择(1) 研究项目产品国内外各种生产方法的先进程度及发展趋势,积极采用先进适用的生产方法。(2) 研究所采用的生产方法是否符合所采用的的原料路线。同一种产品,不同的工艺路线往往要求不同的原料路线、选择生产方法时,要考虑工艺对原料的规格、型号、成分等的要求,原料供应是否稳定可靠。(3) 研究生产方法的技术来源的可得性。若采用的是引进技术和专利,必须对引进技...

weixin_35615475的博客 7911

基于泰勒展开改进的物理信息神经网络

基于泰勒展开改进的物理信息神经网络

天天酷科研的博客 503

系统技术方案设计

假设A机器在时刻0时成功发送一次视频曝光事件,这次本地缓存是5分钟有效期,redis缓存也是5分钟。B机器在时刻4时,由于本地缓存为空,所以会判断redis缓存,此时。失败不进行消息发送,如果B机器在时刻4时本地缓存不为空,则说明B机器在前5分钟发送过一次曝光事件,就不需要去尝试获取redis锁。所以系统的增加曝光接口中,如果某一条视频有曝光,则对其进行火力值计算,这样量级则大大减少。采用本地缓存+redis分布式缓存限制每条视频每5分钟发送一次曝光事件到MQ进行限流。火力值:根据视频曝光量计算出来。

学而不思则忘 1018

USB驱动(URB)

本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。

m0_49476241的博客 915

仿真学习系列(四十三):Sigrity仿真之平面谐振分析

在 SIGRITY 中,平面谐振分析(Plane Resonance Analysis)是一种用于分析信号完整性(SI)问题的高级仿真方法,尤其关注于层间电磁波的传播、谐振现象和信号衰减等问题。平面谐振分析通常用于电源分配网络(PDN)、信号线和参考平面之间的相互作用。本文将详细介绍如何在 SIGRITY 中进行平面谐振分析,并提供一些实用的分析方法与步骤,帮助工程师们识别和优化可能存在的设计问题。

案例文章,高速信号 480

如何写一个技术方案

写技术方案的意义、怎么样才是好的技术方案、如何写一个技术方案

zhongzhh8的博客 1万+

【SCADA】KingSCADA将数据插入SQLServer的方法

1、创建数据库及数据表格;2、配置ODBC数据源。3、通过KingSCADA与数据库建立连接,将数据写入数据库对应表格。

做有价值的事,积累有价值的笔记! 4958

创新创意ssm计算机毕业设计题目300例之java农村贫困人口建档立卡扶贫资助管理q12s1

很多人在做毕业设计的时候,都犯了一个错误,那就是不借鉴师兄师姐的经验,前人的经验,总是有可取之处,定期收集是一个好习惯,平日里就养成的,不会出现临时抱佛脚的窘境。如果你是一个有心的人,从毕设开始开始,就收集整理毕业设计,那么到了你用的时候,绝对可以从这些作品中找到创意,做起来会得心应手。定位是一个很重要的东西,如果一个人不对自己的现状有一个清醒把握,可能会走弯路,对于毕业设计,有些人说不会做,那是真的有一些吃力,有一些人不会做,是因为觉得不值得去做,有一些不会做,还有可能是觉得没有找到创意。

JAVA程序设计 225

光学测量仿真软件:Zygo_(12).Zygo软件的用户界面与操作指南

Zygo软件支持用户自定义工具和插件,以扩展软件的功能和适应特定的仿真需求。编写脚本使用Python或其他支持的脚本语言编写自定义工具的脚本。例如,编写一个脚本来计算光束的衍射效率。# 示例脚本:计算光束的衍射效率 import zygo # 导入Zygo软件的API def calculate_diffraction_efficiency(wavelength , grating_period , angle) : """计算光束的衍射效率:param wavelength: 光源波长(单位:米)

kkchenjj的博客 1669

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怎么减少编程中的 bug?

为什么要编程?因为代码没在那里。创造一个世界是如此让人着迷,Linux 的创始者 Linus 这样表述对编程的喜爱之情: 对于喜爱编程的人来说,编程是世界上最有趣的事,比下棋有趣得多!因为你可以自己制订游戏规则,而你制定什么样的规则,也就会随之出现与此规则相符合的结果。 在电脑世界中,你就是创世者,你对所发生的一切拥有最终的控制。 你可以建筑一个这样的房子,有一个活板门,既稳固又实用。但是每个人都...

毛毛虫的博客 434

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

如何提高系统的稳定性?

如何提高系统的稳定性? 2人以上的需求或项目,必须制定主要负责人,负责整体系统的设计、代码把控,内外部的协调,把整体流程串起来,不只是每个人只做自己的部分; 在需求评审之前,相关人把prd通读,把问题提前记录,前置与产品沟通,切记不要prd还没看就评审,导致评审过程中发现不了问题,到了研发阶段或者上线了才意识到大问题; 需求拆解,避免项目或需求过于庞大,尽量以一周开发完成,两周上线的节奏进行; 技术方案设计之前先跟主负责人、组长沟通大致思路,方案出来之后先内部(找主负责人或组长)过一遍,确保没有大问题再去

JJWanna的博客 4781

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

如何做好团队的技术方案评审?

团队技术方案评审的效果总是差强人意,低质量的方案评审导致人力成本的浪费以及后期落地成本的增加,本篇文章探讨一下 “如何做好团队技术方案评审?技术方案评审是研发生命周期中最为常见的活动,技术方案评审会是最常见的活动形式。一般由研发人员基于产品需求完成技术方案设计之后,在干系人间发起技术方案的评审。作为架构师几乎每周都会参加1-2次团队的技术方案评审会,每个业务线团队的评审会质量层次不齐。在如此多的干系人参会情况下,如果评审会不能够有效的达成一致性认知,那么其造成的人员成本浪费可想而知。

系统工程实验室 1753

如何设计好的技术方案

一、技术方案意义 我们为什么需要写技术方案?总结下来无非是几点,从不同人的视角来看: 产品:验证技术方案是否能够 match 上产品方案 测试:验证技术方案对测试方案是否有足够 & 准确的输入 同事 & leader:参与技术方案评审,验证技术方案的合理性 新人(不单单指新同学也指新接触这一块的同学):拿到技术方案可以很快对某一块的事情熟悉起来 二、好的技术方案形式 我们都知道技术方案是指导具体开发工作的,可以分别从开发的事前、事中、事后来讨论这个

Sunny的专栏 1745

如何写好技术方案

本文将介绍写技术方案的意义,如何评判技术方案的好坏,如何写好技术方案。写技术方案的意义 写技术方案根本目的是提高研发效率和质量,具体体现在以下方面:1、提高沟通效率对于整个团队,通过技术方...

u014714618的专栏 2万+

如何进行技术方案设计

应该认真分析当前业务的特点,明确业务面临的主要问题,设计合理的架构,快速落地以满足业务需要,然后在运行过程中不断完善架构,不断随着业务演化架构。关于钱的计算一定要准确,一个单子三个相同的商品,要分1块钱,可能得分成0.3、0.3、0.4,这个钱不但和用户相关也和海关相关,如果出问题就是大问题。但是能多想一些肯定是好的,因为这是一个深度思考的过程,不吃亏。通过分步骤、分阶段、分系统等方式,尽量降低方案复杂度,方案本身的复杂度越高,某个细节推翻整个方案的可能性就越高,适当降低复杂性,可以减少这种风险。

969

如何写前端技术方案文档?

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号回复1,加入高级Node交流群前言百度百科对计算机软件的的定义为:“计算机软件( Software,也称软件)是指计...

程序员成长指北 1万+

如何撰写好技术方案设计-真实案例分享

一、 前言作为一个技术开发者,特别是高级、资深开发、架构师等,往往会遇到根据需求撰写技术方案。那么如何撰写一篇好的技术方案设计,我们今天就来聊一聊这个话题。二、 技术方案是否有必要答案是肯...

bytearch 4253

我总结的技术方案模板,同事们都在悄悄模仿!

大家参考我这个方案设计模板(提纲)和相关介绍来做自己的方案设计的时候,可以根据自己的实际业务情况和背景做相关目录的删减,最后得出自己最终的方案设计,然后再去进行方案评审。

programmerjob的博客 3512

聊聊技术方案设计的普遍问题与参考实践

技术方案的设计没有完全统一的标准,也不应该有强制标准。团队内可以根据自身情况制定可裁剪的技术方案设计模板,作为团队方案设计的参考。“好”的技术方案可能不是面面俱到、事无巨细的表述,应该结合迭代需求/产品建设的上下文灵活的决定技术方案要体现的内容、详细程度等。“好”的技术方案应该是有清晰的背景说明、关键的技术实现方案表述、能够在干系人间达成一致,并能指导团队实施落地。

系统工程实验室 1329
上一篇: 【AI资讯汇总】2024年12月第二周
下一篇: 【PlantUML系列】部署图(七)
morning_judger
博客等级 码龄16年 403粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

morning_judger

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值