欢迎访问发表云网!为您提供杂志订阅、期刊咨询服务!

软件开发项目总结大全11篇

时间:2023-02-28 15:44:33

绪论:写作既是个人情感的抒发,也是对学术真理的探索,欢迎阅读由发表云整理的11篇软件开发项目总结范文,希望它们能为您的写作提供参考和启发。

软件开发项目总结

篇(1)

2项目管理在软件开发中的应用现状

在二十世纪六十年代中期,人们发现了在开发软件过程中存在着很多问题,具体的问题表现在以下两个方面:一方面,不规范的生产过程;另一方面,不重视管理工作。为了能够有效解决软件开发过程中存在的问题,人们开始尝试利用过程管理方法。但是到了二十世纪八十年代,还是没有制定管理软件开发过程相关标准。近几年来,在信息技术快速发展的背景下,人们采取项目管理来控制软件开发的质量、软件开发的成本等,以此确保软件开发的质量和成本等因素,符合当时的既定标准。在软件开发过程中,每一个项目组的不同成员都应该承担不同的任务,并且企业管理者应该要求他们要在规定的时间内完成自身的任务,这种明确分工制度,有助于提高员工的工作效率。

3项目管理在软件开发中的应用

每一个软件开发项目都要经过以下几个阶段:提出问题、研究可行性、分析需求、测试等。因此项目管理工作应该贯穿于软件开发的整个过程。

3.1可行性研究

无法开发哪一个项目,都需要进行可行性分析与研究。通过利用项目管理来研究软件开发项目可行性的目的在于:在最短的时间内确定软件开发项目是否具有开发的价值。其中可行性研究的内容包括:

1)、研究技术的可行性。其主要是指:要合理地分析开发项目的功能与性能,分析其中所隐藏的技术风险。

2)、研究经济的可行性。其主要是指:估计所开发的项目给企业带来的经济效益,然后依据所估算的经济效益,确定该项目是否具有投资的价值。

3)、研究社会的可行性。其主要是指:分析此项目的运行方式是否正确,分析当前的人员技术水平以及管理制度是否具有可行性。

3.2软件项目估算

在软件开发过程中,首先要规划软件开发项目,如此便于项目管理人员制定切合实际的估算方案。规划软件开发项目的内容主要包括:明确软件开发的目标、明确软件开发过程中需要用到的各种资源、明确软件开发的进度等。在软件开发过程中,估算起着非常重要的作用。通过估算可以保证软件项目在规定的时间内完成,也可以确保软件项目的成本未超出预算。在估算资源、成本以及进度的时候,要依据自身丰富的经验以及相关的数据。但是当前所使用的估算方法较为单一,此种估算方法容易增加估算风险。对此,研究人员应该努力研究出更多科学、有效的估算方法。

3.3软件项目开发人员的管理

在开展软件项目开发人员管理工作的时候,首先要合理安排人员。通常情况下,是由多个小组成员共同完成软件开发项目。在具体安排人员任务的时候,要依据每位人员的优势进行,并且要明确小组内每一位成员的工作任务以及工作目标。在软件开发过程中,要确定不同的责任人,比如:项目经理、开发经理,并且为每一个小组安排一名组长,如此有助于确保软件开发项目的顺利完成,同时保证所开发出来的软件属于高质量产品。

篇(2)

0引言

风险无处不在,它在任何软件开发项目中都有可能发生。风险有几种形式:自然灾害、安全漏洞、人力资源缺失、第三方供应商问题、金融危机、不稳定的商业环境和项目失败。因此,在进行软件开发前,工程师应该制定一个风险管理计划。该计划涉及风险评估和风险控制,工程师应列出软件开发过程中可能发生的问题,并列出这些问题的解决方案。这样,即使软件开发过程中遇到问题,风险管理可以帮助把有害影响最小化,从而避免软件开发项目的失败。然而,并不是每个人都关注风险管理,人们也很容易忽视风险管理的影响。实际上,风险管理对于软件开发项目非常重要,因为风险是影响项目成功的重要因素。因此,本文试图通过对文献的分析,找出一些有效的风险管理方法,让开发人员了解风险管理的意义。

1文献综述

风险管理是项目成败的关键因素,也是项目管理的本质。因为风险管理可以帮助开发人员发现项目的威胁,并将其最小化(Alhawarietal.,2012)。此外,成功的风险管理可以帮助项目经理按时交付项目(Grantetal.,2006)。有效的风险管理需要找到风险,而不是否认风险、隐藏风险(GrayandLarson,2008)。风险管理有五个主要阶段,即风险规划、风险识别、风险评估、风险响应、风险监控与沟通(Lester,2014)。项目团队应该关注风险响应、监控和沟通。响应意味着控制,它指的是制定一个风险管理计划,将风险识别并按级别排序。监控包括标记一个已知的可能发生的风险,并改变该风险的可能性。沟通包括让项目团队中的所有人都知道风险管理的结果。风险响应、监控和沟通对于风险管理过程是必要的。项目团队聚在一起讨论并制定最新的风险管理计划,能提高按时完成项目的机会。Otniel、Nicolae、Claudiu(2012)提出通过对软件开发项目的分析,发现项目管理的本质是风险管理,而风险管理的方法有多种,最有价值的方法是评估方法和管理方法。评估方法将风险管理视为事后评估过程,该方法旨在找出导致项目失败的原因。

2分析

2.1风险管理的意义

风险管理是项目管理过程的关键因素之一。有些风险是不可避免的,但风险管理可以解决问题。风险管理的主要功能是,如果在项目开发过程中发生较大的风险,风险管理将有助于控制风险,减少对项目的负面影响,以避免项目失败。它还可以帮助项目团队按时完成项目。然而,有些人认为在软件开发项目的过程中进行风险管理是浪费时间和不必要的。我不同意他们的观点,因为风险是影响软件开发项目成功的一个重要因素,有效的风险管理可以处理风险,而不是让项目一定成功。

2.2软件开发项目中风险管理的基本步骤

软件开发项目中风险管理有五个主要步骤。首先,开发团队应该制定风险计划,在风险管理过程中准备好所有的事情,例如定义项目经理和项目团队成员的角色和职责。下一步是识别和分类风险,然后在软件开发项目中标记这些风险。在此之后是风险评估,它与风险分析类似,项目团队成员应该深入了解风险。风险响应是这5个步骤中最重要的,在这5个步骤中,软件开发的项目团队成员应该找到应对风险的解决方案。最后是风险监控和沟通步骤,这一步意味着对风险进行沟通和报告,让所有开发项目团队成员了解关于风险管理过程的最新信息。

3风险管理的两种有效方法

篇(3)

中图分类号:G434 文献标识码:A 文章编号文章编号:16727800(2014)001019102

基金项目基金项目:西华大学软件工程特色专业项目(10TSZY317)

作者简介作者简介:唐剑梅(1975-),女,西华大学数学与计算机学院软件工程系讲师,研究方向为软件工程、信息检索技术。

0 引言

作为校级特色专业,笔者所在学院的软件工程系近年来积极推进特色专业建设进程,设有软件开发、软件测试及移动软件开发3个专业方向。在西华大学特色专业建设基金的资助下,各专业方向的课程体系建设日趋完善。由于实践教学贯穿于高等人才培养的全过程,是提高人才培养质量、实现高等教育目标的关键环节[1],软件工程学科和软件产业不断发展,以及全国对高素质软件人才需求量激增的形势下,针对软件工程学科实践性极强的特点,学校较大幅度地增加了实践类课程和环节所占的比例。“移动软件开发项目实训”是近年来新开设的移动软件开发方向学生必修的一门很重要的专业实践课程,这门课将为培养更加符合社会实际需要的移动软件开发人才打下坚实基础,因此迫切需要研究和探索该课程的教学方法,以更有效的手段和方式提高教学质量。本文将从分组安排与项目选题、教师课堂讲授环节、学生实践实施环节、课程考核方式等方面进行研究。

1 合理分组,严格筛选项目选题

“移动软件开发项目实训”课程开设在大三下学期。此时学生已经学完了大多数基础及专业课程,移动软件开发方面也已经具备了Android平台下的开发基础。对于该阶段的学生来说,急需在大四的专业实习及毕业设计到来之前做好更充分的实战准备。因此,该课程的教学目标是:使学生学会移动软件开发项目的需求分析、设计、实现及测试相关技术,能将之前学到的点状知识和技能集结到面,同时整合训练各种移动软件开发所涉及到的主要技能点,为学生将来从事实际的移动软件开发工作做好技术准备。本课程不再采用前期程序设计语言实训课所采用的单元式训练为主、综合训练为辅的方式,而是采用实战项目的方式,让学生完整地实现一个综合性的中小型项目。

在该课程的第一堂课上,由教师对整个课程的概况和目标进行介绍,并给出该门课程的进度安排,让学生了解整个项目实训流程。接着进行分组安排,采用自由组合的分组原则,要求每组2~3人,并推选一个技术和沟通能力较强的学生为小组长。相对教师直接指派而言,自由组合的好处是各小组成员配合更加默契,课后的交流合作更易展开。而且学生中已有自发组织的软件开发兴趣小组,这样他们可以保持兴趣小组的组合来进行实训,更易于出成果。分组结果可能存在某些小组成员开发能力都较强,但某些小组成员开发能力都较弱的情况。对于较强的小组,可鼓励他们发挥创新精神和主观能动性,多在设计方面出新点子,在项目中大量使用新技术。课程结束后可鼓励其将成果用于参加一些竞赛,如Android平台软件开发大赛等。对于较弱的小组,则可降低对创新性的要求,建议他们选择一些注重基本技术的项目,即适于边学边练进而对技术的应用达到一定熟练程度的项目,这样能减少学生的畏难情绪,激发学生的学习兴趣和动力,使学生对移动软件开发的学习由被动变为主动,以便更好地将书本上学到的知识转化为实战经验。教师对移动软件开发中的几大技术进行介绍,提出实训项目选题要求(如要求不重题、要具备实用价值、要涉及不少于3个较大的技术面的综合应用等),并安排各小组根据自身的兴趣进行课后选题调研。

第二次课则由各小组作选题报告,汇报选题背景及意义,阐述项目涉及的主要技术面,其余各小组可给出建议和意见。这样既可集思广益,又避免了小组选题内容过于雷同。由教师进行审核和点评,工作量或涉及的技术面达不到要求的小组需重新选题,直至题目通过为止。教师要严把选题关,避免出现小组找寻现成源码项目抄袭的现象。

2 学生分阶段提交项目文档,进行阶段汇报

