1 引言
有一个三个泥瓦匠的故事。
三个泥瓦匠在砌墙,一个人走过来,问他们在干什么。
第一个泥瓦匠没好气地说,你没看见吗?我在辛苦地砌墙呢。
第二个回答,我们正在建一座高楼。
第三个则洋溢着喜悦说,我们正在创造美好生活。
10年过去了,第一个人仍然在做泥瓦匠,第二个人成为了一名工程师,而第三个人则成为建筑公司的老板。
这个故事告诉我们,在工作的时候,既要明确自己的职责,也要知道自己在整个项目中的作用,也就是既要低头拉车,也要抬头看路。
我们平时的工作,都是一项大的工作项目的组成部分,不同的行业,项目的形式有所不同。在IT行业,除了做网络和硬件设备的,大部分做的都是软件开发的项目。一个软件开发项目,从开始到结束都经历哪些过程,在这里,我结合自己的经验和实践来做一个描述,期望对做软件项目开发的朋友有些启发。一名软件开发人员,最好能够明确的知道自己所处的位置,在一个项目中的作用,以及这个项目处于一个什么样的阶段,这样开发人员对自己的职责和目标就能会更清晰,也有利于工作能动性的发挥。
首先说一下软件项目的分类,按照不同的分类规则,可以有不同的具体分类。比如从技术的角度进行分类,可以分为微信项目,APP项目,互联网项目,应用系统,数据库建设等等。从项目大小进行分类,有几百万至几千万的大项目,可能包括一些子项目,也有几十万的较一般规模的项目,也有几万或者几千的小项目。还有从项目的主体上分类,自己开发本公司的项目,为其他公司开发的项目,这时候就会分出甲方和乙方,乙方是项目的开发实施者,为甲方服务。项目类型的不同,对于项目开发过程可能存在或多或少的差异,但总体来说,项目开发的一般都会有项目的确定,项目的开发,项目的收尾等几个阶段。
2 项目的确定
项目的确定阶段,这里就是要说一说一个项目是怎么来的。可能是领导有一个想法,提出一个大概的目标或者思路,然后就会让下属或者相关的公司给出可行性的分析,给出一个项目方案,之后就是对这个方案进行审核,也可能会组织一些专家进行评审,方案如果审批通过,则继续进行下一步,一般是组织招标,如果项目比较小,或者比较特殊,比如只有某家公司能做,有排他性,这时候就不用招标。组织方给出招标书,委托招标公司或通过政府采购平台等进行招标,相关企业根据招标要求,写投标书进行应答,招标结束后,中标企业和组织方签订项目合同,从而确定了项目。当然也有一些项目,没有经过这么多过程,如果是自己公司开发软件系统,没有合同,直接进行开发阶段。也有客户出于对公司的信任,直接签订开发合同的。
这个阶段,可能涉及到的岗位,一般有公司领导,售前工程师,标书专员。该阶段售前工程师的作用很关键,对岗位的要求也比较高,要对行业有比较深刻的了解,能够把握潜在客户的需求,同时,对自己公司的产品或技术也要非常熟悉,能够把公司的产品或技术,与潜在客户的实际需求结合起来,提供解决方案。具有将潜在客户转化为实际客户的能力。很多时候,公司的领导充当了这个角色,在与潜在客户交往中,会及时掌握客户的需求,也会调整公司的产品或技术,以适应客户需求。如果公司规模足够大,产品比较成熟,或者市场大,也会招募大量的一般销售人员。
3 项目开发
项目确认,签订合同之后,就进入了软件开发阶段。这个阶段可以分为需求调研、系统设计、软件开发、软件测试、用户培训等过程。
需求调研,主要是向客户了解具体的需求,需要提前准备调研方案,有针对性地收集客户需求。主要收集客户的工作内容,涉及到的人员岗位职责,以及用到的各种表单、报表、规章制度等资料。
需求分析,该过程主要对需求调研结果进行分析,将用户的需求转换为软件需求,同时也需要对市场上类似或相关的软件进行竞品分析,综合考虑各种产品的优缺点,以及针对的客户群体,对自己的软件有一个合理的定位,并明确自己软件的功能范围。
系统设计,需求分析完成后,会形成需求规格说明书,明确软件系统的功能范围,根据需求规格说明书,进行系统设计,对软件功能、性能等进行规划设计。明确软件的主要模块,模块之间的关系,使用的主要技术,并逐步细化,可以明确设计接口,规定接口规则,进行数据库设计。形成系统设计说明书,具体还可分为概要设计和详细设计两个阶段的说明书。
系统开发,根据设计说明书,进行代码编写调试工作,由高级工程师或架构师搭建开发框架,分配任务,分模块进行开发。每个模块先由UI画出原型页面,并进行切图,由前端工程师进行页面开发,同时后端进行功能实现,前后端通过约定好的json数据进行调试,开发完成后进行联调。
软件测试,软件开发完成后,要经过单元测试、集成测试、系统测试、验收测试等测试环节,类型上分别进行功能性测试、性能测试、安全测试等,每种类型的测试都会提供测试报告,一般测试出的bug由开发人员进行修复,修复完成后进行回归测试,直到bug归零或可控。
在项目开发过程中,会有大量的人员参与,特别是技术开发人员,涉及到需求分析师、架构师、UI设计师、前端工程师、后端工程师、测试工程师等,还会有细分的算法工程师、不同语言的工程师等等。还会有项目经理、技术领导等。
4 项目收尾
软件开发完成后,需要让用户开始使用,也就进入了项目收尾阶段。这个阶段有用户培训,系统试运行,初步验收,评审结项,项目运维等过程。
试运行,软件在内部开发测试后,让真正的用户开始使用,也就是系统试运行,这个过程需要将系统部署到模拟的生产环境,让用户根据真是业务,在系统上面进行操作,使用中收集用户反馈,包括使用习惯,系统功能,故障情况等,根据具体情况,开发方对问题做出相应的解决,排除故障,完善系统。
用户培训,对用户进行培训,需要提前做好准备,一般都是根据用户角色分别进行培训,客户领导、管理人员、业务人员等不同角色,使用系统的功能和侧重点有所差异,要根据具体情况来准备培训内容,结合不同角色的实际工作,有针对性的进行培训。当然也需要用户配合,安排好培训时间,搭建好培训环境,这样才能获得较好的培训效果。
初步验收,软件开发测试完成,在试运行前后,也可能会有初步验收。开发方需要进行系统的自检,根据合同功能对照系统的实际功能,看是否完成了合同约定内容,确认后,一般和用户方、监理方一起进行功能检查,如果都没有问题,则通过,有问题的话,做下记录,进行相应的补充修改,完成初验。
评审结项,试运行以及整改结束,软件获得了用户的认可,则进行最终的验收,同时召开项目结项评审会,一般会邀请3-7名专家,开发方汇报展示项目完成情况,监理会对整个过程进行说明,用户方给出使用情况的汇报,最后专家给出结项意见,最后签字,则完成结项工作。
项目运维,项目结项评审完成后,就进入了维护阶段,如果后续软件使用比较频繁,由于对软件熟悉度还需要一个过程,刚开始使用中可能会有比较多的问题,一般开发方会派人驻场进行保障,主要帮助用户解决使用过程中的问题,保障过程中,会对保障情况做出记录,定期(比如一周或者一个月)提交一份运维报告,保证软件能够正常使用。
5 结语
本文介绍了软件项目从申请到开发实施到结项的整个过程,在这个过程中,根据项目或公司的大小,会有不同的职位参与,如果是小的公司,可能一人兼任了很多职位,很多过程也会简化或省略。一般大一些公司,人员多,职位会设置的比较全,流程也会多一些。通过介绍,大家能够根据自己的职位职责情况,明确在整个项目中的阶段和作用,希望通过介绍,大家对软件项目有一个大概的了解。在接到软件开发任务之后,第一件要做的事情就是进行需求调研工作,基于前期的沟通以及合同向用户了解具体需求,从而有针对性地开展后续工作。整个调研过程分为调研准备,调研实施,需求分析。
在软件项目的设计开发过程中,除了前期的用户需求调研确认,系统设计、数据库设计等工作之外,还有一些重要的工作需要考虑,比如软件开发模式,如何制定开发计划,如何协调开发人员开展开发工作等。
软件测试是指在软件开发过程中对软件系统进行验证和验证的过程。它的目的是确保软件能够按照设计要求正常运行,同时检测和纠正可能存在的缺陷和问题。软件测试有助于提高软件质量、可靠性和用户满意度。
开展用户培训工作是确保软件项目成功的重要一环。通过有计划和系统性的用户培训,您可以确保用户能够有效地使用新系统,提高工作效率,减少问题和困惑,从而实现项目的成功交付。