软件项目开发过程

本文部分转自:人生如轻尘栖弱草 源文件出自

一、开发流程图

这里写图片描述

二、过程产物及要求

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

项目启动阶段

产物名称成果描述负责人

调研文档了解项目背景,了解项目干系人目标方向产品经理

团队组建确认团队人员及配置产品总监

业务梳理明确项目的目标、角色、各端口及模块产品经理

需求阶段

产品原型产品的线框图产品经理

需求概要基于线框图,作技术评估,达成业务理解的一致性研发工程师

项目里程碑确认项目重大时间节点研发项目 经理

项目开发计划梳理各阶段、各端口的开发计划研发项目经理

项目任务分解表将计划分配到团队研发项目经理

设计阶段

界面效果图及标注基于线框图,作效果图,须适量考虑交互内容UI设计师

UI设计规范在UI界面基础上,输出主要界面的设计规范UI设计师

需求规格基于效果图,明确业务实现细节,消除对最终成果理解的不一致研发工程师

概要设计功能实现的可视化,有助于理清思路,减少技术盲区和低级缺陷,实现并行开发,提高效率研发工程师

通讯协议通信协议是指双方实体完成通信或服务所必须遵循的规则和约定研发工程师

表结构设计确认要建的数据库表及其表结构研发工程师

开发阶段

产品代码代码

测试阶段

测试用例明确测试方案,包括测试模块、步骤、预期测试工程师

测试结果报告输出测试结果测试工程师

用户手册系统操作手册测试工程师

常规文档

项目周报每周开发内容及下周开发计划研发项目经理

测试周报每周测试内容及下周测试计划测试工程师

评审会议纪要评审的过程文档整体团队

三、过程说明

项目启动

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

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

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

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

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

需求阶段

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

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

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

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

设计阶段

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

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

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

开发阶段

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

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

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

测试阶段

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

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

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

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

系统上线

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

软件开发一般分为五个阶段:
1.问题的定义及规划
此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析
在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计
此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。软件设计一般分为总体设计和详细设计。还的软件设计将为软件程序编写打下良好的基础。

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

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

===================================
软件开发流程(Software development process)即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
第一步:需求调研分析

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

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

3 系统分析员向用户再次确认需求。

第二步:概要设计

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

第三步:详细设计

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

第四步:编码

在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。 

第五步:测试

测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。

第六步:软件交付准备

在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。

《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。

《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。

第七步:验收

用户验收。

软件维护:

1)、软件数据库管理
2)、用户跟踪培训
3)、故障分析解决

软件升级

需求调整分析
软件功能拓展
优化系统

报废处理

软件不能适应业务发展
新软件项目立项
企业数据信息备份

3 软件开发合同

委托开发软件一般是应用户(委托方)需要,编制适用于其生产或经营特点的软件,这种软件一般在市场上见不到或在市场上买到需经修改后才能使用,但是该用户没有开发或修改软件的能力,必须委托一定软件中其他具有开发、修改软件能力的机构从事该项工作。被委托方虽然是开发软件方面专家,但他可能对委托方所从事的行业或具体的生产或经营特点、方式了解甚少。因此,双方签订的软件合同就有许多事项需要明确。

委托人注意事项

1、合同双方应明确约定受托人对委托人进行项目培训,以及培训费用的支付问题。

2、合同双方应明确约定开发软件的总价款以及各个部分的价格。

3、合同双方应明确约定受托人向委托人提供进度报告的方式和时间。

4、委托人在领受了受托人交付件后,应立即对该交付件进行测试和评估,以确认其是否符合开发软件的功能和规格。

5、委托人应向受托人提供有关信息与资料,特别是有关委托人对开发软件的功能和目标需求方面的信息和资料,明确质量要求。

6、合同双方应明确约定委托人对于委托人提交的有关需求说明、资料和信息所涉及的软件功能、目标、需求构成及相关技术问题向受托人咨询或征求意见的权利。

7、委托方应明确约定受托方向委托方进行软件维护和支持服务的时间和内容。

受托人的注意事项

1、受托人在完成软件开发后,需要增加开发费用时,该怎么处理,应与委托人进行明确约定。

2、应在合同中约定完成软件开发的弹性时间,避免由于委托人计算失误,未能在合同规定的时间内完成软件开发而承担的违约责任。

3、合同双方应明确约定受托人提交需求说明书、概要设计说明书、详细设计说明书的具体时间。

4、合同双方应明确约定委托人在受托人提交进度报告后答复的时间和方式。

5、明确所开发软件的版权归属。

软件版权的归属有两种处理方法:其一是软件版权归委托方;其二是软件版权归被委托方。实践中可采取以下办法解决,即软件版权归委托人,反过来委托人给予被委托人在一定范围内使用软件的许可,如允许被委托人使用例行程序开发其他软件等,由此双方都能各得所需。