实训项目在规模和技术上应是企业实际开发项目的浓缩,因此要求是一个完整的项目。按照软件工程的思想和规范,至少包括需求分析、软件设计、编码实现、软件测试、进度控制、项目成果这6个工作过程,再根据具体情况,添加版本控制、文档书写、项目等工作过程,从而更加真实地模拟企业项目[2]。结合移动软件开发项目的特点,以及各小组题目涉及的主要技术面,各小组可根据自身项目情况对项目进展进行阶段规划和裁剪。教师则按照所有小组都会经历的开发阶段收取小组提交的阶段项目文档,听取小组的阶段汇报,进而评估其开发进展情况。

题目确定后,课程内容分阶段完成,各小组需按阶段要求提交相关文档,主要阶段包括:

第一阶段:在完成系统背景及功能概述和需求分析后,提交需求规格说明书。

第二阶段:进行软件系统功能界面规划及总体架构设计,提交软件设计文档。

这两个阶段由小组成员共同讨论完成。学生在这两个阶段同步进行开发前的技术准备工作,包括Android平台及Eclipse工具的使用,以及相关技术知识的复习等。

第三阶段:小组长分配开发任务,各成员分别进行自己所负责模块的实现与测试。此阶段持续时间较长,过程中要经历期中检查,各组需提交各模块的开发文档及已完成部分的代码。

第四阶段:进行集成测试,提交测试报告。

第五阶段:进行系统优化与改进。

第六阶段:程序打包。

第七阶段:教师验收项目,检查实训报告。

第八阶段:期末项目验收答辩,答辩通过后整理提交相关文档及代码。

教师事先通过学校的课程中心网络平台建好“移动软件开发项目实训”课程网站,将编制好的课程阶段进度表上传提供给学生下载使用,以便学生对整个课程安排心中有数。学生提交阶段成果也通过课程网站进行。

3 教师及时进行阶段总结及讲评

在整个实训过程中,教师要在3个阶段集中进行阶段总结及讲评。课程第一阶段完成后,教师根据各小组提交的需求规格说明书进行一次集中讲评,及时发现问题并要求小组整改,避免因需求分析阶段的失误而导致最终软件不合要求的情况发生。

第二阶段完成后,教师根据各小组提交的软件设计文档再进行一次集中讲评,以便及时纠正小组设计中的不合理之处。

第三次阶段总结安排在期中检查后,在各组提交部分模块开发文档及代码后,教师及时发现学生技术上的问题,对各小组项目开发中的典型性技术问题进行汇总及解答。虽然各组开发设计的主要技术面不完全一样,但仍采用集中讲评,目的是对用到相关技术的小组起到引导和提升作用,同时让未使用到该项技术的学生学习借鉴。毕竟各组项目涉及的技术面有限,因此应尽量全方位提升学生的知识和技术面。

4 强调课后不断线

“移动软件开发项目实训”课程总共只有48个学时,每周3学时,共16周,因此要想学生在如此有限的课时内通过这门课能有更多的收获,课后的继续学习必不可少。因此,教师一定要对各小组提出项目开发课后不断线的要求,对于各自完成的部分,各小组成员要尽量抽出共同的课余时间聚在一起继续完成。笔者所在学院的实验中心未被上课占用的机房对本院学生是免费开放的,这为各小组课余在机房继续进行项目开发提供了平台。

移动软件开发技术发展非常迅速,新技术层出不穷,更新很快,教师既要引导学生采用课堂上学到的知识和技术进行项目的设计和开发,也要在课后随时关注行业最新进展,保持对新技术的敏锐触角,也即课后对新知识新技术的了解和学习要不断线。

5 强调过程考核,注重答辩环节

为了使学生在实训过程中能够真正地提高他们的实践动手能力以及分析问题、解决问题的能力,能够独立完成一定规模难度软件的开发,除教师自身要努力提高个人授课能力和改进实训方案之外,还要有一套完善的考核机制对学生在实训过程中的表现和成绩进行评价,使学生能够对自己有一个正确的认识,及时看到自己的不足和差距,并调整自己的学习方法[3]。移动软件开发项目实训是通过任务来驱动学习的,让学生能够在完成任务的过程中不知不觉地熟悉和掌握最主流的技术,因此有必要通过阶段性考核,给学生定期施加压力,有助于他们更好地完成最终的实训任务。

在课程进行的一、二、三、四阶段,学生均要提交相关的阶段文档材料;在课程的第七、八阶段,学生将提交实训报告、最终的源码及相关文档。这些可作为教师进行过程考核的依据,教师可据此对学生的阶段性成果进行考核。同时,为培养出具有良好职业素质和操守的软件从业人员,对学生的学习态度和纪律性也要严格要求并纳入考核范围,所以教师每次课上要对学生的出勤情况进行考核。同一小组的学生,教师要根据其表现和承担的开发任务量给予不同的成绩评定。

6 结语

“移动软件开发项目实训”是一门实践性很强的课程,能集中训练和提高学生进行移动软件项目开发和设计的实际技能,是移动开发方向的核心专业实践课程。根据该课程的实际实施情况来看,本文关于该课程的教学方法激发了学生的动手兴趣和积极主动寻求解决问题的热情。但由于该课程为近年新开实践类课程,其教学内容也应紧随移动软件行业的发展而不断更新,所以其教学方法和措施目前还处于初探阶段,尚需持续不断地总结、改进、探索和创新。后续可考虑从两方面着手改进:一是与企业合作,引进真实项目进行实训[4];二是设计开发一个基于软件交付过程的平台,以便在软件交付过程的各个阶段,由教师设定学习任务、考核指标,通过学生提交的成果, 教师输入判定的各个项目成绩,然后由系统自动生成学生最终的考核成绩,从而改进实训教学手段[5]。

参考文献参考文献:

[1] 王皖陵,吴光龙.计算机专业实践教学体系的建立[J].实验室研究与探索,2007,26(6):8587.

[2] 黄能耿.基于工作过程的软件实训项目设计[J].无锡职业技术学院学报,2010,9(2): 5961.

篇(4)

中图分类号:F426 文献标识码:A 文章编号:1671-7597(2014)07-0166-02

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展。因此,怎样对软件项目进行有效的管理是急需研究的课题,国内外专家学者也展开了相关的研究。

张家浩[2]以现代软件工程为核心,系统分析了项目管理领域中软件项目存在的问题,提出在理想和现实之间选择平衡点的建议和方法。林锐[2]编写的《IT企业项目管理:问题、方法和工具》一书为IT企业提供了专业性很强、行之有效的项目管理方法和相应的工具,解决了大多数IT企业的软硬件开发项目管理混乱、质量低下、进度延误、费用超支等问题。哈罗德・科兹纳[4]在《项目管理:计划、进度和控制的系统方法》一书中讨论了时间管理、冲突管理等问题,分析了影响项目成功的因素。石慧[4]运用动态规划的思想和网络计划的方法,利用马尔可夫链模型进行软件项目进度预测,对软件开发项目中的计划和控制应用进行研究,构建了一个并行的IT项目进度马尔可夫链预测模型。

由于缺乏相关的法规政策,软件项目开发的进度很大程度上取决于程序员自身的专业技能和职业道德水平。由于没有一个标准划分,管理上有很多问题不容易解决。本文对影响软件开发进度的主要因素进行分析,阐明了进度管理的重要性,并对具体的项目开发进度管理方法进行了探讨。

1 影响软件开发项目进度的主要因素

软件项目在开发过程中,有很多影响其进度的因素,内因、外因、主观、客观因素均有,情况比较复杂。为顺利管理软件开发项目进度,首先要对其中主要影响进度的因素有所了解。

1.1 80-20原则,未按原计划执行进度

80-20原则用在经济学中是指百分之八十的价值是来自20%的因子,其余的20%的价值则来自80%的因子。在计算机软件开发领域,我们可以这么理解:80%的项目工作可以在20%的时间内完成,而剩余的20%的项目工作需要80%的时间。

一般来讲,这剩余的两成工作属于比较难的技术关键部分,通常出现在后期。由于软件开发过程的不确定性,在任何技术关键点上都可能遇到难题,这与开发人员本身的分析、设计、编程风格有关,难以预测。在实际过程中,完全无法预测在什么时候会遇到(甚至可能在最后一步)能导致全盘重建的问题,因此原计划进度一般会调整。

1.2 预算、质量要求等的变更及适应性调整不及时

除了对项目本身的工作量估算不合理之外,设计人员的理解也可能造成问题。如开发人员理解的情况与实际情况有偏差,在没有充分沟通并确认时开展项目,过程中又会变更,在验收阶段可能才发现“审题错误”,造成资源浪费,同时与之相关横向、纵向项目的进度也会受影响,易产生“软件危机”。此外,其他问题如设备、人力不符合要求或调整,都会影响实际进度。

1.3 前期可行性分析不充分

由于项目参与人员的经验或素质原因,在项目开始前的准备不足,对项目状态信息收集的不足,没能好好把握项目的内容,容易造成对项目的了解不符合实际情况,加上高估自身工作能力,这就会对进度造成影响。如果没有充分的理解和准备,项目整体就会受到很大的影响,对项目本身的低估其实是对自身的一种高估,这样会使得预期的进度在实际进展过程中不仅很难实现,而且容易对工作人员的士气形成打击。

1.4 其他因素

假设、约束、风险等条件考虑“不周”造成项目进度计划中未考虑一些不可预见的事件发生。例如软件开发项目还会因为项目资源特别是人力资源缺失(如人员生病、离职、开发人员临时有其他救急任务)等原因,对项目进度控制造成影响致命影响。即项目及时完成是基于环境不变、任务不变、资源不变动等假设。软件开发主要是靠程序员来进行,软件体现出程序员的不同风格,因此程序员本身的主观性也会造成影响。在进度安排的时候应当适当配置应急预案,预留空余。

2 软件开发项目进度管理的目的

加强软件开发项目进度管理是软件开发行业发展的必要手段,也是必经之路。项目进度控制和监督的目的是:增强项目进度的透明度,及时发现项目中存在的问题并改正,对项目进展加以督促等,保证项目按时完成。

合理的管理手段可以加强项目的监督控制,对项目进度完成情况有一个大致的了解和评估,一旦出现问题可以及时沟通交流;遇到有落后进度情况及时督促,对有理解偏差的情况及时发现、及时纠正等。

软件开发时实施进度控制是项目管理的关键。一般一个部门同时会接多个项目,并行处理过程易造成混乱。通常,一个项目会由多部门的课题组共同负责,分项目之间横向并列或纵向承启,分部越多就越容易受影响。因此各分项目的准时能确保项目实施进度,对项目进度的合理管理可以起到协调作用。进度控制是项目管理过程中一项最重要的监控内容,负责对项目周期的整体把握与控制。通过软件开发项目进度管理方法,对各个分项目的进度进行控制,保证每个分项目各自按照项目计划书中的预期进度安排完成各自的内容,对于其中出现的问题及时予以纠正,从而保证项目整体的顺利完成。

