技术方案应该这么写

news2024/12/23 14:43:52

简介

   新入职一个华为十年工作经验的老Java。让写一个设计方案,其实也不算难,根据业务需要存取三千万数据,三天没写出来,最后做了辞退处理。其实我相信这个老技术员是有能力的,只是没有合适的机会表达。但是也侧面的说明写好方案设计是多么的重要,当公司找一个高级程序员的时候,是不会只满足于让你写代码的,还要会参与设计与方案撰写。
   所以在这里给大家分享一下如何写好一个技术方案,其实就是:背景与目的难点与需求详细设计测试策略文档沉淀,文章会分别介绍一下,各部分的写做目的和技术要求。其实写好方案就一句话:表明你的问题,简单清楚的提出解决方案。后面还会提供一个简单模板,供大家参考
   现在来场景带入,你入职了我们公司,上一个华为老兵折戟沉沙,领导让你写个简单的方案意思一下,让你写,我们的系统要经的起核弹的考验,让你设计一个方案出来,并且让我带你写。请添加图片描述

背景与目的

  • 概述问题的背景、现状和影响范围,明确需要解决的核心问题。
  • 阐述解决方案的目的和意义,以及对项目或业务的预期效益,为后续设计提供清晰的方向。

  很多同学会想,我一共就两天时间,还要写什么口水话,不是浪费时间?其实大家都很忙,来参加你的评审,或者看你的报告,连你要做什么,为什么要做都不知道,一上来直接就讲技术不合适,这里要求,简洁清楚的说出:为什么要做这个方案,要达到怎样的结果就可以。那怕只有几十个字也无所谓。
  你的方案背景:2024年世界局势动荡,对系统提出诸多挑战,一次小小的停电就能把系统打崩,我们需要的是真正意义的上健壮系统。目的:我们希望,系统能抵御各种灾难,能经的起核弹的考验。

难点与需求

  • 深入分析项目的难点和关键所在,为详细设计提供解决方向。
  • 列出功能性、非功能性需求,包括性能、安全性、兼容性等。

  这一部分更多的是承上启下,第一部分明白了我们为什么要做,要做到什么样。第二步就是明确,难点是什么,具体的需求是什么。相当于背景和目的是给领导看的,难点与需求是给技术人员看的。以及你为自己的方案解决点提出一个可行的点,以及具体的实现目标。
  你的方案项目难点在于:物理毁灭系统硬件,是软件不可恢复的。所以你提出要做灾备,并且大胆的提出异球备份计划,项目计划为:流浪系统。做好系统后,发送到月球上就可以了。需求:一、做一个完整的能独运行,且能同步数据的系统,包括软硬一体。二、找个外包公司做个火箭。

详细设计

  • 针对难点和需求,提出详细的架构设计技术方案
  • 阐述技术方案的选择理由,并分析其优缺点适用场景局限性
  • 使用UML建模(如用例图、类图、序列图、状态图等)进行清晰表达,常见工具有:Visiodraw.ioprocesson
  • 考虑合适的设计模式,并做代码示例,且画好类图。
  • 考虑方案的可扩展性可维护性安全性,并提出相应的措施。

详细设计,是整个方案的核心,整个书写需要循序渐进,

  • 第一步:是架构设计,需要让大家明白整体的架构和组件间的交互关系,或者说,你的方案涉及到架构的哪一步,让大家有个整体的认知。
  • 第二步:技术选型,为什么这么选技术,优缺点是什么。
  • 第三步,学会用图表达你的含义。UML也是一种语言,让人看图就能明白意图。能写好一个技术方案的核心,就是详设部分,而UML和设计模式,就是详设的核心,请注意。

  设计模式就不多说了,这里重点介绍一下UML建模语言,Unified Modeling Language(UML)是一种用于软件系统设计和建模的标准化语言。注意UML是一种语言,它提供了一套图形化的符号和约定,用于描述系统的结构行为交互功能。UML图可以分为两大类:

  • 结构图:描述系统的静态结构,包括类的组织、对象之间的关系以及系统的部署架构。包括以下七种类型图:
    • 类图:描述系统的类及其之间的关系,包括继承、关联和聚合关系。
    • 对象图:描述系统中某一时刻的对象及其之间的关系。
    • 包图:描述系统的包及其之间的关系。包是用于组织UML元素的逻辑分组。
    • 组件图:描述系统的组件及其之间的关系。组件是可部署的软件单元。
    • 部署图:描述系统的部署架构,包括硬件和软件的物理分布。
    • 构件图:描述系统的构件及其之间的关系。构件是可部署的软件单元的物理实现。
    • 轮廓图:描述系统的轮廓,即系统的外部可见部分。
  • 行为图:描述系统的动态行为,包括对象之间的交互、系统的流程以及状态的变化。包括以下四种类型图:
    • 用例图:描述系统的用例及其之间的关系。用例是系统的功能性需求。
    • 活动图:描述系统的流程,包括活动、动作和控制流。
    • 状态机图:描述对象的有限状态机,包括状态、触发器和转换。
    • 交互图:描述对象之间的交互,包括消息、序列和协作。

  UML提供了丰富的图表示法,可以用于描述软件系统的各个方面。更多时候用图说话,比文字更容易理解。这些图并不是都要画,选择一部分,完成你的表达即可。
  你的方案,架构组件图要有吧,灾备的部署图要有吧,用例图和交互图要有吧,然后把异球备份的理念讲清楚就好。

