从零做软件开发项目系列之一综论软件项目开发

news2025/1/18 9:41:15

1 引言

有一个三个泥瓦匠的故事。
三个泥瓦匠在砌墙,一个人走过来,问他们在干什么。
  第一个泥瓦匠没好气地说,你没看见吗?我在辛苦地砌墙呢。
  第二个回答,我们正在建一座高楼。
  第三个则洋溢着喜悦说,我们正在创造美好生活。
10年过去了,第一个人仍然在做泥瓦匠,第二个人成为了一名工程师,而第三个人则成为建筑公司的老板。
这个故事告诉我们,在工作的时候,既要明确自己的职责,也要知道自己在整个项目中的作用,也就是既要低头拉车,也要抬头看路。
在这里插入图片描述
我们平时的工作,都是一项大的工作项目的组成部分,不同的行业,项目的形式有所不同。在IT行业,除了做网络和硬件设备的,大部分做的都是软件开发的项目。一个软件开发项目,从开始到结束都经历哪些过程,在这里,我结合自己的经验和实践来做一个描述,期望对做软件项目开发的朋友有些启发。一名软件开发人员,最好能够明确的知道自己所处的位置,在一个项目中的作用,以及这个项目处于一个什么样的阶段,这样开发人员对自己的职责和目标就能会更清晰,也有利于工作能动性的发挥。
首先说一下软件项目的分类,按照不同的分类规则,可以有不同的具体分类。比如从技术的角度进行分类,可以分为微信项目,APP项目,互联网项目,应用系统,数据库建设等等。从项目大小进行分类,有几百万至几千万的大项目,可能包括一些子项目,也有几十万的较一般规模的项目,也有几万或者几千的小项目。还有从项目的主体上分类,自己开发本公司的项目,为其他公司开发的项目,这时候就会分出甲方和乙方,乙方是项目的开发实施者,为甲方服务。项目类型的不同,对于项目开发过程可能存在或多或少的差异,但总体来说,项目开发的一般都会有项目的确定,项目的开发,项目的收尾等几个阶段。
在这里插入图片描述

2 项目的确定

项目的确定阶段,这里就是要说一说一个项目是怎么来的。可能是领导有一个想法,提出一个大概的目标或者思路,然后就会让下属或者相关的公司给出可行性的分析,给出一个项目方案,之后就是对这个方案进行审核,也可能会组织一些专家进行评审,方案如果审批通过,则继续进行下一步,一般是组织招标,如果项目比较小,或者比较特殊,比如只有某家公司能做,有排他性,这时候就不用招标。组织方给出招标书,委托招标公司或通过政府采购平台等进行招标,相关企业根据招标要求,写投标书进行应答,招标结束后,中标企业和组织方签订项目合同,从而确定了项目。当然也有一些项目,没有经过这么多过程,如果是自己公司开发软件系统,没有合同,直接进行开发阶段。也有客户出于对公司的信任,直接签订开发合同的。
在这里插入图片描述

这个阶段,可能涉及到的岗位,一般有公司领导,售前工程师,标书专员。该阶段售前工程师的作用很关键,对岗位的要求也比较高,要对行业有比较深刻的了解,能够把握潜在客户的需求,同时,对自己公司的产品或技术也要非常熟悉,能够把公司的产品或技术,与潜在客户的实际需求结合起来,提供解决方案。具有将潜在客户转化为实际客户的能力。很多时候,公司的领导充当了这个角色,在与潜在客户交往中,会及时掌握客户的需求,也会调整公司的产品或技术,以适应客户需求。如果公司规模足够大,产品比较成熟,或者市场大,也会招募大量的一般销售人员。

3 项目开发

项目确认,签订合同之后,就进入了软件开发阶段。这个阶段可以分为需求调研、系统设计、软件开发、软件测试、用户培训等过程。
在这里插入图片描述

需求调研,主要是向客户了解具体的需求,需要提前准备调研方案,有针对性地收集客户需求。主要收集客户的工作内容,涉及到的人员岗位职责,以及用到的各种表单、报表、规章制度等资料。
需求分析,该过程主要对需求调研结果进行分析,将用户的需求转换为软件需求,同时也需要对市场上类似或相关的软件进行竞品分析,综合考虑各种产品的优缺点,以及针对的客户群体,对自己的软件有一个合理的定位,并明确自己软件的功能范围。
系统设计,需求分析完成后,会形成需求规格说明书,明确软件系统的功能范围,根据需求规格说明书,进行系统设计,对软件功能、性能等进行规划设计。明确软件的主要模块,模块之间的关系,使用的主要技术,并逐步细化,可以明确设计接口,规定接口规则,进行数据库设计。形成系统设计说明书,具体还可分为概要设计和详细设计两个阶段的说明书。
系统开发,根据设计说明书,进行代码编写调试工作,由高级工程师或架构师搭建开发框架,分配任务,分模块进行开发。每个模块先由UI画出原型页面,并进行切图,由前端工程师进行页面开发,同时后端进行功能实现,前后端通过约定好的json数据进行调试,开发完成后进行联调。
软件测试,软件开发完成后,要经过单元测试、集成测试、系统测试、验收测试等测试环节,类型上分别进行功能性测试、性能测试、安全测试等,每种类型的测试都会提供测试报告,一般测试出的bug由开发人员进行修复,修复完成后进行回归测试,直到bug归零或可控。
在项目开发过程中,会有大量的人员参与,特别是技术开发人员,涉及到需求分析师、架构师、UI设计师、前端工程师、后端工程师、测试工程师等,还会有细分的算法工程师、不同语言的工程师等等。还会有项目经理、技术领导等。