3 软件开发项目进度管理方法

3.1 对项目本身充分了解

在制定项目计划书之前,首先应当对充分了解项目本身。项目进度控制的前提是有效地计划和充分掌握第一手信息,通过实际值与计划值进行比较,检查、分析、评价项目进度。对项目的充分了解是制定一个可行性分析报告的必要条件。除了了解项目相关技术内容、发展情况外,还应包括主要设备(工具软件)、项目参与者的情况,以合理分工、科学管理。

3.2 项目计划书与定期的进度报告

为了按期完成软件交付任务,目前软件开发单位陆续采取了很多控制进度的管理手段,其中最为广泛实用的就是项目计划书和定期的进度报告的提交。项目计划书和进度报告都是参考传统的工程项目管理方案,同时结合软件开发本身的特点进行的改进。作为项目进度控制的基准,项目计划书是项目的阶段成果完成情况的一个预期与管理依据。根据计划书中的时间安排,在项目的每个阶段点,项目负责人需要向相关管理人员(部门)书面提交阶段工作汇报与计划。在进度报告中,要有完成情况、存在问题、下一步安排等,实际上就是项目执行人员的对总结、分析、开发反思。

3.3 进度协调会

在软件开发项目中,一个项目通常由不同的项目团队合作完成,企业有专门的合同管理部门负责项目的分、转包、合同期与进度计划的协调。项目经理应该及时掌握这些情况,按计划进行计划进度与实际进度的动态比较,定期向客户提供可靠反馈。这通常是通过进度协调会来完成的,参与项目的每个团队负责人通过协调会了解相关方的进度、探讨问题,根据对方完成情况动态调整自己的进度。

3.4 阶段性审查与应急措施

软件开发项目进度管理过程需要从项目从准备到开始到进行到完成的各个不同阶段都采取不同的方法进行控制管理,全面把握项目进程。在准备阶段需要提供项目信息,同时确定项目研究进度;编制阶段计划和项目总进度计划;控制该计划的执行;而需求分析和设计阶段控制的任务是编制与用户的沟通计划、需求分析工作进度计划、设计工作进度计划,控制相关计划的执行等。最后,实施阶段进要求编制实施总进度计划并控制其执行;编制实施计划并控制其执行等。

在项目设计书中应当有关于应急预案的内容,这是我国现在工程管理、软件开发管理都比较容易忽略的一个内容,其本质是对项目过程中可能出现的干扰和影响的一个预测,对项目整体的合理把握。针对可能的问题,提出一定的解决方案,而在实际过程中,一旦出现问题,具体应当结合实际情况确定,避免产生相反的效果。

4 结束语

软件项目的开发与传统的工程项目具有很大的区别,软件本身具有无具体形态、缺乏标准等特点,开发过程不确定性大,主观因素影响对软件质量影响较大,因此进行项目进度管理探讨十分必要。本文通过总结进度管理上可能存在的问题,提出了可以采取的管理手段,希望能对实际工作有参考价值。

参考文献

[1]张家浩.软件项目管理―华鼎项目管理书库[M].北京:机械工业出版社,2009

[2]林锐,唐勇,黄曙江.IT企业项目管理:问题、方法和工具[M].北京:电子工业出版社,2005.

[3]Harold Kerzner.项目管理―计划、进度和控制的系统方法[M].杨爱华等译.第7版,北京:电子工业出版社,2012.

篇(5)

中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 13-0000-01

Demands Risk Analysis of Software Development

Sun Huiqing

(Wuhan Institute of Communication Command,Wuhan430010,China)

Abstract:This software development enterprises should be a greater problem.Based on the current status of the software industry's demand risk analysis,the demand for software development projects listed in sources of risk and analysis,summarized the causes of demand risk and the impact on the success of the project,software development projects is given in the demand for risk management and control recommendations.

Keywords:Software development;Demands risk;Risk analysis

一、对需求风险的理解

产品开发过程中,由于产品需求本身的隐含性、用户与开发者之间的沟通障碍,以及需求随着时间、用户的变化而变更等原因,可能使需求分析偏离实际需求而最终导致产品开发的失败,这种可能性称为需求风险。软件开发项目风险是指在软件生命周期中所遇到的所有的预算、进度和控制等各方面的问题,以及由这些问题而产生的对软件项目的影响。需求分析是软件开发过程中最初始、最基础的工作,也是最重要的工作之一,其成败将直接并最终决定软件开发的成败,并且呈倍增效应。需求分析的关键是使隐含的需求明确,使变更的需求可控,采用座谈会、需求调查表、需求启发、角色扮演等方法可以使需求明确化;采用面向对象的方法及UML工具、领域专家的全程参与、需求分级、二次开发接口等方法可以使需求变更处于可控范围内。实践证明,这些都是控制需求风险的有效方法。

二、需求的获取

(一)产品前景和项目范围。应该在软件开发项目早期,编写一份包括业务需求在内的前景和范围文档,并将它作为添加新需求和修改现有需求的指导。

(二)需求开发所需的时间。将每个软件开发项目中需求开发所耗费的实际工作量记录下来,这样就可以判断出需求开发是否充分,并可以改进未来项目的工作计划。

(三)需求规格说明的完整性和正确性。为了确保需求是客户真正需要的,应该以用户任务为中心,应用用例技术来获取需求。

(四)创新产品的需求。对软件开发项目中的第1个产品,不太容易把握市场对软件产品的反映。

(五)定义非功能需求。由于我们一般都会强调产品的功能,所以很容易忽略产品的非功能性需求。

(六)客户对产品需求意见一致。确定那些主要的客户,并采用产品代言人的方法,保证有足够的客户代表的积极参与

(七)未加说明的需求。一般的客户会有一些隐含的期望要求,但并未以文档的方式说明出来。尽量识别客户可能做出的任何假设。

(八)把已有的产品作为需求基线来源。把通过逆向工程发现的需求编成文档,让客户来评审这些需求,确保其正确性和相关性。

(九)根据需要提出解决方案。软件产品分析人员必须提炼出隐藏在客户提出的解决方案背后的真正意图。

三、需求风险的来源

很多开发项目在确定需求时都面临着一些不确定性。当在开发项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就能对项目的成功造成非常大的威胁。如果不控制与需求相关的风险因素,就很有可能产生错误的软件产品或者拙劣地建造预期的软件产品。每一种情况对产品来讲都可能致命的。

需求风险的来源包括:没有足够用户参与、不断增加的用户需求、模棱两可的市场需求、不必要的特性、过于精简的规格说明、被忽略的用户分类、不准确的产品开发计划。

软件开发项目风险中与客户相关的风险因素有:(1)对软件产品缺少清晰的认识;(2)对产品需求缺少认同;(3)开发者在做需求调查中客户参与不够;(4)市场中没有优先需求;(5)不确定的需要导致出现新的市场;(6)不断变化市场需求;(7)缺少有效的需求变化管理过程;(8)对需求的变化缺少相关分析等。

四、需求风险的管理

(一)制定风险管理计划。对于一个软件开发项目,你可以把控制风险的计划放在软件项目管理计划里面。但是一个大项目则需要有一份独立的风险管理计划,包括用于识别、评估、编写、跟踪产品开发风险的各种方法与途径。这份计划还应包括风险管理活动的角色和责任。通常情况下,项目小组为他们的关键活动制定了计划,但是在项目中并没有按计划去实施或者没能按实际情况进行及时的调整。一定要坚持按照所采取的风险管理活动计划去执行。项目的进度安排上也应该要给风险管理留出足够时间来确保项目并未浪费早期投资在风险计划制定上面。工程项目的工作分类细目结构中包括降低风险的活动、状态报告,与更新风险清单。和其它项目管理活动一样,需要建立起周期性的监控措施。保持对十来个有最大危害的风险的高度重视,并追踪降低风险措施的有效性。当完成一项活动后,重新评估那项风险的可能性和影响,更新风险清单和其它相关的计划。当控制住原本有很高优先级的风险后,必然有新条目会进入前十条。值得注意的是,不要仅仅因为完成了一项降低风险的活动而人为增加一条风险来进行控制。应当想想降低风险的方法是否真的减少了风险的危害,使它减少到了一个可以接受的水平。

(二)具体管理措施

1.首先要明确你当前软件开发项目面临的一些与需求有关的风险,不要把当前的问题当作风险,一定要是那些还未发生的事情。将风险的因素编写成文档,为每项需求风险推荐至少一种可能的降低风险的方法。

2.召集代表开发、市场、客户和管理各方面的涉众召开风险“集体研讨”会议。尽力找出更多与需求有关的风险因素。估计每项风险发生的可能性及其影响,两者乘积就是风险危害值。通过按风险危害值降序排列找到最高的五项风险。为每项风险安排一个负责人负责实施降低风险的活动。

五、结束语

软件开发项目中的需求风险是所有风险中的一个不可忽视的组成部分,对其认识的必要性不言而喻,应该重视对它的分析,对需求风险的合理管理也是软件开发项目项目管理中不可或缺的部分。

篇(6)

1.1 软件开发项目团队知识共享有效性概念

管理大师彼得·德鲁克提出[1]:“对于管理者来说,‘有效性’就是通过管理活动提高绩效,使组织能够由小变大,由弱变强;是管理者达到目标和绩效的必要手段”。我国学界对有效性的界定,借鉴《如何建立有效质量体系》中的解释,“是系统对外部环境所作的贡献”,此处有效性被界定为一种系统的概念。国内学者也在有效性的界定上做了很多工作,吕学清认为[2]:“要增强学校过程管理的有效性,管理工作必须讲效果、讲效率。”李春旺则提出虚拟企业内的知识共享有效性,是共享资源投入和效果输出的综合反映,在此基础上建立了知识共享效果和成本评价指标体系。”因此,软件开发项目团队知识共享有效性是一种持续有效性,它不仅强调着团队产出的有效性,更需要成员在良好的团队氛围下积极的知识共享态度和意愿,以保障软件开发项目团队绩效的有效提升。

1.2 软件开发项目团队知识共享有效性影响因素分析

随着团队管理实践的逐渐深入,知识共享有效性的系统观点逐渐被学者接受,知识共享的过程性和时滞性等过程因素也逐渐被纳入知识共享有效性评价上[3]。在理解团队知识共享过程的基础上,应进一步从过程有效性的影响因素上对其进行把握。有学者认为,知识共享有效性是态度、环境及共享活动等的共同作用结果。我国学者沈凌(2009)则提出团队知识共享的投入与输出的系统评价指标,其中投入指标包括团队输入、团队过程及团队建设等,输出指标包括各项静态指标等[4]。鉴于上述分析,软件开发项目团队内知识共享的有效性评价,早不止限于对创新产出的定量测量,而同时应考虑知识共享较难测量的过程因素,如软件开发项目团队知识共享的过程中的成员异质性特征(如成员性别、个性、能力等),团队创新环境建设,团队整体激励机制等。