6、受托人应约定委托人检验软件后出具书面领受文件或递交缺陷报告及领受或出具缺陷报告时间。

委托人和受托人的注意事项

1、合同双方应明确约定合同项目是否可以分包,如果可以,应写明可分包的范围。

2、合同双方应明确约定软件开发的目的、处理对象、软件的主要功能和目标以及应达到的技术指标。

3、开发进度

①合同双方应明确约定合理的软件系统试运行的时间。

②合同双方应明确约定开发软件的交付时间和进度。

4、知识产权归属

①若合同约定软件系统的知识产权归一方所有时,应明确约定另一方所拥有的使用权及权限范围。

②合同双方应明确约定所开发软件的知识产权的权属,是共同所有还是一方所有。

5、验收

验收对委托开发软件合同双方都非常重要,它关系到如何确认以下几个问题。

①、委托方在收到软件程序以及第一批文档后多长时间内完成对软件的测验,以及在多长时间内委托方有权以软件程序质量未达到合同所规定的技术标准要求为由,要求被委托方对程序进行修改使其达到合同规定的标准。

②、对程序进行修改费用应哪方负责。

③、被委托方应在多长内完成修改程序的工作,并且应在何时、何地以及以何种方式将修改后的软件交会给委托方。

④、委托方收到修改过的软件之后应在多长时间完成第二次测验,并应在多长时间内委托方应将第二次测验的结果通知被委托方。

⑤、如第二次测验计算机程序仍未达到合同规定的技术标准要求,委托方是否有权拒绝拒绝接受程序,交且是否有权要求被委托方按合同规定的索赔条款进行赔偿。

⑥、如果委托方要按期将首次或者第二次测验的结论通知被委托方,是否可以视为委托方已接受被委托方开发的软件。

⑦、如果程序文档分为两次交付,在委托方实际接受软件后多长时间内被委托方应将第二批文档交付给委托方。

6、交付说明书

①合同双方应明确约定交付的文档的形式和内容。

②合同双方应明确约定委托人对受托人提交的各种说明书的审核时间。

③合同双方应明确约定委托人对受托人提交的说明书有异议,双方应如何解决等问题。

合同双方没有明确约定当委托人对受托人提交的说明书有异议时,双方应如何解决。导致合同双方对此发生争议,引起纠纷。

7、证据

①合同签订后,双方应该妥善保管合同书以及主合同、相关凭据、有关会计资料以及其它承诺函、约定书等合同附件。

②对方拒绝接受函件等其他文书时,应当向公证机构或其他部门公证或提存保留证据。

③应严格按照法律法规的规定进行证据的公证和提存保留。

④当事人一方依照约定解除合同或依照法定事项主张解除合同,应保存通知对方解除合同的证据。

8、合同双方应明确约定项目变更的条件。

9、合同双方应明确约定软件开发系统的名称,分属于不同当事人的软件。

10、保密

①保密对象:合同双方应明确约定保密对象,应该对保密对象加以细化,以例举的方式列出,还应约定特定情况下的一些例外事项。

②保密责任:当事人应当明确约定双方对商业秘密都负有保密义务,任何一方都不得擅自泄漏,否则承担相应责任。

③保密期限:应约定对合同中的保密事项的具体保密期限,或只是有个概述而未明确具体的时间段、时间点。

④保密条款的独立性:双方可以约定,不论合同是否变更、解除或终止,合同保密条款不受其限制而继续有效,各方均应继续承担约定的保密义务。

11、合同双方的权利义务是否可以转让。

12、签约细节

①合同中应当说明双方当事人信息。如当事人名称,住所,法定代表人或主要负责人,开户金融机构,帐号,电话,邮政编码,签订合同日期。签订合同地点等。

②双方均应签署清楚无误的签名,当事方是单位的还应加盖公章。

③签订时间:双方应在合同尾部标明清楚无误的签约时间。

④合同用语要力求达到条款明确、具体、措辞确切,防止“基本”、“尽可能”、“如有可能”“应该”“最新”等不确切的条款和字眼在合同中出现。

13、不可抗力

①一方发生不可抗力时应当按照约定及时向对方告知、证明,并应及时采取措施防止损失扩大。

②双方当事人应当明确约定不可抗力的范围、遭遇不可抗力后的通知办法和证明方法、双方可否因不可抗力解除合同、可否因不可抗力造成的履行问题要求赔偿、在何种情况下解除合同等。

③一方发生不可抗力后应依约及时向对方告知、证明时应保存证据。

14、履行过程中双方都应注意相对方主体变更情况,若有变更解散情形的,应注意哪个法人或组织继受其权利义务,并应收集相关证据证明以上事实。

15、争议解决方式

①如约定诉讼管辖法院,只能约定由被告住所地、合同履行地、合同签订地、原告住所地、合同标的物所在地法院管辖,且只能约定其中一个法院管辖。如果约定不明确、选择两个以上法院管辖、或约定上述5个法院以外的法院,或既约定仲裁又约定诉讼的,这样解决争议的条款是无效的。

