如何进行技术选型

2023-11-16

在重大产品决策或者大规模应用开发前一般需要进行技术选型,特别是需要开发一个之前没有了解过的系统或者应用时,其目的是为了降低产品研发的技术风险。所以首先需要明确为什么需要技术选型、需要达到什么目的,整个过程需要有一套的组织流程来保证。

一般可以将整个过程分为调研、候选对比、关键技术验证、原型验证几个阶段。

在调研阶段主要调研对象是目前该范围业内主要产品以及开源产品,需要了解其主要技术特点和各自的优势和劣势。从以下几个方面入手:

1、实现当前的需求,主要用到哪种技术;

2、该技术的成熟度如何,是否被广泛使用;

3、该技术目前由谁支持,是否持续更新或者权威性如何;

4、该技术的优势和劣势,以及存在的风险;

5、技术的复杂性如何,当前团队对该技术的熟悉程度和可能需要的时间;

 

在候选对比阶段,是在前一阶段基础上选出两种倾向用于最终路线的技术进行进一步的研究和对比。在此同时,需要需求人员给出产品使用的场景以及模拟,这一点是很有必要的。因为明确了产品的应用场景,才能对技术需要解决的问题进行更好的把握,避免选错,导致最后项目失败。比如有需要用新的内核开发游戏盒子的需求,主要解决游戏的体验和流畅性问题,以及IE内核游戏盒子的弊端。如果需求只是这样,并不能很好的指导技术选型,因为还不知道要支持游戏还需要些什么。因此还需要更明确的指出使用场景,如玩的是页游,最少要稳定支持到10个游戏多开,页游对CPU和内存等资源占用比较大,需要兼容到windows系统XP及XP以后的版本。这样列出来后,技术人员就会知道使用的技术必须在游戏多开时和系统资源占用大时,应用要稳定和流畅。

在关键技术验证阶段,需要列出所有的技术验证点,对验证点描述、验证方法、验证步骤、验证前提、验证环境以及最后的交付物和评估方法指标在验证方案中体现;

在原型验证阶段,主要是针对重点关注的场景,通过一个原型来整体验证比较。在这个阶段一般需要进行概念模型、编程模型以及结构设计例如设计时视图、系统结构图等,定义需要的API,必要时还需要划分子场景,在场景中包括场景描述、特写、预研点以及相关设计。

 

以上是在技术流程上怎么选型,在选型时还要注意到以下几点:

1、实事求是,不要一味的拥抱开源或者依赖收费支持,只选择适合解决当前问题的技术。

2、不要炫技,热衷于时髦技术,选择最新的东西让人有成就感,但没经过市场大规模检验的技术,也会让人陷入泥坑。

3、敏捷务实,借鉴其他团队的成功经验,并且不要过度设计和拓展。

 

言必信,行必果。欢迎访问我的博客。

 