1.2.1 个体知识共享的态度因素

作为知识共享的重要影响因素之一,软件开发项目团队成员的个性倾向决定着成员知识共享的态度与主观准则。知识共享态度是共享活动的前提,直接决定知识共享意愿乃至行为的发生,包括成员的内外部报酬预期及对团队目标的认可和重视。个体知识共享的态度因素,主要包括如下几点:

(1) 外在报酬预期。知识共享是组织成员社会关系的集中体现,关注外在报酬的经济交易理论认为,个体行为大都是理性的自利行为,只有收益大于成本共享行为才会发生。软件开发项目团队内成员最直接追求的是其在团队中的经济报酬。当成员认为知识共享能带给他们外在收益时,他们会采取更积极的态度对待知识共享行为。

(2) 内在报酬预期。Scott & Walker曾提出,知识性员工的内在报酬是知识共享最主要的影响因素。软件开发项目团队以创新任务为导向,其人力资源管理实践显示,他们较一般成员更重视内在报酬的获得(如公开发表成果、奖励等)。因此,软件开发团队成员对内在报酬是否具有预期,是衡量其知识共享态度的重要指标。

(3) 团队目标承诺。团队目标承诺,是成员对团队合作所要实现的目标预期,正向影响着团队成员的知识共享行为。若对团队的核心价值具有目标承诺,成员将更愿意共享各自的知识。

(4) 自我效能。Bandura认为,自我效能是个体对达成其完成某一特定工作的自我能力的判断,用来解释具有相同行为技能的主体或其自身在不同条件下采取相同行为时的表现差异。软件开发项目团队成员的自我效能即其对自身知识共享能力的判断。它直接影响知识共享行为,或通过激发并维持知识共享意愿从而间接影响共享行为:自我效能高的成员更倾向于选择有挑战性和困难的共享行为,并更加努力坚持等。

1.2.2 知识共享能力指标

软件开发团队成员知识共享的能力包括沟通能力、理解能力和知识与技术的应用能力等。主要体现为成员愿意共享知识的前提下,传授知识,学习、接受知识及创新的能力等。

(1) 沟通能力。沟通是组织内人际传递信息、传播思想及感情的必要途径,是人与人之间交往的桥梁,通过沟通组织成员能分享彼此的情感与知识,消除误会并增进了解,从而达成共识或者共同协议。团队成员具备沟通能力与否,决定着成员之间能否进行知识的有效共享。

(2) 知识传授能力。知识共享是知识拥有者与接受者间的交互行为,开始于知识拥有者对知识的传递,知识拥有者不仅传授共享所需的显性知识,更多则是传授隐性知识及所需的方法,帮助知识接受者更好理解和掌握隐性知识。知识拥有者的沟通表达和演示能力越强,隐性知识的交流和共享的效率就越高。

(3) 知识学习能力。软件开发项目团队对项目成果的追求,促使成员从团队内外寻求并学习有效知识。知识接受者通过对团队内符合需要的知识拥有者进行评价,会有选择有目的地向知识拥有者学习,最终还包括将其所得到的隐性知识与现有的知识融合,开发出新知识的行为过程。接受者的知识学习能力越强,知识共享的效率自然就越高。

(4) 创新能力。软件开发项 目团队成员的知识创新能力是成员运用所学知识和辅助工具创造出新的知识、技能与创新软件成果等的能力。创新能力的大小,往往从很大程度上反应了创新成果的多少,成员的创新能力越强,其创新智力成果就会越显著。

1.2.3 团队环境指标

团队知识共享氛围的优化,有利于提高知识共享活动的效率,营造团队共享氛围,可通过团队内部创新支持文化建设,成员信任水平的强化及知识共享平台建设等方式实现。

(1) 团队文化建设。知识共享活动需要建立相应的文化进行规范,塑造有利于知识共享的企业文化能够鼓励员工积极参与知识共享。当团队文化氛围建设适应知识共享时,会对成员的行为产生激励和强化作用,支持创新的团队文化氛围中,团队成员会乐于与他人分享自身知识,从而促进知识共享活动的开展。

(2) 知识共享平台建设。软件开发团队是以知识等创新为追求的组织形式,团队内部知识共享平台的建设完善包括为成员进行知识共享的畅通的信息及创新知识交流与沟通的网络平台建设。如果团队的技术基础薄弱,没有有效的网络系统和通信系统,共享的途径少,共享平台不完善,就会大大减少知识的需要方和所有方之间的接触机会,不利于成员间的交流共享,对知识的有效共享形成障碍。

(3) 成员信任水平。团队信任水平同样决定着个体间的知识共享方式。软件开发项目团队内的信任,是个体基于对同伴会执行某项对自身重要的行为的期望,而对对方不加控制的接受的意愿。社会学视角下的信任水平自从被引入组织行为学的研究以来,就受到了广泛的关注与应用,研究与管理实践证明,个体间的信任可以促进个体间的合作行为,包括知识共享行为的发生。

2 软件开发项目团队知识共享有效性评价

指标体系构建

Bandura的社会学习理论认为成员的学习行为是成员自身的态度和外部环境因素的交互结果,在总结有关文献的基础上,本研究分别从软件开发项目团队成员的知识共享态度、能力及团队氛围因素等方面构建包含3个一级指标及10个二级指标的评价指标体系以评估软件开发项目团队成员知识共享的有效性。经过专家修正后,得到图1所示指标体系。

3 软件开发项目团队知识共享有效性评价模型

确定软件开发项目团队知识共享有效性评价的目标层次结构,包括总目标层、中间准则层及指标层。为科学准确的明确这共享有效性指标,构造下述成对比较矩阵(见表1)。

首先,构造准则层要素的判断矩阵,并计算权重:

通过两两比较得到的判断矩阵可以表示如下:

将判断矩阵每一列正规化,并得出其特征值ω(见表1),同时计算判断矩阵的最大特征值λmax并利用一致性检验指标CI进行一致性检验,通过相对一致性检验的指标公式CR=[CIRI,]可以得到对应的一致性检验值,当一致性比率CR<0.1时,判断矩阵有满意的一致性,否则,应对矩阵进行调整,直至满意(RI表示平均随机一致性指标,表2列出了1~9阶判断矩阵相应的RI值)。

此时,λmax=4.045,CI=[λmax-nn-1]=0.014 5,CR=[0.002 40.9]=0.016<0.1。

上述所示的两层指标间的两两比较矩阵,对表现出了较好的一致性,但还需对层次总排序进行一致性检验,如表6所示。

通过上述分析可知,成员自身共享知识的态度和软件开发团队的共享文化建设是决定着知识共享有效性的重要方面。其中成员共享态度中自我效能感认知占19.9%,成员的目标承诺占14.81%;团队文化指标中的信任条件和鼓励创新的文化氛围均占18.37%。而对于成员的共享能力,尽管同样是知识共享有效实现的重要指标,其重要性不及态度与团队共享文化环境建设。分析原因主要在于在软件开发项目团队中,成员的知识水平及知识储备丰富等特点确保了成员知识共享能力。

利用层次分析法对软件开发项目团队的知识共享有效性进行系统分析后得到知识共享有效性影响因素模型,且各指标对软件开发项目团队的知识共享有效性作用不一,团队管理者可根据各指标的不同影响程度作出相应决策。

4 软件开发项目团队知识共享有效性提升建议

(1) 构建和谐团队共享平台。团队成员在对团队基本价值观及其他成员产生人际信任时,会感到自身有义务提供高效而有效的隐性知识,因此可以通过合理利用硬件设施如会议室、休息室及户外场所等举办团队内部的经验交流会、沙龙乃至拓展活动等,使成员在轻松的文化氛围和环境中获得更多的信任,从而更加愿意采取知识共享行为,使团队成员之间和团队成员对团队整体产生足够的信任,以发挥出更大的努力,提高团队产出。

(2) 建立科学、多元的知识共享报酬制度。现代经济活动中,理性行为下的个体对报酬的追求是其做出决定的最初原因。软件开发项目团队成员追求的最直接的目标是伴随着软件创新成果的形成而产生的直接经济报酬,因此,团队要建立科学而合理的团队知识共享报酬机制。与此同时,要通过建立更加多元化的非物质共享报酬机制,如团队内部专利申请奖励、知识产权保护、团队成员额外休假制度、团队内或团队外组织的职位晋升等。满足团队成员外在的与内在的经济报酬的预期,提高软件开发项目团队的知识共享有效性。

总之,软件开发项目团队的知识共享是复杂而动态的系统工程,针对知识共享有效性的激励机制同样是一个循序渐进的过程。激励过度会增加组织的成本且并不容易产生有效的员工效用,过小则无法激起员工的共享意愿,因此,针对软件开发项目团队成员的知识共享影响因素实施激励并及时反馈是软件开发项目团队创造高效创新成果,获取竞争优势的重要保障。

参考文献

[1] 杨雨山.德鲁克的管理精髓[M].北京:中国铁道出版社,2009.

[2] 吕学清.增强学校过程管理的有效性[J].青海教育,2005(z1):32?33.

[3] 李春旺.虚拟企业知识共享有效性与激励研究[D].合肥:安徽农业大学,2007.

[4] 沈凌.基于本体的知识团队有效性形成机理及评价研究[D].武汉:武汉理工大学,2009.

[5] 班杜拉,林颖.思想和行为的社会基础:社会认知论[M].上海:华东师范大学出版社,2001.

[6] 刘瑜, 王建武.研发人员知识共享绩效评价指标研究[J].中国酿造,2008(16):114?116.

[7] 波.网络组织中知识共享效率评价指标体系的建设[J].情报杂志,2009(1):68?71.

[8] 安中涛,安世虎.个体知识共享绩效评估参考模型[J].情报科学,2006(3):396?399.

. Information Systems Research, 1994, 5(4): 400?421.

[10] 单雪韩.知识共享的影响因素分析与实现对策研究[D].杭州:浙江大学,2010.

. Academy of Management Journal, 1994, 37(3): 580?607.

篇(7)

[中图分类号]F270.7 [文献标识码]A [文章编号]1006-5024(2008)05-0015-03

[基金项目]国家自然科学基金项目“用多功能开放型企业供需网理念推进我国企业实施大批量定制生产的研究”(批准号:70472075);上海市重点学科资助项目“多功能开放型企业供需网中企业的核心能力与合作机制构建研究”(批准号:T0502)