当事人选择管辖法院时,选择一个以上的法院;或者选择仲裁,却同时约定由法院管辖。 这样解决争议的条款是无效的,可能会增加当事人争议解决成本(时间、金钱),不符合当事人初始意图,不利于争议有效率地解决。

②发生争议后当事人双方可以平等协商达成共识,也可以由人民调解委员会调解或者向人民法院起诉以及依约定申请仲裁。人民法院的裁判、调解以及仲裁机构的裁决、调解都是具有强制力;当事人双方协商达成的共识和人民调解委员会的调解没有强制力但是其效力等同于签订了新的合同。

③如约定仲裁,应当明确约定具体的仲裁机构和仲裁事项。仲裁机构约定明确的标准为:仲裁机构所在地明确,同一地点有两个以上仲裁机构的应当写明约定的仲裁机构的详细名称。

16、合同双方当事人应该在涉外合同中明确约定一旦发生争议应该适用的法律,而且这种约定要切实可行。

17、在诉讼中,应权衡利弊,最大限度要求对方承担所有损失,不能主动放弃任何有利于己方的诉讼请求。

18、受到对方欺诈、胁迫,被人趁人之危签订合同的当事人应当保存好证据并且在一年之内向人民法院起诉或者依约向仲裁机构申请仲裁主张撤销或者变更合同。

19、在签订合同时,应当附带合同使用说明。如:合同的适用范围,条款术语的理解等方面。

20、在合同履行过程中一方违约,另一方应采取措施提请对方注意并与对方进行协商,确定责任的负担。

21、当双方对合同内容协商一致进行变更时应重新订立书面合同或达成书面协议。

22、签约主体

①合同双方应正确区分单位与单位负责人的关系,应明确认识到单位负责人不能以其个人名义代表单位。

②一方当事人与对方当事人的委托代理人签订合同时,应该事先确认代签约的人是否持有对方当事人的授权委托书。

③应对各自内部人员的权限作出规定,禁止无权人员滥用单位公章、签字等与对方履行各项合同事宜,尤其不能作出不符合合同内容和己方利益的意思表示。

④双方当事人应当调查签约对方的签约主体资格。

23、应在合同中写明主合同、相关凭据、有关会计资料以及其它承诺函、约定书等为本合同附件。

24、违约责任

①合同双方应在合同中约定,如一方违反合同约定,另一方可追究违约方的责任,并要求违约方承担违约金或赔偿损失。

② 合同双方只要约定了违约金或赔偿损失的,就要约定具体数额或计算方法。在约定违约金时,数额约定不能过高或过低,约定数额过低,损失得不到补偿,约定数额过高,会因数额过高得不到法律支持无法实现。一般而言,约定的违约金数额不能超出合同标的额,若一方的损失确实超过合同标的,可直接约定赔偿损失。

25、当事人一方依照约定解除合同或依照法定事项主张解除合同的,应当通知对方。合同自通知到达对方时解除。

26、双方在合同中应明确约定合同履行中若一方组织解散,其合同权利义务的承担者。若在合同订立时一方正处于解散的变动期内且能预见其权利义务的继受者,则应在合同中明确约定具体的继受者名称。同时须约定一方发生组织解散情形应及时告知相对方及违反此告知义务的责任。

27、双方在签订合同时,合同用语的一定要准确、清楚,对一些专业性较强的关键性的名词术语要在合同开头作出必要的定义或解释,以免发生歧义或造成理解障碍。

28、双方应在合同中约定,合同未尽事宜依照有关法律法规执行,法律法规未作规定的,双方可另行协商签订书面补充协议作为本合同的附件,补充协议与本合同具有同等法律效力。

29、双方应在合同中明确约定合同生效与终止的条件、时间和事由等。

30、合同双方应约定一方若变更通讯地址,应在变更之日起几日内以书面形式通知对方及未通知对方应承担的责任。

31、合同双方应在合同中明确约定双方的文件往来应采取何种形式。宜采书面形式,包括:书信、传真、电报、当面送交等方式。

32、一方接到另一方解除合同的通知时如有异议,可及时请求人民法院或者仲裁机构确认解除合同的效力。

以上细节问题,双方在签订软件开发合同时,应当加以重视,应严格按照法律规定办理相关手续,从而最大限度规避法律风险。



软件工程师考试(高级)要求:

(1)理解软件工程管理的概念和任务;

(2)理解软件生存期过程;

(3)理解软件工程标准;

(4)掌握需求分析、测试、维护基本技术;

(5)掌握软件度量、软件配置管理方法;

(6)理解软件复用概念;

(7)理解软件质量保证的手段;

(8)理解软件项目对人员的需求;

(9)理解软件知识产权的基本知识。

通过本级水平考试的合格人员具有从事软件系统分析与工程系统分析员、工程管理员的实际工作能力和业务水平。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值