进入IT行业这么久,你真的了解整个软件开发的流程?看完就懂了!

本文详细介绍了一个软件从项目启动到系统上线的全过程,包括需求调研、产品原型设计、UI设计、编码实现、测试验证等多个关键阶段,并阐述了各阶段的主要工作内容及产出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前对软件很陌生,在我转产品之前,虽然我混迹IT行业,做过实施和售前,也跟研发打过交道,但我一直都不知道一个软件是怎么开发出来的。直面客户,扛着压力,在对程序一无所知的情况下,很容易产生一些想法:为什么产品的结果是这样?为什么产品开发的速度不能再快一点?为什么程序员经常加班?他们都在忙些什么?测试是不是就是每天忙着点点程序看会不会报错?

所以本文面向的对象是,适合和我当初一样对软件开发一无所知的IT从业者(或者有兴趣者),另外也欢迎我的程序员小伙伴和测试小伙伴,因为你们也懂这个过程,所以我们可以作更多探讨,这个过程中我们可能会发现大家对同一件事的理解并不一致,也许经过碰撞,我们能共创智慧的果实。

进入IT行业这么久,你真的了解整个软件开发的流程?看完就懂了!

一、开发流程图

为使流程更清晰,本图省略了各环节的评审,如有更好的表现形式,欢迎提出建议。

进入IT行业这么久,你真的了解整个软件开发的流程?看完就懂了!

开发流程图

二、过程产物及要求

本表主要列出开发阶段需要输出的过程产物,包括产物名称、成果描述、负责人及备注,即谁、在什么时间、应该提供什么内容、提供内容的基本方向和形式是什么。

进入IT行业这么久,你真的了解整个软件开发的流程?看完就懂了!

开发过程产物

三、过程说明

(一)项目启动

1、产品经理和项目干系人确定项目方向,产品型项目的干系人包括公司领导、产品总监、技术总监等,项目的话则包括客户方领导、主要执行人等。

2、公司领导确认项目组团队组成,包括产品经理、研发项目经理、研发工程师、测试团队等。

3、明确项目管理制度,每个阶段的成果产物需要进行相应的评审,评审有相应的《会议纪要》;从项目启动起,研发项目经理每周提供《项目研发周报》;测试阶段,测试工程师每周提供《项目测试周报》。

4、产品经理进行需求调研,输出《需求调研》文档。需求调研的方式主要有背景资料调查和访谈。

5、产品经理完成《业务梳理》。首先,明确每个项目的目标;其次,梳理项目涉及的角色;再来,每个角色要进行的事项;最后,再梳理整个系统分哪些端口,要有哪些业务模块,每个模块再包含哪些功能。

(二)需求阶段

1、进入可视化产物的输出阶段,产品经理提供最简单也最接近成品的《产品原型》,线框图形式即可。在这个过程中还可能产生的包括业务流程图和页面跳转流程图。业务流程图侧重在不同节点不同角色所进行的操作,页面跳转流程图主要指不同界面间的跳转关系。

2、产品经理面向整个团队,进行需求的讲解。

3、研发项目经理根据需求及项目要求,明确《项目里程碑》。根据项目里程表,完成《产品开发计划》,明确详细阶段的时间点,最后根据开发计划,进行《项目任务分解》,完成项目的分工。

4、研发工程师按照各自的分工,进入概要需求阶段。《概要需求》旨在让研发工程师初步理解业务,评估技术可行性。

(三)设计阶段

1、UI设计师根据产品的原型,输出《界面效果图》,并提供界面的标注,最后根据主要的界面,提供一套《UI设计规范》。UI设计规范主要是明确常用界面形式尺寸等,方便研发快速开发。UI设计常涵盖交互的内容。

2、研发工程师在界面效果图,输出《需求规格》,需求规格应包含最终要实现的内容的一切要素。

3、研发工程师完成《概要设计》、《通讯协议》及《表结构设计》,及完成正式编码前的一系列研发设计工作。

(四)开发阶段

1、研发工程师正式进入编码阶段,这个过程虽然大部分时间用来写代码,但是可能还需要进行技术预研、进行需求确认。

2、编码过程一般还需进行服务端和移动端的联调等。

3、完成编码后需要进行功能评审。

(五)测试阶段

1、测试工程师按阶段设计《测试实例》,未通过的流程测试提交至Jira,分配给相应的开发人员调整。

2、研发工程师根据测试结果修改代码,完成后提交测试,测试通过后完成。

3、测试工程师编写《测试结果报告》,包括功能测试结果、压力测试结果等。

4、测试工程师编写系统各端口的《操作手册》、维护手册等。

(六)系统上线

与客户或者上级达成一致后,系统进行试运行,稳定后上线。

最后,以上内容仅限于我所在公司,不代表绝对专业意见,不知道其他行业的IT小伙伴和我们是否一样呢,欢迎大家一起交流。

### STM32 HAL库与CubeMX的配置方法及原理 #### 一、STM32 HAL库简介 STM32 HAL(Hardware Abstraction Layer)库是一个由ST官方提供的硬件抽象层库,旨在简化开发者对STM32微控制器的操作。通过HAL库,可以屏蔽底层寄存器操作细节,使得开发人员能够更加专注于功能实现而非复杂的硬件交互[^1]。 #### 二、CubeMX工具的作用 STM32CubeMX是一款图形化配置工具,用于初始化STM32芯片的各项参数并自动生成初始化代码。它不仅支持基本的功能设置,还集成了丰富的外设驱动程序和中间件的支持,极大地方便了基于HAL库的应用开发[^2]。 #### 三、外部中断配置实例 在使用STM32 HAL库配合CubeMX进行外部中断配置时,可以通过CubeMX界面完成大部分基础配置工作。例如,在GPIO端口上启用外部中断功能后,生成的代码会自动包含必要的初始化部分;然而需要注意的是,尽管CubeMX可以帮助添加中断向量表项以及回调函数框架,但实际启动中断服务仍需调用特定API来激活中断标志位[^4]。 以下是简单的外部中断初始化流程展示: ```c // GPIO初始化结构体定义 GPIO_InitTypeDef GPIO_InitStruct = {0}; // 配置指定引脚作为输入模式 __HAL_RCC_GPIOA_CLK_ENABLE(); // 开启对应GPIO时钟 GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; // 上升沿触发中断 GPIO_InitStruct.Pull = GPIO_NOPULL; // 不带上下拉电阻 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 启用NVIC中的相应中断通道 HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); ``` 上述代码片段展示了如何利用HAL库接口完成对外部中断的基础设定,并确保中断优先级合理分配。 #### 四、SPI通信机制探讨 对于SPI总线而言,虽然其本身具备专门的片选信号(NSS),但在某些应用场景下为了减少物理连线数量或者提高灵活性,通常会选择采用软件方式模拟NSS行为——即借助普通IO管脚手动切换高低电平状态以指示数据传输周期开始结束时刻[^3]。 这种做法的好处在于降低了硬件资源消耗的同时也增强了系统的适应能力,尤其适用于多设备共享单一主机的情况之下。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值