




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件项目管理流程总结1风险评估2成本预算3客户沟通的过程4需求分析5面向对象程序设计(略)6开发管理7产品交付一、风险评估软件项目风险是指在整个项目周期中所涉及的成本预算、开发进度、技术难度、经济可行性、安全管理等各方面的问题,以及由这些问题而对项目所产生的影响。项目的风险与其可行性成反比,其可行性越高,风险越低。软件项目的可行性分为经济可行性、业务可行性、技术可行性、法律可行性等四个方面。而软件项目风险则分为产品规模风险、需要风险、相关性风险、管理风险、安全风险等六个方面1产品规模风险项目的风险是与产品的规模成正比的,一般产品规模越大,问题就越突出。尤其是估算产品规模的方法,复用软件的多少,需求变更的多少等因素与产品风险息息相关1估算产品规模的方法2产品规模估算的信任度3产品规模与以前产品规模平均值的偏差4产品的用户数5复用软件的多少6产品需求变更的多少2需求风险很多项目在确定需求时都面临着一些不确定性。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造预期的产品。每一种情况对产品来讲都可能致命的,这些的风险因素有1对产品缺少清晰的认识2对产品需求缺少认同3在做需求分析过程中客户参与不够4没有优先需求5由于不确定的需要导致新的市场6不断变化需求7缺少有效的需求变化管理过程8对需求的变化缺少相关分析等3相关性风险许多风险都是因为项目的外部环境或因素的相关性产生的。控制外部的相关性风险,能缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并觉察潜在的问题,与外部环境相关的因素有1客户供应条目或信息2交互成员或交互团体依赖性3内部或外部转包商的关系4经验丰富人员的可得性5项目的复用性4技术风险软件技术的飞速发展和经验丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,比如培训、聘请顾问以及为项目团队招聘合适的人才等。关于技术主要有下面这些风险因素1缺乏培训2对方法、工具和技术理解的不够3应用领域的经验不足4对新的技术和开发方法应用不熟悉5管理风险尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,他们有先天性的不足不能检查到自己的错误。因而,使项目的成功变得更加困难。如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目本身。当我们定义了项目追踪过程并且明晰项目角色和责任,就能处理这些风险因素1计划和任务定义不够充分2对实际项目状态不了解3项目所有者和决策者分不清4不切实际的承诺5不能与员工之间的进行充分地沟通6安全风险软件产品本身是属于创造性的产品,产品本身的核心技术保密非常重要。但一直以来,我们在软件这方面的安全意识比较淡薄,对软件产品的开发主要注重技术本身,而忽略了专利的保护。软件行业的技术人员流动是很普遍的现象,随着技术人员的流失、变更,很能会导致产品和新技术的泄密,致使我们的软件产品被它公司窃取,导致项目失败。而且在软件方面关于知识产权的认定目前还没有明确的一个行业规范,这也是我们软件项目潜在的风险。7回避风险的方式1以开发方诱导能保证需求的完整,使需求与客户的真实期望高度一致。再以书面方便形成用户需求这一重要的文档,避免疏漏造成的损失在软件系统的后续阶段被逐步地放大。2设立监督制度,项目开发中任何较大的决定都必须有客户参与进行的,在该项目中项目监督由项目开发中的质量监督组来实施。3需求变更需要经过统一的负责人提出,并且要用户需求的审核领导认可,需求变更应该是定期而不是随时的提出,而且开发方应该做好详细的记录,让客户了解需求变更的实际情况。4控制系统的复杂程度,过于简单的系统结构,对用户来使用比例会有明显的折扣,甚至造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的复杂度会上升,这又会在实现和测试阶段带来风险。适当控制系统的复杂程度有利于降低开发的风险。5从软件工程的角度看,软件维护费用约占总费用的5570,系统越大,该费用越高。对系统可维护性的轻视是大型软件系统的最大风险。在软件漫长的运营期内,业务规则肯定会不断发展,科学的解决此问题的做法是不断对软件系统进行版本升级,在确保可维护性的前提下逐步扩展系统。6设定应急计划,每个开发计划都至少应该设定一个应急预案去应对出现突发情况和不可遇知的风险。回到目录二、成本预算1成本预算方式1自上而下的预算方法自上而下的预方法主要是依据上层、中层项目管理人员的管理经验进行判断,对构成项目整体成本的子项目成本进行估计,并把这些判断估计的结果传递给低一层的管理人员,在此基础上由这一层的管理人员对组成项目的子任务和子项目的成本进行估计,然后继续向下一层传递他们的成本估计,直到传递到最低一层。使用此预算方式,在上层的管理人员根据他们的经验进行的费用估计分解到下层时,可能会出现下层人员认为上层的估计不足以完成相应任务的情况。这时,下层人员不一定会表达出自己的真实观点,不一定会和上层管理人员进行理智地讨论,从而得出更为合理的预算分配方案。在实际中,他们往往只能沉默地等待上层管理者自行发现问题并予以纠正,这样往往会给项目带来诸多问题。自上而下更适用于项目启动的前期,与真实费用相差在3070之间。SCRUM使用自上而下的成本预算方式,它不会立即精确地确定成本,而是以最大限度容纳客户对未来产品要求所产生的变更。2自下而上的预算方法自下而上方法要求运用WBS(WORKBREAKDOWNSTRUCTURE,工作分解结构)对项目的所有工作任务的时间和预算进行仔细考察。最初,预算是针对资源(团队成员的工作时间、硬件的配置)进行的,项目经理在此之上再加上适当的间接费用(如培训费用、管理费用、不可预见费等)以及项目要达到的利润目标就形成了项目的总预算。自下而上的预算方法要求全面考虑所有涉及到的工作任务,更适用于项目的初期与中期,它能准备地评估项目的成本,与真实费用相差在510之间。注解WBSWBS是面向提交成果对项目的分解,从提交成果的列表可以确定每个提交成果需要执行的活动。SCRUM会对WBS进一步细化,把一个迭代分解为一个或多个的工作包,再把工作包分解为细小的开发任务(一般开发任务的开发周期在15个工作小时以内)。2确定项目支出总体成本预算就是结合下列多个成本预算方式综合计算的开发成本1零基数预算在成本预算的初期应该使用零基数的计算原则,而不可以使用类似于以上一年总体费用加上20这样粗略的方式计算项目成本。2软硬件成本、物品成本物品成本是指类似于服务器(RAM硬盘CPUNIC卡RAID簇)成本、维护成本、机房租金、光纤通讯成本、软件成本等的成本。计算成本时需要考虑组装硬盘需时的长短,技术人员需要具备的质素,产品供应商能否提供保证质量,管理时是否需要额外的管理人员这些多方因素。3软件许可证成本4外包成本当使用类似视频、短信、移动电信类服务、门户网站等子项目时可以考虑以外包形式完成,以降低开发成本。5人力资源成本计算人力资源成本时应该使用以最高和最低的工作效率估算平均效率的方式,计算出人力资源的平均成本。6维修保养成本回到目录三、客户沟通的过程从客户沟通的方向出发来看,软件项目可分为需求识别、方案定制、项目实施、项目结束等4个不同的阶段,各个阶段都具有不同的沟通重点。1需求识别阶段1文本沟通在需求识别的前期,应该通过问卷、原型展示、界面展示、逻辑处理展示、准化文档模板等方式进行全方位多角度的分析,随时将不明确之处反馈给客户,以期待客户解答。并以文本记录的方式建立需要分析书,并要求客户审核需求分析书,以达到需要分析与客户的真实期望高度一致的结果。2业务逻辑沟通在进行业务沟通时,应该了解客户的行业语言,以促进业务分析的过程,越过应用需求和开发之间的鸿沟。沟通过程提倡以草图或者可视信息化的方式进行,针对不同层面的企业用户提供最适合的操作界面。以多角度的方式思考问题,要抓住需求重点,尤其是客户方领导所关注的创新类和实用类需求。3需求变更的规范化管理需求变更在软件开发类项目中是可以理解的,但必须对需求变更做好规范化的管理,以避免出现需求无止境变更的风险。需求变更必须由统一的负责人提出,并且由用户需求的审核领导者认可。需求变更的提出应该是定期而不是随时的,开发方应该做好详细的文本记录,让客户了解需求变更的实际情况和开发方为之所付出的成本代价。2方案定制阶段该阶段项目的主要任务是与客户共同制定一个以前期明确的需求、双方的资源、项目开始的阶段、实施的时间约定、项目费用限制等为基础的具有可操作性的项目计划,从本阶段开始争取客户全面参与项目的管理,并以双方的共同利益考虑项目实施的具体计划与风险规避。3项目实施阶段在该阶段,软件项目团队应该与客户共同领导项目的实施。同时,项目团队应实时评估客户满意度,并通过持续改进的方式提高客户满意度,还应要求客户参加必要的培训,以及在必要时检查项目产品。在出现客户的需求变更前,应主动与客户沟通交流,使客户充分了解项目的每个环节,以及变更带来的影响,减少需求变更。如果出现客户需求变更,应与客户一起共同解决由变更引起的成本、进度、质量变化。4结束阶段该阶段主要进行项目成果的移交,并把系统交付给维护人员,帮助客户实现商务目标,结清各种款项。完成这些工作后应该进行项目评估,审核此项目的成果并总结项目经验。5售前人员注意事项在产品型项目作为开发成果时,相关销售人员应该注意对产品的推销不应该过分承诺。如果过分承诺,会给后续的项目实施带来困难一旦承诺没有兑现,也会降低客户满意度,影响今后合作。如果有附加承诺,一定要以文本形式记录,让实施项目经理知晓并传达给项目组成员。注解在软件项目中,需要明确以下四种客户角色A要明确最终使用部门和用户,要去了解他们现有的工作方式,要让他们知道项目的目标框架,知道项目要解决他们的哪些困难,但绝对不是全部困难,这样可以较好的控制项目范围。B要明确需求的提出者,他或者他们要能够代表最终客户群体。提出产品需求的这类客户要具有一定的技术、业务能力和权威,能够真正代表最终客户团队的意愿和想法,最好有IT基础,能够用IT语言描述问题和需求,以利于双方的沟通、协作,避免产生歧义。C要明确做需求确认的中层领导,他要把握方向。软件开发项目是解决实际生产或者管理问题,同时也是领导系统建设的具体实现,做需求确认的客户领导,既要了解高层领导的系统建设要点和方向,又要谙熟具体业务和生产管理实际。如果是这样的客户领导来把握和决策,对企业软件开发项目的顺利进展作用非凡。D要明确谁来对成品提意见,谁来验收。项目验收环节,是项目的收尾环节,如果验收的人对项目初期的需求目标不了解,会从态度和产品实际使用效果上对验收产生负面的影响,对提供产品的企业关闭项目非常不利。根据实践总结,由需求提出人和确认人来做项目的验收工作,能够促进项目的顺利完成,避免延期。回到目录四、需求分析1需求分析的过程需求过程包括需求开发和需求管理2个部分1需求开发就是对开发前期的管理,与客房的沟通过程,可以分为4个阶段需求获取、需求分析、编写需求和需求验证。2需求管理就是软件项目开发过程中控制和维持需求约定的活动。包括变更控制、版本控制、需求跟踪、需求状态跟踪。2需求的层次需求的层次包括业务需求、用户需求、功能需求、非功能需求等4个方面。3需求开发阶段的重点1提取业务对象业务对象是指系统使用的真实对象,例如一个供应链管理SUPPLYCHAINMANAGEMENT,简称SCM业务对象主要包括生产批发商、零售商、送货商、顾客多个层次。2提取业务流程在了解业务逻辑的过程中,应该列举出所开发软件模块的各自职能,并细化每个工作流程,深入分析业务逻辑。3性能需求在分析的前期应该注意客户对所开发软件的技术性能指标,如存储容量限制、运行时间限制、安全保密性等。4环境需求环境需求是指软件平台运行时所处环境的要求,如硬件方面机型、外部设备、数据通信接口软件方面系统软件,包括操作系统、网络软件、数据库管理系统方面使用方面使用部门在制度上,操作人员上的技术水平上应具备怎样的条件。5可靠性需求对所开发软件在投入运行后发生故障的概率,应该按实际的运行环境提出要求。对于重要的软件,或是运行失效会造成严重后果的软件,应提出较高的可靠性要求。6安全保密要求在需求分析时应当在这方面恰当地做出规定,对所开发的软件给予特殊的设计,使其在运行中,其安全保密方面的性能得到必要的保证。7用户界面需求为用户界面细致地规定到达的要求。8资源使用需求开发的软件在运行时和开发时所需要的各种资源。9软件成本消耗与开发进度需求在软件项目立项后,根据合同规定,对软件开发的进度和各步骤的费用提出要求,作为开发管理的依据。10开发目标需求预先估计以后系统可能达到的目标,这样可以比较容易对系统进行必要的补充和修改。4需求分析的任务需求分析的主要任务是借助于当前系统的逻辑模型导出目标系统的逻辑模型,其流程如下1确定对系统的综合需求(功能、性能、运行、扩充需求)2制作产品需求文档PRD3分析系统的数据需求(概念模型、数据字典、规范化)4导出目标系统的详细的逻辑模型(数据流图、数据字典、主要功能描述)5开发原形系统6从PRD提取编制软件需求规格说明书(SRS)注解SRS格式1引言2系统概述(项目背景、系统目标、核心业务流程)3术语说明4系统结构(架构图、功能图)5主体功能与业务逻辑(重点)6接口需求(内部、外部接口、)7网络总体设计(拓扑网络、主机、组网)8运行环境(LINUX、WINDOWS、IIS、WEBLOGIC、TOMCAT、OLAP、OLTP、JDK80、NETFRAMEWORK40等)回到目录五、面向对象程序设计(略)1设计原则1SRP单一职责链每个类都应该只负责做一件事。2OCP开封闭合原则软件的实体(类、模块、函数等)应该是可以扩展的,但是不可修改的。3LSP替换原则子类必须能替换他们的基类型。4DIP依赖倒置原则高层模块不应该依赖于低层模块,二者都应该依赖于接口与抽象类。抽象不应该依赖于细节,细节应依赖于对象。5ISP接口隔离原则不应该强迫客户依赖于并未使用的接口,而应该把胖接口分离。2实现UML建模1业务对象的提取2根据SRS、CRC等实现用况建模3实现业务顺序图4建立类图,根据用况图建立对象之间的关联5绘制活动图、实现协作图、状态图回到目录六、开发管理1建立项目计划1设计总体架构针对系统的实施需要,采取适当的且成熟的框架结构。2控制可扩展度扩展度过大,将提高系统的复杂程度,延长开发时间;扩展度过低,会直接影响系统的二次开发与维护。控制系统的可扩展性,能提高开发效率,降低系统维护的难度。3建立基础设施合理分配部署软、硬件等基础设施所需要的时间与成本(例如服务器的订购安装、光纤接入、软件平台订购)。4划分开发任务利用WBS(WORKBREAKDOWNSTRUCTURE,工作分解结构)对可交付结果进行分类与划分。每个项目都能划分为多个不同阶段,每个阶段又可以分为多个工作包(WORKPACKAGE),工作包是WBS里最小的可交付结果,最后从工作包中分解出多个开发任务列表。5部署开发进度一个项目应该按进度划分为多个开发阶段,每个阶段的开发周期一般在3060个工作日以内。在此阶段内应该与客户举行协商会议,制定产品路线图,在开发过程中邀请客户积极参与并提出反馈意见。然后把该时段内的开发任务按照开发难度,依赖性,重要性等多方条件划分为多个迭代周期。在SCRUM敏捷软件开发原则中,应该把每个迭代任务进一步细分为多个开发任务列表,再开发任务分配给组员各自负责,而开发时间应该控制在15个工作小时以内。如果开发时间超出15个工作小时,应该考虑把开发任务再度细化。开发任务建议应该由组员自主选择,而不要使用强制分配的方式。5测试项目成果每个工作包都应该同步部署测试工作,提高项目的质量。对出错BUG的工作包应该由测试人员以文本方式记录,向开发人员展示错误所在,让开发人员及时进行修改。2管理开发团队1组建团队按照工作任务与项目时间的前提条件建立团队,按团队职责分配人员,一般团队人数应该控制在812人之间。当团队人数超过15人时,应该考虑把团队分解成2个独立团队,负责不同的开发任务。2分配开发任务在每个迭代周期内(一般是1530个工作日),应该把每个工作包进一步细分为多个开发任务,再开发任务分配给组员各自负责,开发时间应该控制在15个工作小时以内。如果开发任务的开发时间超出15个工作小时,应该考虑把任务再度细化。而开发任务应该以自由选择的方式分配给每个组员。3监督开发进度在迭代的前期举行一次会议,让组员了解开发的进展及流程,并以自主选择的方式分配开发任务。期间可使用MICROSOFTPROJECT等工具记录开发流程的进展,在每个工作包完成开发后应该进行性功能的测试,并以文本方式记录测试结果。每天举行一次15分钟的站立会议,让组员交待昨天已完成的开发任务,当天将要做的任务,与开发过程中所遇到的问题。并在每周末举行一次例行会议,交待总体进程。在迭代末期举行一次冲刺会议,总结项目的进展,交行已完成的任务,回顾该迭代周期内所遇到的问题,为下一个迭代做好准备。4系统测试对每个已完成的工作包进行适时的测试,保证系统质量与性能。对测试结果进行文本的记录,并把测试结果与绩效工资收入挂钩,并以真实数据计算组员的绩效收入。5解决开发中所遇到的问题对开发人员进行前期培训,可适当按工作能力分配任务,指导组员的开发。当遇到问题时应该在当天的站立会议时即时提出,并在15个工作小时内解决所遇到的问题以防止问题进一步扩大。3监管产品质量1质量需要的是计划、设计而并非审查的。在产品建立的初级,必须与“质量保证”(QA)的部门进行协商,以正式文档的方式,决定恰当的质量策略和标准。2在开发过程中使用TDD(测试驱动开发)的模式,提高开发质量。测试人员应该以文本方式记录BUG,并与开发人员共同工作的,把突出的缺陷演示给开发人员,以提高修改的效率。3在每个迭代的结束时进行一次产品效果的演示,从客户、使用者、高层领导中收集反馈信息。在团队内部举行评审会议,分析测试结果,了解产品性能,为下次迭代所需要做的改进做好计划。4修改项目计划1在产品需要识别阶段,应该以文档形式记录产品功能与开发流程,在开发计划需要修改时,应该与客户共同探讨,让客户了解计划修改对项目进度所造成的影响。2项目计划的修改应该由统一的负责人提出,并且由用户需求的审核领导者认可。需求变更的提出应该是定期而不是随时的。3计划的变更应该做好详细的文本记录,让客户了解需求变更的实际情况和开发方为之所付出的成本代价。回到目录七、产品交付1项目的后期审核在项目开发最终完成后,对开发人员来说可算是放下工作的重担,但对项目经理来说这往往是项目的关键时刻。前期的风险评估、成本预算、需求分析、软件设计都是为了引导项目走向这一时刻,此时所有的目光都将投向项目管理人员。你可能发现大量而琐碎的工作将要在几个小时内完成,此刻项目经理更需要保持清醒与镇定,把最后的工作视为微型项目来对待。细致地对项目进行后期的审核,分析项目成果、项目团队的效率、可交付产品的价值,以此审核结果可作为项目管理经验总结的一部分。2质量评审在项目交付前,应该把项目交给相关的“质量保证”(QA)部门进行质量评审,并邀请典型用户感受产品的质量。3项目的最终交付正常情况下在项目的前期就会订立项目交付的协议,项目交付方式分为非正式验收与正式验收两种。一般在项目完成后都会先进行非正式验收,让客户体会项目的质量并提出反馈意见,最后在客户肯定产品质量后再以书面协议的形式进行正式的产品验收。4项目的最终报告在项目的最后,应该制定项目的最终报告,此报告可以视为是对该项目一个记录,但报告不必包含项目的所有方面。一般最终报告应该包含以下方面1最初引进项目时的初期项目视图2对该项目的价值评估及支持性信息3项目的范围4项目的开发流程及WBS5项目的会议记录6项目变更的报告及变更的理由7与项目相关的沟通过程文件8项目的审核报告与客户验收报告9项目成员的表现报告10项目的最终成果产品研发过程常见问题目录产品研发过程常见问题1缺乏统一的管理平台产品研发过程常见问题2难以量化的需求开发与管理产品研发过程常见问题3跨部门协作困难产品研发过程常见问题4多项目管理挑战多产品研发过程常见问题1缺乏统一的管理平台随着软件开发实践的不断深入,应用生命周期管理越来越被业界接受为一种经过实践检验的,可以创造高品质的应用程序的,可靠的软件开发模式。但是,要实施整个应用程序生命周期管理是非常复杂的,我们必须借助一些工具来帮助我们完成整个生命周期的管理。让我们先来回顾一下绝大多数软件研发团队的典型工作情景【场景1】工具满天飞很多研发企业的管理平台非常分散,不同团队和个人使用工具不同,我们常常可以看到,产品部门收集需求使用WORD、EXCEL,项目经理制定项目计划、进行任务划分和分配使用PROJECT,开发部门管理任务和缺陷使用JIRA、URTRACKER,测试部门管理测试任务使用TESTDIRECTOR、TESTLINK,配置管理使用VSS、SVN、CVS、CC等等,这些平台相互是独立的,不仅不可以信息共享,部门之间还产生了有明显的信息壁垒,完全靠手工操作实现信息传递。【场景2】研发过程衔接不畅公司的需求管理、计划管理、缺陷跟踪、测试管理等等各种研发活动,使用不同公司开发的无法整合的工具,这些不同来源的工具,既无法共享项目信息,给使用上带来很多不便,又无法在各种不同类型的数据之间建立关联,导致一些高级管理功能无法实现,比如要实现需求跟踪,就需要整合需求管理、任务管理、测试管理三个系统。【场景3】一个BUG引发的血案软件开发人员1通过代码走查发现一个BUG,需要将这个BUG记入缺陷跟踪系统软件开发人员2代码的作者需要根据这个缺陷判断需要如何修改,并评估修改的工作量。如果是普通的BUG,只需要开发人员进行修改即可一旦发现是深层次的BUG,涉及到数据结构的调整、界面的调整甚至软件架构的调整,这将牵动研发团队的项目经理、系统架构师、数据库管理员、界面设计人员、产品经理项目经理收到开发人员的汇报,很不幸的发现这个问题需要在缺陷跟踪系统中将相关的人员统统拉到一起才可以解决问题产品经理需要根据缺陷评估即将投入的人力成本和由此引发的后果系统架构师评估架构调整的成本并拿出可行性方案数据库管理员调整数据结构,并为由此带来的数据结构升级准备方案界面设计人员重新调整界面,并为原来统一的风格如何调整伤透脑经软件开发人员3最终确定FIXBUG的人员根据最终收到的修改方案,制定修改计划并进行BUG的修改,而且该软件开发人员制订的开发计划需要让相关人员能准确的掌握BUG修改的进度,因为他的计划制约了后续的每一步工作版本经理根据修改结果发布一个测试版本,并知道版本中已包含了此次修改测试人员在拿到该版本后需要对这个BUG导致的代码修改设计针对性的测试用例,这个测试用例可能是自动测试用例,也可能是人工测试用例,总之测试人员需要在测试管理系统来记录这个BUG修改的验证过程版本经理又出现了一切就绪后,向客户发布版本时还需要提供RELEASENOTES以指明该版本中的这个改动假设该BUG对用户可见技术支持收到版本经理发布的版本、操作手册以及相关的FAQ,做好给客户提供支持的准备QA仔细分析代码走查发现的所有BUG原因,如果是典型问题,还需要将该问题写入开发经验库,并通过知识共享的形式分享给所有团队成员项目经理囧一切却还没有结束项目经理的职责还需要从组织级的角度把控项目过程和研发全进程。一个开发人员的代码如果被统计出问题较多,应该对该开发人员开发的代码采取补救和预防措施,要么加强测试,要么给他一些培训,要么他根本不适合这个职位应该走人对于这个开发人员的上司,他应该如何评价这个犯错的下属,因为几个BUG就认为他的工作不称职显然是不正确的,还有他如何衡量这个开发人员的工作量,是否是该员工工作量太多导致了该员工的代码质量不高他还想知道该员工在引入这个BUG时当时的工作任务是否过于紧迫当然,他也可能想分析一下这个典型的BUG引入会导致多少额外的工作量产生这,也太麻烦了吧一切就只是因为一个开发人员的某行代码的BUG引发的血案拜托这就是研发工作的特点好吗理由很简单没有一个集中管理、统一、高度整合的管理平台【解决方案推荐】工欲善其身,必先利其器。软件企业也是如此,要做到高效的软件开发和过程管理,必须选择运用灵活高效、统一整合的开发管理工具。TECHEXCELDEVSUITE是一款高度集成、灵活可扩展的研发管理平台,实现了在同一平台下从产品的概念形成、需求分析、项目规划、任务跟踪到开发测试等全生命周期的管理。有效且协同地控制需求、资源、工期和质量,帮助研发团队快速改进软件开发过程,提高产品质量和工作效率。一个平台即解决所有工具问题DEVSUITE平台不但包含了项目人员、架构师、开发人员和测试人员等所有人员对应的支持功能,增强了软件开发团队中的沟通与协作。举个例子,项目经理在定制项目计划时可以直接使用需求内容,在做计划的同时又可以给研发人员分配任务,研发人员在接到任务时可以直接查看相关联的客户需求,而测试人员在遇到缺陷时可以自动提交BUG,并且能实时查看BUG的修复进度。统一的平台既节省了所有员工的工作量,也保证了信息的一致性,同时也使得项目研发的所有历史都可追踪到。也就是说,研发过程的每一个阶段轻而易举的实现业务关联,如用户需求与产品功能、定制项目可关联产品功能与项目规划、开发任务、测试用例、测试任务可关联测试任务与BUG可关联开发任务与源代码可关联知识条目与需求、功能、任务均可关联等等当然必须地要提一下,DEVSUITE平台还适用于跨地域、跨时区协同开发,支持分布式研发团队,实现高效率的沟通与协作。产品研发过程常见问题2难以量化的需求开发与管理在软件项目的开发过程中,需求管理贯穿了软件项目的整个生命周期,在软件项目管理中需求工程是软件开发的第一步,是关键的一步,也是最难把握的一步。需求管理做得好坏直接影响到软件的质量,甚至软件项目的成败。从软件的项目立项、研发、维护,用户的经验在增加,对使用软件的感受有变化,以及整个行业的新动态,都为软件带来不断完善功能、优化性能、提高用户友好性的要求。在项目管理过程中,项目经理经常面对用户的需求变更,如果不能有效处理这些需求变更,项目计划会一再调整,软件交付日期一再拖延,项目研发人员的士气将越来越低落,将直接导致项目成本增加、质量下降及项目交付日期推后。这就决定了项目组必须拥有需求管理策略和有效的落地。让我们一起来回顾一下实际研发过程中,通常会面临到的需求管理挑战1缺乏需求的集中管理按照需求工程的说法,在进入开发环节之前,开发团队和客户之间需要形成一份完整的需求规格说明书,详细地说明目标软件的各种需求,这其中包括功能性需求、非功能性需求和其他各种约束。在典型的瀑布模型中,需求规格说明书是在需求分析阶段完成的。然而,由于软件外部环境的变化,很少有哪个项目在需求分析阶段就能将所有可能的需求准确无误地包含进来,并且在开发阶段不需要修改,一句话,需求的变更是不可避免的。需求的变更也需要及时地反应到需求管理中。除此之外,在实际的敏捷软件开发中,对开发而言,需求的来源不一定像瀑布模型那样完善的需求规格说明书,而通常有以下几种1客户初始的业务需求很多客户可能只会告诉我们,它想做一个系统或者工具平台,大致是什么样子,应该具备哪些功能,但这种需求往往比较抽象,缺乏细致的分析。这种需求可能源自于一次交谈,或者一封EMAIL,形式上并不正式。2客户对项目快速原型的反馈意见对于需求,在实际项目开发中,客户关注的业务功能,项目经理关注的是抽象设计,而开发人员关注的却是具体实现。在项目初期,客户往往也不是很清楚他们要什么,或者理想中的产品到底最后会是什么样的,界面布局,操作流程等等。这一点,在新产品的开发中尤为明显。这时候,就需要开发团队能够按照现有的理解快速地开发一个原型,作为开发团队和客户讨论和分析需求的共同基础,原型能够帮助用户更好地发掘和定义需求。客户对于原型的论证作为反馈意见也可以使开发团队更加直观和感性地认识客户的需求。3客户对每个迭代周期发布的版本的修改建议如果该企业采用的是敏捷开发,每个迭代周期都要发布一个可用的版本给客户,该版本尽可能多地实现了当前迭代周期内的需求以及之前迭代周期内遗留下来的需求。客户要验证需求的实现是否符合他们的要求,并提出修改意见和建议。4客户在研发周期中的需求变更需求来源的特殊性决定了软件开发过程中需求管理的特殊性,尤其是对于一个同时承担数个小项目的开发团队而言,不同的项目需求是由不同的开发人员或QA分别进行管理和跟踪的,缺乏集中的管理,对于需求的跟踪也比较原始。往往是手工整理需求邮件和需求列表,然后形成简单的需求文档,在需求查询和状态维护方面存在明显不足。2需求变更频繁软件开发的显著特点之一就是灵活性、机动性、对变化的快速响应能力。尤其是敏捷开发过程,需求变更更为频繁。敏捷开发的口号是拥抱需求变化,也就是说,开发团队对于客户提出的需求变更通常是抱以欢迎的态度,尽管这些变更可能会给项目计划和项目进度带来麻烦,但这种观念上的转变更能体现开发团队和客户之间合作的诚意。客户在迭代周期中的变更大致可以分为五种类型添加新需求、删除本次迭代周期内的需求、删除之前迭代周期内的需求、更改本次迭代周期内的需求、更改之前迭代周期内的需求。这就是说,开发团队需要实时高效地管理这些变更,并且将需求变更涉及到的迭代周期内项目计划和人员安排变更的影响最小化。3缺乏有针对性的需求管理流程传统的需求管理过程,尤其是其中的变更控制过程是针对那些组织机构清晰,只能定义明确的传统软件项目,其流程相对比较严谨和死板。同时,为了弥补需求变更对项目进程带来的影响,开发人员常常需要快速的进行功能修改和增加,而没有遵循统一的流程控制,从而常常使得软件开发的有序性被破坏,人为地增加了工作量。这就需要有更为高效和精简的需求管理过程以及相应的工具支持。4需求、测试用例、BUG管理脱节软件开发中,需求和测试用例是紧密联系的,通常来说,一条需求只有通过了所有针对该需求的测试之后才能说这条需求的实现真正实现了。而测试的结果是产生BUG报告,如果针对某条需求的一个测试用例没有通过测试,换句话说,也就是产生了一个BUG,这就说明该需求根本没有完成。同时,需求的变更直接影响到与该需求相关的测试用例的更新,继而影响到现有BUG的状态的更新。然而现实情况却是,大多数敏捷开发团队都没有实现需求、测试用例和BUG的一体化管理。我们希望在需求、测试用例和BUG之间建立一种动态的联系,能够实时地更新三者的状态,并且实现三者之间状态的动态联动,从而减少开发团队在管理和维护需求、测试用例和BUG时的工作量。5缺乏量化的项目管理反馈企业在项目管理中,需求的频繁变更对项目管理者评估需求、制定迭代周期内的项目计划都是个巨大的挑战。管理者在需求评估经验和能力上的不足,以及管理者对团队成员开发能力认识不足容易造成需求评估出现大的误差,虽然这种误差是不可避免的、但是我们希望可以通过历史评估数据的反馈来帮助项目管理者积累经验,逐步修正和调整自己的判断和评价体系,从而尽可能减小由于评估误差引起的项目风险。而没有工具的支持,历史的准确数据则很难获取。总结以上问题,显而易见,需求管理是软件项目中一项十分重要的工作,据调查显示在众多失败的软件项目中,由于需求原因导致的约占到45,因此有效的需求管理是企业软件开发项目顺利达成目标的重要支撑条件。如何理解项目开发的目的和用途,梳理用户需求,监控需求变化,进行需求确认,对需求风险进行防范,并利用工具进行有效的实施需求管理工具,方能推进软件项目良性发展,达到用户与软件开发企业的双赢。有效的需求管理方法与工具方法一量化需求管理如前所述,企业研发项目通常规模巨大,涉及部门众多,需求功能描述文件中包含众多内容,若仅仅只用整篇的文档来指导开发和测试工作,很容易引起任务分配的混乱当发生需求变更时,也很难追溯历史版本。TECHEXCEL公司推出的DEVSUITE产品研发管理软件,从实践中提炼出一个行之有效的解决方法用规范点SPECIFICATION,以下简称SPEC量化需求,正规表达每一个功能单元。只需打开需求功能描述书的WORD文档,就可以利用插件,将其中的功能单元逐条地复制出来,在需求管理系统DEVSPEC中直接生成SPEC。相对于需求,SPEC是更面向技术人员的语言。客户业务需求可以在平台中进行集中管理,并以需求结构化和条目化的形式管理需求,为需求的评估、追踪与变更管理提供了基础。同时,通过系统强大的页面自定义能力,我们可以管理需求的来源、难度、实现时间、实现成本等,这些信息为需求优先级的评估,提供了量化的指标,帮助项目经理准确的排布需求优先级,让团队优先实现最重要、最紧急、客户价值最高的需求。此外,需求说明书、分析设计文档、评审记录等,均可以以附件形式保存,且能对文档的版本进行有效的管理。方法二有序管理需求变更在实际项目中,实现需求变更的成本随着开发进度呈指数级增长。需求变更的流程化管理能保障正常的开发进度,将变更及时反应到开发和测试等部门。以下描述的是一个典型过程如图1。一项变更请求在需求管理系统中被提交后,与之关联的各个部门,如市场、项目管理、产品研发、QA、测试等,都会有相关人员接到系统通知而介入。他们将组成评估团队,根据实施难度、周期、费用、对其他机制的影响等指标,对该变更进行全面考察和评估。DEVSPEC提供了专门的变更管理视图,在这里,我们可以管理各个项目中的需求变更任务,不论是需求增加、减少或是改变,我们都会为之建立一条变更记录,在这条变更记录中,记录了变更的来源、原因、具体描述和变更成本、收益估算,这些信息可以成为变更评估的标准与依据。每个变更任务均可以和在变更中受影响的需求相关联,包括增加的、减少的和变更的需求。通过需求变更列表,我们可以清晰的看到项目中当前有多少变更任务,影响了哪些需求,也能够察看到整个项目周期中总计发生了多少变更,总计影响了多少需求条目。方法三标准的需求管理流程需求管理的整个过程都可以用标准、有效的工作流控制起来,如需求变更流程的设定,通常包括请求、复查、讨论、调整、批准和拒绝等状态,只有具备权限的项目成员才能改变状态。按照预设的流程,各方审批全部通过后,该变更才能被接受。DEVSUITE提供了灵活的工作流程定制和管理能力,图形化工作流引擎将工作流图形转变为工作流脚本,因此项目管理员可以在图形化界面中,轻松快速的定制项目组项目管理流程。如上图中红色框内为需求的工作流程,用户可以根据公司的实际业务流程,定制符合需要的需求流程图,系统可以同时定义多条项目工作流程,以适应不同规模、不同类型的项目。方法四需求有效驱动开发与测试在理想的研发管理平台中,需求管理与所有规划、开发、测试管理过程相集成。因此,需求的正规表达SPEC,以及围绕SPEC正在或将要进行的开发任务和测试任务,都能被纳入综合考虑的范畴,便于评估团队估算该变更造成的“牵一发而动全身”的潜在影响。有时,还要结合商业需求进行考量,为了赶上产品的最佳发布时机,有些变更将被拒绝。变更请求被批准后,与之相关联的开发、测试任务都会在系统中被一一标记出来,以提醒程序和测试部门的相关负责人,引发这些任务的需求已经变更,请他们做出相应的调整处理。在系统中跟踪这些任务的进展,可以实时掌握该变更的落实情况。变更完成后,也可以核算它对开发周期和费用的实际影响,与评估时的预测相对比,找出差异的原因,为将来更准确地评估提供参考。DEVSUITE提供了变更标识功能,通过变更标识子任务,我们可以选择受影响的开发、测试任务,建立变更标识子任务,该子任务将以旗帜形式反映到开发、测试任务中。变更标识子任务不但能够标识变更,还能够帮助团队进行变更反馈,通过文字记录和状态改变,任务负责人员可以将需求变更对于任务的影响及时回馈给需求管理人员。另外,对于需求实际改变的内容,需求负责人员可以创建变更推送子任务,通过邮件系统,可以将变更信息发送给该需求的干系人。方法五需求指导项目规划与执行纵使项目最初都有比较全面的计划,延期仍然会时常发生,即便是在管理机制比较成熟的大型研发企业中,跳票也不可避免。通常情况下,导致跳票主要有以下几点原因功能设计规划过多,很多又无法删除,如不增加开发时间,产品几乎不能完成缺乏有经验的管理或开发人员,不能准确估计工作量任务执行缺乏规范,开发人员随意更改功能设计,影响整体进度过高的人员流动率,导致知识的流失,任务不能及时跟进。针对以上问题,只要从量化需求入手,有序管理需求变更,用正规表达、可量化的SPEC来指导项目规划、编程和测试,就能把风险降到最低。基于结构化的SPEC集合,可以将项目分解为多个子项目,将SPEC直接分配到各自对应的子项目中,以此来规划和估算子项目的工作量。项目管理人员为每个子项目分配资源,安排优先顺序,确定项目里程碑。在项目执行时,可以为每一个SPEC产生出一系列开发任务。自定义的工作流机制确保每一个任务从提交到最终解决的生命周期都严格符合业务流程,保证任何时刻都有唯一的负责人、状态和截止日期。这样,不仅能规范产品研发过程,还能降低人员流动带来的风险。任务的流转及相关知识文档,如源代码、设计资源等,都得到系统完整的记录,还能与任务关联,便于追溯。一旦有人离开项目,接替的人员能够查看任务和文档信息,迅速弥补人员空缺。DEVSUITE需求管理视图提供产品版本树管理,产品经理可以创建新产品和版本,每个需求和功能点可以在多个产品和版本实现。通常一个产品的各个功能可能会分布在不同的项目中实现,项目经理如何在产品发布的时候知道每次发布实现了那些功能,各个功能点的负责人是谁,通过DEVSPEC视图提供的产品版本树功能,项目经理可以轻松的过滤出每个发布版本实现了那些客户需求。支持产品的版本规划,当收集到的需求经过评审等规定流程决策后,将需求与规划好的产品版本关联起来,通过产品版本视图可以直接追踪到需求与产品版本的关系,未决定开发的需求可以不设定版本,等决定后再关联相应产品版本。产品研发过程常见问题3跨部门协作困难产品研发在企业中是一项综合性的工作,存在着大量需要跨部门协作的工作,几乎需要所有的职能部门都将参与其中。据研究发现,目前企业中多达50以上的工作都适用于跨部门协作管理,而正如此却带来了部门协作困难、全局监控难、资源协调难等等各种各样的问题。这些问题几乎困扰着现在所有的研发企业,不管他们在组织方式上是采用项目结构、职能结构还是矩阵结构,跨部门协作困难的挑战无处不在。部门协作困难面临的挑战1缺乏对产品开发统一的认识首先,各部门对产品开发的成功标准缺乏一致的认识。比如技术部门认为只要产品顺利转入测试就成功了,测试部门只关注产品的检测与执行测试任务,质保部门理解的成功则是产品研发流程和质量的稳定,而市场部门则关注产品何时上市、销量如何。各部门在产品开发过程中缺乏一致的目标是带来跨部门协作困难的根源之一。更有甚者,产品开发被认为只是研发部门的事,其它部门只是义务配合一下,这与产品开发活动的本质就相差太远了。2缺乏有效的跨部门协同机制产品开发的主体是研发部门,每个部门却是各有所规,各有各的服务流程和工作规范,如果没有建立与营销、项目管理、测试、质保等部门建立有效的协同机制,对客户、市场的响应就会比较慢。同时,对于企业内容来讲,如果没有信息共享的工作平台,开展并行工程困难,开发周期长很难详细掌握各开发项目的进度,每个人在做什么,做到什么程度。企业外部同样如此,与客户、合作伙伴缺乏协同工作的信息平台,不仅异地协调困难,工作效率低且质量难以控制。3缺乏明确的产品开发流程缺乏明确的产品开发管理流程及系统控制手段,职责不明,执行较弱,每个人按照各自习惯做事,产品开发的品质控制很难到位。很多公司制定了产品开发流程,但它们的流程只是一些功能流程如硬件开发流程、测试流程的集合,而缺乏一个联合了所有的职能部门的集成的总体流程,这就象作战时缺乏总体的“作战地图”和“作战方案”,导致项目组如何开展工作,各部门如何参与到产品开发过程中缺乏统一部署和安排,临阵时间各行其是。4缺乏有效的项目运作原则和机制绝大多数的研发企业都会采用项目组的方式来负责产品开发。但是,真正有责有权、运作高效的项目组少之又少。更多的情况是,项目经理的角色更象是一个行政管理人员、记录人员和协调人员,而不是领导者,项目组并不是真正的跨部门小组,其权利和责任比企业普通的职能部门拥有的还要少,责任的划分模糊。企业在项目运作层面没有有效的运作原则和机制,一旦跨部门协作出了问题,部门之间就相互抱怨及推诿责任。5缺乏有效的手段进行绩效管理很多企业没有有效的手段进行绩效管理,工作量难统计,每一个人、每一个部门承担的工作没有系统的记录,做好做坏没有明显分别至少没有让员工真正有动力,所以缺乏阶段性的及时激励、奖惩等,导致企业无法通过绩效管理将压力层层分解和传递,无法支撑企业战略目标的实现。显而易见,产品开发是一个跨部门的系统工程,必须有一个跨部门、跨系统的平台对最终结果负责,协同各项活动,确保沟通、协调和决策的高效。如何使产品的研发过程规范、标准,但又不失灵活性,并利用工具进行有效的管控和协同,方能推出产品研发的良性发展,从而创造高效的研发能力,提升企业的核心竞争力。有效的跨部门、跨系统研发管理方法与工具TECHEXCELDEVSUITE产品研发管理解决方案是产品研发和项目开发团队量身定制的解决方案。方案通过一个平台实现了对需求、项目、计划、任务、开发、测试、质量等研发各阶段全过程的管理,为企业研发体系提供一套流程整合、可灵活自定义配置的标准管理平台。方法一协同管理平台DEVSUITE为所有角色提供了一个标准化、规范化的工作平台,产品经理能够通过需求和计划模块收集、整理和定位产品功能,经评审后规划到某个产品版本中研发中心和工厂的开发任务均按功能组织,开发人员能直接看到上游功能、其他部门的谁在与自己协作、以及未来的测试人员将是谁,从而实现跨部门工作,很好的解决了研发团队协作难的特点。我有哪些任务要处理谁分配给我了任务我需要做什么还有谁和我一起完成这个任务我的任务处于计划中的哪个阶段任务来自于哪个功能功能的具体描述是什么谁和我一起开发这个功能,其他人的开发进度如何平台一一给你答案方法二规范化的管理体系DEVSUITE开发管理过程体现了规范化的管理体系以及先进的管理理念,以需求为导向,覆盖了业务部门、研发部门以及各分支机构等所有涉及到产品研发的各职能部门,通过统一的开发管理流程,各职能部门均可以在一个平台下进行需求的录入、审核、审批、监控等操作,整个研发生命周期的每个环节都制定了详细的要求、模板以及操作规程,降低了过程中的信息损耗,建立了知识沉淀和共享的机制,既保证了需求过程中的信息共享,同时又提升了各职能部门协同工作能力。功能驱动的研发过程管理,保障团队高效协同方法三标准化的开发管理流程DEVSUITE帮助企业建立起一套规范化、标准化的开发管理流程,整个平台由统一的知识库和不同的工作流环节构成,同时灵活定制“跨流程自动化规则”,设定流程的出入口,及不同流程任务记录间的互操作关系。DEVSUITE提供相当灵
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年-惠州市中心人民医院招聘笔试真题
- 餐馆加盟转让合同范本
- 2024年北京大学法学院教学科研岗位招聘考试真题
- 2025至2030年中国智能型电动自行车充电器数据监测研究报告
- 2025至2030年中国易撕膜数据监测研究报告
- 家具零售企业数字化转型与智慧升级战略研究报告
- 锰渣综合利用企业ESG实践与创新战略研究报告
- 仿制药注册申报风险管理咨询行业深度调研及发展战略咨询报告
- 2025至2030年中国拉床数据监测研究报告
- 知识产权保护未来趋势与挑战共存
- 焓湿图的应用实例
- 2022-2023学年江苏省扬州市普通高校高职单招综合素质测试题(含答案)
- 小学科学教科版三年级下册全册课课练习题(2023春)(附参考答案)
- DB37T 4242-2020水利工程建设项目代建实施规程
- 学生班级卫生值日表模板下载
- 《是谁觉醒了中国》
- 劳务派遣服务方案与服务流程图
- 初一经典、励志主题班会PPT(共63张PPT)
- 儿童血尿的诊断思路
- 2022立足岗位秉承工匠精神PPT课件模板
- 第六章-政策过程及其理论模型-《公共政策学》课件
评论
0/150
提交评论