测试策略

  • 制定测试策略,包括测试用例、测试环境、测试数据等。
  • 覆盖所有功能需求和非功能需求,并考虑各种边界情况和异常情况。
  • 主要给出测试建议与方向,详细策略应该测试完善。

  严格来讲,做为开发,测试策略不应该你来写。因为自己踢球自己做裁判,本身不合理,知道有问题早就改了。详细的策略,应该是测试跳过开发,直接和产品确认需求,然后写测试策略。但是这里,主要是给出测试一些思路和建议,只有明白了内部逻辑,才能更好的明白完成测试策略书写。所以重点在于给出测试建议。
  你的建议就是,停电模拟核弹来袭,毕竟我们公司暂时现在没有核弹采购需求。

文档沉淀

  • 针对详设,以图表文档方式沉淀方案,引导开发与测试。
  • 主要书写数据库表结构、接口请求文档、项目计划与工作量安排、公议记要,风险评估等。

  方案写完了,要做一些文档沉淀,和给开发做一些引导。比如数据库应该怎么设计,接口参数怎么定,项目工作量怎么安排等,一般工作安排不会让开发来做,但是给出一个工作量预估领导还是很喜欢的。最喜欢你估两周,让你三天做完。预估工时的办法很简单,以你为标准,你需要多久写完,然后乘以二至三倍就可以了
  你把设计文档写完,数据库表、接口文档等也写完,让领导给你找个做火箭的外包公司,然后把系统发到月球上去。或者做个简单异地灾备,你的任务就算完成了。如果你不做这个方案,一开始就说方案不实际,或者三天后文档拿不出,你猜结果会是什么。

模板

  xxx系统设计方案(模板)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1597246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9. Spring Boot 日志文件

本篇文章源码位置延续上个章节:SpringBoot_demo 本篇文章内容源码位于上述地址的com/chenshu/springboot_demo/logging包下 1. 日志的作用 发现和定位问题: 日志是程序的重要组成部分,它在系统、程序出现错误或异常时提供诊断和解决问题的线…

学习经验分享【32】本科/硕士开题报告、中期报告等写作经验分享

本科/硕士阶段首先就是要写开题报告,然后中期报告,这篇博文就是分享一下写报告的经验,避免被老师打回来。本人有丰富的写报告经验,有需要的朋友可添加文末联系方式与我联系。 一、本科开题报告的提纲 课题来源及研究的目的和意义…

C++内存分布

C代码编译过程 预处理 宏定义展开、头文件展开、条件编译,这里并不会检查语法编译检查语法,将预处理后文件编译生成汇编文件汇编将汇编文件生成目标文件(二进制文件)链接将目标文件链接为可执行程序 进程的内存分布 程序运行起来(没有结束前)就是一个…

openjudge_2.5基本算法之搜索_166:The Castle

题目 166:The Castle 总时间限制: 1000ms 内存限制: 65536kB 描述 Figure 1 shows the map of a castle.Write a program that calculates how many rooms the castle hashow big the largest room is The castle is divided into m * n (m<50, n<50) square modules.…

如何应对Android面试官 -> startActivity 流程详解

前言 本章主要讲解下 Activity 的启动流程&#xff1b; 整体概念 点击桌面图标&#xff0c;启动目标应用程序的 Activity&#xff0c;首先会跟 AMS 打交道&#xff0c;也就是 SystemServer 进程中启动的AMS&#xff0c;Launcher 进程和 SystemServer 进程中的 AMS 通信「一次跨…

(九)C++自制植物大战僵尸游戏自定义对话框的实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/m0EtD 对话框在游戏的交互中非常重要。在游戏中&#xff0c;对话框不仅可以提醒用户下达任务指令&#xff0c;而且还可以让用户进行操作&#xff0c;自定义游戏中的各种属性。对话框在游戏的交互中非常常见且大量使用。Co…

树莓集团与天府新区信息职业学院在国际数字影像产业园成功举办授牌仪式

2024年4月12日&#xff0c;树莓集团与天府新区信息职业学院共同在国际数字影像产业园举办授牌仪式。这场仪式不仅标志着双方合作的正式开启&#xff0c;更是为未来的产教融合、学生实训与就业推荐树立了坚实的基石。 仪式上&#xff0c;天府新区信息职业学院领导与树莓集团的代…

Qt QStyle详解

