微信小程序> 软件开发流程Softwaredevelopmentprocess-软件定制流程-开发小程序定制

软件开发流程Softwaredevelopmentprocess-软件定制流程-开发小程序定制

浏览量:2711 时间: 来源:LisenYang
首先看一下基本软件项目开发流程图

其中

1.需求分析:  通过对客户业务的了解和与客户对流程的讨论对需求进行基本建模,最终形成需求规格说明书。2.总体设计:  通过分析需求信息,对系统的外部条件及内部业务需求进行抽象建模,最终形成概要设计说明文档。3.详细设计:  此部分在对需求和概要设计的基础上进行系统的详细设计(也包含部分代码说明)。4.开发编程:  对系统进行代码编写。5.测试分析与系统整合:  对所有功能模块进行模拟数据测试及其它相关性测试并整合所有模块功能。6.现场支持:  系统上线试运行进行现场问题记录、解答。7.系统运行支持:  系统正式推产后,对系统进行必要的维护和BUG修改

需求分析是怎样做的?

需求分析是构建软件系统的一个重要过程。一般,把需求类型分成三个类型:

1、业务需求(businessrequirement)  反映了组织机构或客户对系统、产品高层次的目的要求,它们在项目视图与范围文档中予以说明。2、用户需求(userrequirement)  文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。3、功能需求(functionalrequirement)  定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。

业务需求和用户需求是软件需求分析的基础,也是软件构建的前提。系统分析员通过对业务需求和用户需求的分解,将其转换成可以形式化描述的软件功能需求。开发软件系统最为困难的部分,就是准确说明开发什么。这就需要在开发的过程中不断的与用户进行交流与探讨,使系统更加详尽,准确到位。这就需要确定用户是否需要这样的产品类型以及获取每个用户类的需求。  客户也经常是矛盾的。事实上,很少有客户能够明确的知道怎样的一个系统对自己是最有益处的,他们往往在集中方案之间徘徊,于是经常产生需求的变动。生产厂商经常陷入客户自己的矛盾之中。  客户的负面影响可能对于能够在预算内按时完成项目产生很大的影响。尽管客户需要对需求的质量负责任,但是,当一个软件项目因为客户事先没有预料到的情况而导致失败的时候,即使客户不会追究开发方的责任,就软件项目本身而言,也已经是失败的。总结:良好的需求分析是软件成功的基础。在软件项目整个过程中系统分析员主动进行沟通,提出指导性意见。当软件融合了客户和系统分析员双方智慧,其质量将会进一步得以提高。

软件开发管理规范流程图

  摘项目管理的根本目的是按时、保质、保量完成预期交付的成果。项目管理要让整个组织能清楚理解项目实施的目的、影响、进度,应做到项目组所有员工都应理解项目实施的原因、意义及客户的要求。在项目管理中还能看到公司高层领导通过实际行动表现出来的对于项目实施的支持与帮助,通过以制度化管理来组织合理安排员工的工作职责和角色转换。为满足上述要求,就必须让员工、企业、客户能接受并适应新的“软件项目开发管理规范”。

1.启动阶段

  这个阶段的工作目的是决定一个项目是否需要启动。为了达到这个目的,首先要明确项目的总体战略目标,对项目的需要建立认同。即确定到底需要做什么、开发什么产品或提供什么服务,以及需要解决什么样的问题和需要满足客户或市场的什么要求等,同时还要总结项目工作的范围、所需资源、大约开支、各种风险,以及该项目不执行的其他替代选择等。这些代表了对整个项目目标从战略角度和宏观层次所进行的分析,通过项目的意向书总结出来,由此确证客户或项目发起人和赞助者的要求与期望,并帮助他们判定项目是否上马。项目意向总结书的通过及项目被批准上马形成了这个项目的起始点。

产品领域研究  研究产品所在领域的状况,为项目论证提供依据。研究内容包括:

产品领域的现状和前景产品领域的商业模式和业务流程产品的价值和盈利空间产品的特性和复杂度

技术可行性研究  研究产品的实现技术,总结技术可行性。研究内容包括:

