软件开发项目风险管理的几点体会
- 格式:docx
- 大小:14.93 KB
- 文档页数:10
软件开发项目的风险分析与控制一、引言在软件开发项目中,风险管理和控制是确保项目成功实施的关键因素。
本文将详细分析软件开发项目中常见的风险,包括项目需求变更、技术实现难度、人力资源不足、时间进度延误、预算超支风险、数据安全和隐私、法律和政策风险、以及质量控制问题,并提出相应的控制策略。
二、项目需求变更风险描述:在项目执行过程中,客户需求可能发生变化,这可能导致项目范围扩大、工作量增加,甚至可能导致项目失败。
风险控制:1.建立有效的需求管理流程,确保所有变更都经过正式审查和批准。
2.在合同中明确需求变更的处理方式和费用调整机制。
3.定期进行项目评审,及时识别和评估需求变更对项目的影响。
三、技术实现难度风险描述:由于技术实现难度高,可能导致项目延期、成本增加或质量不达标。
风险控制:1.在项目开始前进行充分的技术评估,确保技术可行性。
2.制定详细的技术实现方案,并进行充分的技术培训和准备。
3.建立技术攻关小组,对遇到的技术难题进行集中解决。
四、人力资源不足风险描述:项目团队人员数量或技能不足,可能导致项目执行困难。
风险控制:1.在项目开始前制定详细的人力资源计划,确保人员数量和技能满足项目需求。
2.建立有效的团队协作和沟通机制,提高团队工作效率。
3.根据项目进度及时调整人力资源分配,确保关键任务得到有效执行。
五、时间进度延误风险描述:由于各种原因导致项目时间进度延误,可能影响项目的整体进度和质量。
风险控制:1.制定详细的项目进度计划,并监控项目执行情况。
2.对可能导致延误的因素进行预测和评估,提前制定应对措施。
3.建立有效的进度控制机制,对延误的任务及时进行调整和优化。
六、预算超支风险风险描述:由于项目成本超出预算,可能导致项目无法按时完成或质量下降。
风险控制:1.制定详细的项目预算计划,并进行严格的成本控制。
2.对可能导致成本超支的因素进行预测和评估,提前制定应对措施。
3.建立有效的预算监控机制,对超出预算的费用及时进行调整和优化。
实用文档软件开发项目风险分析及控制措施1.软件开发项目风险分析及控制措施1.1 业务风险识别和分析项目风险是指在项目实施过程中可能出现的事件,导致实际结果偏离预期目标,从而给项目带来损失。
在该项目的建设过程中,软件开发阶段的风险较小,主要风险将集中在项目推广实施阶段。
影响项目推广实施的主要因素包括与本地现有系统的精准对接、各盟市数据整理的准确程度以及后期软件的整体运行维护。
因此,在建设过程中要充分考虑保障系统的稳定性。
1.1.1 业务风险识别和分析对策在应用过程中,可能会加重经办人员的工作量,造成经办人员不认真应用系统的情况。
这种情况一是会使系统无法正常快速应用,二是会拖慢系统的整体实施步伐。
实用文档1.1.2 网络安全风险对策在自治区级统筹的业务形式下,应用、数据集中部署,网络统一使用“金保”专网。
要建立预防机制,防备出现以下问题:a.在业务经办高峰期,服务器的承受压力过大,导致系统缓慢或者崩溃,无法经办业务;b.突遇网络问题,系统无法运行,各盟市无法正常经办业务;c.系统遭受到的木马攻击或漏洞攻击,导致系统崩溃或数据丢失;d.系统与外部系统的衔接不畅,造成外部不能及时传入数据,发生数据偏差。
实用文档1.1.3 数据安全风险对策系统涉及到单位信息、人员信息、基金信息,均为保密信息,要预防数据泄露的问题,加强数据传输安全。
1.2 业务风险对策和管理项目风险的对策和管理是指在项目实施之前,对项目可能出现的问题进行主动而系统的识别、评估并制定相应的应对程序及行动方案的过程。
目的是有备无患,降低风险因素,减少风险带来的损失。
项目风险管理计划由风险识别、风险评估以及风险应对三个部分组成。
风险事件人员相关影响级别应对措施领导层对项目的支持力度人员的变动领导层的支持直接影响项目能否成功高新成员应提前介入,交接后能尽快进入角色实用文档工作交接的过渡影响项目进度与质量高项目首次会议中要明确,双成员对项目的理解导致目标不一致或后顾之忧方签订项目章程关键成员对项目工作的投入中领导层在项目的全过程中对项目进行大力支持工作时间投入不足,影响项目进度与质量不是部门业务骨干,很难提升项目的优先级中需要部门领导层的支持,要求关键客户要由部门业务骨干担任把握业务需求提前进行计算机操作的培训,提升成员的能力高最终用户的计算机水平较低,需要进行详细的操作指导网络安全是信息化系统中至关重要的一环,其脆弱性和风险性分析至关重要。
软件开发项目中的进度风险分析与控制在软件开发项目中,进度风险分析与控制是非常重要的一环。
没有合理的进度规划和风险控制,项目很容易延期或出现其他问题。
因此,本文将就软件开发项目中的进度风险进行深入分析,并提供相应的控制方法。
一、进度风险的定义进度风险指的是软件开发项目在预定时间内无法按照计划完成的潜在风险。
这些风险可能来自于各种因素,如需求变更、技术难题、人力不足等等。
只有充分了解和掌握这些风险,才能够更好地进行控制和应对。
二、进度风险分析1. 需求变更风险需求的变更是软件开发项目中常见的风险之一。
项目开始后,客户或者利益相关者可能会提出新的需求或者修改已有的需求。
如果这些变更没有得到合理的控制和管理,就会导致项目进度的延误。
因此,项目团队需要及时评估需求变更对进度的影响,并与客户进行充分沟通和协商。
2. 技术难题风险在软件开发过程中,技术难题是无法避免的。
可能会遇到一些复杂的技术问题,导致开发进度受阻。
为了降低这种风险,项目团队需要提前进行技术调研和风险评估,并制定相应的解决方案。
同时,团队成员之间需要良好的沟通和协作,及时解决技术问题,保证项目的正常进行。
3. 人力资源风险软件开发项目需要一支高效、专业的团队来推动项目的进展。
然而,人力资源风险可能会影响项目的进度。
例如,项目成员可能会因为健康问题、离职等原因离开团队,导致项目进度的延误。
为了降低这种风险,项目管理者需要做好人力资源的规划和管理,保持团队的稳定性。
三、进度风险控制1. 风险预测与评估项目团队需要对可能的进度风险进行预测和评估,找出潜在的风险点。
可以利用历史数据、专家意见等方法来进行风险分析,制定相应的应对策略。
这样可以在项目开始之前就做好准备,降低风险对进度的影响。
2. 制定详细的进度计划进度计划是项目成功的关键之一。
项目团队需要合理地制定详细的进度计划,并在实施过程中进行监控和调整。
这样可以及时发现偏差,采取相应的措施来保证项目的按时完成。
软件开发项目风险管理的几点体会1.前言参与过大型软件项目的人都会认识到许多事情都可能出错,一但出错就可能给项目带来危害、损失或其它不利影响。
风险是在项目中发生的一系列事件或不利结果的可能性。
软件开发是一项高风险的活动,在项目开发过程的任何一个阶段都可能存在风险。
采取积极的风险管理方式,可以使项目进程更加平稳,可以获得很高的跟踪和控制项目的能力,可以规避、转移风险,或缓解风险带来的不利影响。
风险管理是对项目风险进行识别、分析、应对和监控的过程,是项目管理中很重要的管理活动,有效的实施软件风险管理是软件项目开发工作顺利完成的保证。
风险管理的达成必须包括三个要素:首先,在项目开发计划中必须制定风险管理计划;第二,在项目预算中必须包含解决风险所需的经费;第三,评估风险时,风险的影响也必须纳入项目计划中。
下面就软件开发过程中经常发生的风险,谈谈我们采取的预防措施。
2.需求不明确需求不明确是软件开发过程中经常可能遇到的问题,这类问题往往表现在需求范围未界定、需求未细化、需求描述不清楚、需求遗漏、需求互相矛盾等多个方面。
在软件开发过程的生命周期各阶段中,需求不明确所造成的浪费是最大的,必须尽早尽可能解决。
确定用户需求是件非常困难的事情,我们常常从以下几个方面着手处理需求不明确问题:(1)让用户参与开发提供一个协作开发环境,让用户参与开发过程。
如果条件不允许,至少应该在每次迭代的需求分析和系统测试阶段,让客户能够参与开发。
在选择参与开发过程的用户时,一方面,要尽可能争取精通业务或计算机技术的用户参与。
另一方面,如果开发的产品要在不同规模、不同类型的企业应用,应该选择具有代表性的用户参与。
仅仅让用户参与是不够的,应该采取一定的激励措施,提高用户参与的积极性。
(2)开发用户界面原型用户通常不善于精确描述自己的业务需求,系统分析员需要借助白板、白纸等沟通方式,帮助用户清楚表述需求。
然后,开发一个用户界面原型,以便用户确认需求。
软件项目开发管理中常见风险及措施一、需求管理常见风险:1.需求变更频繁,导致项目延期或超出预算。
2.需求不明确,导致开发出的功能与用户期望不符。
3.客户需求与业务目标不一致,导致项目价值降低。
应对措施:1.确立明确的需求变更流程,所有变更需经过评估和批准。
2.定期进行需求评审,确保需求明确无误。
3.加强与客户的沟通,确保需求与业务目标一致。
二、技术评估常见风险:1.技术选型不当,导致项目难以推进。
2.技术难题无法解决,导致项目失败。
3.技术更新迭代快速,导致项目落后。
应对措施:1.在项目初期进行充分的技术调研和评估,选择适合项目的技术栈。
2.组建技术团队时,考虑团队成员的技术能力和经验。
3.持续关注技术动态,确保项目与技术发展保持同步。
三、人力资源规划常见风险:1.人力资源不足,导致项目延期。
2.团队成员技能不匹配,导致开发效率低下。
3.团队成员流失,导致项目中断。
应对措施:1.根据项目需求,合理规划人力资源,确保人力充足。
2.在招聘时,注重候选人的技能和经验,确保团队能力匹配。
3.建立健全的激励机制,降低团队成员流失率。
四、时间管理常见风险:1.项目进度延误,导致客户不满。
2.时间安排不合理,导致团队成员压力过大。
应对措施:1.制定详细的项目时间计划,明确各阶段的任务和时间节点。
2.定期进行项目进度评估,及时调整时间计划。
3.为团队成员合理安排工作任务,避免过度压力。
五、预算管理常见风险:1.预算超支,导致项目成本增加。
2.预算分配不合理,导致资源浪费。
应对措施:1.制定详细的预算计划,明确各项费用的预算金额。
2.定期进行预算审查,确保预算使用合理。
3.优化资源配置,避免资源浪费。
六、沟通机制常见风险:1.信息传递不畅,导致工作重复或遗漏。
2.沟通不及时,导致问题无法得到及时解决。
应对措施:1.建立健全的沟通机制,确保信息畅通无阻。
2.定期召开项目会议,及时分享项目进展和问题。
3.鼓励团队成员之间的沟通和协作,共同解决问题。
软件项目开发过程中的主要项目风险及对策在软件项目的开发过程中,项目风险是无法避免的。
如果不加以应对和管理,这些风险可能导致项目的延误、超出预算或者质量问题。
为了确保项目的成功,开发团队需要提前识别和评估主要项目风险,并采取相应的对策来解决这些风险。
本文将讨论软件项目开发过程中的主要项目风险,并提供相应的对策。
1. 需求变更风险在软件开发过程中,需求的变更是常见的。
需求变更可能导致范围蔓延、进度延误以及影响团队的工作效率。
为了减少需求变更风险,项目管理团队应该与客户建立良好的沟通渠道,确保需求的准确理解。
同时,应该制定严格的变更控制程序,确保每一个需求变更都经过评估和批准。
2. 人员变动风险软件项目通常需要多个团队成员的合作。
但是,在项目的不同阶段,人员的变动是很常见的。
人员变动可能导致沟通不畅、工作延误以及知识流失等问题。
为了减少人员变动风险,项目管理团队应该制定合理的人员管理计划,确保人员变动对项目的影响最小化。
此外,应该建立项目知识库,记录和共享项目相关的知识和经验。
3. 技术风险在软件项目开发过程中,技术风险是无法避免的。
技术风险可能来源于技术选型不当、技术难题无法解决等问题。
为了应对技术风险,项目团队应该在项目初期进行技术评估,确保选择适合项目的技术方案。
同时,项目团队应该及时跟踪技术发展,学习新技术,以便在面临技术挑战时能够有所应对。
4. 进度风险软件项目的进度是非常关键的。
进度延误可能导致项目推迟交付、增加成本以及影响客户满意度。
为了减少进度风险,项目管理团队应该制定合理的项目计划,并严格按照计划执行。
同时,应该建立有效的进度跟踪机制,及时发现并解决进度延误的问题。
5. 资源风险软件项目所需的资源包括人力资源、物质资源以及财务资源等。
资源的不足可能导致项目延误或者质量不达标。
为了减少资源风险,项目管理团队应该在项目初期进行充分的资源评估,明确需要的资源类型和数量。
同时,应该与相关部门或者供应商建立良好的合作关系,确保资源的及时供应。
软件开发过程中的质量风险管理研究在软件开发过程中,质量风险管理是一项关键任务,它有助于保证软件产品的质量和可靠性,避免风险对项目进展和最终交付的影响。
本文将探讨软件开发过程中的质量风险管理,并提供一些有效的管理方法和实践。
首先,了解什么是质量风险。
质量风险是指软件开发过程中对产品质量可能产生负面影响的潜在事件或条件。
这些质量风险可能包括技术风险、进度风险、人员风险、需求变更风险等。
质量风险的管理是为了减少其产生的可能性,以及降低其对项目和产品的影响。
一种常见的质量风险管理方法是风险评估,它可以帮助项目团队识别和评估潜在的质量风险。
在项目开始之前,团队应该制定一个风险评估计划,明确识别潜在的质量问题,并对其进行优先级排序。
对于每一个潜在的质量风险,团队需要评估其可能性和影响程度,并为其制定相应的应对措施。
另一个重要的质量风险管理方法是风险控制。
风险控制是指通过采取预防措施和监控手段来降低质量风险的发生概率和对项目的影响。
预防措施可以包括加强项目管理、制定严格的开发规范和流程、提供培训和教育等。
监控手段可以包括定期进行风险审查和评估、使用质量度量指标进行监控等。
此外,沟通和协作也是质量风险管理的重要方面。
团队成员之间的沟通和协作可以帮助识别和解决质量问题,及时共享信息和经验,提高团队的整体能力。
团队应该建立有效的沟通渠道,确保信息流通畅,并且定期进行团队会议和交流,及时解决项目中的质量问题。
在软件开发过程中,质量风险管理还需要注意以下几点。
首先,要进行合理的需求管理。
需求的不明确或变更可能导致质量风险的出现,因此需要对需求进行充分的分析和规划,并与相关各方进行充分的沟通和确认。
其次,要进行有效的测试和验证。
测试和验证是评估软件产品质量的重要手段,通过进行全面和细致的测试,可以有效避免潜在的质量问题。
最后,要进行持续的改进和学习。
软件开发过程中的质量风险是具有挑战性的,项目团队应该保持持续的改进意识,并从项目中的经验和教训中总结教训,以便提高质量风险管理的能力和水平。
软件工程中的软件工程项目风险与风险管理软件工程项目是指由软件工程师及开发团队合作完成的软件开发工作。
然而,在软件开发过程中,会面临各种风险,这些风险可能会影响项目进度、质量和成本,甚至可能导致项目失败。
因此,软件工程项目风险管理成为保障项目成功的重要环节。
本文将深入探讨软件工程项目风险的来源、分类以及常见的风险管理策略。
一、软件工程项目风险的来源1. 技术风险:软件开发过程中,如不合理的技术选型、技术难题以及技术实现的不确定性等因素都可能导致技术风险。
例如,选择不成熟的开发工具或框架、技术人员技术不足等。
2. 需求风险:需求的不明确或变更频繁可能导致项目进度和计划的不确定性,从而产生需求风险。
例如,用户需求定义不明确、需求变更无法有效控制等。
3. 资源风险:包括人力资源和技术资源的不足,如项目人员流失、硬件设备故障等。
这些都会导致项目执行过程中的能力和资源缺失。
4. 进度风险:软件项目的进度可能受到外部环境变化的影响,也可能受到内部团队沟通、协作等问题的制约,从而导致进度风险。
例如,项目资源分配不合理、沟通不畅造成的进度延迟等。
5. 成本风险:软件工程项目在开发过程中,如果无法准确估算成本,未能合理控制成本,将导致项目成本超支。
例如,忽略了人员培训、软件测试以及维护的成本等。
二、软件工程项目风险的分类根据风险发生的可能性和影响程度,软件工程项目风险可以分为高、中、低三个等级。
具体分类如下:1. 高风险:高风险指那些可能性和影响程度都很高的风险。
例如,技术选型不合适,在项目开发过程中可能出现严重的问题,导致项目无法按计划完成。
2. 中风险:中风险意味着某个风险的可能性和影响程度在中等水平。
例如,需求变更频繁,可能会导致项目进度推迟,但不会对整个项目的成功造成严重威胁。
3. 低风险:低风险表示某个风险的可能性和影响程度较低。
例如,项目资源分配不合理,可能会导致一些小规模的影响,但并不会对整体项目的进度和质量产生严重影响。
软件开发项目管理中的风险识别与控制在软件开发项目中,风险识别与控制是项目管理中必不可少的环节。
软件开发本身就是一个充满风险的过程。
所以,在这个过程中,项目团队需要警惕各种可能发生的风险,并且及时进行预测、分析、评估和控制,以确保项目的顺利完成。
本文将分别从风险识别和风险控制两个方面来探讨软件开发项目管理中的风险。
一、风险识别风险识别是软件开发项目管理的第一步。
在项目开始之前,项目经理应该与团队成员共同分析和识别可能出现的风险,以便事先规划和准备相应的风险控制措施。
常见的软件项目风险包括:1.需求变更需求变更是软件开发项目中比较常见的一个风险。
客户提出的需求可能会随时变化,需要项目团队不断地跟进和调整,以确保客户的要求得到满足。
2.技术风险技术风险是指与软件技术相关的问题,例如:新技术的尝试、技术缺失等。
这些技术问题往往需要开发团队有专业的技能和知识,以便能够有效地解决。
3.资源风险项目在进行时可能会遇到资源短缺问题,例如:开发人员不足、硬件资源不足等。
这些问题可能会影响项目开发进程和质量。
4.进度风险进度风险是指项目进度延误的问题。
在软件开发项目中,延迟可能会导致客户不满意,甚至可能影响到整个项目的完整性。
及时发现和控制进度风险非常重要。
5.质量风险质量风险是指与软件质量相关的问题,例如:测试不充分、开发工作质量不达标等。
这些问题可能会导致软件质量下降,从而影响用户满意度和公司的信誉度。
风险识别是一个非常重要的环节,帮助开发团队提前预见潜在的问题并采取措施来避免这些问题发生,提高项目的成功率和质量。
二、风险控制风险控制的目的是实施预防措施和应对措施,减少或消除风险发生的可能性,并尽量减小风险可能导致的影响和损失。
在软件开发项目管理中,风险控制可以从以下几个方面考虑:1.建立风险管理计划项目经理应该在项目开始之前,制定一份风险管理计划,包括风险识别、分类、评估、应对和监控等内容。
这样可以制定出可行的风险措施,全面而系统地控制风险。
软件项目管理学习心得体会软件应用软件产品项目管理学习心得体会1软件项目管理这门课程是我们软件工程测试技术专业学生的一门重要的课程,这门课程的开设必有其重要性。
软件项目管理的提出是在20世纪70年代中期的美国。
联合开发由于开发项目投资不能按时提交、超出预算、质量达不到消费者的要求等原因,70%的项目出现问题。
于是,软件开发者开始逐渐重视软件开发中的各项管理。
到了20世纪90年代中期,软件项目管理虽然不严的问题仍然存在。
软件项目管理和其他项目管理相比有相当的特殊性。
首先,软件是纯知识产品,其开发进度和纯度很难估计和度量,生产效率也难以预测和可以保证。
其次,软件系统的开发计划局限性也导致了开发过程中各种风险的难以预见和控制。
因此,项目管理对软件生产具有决定性的意义。
项目管理的定义是指一定的主体,为了实现其目标,灵活运用各种有效的手段,对执行的项目周期的各个阶段工作进行计划、组织、协调、指挥、控制,以取得良好经济效益的各项活动的总和。
软件目的是为了使软件项目能够按照预定的成本、进度、质量顺利完成而进行分析和的活动。
另外,进行软件项目管理有利于将个人开发能力转化成企业的开发能力。
企业的软件开发能力越高,表明这个企业的软件生产越是趋向成熟,企业越能够更稳定发展。
对于软件投资项目的学习,我首先放正了消极态度来学习,认真分清软件项目管理与关系计算机网络的关系和项目管理知识体系。
软件项目管理从头到尾包括9个知识领域、5个标准化关键步骤组和44个模块。
其中本学期我们学习的主要知识点有以下几个用例部分,如:项目的初始中项目立项、合同项目、内部项目、项目授权、初始项目范围、生存期模型等知识点;项目计划中其范围计划、时间计划、成本计划、质量计划、人力资源计划、沟通计划、风险计划、合同计划、配置管理计划、集成计划等用例;项目牵制执行控制中软硬件变更管理、范围管理、进度成本管理、挣值分析法、偏差管理、质量管理控制、团队管理和建设、项目沟通管理和风险管理等;房地产项目结束中合同结束、项目结束、项目总结、项目管理的建议等。
参与过大型软件项目的人都会认识到许多事情都可能出错,一但出错就可能给项目带来危害、损失或其它不利影响。
风险是在项目中发生的一系列事件或不利结果的可能性。
软件开发是一项高风险的活动,在项目开发过程的任何一个阶段都可能存在风险。
采取积极的风险管理方式,可以使项目进程更加平稳,可以获得很高的跟踪和控制项目的能力,可以规避、转移风险,或缓解风险带来的不利影响。
风险管理是对项目风险进行识别、分析、应对和监控的过程,是项目管理中很重要的管理活动,有效的实施软件风险管理是软件项目开发工作顺利完成的保证。
风险管理的达成必须包括三个要素:首先,在项目开发计划中必须制定风险管理计划;第二,在项目预算中必须包含解决风险所需的经费;第三,评估风险时,风险的影响也必须纳入项目计划中。
下面就软件开发过程中经常发生的风险,谈谈我们采取的预防措施。
2.需求不明确需求不明确是软件开发过程中经常可能遇到的问题,这类问题往往表现在需求范围未界定、需求未细化、需求描述不清楚、需求遗漏、需求互相矛盾等多个方面。
在软件开发过程的生命周期各阶段中,需求不明确所造成的浪费是最大的,必须尽早尽可能解决。
确定用户需求是件非常困难的事情,我们常常从以下几个方面着手处理需求不明确问题:(1) 让用户参与开发提供一个协作开发环境,让用户参与开发过程。
如果条件不允许,至少应该在每次迭代的需求分析和系统测试阶段,让客户能够参与开发。
在选择参与开发过程的用户时,一方面,要尽可能争取精通业务或计算机技术的用户参与。
另一方面,如果开发的产品要在不同规模、不同类型的企业应用,应该选择具有代表性的用户参与。
仅仅让用户参与是不够的,应该采取一定的激励措施,提高用户参与的积极性。
(2) 开发用户界面原型用户通常不善于精确描述自己的业务需求,系统分析员需要借助白板、白纸等沟通方式,帮助用户清楚表述需求。
然后,开发一个用户界面原型,以便用户确认需求。
用户界面原型的作用仅仅是收集用户需求,不应该再作它用,也不要给用户造成系统快要实现的错觉。
(3) 需求讨论会议对于用户分布广、用户量大的项目,要全面收集用户需求,往往很困难,通常采取需求研计会议方式进行需求确认。
通过在会议前几周调查各地、各部门用户需求意见,然后集中各地或各部门的用户代表,举办一次需求研讨会,通过会议方式收集需求。
本方法适合于具有一定信息系统使用经验的用户。
(4) 强化需求分析与评审首先,需求分析是项目成功的基础,需要引起足够的重视,并分配充足的时间和人力,要让有经验的系统分析员负责,切忌让项目新手或程序员负责。
其次,要进行需求评审,尽可能让用户参与需求评审,不要让需求评审流于行式。
第三,也是最重要的一点,通过评审的需求规格说明书,要让用户方签字,并作为项目合同的附件,对双方都具有约束力。
在公司内部要将通过评审的需求规格说明书,纳入配置管理。
3.项目缺少可见性当一个项目经理或一名开发者说已经完成了80%的任务,您必须保持审慎的态度。
因为剩下的20%可能还需要80%的时间,甚至永远都不能完成[1]。
软件开发项目,往往在项目进度和软件质量方面缺少可见性,项目越缺少可见性,项目就越难以控制,项目就越有可能失败。
我们可以通过迭代开发、技术评审、持续集成来增强项目的可见性。
(1) 迭代开发采用迭代的开发模型,将产品的交付过程分为多个阶段,按照功能递增式交付。
以下是一些典型的迭代:一次简短的先期迭代,以建立规模和前景并确定商业理由;一次精化迭代,其间将为稳定的构架划定基线;一次构建迭代,其间将实现用例并充实构架;几次产品化迭代,将产品转移到用户群。
每次迭代,都要充分接收用户的评审意见,以便为自我纠正。
渐近式的功能交付,有利于降低开发人员的压力,增加用户的满意度,有利于增强项目的可见性,是最好的进展报告。
(2) 技术评审技术评审是确保软件质量的重要环节,技术评审包括代码走查、会议评审和同行专家评审。
代码走审可以是开发人员之间的交叉审查,或者是高级开发人员对普通开发人员的审查;会议评审一般应至少每两周进行一次,每次评审时间不宜太长;同行专家评审包括技术和业务两个方面的专家,经常性地让精通业务的用户专家参与项目评审,是项目成功的重要保证。
另外,充分利用质量审查的工具软件,也有利于提高代码质量。
例如:在Eclipse开发环境中,可以集成Findbug、Checkstyle、PMD插件检查代码编写质量。
(3) 持续集成持续集成能够把最终的一次大规模的集成调试过程分散到项目开发时间表的每一周、每一天、甚至每个小时。
让项目中的各个人员都能够随时掌握当前的整体进度,并迅速发现集成过程中出现的问题并进行解决[1]。
开发小组应制定持续集成的制度,一般情况下每日构建一次,可以利用Ant等构建工具进行Java应用程序的构建。
小组成员应在每个功能开发完成后,及时向版本控制系统(如CVS)提交代码,而且不应该向版本控制系统提交有问题(编译通不过)的代码。
每日构建、持续集成,让项目进度跟踪工作更加容易。
当项目小组每天重新编译系统时,已完成与未完成的功能清楚可见,小组成员能够简单地从软件的表现知道距离整体完成还有多远。
4.新技术引入技术创新是一种具有探索性、创造性的技术经济活动。
在开发过程中引入新技术,不可避免地要遇到各种风险。
通过T形软件开发、充分论证、多阶段评审、同行经验等措施可降低新技术风险。
(1) T形软件开发在项目开发早期,开发小组应该建立系统的架构,解决关键技术难题、开发系统的基础构件,并对系统所需要应用的技术做深度探索。
例如:基于JavaEE5构建全国联网售票系统,涉及到分布式事务处理、海量数据存储、异构平台互连等关键问题,应该优先处理这些问题;对开发所涉及到的EJB3、JSF、JBoss Seam、Eclipse RCP等技术,要做深度探索。
图1 在第一阶段以“T”形开发系统骨架[2]越是技术复杂度高的项目,就越应该早地处理技术难题。
如果在项目开发的中期或后期才发现架构有问题或是关键技术难题不能解决,则为时已晚。
(2) 充分论证新技术开发是探索性很强的工作,潜在着许多失败的风险。
在可行性分析阶段,要广泛搜集相关信息,设计多种可行方案,进行充分论证。
在制定决策时,情报的数量和质量致关重要。
掌握的信息越多、越准确,才能作出正确的的决策,项目失败的风险也就相对减少;反之,承担的风险就会增大。
(3) 同行经验针对新技术,由于没有经验可借鉴,因此在探索过程中要充分利用互联网,通过搜索同行经验,往往事半功倍。
要充分利用世界日益平坦化的优势,对于不能尽快解决的问题,可以先放一放,可能过不了几天,网上就有相类似问题的解决方案了。
5.技术兼容性风险硬件产品之间、系统软件(操作系统、中间件、数据库管理系统)与主机设备之间、系统软件之间、应用软件与系统软件之间以及应用软件之间,都可能存在兼容性问题。
往往系统集成的项目越复杂,兼容性问题就越有可能存在。
(1) 设计先行在做系统的总体设计方案时,务必把好相关产品的选型关,确保网络、主机、系统软件与应用软件之间不要存在较大的技术兼容性问题。
在网络平台建设方案中,明确相关设备的技术参数和配置要求。
(2) 售前产品测试在做项目招投标工作时,要求投标方在售前提供产品兼容性测试,以避免在项目实施过程中才暴露技术兼容性问题。
涉及应用软件开发的集成项目,要在开发工作的早期,做技术兼容性测试,以避免在项目开发后期才暴露技术兼容性问题。
例如,我们在开发深圳市汽车客运站售票及站务联网调度系统时,为了确保技术兼容,在做硬件招标时要求小型机设备厂商提供售前技术兼容性测试工作,并将测试结果做为评标指标。
在深圳市软件测试中心对IBM、SUN、HP三家公司提供的小型机进行测试时,暴露了许多应用软件、应用服务器、数据库和操作系统之间的技术兼容性问题,如果这些问题在系统实施时才暴露或处理,势必会拖延项目进度。
6.性能问题由于先期设计不足,性能问题往往在系统切换或新系统使用一段时间后暴露。
出现性能问题往往要进行大量的优化工作,甚至局部的或全面的重新设计。
无论是用户还是开发者,谁都不希望出现性能问题。
(1) 性能规划在系统设计时,应做好前期做性能规划,对可能出现性能问题的环节做到充足的估计。
在做数据库设计时,应争取DBA参与。
另外,在技术方法方面,尽可能采取一些性能优化模式,如DTO、AJAX、延迟加载等,尽可能在开发过程中解决了性能问题。
不至于到了项目后期才解决性能问题,既费钱又费时。
(2) 性能测试在开发过程中,要重视性能测试和压力测试,尽可能模拟现实使用环境,搭建测试平台。
另外,由于开发环境的计算机往往比生产环境的计算机配置高,在做测试时应尽量找一些配置低的机器、较小的网络带宽进行测试。
(3) 充足的调试时间在项目开发计划中,为后期性能优化留有余地。
在对系统进行性能优化后,要进行性能测试和压力测试,可能还要做几次回归测试。
因此,应该留有充足的时间和人力。
7.仓促上线在项目实施过程中,系统切换上线环节最容易出纰漏。
项目好不容易开发完成了,却在最后最后时刻功溃一匮。
如果项目小,影响面窄倒不怎么重要;如果是影响面大的项目,则千万不可出现问题。
在系统切换前,应充分考虑各种可能出现的问题,做好风险对策。
(1) 应急预案面对各种不可预知的风险,要做好应急预案。
正常运行的车站售票系统在春运、旅游黄金周,都会做好应急预案。
新系统切换时,更应该做好应急预案。
应急预案中应做好最坏的打算,售票系统不能正常工作时,准备手工票就是最坏的打算。
(2) 分步切换为了减少风险的影响,可以做系统分步切换的方案。
例如:售票系统在切换时,往往用新系统售预售票,或者是用新系统售长途车站,用旧系统暂时售短程票。
待新系统运行稳定后,再全面切换到新系统。
针对多个用户单位的系统切换,也可分单位进行。
(3) 交叉培训新旧系统切换过程中,用户都存在适应过程。
除了在切换前做好操作培训外,还要在新旧系统切换过程中做好交叉培训。
让用户提前一些时间上班,让早班的用户在交班时培训中班的用户,中班的用户培训晚班的用户。
做好交叉培训能够让系统平衡过渡。
8.可用性问题软件的可用性包括软件的使用是不是高效、是否容易学习、是否容易记忆、是否令人愉快、是否不易出错等诸多因素。
往往由于软件的可用性差,导致用户不满意,甚至被市场淘汰。
在项目开发中应注意可用性问题,避免软件出现可用性方面的风险。
(1) 了解用户到用户工作现场,了解目标用户使用软件的真实目的,从用户的角度、从用户的立场出发,了解如何通过软件系统替代用户的业务处理流程中,最繁琐、最容易出问题、或者是大量重复劳动的环节,让软件提高用户的工作效能和效率。
例如:售票系统中,使用频度最高的界面是售票界面,售票员最关心的是钱不要出错(多了没收、少了要赔),因此,应收款和找余字体的显示应该突出、醒目;同样,票价和到达站也应该较为突出显示。