[作者简介]徐 莹,浙江万里学院商学院讲师,博士,研究方向为企业信息化、投资决策;(浙江 宁波 315100)

徐福缘,上海理工大学管理学院教授,博士生导师,研究方向为系统工程;(上海 200093)

张颂焕,浙江万里学院商学院本科生,研究方向为电子商务。(浙江 宁波 315100)

一、引言

在不确定条件下的项目投资决策分析中,实物期权理论正替代传统的净现值法(NPV)而得到广泛的运用。许多学者也将该方法引入了IT项目的投资决策分析之中,如:Benarch和Kauffman运用Black-Scholes模型,近似地估算一电子银行网络项目中所包括的实物期权价值,他们将项目投资机会看成一个仿真的美国式买入期权(Pseudo-America Call Option),并考虑分红的情况,将项目现金流现值和看成是期权的基础资产;Taudes运用Black-Scholes期权定价模型分析软件升级项目的经济效益;Panagi和Trigeorgis运用实物期权理论分析了某通信项目的经济价值;Schwartz运用动态规划法(Dynamic Program-ming)讨论了两种IT项目的期权定价。

上述文献中存在着两个缺陷:一是虽然在软件开发项目经济分析时考虑了项目内含的实物期权价值,但在项目投资决策分析中却仍然遵循NPV方法的思路,而没有考虑实物期权的执行问题以及何时执行问题;二是缺乏对软件开发项目在生命周期的各个阶段所包含的实物期权作全面、系统的研究,大多只是考虑到项目中的等待期权。本文则对上述问题作了详尽的研究和分析。

二、软件项目的生命周期

从项目管理与项目经济分析的角度看,软件项目的生命周期可归纳为图1所示的一般过程:

在图1中,横坐标是时间,纵坐标是收益或投资成本,t0=0是项目的决策点。在决策时,I是项目可行性研究费用(成本),相对于项目的整个寿命期,一般来说项目的可行性研究阶段的时间很短,所以假设项目的可行性研究是在瞬间完成。t1是项目开发的起始点,t2-t1是项目前期开发阶段,在这一阶段,项目有一现金流C1支出,C1可能是常量,也可能是随时间的变量C1(t)。从t2时刻起,项目的首期开发完成,项目开始有收益,即现金流B1,B1也可能是常量,更一般的是随时间的变量B1(t),这一收入可能是企业出售软件或软件相关服务效益的收入。同时,对于大多数成功的软件项目来说,从t2时刻起,该软件项目又开始了进一步的开发,如增加软件的新功能,或将软件移植扩展到其他的计算机操作系统等。从t3-t2阶段是软件项目的第二次开发阶段,在这一过程中所发生的开发费用为C2,C2的特点也与C1相似。从t3到tn,其中可能包括多个与t3-t2阶段相似的软件项目的扩展(二次开发)阶段。T是该软件项目结束的时间。由于技术进步与消费者需求的变化,一般来说一个软件不可能永远继续下去,它可能在某一时刻被完全淘汰。综上分析,t0是项目的决策点,t1是项目的开发起始点,他们可能是同一时间,但大多数情况下可能是不同点。t1-tn是项目的开发阶段,其中t1-t2是项目的纯开发阶段,在这一阶段上,项目无收益。t2-T是项目的收益阶段,在这个时段上项目有现金流入,他们通常大于本阶段上的开发费用。值得指出的是,软件项目在t2-T阶段,企业可以中止并出售该项目,并一次性收取转让费。

三、软件开发项目内含实物期权分析

从图1的分析可以看出,一个软件开发项目包含了多个阶段。把软件项目看作是由一系列序贯开发的小项目所组成,这一观点在软件开发项目管理中已被广泛接受。在软件项目中,前一阶段的决策,决定了后续阶段的开发投资。所以,在前一阶段的经济评价中,应考虑本阶段的决策所带来的后续阶段投资机会的价值。从这一观点出发,可以分析在软件开发项目的不同阶段中项目可能包含的实物期权。

在t0点,即项目投资决策时,项目内含一个等待(wait)或推迟(defer)开始的实物期权,这相当于一个美国式的买方期权(Call Option)。该期权的执行条件是:推迟项目可以使得管理人员获得更多(额外)的有关项目的信息,在此基础上,有利于管理人员采取管理行动,而且,一般来说计算机硬件,软件的价格随时间迅速下降,推迟项目会有利于降低开发成本。但同时也应看到,推迟项目也可能导致项目收入的损失和企业竞争优势的丧失,即推迟项目具有机会成本。在项目决策时,应综合全面考虑这两方面因素。因而,在项目决策时,除了筛选项目外,还应考虑这一实物期权的价值,在时间许可的范围内,决定最佳项目开始时间。

在t0时,除等待期权外,项目还包含有第二阶段投资机会的实物期权。

在t1至tn时项目的开发阶段。在开发阶段上项目具有更大的管理柔性,项目可能包含的实物期权有:1.推迟或中止下一阶段的开发。2.若不期望的情况出现,并且继续下去,则可完全放弃该项目。3.根据新掌握的信息,扩展或缩减项目。4.发现新派生软件(项目)的投资机会。

最后,项目的经营阶段,项目还可能包括中止(出售)的期权,或由于条件的变化,进一步升级软件的机会。

虽然软件项目中所包含的期权不同,但一般情况下,影响他们价值的因素主要包括:1.执行项目中实物期权所产生的收益。对软件开发项目来说,这可能是项目在某一阶段的收益,一般来说,其他条件不变,收益越高,期权的价值也就越大。2.执行实物期权所需要的成本。对于软件开发项目而言,是投资于项目下一阶段的成本,一般来说,其他条件不变,成本越小,期权的价值也就越大。3.收益与成本的不确定性的程度。对于金融期权来说,其价值是建立在市场风险之上的,这个风险反映在证券资产的价格变化上。然而,其中之一变为不确定了,则项目所包含的实物期权价值会相应增加。4.实物期权的截止时间。对于软件项目来说,这一时间就是下一阶段项目管理决策的可能时间。在实践中,它经常是企业因素所决定的。实物期权的截止时间越长,则期权的价值也就越高。5.项目包含的实物期权执行的机会成本。若这一机会成本越高,则期权的价值也就越低。6.无风险折现率。无风险折现率越低,则期权的价值也就越高。

四、软件开发项目经济分析的目标与内容

Trigeorgis等学者提出,在考虑内含实物期权时,投资项目的价值包括两部分:一是传统的、被动的、静态的(static)项目直接现金流的净现值(NPV)。二是管理柔性或灵活性所产生的项目内含实物期权价值。这一思想可归纳为下式:

F=NPV+V (1)

(1)式中,F是扩展(Expand)的NPV,也是整个项目投资机会的价值;NPV是按净现值法计算出的项目净现值;V是项目内含期权的价值。

根据项目投资决策的NPV法则,内含实物期权的IT项目,其投资机会的价值大于零时,项目可行;筛选IT项目的多个独立方案时,选择投资机会最大的投资方案。在大多数投资项目的实物期权理论研究以及实证研究的文献中,都遵循这一准则。然而,这类投资项目的决策思路却值得重新审视。

传统的投资项目经济评价中,没有考虑项目中可能包含的实物期权,其经济评价是为其投资决策服务的。而投资决策的特点是在决策时只有投资或不投资两种选择,若项目选择投资,其经济评价的使命便告结束。若选择不投资,项目就放弃了。传统的投资项目决策的内容可归纳为下面三个基本内容:1.决定投资项目是否经济可行;2.若可行的投资项目存在多个相互排斥的投资方案,筛选最佳的投资方案;3.在企业资源(预算)约束的条件下,筛选多个项目的投资组合。然而,若投资项目中包含实物期权,项目经济评价中也考虑了项目内含实物期权的价值,那么投资项目不仅在经济评价的内容与方式上与传统项目的经济评价不同,而且项目的决策内容和方式也与传统项目的决策不同,具体体现在下面三个方面:第一,项目的决策不仅在项目最初的决策阶段(点)进行,而且还应延伸进项目的整个过程之中。第二,在项目最初的决策阶段(点),管理者不仅要决定项目是否可行,筛选最佳方案和选择投资组合,而且还要依据项目经济评价的结果,决定项目内含期权是否应该执行和何时执行。第三,投资项目内含期权的经济分析,不仅在项目决策阶段进行,而且还应延伸至项目开发的全过程。在项目开发的每一个阶段,根据项目经济分析的结果,决定当时项目所含实物期权是否实施、何时实施。

五、软件开发项目决策框架与准则

从上述分析可以看出,在软件开发项目经济评价中引入实物期权的概念和实物期权定价方法,是软件开发项目经济分析与决策管理的革命,它必然给原有的软件开发项目的管理带来深刻变革。本文构建了软件开发项目的经济分析与管理决策过程的框架,其主要内容是:1.确定本阶段软件开发的范围及下一阶段开发的可能范围,决定是否可引出相关的开发项目。2.构造确定本阶段开发项目包含的实物期权,如推迟开发、进一步扩展开发等。3.预估开发项目成本、收益、时间和无风险折现率,特别应分析确定成本与收益的不确定性特征,如变化方差等。4.根据开发项目的不确定源的特征,选择合理、恰当的市区期权定价模型,确定开发项目内含期权的价值。对于相似于美国式期权的实物期权,还应确定最佳执行时间。一般来说,实物期权定价模型主要包括:已有的期权定价模型、偏微分方程法和动态规划方法等。5.根据项目的经济分析结果作出管理决策。应该指出的是,在软件开发项目的不同阶段,管理决策的内容有所不同,下面详细分析不同开发阶段管理决策的内容与规则。

在软件开发项目的最初决策阶段,决策内容包括两个部分:一是传统项目投资决策内容相同;二是针对项目内含期权的决策。具体可归纳为图2所示:

具体的决策准则如下:

1.筛选可行项目。若软件开发项目的投资机会价值(扩展NPV)大于或等于零,则项目可行。

F≥0 (2)

2.在可行项目中,选择最佳方案。投资机会价值最大方案:

F*=max{Fi} (3)

i =1,…,N

3.投资方案的期权决策。最佳投资方案选定后,具体的管理决策选择可归纳为下表。

在软件项目开发过程中的开发阶段,管理决策的内容为:根据项目经济分析的结果,决定是否执行期权,何时执行。若项目包含的期权价值大于零,对于相似于美国式期权的实物期权,则选择最佳时间来执行;而对于相似于欧洲式期权的实物期权,则到期执行。在执行美国式期权时,涉及到最佳执行时间的确定。正如实物期权的定价没有统一的模型一样,这一时间的确定是没有统一的模型,而应根据项目不确定因素的特征来灵活掌握。