1.简介 QStyle类是 Qt 框架中用于控制应用程序界面元素外观的一个抽象基类。这个类提供了一种方式来定制窗口部件&#xff08;widgets&#xff09;的绘制和行为&#xff0c;可以通过改变主题或风格来更改应用程序的外观&#xff0c;而无需修改窗口部件本身的代码。 Qt包含一组…

抽奖系统设计

如何设计一个百万级用户的抽奖系统&#xff1f; - 掘金 如何设计百万人抽奖系统…… 在实现抽奖逻辑时&#xff0c;Redis 提供了多种数据结构&#xff0c;选择哪种数据结构取决于具体的抽奖规则和需求。以下是一些常见场景下推荐使用的Redis数据结构&#xff1a; 无序且唯一奖…

系统边界图

系统边界图的定义&#xff1a; 系统边界图是系统工程和软件工程中的一种图形化工具&#xff0c;用于描述系统与外部世界之间的交互和界限。它展示了系统的组成部分以及这些组件如何与外部实体进行通信和交互。系统边界图通常包括系统内部的各个组件、外部实体以及它们之间的通信…

【Qt】:事件的处理

系统相关 一.鼠标事件二.键盘事件三.定时器 事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在个同的的刻友出的。当用广投下鼠标、敲下键盘&#xff0c;或者是窗口需要…

掼蛋残局技巧

一、根据对手张数出牌 口诀&#xff1a;十打二来九打一&#xff0c;打成八张不着急&#xff1b; 对手七张或八张&#xff0c;可以反手打一夯&#xff1b; 五打二来六打三&#xff0c;打得对手把眼翻&#xff1b; 枪不打四&#xff1b; 两张&#xff1a;出两张以上的牌&#xff…

AI预测福彩3D第36弹【2024年4月15日预测--第8套算法开始计算第4次测试】

今天咱们继续测试第8套算法和模型&#xff0c;今天是第3次测试&#xff0c;目前的测试只是为了记录和验证&#xff0c;不建议大家盲目跟买。。我的目标仍旧是10次命中3-4次!~废话不多说了&#xff0c;直接上结果&#xff01; 2024年4月15日3D的七码预测结果如下 第一套…

【Leetcode每日一题】 动态规划 - 下降路径最小和(难度⭐⭐)(55)

1. 题目解析 题目链接&#xff1a;931. 下降路径最小和 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了. 2.算法原理 对于这类路径类问题&#xff0c;通常我们首先需要分析状态表示以及状态转移的过程。特别地&#xff0c;本题涉及…

虚良SEOPython脚本寄生虫程序源码

本程序&#xff0c;快速收录百度首页&#xff0c;3-5天就可以有流量&#xff0c;长期稳定&#xff0c;可以设置自动推送。 点这里 Python脚本寄生虫程序源码&#xff08;寄生虫电影脚本&#xff09; - 虚良SEO 模板可以自己修改&#xff0c;源码带模板标签说明&#xff0c;简…

106.从中序与后序遍历构造二叉树

给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 思路&#xff1a; 中序遍历数组中&#xff0c;找到一个根节点&#xff0c;那么其前为其左子树&a…

CameraCtrl、EDTalk、Sketch3D、Diffusion^2、FashionEngine

本文首发于公众号&#xff1a;机器感知 CameraCtrl、EDTalk、Sketch3D、Diffusion^2、FashionEngine NVINS: Robust Visual Inertial Navigation Fused with NeRF-augmented Camera Pose Regressor and Uncertainty Quantification In recent years, Neural Radiance Fields …

【团体程序设计天梯赛 往年关键真题 25分题合集 详细分析完整AC代码】(L2-001 - L2-024)搞懂了赛场上拿下就稳了

L2-001 紧急救援 最短路路径打印 样例 输入1 4 5 0 3 20 30 40 10 0 1 1 1 3 2 0 3 3 0 2 2 2 3 2输出1 2 60 0 1 3分析 用一遍dijkstra算法。设立 n u m [ i ] num[i] num[i]和 w [ i ] w[i] w[i]表示从出发点到i结点拥有的路的条数&#xff0c;以及能够找到的救援队的数目…

吴恩达llama课程笔记:第六课code llama编程

羊驼Llama是当前最流行的开源大模型&#xff0c;其卓越的性能和广泛的应用领域使其成为业界瞩目的焦点。作为一款由Meta AI发布的开放且高效的大型基础语言模型&#xff0c;Llama拥有7B、13B和70B&#xff08;700亿&#xff09;三种版本&#xff0c;满足不同场景和需求。 吴恩…

Avalonia中MVVM模式下设置TextBox焦点

Avalonia中MVVM模式下设置TextBox焦点 前言引入Nuget库程序里面引入相关库修改前端代码#效果图 前言 我们在开发的过程中,经常会遇到比如我在进入某个页面的时候我需要让输入焦点聚焦在指定的文本框上面,或者点击某个按钮触发某个选项的时候也要自动将输入焦点聚焦到指定的文…