4 项目收尾

软件开发完成后,需要让用户开始使用,也就进入了项目收尾阶段。这个阶段有用户培训,系统试运行,初步验收,评审结项,项目运维等过程。
在这里插入图片描述

试运行,软件在内部开发测试后,让真正的用户开始使用,也就是系统试运行,这个过程需要将系统部署到模拟的生产环境,让用户根据真是业务,在系统上面进行操作,使用中收集用户反馈,包括使用习惯,系统功能,故障情况等,根据具体情况,开发方对问题做出相应的解决,排除故障,完善系统。
用户培训,对用户进行培训,需要提前做好准备,一般都是根据用户角色分别进行培训,客户领导、管理人员、业务人员等不同角色,使用系统的功能和侧重点有所差异,要根据具体情况来准备培训内容,结合不同角色的实际工作,有针对性的进行培训。当然也需要用户配合,安排好培训时间,搭建好培训环境,这样才能获得较好的培训效果。
初步验收,软件开发测试完成,在试运行前后,也可能会有初步验收。开发方需要进行系统的自检,根据合同功能对照系统的实际功能,看是否完成了合同约定内容,确认后,一般和用户方、监理方一起进行功能检查,如果都没有问题,则通过,有问题的话,做下记录,进行相应的补充修改,完成初验。
评审结项,试运行以及整改结束,软件获得了用户的认可,则进行最终的验收,同时召开项目结项评审会,一般会邀请3-7名专家,开发方汇报展示项目完成情况,监理会对整个过程进行说明,用户方给出使用情况的汇报,最后专家给出结项意见,最后签字,则完成结项工作。
项目运维,项目结项评审完成后,就进入了维护阶段,如果后续软件使用比较频繁,由于对软件熟悉度还需要一个过程,刚开始使用中可能会有比较多的问题,一般开发方会派人驻场进行保障,主要帮助用户解决使用过程中的问题,保障过程中,会对保障情况做出记录,定期(比如一周或者一个月)提交一份运维报告,保证软件能够正常使用。

5 结语

本文介绍了软件项目从申请到开发实施到结项的整个过程,在这个过程中,根据项目或公司的大小,会有不同的职位参与,如果是小的公司,可能一人兼任了很多职位,很多过程也会简化或省略。一般大一些公司,人员多,职位会设置的比较全,流程也会多一些。通过介绍,大家能够根据自己的职位职责情况,明确在整个项目中的阶段和作用,希望通过介绍,大家对软件项目有一个大概的了解。

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

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

相关文章

Vue2子组件修改父组件的方法

Vuex Vuex 是状态管理器,集中式存储管理所有组件的状态。 Vuex速成整理_AYBAIWAN的博客-CSDN博客https://blog.csdn.net/aybaiwan/article/details/131442547?spm1001.2014.3001.5501vuex中this.$store.commit和this.$store.dispatch的用法_老电影故事的博客-CSD…

第八届XCTF联赛首场国际外卡赛——WACON2023即将开启!

由国际战队SuperGuesser操刀命题 第八届XCTF首场国际外卡赛 WACON2023即将开启 线上资格赛前6名队伍 将晋级WACON2023总决赛 飞往韩国首尔 与全球顶尖白帽黑客一决高下 总决赛冠军队伍将获得: 3千万韩元(折合人民币16万)高额奖金 &第八…

Java IO流(一)IO基础