类似产品的当前实现技术和技术趋势实现技术的候选方案各个方案的优点、成本和风险开发团队与实现技术的匹配情况

项目论证  基于商业和技术等方面对项目的可行性进行论证,确定项目是否开展。如果开展项目,则进一步论证项目的总体方案。

  论证的内容包括:

商业可行性技术可行性当前产品与类似产品的比较项目收益和前景项目的成本和风险项目的总体方案

确定项目目标和范围  项目开始时,所有相关人员必须对项目的目标和范围达成共识,形成共同的项目愿景。并把愿景叙述为《项目开发大纲》向相关人员传达。

《项目开发大纲》的内容包括:

规模、工作量评估  围绕各项计划的制定工作对项目的规模、工作量等进行评估,评估的内容包括:

模块数量与复杂度输入、输出和对外接口等数量与复杂度SLOC和功能点非生产性的支持工作量开发工作量(人月)进度与里程碑进度风险

定制项目开发计划  项目开发计划体现了项目组对整个开发周期的预期,指定了项目开发的总体方针。与其他计划一样,项目开发计划不是固定不变的,在执行过程中要对计划进行监控,可能会根据实际情况修改计划并重新发布。

《项目开发计划》的内容包括:

 《风险管理计划》定义这些任务的执行流程和人员分配。

  《风险管理计划》的内容包括:

项目的开始和结束时间项目各个阶段的开始和结束时间每个阶段的工作任务及其开始和结束时间每个工作任务的子任务的及其开始和结束时间里程碑和同步点角色的定义和任务分配

  作为跟踪项目进度的重要依据,进度表在项目推进过程中需要不断细化。另外,当实际进度与计划进度出现偏差时,需要修改进度表并重新发布。

3.执行阶段

  这个阶段的工作是通过执行项目的计划来完成项目的任务。它包括落实一切所需资源,如:人员、设备、费用、技术、信息,由管理者领导全体项目参与者开展各项工作。同时跟踪各项具体工作和整个项目的进度,定期向全体项目人员及项目的发起人报告项目状态。

需求分析  分析产品的关键需求、对架构设计有影响的需求和风险较高的需求,直到分析的程度能开展足界面原型设计和架构设计工作。

  《需求规格说明书》的内容包括:

界面原型设计  明确了系统的关键需求后,就可以进行界面原型设计工作,获取用户的反馈,尽快确定产品的界面基调。同时要编写一份《界面设计概要》文档,作为后续的界面设计工作的指导。

  《界面设计概要》的内容包括:

设计的理念理念的来源或参考设计的要点与类似产品界面的对比

架构设计  架构设计从关键需求开始,建立概念性的架构,并逐步细化和验证。最终生成架构设计说明书和架构基线代码。

  架构设计的方法:可以从几个不同的视角进行架构设计,然后汇总综合得出完整的设计。

《架构设计说明书》的内容包括:

所有工程项目工程目录结构软件包结构导入所有依赖包基础公共代码架构框架代码架构框架示例代码和测试代码数据库框架展示了软件架构师的工作和成功的软件架构设计包含的内容:

软件架构师的工作

成功的软件架构设计

  软件构建

  软件可以分阶段进行构建,每个阶段可以使用增量的方式开发,用通过若干个Build构建,最后发布阶段性产品成果。

  (注意:在这里,名词“阶段”的含义和本文其他地方的含义不一样)

阶段计划  构建阶段计划的内容包括:

确定本阶段要实现的功能列出阶段任务计划Build构建数量细化《开发进度表》中本阶段的工作内容

Build构建   Build构建以增量的方式执行阶段的开发任务,每个Build构建的周期一般不超过两星期,每一次Build构建都会发布为一个内部版本,并提交测试。测试发现的问题留待以后的Build构建解决。

Build计划  《Build计划》的内容包括:

本次Build的版本号本次Build的历时本次Build的工作任务  要解决的遗留Bug  本应由以前的Build实现的,但推迟到本次Build实现的功能  要实现的新功能  其他工作任务工作任务分配

需求细化  根据《Build计划》,细化本次Build要实现的需求,细化到能进行详细设计为止。有了细化的需求后就编写本次Build的测试计划。

  《测试计划》的内容包括:

