前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >研发如何才能躺平???

研发如何才能躺平???

作者头像
用户2366192
发布2023-11-14 18:42:42
2560
发布2023-11-14 18:42:42
举报
文章被收录于专栏:TopSemic嵌入式

一行代码导致灾难,一个Bug导致发射失败,一个不合格的电容导致产品寿命缩短。这些看似偶然的事件,偏偏又常常真实地发生了。(参考我们之前的文章)

即使产品设计没有问题,又可能因为不好卖,而没能给公司带来丰厚利润。不但初创的小公司时刻面临生存的威胁,一些巨无霸公司由于产品决策失误,陷入困境甚至倒闭的案例也不鲜见。

人们于是想有没有一种方法,可以帮助我们设计出又好用,又好卖的产品。我们今天介绍一些前人在这方面探索,主要涉及一些开发模型,和开发管理流程。

开发模型指的是软件开发的全部过程、活动和任务的框架,它规定了软件开发的具体活动和任务,并且以清晰直观的方式表达出软件开发的全部过程。简单来说,开发模型是软件开发过程的基础和保障。

开发流程是指软件开发的具体步骤和过程。它包括可行性分析、项目开发计划、需求分析、系统概要设计、系统详细设计、编码、测试等环节。这些环节是软件开发不可或缺的步骤,它们之间的关系密切,相互衔接,以确保软件开发的高效和顺利。

  1. 几种典型的开发模型

瀑布模型

瀑布模型是最经典的开发模型,又称为线性模型。它把开发过程分解为按顺序进行的六个阶段:计划,需求分析,设计,实现,测试,运行维护。每一个阶段完成后,评审通过,才能开启下一阶段,一级一级向下进行,如同瀑布。用户在最后得到一个可用产品。

迭代模型

一个项目被拆解为多个小项目,每个小项目如同一个瀑布模型,都包括需求分析,设计,实现,测试。每个小项目的完成,就可以认为是产品的一次迭代,虽然还不完善,但用户可以使用。每个小项目可以反复迭代,整个产品也不断完善。SpaceX的猎鹰火箭,就是采用了这种迭代方式开发。所以虽然爆炸了几次,最终还是成功了。而其它的采用传统瀑布模型的公司,很多还没有一次发射。

除了以上这两种,还有不少变种,如快速原型模型,螺旋模型,智能模型,增量模型,喷泉模型,V模型,混合模型,演化模型。

  1. 开发管理流程

IPD (Integrated Product Development)

IPD的思想来源于美国PRTM公司出版的《产品及生命周期优化法》(Product And Cycle-time Excellence)一书,该书中详细描述了这种新的产品开发模式所包含的各个方面。

IBM公司在上世纪90年代遭遇了一次危机,当时研发经费开支过高,产品上市时间过长,利润下降严重。作为重振公司的一项重要内容,IBM引入了集成产品开发方法IPD。它由7个方面的内容组成:异步开发与公共基础模块、跨部门团队、项目和管道管理、结构化流程、分析客户需求的工具($APPEALS)、优化投资和衡量指标 。其核心为产品开发由市场驱动,强调决策的重要性,更关注做正确的事。

华为在1998年花重金从IBM引入IPD,经过多年优化,成为其飞速成长的基石之一。其它比较知名的公司有美的,VIVO,方太等。

CMMI (Capability Maturity Model Integration)

1987年,由美国卡内基.梅隆大学软件研究所提出CMM,即软件过程成熟度模型,用于评价软件承包能力,并帮助其改善软件质量的方法。后推广至硬件开发,系统集成等更多领域。其核心目的为衡量一个组织的过程能力,并推动其改进。CMMI分为初始级,已管理级,已定义级,已定量管理级,优化级等5个等级,其中优化级为最高等级。

CMMI主要关注执行,也就是正确地做事。它认为控制好了过程,就可以保证产品交付质量。

敏捷开发 (Agile Development)

2001年,烦透了各种开发管理流程,疲于应付各种文档的17名程序员大佬,聚会于犹他州瓦萨奇山中的一个小酒店,扯起了敏捷开发的大旗,并发表了4条宣言:

Individuals and interactions over processes and tools

(有话您直说,甭瞎扯流程。)

Working software over comprehensive documentation

(软件贼好用,文档如废纸。) Customer collaboration over contract negotiation

(客户一点头,合同算个鸟。)

Responding to change over following a plan

(领导一挥手,马上跟着走。)

总之,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

  1. 我们如何借鉴

大公司引入流程,花费巨资的传闻,有点儿让小公司望而却步。但也并不是说只有大公司才需要流程,小公司其实可以根据自身的情况,做一些借鉴。比如项目需求分析,一开始就和客户做深入的交流,为客户周到的考虑,不要到最后发现某个功能没实现,要过认证时才整改。项目需求形成说明书文档,设计实现要跟需求一一对应。另外,开发的每一阶段,做一些评审也是很必要的,特别是开发人员之间的互相检查(Peer Review),可以把很多问题解决在萌芽状态。把开发分解成并行的过程,并进行关键路径分析,可以大大缩短研发周期。

哪些小Bug, 毁掉了马斯克的3次发射?

一行代码引发的惨案!

聊聊身边的嵌入式:点菜机用着好好的,突然挂了,这口锅应该甩给谁?

聊聊身边的嵌入式,2年质保期刚过就翘辫子,这是什么骚设计?


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TopSemic嵌入式 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档