参考文献:

[1]Benaroch,M.,R. J. Kauffman.Justifying electronic banking network expansion using real options analysis [J].MIS Quart.2000,24(2) 197-225.

篇(8)

doi:10.3969/j.issn.1673 - 0194.2017.04.047

[中图分类号]TP311.5 [文献标识码]A [文章编号]1673-0194(2017)04-00-02

随着信息技术的不断发展及普及,移动互联网、云计算、大数据及物联网等与现代制造业结合,越来越多的软件项目立项。在软件项目开发过程中,无论是用户还是开发人员都会遇到各种各样的问题,这些问题会导致开发工作停滞不前甚至失败。软件项目能否有效管理,决定着该项目是否成功。因此,如何做好软件项目管理中的进度控制工作就显得尤为重要。

1 软件开发项目的管理现状

国内外软件开发行业竞争越来越激烈,软件项目投资持续增加,软件产品开发规模和开发团队向大规模和专业化方向发展。因为起步晚,国内绝大多数软件公司尚未形成适合自身特点的软件开发管理模式,整个软件行业的项目管理水平偏低,与国际知名软件开发公司有一定的差距,综合竞争能力相对较低。首先,缺乏专业的项目管理人员,软件项目负责人实施管理主要依靠技术和经验积累,缺少项目管理专业知识;其次,在项目开始阶段缺少全局性把控,制订的项目计划趋于理想化,细节考虑不周,无法进行有效的进度控制管理,导致工作进度滞后;再次,项目团队分工不合理,项目成员专业能力与项目要求不匹配,成员各行其是,出现重复甚至无效的工作,从而影响项目进展;最后,项目负责人不重视风险管理,没有充分意识到风险管理的重要性,面对风险时缺少应急预案,使原本可控的风险演变成导致项目受损甚至失败的事件。因此,必须在整个软件开发项目周期内保持对项目的进度控制,当遇到问题时给出合理的解决措施,将重复工作、错误工作的概率降到最低,使项目目标能够顺利实现,使企业能够获得最大利润。

2 软件开发过程中影响进度管理的因素分析

项目管理的五大过程:启动、计划、执行、控制与收尾。软件项目管理是为使软件项目按时成功交付而对项目目标、责任、进度、人员以及突况应对等进行分析与管理。影响软件开发项目进度的因素主要有:人的因素、技术的因素、设计变更的影响、自身的管理水平及物资供应的因素,等等。对项目进行有效的进度控制,需要事先对影响项目进度因素进行分析,及时地使用必要的手段,尽可能调整计划进度与实际进度之间的偏差,从而达到掌握整个项目进度的目的。

2.1 进度计划是否合理和得到有效执行

项目在开发过程中都会制订一个进度计划,项目进度和目标都比较理想化,在面对突况时没有相应的应急处理预案,无法保证项目进度计划的有效执行。主要体现在制订项目进度计划时由于管理人员自身专业局限性,对项目目标、项目责任人和研发人员和项目周期都有明确划分,但对项目开发难度和开发人员能力考虑不足,假如因项目出现重大技术难题而引起项目延期,同时又没有做相应的应急处理,势必影响项目进度顺利实现。

此外,没有详细的开发计划和开发目标,开发计划简单不合理。比如:项目目标不清晰,项目组织结构和职责不明确,项目成员缺少沟通,不同功能模块出现问题相时互推诿;每个开发阶段任务完成情况不能量化;开发计划没有按照里程碑计划进行检查,进度出现延误没有相应处罚措施和应急措施,导致项目进度管理无法正常进行。

2.2 项目成员专业能力和稳定性

项目成员专业能力和稳定性是项目进度计划顺利实施的主要因素。在项目过程中,项目成员专业能力与项目要求不匹配,项目成员离开或者新加入都会对项目的进度造成不良的影响。

项目成员专业能力偏低,不能对自己的工作难度和周期有一个明确的认识,编写的软件代码质量较差,可靠性不高,重复工作比较严重,就会延长研发时间,脱离原计划制定的目标,导致实际项目进度与原计划规定的进度时间点相差越来越远。

项目成员稳定性包括人员离职或者参与其他项目和增加新人。原项目成员离开项目,项目分配的工作需要由新成员或其他项目成T来接手,接手人员需要对项目的整体和进度进行了解,消化吸收原项目成员已经完成的工作成果,同时占用一定时间与原项目成员交流与沟通,并且,每个人的理解能力和专业技术能力不同,在一定的时间内无法马上投入工作,也会影响他们完成相同工作需要的时间,进而影响进度。

2.3 项目需求设计变更

项目需求设计变更对于软件项目进度会造成极其严重的影响。由于项目负责人对项目目标理解不清晰,没有充分理解用户需求;或者为了中标需要,对项目技术难度考虑不深;或者用户对需求定义的不认可,感觉不够全面,提出修改意见,重新规划,造成需求范围变更。

项目负责人对于项目需求把控不严,不充分考虑用户增加变更的功能对整个系统框架内容的影响,缺乏与客户的沟通,忽略团队协作和团队成员之间的沟通,轻易修改需求,严重需求变更可能会导致整个系统架构的推倒重来,一般需求变更多了也会影响整个项目进度,造成项目延迟交付。

2.4 进度落后时的处理措施

在实际的软件项目开发中,还有许多因素会影响和制约项目进度,没有人能将所有可能发生的事情都考虑周全,在条件允许范围内尽可能对项目开发过程按最坏情况多做预案,做到未雨绸缪,达到项目进度管理的预期效果。

项目管理人员在发现项目出现进度延迟后,需要及时与项目负责人进行沟通,查找问题根源并进行补救控制。同时,一定时间内了解项目组成员工作完成情况以及需要解决的问题,根据需要分解进度目标,做到日事日毕,严格按照项目进度计划时间点实施,尽量减少进度延迟偏差出现的次数。按阶段总结项目情况,评估本阶段项目实现状况是否与计划要求一致,协调处理遇到的困难问题,对项目进度进行检查和跟踪分析,随着项目开发的不断深入,找到提高工作效率、加快项目进度的方法。

3 “智慧人社”管理信息系统项目的实现

3.1 “智慧人社”管理信息系统项目进度计划的制订

3.1.1 项目整体进度计划的制订

项目启动初期,项目组成员使用里程碑计划法,对整个项目的里程碑进行了标记,按软件项目开发的生命周期将项目整体划分为几个阶段:需求分析阶段、系统开发阶段、系统测试阶段及系统试运行阶段等。

3.1.2 项目开发阶段进度计划的制订

在项目的每个阶段中,其实都贯穿着许多阶段性进度计划,“智慧人社”管理信息系统项目的每个阶段计划也是通过使用进度管理方法来制订的。同时,在开发阶段中,项目组将每个功能模块的开发任务进行了更详细的分解,具体到每个子功能,规定了功能实现责任人,并标注了计划用时。项目管理人员可以直观地了解到每个子功能的计划用时,在实施阶段用于与实际使用时间进行对比考核,就很容易得出进度是否延迟或提前的结论。

3.1.3 “智慧人社”管理信息系统项目进度计划的控制

项目进度控制的流程就是定期或不定期接收项目完成状况的数据,把现实进展状况数据与计划数据做比对,当实际进度与计划不一致时,就会产生偏差,如影响项目达成就需要采取相应的措施,对原计划进行调整来确保项目顺利按时完成。这是一个不断进行的循环的动态控制过程。

在“智慧人社”管理信息系统项目开始后,在整体计划中设置了一系列的报告期和报告点,用以收集实际进度数据。分别是项目周会、项目月度会议、阶段完成会议。

4 结 语

本文通过对具体软件开发项目过程中的进度管理进行研究与实践,综合运用科学的项目管理及“智慧人社”管理信息系统的软件思想和方法提出了有效的进度管理方法,不仅可以保证项目的质量,还能在约定期限内完成并交付成果,为今后其他软件开发公司开发类似项目提供参考,从而帮助提高软件项目开发和进度控制的综合管理能力。

主要参考文献

篇(9)

[中图分类号]G [文献标识码]A

[文章编号]0450-9889(2013)02C-0081-02

网络数据库是高职院校计算机网络技术(软件技术方向)、计算机与信息管理专业(软件技术方向)的核心主干课,也是电子商务专业的必修课。该课程是培养网络软件程序员、数据库管理工程师、数据库开发工程师的核心课程。该课程基于微软SQLServer数据库平台组织教学内容,定位于培养学生在大型数据库系统方面的管理和开发的技术能力。通过该课程学习,学生应具备SQL Server数据库管理系统的安装部署、SQL Server数据库对象的管理、SQL Server数据库程序开发、数据库系统的安全管理等专业能力。因此,建设基于工作过程的高职网络数据库课程开发,对于培养学生职业能力具有重要意义。

一、课程开发理念

传统学科体系的平行学科的排序方式,往往采用部分理论课与部分实践授课相结合方式,以传统的章节方式组织内容。以这种方式培养出来的人才,无论是在职业素质还是在职业技能方面都无法达到企业实际工作岗位的要求,为此网络数据库课程的设计引入了新的课程理念:

第一,以工作过程为导向,对原有学科型网络数据库课程进行解构,在重新开发课程,基于行动导向方式来组织内容结构,并在组织教学活动过程中,充分融入行动导向和学习情境的思想。教学过程中,教学内容和活动的安排以企业真实岗位人员胜任岗位工作所要求的技能为基准,充分考虑在教学过程中融入相对应的工作过程的元素,让学生得到相当于真实岗位的训练,增强“零距离”上岗的能力。

第二,以真实的软件开发项目为主线,把项目开发的内容分解到课程的学习内容中去,做到学习内容就是真实的数据库开发项目内容。依托学院现代教育技术与网络信息中心,与信息技术类相关企业合作,从企业引进真实项目,并与企业合作进行二次开发。在教学过程中,任课教师与企业专家一起,充分选取并严格分析管理信息系统开发项目,以分析系统的开发过程为主线,抽取出系统开发过程中产生的各个工作环节,在充分论证的基础上,把工作过程中的各个环节融入到课程内容中,从而构建新的课程体系。通过这种方式构建起来的课程,其教学案例更接近真实的数据库软件开发项目,从而能给学生营造更真实的工作情景。

第三,通过对课程的学习和实践训练,应该能培养学生在进行自身职业生涯发展规划方面的素质,让学生通过课程的学习找到适应自己个性化发展的地方。在组织课程教学过程中,要以学生为中心,把课程内容分解成若干个学习任务,每个任务又对应软件项目的某个功能模块,以任务驱动形式推进课程学习。将真实的数据库软件开发项目确定之后,以完成这个软件项目为总任务,围绕完成任务这一主线,可将学生按能力、发展定位等方面的不同进行角色划分,一般分为项目经理、数据库设计师、程序员等角色。通过这种根据学生个性特点的角色划分,学生更能清楚地看到自身职业发展前景,能有效增强学习主动性。

