软件开发步骤包括哪些过程

软件开发步骤包括哪些过程,第1张

笔者结合自己的项目管经历,向我们介绍了如何管理智能硬件项目的研发流程。

我曾在《AI 智能硬件|产品思维与项目思维》中举了蔚来汽车的例子说明项目管理的重要性,另外在知乎上写了一篇关于智能硬件研发流程的文章,只是个开头浏览量也有 1700 左右。

为了写这篇文章,画总体流程以及编制相对详细的表格,因此花费了不少的时间,导致一周未更新。

哎,以上都是废话,从总体流程开始吧!

一款产品,我们通常说从 0 到 1,包括了市场阶段的产品需求、产品实现;从 1 到 100,包括了产品的销售、运营、维护等。

这里讲的研发流程仅指产品需求已经确定了,将产品需求变为产品的研发过程,不包含前期的市场部分,也不包含产品上市以及运营过程。

01 总体流程

智能硬件看似复杂,拆解出来脉络很清晰。包含硬件(HW)、软件(SW)、外观(ID)、结构(MD)、互联网平台。

其中软件包含板级支持包(BSP)、底层引导程序(bootloade)、系统与应用程序、算法,这些不展开来讲,找固件打包的工程师就 OK ,一般所有的程序都汇总到他那儿了。

作为项目经理,不太需要进行深入的了解,当然能够深入更好,但作为产品经理还是更深入一点较好。

互联网平台,这个包含云服务、后台、App、小程序等。常见的是前三个。跟进对应的工程师就好。

总体流程图如下:

可能到这儿,脉络上比较清晰了,但是具体到 *** 作执行上,怎么跟细化还是不太清楚。因为有些任务是串行的,有些是并行的。一个细项任务牵扯到几个部门。

02 项目阶段

很多项目管理人喜欢将项目研发分为 EVT阶段、DVT阶段、PVT阶段、MP阶段和维护阶段 ,我一般不这样分,对于这些总结性的项目管理概念熟知于心即可,不必要过于追求。

因为有时候,你会发现,因为需求的改动、比较重要的 BUG 等原因会改变项目的阶段,比如从 DVT 阶段又回到了 EVT 阶段。

另一个原因是智能硬件产品一般更加适用瀑布流开发,互联网的敏捷开发不太适用于智能硬件。所以这一节只做简单介绍,作为项目管理有个概念认知就好。

下面根据我自己经验,我的心理认知进行阶段界定。

EVT 阶段: (Engineering Verification Test),指工程验证。一般在工程样机之前的研发行为,我都称之为工程验证。

这个阶段,目的是工程验证。尽可能的发现设计问题,方案对比。

最终拿到的是工程样机,用于样机整机测试,判定是否可以开模。

DVT 阶段: (Design Verification Test),指设计验证测试。最终拿到的是试产的整机样机,用于多方联调,验证优化。

上一个阶段,完成产品的雏形,这个阶段继续上个阶段的设计开发、优化。MD 详细设计完成,开始投模、试模、修模、颜色调制等。

试产模具,组装整机,进行硬件/结构的整机测试。软硬件、结构、互联网平台多方联调。比如软硬件的稳定性、可靠性、性能等;软件与互联网平台(云服务/App等)联调测试;硬件与结构的联调测试,比如散热、结构强度等。

另外,这在这阶段关于产品的贴纸、说明书、包装等可以开始设计/打样,然后等待,因为这些时间周期比较短。

如果软硬件状态比较理想,在这个阶段尽早安排认证。因为认证周期非常长,基本在 40 天左右,别等到产品快要量产了,认证还没出来,影响销售。

总之,这个阶段就是联调、测试、试模、打板、试产。

PVT 阶段 : (Process Verification Test),指生产验证。进行小批量产,摸清生产工艺,测试工艺,为大批量产做准备。

这个阶段依然会进行各种验证,以及解决上一阶段遗留的一些小问题。但主要的精力放在一致性、设计(细节,比如按键手感不好,干涉等)调整上。

各部门处于生产支持模式,比如工程部制作 SOP(标准作业程序),结构部帮忙解决生产上的结构问题。与生产相关的测试工具、生产工具、烧录工具、产测工具的支持。

所有的生产支持文件规定当送到工厂,量产软件/量产硬件BOM/量产结构BOM,结构/元器件终版签样。

总之,这个阶段就是为了保证产品量产。 量产顺利,效率高,不良率最低,产品一致性够高。

关于研发阶段就这么多,其他的就不讲了。这个分类只是自己项目管理用,工程师其实不关心。自己做到心中有数,自己的产品到了什么阶段,离目标还有多远,从全局角度考量如何把控项目进度。

03 细化流程

这一节是我最想讲的,因为我刚做研发端产品的时候,需要管项目。

我的切身体会是,不知道各项细化任务之间怎么串起来,不知道从哪里下手,该找谁并拿到什么输出作为下一步的开始。网上找了很多资料都是关于项目阶段的介绍,类似上面一节的介绍。

因此想写一写细化流程,但限于文字描述的直观性较差,先看一个表格,然后稍微文字说明。

/简单文字描述/

产品规格书/产品定义出来了之后,产品会组织技术评审。通过后就正式开始立项,排研发计划了。有些项目会先进行预研,然后才导入正式研发。

一般新产品,首先开始 ID 草图设计,然后出 2D 渲染图。

立项后,硬件/软件/结构/互联网平台开始做方案设计、评审(软硬件评审需要双方参与,他们俩高度相关),通过后开始做详细设计。

硬件,这时候开始画原理图、器件摆件。

结构,根据硬件的器件摆件图、关键器件(电池/屏幕/摄像头/SPK 等)与 ID/硬件部门充分共同进行堆叠设计。满足各部门的需求,最终完成产品定义的要求。