功能测试要测试的功能测试时间测试方式验收标准

其他测试(性能测试、边界测试、使用界面测试、可用性测试、安全性测试等)要测试的内容测试时间测试方式验收标准

。。。。。。

界面设计  根据细化的需求设计用户界面,当界面确定后即可编写测试用例。

  《测试用例》的内容包括:

测试用例对应的功能模块测试用例的性质(功能测试用例、性能测试用例、。。。。。。)输入(或操作步骤)期望输出实际输出(执行测试后再填写)是否通过(执行测试后再填写)

详细设计  详细实际每项需求的实现方法,对于重要的设计决策、算法、公共模块和外部接口等必须以模块设计文档的形式进行记录。《模块设计文档》的内容包括:

模块名称设计思想设计图表(类图、流程图等)要点描述(包、接口、类、方法、算法、设计模式)测试方式

编码、单元测试  编码和单元测试是开发人员的工作,对于重要的代码都必须进行单元测试,编写代码必须遵守下列准则:

遵守编码规范编码前必须充分理解相关的需求编码前先进行设计,把流程理顺注意设计方法和设计模式的灵活运用总体考虑问题,使代码遵从架构并容易测试设计时要充分考虑异常情况和临界条件严禁Copy-Paste,注意提取公共代码,在编码过程中实现重构异常处理必须记录日志,严禁草率地直接打印异常信息灵活运用ASSERT()/VERIFY()等断言来帮助调试程序单元测试是程序员的工作,所以编码完成后必须对代码严格测试功能代码完成后必须先做以下4件事情:  编译代码,保证编译通过  (不运行程序)对代码进行全面检查  用调试模式启动程序,一行一行单步执行代码,并注意调试输出  改变条件,让代码尽可能走遍所有程序分支CheckIn代码前必须保证能编译通过

创建Build  代码集成发布前需冻结代码,所有人把要提交的代码CheckIn,并保证编译后的程序能在测试服务器上正常启动,界面能正常打开。同时还要提交Build清单。

  《Build清单》的内容包括:

Build版本号和日期改正的Bug修改的功能实现的新功能其他说明

集成测试  按照《测试计划》针对《Build清单》执行《测试用例》,测试完成后编写测试报告。

  《测试报告》的内容包括:

测试用例汇总(用例数量、通过的用例数量、未通过的用例数量等)Bug汇总(Bug总数、新增Bug数量、关闭Bug数量、Bug趋势图表等)测试计划执行情况测试总结

阶段产品发布  构建阶段完成后发布阶段产品成果,向用户展示并接受用户反馈,同时做好阶段总结。

  《发布清单》的内容包括:

产品版本号和日期改正的Bug修改的功能实现的新功能其他说明

  《阶段总结报告》的内容包括:

阶段任务的完成情况进度计划的执行情况用户的反馈情况本阶段碰到的主要问题下一阶段的改进建议

4.控制阶段

  这个阶段的工作是确证项目工作的结果符合项目的计划。它通过对项目结果的衡量和审核,与项目计划所期望的结果进行比较,找出实际结果与计划的差别,并制定处理措施。这个阶段的工作还包括对项目进程中出现的任何更改要求进行审核和批准。同时调解项目进程中出现的各种问题,如:对缺乏的资源的补偿调节;对项目的进度表及各项具体工作的优先级或顺序的修订。

风险管理  开发期间要对风险进行监控,定期检查、更新和发布《风险列表》。

质量管理  1)评审

  评审是质量保证的重要环节,原则上每个重要的工作任务或阶段结束前都必须经过评审,如:方案评审、计划评审、需求评审、设计评审和代码评审等,工作是否被通过、是否需要修改或重做均由评审结果决定,评审结果以《评审报告》的形式发布。

  《评审报告》的内容包括:

产品测试  因为产品即将验收和发布,所以必须对产品进行完整测试,产品测试比其他测试要求更严格,当产品的质量达到发布的要求后才能发布。产品的质量由《测试报告》体现。