第四,课程的内容应更利于培养学生的创新思维和能力。软件开发岗位所需的技能属于脑力劳动,这种岗位跟一般性的劳动技能区别较大,对相关人员素质要求相对较高,这就要求通过高职教育,能有效地培养学生的创新思维和创造能力,这样才能满足企业对人才的需求。网络数据库课程的主要内容是针对数据库软件系统开发和管理人员,因此,课程设置内容应能较好地培养学生的创新思维和创造能力。本课程主要是通过项目教学、任务驱动的形式组织教学内容和教学方式,学生在这种方式的训练过程中,能充分发挥自身的思维能力和解决问题的自主空间,同时,在完成软件开发工作任务时,本身具有多样化的解决方法,这些特点都非常有利于培养学生的创新能力。

二、课程开发思路

按工作过程系统化思想,开发设计一个管理信息系统可分为:需求分析和业务设计阶段“数据库设计阶段”程序代码编写阶段“系统测试阶段”系统正式运行阶段,而本课程学习的内容涵盖“数据库设计阶段”和“程序代码编写阶段”,是开发管理信息系统成败的关键。因此,组织学生学习网络数据库课程对实现软件技术方向人才培养目标起到非常重要的作用。

第一,以岗位能力需求为导向,以典型管理信息系统数据库设计开发为载体,设计教学项目和学习任务,将网络数据库的单元技术组装到系统开发的相关工作过程中,以提高学生的学习兴趣,有利于综合职业能力的培养。

第二,教学项目按照管理信息系统设计工作顺序进行设计安排。

第三,以提高学生综合职业能力为目标,组织实施项目教学法、问题探究法等行动导向的教学模式。

第四,改变过去单一纸质考试的模式,采用丰富多样的教学效果评价方式。注重教学过程中的阶段性成果评价,同时,学生的评价也占教学评价结果的一定比例。总之,从人员参与方面看,要有教师和学生共同参与评价;从评价过程方面看,要侧重于项目计划、评估、实施等过程评价;从整体上看,要评价教学过程是否有利于学生职业素养的养成。

三、课程开发实施

(一)课程内容的解构与重构

通过组建骨干教师、企业技术骨干、课程专家小组深入企业进行调研,企业家与专家座谈研讨等方式,分析职业工作任务等构建课程结构,选取一个最符合工作岗位要求、囊括全部课程内容的真实项目引入到课程,以该真实项目为主线,对课程教学内容进行解构和重构。本课程以开发一个完整管理信息系统(校园电子商城CampusWebShop)的数据库为载体设计课程教学项目,按工作过程系统化的思想,采取行动导向的教学模式,具有很强的工作过程完整性,使课程具有较强的针对性和适用性。具体见图1。

(二)课程教学模式改革

1.基于工作过程导向的“项目教学”模式。通过结合真实的软件开发项目,整个学习过程由师生共同完成真实的项目开发的工作过程,以促进学生在校学习与实际工作的一致性。在组织和开展教学过程中,主要按如下顺序开展:第一步,选取较有代表性的大型数据库软件开发项目;第二步,组建课程项目教学团队;第三步,通过教学团队把软件项目的工作内容进行工作任务化的整合和序化;第四步,根据软件项目开发的规律,对项目的工作过程进行分解,即由大的工作过程一小的工作过程一小的项目模块。每个小的项目模块对应学习领域(课程)的学习情景,通过一个个小项目的完成,让学生逐一掌握相关的理论知识与开发技能,过程中培养学生的职业素养与综合素质,最终完成一个或多个典型的开发项目工作。在以上项目训练的基础上,再综合选取若干个较有代表性的数据库开发项目,以便于学生课后拓展,通过反复训练,让学生最终具备如下能力:基于微软的SQL Server平台,独立完成数据库软件开发项目的完整工作过程。

对于每一个小的工作过程(项目),都遵循工作过程的步骤来组织教学,将工作过程的资讯、决策、计划、实施、检查、评估的六个步骤映射为接受任务、企业需求分析、计划、实施、检查、总结、评估的学习过程。具体见图2。

2.职场环境下“教、学、做、用”一体化的小组学习方式。在软件技术实训室中按照软件的生产流程和全真工作环境,并以企业的实际需求来设计和组织实训项目。在学习过程中,一般是整班组织在一起学习,但需要把3-6个人分成一组,每组围成一圈进行学习,从而形成小组学习的形式。教师按小组分配任务,并进行引导,每个小组的学生集中一起学习交流,并定好学习计划,然后按计划完成学习任务。学习任务完成后,对于完成学习任过程中产生的成果,可以采用多种方式进行检测,一般有自我检查、学生之间互查、教师检查等方式,也可以通过直接把产品进行推广应用的方式来检验。最后根据检验的情况对学习给予总结和评价。全真工作环境的构建,主要通过改造传统实训室的方式来实现。具体做方法是:把一个实训室进行分区,让它具有项目教学实训功能、教师工作室功能以及个性化教学区功能。通过这三个功能区,可以按项目教学法开展教学,满足教师进行软件系统的研发及技术服务需要,同时,教师利用个性化教学区可以对个别学生进行个性化辅导学习。

3.改革网络数据库课程的考核方式,主要是突出考核学生的职业能力养成和重视学习过程的评价。传统的课程考核方式具有较大的局限性,一般形式是笔试+操作考核,这种方式很难检验学生的整体学习效果。当前,学习效果的评价应该更重视检查学生的职业素养、适应岗位的能力,以及他们掌握理论知识和实践技能的综合情况。对于本课程的考核,将彻底改革传统考核方式,侧重于考核学生的学习过程和结果,特别是注重考核学生的综合素质,这样能更好地引导学生重视自身岗位能力的训练,利于学生职业能力的养成。而考核的方式可以是现场演示系统设计方案书、软件开发成果等,或回答教师的问题等。

篇(10)

判断和衡量代码质量一直是开发过程中令人苦恼的问题,在同样完成功能的情况下,如何判别一种写法比另一种写法好呢?在代码重构的过程中,如何确定代码质量是在不断的改进当中呢?引入一种设计模式以后,代码真的变的比以前好了吗?大部分时候我们凭感觉和经验做这些事情,我们使用很多模糊的词语来描述我们的判断,比如这样做以后,代码的可维护性更好、可扩展性提高,等等。在越来越注重代码设计的今天,很多人开始使用更感性化、更形而上学的词语来形容软件质量,我们会听到评价软件结构很优雅,带来美的享受,甚至一些设计原则被提升到了哲学高度。

不得不承认这些词语的描述确实很符合我们看到一段高质量代码的心境,但是这些新词语的出现并没有帮助我们解决软件质量判定中遇到的问题。因为这些感性的判定,由于每个人的经验不同,经历不同,所得出的结论也不尽相同。而软件度量能解决这些问题。

众所周知,度量对任意一个工程产品研制都是很重要的,度量让人们更加了解产品、可以评价产品、衡量产品质量,从而进行改进。对于软件产品也一样,只有定性的评估是不够的,还要通过定量的评估才可以根本的解决评估软件产品质量问题。

二、什么是软件度量

如今计算机在我们生活的每个领域几乎都扮演了非常重要的角色,在计算机上运行的软件也越来越重要。因此,可预测、可重复、准确地控制软件开发过程和软件产品已经非常重要。软件度量就是衡量软件品质的一种手段。CMMI为软件产品及软件过程提供了一套定量的表示和分析模型,即软件度量。因此,软件度量分为软件产品度量和软件过程度量两大部分。

先简单介绍一下软件产品的度量,由三部分组成:

1、质量要素。包括:功能性、可靠性、易用性、高效性、可维护性、可移植性六条。

2、评价标准。包括:精确、健壮、通信有效、处理有效、设备有效、可操作等。

3、度量元。指软件的需求分析、概要设计、详细设计、CODING实现、设置测试、确认测试、使用维护七个阶段中的度量元素,比如各阶段的里程碑――文档等。

对于软件过程度量,在软件过程中,我们有必要知道掌握这个过程中的什么。因为我们需要在通过每一个软件过程后,能交付符合该过程需要的结果,即该过程产品及该产品性能是否达到组织的商业目标。为了让这个目标成功,让它所有过程中的行为在整个管理中可以预测,判断现阶段这个过程设计是否合理,我们不仅仅需要主管和经验丰富的开发人员的经验,还需要定量的数据作为分析、参考,并把每个软件过程记录入库,作为今后统计分析的参考数据,这样科学的辅佐开发人员将软件过程控制住。

可以通过对整个软件过程中的七个阶段进行离散分析,得出各阶段中缺陷的发现及解决比例,从而判断出哪个阶段问题最大,将解决重点放在该阶段。比如,如果在分析阶段缺陷比例最大,而后期依次减小至理想状态,这说明本软件过程是非常成功的;反之,如果在测试阶段甚至使用阶段缺陷比例很大,很可能说明这个软件过程在分析或者构架时就存在很大的问题。

三、软件度量的对象

从前面的论述我们知道,任何软件度量活动最想做的是识别我们想度量的实体和实体的属性。在软件中我们想度量其属性的实体可以分为三类,他们是:

1、过程:是与软件相关的一些活动,这些活动都有一个时间因素。

2、产品:是指在软件开发过程中产生的各种中间产品、的资料和文档等。

3、资源:是指在开发过程中输入给过程的东西。

在软件中要度量或预测的属性都是上述三种实体之一的属性。同时,我们有必要区分一下外部属性和内部属性:内部属性是能够纯粹用过程或产品或资源其自身来度量的属性;

外部属性是指由过程或产品或资源及与其相关的环境共同才能度量的属性。

在软件度量中,主要用于以下几个方面:

1、从产品、过程和资源中得来的数字。如,功能点数或代码行(LOC)/每人每月等。

2、度量的分类。客观度量一般为定量的度量;主观度量一般反映为专家意见;在这些基本度量(直接度量)的基础上,经过计算得到进一步的附加度量(或称推导度量,间接度量等)。

3、可识别的属性。

4、一个理论或数据驱动的模型。其描述的是一个依赖于独立变量(如大小)函数的可变变量;这种模型通常是用于预测目的的。

四、软件度量的过程