概述 IO流本质 I/O表示Input/Output,即数据传输过程中的输入/输出,并且输入和输出都是相对于内存来讲Java IO(输入/输出)流是Java用于处理数据读取和写入的关键组件常见的I|O介质包括 文件(输入|输出)网络(输入|输出)键盘(输出)显示器(输出)使用场景 文件拷贝(File&…

基于Java的深圳坂田附近闲置物品交易群管理系统

开发技术:java 开发框架:springmvc、spring、mybatis 数据库:mysql 备注:方便大家将手中的二手闲置物品转让给需要的人,例如大家搬家的时候,有不要的(冰箱、洗衣机、桌子、椅子)等物…

【3519DV500】AI算法承载硬件平台_2.5T算力+AI ISP图像处理_超感光视频硬件方案开发

Hi3519DV500 内置双核 A55 ,提供高效、丰富和灵活的CPU 资源,以满足客户计算和控制需求。 Hi3519DV500集成了高效的神经网络推理引擎,最高2.5Tops NN算力,支持业界主流的神经 网络框架。神经网络支持完整的 API 和工具链&#xf…

Qt使用qml(QtLocation)显示地图

一、qt版本和QtLocation模块版本确认 如果qt版本过低的话是没有QtLocation模块的,我的版本如下 构建工具版本如下 二、qml代码编写 1、工程中添加模块 首先在工程中添加模块quickwidgets positioning location 2、添加资源文件 3、在资源文件中添加qml文件 …

什么是卷积神经网络

目录 什么是卷积神经网络 全链接相对笨重:大胖子​编辑 ​编辑 参数众多:容易造成过拟合 ​编辑 卷积核:进行图像特征提取,源于卷积原理:求相交面积 卷积的作用 卷积的意义 ​编辑 通过卷积核减少参数 深度卷积…

【001】ts学习笔记-准备工作和【基本类型】

typescript安装的包 npm i typescript #安装ts npm i types/node --save-dev # TypeScript 项目中使用类型检查和自动补全。 npm i ts-node -g #可直接在nodejs环境中使用ts, 如:ts-node example.tstsc 常用命令 tsc -init #生成tsc目录下的配置文件:tsconfig.jso…

ADAS-干货|自动驾驶汽车E/E拓扑架构与软件功能框架

引言 之前在公众号中我们对自动驾驶常见传感器的原理进行了讲解,如《可见光相机》《IMU惯导传感器》《GPS传感器原理》《毫米波雷达原理》以及《激光雷达原理》。今天我们将结合TI自动驾驶部门专家发表的相关的论文,讲解现代自动驾驶汽车车身电气架构以及…

dockerfile的概念

目录 一、Dockerfile 概念 1.1 docker镜像的分层 二、Docker镜像的创建 2.1 基于已有的镜像创建 2.2 基于本地模板创建 2.3 基于dockerfile创建 2.3.1 dockerfile 结构(四部分) 三、Dockerfile操作指令 3.1 ENTRYPOINT指令 3.2 CMD 与entrypoint 3.3 小结 四、ADD和…

STM32——SPI外设总线

SPI外设简介 STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担 可配置8位/16位数据帧、高位先行/低位先行 时钟频率: fPCLK / (2, 4, 8, 16, 32, 64, 128, 256) 支持多主机模型、主或从操作 可…

Pandas+Pyecharts | 成都大运会奖牌数据分析可视化

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 数据信息2.3 数据处理 🏳️‍🌈 3. Pyecharts数据可视化3.1 每日奖牌数量分布3.2 奖牌榜单TOP20金银铜牌分布3.3 各比赛项目金牌…

Java“牵手“拼多多商品详情页面数据获取方法,拼多多API实现批量商品数据抓取示例

拼多多商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取拼多多商品详情数据,您可以通过开放平台的接口或者直接访问拼多多商城的网页来获取商品详情信息。以下是两种常用方法的介绍:…

使用el-tree实现自定义树结构样式

实现结果&#xff1a; 直接上代码&#xff1a; <template><div><div class"tops"><el-tree :default-expanded-keys"[1]" ref"myTree" :data"data" :props"defaultProps" node-click"handleNod…

IO的几个模型

I/O模型名词介绍 说到I/O模型&#xff0c;都会牵扯到同步、异步、阻塞、非阻塞这几个词&#xff0c;以下讲解这几个词的概念。 阻塞和非阻塞 阻塞和非阻塞指的是一直等还是可以去做其他事。 阻塞&#xff08;blocking&#xff09;&#xff1a;调用结果返回之前&#xff0c;…

环形链表笔记(自用)

环形链表 不管怎么样slow最多走半圈了&#xff0c; 快慢指针slow走一步&#xff0c;fast走两步最合适&#xff0c;因为假设fast和slow相差n每一次他们前进&#xff0c;就会相差n-1步&#xff0c;这样他们一定会相遇&#xff0c;如果是环形链表的话。 代码 /*** Definition for…

Vue 2的计算属性与侦听器

计算属性 vs 方法 vs 侦听器 计算属性的出现是为了解决模板内表达式太过复杂而变得难以维护。 假设我们知道长和宽&#xff0c;要计算一个矩形的面积&#xff0c;如果没有计算属性&#xff0c;我们可能像下面这样处理&#xff1a; <div id"app"><input t…

基于Java+SpringBoot+Vue的乌鲁木齐南山冰雪旅游服务网站【源码+论文+演示视频+包运行成功】

博主介绍&#xff1a;✌csdn特邀作者、博客专家、java领域优质创作者、博客之星&#xff0c;擅长Java、微信小程序、Python、Android等技术&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推…

北京“三阳”凶猛,真会说来就到吗?

综合媒体最新报道&#xff0c;据北京疾控中心发布的第32周《传染病周报》称&#xff0c;8月7日-8月13日&#xff0c;呼吸道传染总报告数为6205例(新冠为主)&#xff0c;比上周猛增了71.6%&#xff01; 从30周到32周&#xff0c;北京呼吸道传染病分别增长了5.3%、20.6%、71.6%。…

VBA_MF系列技术资料1-157

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于定…