https://www.cnblogs.com/guolixiucai/p/4969411.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何进行技术选型 的相关文章

  • 微信、whatsapp 和其他通讯应用程序背后的技术是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我渴望了解不同实时通讯应用程序的架构 他们使用任何通用协议 架构吗 Facebook斥资190亿美元收购的WhatsApp架构 htt
  • zend 模型架构

    假设我的数据库中有两个表 项目和用户 我创建了两个扩展 Zend Db Table Abstract 的模型 Model DbTable Users and Model DbTable Projects 现在 创建一个实例是一个好的模式吗
  • 如何将扩展 PUB-SUB 模式中的发布者和订阅者与 C++ 中 ZeroMQ 中的中介同步?

    Extended PUB SUB topology https i stack imgur com GEgpx png 我在一个有 1 个中介的用例中有多个发布者和多个订阅者 在 ZeroMQ 指南中 我了解了如何使用额外的方法来同步 1
  • Hub、Spoke 和 ESB 之间的区别

    我知道对此已经有一个很好的问题 但它并没有真正回答我正在寻找的问题 据我了解 1 两者都用作应用程序之间的中心焦点2 两者都可以在服务 应用程序之间使用路由 中介 转换等 但我真正能看到的唯一区别是 中心辐射型通常有许多不同的格式进入中心
  • Java 包结构中的模块与层

    我曾经把所有东西都放在这样的包中 com company app module1 com company app module2 但它使得基于包的 AOP 切入点变得困难 并导致需要 IDE 才能理解的巨大包 所以现在我意识到我需要一个更深
  • 洋葱结构与六边形结构的比较

    它们之间有什么区别 洋葱 六边形 根据我的理解 它们是相同的 它们专注于应用程序核心的领域 并且应该与技术 框架无关 如果有的话 它们之间有什么区别 另外 我认为使用其中一种架构或什至针对 N 层架构并没有真正的优势 如果做得不好 仅仅遵循
  • 什么是自以为是的软件?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我经常看到人们说某些软件 非常固执己见 或者微软倾向于编写 不固执己见 的框架 这实际上意味着
  • 微服务版本控制

    就在运行时支持同一服务的多个版本化部署以及消费者如何使用不同版本而言 适应基于微服务的架构中的版本控制的最佳实践是什么 1 如果我们使用基于路由的版本控制作为提到的方法之一here http niels nu blog 2016 micro
  • MVP 和 GWT 小部件之间的通信

    如果我将 MVP 模式与 GWT 结合使用 如 2009 年 Google I O 中的 GWT 架构最佳实践讨论 但已将信息分散到多个小部件中 那么应该如何填充值对象 假设我有一个 EditPersonView Presenter 一个
  • 如何发出 JMS 同步请求

    我有一个 Web 应用程序 预计将从外部应用程序获取和显示数据 该外部应用程序只能通过消息传递 JMS 访问 因此 如果用户在浏览器上提交请求 则同一 HTTP 请求线程将必须与消息系统 MQ 系列 交互 以便同一请求线程可以显示从消息系统
  • 与云无关的架构? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在对一个新解决方案进行一些架构工作 该解决方案最初将在 Windows Azure 中运行 不过 我希望解决方案 或至少是架构 设计 与云无
  • 如何以 REST方式发送 HTML 表单?

    我有一个名为 事实 的资源集合的 URI 以及该集合中每个 事实 资源的 URI 我相信 创建新 事实 的表单应该使用 GET 来请求 但我无法确定应该将其设置为哪个 URI 对集合 URI 的 GET 应返回 事实 资源 URI 的列表
  • 泛化和专业化——有什么区别

    我很难真正找到泛化和专业化之间的区别 以及何时使用其中之一 谁能启发我吗 最后还有一个使用 UML 的插图 Animal是一个概括 Dog是专业化 您的超类是一个通用类 但您的子类将是您的超类的专门继承者 当您沿着继承层次结构向下移动时 它
  • SOA架构数据访问

    在我的 SOA 架构中 我有几个世界碳基金服务 我的所有服务都需要访问数据库 我应该创建一个专门的 WCF 服务来负责所有数据库访问吗 或者 如果我的每个服务都有自己的数据库访问权限 可以吗 在一个版本中 我在一项服务中只实例化了一个实体层
  • 就MVC模式而言,Struts 2中使用的Action是什么?

    在Struts2中 控制器将请求分派给Action Action将其传递给后端逻辑 这可以看作是一个非常大的过程 model 处理请求 JSP代表视图 Struts2中如何定义Action 肯定是not一个看法 是控制器还是模型 Strut
  • 微服务、amqp 和服务注册/发现

    我正在研究微服务架构 实际上我想知道一些事情 我非常同意使用 返回 服务发现来在基于 REST 的微服务上发出请求 我需要知道发出请求的服务 或至少是服务器集群的前端 在哪里 因此在这种情况下能够发现 ip port 是有意义的 但我想知道
  • 关于多客户端和可定制 Web 应用程序的架构所需的建议[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 简单的注入器和内部构造函数

    我正在开发一个小型类库 并为我的 DI 使用简单注入器 类库有一个访问点 我猜是某种服务 它是public它有一些internal服务和存储库 我看到 Simple Injector 不支持使用内部构造函数进行构造函数注入 例如 我的产品服
  • 有人还在使用客户端服务器架构吗[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我编写软件已有几十年了 现在一切都是网络 在网络出现之前 我们拥有的客户端服务器应用程序基本上是直接与数据库对话的胖客户端应用程序 它
  • RESTful API:我应该在哪里编码我的工作流程?

    我正在开发一个 RESTful API 这是我的第一个 API 也是我的第一个真正大型的编码项目 因此 我仍在学习很多关于建筑等方面的知识 目前 我的 api 设置分为以下几层 HTTP层 资源层 领域模型 业务逻辑层 数据访问 存储层 持

随机推荐

  • 【项目设计】高并发内存池(三)[CentralCache的实现]

    C 学习历程 入门 博客主页 一起去看日落吗 持续分享博主的C 学习历程 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 也许你现在做的事情 暂时看不到成果 但不要忘记 树 成长之前也要扎根 也要在漫长的时光 中沉淀养
  • QT中学习Opengl---(纹理基本加载opengl写法)

    前言 本文的代码是 LearnOpenGL 中对应代码 这里提供学习 大家喜欢的可去官方网站去看看 LearnOpenGL CNhttps learnopengl cn readthedocs io zh latest 本章为加载纹理 qt
  • 单链表 和 顺序表 实现的 通讯录

    通讯录 前言 通讯录 通讯录的逻辑 通讯录存储结构的选择 顺序表 数组 在堆区开辟的空间 柔性数组 单链表 单链表实现通讯录 进入页面设计 代码效果 看起来比较有那味了 通讯录属性的设计 主函数的设计 AddContact ShowCont
  • mysql内置函数,时间戳与时间类型互转

    from unixtime time stamp gt 将时间戳转换为日期 unix timestamp date gt 将指定的日期或者日期字符串转换为时间戳
  • 域格模组的模拟语音、PCM、I2S

    域格模组的模拟语音 PCM I2S 文章目录 域格模组的模拟语音 PCM I2S 一 域格模块里的音频功能 二 常见音频 传输 接口 1 介绍 2 一目了然的协议时序 I2S协议时序 PCM协议 二 模块中使用音频功能 一 域格模块里的音频
  • 基于MATLAB的车牌识别

    目录 车牌识别系统的介绍与展示 车牌定位 1 灰度处理 2 边缘检测 车牌分割 1 图像腐蚀 2 图像平滑 3 移除对象 4 图像切割 车牌识别 1 灰度处理 2 直方图均衡化 3 二值化 4 中值滤波 5 字符识别 车牌识别系统的介绍与展
  • 如何启动单节点zookeeper以及注意事项

    1 安装jdk 因为zookeeper是基于java进行开发的 2 将zookeeper解压之后 再zookeeper目录下conf目录下有一个zoo sample cfg 将它改名成zoo cfg 因为zookeeper启动时自动加载的是
  • QT获取各种平台系统版本信息之QSysInfo

    一 头文件 include
  • 小程序授权第三方平台

  • 数据分析初步认识

    今天的任务是阅读数据分析的概述 老师的建议是带着问题去学习 今天的任务结束之后 我要能回答为什么学习数据分析 所以 为了更好地记录我今天的学习 我决定边学边写博客 那么 开始吧 一 数据分析的含义 作用和分类 数据分析就是一个基于一定目的
  • vue运用animate.css设置transition动画

    vue的transition动画 关于vue中animation动画问题 找到要用动画的元素 我是想要实现切换页面的动画效果 所以找到app vue中的router view 用transition将它包裹起来 用动画库animate cs
  • PCB Layout经验

    1 旁路电容尽量靠近IC脚 这样对整个电路的抗干扰能力有很大的帮助 2 布局的时候 可以把零件尽量对齐 可以增加板子美观 3 多层板的顶层IC底部 最好铺一下铜 有助于IC散热以及抗干扰 4 贴片IC的管脚不要做的太长 防止IC在SMT贴片
  • 移动端使用fastclick解决click延迟300毫秒

    做移动端商城使用click会出现大约300毫秒的延迟 为了能够立即响应用户的点击事件 会用到FastClick 一 安装 npm i fastclick save 二 使用 在main js中引入 import FastClick from
  • reGeorg的工具原理

    首先先创建一个socket去运行 去连接想要连接的端口 reGeorgSocksProxy客户端与服务端的通讯是基于session来区分的 并不支持在指定的session下进行 socket set nonblock 设置socket为非阻
  • 碳中和数据合集(含上市公司碳排放、碳减排、排污费、环境税等数据)1990-2022年

    数据简介 推动企业形成绿色生产方式和生活方式 支持有条件的地方和重点行业 重点企业率先达到碳排放峰值 可见 企业已成为应对气候变化 推动低碳转型 助力 双碳 目标实现的主力军 推动其绿色 低碳化转型已成为未来经济发展的必然趋势 此背景下 作
  • linux环境下运行flex,什么是flex?

    昨天装一个软件的时候 configure后遇到下面的问题 错误代码见最后 网上查到有什么 FLEX 2 01 全套下载 客户端 Flex Builder 2 with Charting 集成 Flex Builder 2 Flex 2 SD
  • LeetCode 232. 用栈实现队列

    题目链接 https leetcode cn problems implement queue using stacks 栈的特点是先进后出 而队列的特点是先进先出 我们用两个栈正好能把顺序反过来实现类似队列的操作 stackData 作为
  • navicat连接linux虚拟机上的mysql出现10060的错误解决

    https www cnblogs com mmzs p 9201558 html 我的是当时配置MySQL的时候在iptables文件里面添加了3306但是 我没有保存 所以没有监听到这个端口 弄了一中午 唉 最终通过上面的文章得以解决
  • numpy_diag函数

    diag的函数原型如下 numpy diag v k 0 如果v是一维数组 则函数返回以v为对角线的对角矩阵 如果v是二维数组 则函数返回v的对角线 import numpy as np a np arange 9 reshape 3 3
  • 如何进行技术选型

    在重大产品决策或者大规模应用开发前一般需要进行技术选型 特别是需要开发一个之前没有了解过的系统或者应用时 其目的是为了降低产品研发的技术风险 所以首先需要明确为什么需要技术选型 需要达到什么目的 整个过程需要有一套的组织流程来保证 一般可以