软件度量工作首先需要确定能够表示软件质量的各种属性和指标;然后分析软件、收集数据;接着运用公式换算代码的各种指标值;最后通过这些指标就可以分析代码的质量。确定哪些属性和指标可以表示软件质量、收集哪些数据、如何用公式推导指标,都是软件度量的研究重点。它所确定的各种软件度量指标为我们了解软件属性、衡量软件质量提供了科学依据。

软件开发过程中,不管哪种软件度量方法,都包括了其基本的软件度量过程。这些过程构成软件度量作业的一次循环,使得软件度量能够经由渐进式的循环得到螺旋式上升。软件度量的基本过程如下:

1、承诺度量。根据软件开发的技术和管理过程对软件度量的需求,决定并承诺实施软件过程度量,这是具有针对性地推进软件度量的第一步骤,也是高层管理者参与决策并提供相应资源的重要环节。

2、计划度量。基于软件度量承诺,根据软件开发的技术、管理、流程、绩效、问题等信息制定软件度量计划。在计划中正式确认产品、流程、角色、责任和资源相关问题及属性,为实施软件度量提供书面的、计划性的、具有可行性的、得到资源支持的保证。

3、实施度量。根据软件度量计划对软件开发的项目、产品和过程等度量对象实施度量。通过度量收集、存储、分析有效的软件度量数据,并将度量和分析结果用于控制和改善软件过程。

4、评估度量。对软件度量过程本身进行评估,对度量标准、度量流程、度量方法、度量对象、度量效用等做出评估,发现度量作业的问题点,总结度量作业的资产,并提出度量作业改善方案。

5、改善度量。根据度量作业的改善方案在后续的度量作业中加以实施,将改善方案导入下一次软件度量过程之中。改善并不是水平方向上的简单重复作业,而是基于经验和教训之上的螺旋式上升过程,将软件度量的效用在软件开发过程中展现出来。

五、软件度量方法

1、项目度量。项目度量是针对软件开发项目的特定度量,目的在于度量项目规模、项目成本、项目进度、顾客满意度等,辅助项目管理进行项目控制。

2、规模度量。软件开发项目规模度量是估算软件项目工作量、编制成本预算、策划合理项目进度的基础。规模度量是软件项目失败的重要原因之一。一个好的规模度量模型可以解决这一问题。有效的软件规模度量是项目成功的核心要素:基于有效的软件规模度量可以策划合理的项目计划,合理的项目计划有助于有效地管理项目。规模度量的要点在于:由开发现场的项目成员进行估算;灵活运用实际开发作业数据;杜绝盲目迎合顾客需求的“交期逆推法”。

3、成本度量。软件开发成本度量主要指软件开发项目所需的财务性成本的估算。主要方法如下:类比估算法、细分估算法、周期估算法。

4、顾客满意度度量。顾客满意是软件开发项目的主要目的之一,而顾客满意目标要得以实现,需要建立顾客满意度度量体系和指标对顾客满意度进行度量。顾客满意度指标以顾客满意研究为基础,对顾客满意度加以界定和描述。项目顾客满意度量的要点在于:确定各类信息、数据、资料来源的准确性、客观性、合理性、有效性,并以此建立产品、服务质量的衡量指标和标准。企业顾客满意度度量的标准会因为各企业的经营理念、经营战略、经营重点、价值取向、顾客满意度调查结果等因素而有所不同。

5、产品度量。软件产品度量用于对软件产品进行评价,并在此基础之上推进产品设计、产品制造和产品服务优化。软件产品的度量实质上是软件质量的度量,而软件的质量度量与其质量的周期密切相关。

篇(11)

中图分类号: TU71 文献标识码: A

需求分析是软件开发过程的核心,其结果直接影响到整个的软件开发过程。据相关资料显示,因需求分析因素所造成的软件项目失败或缺陷约占60%,属于系统实施阶段的代码错误,而导致软件项目失败的比率约为40%。项目失败的根源在于需求分析不明确,需求调研不彻底,从而引发需求不断变更,最终导致项目停滞。这些变更不仅加大了开发成本、项目无法按时完成等严重问题,而且,还有可能引发用户方与开发方之间互相指责,导致项目搁浅。

一、软件项目需求分析的重要性

软件系统的开发主要分为五个阶段,分别是系统的需求分析阶段、系统设计阶段、系统实施阶段、系统测试阶段和系统维护阶段。而需求分析阶段是整个五阶段中的重中之重,在该阶段所占的工作量大概是整个软件开发项目的50%,逻辑方案是该阶段的最终成果。逻辑方案不仅是进行系统设计的依据,而且,还是系统最终验收的说明性文件。从以往的经验来看,需求分析做的不彻底,没有深层次的挖掘用户需求,往往可能导致整个项目无法达到预期的效果,或者说设计开发出来的产品不能满足用户的需求。

需求分析首先要对现有系统有充分的认识和了解,在此基础上,通过识别关键问题、分析项目的可行性、详细调查研究、系统化分析,最终设计完成该项目的新系统逻辑方案。只有系统分析员明白了用户的真正需求,才能开发出满足用户的软件产品。在这里,要强调一点的是,在做需求分析的时候,开发方一定要指派有实际工作经验的系统分析员来与用户沟通,而不是指派具体的开发人员,这将避免一些沟通不畅的问题发生。系统分析员在了解用户的基本需求之后,要以书面的形式,准确地制定出软件需求报告。该报告主要说明系统的行为属性,是项目开发过程中对系统的制约。要实现这一目标,就需要系统分析员与用户之间做到紧密协作,甚至系统分析员要深入到用户方的实际业务当中,把自己当做是用户,从用户的角度思考问题,只有这样,开发方才可以真正了解用户需要什么,系统应该做什么。

二、规范执行需求分析的流程

需求分析的过程,要严格执行规范化操作,囫囵吞枣式的需求调研是不可取的。开发方在做需求分析过程中,一定要严格把关,从对用户负责的角度出发,并且也为了降低自己的开发成本,对无法与用户实现很好沟通的项目经理要及时叫停,避免后续工作无法正常进行。

按照需求分析的过程,同样也可将其分为五个阶段:首先要获取用户需求,其次是分析用户的需求,第三是编写需求文档,第四是评审需求文档,最后是管理需求。规范执行需求分析的流程,是需求分析能否成功的关键。图1是根据实际工作经验总结出的需求分析工作流程:

在需求分析过程中,开发方要深入用户方的各个部门,最简单的项目也要做到用户确认需求和需求评审两个过程,复杂的项目甚至要做到多次。

三、尽快熟悉项目用户方干系人全貌

项目干系人又称为项目相关利益者,是指积极参与项目、或其利益会受到项目执行或完成情况影响的个人或组织,项目干系人对项目的目的和结果施加影响。项目管理团队,即开发方,必须识别项目干系人,确定他们的需求和期望,尽最大可能地管理与需求相关的因素,以获得项目的成功。因此,应当从项目的启动开始,系统分析员用户方相关人员的配合下,逐步分清项目用户方干系人具体包含哪些人和部门,通过开方法与其沟通加之用户方领导的协调以驱动他们对项目的支持,从而减小其对项目的阻力。

有些项目在做需求调研时,因受用户方提出的进度要求等因素影响,有些系统分析员不愿与用户过多地交流,只是发一些调研表做一些大概的了解。往往是因为开发方已有与该建设单位相似的原型,会亟不可待地去推广,这样会导致某些差异需求得不到深入了解,用户方只能被动地去适应原型系统,这样的做法是不可取的。另一种情况则是开发方与用户方的技术部门交流比较多,而向业务部门和实际使用人员调查的力度不够,往往容易造成原型试用后,与用户的需求不一致,不得不再对需求做较大调整,造成开发周期不断延期,开发成本大大增加。因此,熟悉项目用户方干系人全貌是进行需求调研的第一步,也是需求调研的基础。在定制的开发项目中,最重要的是要弄清楚用户方中的组织结构关系、业务流程关系、数据流程关系。制定该项目的牵头单位,在此基础上,使用图表的形式将这三种关系表现出来。

四、采取正确的方法获取用户需求

软件开发项目的首要目标就是要发现用户的需求。在对用户进行需求调研过程中,使用的方式很多,初期调研可以采用会议的形式,后续的详细调研以及需求确认,可以采用电话、邮件、小组讨论等方式,模拟演示也是一种很有效的形式,用户比较直观,容易发现、提出问题,但每一次调研过程当中,都要做好笔录,当与用户交流完毕以后,要对交流的结果进行整理、分类,便于后续的分析活动。系统分析人员要对收集到需求做进一步的梳理和分析工作,在这个过程中,首先要对用户提出的具体需求,包括可能该项目目前不涉及的需求,都要知道“为什么”,并且判断用户提出的需求是否合理,对于不合理的需求,开发方要给出不合理的理由和原因。其次,要集中精力,把关注点放在需求分析阶段关注的目标上,即“做什么”,而不是“如何做”,第三就是要分析用户提出的需求当中所衍生出的隐含需求,这一点往往容易忽略掉,这就需要系统分析员在与用户交流当中,关注用户的表情、眼神、用语,因为对隐含需求不加以考虑或考虑不充分,往往会引起永无止境的需求变更。

五、软件项目的生命周期

从用户的角度来看,软件项目的生命周期应该包括项目前期的论证工作、项目计划、软件开发、运行、维护以及项目评价。因此,软件项目管理的范围不仅包括传统的软件开发过程,还应该包括开发之前的准备工作以及运行中的维护工作和对项目的总结工作。具体来讲,软件项目生命周期各阶段的活动。

5.1启动阶段和计划阶段。在软件项目的启动/计划阶段,需要组建一个领导小组,其成员包括用户的各级和各部门的高中级领导、有经验的管理专家和系统分析员。其任务是分析用户的实际业务和发展战略,确定系统的目标,估算资源、成本和进度,论证、审批系统的实施计划。

5.2实施佐制阶段。软件项目的实施催制阶段主要指软件开发阶段,包括系统分析、系统设计、系统实现和系统运行。此时需要对项目的各种资源(包括人力、资金、时间、信息)、项目质量和项目风险进行全方位的管理,控制项目范围的变动,协调各方面的工作。

5.3收尾阶段。软件项目的收尾阶段就是正式验收整个系统并移交给用户的工作,主要包括完成项目移交的准备工作、对所建立系统进行评价、收集项目中的各种数据、总结经验和教训,为以后系统的维护、更新和升级提供依据等。

结论

在软件项目管理的过程中,只有实施规范化管理,才能更有效地进行项目管理,提高项目成功的概率。目前,由于软件项目管理实施的时间不长、经验不足,我们只有不断从实践中积累经验,进一步完善软件项目管理的理论体系,将软件项目管理更有效地应用到软件开发的实践中。

参考文献:

[1]王远,王健.计算机项目管理[M].武汉:武汉大学出版社,2009,8