ID,拿到结构的堆叠设计图,进行 3D 建模,导出建模图给结构。

结构,根据 ID 的 3D 建模图做详细结构设计。导出板框图给硬件。详细结构设计完成转给模具厂。

硬件,根据板框图 Layout,然后出 PCB 资料,评审/投板。

模具厂,根据结构设计开模。

然后就是软硬件联调,结构/硬件/模具联合解决验证后的问题点。

因为互相关联穿插,文字很难描述。一看《项目管理研发流程》表格,了解全貌,二看下面的《任务排期》。

这一节重点关注各个任务输出的文档文件,后面我组织一下语言做一个纯文字的介绍,怎么串行,怎么并行,相应任务输出什么样的文档文件以及有什么作用。

04 任务排期

任务排期的关键是将各模块拆分成较细立刻的任务,将各个任务串起来。

依然上图:

这个任务排期可能与你的有细微的不一样,我的是根据项目有相应裁剪,顺序略微调整,但是基本逻辑是这样的。

05 项目跟踪

项目经理的天职就是保证项目按时按质交付。因此,项目经理需要紧盯项目,推进项目。

一个智能硬件项目涉及的面非常广,沟通的人也非常多。如果同时跟进几个项目,事项任务更加繁复,不可避免会造成遗漏,沟通不到位,支持不够及时等等状态。

我们在任务排期的时候将任务拆分成中度粒度,为了不遗忘,支持及时,我们可以制定一个任务清单,拆的非常细。

这个用 Excel 就好,我喜欢用这个。每一个任务后面是一级任务/二级任务、做出什么决策、由谁负责、什么时间完成,任务状态等。

例如,ID 设计

什么时候出草图?决策是选定了哪几个草图进行 2D 渲染?什么时候完成?

2D 渲染图,什么时候完成?最终选择哪个进行 3D 建模?怎么修改细节?

3D 建模,结构什么时候提供堆叠图,什么时候完成?

总之,这是一份行动清单。

06 项目管理关键技能

上一节提到项目事项任务繁复,最为常见的是管理不到位造成混乱;另一个是项目问题涉及到多部门造成卡壳。

解决问题的方式是,找到目前现状与目标之间的 关键障碍 ,想办法清除障碍。

解决思路是:

明确问题&理解问题

分析及定位问题

提出解决方案

解题思路有了,但是项目管理涉及的面非常广,而且又不懂技术,怎么办呢?

拆解问题 ,将问题拆解成完全穷尽,相互独立的任务。当然这个是与工程师沟通进行的,与相关责任人开短会定性分析。这个结构化思维在产品思维最后一篇文章介绍过,可以回看一下。

表达能力 ,往往与工程师沟通会出现沟通错位,这时结构化的表达很重要。

先结果,后过程:反向推导,这样保证沟通目标是确定的。

先全局,后细节:从全局出发,限定范围,不要扩散问题,然后再确定细节,不能陷入细节不能自拔。

最后,一定要复盘,在沟通的最后复述问题及沟通出来的解决方案,确保没有错位。

项目管理,本质上还是逻辑思维能力和结构化思维能力。做好项目管理需要不断的学习、反思、复盘,提升底层的逻辑能力。

在企业中,整个的开发的过程,从头到尾,大致可以分成五个大的阶段,分别是需求,设计,编码,测试,交付这五个阶段,这当中,位于软件公司内部管理的过程,详细划分又可以分为7步,如下所列:

相关系统分析员向用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。

系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚利用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。

开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。

在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。

软件开发一般分为五个阶段:

1问题的定义及规划

此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。

2需求分析

在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。

3软件设计

此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。

4程序编码

此阶段是将软件设计的结果转化为计算机可运行的程序代码。在程序编码中必定要制定统一、符合标准的编写规范。以保证程序的可读性、易维护性。提高程序的运行效率。

5软件测试

在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。测试方法主要有白盒测试和黑盒测试。

你好,简单和你讲下吧,一个产品从开发到上市要经过一个慢长的时间:开发部(包括产品设计,产品软件开发--产品软件测试,产品定位等等)设计的时候就要考虑用什么CPU等等---设计出来再给图纸各个代工生产--生产线组装--组装好还要到研发进行软件长时间的测试--到最后才会上市!

Sow 是statement of work的缩写吗? 工作说明书或者 sohu open widget

SOP=standard operating procedure 标准作业程式

Matrix 矩阵,模型

希望对你有帮助哦~

一个软件从开始到最后一共需要以下几个流程:

1、计划

2、分析

3、设计

4、编码

5、测试

6、维护

1、计划

对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。

2、分析

软件需求分析就是对开发什么样的软件的一个系统的分析与设想。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。在任何软件或系统开发的初始阶段必须先完全掌握用户需求,以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。系统工程师最终将据此完成设计方案,在此基础上对随后的程序开发、系统功能和性能的描述及限制作出定义。

3、设计

软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。

4、编码

软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的“源程序清单”。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。

当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。

5、测试

软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据与功能和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。

6、维护

维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。

一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。

在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。

其实实施的工作也就是将开发好的系统,平台等,安装部署在客户服务器上,在保证在内部环境运行正常的情况下,再在客户实际环境中进行测试,测试通过后,就可给客户使用再做好售后服务以上内容纯属原创,打字不容易,谢谢采纳

以上就是关于项目管理:智能硬件项目研发流程全部的内容,包括:项目管理:智能硬件项目研发流程、企业软件开发流程是什么、软件开发步骤包括哪些过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/8810160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-21
下一篇 2023-04-21

发表评论

登录后才能评论

评论列表(0条)

保存