时间:2023-03-30 11:35:43
引言:易发表网凭借丰富的文秘实践,为您精心挑选了九篇软件项目论文范例。如需获取更多原创内容,可随时联系我们的客服老师。
软件项目管理一个创造性的领域,其以满足客户特定的需求为目标,以团队的形式有效地组织企业项目资源,通过对项目进行管理和控制,实现项目的目标。在我国软件行业起步较晚,但在最近几年里得到了迅速的发展,但在应用项目管理中还存在许多的问题。
1.1对软件项目管理认识程度不足,缺乏整体把握
软件项目经理或管理人员对项目管理的知识体系没有全面的了解和把握,在实际工作中不能很好地指导项目管理实践,依靠个人原有的知识技能对项目进行随意、盲目的工作管理。在软件企业中,项目经理往往是在技术上能独当一面的指挥官,但是他们在项目管理方面知识比较缺乏,对项目管理认识程度不足,导致出现管理混乱现象。一些软件项目管理人员对项目没有一个整体的把握,对总个项目没有系统的认识,不能很全面的做出总体计划、阶段计划。由于项目中有许多不确定的因素存在,项目经理没有系统分析各个不确定因素的内在联系,考虑不周全,做计划是走过场的形式,做出的计划不能适应情况的变化,造成计划与控制管理完全是脱节,衔接不上从而无法进行有效的控制和管理。计划跟不上变化是软件项目管理中常见现象。
1.2管理思想和理念没有得到落实,风险管理不成熟
管理思想和管理理念对软件项目管理起着引导作用,对软件项目管理理论上的不足将可能导致软件项目管理的失败。我国软件项目管理发展较晚,管理人员在管理中多依靠自身的实践经验去开展工作,而对管理理论较为缺乏。部分项目经理不能总体上去管理整个项目,不能充分认识到自己是一个管理者,造成项目管理中工作任务分工不明确、资源浪费现象。从我国当前软件企业中,项目经理大多技术方面的知识扎实,但是项目管理知识、管理技能以及必备的素质都比较缺乏。特别是对软件项目管理中的风险管理认识较为肤浅,有待进一步的学习和提高。由于项目管理人员在项目管理实践中缺乏高效的管理思想,缺乏有效的方式和技巧,项目工作人员之间的团体协作能力较弱,资源整合优势难以有效发挥。
1.3缺乏有效沟通
在软件项目管理中,沟通是维持项目进行的重要条件。若在一些重要信息方面缺乏有效的沟通,将可能导致项目管理出现较多障碍。从当前我国软件企业项目管理的实践来看,普遍存在沟通机制不完善,渠道不够通畅,各相关人员之间在项目管理中制定计划、意见反馈、情况通报、技术成果等等方面沟通不足,容易造成重复劳动,效率低下等情况发生,有的甚至造成的完全可以节省的损失。在软件项目管理中项目经理需要花费大量的时间来沟通和协调,而且要善于沟通,提高沟通意识和效率。
2软件项目管理发展对策
2.1提高项目管理人员计划意识,优化人力资源配置
软件项目管理人员在工作中要以身作则,真正发挥带头作用。在工作中要及时制定符合工作需要的工作计划并认真落实。计划要具有一定的前瞻性,在客观条件发生变换的时候要不断完善细化。软件更新速度较快,企业要在软件行业发展中抢占先机,要求管理人员要重视计划的制定,不断完善和优化工作流程。在软件项目管理中,要不断优化人力资源配置,使得每位员工能够对自身职责有明确的认识,工作责任意识明确,职员之间能够做到优势互补。管理人员要具备强烈的责任心和团队意识,不断发现和培养优秀人才。
2.2树立风险管理理念,强化项目管理培训力度
我们要加强软件项目管理人员对项目管理知识学习,各方面都能充分认识到项目管理的重要性和必要性,让项目经理重视对项目管理的知识的学习和一些常用工具和方法使用。不断树立项目管理人员风险管理理念,充分意识到风险管理的重要性,经过充分分析、预测、评估可能的风险,积极探索应对风险的策略。对计划书中风险管理要具有针对性和具体性,真正发挥风险管理在防范风险中的作用。不断通过项目管理培训来强化管理人员实践能力和知识技能。只有具备管理知识和管理经验的人员才能担任管理人员和技术人员,大幅提高项目管理水平。
2.3加强沟通,从整体上对软件项目管理进行把握
软件项目管理有效开展离不开有效的沟通,这要求要不断提高沟通意识,在企业中制定切实可行的沟通机制,使得各项企业政策能够上下通达。在项目管理沟通方式上要不拘一格,实现沟通方式的多样化,如书面沟通、口头沟通,提高沟通的有效性。对于因沟通不畅导致的损失要明确责任归属,确保企业重要内容信息的有效传达。软件项目管理人员要从整体上对软件项目管理进行把握,综合考虑各因素,作出全面的总体计划、阶段计划。同时对于具体问题也要预留空间,确保管理计划能够紧跟软件管理需要。
3结语
1.项目设计要具有可行性
项目驱动教学中受教育者是学习主体,所以在立项过程中教育者要协助学生为其树立正确的理论依据及可行的操作步骤。不能凭借学生自身的想象而不考虑实际的可操作性及可完成性。通过项目驱动的教育模式来取得进步就要根据循序渐进的原则,遵循事物发展的普遍规律,过于困难或者没有实际意义的立项及理念都会使学生们失去兴趣,从而失去了项目驱动教学的真正意义。
2.项目设计的难易程度要适中
难度适中的项目驱动教学方案可以从正面激发学生的自主学习兴趣,过于简单的设计方案不具备实践意义,过于困难的设计方案违反了教育过程的规律性,不会达到真正的教育效果。所以不符合学生情况的设计方案不仅没有起到应有的作用,反而浪费了时间及成本,同时也容易使学生丧失积极性,这个时候教育者要根据难易适中的原则来引导学生对项目思想及步骤进行创新及重组,使得项目驱动教学模式真正深入学生内心,并在未来的学习及发展过程中运用的得心应手,项目驱动教学模式相对于传统教育的灌输模式,对软件技术这种新型课程的学习具有更大的帮助。
3.项目设计要具有实际的应用性
项目驱动教学的意义就是让学生在学习过程中培养主动、积极、创新的学习意识,如果项目的设计不具备实际的应用性,则学生在学习与工作过程中就无法与现实很好地联系,不能够将所获取的知识应用到实际中去,这一点对于项目驱动模式的教学来说失去了其本真的价值。当今计算机网络飞速发展,软件技术专业的知识更新速度更是让人望尘莫及,所以我们要掌握的是学习知识的意识、手段及流程,而不单单是知识本身。所以项目设计要摆脱应试教育的影响,充分考虑其实际的应用性。
二、项目驱动教学模式在软件技术专业中的设计研究
1.在教育者的辅助下充分发挥学生的自主意识
在以往的教学过程中,都是简单的灌输说教模式,很少考虑到学生在教学过程中真正欠缺的是什么,而项目驱动教学模式是以学生为主体,充分发挥其主体意识。在项目设计过程中,学生们可以充分发挥自身的创造力及整合力,在教育者的指导下,按照软件开发方法、开发过程和规范实现各课程小组的项目调研、分析与设计,组织项目小组自评,小组之间展示项目、交流体会、互评,进一步提升个人的实践能力。在这个过程中将软件技术专业所需掌握的知识及学生在学习过程中需要的素质培养方案设计其中,使学生在项目驱动教学模式下得到全面的发展。
2.教学要紧跟软件技术的发展方向和市场的研发动态
计算机软件技术专业更新换代的速度快,要让学生们不断适应飞速发展的软件技术,就要牢固掌握学习的方式方法,通过项目驱动教学展开的活动来紧跟软件技术的发展方向和市场的研发动态。只有在掌握行情的基础上才能不断充实自身的知识贮备及市场的发展需求。在平时的教学过程中,这种灵活的项目设计教学模式帮助学生在实践过程中自发地对市场行情及发展动态进行了解。
3.不断完善学习的资源和学习的环境
针对计算机软件技术专业的项目驱动教学模式,完善的资源及环境是顺利完成教育进程的保障,学校在这个方面应该投入相应资金来进行资源及环境的优化。为了加强学校项目驱动教育的综合实力及培养人才的效率,建立专门的软件工程校内实习基地,将项目研发、实践、实训与实习融于一体,实现教学资源及协作环境的完善,这使得学生在设计活动的过程中能够享受更加完备的资源设施,及更加专业化的教育引导。
4.需加强学生团队合作精神的培养
在项目驱动教育过程中,教师根据项目需要建立相关小组,协助学生在设计过程中按照正规流程分配及安排任务,让不同的学生在不同的设计小组内实现不同的学习任务。在各个项目小组的交流过程中不断总结与分析自身存在的缺点与项目存在的劣势,久而久之就能够让学生们在互相协作的过程中培养自身的团队合作意识。并在共同解决困难的过程中锻炼学生的思维能力、及表达能力及沟通交流能力,使其对团队合作的理解不断升华,并在实践过程中学会沟通与理解,提高了学生们适应社会发展的能力。
三、小结
软件需求是每个软件开发的开端与基础。在项目需求分析阶段,双方必须全面地尽可能细致地讨论项目的应用背景、功能要求、性能要求、操作界面要求、与其他软件的接口要求,以及对项目进行评估的各种评价标准。在进行需求分析时,可以首先分析客户原有系统的建设情况,对客户的原有产品进行分析,明确建设目标等。
需求管理对软件项目能否最终实现产生至关重要的影响。任何的软件项目都必须进行合理的、细致的、一致的需求管理,只有这样才能制定正确合理的软件开发计划,软件项目才能顺利地开发完成。
2、沟通与协作
软件项目管理中的沟通与协作是指信息的交流,是使信息发挥积极作用和达到目标的手段;协作是指和谐地在一起工作的活动。沟通技术可分分四类:(1)正式书面沟通,包括项目文档和备忘录、项目里程碑和交货时间表、需求变更和错误跟踪规程、数据字典、系统分析模型(用例图等);(2)正式口头沟通,包括状态审查会、需求评审会、设计评审会、代码评审会、用户测试,项目定期例会等;(3)非正式口头沟通,包括小组碰头会、同行讨论、与直属业务领导讨论等;(4)电子沟通,包括电子邮件、内部BBS等。协作技术包括资源合理配置、开发步骤有序化、工作目标一致化、提高关心程度、信息共享等。
3、风险管理
软件项目风险管理是指对在软件开发过程中所遇到的预算和进度等方面的问题进行分析,寻求风险应对方法,做好风险管理计划。
针对软件项目中的风险管理问题,不少专家、组织提出了自己的风险管理模型。常见的主要风险管理模型如下。
1.SEI的连续风险管理模型(CRM)。SEICRM模型的风险管理原则是不断地评估可能造成恶劣后果的因素;决定最迫切需要处理的风险;实现控制风险的策略;评测并确保风险策略实施的有效性。CRM模型要求在项目生命期的所有阶段都关注风险识别和管理,它将风险管理划分为五个步骤:风险识别、分析、计划、跟踪、控制。
2.BarryBoehm模型。Boehm模型的思想核心是:10大风险因素列表。针对每个风险因素,都给出了一系列的风险管理策略。在实际操作时,Boehm以10大风险列表为依据,总结当前项目具体的风险因素,评估后进行计划和实施,在下一次定期召开的会议上再对这10大风险因素的解决情况进行总结,产生新的10大风险因素表,依此类推。Boehm模型的基本形式可描述为:RE=P(UO)3L(UO),其中RE表示风险或者风险所造成的影响;P(UO)表示令人不满意的结果所发生的概率;L(UO)表示糟糕的结果会产生的破坏性的程度。
3.软件工程风险模型(SERIM).SERIM模型要求从技术和商业两个角度对软件风险管理进行剖析,考虑的问题涉及开销、进度、技术性能等。它还提供了一些指标和模型来估量和预测风险,由于这些数据来源于大量的实际经验,因此具有很强的说服力。
五、软件项目管理技术
1.CMM。CMM是美国卡纳基梅隆大学软件工程研究所(CMU/SEI)提出的软件研发项目管理的一系列方法,它基于组织对关键过程域的支持,定义了软件过程成熟度的五个级别。级别1(初始级)描述了不成熟,或者说是未定义过程的组织。级别2(可重复级),级别3(已定义级),级别4(已管理级)和级别5(优化级)分别描述了软件过程成熟度级别递增的组织。和这些级别相关的KPA是:级别2:需求管理,软件项目计划,软件项目跟踪和监控,软件子合同管理,软件质量保证,软件配置管理。级别3:组织级过程焦点,组织级过程定义,培训大纲,集成软件管理,软件产品工程,组间协调,同行评审。级别4:定量过程管理,软件质量管理。级别5:缺陷预防,技术更新管理,过程更改管理。
2.CMMI。CMMI被看作是把各种CMM集成为一个系列的模型中。CMMI的基础源模型包括:软件CMM2.0版(草稿C),EIA-731系统工程,以及IPDCMM(IPD)0.98a版。CMMI也描述了5个不同的成熟度级别:级别1(初始级)代表了以不可预测结果为特征的过程成熟度。过程包括了一些特别的方法、符号、工作和反应管理,成功主要取决于团队的技能。级别2(已管理级)代表了以可重复项目执行为特征的过程成熟度。组织使用基本纪律进行需求管理、项目计划、项目监督和控制、供应商协议管理、产品和过程质量保证、配置管理、以及度量和分析。
3.PSP。PSP(PersonalSoftwareProcess,个体软件过程)是由CMU/SEI开发出来的,它的推出在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段,PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计约束准则,而不是设计方法的选择。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。
4、小结
本文分析研究了软件项目管理中的需求管理、员工之间的沟通与协作、软件项目风险管理。最后结合实践,提出并分析了软件项目管理技术。我们相信随着软件工程的发展和进一步成熟,软件项目管理技术的发展会取得更大的进步。在实际项目中,我们要坚持改善软件工程的管理,并在实践中总结适合自身的经验,这样才有利于管理技术的进步和软件项目的顺利完成,创造出更高的品质、更大的效益。
参考文献:
[1]PhpMetzger,JohnBoddie.软件项目管理-过程控制与人员管理[M].北京:电子工业出版社,2002.
[2]RajeevTShandilya.王克仁译.软件项目管理[M].北京:科学技术出版社,2002.
[3]杨根兴,金荣得,宗宇伟.软件需求的不确定性与解决途径.计算机应用与软件.
[4]周伦钢,吴建军.IT软件开发项目管理探讨.郑州大学学报(工学版).
一般来说,软件工程师总是非常乐观。当他们在计划软件项目时,经常认为每件事情都会像计划那样运行,或者,又会走向另外一个极端。软件开发的创造性本质意味着我们不能完全预测会发生的事情,因此制定一个详细计划的关键点很难确定。当有预想不到的事情引起项目脱离正常轨道时,以上两种观点都会导致软件项目的失败。
目前,风险管理被认为是IT软件项目中减少失败的一种重要手段。当不能很确定地预测将来事情的时候,可以采用结构化风险管理来发现计划中的缺陷,并且采取行动来减少潜在问题发生的可能性和影响。风险管理意味着危机还没有发生之前就对它进行处理。这就提高了项目成功的机会和减少了不可避免风险所产生的后果。
2什么是风险
所谓“风险”,归纳起来主要有两种意见,主观说认为,风险是损失的不确定性;客观学认为,风险是给定情况下一定时期可能发生的各种结果间的差异。它的两个基本特征是不确定性和损失。IT行业中的软件项目开发是一项可能损失的活动,不管开发过程如何进行都有可能超出预算或时间延迟。项目开发的方式很少能保证开发工作一定成功,都要冒一定的风险,也就需要进行项目风险分析。在进行项目风险分析时,重要的是要量化不确定的程度和每个风险相当的损失程度,为实现这一点就必须要考虑以下问题:
要考虑未来,什么样的风险会导致软件项目失败?
要考虑变化,在用户需求、开发技术、目标、机制及其它与项目有关的因素的改变将会对按时交付和系统成功产生什么影响?
必须解决选择问题,应采用什么方法和工具,应配备多少人力,在质量上强调到什么程度才满足要求?
要考虑风险类型,是属于项目风险、技术风险、商业风险、管理风险还是预算风险等?
这些潜在的问题可能会对软件项目的计划、成本、技术、产品的质量及团队的士气都有负面的影响。风险管理就是在这些潜在的问题对项目造成破坏之前识别、处理和排除。
3风险管理
项目风险管理实际上就是贯穿在项目开发过程中的一系列管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监控。它能让风险管理者主动“攻击”风险,进行有效的风险管理。
在项目管理中,建立风险管理策略和在项目的生命周期中不断控制风险是非常重要的,风险管理包括四个相关阶段:
风险识别识别风险的方法常用的有风险识别问询法(座谈法、专家法)、财务报表法、流程图法、现场观察法、相关部门配合法和环境分析法等。
风险评估对已识别的风险要进行估计和评价,风险估计的主要任务是确定风险发生的概率与后果,风险评价则是确定该风险的经济意义及处理的费/效分析,常用的方法有:概率分布、外推法、多目标分析法等。
风险处理一般而言,风险处理有三种方法,①风险控制法,即主动采取措施避免风险,消灭风险,中和风险或采用紧急方案降低风险。②风险自留,当风险量不大时可以余留风险。③风险转移。
风险监控包括对风险发生的监督和对风险管理的监督,前者是对已识别的风险源进行监视和控制,后者是在项目实施过程中监督人们认真执行风险管理的组织和技术措施。
在IT软件项目管理中,应该任命一名风险管理者,该管理者的主要职责是在制订与评估规划时,从风险管理的角度对项目规划或计划进行审核并发表意见,不断寻找可能出现的任何意外情况,试着指出各个风险的管理策略及常用的管理方法,以随时处理出现的风险,风险管理者最好是由项目主管以外的人担任。
险识别
风险识别就是企图采用系统化的方法,识别某特定项目已知的和可预测的风险。常用方法是建立“风险条目检查表”,利用一组提问来帮助项目风险管理者了解在项目和技术方面有些风险。在“风险条目检查表”中,列出了所有可能的与每一个风险因素有关的提问,使得风险管理者集中来识别常见的、已知的和可预测的风险,如产品规模风险、依赖性风险、需求风险、管理风险及技术风险等。“风险条目检查表”可以以不同的方式组织,通过判定分析或假设分析,给出这些提问确定的回答,就可以帮助管理或计划人员估算风险的影响。软件项目一般有如下五类风险:
4.1产品规模风险
有经验的项目经理都知道:项目的风险是直接与产品的规模成正比的。与软件规模相关的常见风险因素有:
估算产品的规模的方法(LOC或代码行,FP或功能点,程序或文件的数目)。
产品规模估算的信任度
产品规模与以前产品规模平均值的偏差
产品的用户数
复用的软件有多少
产品的需求改变多少
4.2需求风险
很多项目在确定需求时都面临着一些不确定性和混乱。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造正确的产品。每一种情况都会导致使人不愉快。
与客户相关的风险因素有:
对产品缺少清晰的认识
对产品需求缺少认同
在做需求中客户参与不够
没有优先需求
由于不确定的需要导致新的市场
不断变化需求
缺少有效的需求变化管理过程
对需求的变化缺少相关分析
4.3相关性风险
许多风险都是因为项目的外部环境或因素的相关性产生的。经常我们不能很好地控制外部的相关性,因此缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并且觉察潜在的问题。与外部环境相关的因素有:
客户供应条目或信息
内部或外部转包商的关系
交互成员或交互团体依赖性
经验丰富人员的可得性
项目的复用性
4.4管理风险
尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,并且大部分人都不希望在公共场合暴露自己的弱点。然而,像这些问题可能会使项目的成功变得更加困难。如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目。当我们定义了项目追踪过程并且明晰项目角色和责任,就能处理这些风险因素:
计划和任务定义不够充分
实际项目状态
项目所有者和决策者分不清
不切实际的承诺
员工之间的冲突
4.5技术风险
软件技术的飞速发展和经历丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,比如:培训、雇佣顾问以及为项目团队招聘合适的人才等。主要有下面这些风险因素:
缺乏培训
对方法、工具和技术理解的不够
应用领域的经验不够
新的技术和开发方法
不能正确工作的方法
5风险估计
风险估计,又称风险预测,常采用两种方法估价每种风险。一种是估计风险发生的可能性或概率,另一种是估计如果风险发生时所产生的后果。一般来讲,风险管理者要与项目计划人员、技术人员及其他管理人员一起执行四种风险活动:
(1)建立一个标准(尺度),以反映风险发生的可能性。
(2)描述风险的后果。
(3)估计风险对项目和产品的影响。
(4)确定风险的精确度,以免产生误解。
另外,要对每个风险的表现、范围、时间做出尽量准确的判断。对不同类型的风险采取不同的分析办法。
1.确定型风险估计
(a)盈亏平衡分析
盈亏平衡分析(Break-EvenAnalysis)通常又称为量本利分析或损益平衡分析。它是根据软件项目在正常生产年份的产品产量或销售量、成本费用、产品销售单价和销售税金等数据,计算和分析产量、成本和盈利这三者之间的关系,从中找出它们的规律,并确定项目成本和收益相等时的盈亏平衡点的一种分析方法。在盈亏平衡点上,软件项目既无盈利,也无亏损。通过盈亏平衡分析可以看出软件项目对市场需求变化的适应能力。
(b)敏感性分析
敏感性分析(SensitivityAnalysis)的目的,是考察与软件项目有关的一个或多个主要因素发生变化时对该项目投资价值指标的影响程度。通过敏感性分析,使我们可以了解和掌握在软件项目经济分析中由于某些参数估算的错误或是使用的数据不太可靠而可能造成的对投资价值指标的影响程度,有助于我们确定在项目投资决策过程中需要重点调查研究和分析测算的因素。
(c)概率分析
它是运用概率论及数理统计方法,来预测和研究各种不确定因素对软件项目投资价值指标影响的一种定量分析。通过概率分析可以对项目的风险情况做出比较准确的判断。主要包括解析法和模拟法(蒙特卡罗MonteCarlo技术)两种。
2.不确定型风险估计
主要有小中取大原则、大中取小原则、遗憾原则、最大数学期望原则、最大可能原则。
3.随机型风险估计
主要有最大可能原则、最大数学期望原则、最大效用数学期望原则、贝叶斯后验概率法等。
5.1建立风险清单
风险清单是关键的风险预测管理工具,清单上列出了在任何时候碰到的风险名称、类别、概率及该风险所产生的影响。其中整体影响值可对四个风险因素(性能、支持、成本及进度)的影响类别求平均值(有时也采用加权平均值)。
一旦完成了风险表的内容,就可以根据概率及影响来进行综合考虑,风险影响和出现概率从风险管理的角度来看,它们各自起着不同的作用(见图1)。一个具有高影响但低概率的风险因素不应当占用太多的风险管理时间,而具有中到高概率、高影响的风险和具有高概率及低影响的风险,就应该进行风险分析。
5.2风险评估
在风险分析过程中,我们对风险进行评估时可以建立一个如下的四元数组:
[ri,li,xi,yi]
其中,ri是风险,li为风险出现的概率,xi则表示风险损失大小,yi则表示期望风险。
一种对风险评估的常用技术是定义风险的参照水准,对绝大多数软件项目来讲,风险因素——成本、性能、支持和进度就是典型的风险参照系。也就是说对成本超支、性能下降、支持困难、进度延迟都有一个导致项目终止的水平值。如果风险的组合所产生的问题超出了一个或多个参照水平值时,就终止该项目的工作,在项目分析中,风险水平参考值是由一系列的点构成的,每一个单独的点常称为参照点或临界点。如果某风险落在临界点上,可以利用性能分析、成本分析、质量分析等来判断该项目是否继续工作。图2表示了这种情况。
但在实际工作中,参照点很少能构成一条光滑的曲线,大多数情况下,它是一个区域,而且是个易变的区域。因而在做风险评估时,尽量按以下步骤执行:
(1)定义项目的水平参照值
(2)找出每组[ri,li,xi,yi]与每个水平参照值间的关系
(3)估计一组临界点以定义项目的终止区域
(4)估计风险组合将如何影响风险水平参照值
5.3估计损失的大小
表1是风险分析表的一个例子,可以建立一个用风险、损失概率、损失大小和期望风险这样的风险评估表。
在表1所示的风险估价的例子中,一个理论项目已经识别了从1到20周期间的潜在的几个风险,风险发生的概率范围在5%到50%之间。在现实的项目中,可能会识别出比此表要多得多的风险。
损失的大小常常比概率更容易受到控制。在以上的例子中,可以很精确地估计出完全支持自动从主机更新数据的时间是20个月。根据管理层将在何时讨论项目建议书,可以知道项目不是在2月1日就是3月1日会被批准。如果假定会在2月1日批准,项目被批准的风险大小会比期望的长一些,也就是1个月时间。
如果损失的大小不容易直接估计出来,可以将损失分解为更小的部分,再对其进行评估,然后将各部分评估结果累加,形成一个合计评估值。例如,如果使用3种新编程工具,可以单独评估每种工具未达到预期效果的损失,然后再把损失加到一起,这要比总体评估容易多了。
5.4评估损失的概率
评估损失的概率要比评估损失大小更具有主观性。这里有许多实践方法可以提高主观评估的准确度。有以下方法:
由最熟悉系统的人评估每个风险的发生概率,然后保留一份风险评估审核文件。
使用Delphi法或少数服从多数的方法。使用Delphi法,必须要求每个人对每个风险进行独立地评估,然后讨论(口头或纸上)每个评估的合理性,特别是最高和最低的那个。一轮轮讨论,直到达成共识。?使用“形容词标准”。首先让每个人用表示可能性的形容词短语选择风险的级别,如非常可能、很可能、可能、或许、不太可能、不可能、和根本不可能。然后把可能性的评估转换为数量化的评估(Boehm1989)。
5.5整个项目超限和缓冲
实际上,表1中表示的期望风险的计算数值来源于一个被称为“期望值”的统计术语。设计欠佳引起的风险如果真正发生将花费15周的时间。既然它不是100%地会发生,当然不能预计损失15周时间。但它也不是没有可能发生,所以也不应指望不会发生损失。统计学认为,预计损失的数量是概率乘以损失大小,即15%乘以15周。因此,在这个例子中,预计的是损失2.25周。由于只是谈论计划风险,可以累加所有的风险暴露量来得到项目的全部可预料超标值。这个项目可预料的超标值是12.8到13.2周,这就是如果不做任何风险管理的话有可能超过计划的周数。
超出预期值的大小为整个项目风险控制级别的确定提供了依据。如果例子中的项目是个25周的项目,超出预期值的12.8到13.2周就很明显需要进行风险管理了。
6风险管理策略
风险管理策略就是辅助项目组建立处理项目风险的策略。项目开发是一个高风险的活动,如果项目采取积极的风险管理策略,就可以避免或降低许多风险,反之,就有可能使项目处于瘫痪状态。一般来讲,一个较好的风险管理策略应满足以下要求:
(1)在项目开发中规划风险管理,尽量避免风险
(2)指定风险管理者,监控风险因素
(3)建立风险清单及风险管理计划
(4)建立风险反馈渠道
7风险驾驭和监控
风险的驾驭与监控主要靠管理者的经验来实施,它是利用项目管理方法及其它某些技术,如原型法、软件心理学、可靠性等来设法避免或转移风险。风险的驾驭和监控活动可用图3来表示。
7.1建立风险驾驭与监控计划
从图3中可以看出,风险的驾驭与监控活动要写入RMMP(RiskMonitoringandManagementPlan风险驾驭与监控计划)。RMMP记述了风险分析的全部工作,并且作为整个项目计划的一部分为项目管理人员所使用。
风险管理策略可以包含在软件项目计划中,也可以组织成一个独立的风险缓解、监控和管理计划(RMMP计划)。RMMP计划将所有风险分析工作文档化,并由项目管理者作为整个项目计划中的一部分来使用。一旦建立了RMMP计划,且项目开始启动,则风险缓解及驾驭及监控步骤也开始了。正如前面讨论的,风险缓解是一种问题避免活动。风险驾驭及监控则是一种项目跟踪活动,它有三个主要目标:?判断一个预测的风险是否事实、是否发生。
进行风险再估计,确保针对某个风险而制定的风险消除活动正在使用。
收集可用于将来进行风险分析的信息。
风险驾驭及监控的策略如下:
与在职人员协商,确定人员流动原因。
在项目开始前,把缓解这些流动原因的工作列入风险驾驭计划。
项目开始时,要作好人员流动的思想准备,并采取一些措施确保人员一旦离开时,项目仍能继续。
制定文档标准,并建立一种机制,保证文档及时产生。
对所有工作进行细微详审,使更多人能够按计划进度完成自己的工作。
对每个关键性技术人员培养后备人员。
在考虑风险成本之后,决定是否采用上述策略。
7.2软件项目风险追踪工具
追踪风险的一个办法是将风险输入缺陷追踪系统中,缺陷追踪系统能将风险项目标示为已解决或尚未处理等状态,也能指定解决问题的项目团队成员,并安排处理顺序。可将软件风险项目依序排列出来,按照缺陷存在的时间与负责者等资料排列。这样,缺陷追踪系统就是追踪风险的工作能更好执行并且不那么单调。
关键词:Web;研究性学习;教学网站
软件行业是一个极具挑战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。
1.项目管理在软件开发中的应用的成因
目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成完全适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。
随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。
2.软件项目管理常见问题及解决方案
(1)缺乏项目管理系统培训
在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。
解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。
(2)项目计划意识问题
项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。
解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。
(3)管理意识问题
部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。
解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。
(4)沟通意识问题
在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。
解决方案:制定有效的沟通制度和沟通机制,提高沟通意识;采取多种沟通方式,提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位,例如:除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。
(5)风险管理意识问题
有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。
解决方案:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法,掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。
(6)项目干系人问题
在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、工作职责等没有足够了解以至于无法得到完整需求或最终经权威用户代表确认的需求;或者是多个用户代表各说各话、昨是今非,但同时又要求项目尽早交付;项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。
解决方案:项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。
(7)项目团队内分工协作问题
项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任分工不够清晰而造成工作互相推诿、责任互相推卸的现象;有时各阶段不同角色或同阶段不同角色之间的责任分工比较清晰,但是各项目成员只顾完成自己那部分任务,不愿意与他人协作。这些现象都将造成项目组内部资源的损耗,从而影响项目进展。
解决方案:项目经理应当对项目成员的责任进行合理的分配并清楚地说明,同时应强调不同分工、不同环节的成员应当相互协作,共同完善。
关键词:需求分析用户方干系人项目经理需求分析员
众观国内计算机软件业的发展,除远不如欧美等西方发达国家外,与人均GDP不及我国的印度相比也相距甚远,软件业的劣势正严重制约着我国IT业的发展。我国软件业的劣势表现在自主开发的成熟软件不多,而开发的大量软件工程项目(如ERP等)存在缺陷或完全开发失败。目前,国家正在加大对软件工程的研究和对软件工程人才的培养。根据资料显示,属于需求分析造成软件设计的错误和缺陷约占软件失败的6400,而属于程序代码的错误仅占软件失败的360a,数据表明需求分析是提高软件质量的基础也是决定一个软件项目成败的关键。通过对软件项目管理知识的系统学习并结合近年来自己参与部分软件项目实施的经验,介绍在需求分析研究中探索出的一些有效措施。
1尽快熟悉项目用户方干系人全貌
项目用户方干系人,指所有可能受到项目结果重大影响的人,即项目的风险承担者,他可能是项目的受益者,也可能是项目的受害者。因此,应当从项目的启动开始,需求分析员及其项目成员就要分清项目用户方干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。
有些项目在做需求调查时,由于受进度要求等客观因素影响,需求分析员与建设单位的技术部门交流较多,向业务管理部门和实际使用者调查不够深入,造成软件试用后不得不再对需求做较大调整,“从头再来”的部分比例很高,大大超过进度要求时间。因此,熟悉项目用户方干系人全貌是进行需求调查的第一步,也是需求调查的基础。在定制开发项目的项目用户方干系人中,最重要的是建设单位中的人事组织、业务关系。最好是能够用组织结构图画出相关单位的组织结构;还应当在相关单位组织结构图基础上画出全体项目用户方干系人结构图,以便更好更全面地进行需求调研分析;用责任矩阵确定各部分的调研对象;建立调研对象通讯录以保证调研及分析期间及时的沟通。
2采取正确的需求获取方法
软件开发项目的目的就是要实现项目用户方的需求,项目用户方的需求包含明确的和隐含的,也可以分为NEED,WANT,WISH等不同的层次。如果对项目所有用户方干系人没有进行足够的沟通和影响,使其尽可能地参与项目,则会出现客户方相关责任人不明确或对范围和需求责任心不强,提出的需求具有随意性,项目前期对需求的确认不够积极,或者是多个用户代表各说各话、昨是今非,项目后期需求变化随意等现象,这就会造成项目范围的蔓延,进度的拖延,成本的扩大,甚至项目的完全失败。
各种用户对系统具有不同的要求,如一个没有经验的用户关心系统是否简单易用,对于高级用户则关心产品的易用性和高效性。因而需要对用户进行分类,每一个用户类将有自己的一系列功能和非功能要求。在项目中,要尽早为产品确定并描述不同的用户类,这样就能从每一个重要的用户类代表中获取不同的需求。
项目需求具有双面性(用户与开发商)和多面性(项目中各干系人),因此,项目经理和系统集成者应了解用户干系人需求,用户干系人也应了解技术方面的需求,两者缺一不可。正确的需求获取需要了解需求的来源、用户的分类、用户的代表性、用户需求谁说了算数等因素。开发人员和项目经理要有足够的耐心聆听用户的讲述,要足够详细地了解每一个细节。项目管理者要善于将需求分类、归类,善于将需求文档化,并有所查询标记。
3可视化需求调研,引导各种客户挖掘他们的需求
有的客户因为自己缺乏计算机知识,无法提出完整准确、隐含的或潜在的需求。若这些需求不能满足将导致用户的不满。因此需求调研分析人员应善于想用户所想,不但要确定明确的需求,还要善于用启发的方式与用户探讨隐含的或潜在的需求,并结合各种调研分析技术挖掘超出客户期望的令人兴奋的需求。这就要求需求调研分析员要尽快完整地熟悉相关业务,从而能够站在用户的立场看待软件需求,想用户所想,做好业务与计算机之间的桥梁。利用可视化需求调研的方法可以很好地启发用户深人挖掘潜在的需求。可视化需求调研就是使用图表等工具来启发引导用户清楚地叙述需求,并且使需求更加全面完善。
对于高层领导,可以提供系统总体框架图;对于业务管理人员,可以用业务流程图来描述新旧系统的业务流程;对于客户中的技术人员,可以用数据流图、实体关系图或UMI中的各种图形对系统进行各种角度的描述;而对于业务管理人员、客户中的技术人员、以及各层次各流程中的用户,画出用户界面图来进行需求挖掘,是个比较有效的沟通方式。
这里特别说明一下用户界面的重要性。用户界面的设计按理来说是软件设计的责任,当然客户自己对界面有特别提出要求的除外。但是,如果把它提前到需求调研时与客户进行讨论,则可以大大改善需求调研的效果。因为这时客户对于将来的系统还没有一个形象上的概念,或者有一个模糊的预想的概念需要表述、验证、明晰化、完善化,以笔者的经验,画出用户界面草图与客户进行讨论,可以大大激发他们提供更为准确全面的需求。原来收集资料,描述业务,说明系统模型到了山穷水尽的时候,这种方法可以达到柳暗花明又一村的效果。
4详细描述各项业务,以便让所有客户确认
尽可能全面详细地调查并且描述原有系统和用户希望将来系统具有的各项业务的流程,并将这些业务流程文档化后与客户进行讨论,对描述错误或不准确不精确的进行修改,最终让客户进行确认。从近年来开发的软件看,对业务处理过程了解的完整性和准确性非常重要。虽然对数据来说都是SIDUT(查增删改传),但具体业务都是分为若干步骤,每个步骤都有其业务名称,同一步骤可能对多个数据集进行不同操作,需要调查了解清楚才能设计出适合用户业务特点和习惯的软件,使开发出来的软件更受欢迎。当然在进行软件概要设计时,要尽量排除业务流程的制约,即把流程中的各项业务节点工作作为独立的对象,充分考虑他们与其他各种业务对象的接口,在流程之间通过业务对象的相互调用实现其业务流程,这样,在业务流程发生有限的变化时,就能够比较方便地修改系统程序而实现新的需求。
对于各项业务的调查可以通过对以下资料的收集整理分析来完成,这些资料来自各种各样的项目用户方干系人:遵循的标准、组织发放的工作手册、作业流程、有关业务的上级通知、有关业务的办事指南、办理业务时需要填写的登记表、各种相关的统计报表及通过其他途径收集的类似系统的介绍、技术资料等等。
5对项目用户方干系人的愿望进行平衡
不同的项目用户方干系人其愿望和追求的目标往往相差甚远,因此对项目用户方干系人的愿望进行平衡可能是非常重要而又相当困难的事情。例如:我曾在参与的某医院计算机管理系统项目中,遇到医院管理层希望能够采集尽可能多的信息项以便对数据进行多种多样的统计分析,同时为了对信息进行有效控制而增加一些审批流程;而门诊、药房等对外办公的基层窗口则因为客流速度的压力希望减少信息项的输人量;甚至有些不良的基层部门由于害怕建立透明度高的信息系统会影响他们的利益而消极地应付,即所谓反需求;而客户的客户(就诊的病人)则希望相关机构能够简化工作流程,加快办事速度,增加诊断情况和就诊费用的透明度;甚至项目组本身因为技术、资源、进度等原因,需要对一些功能进行优先级排序和取舍。虽然不是所有人的需求都是可以满足的,特别是消极的反需求是不能接受的,但他们的需求都是应当考虑全面并进行平衡的。
如果不同的用户方干系人有不一致的需求,那么必须决策出满足哪一类用户方干系人的需求更为重要。了解可能使用产品的客户种类的信息和他们的用法与产品的业务目标的关系如何,将有助于决定哪一个用户类所占份额更大。如果系统分析人员提出的需求与开发者所想要开发的系统发生冲突时,通常由于系统分析人员作为客户的人,市场需求具有更重的分量,但是,系统分析人员不能一味地迁就客户需求。
不同的用户方干系人可能都要求产品按照他们各自的喜好来设计。运用项目的业务目标来决定哪些是你最关心的客户,非核心客户的需求可以安排在下一个版本中开发。当开发者想像的产品与客户需求冲突时,通常应该由客户作出决策,然而,不要陷人“客户总是对的”的陷阱中去,现实中,客户并不总是对的。
6强调实现项目需求的层次递进性
了解该系统或者该项目用户所能够提供的最小的工程费用。当预计经费不能支持时,应当考虑将项目分期实施。在系统上、技术上对用户进行引导性建议,使用户了解集成商所要进行的工作,了解集成商是为了帮助用户实现他的需要、达到用户的目的,而不仅仅是为了赚钱,用户更了解集成商,也更了解自己的系统,有利于以后的项目合作、工程实施和系统维护。
分析用户曾用系统模式、数据结构和库模式,看是否保持、共用、转换,这涉及保护用户投资的问题。根据现在工作业务流情况确定现有的工作模式,还应兼顾将来可能会发生的变化、扩展、新规定,及与同国际接轨可能的带来的变化。考查工程实施环境是否有保证,尤其是网络工程,必须在需求调查时充分了解用户领域的实施环境,当不具有实施环境时,要求进行配套设计和环境改造。
7编写需求文挡和进行需求评审与其他项目小组成员协作完善系统需求
文档资料是集成商重要的财富,贯穿于系统集成和项目开发的整个过程,其中包括法律文档、技术文档、资料文挡。文挡要求完整性、一致性、可修改性、可跟踪性。
1.1高校开设课程情况
以南京为例,南京理工科院校中开设了土木工程专业路桥方向的高校较多,这些院校中大部分都购买了相应的土木工程方面的软件,如PKPM结构设计软件,鲁班造价类软件,广联达造价类软件,为了满足学士学位授予权评审要求,因此也建立了相应的专业机房,但是专门开设的有软件应用系列课程的并不多,专业机房的利用率也并不是很高,主要是用于课程设计和毕业设计/毕业论文阶段的集中实践环节教学。民办院校和高职高专、大专院校中对于软件技术应用的课程,开设的相对较多。这样有利于学生在校阶段就能充分接受和社会上需求一致的软件操作训练,从而为日后走上工作岗位做好铺垫。
1.2可开设专业软件技术应用的课程
土木工程路桥方向可开设软件技术应用的课程很多,根据市场需求情况,主要有以下几类。
1.2.1道路桥梁方向设计类课程
路桥类可开设软件应用的课程主要有:道路勘测设计,桥梁工程,路基路面工程,专业软件具体又分道路和桥梁计算机辅助设计软件系统两种类型。目前国际主流道路辅助设计软件主要有:CARD/1,Bently,Civil3D。国内常见的道路辅助设计软件主要有:纬地三维道路设计系统,路线大师,EICAD,海地,天正市政道路,鸿业市政道路及路面结构HTDS2003。国内常见的桥梁辅助设计软件主要有:桥梁博士,桥梁大师,桥梁通等等。
1.2.2道路桥梁施工组织及造价类课程
工程施工组织及工程造价类可开设软件应用的课程主要有:土木工程施工,建设工程造价,工程造价管理,工程合同管理,工程招投标等课程。专业软件主要有:同望公路造价软件、海德纵横公路工程造价软件、广联达系列软件、上海鲁班系列软件、清华斯维尔系列软件、神机妙算软件、南京未来清单软件等等。
1.3存在的问题及原因分析
社会上存在的工程类软件如此之多,各个地区及企业的实际情况不同,对软件的购买也不一样。各大高校对于软件的购买以及开设相关课程,也是针对学生就业市场需求,以及学校年度设备采购计划而定。对于高校中,要熟练地掌握这些软件需要学生在课后花费较多的时间去练习,而这往往是很多学生不愿做的,只要教师不作硬性规定或要求,主动学习和应用这些软件的学生凤毛麟角。因此,直到大学毕业,真正能够掌握或部分掌握这些软件的学生极少[3]。鉴于以上的情况,高校路桥方向开设软件信息技术类课程,主要还存在着以下几方面问题。
1.3.1现有软件开发合作不理想
现有软件开发缺乏统一部门的管理,从而导致很多软件功能基本相同,只是适用地区不一样。同时,很多软件公司里面的员工大多数是计算机等专业出身,对工程实际并不很熟悉,从而设计开发出来的软件,在处理真正的工程实际时,会产生一些偏差。
1.3.2教学资源及人才的缺乏
各大高校中的教师,绝大部分是本科—硕士—博士毕业而来,教学经验虽然非常丰富,实际工程经验相对较差,因此教学缺乏与工程实际接轨。
1.3.3学生的主动学习意识还不强
学生在校阶段的学习时间非常有限,对于软件应用类的课程,必须要求学习者经常上机操作,熟能生巧,应用软件来解决实际工程图纸中的问题,这样,软件应用能力才能不断得到提高。
1.3.4地区行业标准相对独立
由于不同的地区有不同的建筑行业标准,这就使得教师在训练学生软件操作时,必须选择采用某一个省份的地区定额作为教学需求,很多教师都是选择学校所在地的省份的定额,但学生来自全国各地,因此,当学生毕业后如果回到家乡,对于工程软件部分就必须按照工程所在地的操作来进行。
2提高专业软件化程度的措施
2.1高校方面
1)高校工程管理专业编制教学计划的时候,就应该充分考虑,在满足学生修满学分,不额外增加学生学习压力的前提下,开设专门的软件应用课程,而不是仅仅在课程设计或毕业设计的时候集中培训。2)对于软件的选择,高校在购买软件的时候,要充分考虑市场对软件的评价或用户的多少,而不能单纯考虑价格,尽量购买专业方向的主流软件。我校在充分调研论证的基础上,先后购买了有关专业软件。如天正建筑CAD、鲁班系列软件、PKPM系列软件,EICAD,桥梁博士。为我院土木工程专业路桥方向学生全面提高计算机专业软件应用能力和水平,实现理论与应用有机结合,路桥方向应用型实践教学体系改革奠定了基础。3)机房的管理。专业教研室应建立自己的专业机房,同时配备专业的维护人员。4)教师培训。学校应鼓励教师参加各种软件培训,然后服务于教学。5)积极参加各种软件开发商举办的高等院校软件竞赛。目的不是在于获得奖励,主要是能和其他兄弟院校的学生同台竞争,从而找出自己的差距。6)校企共建“双师”结构的实践教学团队。通过引进、培养补充紧缺专业人才,加强专业带头人培养和骨干教师队伍建设,强化“双师结构”教师队伍建设。7)加强实习基地建设,提高生产实习、毕业实习和毕业设计水平。
2.2学生方面
1)鼓励学生认真学习路桥方向各种软件,而不是仅仅为了应付考试,因此,对于软件课程的考核,不应采取课堂考试的形式,可采取机房上机考试,或者布置大作业的形式,让学生充分思考后独立完成,才能达到应有的教学效果。目前,计算机辅助设计已广泛应用于土木工程领域,在毕业设计中加入计算机辅助设计的内容,是提高毕业设计质量与学生计算机应用能力的重要途径[4]。我院根据教改项目的构思,在毕业设计中加入了专业软件应用。目前已经在2013,2014届毕业设计中实施,同时计划在往后的毕业设计中进一步加大专业软件的应用。通过毕业设计环节的锻炼,学生专业软件应用能力得到很大提高。2)学工部组织成立软件应用兴趣小组或社团,让学生充分了解软件信息后,才会更认真的学习。3)鼓励学生报名参加各种软件竞赛,走出校园,了解其他兄弟院校的同学情况。同时,对于获奖的学生,应给予表彰。
3结语
软件工程师应当对所需开发的软件本身以及计算机系统有一定的了解深度。首先,软件工程师要明确相应用户的需求问题,并针对这些问题给出相应的解决方法来满足这些需求,这个过程主要考虑以下问题:①准备做什么?即软件工程项目的功能是什么?②I/O分别需要哪些数据?如何处理?③用什么样的平台来进行开发?这些问题将和用户进行共同协商,最后由开发者的团队以及厂商共同拟定所开发软件的规格参数。软件工程项目的系统设计应从硬件和软件两方面着手。硬件方面,需明确整个开发与维护环境的硬件框架,包括机房的大小、机箱的配置、服务器的架设、电缆与通信设施的完整性、控制台的规格等;软件方面,需要把待烧写芯片的程序规模、程序处理规格、操作系统规格、I/O数据信号的定义、I/O来源与接口等条件明确清楚。除此之外,还需要定制计算机处理程序的算法,规定程序与硬件之间的相互关系、维护处理的时钟周期,软硬件的可扩充性等。所有有关程序方面、接口方面、硬件方面、数据库方面的各种条件参数都要在系统设计的初级阶段规划好,软件工程项目的设计就像一个金字塔,而地基就是这些条件参数,只有打好了地基,才能保证接下来的工作顺利进行。
2软件工程项目自动化管理
2.1数据管理软件工程项目的自动化管理人员需要定期对自动化操作设备各项指数进行严格的校验,按照相应的标准规范对设备数据进行抽样采集与处理,通过人工的校验计算或者其他可用的软件工具来对数据进行比对与调试,调试后根据结果来判断设备是否运行有误。经过一系列校验之后若确定了设备可以正常运行,则将本次校验过程与数据记录在数据库中,然后开始启动设备使其开始运转。软件工程项目自动化运行中产生的数据非常重要,这些数据对于整个系统的扩展与改进都是至关重要的,所以需要做到实时的、多重的备份,避免一台存储设备故障后造成不可避免的数据丢失,可以使用类似企业内部的具有云存储功能的软件进行备份。云存储具有如下优点:①可扩展性。云存储往往具有无限扩展能力。按照目前的云存储技术来说,存储空间已经彻底不是瓶颈了,企业及个人不再需要担心空间不足而增加投资;②效率高。云存储的存储技术是非常先进的,比如多重备份、压缩备份、加密备份、重复数据筛选、虚拟化服务器、虚拟化存储、数据优化等,为企业和个人提供了各种高效的存储方案;③可恢复性高。本地磁盘中的数据被误删之后,恢复工作往往非常耗时。从云存储中的数据恢复则非常快捷,只需找到删除时间点然后通过广域网进行传输即可,既省去了本地设备控件,又节约了时间;④可复用性。建立本地磁盘存储需要大量的资金支持,而一旦出现灾难性事故,则所有数据不可避免遭受损坏。对于无力负担灾难恢复或者想降低成本的企业来说,通过云存储离线备份将是最佳选择。
2.2环境与设备管理软件工程项目自动化运行过程中,环境因素对硬件设备的影响是至关重要的,环境要保持干燥,避免尘土、烟雾以及磁场干扰,尽量消除噪音以及避免温度过高或者过低等等。在软件工程项目的扩展过程中,需要对第三方硬件设备进行仔细的考察,确定其是否能够和当前的系统以及项目兼容,并且应用了第三方硬件之后应当在一定时间内记录数据变化,以及时发现是否存在问题,若存在问题,要及时向有关职能部门汇报。若有必要将硬件设备进行调整更换,也必须在经过了严密的数据与逻辑分析之后,确定所需要更换的设备可行,向有关职能部门汇报后进行更换。除此之外,企业员工还应当遵循如下规定:①每个人对所分配的设备必须爱护与定期维护;②每个人只能使用本部门的设备,未经同意禁止跨部门使用;③所有设备未经授权时,不得自行拆、改、换任何配件;④未经同意不得擅自加入外来设备。
2.3软件测试管理软件测试管理是软件工程项目的结晶,是软件工程中的一个重要组成部分,对于整个系统都具有重要的意义,软件测试管理不仅仅能够拣选系统中出现的漏洞与错误,更是体现了在经过各种技术方法测试之后,对于软件工程项目质量提高的信心所在。但是个人的智慧总是有限的,开发者无法预先知道所开发的软件中有多少漏洞和错误存在,所以即便经过了测试阶段,依然不能保证软件中不再存在问题。不过,在通过了数次的软件测试之后,可以对软件系统中存在的一些问题以及可能出现的后果进行定性地评估,将出现错误的几率控制在可以接受的范围之内,这些都可以大大提高软件系统的可靠性,尤其对于医疗监控、航空航天系统来说,软件测试更是必不可少的环节。软件工程项目自动化测试相对于传统测试来说具有很多优势。自动化测试由一套逻辑缜密的测试标准组成,具有一套完整的自我测试过程,它可以在很大程度上避免个人习惯性思维所造成的疏忽,也可以减少传统测试中重复工作所带来的误差。同时,自动化测试是具有缜密逻辑的一套测试步骤,能够追踪到错误信息出现的时间与位置,并且进行场景再现。由此可见,自动化测试将给测试人员带来很大的方便,所以自动化测试也成为了提高测试效率与确保测试成功率的重点研究对象。常见的软件测试模型有CMM模型、TMM模型等。
2.4安全管理通常情况下,企业或公司内部所进行的软件工程项目自动化开发的数据都是属于该公司的内部保密数据,所以从开发人员到管理维护人员来说人人都必须遵守公司的内部保密规章制度,在未取得权限之前不得向外界任何关于保密数据的信息。在保密措施方面,可以在计算机设备中使用暗码,阻止不相干人员接触到核心数据,并且这种暗码的特性决定了它是很难被破解的;含有保密数据信息的工作间须安装监控摄像头,随时记录各个员工对于计算机的使用情况;计算机内部安装记录软件,使其保留每个员工的操作记录;含有敏感数据的计算机不得连接公共网络,需做到只连接内网或彻底断网运行。各种保密措施应用到位之后,基本上就可以杜绝因个人原因而导致的敏感信息外泄的可能性。例如国内著名的奇瑞汽车集团,其内网安全体现在“4个管理”上,即为外设安全管理、核心数据管理、互联网应用管理与应用程序管理。这4个管理关系着奇瑞内部员工工作的方方面面,能够有效阻止内部敏感数据信息泄露。数据信息在存储和传输过程中也面临着一些安全风险。通常来说,存储介质必须符合以下规定:包含敏感信息的移动设备必须由专人保管与看守;删除存储介质上的敏感信息后,必须对存储介质进行彻底格式化并且在存储区域填入无用信息对存储区域进行覆盖;存储媒介出入库的情况必须通过安全系统授权并保留记录;对数据信息的传输过程应采取对应安全级别的加密技术(对称加密与不对称加密等);敏感数据信息在传输过程中必须使用数字签名,这样可以使信息具备不可否认性。除此之外,还应当保证系统中计算机密码的安全性,密码安全应当遵循如下原则:采用大脑记忆密码,不得在书面媒介上出现密码,更不能出现在电子邮件中;不采用缺省密码;密码由专人设置记忆,不与其他人分享;若密码泄露,必须第一时间修改;密码强度要足够高;强制指定密码的有效期;禁止交互式登录;每周检查一次口令强度。
3总结
一引言
项目管理技术是软件工程专业的一门重要专业课。其教学任务是使学生了解和掌握项目管理的基本概念、基本原理和工程化方法。内容涉及项目管理知识体系(PMBOK)九大知识领域和五个标准化过程组,几乎涵盖了软件项目从立项到结束的方方面面,是一门具有相当广度的课程。然而,该课程的教学效果却不容乐观。
其一、项目管理技术的理论知识多脱胎于工程管理领域,由于国内软件工程专业建设刚刚起步,相关教材往往照搬工程管理理论,缺乏完全针对软件开发的必要整理和筛选。因此同软件开发实践结合并不十分紧密。
其二、而传统的教学方式往往重理论而轻实践,教师将理论知识“满堂灌”给学生,学生“死记硬背”理论条文,并不懂得如何将理论用于实际软件开发。这种仅以理论的多寡深浅作为对学生评价激励唯一标准的教学手段,必然导致培养的人才实用性不强,职业能力较差,工程化程度较低。达不到项目管理技术的教学要求。
因此,需要对软件项目管理技术的教学进行改革。二基于具体项目的软件项目管理教学软件工程项目相比一般工程项目具有更强的复杂性和更多的不可控因素,传统的项目管理教学所传授的知识常常不易使理论知识和实际开发吻合,给学生造成“学习无用之感”;课程本身也难以完全包括软件开发过程的全部情况。最好的方法是通过一个具体软件项目的开发过程,使学生接受项目管理的理念,而软件项目的开发设备相对单一,团队人数相对较少,相比一般工程项目更易进行实践演练。
可以看出,项目管理进行过程将根据实际情况不断进行计划变更、计划控制和计划执行的搏弈和循环。由于软件项目有以下特点:
(1)软件产品是无形的,不可捉摸的,无法感觉形状,设计也难以直观表示,很难确定产品质量或估计开发工作量。
(2)由于软件的拷贝生产轻而易举,因此,几乎全部的软件项目成本在开发过程中,而不是在制造过程。
(3)软件开发过程属于劳动密集型过程,尚未实现完全自动化,因此对软件项目开发进度的计划和控制比对一般工程项目更加复杂。
(4)软件是逻辑实体,本身很容易修改,但由于其复杂性,又很难正确地修改,在缺乏沟通的情况下,对个别模块的修改可能会带来新的错误。
(5)软件不像其他产品会因使用而磨损,和一般工程产品不同,软件产品的维护常常通过增加新模块功能完成升级。为保证新版本的稳定性,常常需要对新版本的重新设计因此,软件过程主要集中于软件项目的开发过程,而在这一过程中,相比一般工程项目,项目管理过程组的核心循环表现得更加突出。基于具体项目对软件开发过程进行阐述将更有利于学生理解软件开发过程中的项目管理。由于课程目标并不在于具体技术细节的学习,而在于体会软件开发过程中的项目管理。因此在项目选择中,不能使学生投入过多精力在技术细节上,而应更多的关注软件项目管理的沟通、计划和控制。我们选择计算机学院行政管理系统网站作为实践项目让学生组队开发,这一项目属于MIS(信息管理系统)项目类,难度不大,且能充分体现软件项目需求不明确、多变、沟通复杂等特点。作为计算机学院的学生,学生对项目的需求的理解也将更加实际。
2.1基于项目驱动的评价体系“为了解决软件问题,重要的第一步就是将整个软件开发任务看做一个可控的、可度量的以及可改进的过程。”将项目管理方法运用于具体软件项目开发的实践或在实践中改进现有方法,能够帮助学生更好的掌握项目管理技术。在实际教学中,我们将学生分成若干团队,每个团队8~13人,充分使学生体会到团队感,增加管理意识。项目经理是靠干出来的,不是靠背出来的。为使学生在具体项目实践中更加投入,必须改革原有的基于卷面成绩的评价体系。我们提出基于项目驱动的评价体系,使学生自觉将课堂所学的理论知识及时用于项目。学生的总评成绩将由团队项目评分、演练与总结评分、期末论文评分三部分组成:
(1)团队项目评分:60%其中20%由教师根据团队分阶段提交的项目资料给出;剩下40%由每个团队的“项目经理”根据团队的成员的表现给出。而项目经理的打分权限则取决于项目完成时专家对项目的评审得分。
(2)演练与总结评分:20%项目结束后各个团队成员对整个项目管理过程进行总结,评价和反思项目经理的管理过程,教师根据学生个人上课时有关项目的各种演练表现以及项目总结报告进行评分。
(3)期末论文评分:20%要求学生对项目管理九大知识领域进行一定深度的论述。为确保评价体系更加公平、公开、公正,我们规定:
(1)项目经理享有计划和分配项目团队资源,为项目组成员进行打分的权利,同时具有带领项目组完成所有课堂演练环节,完成项目开发的义务。作为奖励,项目经理可以直接获得满分的演练与总评成绩;作为制约,项目经理为自己所打分数只得在项目评审得分5%上下浮动,如果项目经理引起过团队半数以上成员不满,将被弹劾,一旦弹劾,相应权利和奖励同时消失。
(2)项目评审后,项目经理将得到“项目评审得分*团队开发人数”的可分配分数,项目经理根据项目组分数分配方法给团队成员打分,上限为40。
(3)项目评审时将邀请学院软件工程专家、需方代表不少于5人组成专家组对各团队项目进行公开评审,评审将从需方满意度、项目开发文档、项目开发过程三个角度进行打分。团队最终得分通过delphi法得到。可以看出,在以上的评价体系中,基于项目驱动的评分所占比重相当大,不仅注重项目的结果,同时注重项目开发过程。学生的分数在一定程度上模拟了现实生活的“奖金”,而项目团队则更加贴近现实生活中的软件开发公司。为了使项目成功,学生必须自觉地实践和探索科学的项目管理方法,不论成功与失败都将成为学生宝贵的经验和教训。评分中,由于个体学生所能获得的成绩与其所在团队成绩紧密相关,因此,为整个团队获得高分而努力的开发过程极大地培养了学生的团队协作精神。通过教学实践,这一评价体系调动了学生的学习主动性,起到了较好的作用。超级秘书网
2.2基于项目过程的知识传授和情景演练表1显示了项目管理九大知识领域在五个标准化过程组中的作用。可以看出在不同的过程组中,各知识领域所起的作用是不同的。配合实际项目开发的过程,为使所传授的知识能够及时用于实际项目,我们颠覆了原有教材顺序,按软件项目五个过程组所涉及的知识领域对教学顺序进行重新安排,基本做到项目进行阶段与所传授的相关知识同步。每次课程教学前后都及时安排对相关内容的情景演练。由表2所示教学实施安排表可以看出,项目管理的九大知识领域几乎都能做到安排于项目情景中进行传授,起到了理论对实践的指导或总结作用。可以看出,每次演练环节一般都是对上次所本传授知识的总结或当次所传授知识的及时操练,知识点覆盖较全面。通过设身处地去当一名项目经理或软件工程师,增加了学生对软件开发项目的感性认识和兴趣,提高了他们的管理才能。通过知识传授和情景演练的密切配合,使学生对软件项目的管理过程理解得更加深刻。
二结论
基于具体项目的项目管理教学使学生能够体会项目管理各知识领域的作用,领会各种方法、规范所适用的环境。通过实际开发后自己总结提炼的经验和教训,学生将更加接受项目管理的理念和知识,培养了团队合作精神。在学期末进行的教学效果调查中,83%的学生认为这种教学方法效果良好。学生普遍反映“项目管理枯燥的理论知识变活了,知道怎么用了,印象更加深刻了。”
项目管理是软件工程重要的专业课,在今后的教学实践中,我们将继续改进教学方法,做到量体裁衣,因地制宜,加强教学效果。
参考文献:
[1]韩万江,姜立新.软件项目管理案例教程[M].北京:机械工业出版社.2005.
[2]张海藩.软件工程[M].北京:人写作论文民邮电出版社,2002.