RC版本发布  发布RC版本让用户体验并收集反馈意见,为产品验收作准备。RC版本发布后,产品不应该有大改动,一般只是界面的局部调整。

编制用户文档  针对不同的使用者角色,编制相应的用户文档,对管理者用户需要提供《安装、维护指南》,对普通用户需要编制《产品使用手册》。

  《安装、维护指南》的内容包括:

产品各组件的说明产品部署架构安装、配置和卸载等步骤启动、停止和重启等操作其它操作:日志、备份、还原等

  《产品使用手册》的内容包括:

产品介绍各个功能的介绍通过实际案例介绍各个功能的使用方式和操作步骤

产品使用培训  对于为特定客户开发的软件产品,在发布前需要对用户进行产品的使用培训。培训前需要部署好操作环境,编写培训资料,然后组织培训会议。

产品验收  对于为特定客户开发的软件产品,通常根据签订的开发合同和产品方案等条款逐项验收,验收时,用户通常会执行验收测试案例。

最后修订  在产品验收通过后,正式发布前对产品作最后的修订,可能包括:

开发文档修订用户文档修订代码整理

正式版发布  正式版的发布标志着开发阶段的结束,产品从此时起进入维护阶段,正式发布前可能要做一些准备工作,如:数据迁移和环境配置等。

项目总结  项目结束后需要对整个项目开发阶段的工作进行总结,交流心得,吸取经验和教训,并归档为《项目总结报告》。

  《项目总结报告》的内容包括:

总体评价成本、收益汇总重要心得管理总结技术总结

6,总结

  软件项目开发经历多个阶段,每个阶段包含多个任务,每个任务会产生相应的工件。需要相应的质量保证措施对任务进行监控,保证任务的执行。任务完成后也需要对任务进行评审,保证任务的质量。

  这些工作均由开发团队和相关人员按照工作流程执行。因此,合理的角色任务分配和沟通制度是软件项目成功的重要保障。

列出几种比较普遍的角色和任务划分方案:

职责和角色不清楚往往是造成软件项目团队管理混乱的一个重要原因,一个好的软件团队必须根据团队规模的不同和项目本身的特点对项目成员的角色和岗位进行明确的划分,这样团队中的每个成员才可能有清晰的责任和目标。

  软件开发不管采用哪种生命周期模型和开发方法论,整个过程都会包含需求,设计,开发,测试,配置管理等各项活动。而这些活动会对应到项目中的不同角色,项目中进行岗位划分后每个岗位成员可以兼职多个角色。形成相关的角色岗位矩阵。

  方案一项目负责人总览全局

  对于小作坊的软件开发团队,可以由一个项目负责人总览全局。项目负责人承担从用户需求-软件需求-总体设计的所有工作。同时还需要做到整个团队进度规划,质量保证,配置管理和沟通协调等相关工作。所以小型项目团队对项目负责人的业务,技术和沟通管理等技能都要求较高,项目负责人是项目中的总体方案确认者和架构师。项目负责人能力和技能往往决定了整个软件项目的成败。

  我们这里指的小型团队并不是只一个人单打独斗的项目,所以项目负责人最好不要介入到模块设计和编码活动中,而是应该把重点放在进度的控制和质量的保证上面。由于项目负责人一般有较强的技术能力,所以项目负责人可以承担项目中要使用的一些新技术的研究,项目中一些疑难问题的解决等相关工作。项目负责人还应该有计划的设计开发人员的代码进行Review,对发现的规范性,性能,复用差等问题跟项目成员确认,并写入到项目开发规范中。

  方案二项目负责人和开发负责人分离

  在这种方案下项目负责人和开发负责人在软件需求和架构上的工作是重叠的。这两个岗位的人员共同来确认项目的总体方案和架构。项目负责人的重点在项目管理和与客户交流沟通上,只有确认清楚第一手的用户需求,才能开发出用户满意度高的软件。对于很多小型项目往往是用户需求都没有搞清楚就开工,项目成员完全凭借着自己的感觉在做系统,过程中又不注意与用户及时反馈和迭代,导致开发出完全不能使用的系统;开发负责人的重点是对整个开发过程负责,包括对项目经理确认的进度目标进行任务的进一步分解,安排后续的增量和迭代计划。方案二的重点是第一次解放项目经理,架构的核心移动到了开发负责人,而项目经理仅仅是参与讨论和评审。而单独剥离出开发负责人后,可以更好的对开发过程进行跟踪和协调,开发负责人重点放在项目内部,而避免过多去和外部干系人沟通和协调。

  方案三测试的专职化

  对于项目团队发展到5-10的时候,项目中的测试工作必须专职化的由测试人员来完成。一般测试人员的配置比例为4-6个开发人员需要配置一名专职化的测试人员。测试人员站在第三方和模拟使用者角度来进行系统的测试,可以更好的发现系统的BUG和相关问题,有效的保证系统的质量。

  方案三中项目经理工作进一步清晰,项目经理不在承担软件需求和架构的相关工作。而重点放在项目内外的沟通协调和整个项目进度计划的安排上。这个时候项目中的设计负责人对整个系统的总体设计方案和架构负责,而且设计负责人也将不在参与具体的功能模块的设计和开发工作。设计负责人的重点转化到的软件需求的开发和总体设计上面(如涉及到RUP中的用例建模,用例分析,架构设计,组件接口复用)。

  方案四项目经理和需求角色分离

  当项目团队的规模发展到12-20人的时候,项目团队基本上可以算做中小型的项目团队。这个时候项目经理完全专职化做项目管理的工作。包括项目进度计划制定,项目跟踪监控,风险分析和控制,项目度量分析和决策等相关内容。对于需求活动设置专门的需求工程师岗位来完成需求的开发。同时项目中设置专门的架构设计人员,架构设计人员不再负责需求的开发工作,而重点在于系统总体设计方案的确定,系统的4+1视图的分析,同时架构人员要考虑整个系统的集成方案的确定和具体功能单元和模块的集成。

  由于项目规模的扩大,项目的配置项更加复杂,项目也需要同时起开发,测试,集成和BugFix等多个分支。因此需要设置专门的配置管理员来进行项目的配置管理。

  对于项目同时需要开发新版本,又需要对已经发布的维护版本进行功能改进的时候,项目中要考虑设置专门的维护人员。由维护人员来完成项目小功能的改进和BUG的修复。这样新版本设计开发人员可以更专注的进行新功能的开发。

阶段完成标志  在项目开发过程中,当一个阶段完成后才会开展下一个阶段的工作;另外,“某个阶段完成”通常被定义为项目的一个里程碑,里程碑标识了项目的进度,它是项目开发和控制的重要参考,对整个项目有重要的意义。因此,“确证某个阶段是否已经完成”的工作非常有重要。

每一个阶段的结束以它特定任务的完成为象征  只有当某个阶段中被规定的所有工作任务都完成了,这个阶段才算真正结束,整个项目才可以进入到下一个阶段中去。反过来说,要是阶段中某个任务没有全部完成,按照项目的定义,整个阶段就不能算是完成,因此项目就不能进入到下一个阶段去。

衡量阶段结束的工作结果必须是实在的交付品  阶段中的任务是否完成是透过任务活动中产生的交付品来体现的,交付品必须是可交付的、非抽象的、实质的并且可以通过用衡量的方法来判断是否真正地完成了的具体事物。如:某一阶段的完成是以建造一个样品或完成某分文件作为象征。任何项目阶段的结束,都应该有这样的实质性东西的完成作为象征。

跨阶段的进程以阶段结尾的合格验证和审核来决定  当一个阶段结束时,在进入到下一个阶段之前所需要做的工作应包括对交付品进行合格验证,并检查这一阶段的工作质量和效率,由此判断是否可以进入到下一个阶段。这些检验象征了一个阶段的结尾终点,表示项目的进程离开了上一个阶段而进入了下一个阶段。

1相关系统分析员和用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。  2系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。  3系统分析员和用户再次确认需求。  4系统分析员根据确认的需求文档所例用的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。  5系统分析员把写好的概要设计文档给程序员,程序员根据所例出的功能一个一个的编写。  6测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能,然后验收。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