前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的软件开发项目总结主题范文,仅供参考,欢迎阅读并收藏。
与一般项目相比,软件开发项目存在一些独有的特点,而这些特点的存在使得要想真正做好软件开发项目的管理工作是十分困难的,其在管理方法上与传统项目管理存在着一定的差别,一些通用的项目管理理论或者项目管理方法并不适用于软件开发项目的管理。在这种情况下,对软件开发项目管理进行相应的实践探究,就显得非常必要。
关键词:
软件开发项目管理;实践
进入21世纪后,伴随着计算机技术和网络技术的飞速发展,各种智能终端设备逐渐兴起,也使得人们对于软件的需求达到了一个前所未有的高度,推动了我国软件产业的发展。而在软件开发过程中,需要切实做好项目管理工作,提升管理水平,才能够促进我国软件产业的进一步发展壮大。
一、软件开发与项目管理
简单来讲,软件开发就是依照客户的需求,构建软件系统或者系统中的软件部分,其是一项包括了需求捕捉、需求分析、设计、实现和测试的系统工程,需要借助某种本程序设计语言实现。软件开发的主要流程包括:需求分析、总体设计、细部设计、编码、单元测试、综合测试、运行以及维护。项目管理则是指在一定的约束条件下,为了实现某个特定的目标,依照项目自身的内在逻辑规律所进行的系统管理活动。相对于软件开发而言,项目管理需要遵循几个基本的原则,一是依照分阶段的生命周期计划,进行严格管理;二是做好相应的阶段性评审;三是重视产品控制;四是应用现代程序设计技术;五是确保开发人员的专业素质较高,同时对人数进行控制;六是必须能够对结构进行清晰地审查;七是必须承认软件工程实践持续改进的必要性[1]。
二、基于软件开发的项目管理实践
以智能手机系统为平台,针对手机软件开发的项目管理实践进行简要分析和讨论。
2.1需求分析需求分析是软件开发的基础与前提,能够获取和记录系统需求,确保客户与项目团队在系统需求变更上的一致性,避免软件开发过程中不必要的弯路。需求分析法包括了用户问卷调查、研讨会以及原型展示等,需要安排专人做好相应的记录工作,并及时对其进行总结和归纳,做好应对策略。在该项目中,软件需要满足的需求包括:适用于主流手机操作平台,充分考虑不同硬件配置以及操作系统版本的兼容性;可以跨平台运行,同时不需要占用过多的系统资源;确保数据连接的速率以及操作的流畅性等。
2.2设计编码系统设计包括了总体设计和细部设计两个不同的阶段,其中,总体设计应该大致规划出软件的功能模块,做好相应的功能分区,并对其进行初步的设计分析,细部设计则需要给出每一个功能模块的控制流程、算法以及数据结构等,确保每一个模块都有不同的层次。对于一些难度较大、涉及面较广的模块,可以交给一些经验丰富、心细缜密的技术人员完成,并做好模块的测试与修改,保证其稳定可靠,尽可能降低风险与成本[2]。设计完成后,需要进行编码工作,采用代码版本管理工具SVN,以确保各个子系统的功能都能够得到最大限度的发挥,实现系统之间的功能互补,从而降低软件开发的风险和难度,提高软件过程的跟踪率。
2.3测试运行软件测试并非单纯的某个环节,而是贯穿于整个软件开发项目中,制定出详细全面的测试计划,并对测试用例进行用心编写。软件中的每一个子模块都应该由编程人员之外的技术人员进行反复测试,同时对测试过程中出现的问题进行记录,提出相应的修改意见,由相应的编程人员进行修改。在对测试用例进行编写时,需要对测试目标、测试环境、测试步骤、预期结果等进行记录,形成具有代表性的数据信息。在测试完成后,需要首先在小范围内,对软件的子模块进行试运行,确认无误后再对软件整体进行试运行,结合运行反馈结果,评估软件的可靠性,采取相应的完善措施。试运行成功后,需要编写相应的用户手册,制作视频说明,帮助用户了解和使用软件,同时标注联系方式,方便用户进行反馈。
2.4后期管理在系统安装试用一段时间,具备相应的验收条件后,需要进行验收准备工作,对之前的工作进行总结,列出工作成果和相应的文档,审查相关技术文档中的内容和信息。应该对系统当前的完成状况进行明确,对于尚未完成的部分,应该采取有效策略去完成,或者设置相应的回避措施,确保客户在验收时不会提出这些未实现的需求。在交付使用后,需要做好软件维护工作,结合需求变化或者硬件环境变化对程序进行修改,确保其具备良好的实用性和适用性[3]。
三、结语
综上所述,软件开发项目管理与一般的项目管理存在着很大的差别,需要相关技术人员结合软件开发的具体流程,做好全过程管理,保证管理效果,在完成预定功能目标的基础上,提升软件的可靠性与安全性,确保软件的有效应用。
参考文献:
[1]刘宇柯.基于CMMI的软件开发项目管理研究[D].广东工业大学,2015.
[2]鲁成祥,吕培强,庞新莹.基于Android平台软件开发的软件项目管理实践研究[J].软件导刊,2012,11(8):10-13.
上述文献中存在着两个缺陷:一是虽然在软件开发项目经济分析时考虑了项目内含的实物期权价值,但在项目投资决策分析中却仍然遵循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)开始的实物期权,这相当于一个美国式的买方期权(CallOption)。该期权的执行条件是:推迟项目可以使得管理人员获得更多(额外)的有关项目的信息,在此基础上,有利于管理人员采取管理行动,而且,一般来说计算机硬件,软件的价格随时间迅速下降,推迟项目会有利于降低开发成本。但同时也应看到,推迟项目也可能导致项目收入的损失和企业竞争优势的丧失,即推迟项目具有机会成本。在项目决策时,应综合全面考虑这两方面因素。因而,在项目决策时,除了筛选项目外,还应考虑这一实物期权的价值,在时间许可的范围内,决定最佳项目开始时间。
在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所示:
关键词:软件企业能力成熟度模型软件过程改进
一、引言
CMM是软件过程能力成熟度模型的简称,它主要用于软件开发过程与软件开发能力的评估与改进,CMM自问世以来备受关注,在很多国家与地区得到了广泛的应用,成为衡量软件公司软件开发管理水平的重要参考因素和软件过程改进事实上的工业标准。
二、CMM的主要用途有
1.软件过程评估。软件过程评估主要用于软件企业自身内部的软件过程的改进问题,目的在于发现缺陷与不足,提出软件过程改进的方向。在评估过程中,由经过CMM系统培训的专业人员调查,评估与鉴别软件过程中存在的问题,确定出企业软件过程的现状,从中分析出企业最急于解决或者最重要的与软件过程相关的问题,将问题汇报给企业管理层,以便取得企业管理层对软件过程改进的支持。
2.软件能力评价。对接受评价的企业或软件开发小姐,评价出他们在一定条件下,即资金与时间的约束条件下能否按时按质完成软件开发项目的能力。分析出其能够承受风险的系数大小。通过利用CMM确定评价结果后,可以利用这些结果确定选择软件外包企业的风险,也可以判断相关企业在软件开发过程中的工作进程,指导他们改进相关的软件过程。3.软件过程改进。CMM可以用于指导软件开发企业优化软件过程,对软件过程进行计划,制定与过程定义。CMM指出了软件企业如何摆脱无序与不成熟的软件过程,形成一个成熟的有规律的软件过程所必经的优化与提高的途径。同时CMM也列出了达到每一个成熟度等级所必须关注的软件过程的关键内容,即软件过程域,以及完成每一个软件过程域所必须要做的关键实践。随着软件企业CMM级别的提高,软件企业的软件过程能力成熟度不断地增长。
三、中小型软件企业在软件开发过程中的特征
不同企业有不同的情况,例如不同的规模,企业文化,技术水平,不同的优劣势,所以在实施软件过程改进时,要根据不同企业的特点有所裁减,要在软件过程改善时,有针对性的发挥优势,减少劣势所可能造成的负面影响。中小软件企业相对于大型软件企业有以下鲜明特征:第一,由于企业规模的限制导致中小软件企业大多数从事的是系统集成软件的开发,即特性软件的开发,人员规模与资金规模相对于大型软件开发企业的有限,使中小软件企业很难花费大量时间对开发员工进行彻底的软件过程改善的培训,且在软件发行过程中很难进行良好的商业宣传与运作,这些都是由于规模有限产生的负面效应。第二,在企业文化上,中小软件企业的员工可能参与到软件开发流程中的各个环节与方面,例如需求分析,设计,开发或测试。在开发过程中的职责划分上,以员工为中心而不是以角色为中心。软件开发层次不明晰,不利于保障软件开发质量,因为不能做到像大型软件企业那样,设立不同的专业软件过程组来进行软件过程改善,比如划分了专门的软件工程组与软件过程组等。第三,中小企软件企业的项目成功主要依赖于核心开发人员的技术与管理能力,企业缺乏明确定义的软件过程,虽然这种开发模式能确保开发过程中的灵活性与自由化,但同时造成少部分人的工作量超负荷,也使得成功的开发模式与经验得不到有效的继承,限制了软件开发能力的提高,中小型软件企业的人员变更相对频繁,这使得软件过程改善必须以软件过程及其活动为中心,而不能以某个员工为中心。第四,中小型软件企业的沟通比较容易,这造成各项工作的文档化程度不高,主要是通过交流来达到监控项目的目的,几乎没有或者很少有库存的过往开发项目的文档资料。
四、CMM在中小型软件企业中实施的步骤
1.需求管理。从客户处获取原始需求,经分析后形成需求说明书,获得客户授权与认可,软件开发项目组评审需求说明书,加入配置管理,创建需求基线,对需求的开发状况进行跟踪,要及时了解需求的变化与实现情况,一旦需求变更,需要按配置管理变更流程的执行。
2.软件项目计划。软件项目计划是软件项目跟踪与监控的基础,项目经理根据需求说明书进行估算,拟定软件项目计划,交上交软件开发计划给上级部门评审与审批。审批通过后,加入配置管理。
3.软件项目跟踪与监控。项目经理使用进度表进行监控,根据项目的实际执行情况,拟定进度报告,并得到项目组相关成员的确认,一旦计划与实际执行情况有偏差,项目经理要发现差距,并形成问题报告。高层经理审查项目报告,监督项目经理修正计划和解决已经存在的问题和风险。
4.软件质量保证。如有专人负责软件质量保证,可拟定专门的质量保证计划,根据计划进行审查,记录下不一致的问题,将问题记录到项目问题日志,了解问题的解决情况,并定期向高层经理汇报。
5.软件配置管理。如有专人负责软件配置管理,可以拟定专门的配置管理计划。创建开发域和基线域,开发人员在各自的开发域上工作,软件配置管理则标识配置项并加入基线域。在各个阶段结束时创建基线,对配置项和基线进行审计。质量保证人员定期审计配置管理活动。
6.同行评审。项目经理确定评审的人员、时间与地点,将相关材料发给评审人员,评审人员评审材料,记录发现的问题,如果时间充足,以会议方式进行交流,否则由项目组成员各自提交发现的问题,最后汇总发现的问题,由项目经理指定相关人员跟踪解决问题。
五、CMM在中小型软件企业中实施的策略
对项目组相关成员进行CMM的培训,对软件企业当前的工作流程进行分析,整理及文档化,制定一个适合本企业的软件过程。合并管理任务,没有必要重复设置经理职位,可以把相关工作交给有关人员实施,个人可以执行项目或者组织中的多个角色。建立合理的组织结构,成立软件工程过程组,同时软件质量保证部门要独立于研发及测试部门。可以合并的文档就合并,可以消除的文档就消除,从而减少生成文档的负担,保持文档的简单性。适当合并评审实践,把评审实践非正式化,充分利用其他会议或者碰头机会解决评审需求。在软件开发过程中,将CMM与个体软件过程PSP和小组软件过程TSP有机地结合起来,以帮助提高软件企业的开发管理能力。
总结:
关键词:  ;软件开发项目; 质量功能展开技术; 模糊层次分析法; 质量屋
中图分类号: TN830.1?34  ;  ;  ;  ;  ;  ;  ;  ;  ;  ; 文献标识码: A  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;文章编号: 1004?373X(2014)23?0118?04
Application of QFD and FAHP in software developing
ZHANG Zi?nan
(Commercial College, Hohai University, Nanjing 211100, China)
Abstract: The applicability of quality function deployment (QFD) technology in software developing projects is analyzed. The fuzzy AHP (FAHP) is brought in the method based on the traditional QFD technology. Based on the basic theory of fuzzy AHP, the trapezoidal fuzzy numbers is adopted to score for  ;the customer needs, so as to improve the coordinated management of the three parties in the software  ;project developing process.
Keyword: software developing project; quality function deployment technology; fuzzy AHP; house of quality
0  ;引  ;言
信息化时代的来到,给软件市场带来了良好的机遇。我国众多软件开发团队的追求目标是在现有预算内及时开发出切合客户需要的高品质软件。作为软件开发中最关键的一个输入,顾客需求对软件开发团队管理的重要程度,决定了软件产品开发的结果。但是,需求的变更来自各方面的因素,这使得其成为大多软件产品开发中最不稳定的一个因素,因此,持续变化的需求是整个软件生命周期中的固有状态。同时,软件领域存在的各种问题逐渐凸显出来,其中很大一部分是由于项目评估不准确,投资者决策失误,同时开发团队未能准确理解顾客的期望和需求,导致层层偏差背离开发计划。解决软件产品开发中的需求变更控制是当今面临的一大课题。
软件产品具有需求规模化、多样化的特征,这使得软件开发与制造难度大幅度提升。尽管软件开发的实践和研究已经取了显著的成果,可危机却依旧存在。软件开发团队所面临的最大问题就是顾客对其产品不满意。究其原因是消费者、市场部门与开发团队的逐层传递中出现沟通的误解,导致了设计各子过程接口模糊,信息被错误地传递或得不到传递。间断现象造成的结果就是软件产品无法满足顾客的需求。因此,在软件开发策划过程时,科学的技术和方法是保证产品最终满足市场的重要保障。
本文采用质量功能展开(QFD)技术在软件开发中的适用性和建立模糊语言评价集及其对应的模糊数集,利用模糊层次分析法(Fuzzy Analytic Hierarchy Process,FAHP)进行评价和决策,从而有效地处理需求的模糊性和多变性。通过模糊QFD技术对软件项目开发中的模糊信息进行处理,构建基于模糊QFD的软件项目开发过程协同管理模型。
1  ;基于QFD的软件项目开发管理
1.1  ;QFD技术及其特点
QFD技术是一种将顾客需求转化为产品各阶段设计要求的有效工具。例如,在软件开发过程中,软件开发团队在软件设计阶段具有将顾客需求转变为产品质量设计的特性。20世纪70年代,三菱重工的神户造船厂兴起了QFD技术,经过多年的发展与改进已经被广泛地应用于软件开发项目中。比如, Mulligan和Mallon运用QFD技术对设想的个人计算机工作间进行了更改[1];新藤久和和我国的熊伟在1991年东京召开的第一届国际QFD研讨会上一同提出了将QFD技术运用于软件产品中的理论模型与现实框架[2]; GOAL/QPC及ASI是美国的两家非营利性培训组织,为本国诸多公司培训了大批QFD专业技术人员,如今QFD技术已成为美国企业在产品开发过程中一个强有力的工具[3];但是,其中的应用目标是构建质量屋矩阵,并没有提出一个完整的软件产品开发应用模型,大多为模仿工业产品的应用而构建的[4];Kamara和Anumba提出了在工业生产行业应用QFD工具的客户需求处理模型[5];在我国,QFD技术也被逐渐应用于软件开发项目中。柯星认为QFD是有益的信息系统开发技术,可用于调配全公司的所有过程,包括软件开发在内。它不增加生产成本,仅在前期投资增加,但在测试实现和维护阶段节省投资[6];邵家骏和张宗斌开创性地将QFD技术运用于气动力数值计算软件全过程中,达到了提升软件质量的效果,同时也节约了大量的时间和费用,取得了卓越的成果[7];郭春明对基于QFD的软件需求分析方法进行了研究,叙述了相应的分析过程,并以网络报销系统为应用实例,得出了角色与use case矩阵、用户与角色矩阵以及需求分析质量屋的构建方法[8]。
关于质量功能配置,赤尾洋二和水野滋两位教授对其进行了定义:把客户需求转化为质量特性,系统地配置这些特性和需求之间的关系,来保证产品的质量。这个过程是从配置每一个产品的功能质量开始的,而后扩展到各工序质量和部件的质量,产品整体质量通过这些互相关联的网络来实现。运用了质量屋(House of Quality,HoQ)来配置客户的需求过程。HoQ是QFD工具实施的核心部分,它的形式是一种类似房子的矩阵框架,输入信息后通过分析评价获取输出信息,进而实现了一种需求转换,为软件项目的开发、设计提供了有效的协调和规划手段,其基本原理见图1。
<;E:\2014年23期\2014年23期\Image\27t1.tif>;
图1 质量屋(HoQ)的结构
通过量化分析软件项目开发措施与顾客需求间的关联度, HoQ运用数据处理分析手段提取出对满足顾客需求最关键的项目开发措施(关键措施),进而指引软件项目开发者在项目开发和软件制作过程中把握软件项目开发的关键过程特性(CTP)和关键质量特性(CTQ),使得软件项目的质量能最优地满足顾客要求。HoQ是由以下要素组成的一个二元矩阵。
(1) 顾客需求及其重要度。它是质量屋的输入部分。这是确定什么才是顾客最需要的一部分。顾客的需求可以通过各种市场研究方法和市场调查得来。顾客需求目标集将不同层次的顾客将划分为不同级别,然后确定不同层次顾客需求的重要程度。通常采用亲和图等方法对顾客需求的信息进行分析和整理研究。它可以通过五个等级来区别表示:完全不影响功能实现的需求为1级;对主要功能的实现不产生影响的为2级;较为重要的影响到功能实现为3级;对功能实现产生重要的影响的需求为4级;影响到基本的非常重要的功能的需求为5级。这些级别确定的东西对后续阶段具有决定作用,其他阶段需求及其重要度是指上一级QFD质量屋的技术方法集。
(2) 工程质量技术措施。这部分由项目开发人员提取出来,主要是从顾客需求中总结满足这些需求的软件质量技术要素。
(3) 关系矩阵。关系矩阵是描述顾客需求与软件质量技术措施之间关系的质量屋核心部分。软件开发人员在此阶段需要对每一个质量要素对全部顾客需求的影响度进行判断。它表现了技术措施对它相对应目标实现程度衡量。[Rij]表示第[i]项顾客需求与第[j]项开发措施的关系度,它通过取1分、3分、5分、7分、9分,分别表示了有细微影响、有部分效果、有一定效果、有效、很有效、十分有效;2分、4分、6分、8分则代表了有效程度介于相邻的两个奇数之间的分值。
(4) 产品市场竞争能力评估矩阵。这一阶段任务是市场调研组总结出来的各种顾客需求,并对本企业及主要竞争对手和同行业先进企业进行评估。准确地定位公司自身在同行业竞争中的地位以及竞争的优势,根据自身情况寻找突破性的改进领域和方向,然后依据此定义新服务和产品的战略目标。
(5) 技术竞争性评估。此部分包括设计质量、软件质量技术措施的权重和技术竞争性评估。设计质量是质量屋的输出部分,是指通过比较分析,确定本企业要赶超先进水平、战胜竞争对手、实现顾客满意赢得顾客信赖所必需具备的质量或产品;软件质量技术措施的权重是由顾客需求的重要性及其关系矩阵得出的;此项评估是根据公司自身实力,全面了解主要竞争对手在此项技术上的竞争性实力得出的结果。
(6) 相关矩阵。主要分析了各个质量要素之间冲突、支持和相关程度。通常情况下分为强正相关、正相关、负相关和强负相关。
1.2  ;QFD的四个阶段
QFD是由客户需求所驱动的产品开发方法,运用QFD技术可以通过量化评估的方式实现将顾客需求、产品特性、产品质量技术措施等项目的功能展开,通过提取关键特性或技术措施,紧抓开发重点,企业可以把人力物力用到关键的地方,最大可能降低成本,缩短开发周期,在激烈的市场竞争中开发出满足顾客需要的产品,取得可观的效益。
软件行业是区别于一般企业的特殊性生产企业,软件开发过程是指软件开发的生命周期中所涉及的一系列过程,包括需求分析、产品设计、代码编写、软件测试、产品维护等阶段。我国现行软件产品开发中,许多软件产品陷入质量低下、生存周期短甚至软件不符合用户需求的漩涡,究其原因,主要是软件企业对质量管理认知度不足、软件质量专业人才缺乏等造成的。全员参与、管理的系统方法和过程方法在软件产品开发中尤为重要。QFD的ASI四阶段模式能够良好地链接顾客需求与产品制造之间的联系,从而完善了软件开发计划,加强了项目参与者的联系与信息交流,尽可能地避免重复设计,利于避免返工和设计上的缺陷,解决了效率低下和不确定性等问题。
QFD的ASI四阶段由John R Hauser &; Don Clausing更具体的提出。设计需求、工艺特性、生产要求和零件特性这四个阶段分别被展开为顾客需求。由于该模型将QFD的展开过程进行了分解,使QFD的展开过程更为清晰,目前,该模式已经成为欧美国家实施QFD的主要模式。本文把QFD的ASI四阶段模式运用到软件项目开发中构建了软件开发中的QFD四阶段模型图,如图2所示,运用这种结构化的系统方法,将顾客需求转化为设计需求,进而转化为编码需求和测试需求,最终完成满足市场要求的软件项目产品。产品开发者实现了对软件产品开发全过程的了解后,能够准确地对各关键子过程根据其对顾客需求的满意程度进行系统的评价,帮助开发者实现过程优化,不断改进。
2  ;软件项目需求评判的FAHP
软件项目开发是一个复杂又存在着大量不确定性因素的生产活动,本文采用FAHP对HoQ中的重要度、关系度等进行量化评估,有效地处理需求的模糊性和不确定性。
2.1  ;FAHP基本理论
FAHP在评分时可以采用梯形模糊数、三角模糊数、正态分布等,其克服了层次分析法中人的主观选择偏好及判断使得决策结果更加准确合理。其中梯形模糊数更符合现实生活,得到了广泛的应用,故本文采用梯形模糊数评分[9]。
<;E:\2014年23期\2014年23期\Image\27t2.tif>;
图2 软件开发中的QFD四阶段模型图
设[S∈D1]([D1]为全体模糊数所组成的空间)上的一个梯形模糊数,它隶属函数定义:
[μS(X)=(1-a)(g-a),a≤x≤b1,b<;x≤c(x-d)(c-d),c<;x≤d0,其他]
式中:[a≤b≤c≤d,]闭区间[[b,c]]为[S]的中值,[a]和[d]分别为[S]所支撑的上、下界。根据梯形模糊数的定义得知,[S]可以被有序四元实数组[(a,b,c,d)]所确定,故可以用[(a,b,c,d)]表示为一个梯形模糊数;当[a=b=c=d]时,[S]即为普通实数;当[b=c]时,[S]就转化为三角模糊数。QFD技术应用中,[a,b,c,d,x]根据1~9的评分准则(见表1) 进行两两比较取值,[X1,][X2]为进行两两比较的值。
表1 重要度标度两两比较表
[重要度差别\&;[X1]标度\&;[X2]标度\&;[X1]与[X2]同等重要\&;1\&;1\&;[X1]与[X2]稍微重要\&;3\&;[13]\&;[X1]与[X2]明显重要\&;5\&;[15]\&;[X1]与[X2]强烈重要\&;7\&;[17]\&;[X1]与[X2]极端重要\&;9\&;[19]\&;介于以上中间\&;2,4,6,8\&;[12,][1416,][18]\&;]
依据Zadeh的扩展原理可以把梯形模糊数的数学算法表达为下式[11]:
已知[S1=a1,b1,c1,d1,S2=a2,b2,c2,d2,]则[S1]与[S2]的数学算法为:
[S1+S2=a1,b1,c1,d1+a2,b2,c2,d2=(a1+a2,b1+b2,c1+c2,d1+d2)] [S1×S2=a1,b1,c1,d1×a2,b2,c2,d2=(a1×a2,b1×b2,c1×c2,d1×d2)] ;
[λ×S1=λa1,b1,c1,d1=λa1,λb1,λc1,λd1]
[a1,b1,c1,d1-1=1d1,1c1,1b1,1a1]
式中:[a1>;0,b1>;0,c1>;0,d1>;0,a2>;0,b2>;0,c2>;0,d2>;0,][λ>;0。]
在进行矩阵一致性判断时通常将模糊数映射成一个实数。对梯形模糊数而言, 梯形的重心被该模糊数所表示是本质特征。所以, 计算该模糊数的梯形重心用于对其一致性的判断。
对于梯形模糊数,其中心[10]:
[xc=(AsdA)A=d2+cd+c2-(b2+ab+a2)3d+c-b-a]
2.2  ;梯形模糊AHP的基本步骤
通过上述方法确定梯形模糊数,需求指标权重将从以下步骤求得。
步骤1:构造两两比较模糊判断矩阵,专家打分法(采用德尔菲法),专家按1~9模糊标度法将模糊评语转化为对应的梯形模糊数。
步骤2:对矩阵的一致性检验做判断并模糊权重计算。
步骤3:层次单排序。
步骤4:层次总排序。
完成以上步骤,获得顾客需求和软件开发团队可制造需求指标的权重。
在QFD顾客需求分析中将应用梯形模糊AHP方法,运用梯形模糊数描述判断矩阵及权重的值,依据实际情况选择评分方式,达到最优化效果。
3  ;结  ;语
本文主要论述了QFD技术的基本方法及FAHP与其相结合的运用模式,针对软件行业的特殊性,对传统的QFD方法进行了改进,提出了适用于软件开发项目的模糊QFD技术方法模型。该模型使得顾客、市场部门、程序开发人员有效地联系起来,保证整个软件项目开发过程中的有效沟通和联系,有助于软件项目更好地符合顾客的需求。
参考文献
[1] MALLON J C, MULLIGAN D E. Quality function deployment: a system for meeting customer needs  ; [J]. Journal of Construction Engineering and Management, 1993, 119(3): 516?31.
[2] 熊伟,新藤久和.日本质量管理的回顾与展望[J].Quality Progress,1991,19(6):39?50.
[3]  ;ZAIRI Mohamed, YOUSSEF M A. Quality function deployment: a main pillar for successful total quality management and product development [J]. International Journal of Quality and Reliability Management, 1995, 12(6): 9?23.
[4] 邵家俊.质量功能展开[M].北京:机械工业出版社,2004.
[5] KAMARA J M, ANUMBA C J, EVBUOMWAN F O. Computer?based application for the processing of clients requirements [J]. Journal of Computing in Civil Engineering 2000, 14(4): 264?269.
[6] 柯星.提高软件质量的有效工具QFD[J].计算机系统应用,1994(6):32?35.
[7] 邵家骏,张宗斌.QFD技术在计算机软件改造中的应用[J].世界标准化与质量管理,1998(10):9?13.
[8] 郭春明.基于QFD的软件需求分析[J].上海质量,2005(9):55?58.
[9] 王琦,钟毓宁.基于模糊层次分析法的QFD顾客需求权重求法[J].湖北工学院学报,2004,19(2):54?57.
1.软件开发组织机构管理
这里所说的组织,不只是简单的将计算机开发人员汇合在一起,而是重视这个计算机软件开发组织的人员分配情况。这样有利成员分工明确,责任落实到位。但是在实际工作中,由于各个管理项目的要求不同,无法对整个组织机构提出统一的规章制度。
2.计算机软件开发工程工作人员的管理
在信息技术不断发展过程中,作为软件开发工作人员便是这个领域的主体。主要负责各个软件项目的设计与实施,其中包括搜寻项目的资料、改编各种应用程序、工程完毕之后的处理事件等。各项工作都需要不同岗位的工作人员共同完成;同时,在实际开发进展过程中,应该有效结合各个工程项目的规模、性质等,然后科学合理的安排计算机软件项目的开发人员,坚持做到分工明确;最后,坚持具体问题具体分析的原则,充分了解工作人员的业务素质,坚持做到科学合理的配置资源。在工作人员的素质要求上,除了具备专业业务素质之外,还应该具备良好的团队合作能力,这样工作人员才能够共同完成开发的计算机软件工程。
3.实施对计算机软件开发各个用户进行管理
实践是检验真理的唯一标准。要想证明软件开发项目是否具备优势,最重要在于用户的使用。因此,在项目开发进行之前,应该对市场进行充分了解。不仅要了解用户对计算机软件的需求有多大,还应该了解大部分用户的操作习惯。通过这样开发部门与外界的联系,让用户对所使用的软件提出自己的看法,这样便能够有效增强计算机软件的实用性。
4.软件开发过程设置档案资料管理
在现实生活中,工作人员应该将计算机软件开发的各个流程记录到档案中进行有效管理,为下一个阶段的开发工作打下坚实的基础;通过实施档案资料管理,又方便了软件工程后期的查询工作,有效提高了计算机软件开发的保障性。因此,在计算机软件工程的开发过程中,应该不断提高项目档案资料的重视程度,有效提高计算机软件开发管理的效率和水平。
二、强化计算机软件工程管理的对策
1.完善计算机软件工程管理体系,提高项目开发效率
在社会不断发展过程中,为了推动计算机软件工程开发项目更好的发展,应该逐步构建起完善的工程管理体系。其一,要想构建起完善的工程管理体系,便应该有效认识到人才在工程项目开发中所起到的积极作用。充分调动工作员工的主观能动性,确保各个软件开发项目安全快速的完成;其二是强化计算机软件工程应用相关知识渗透力度。不断加强工作人员的专业知识培训,充分了解最新软件的知识,坚持理论联系实际的原则,有效运用到具体的项目开发中。这样便能够大大提高软件开发的利用价值,从而提高工程项目的管理效率;其三是制定奖惩机制,从而推动项目工程效益能够顺利实现。
2.强化软件风险管理,抓好进度发展
为了推动计算机软件工程更好的发展,首先应该构建完善的风险管理体系。作为开发人员,应该具备风险意识。然后通过充分利用空余时间学习风险管理知识,能够很容易识别出软件开发过程中存在的风险,然后根据实际情况选择科学的防护措施,在必要的时候还应该提交工程风险报告单;其次是,坚持定期做好计算机软件的风险控制管理。其中对于一个历时时间之久的计算机软件工程项目来说,更应该坚持将项目风险管理落实到整个过程中,对出现的风险问题,及时采取处理措施,从而将项目进行过程中带来的损失降到最低的限度。但是在实际操作过程中,一般主要采取规范、转移等措施处理风险;最后,还应该有效强化计算机软件工程开发的进度管理,大力提高工程管理的效率水平,降低开发成本。工作人员还应该坚持理论联系实际,通过有效结合计算机软件工程项目的实际情况,然后制定科学合理的管理工作日志。这样能够对各个工程项目实行有效的监督,从而确保各项计算机软件工作能够安全顺利的完成。
3.提高团队合作管理水平,提高团队协作力量
在计算机软件项目的开发过程中,一个优秀的团队占有非常重要的地位,是实现计算机软件工程管理的重要保障。因此,强化项目管理的团队管理,对实现工程项目起着非常积极的作用。其中主要表现在以下几个方面:其一,不断加强项目开发人员之间的沟通与联系,不断整合团队意识渗透;其二是明确项目开发过程中各个岗位人员的分工情况。在充分了解项目开发的实际情况时,再进行科学合理的分配,将具体的工作落实到每个人身上,从而确保计算机软件工程顺利进行;其三是充分调动整个软件项目部门员工的积极性,确保项目开发过程中的每个员工都能够全身心的参与,有效激发团队成员的潜力,共同做好软件工程的管理工作。
三、计算机软件工程的应用
随着现代社会快速发展,网络信息技术也得到快速发展。由于计算机技术具备较高的准确性、方便、高效,从而确保计算机软件工程的开发得到更广泛的推广。随着计算机技术不断深入,在人们的生活中,越来越离不开计算机。其中计算机软件的应用范围主要包括:办公、电子商务、游戏、音乐、电子邮件等。更重要的是在现代的航空、农业、银行等各个生活领域都大量采用计算机软件工作。其中由于计算机软件工程在开发过程中基本上属于一个非常重要的工程项目,在软件开发过程中也越来越人性化。计算机软件在开发过程中,具有自己独特的要求,同时还需要经验丰富的工作人员才能够胜任软件开发工作。同时,在软件研究过程中,工作人员还应该认真仔细,不断去总结工作过程中所出现的问题,然后及时采取处理措施。因为,计算机应用的各个环节与其他环节之间都存在着密切的联系。对于工作人员来说,计算机软件工程的开发工作是非常复杂的,因此,要不断去克服重重困难,不断去探索。这样便能够促使计算机软件变得更加方便快捷。其中主要体现在以下几个方面:其一,学校老师应用方面。学校老师可以利用计算机制作PPT教案,这样能够让知识点更加直观的呈现在同学们的面前。学生也可以直接通过网络加强与老师之间的沟通交流。有的学校,在学生入学登记时,也直接采用计算机进行登记;各种消费也直接通过计算机软件来进行管理。这样当学校任何一个事情出现问题时,都能够很容易的查出来。从而通过计算机软件能够大大提高学校管理效率;其二是像医院、KTV、大型的企业等几乎都应用到了计算机软件。这个软件在开发的整个过程中,各个因素之间都存在着密切的联系,从而形成相互影响、相互制约的现象。因此,必须加大计算机软件的开发控制力度,确保研发出来的计算机软件的质量。针对目前的形势来说,计算机软件的应用范围更加广泛,软件工程也得到了实质性的解决。因此,要想解决这个问题,便需要不断改善计算机软件工程的开发条件。但是,就目前计算机软件的开发空间来说,仍然落后于其他国家,还具有较大的发展空间。所以,我们就应该努力去解决各种困难,不断解决这些问题。这样就促使计算机软件的开发空间变得更宽、更大了,应该让更多的人们去认识认识、了解并且去应用它,让它得到更大的发挥,带动我们国家的经济能力,把人们的生活水平提高,为我们国家的发展做出贡献。
四、总结
关键词:软件开发;项目管理
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 18-0000-02
1 软件项目开发管理的必要性及其相关要素
1.1 软件项目开发管理的必要性。所谓项目管理,主要指的是通过在项目中利用一些知识、工具、技能以及技术来实现相关利益者的期望及要求,换句话说,项目管理就是通过项目中各方面关系者的合作,将资源更好的应用到项目中,来实现项目的既定目标。本质上来说,项目管理是对质量、成本以及时间的控制与管理。
当前,随着软件开发越来越深入,新的技术以及相应的产业也已经逐步形成,这种背景下,人们越来越意识到软件开发过程中应用项目管理的重要性,通过将其思想融入到开发过程中能够给软件开发的效率、成本以及质量起到很大的促进效果。
1.2 项目管理三要素。在不同软件的项目管理中,其管理的的目标是不一样的,而且在软件项目的大小上也存在着一定的差距。但是,无论怎样变化,管理过程中有三个要素是不变的,也就是进度、质量以及成本。一般来说,这三个要素之间存在着较为紧密的关系,并不是相互独立的。举例来说,一般如果要获得高质量的软件,则工期必然会比较长一些,而且开发的成本也要高一些。基于此,在软件项目开发的过程中,怎样保证这三个要素之间的平衡,使其符合我们的既定期望是一个非常重要的问题,它不仅仅关系着用户的满意度,和项目的经济效益以及成本也有着重要的关系。
一般来说,确保软件的质量是开发过程中最为关注的一个问题。实际的工作中,如何在保证软件能够实现其设定功能的前提下使其符合我们质量的要求是一个重要的课题。另外,成本也是项目管理的一大重点,当前,很多项目中,我们往往会过多的关注质量以及工期,却忽视了成本的控制,这种行为如果得不到很好的解决甚至会导致项目出现亏损。基于此,在我们的工作中,我们要从进度、质量以及成本这三个部分入手。
2 软件项目开发管理的要点
2.1 项目计划。在软件的开发过程中,项目计划代表着项目进入的启动阶段,其主要的任务主要可以分为:对项目实施的范围进行确定、对需要递交的成果进行定义、评估开发项目中存在的风险、对时间计划、成本计划以及人力资源计划进行制定。
2.2 组织模式。在软件开发项目管理的实行中,我们要先建立一个项目的领导小组,在小组下设立管理小组、开发项目组以及项目的评审小组。
(1)领导小组。这属于项目管理中的最高决策层,一般的情况下是由企业的总经理以及副总经理等组成,其主要的任务是:对项目的总方案以及实施计划进行审批;对项目实施中遇到的事件起到决策的作用;对项目中的进度、成本、质量、风险等进行宏观的监控;组建验收小组,并对验收工作进行主持;对各方面的工作进行协调。
(2)管理小组。一般来说,这一小组的成员主要包括项目经理以及各种项目的人员,其具体的工作如下:依照具体的要求来制定计划,并监督计划的实施,起到控制进度的作用;对项目内的分工进行协调,确保资源合理分配;确保项目开发过程中质量及过程符合相关的标准;对各阶段的评审工作进行负责;制度验收的标准,并将其送至领导小组审批。
(3)开发项目组。开发项目组主要的构成人员包括技术人员以及专业开发商开发人员,其主要的工作是:对系统的需求进行调研;负责系统的设计;进行程序的编码;测试系统;配置系统开发环境以及测试环境;对测试所需的数据进行准备;进行生产系统的安装。
(4)评审小组。这一小组主要是由市场专家以及技术专家组成。其主要的工作时评审项目的可行性报告;评审开发的计划;评审各阶段报告;评审项目结束后的总结报告。
2.3 项目管理的内容。软件开发的过程中,我们可以将其分为6个极端,以下将对各个阶段的管理工作进行分析:
(1)需求分析阶段。这个阶段属于项目开发的首要阶段,主要的任务是确定用户的实际需求,并以此作为基础对项目开发功能点进行确定,在这个阶段中,我们需要制度《项目需求规格说明书》。
(2)概要设计阶段。这个阶段主要内容有:设计系统框架、设计数据结构、设计接口、设计功能模块以及开发的目标和环境,在概要设计阶段,我们需要形成《概要设计说明书》这一文档。
(3)详细设计阶段。这是以上一阶段为基础,对每个模块的算法进行设计,并对数据结构进行物理设计,这是编码阶段的基础,其形成的文档是《详细设计说明书》。
(4)编码阶段。这属于开发软件的实质性阶段,主要的工作是将各种算法转换为代码。需要注意的是,由于不同的开发人员在风格和编码习惯上存在着差异,因此,在开发之前确定编码规范是一项非常有必要的工作。
(5)测试阶段。这主要是指在已知环境中使用已知输入来动态的执行系统,主要包括单元测试、集成测试、模块测试以及系统测试。这个过程中,需要形成的文档有《项目测试计划》以及《项目测试报告》。
(6)系统上线和维护阶段。在这个阶段开始之前,我们要进行《系统上线计划书》的编写,对其上线的时间、步骤、环境、风险以及应急方案等进行详细的说明,这些说明越详细越能够保证系统安全生产的成功性。至于维护阶段主要是指处理系统运行过程中出现的问题以及对原有的功能模块进行修改或者扩展。
2.4 项目评审。对于项目的评审并不只是完成项目开发之后进行,在开发的每一个阶段中都要进行项目的评审。主要是由于项目开发的各个阶段中都可能出现问题,而这些问题如果不能够被及时的发现并纠正,则很可能出现扩大,容易导致项目的失败。一般来说,在项目评审的过程中,主要的标准有:
正确性,这主要是指项目可以在预定的环境之下正确的实现预期的功能;健壮性,这是指硬件出现问题、操作失误以及输入数据无效等情况下,系统是否可以做出合适的响应;效率,代表着系统为例实现预定的功能所需要消耗资源的数量;安全性,在系统被未经授权的人使用或者操作过程中,安全性代表了其控制这种行为的程度;可用性,表示系统在完成预定功能的时候令用户满意的程度;风险,它表示了项目开发的时候,是否可以按照预定的进度以及成本将软件开发出来以及开发出来的软件被用户满意的概率;可理解性,表示系统被用户理解以及使用的难度大小;可维护性,它表示了我们在对发现系统中存在的问题之后,当改正这些问题时所需要的工作量的大小;此外,还有可测试性,表示了系统测试的难易程度;可移植性,代表着将一个程序冲某种配置环境转移到另一种环境中所需要付出工作量的多少;可再用性,指在其他应用中这一程序能够被再一次使用的程度;互运行性,表示了将这一系统与其他系统结合起来时所需要付出工作量的多少;
3 结语
软件项目开发管理是一项非常重要的工作,本文只是对其进行了简要的分析,在具体的工作中,我们还要结合自身的特点,加强这方面的探索,只有不断地进步,才能使我们的企业在当前的环境下真正立于不败之地。
参考文献:
[1]吴艳艳,周长伦,姜家轩,王春梅,许自国.软件项目管理中的需求管理[J].信息技术与信息化,2008,2.
关键词:软件工程;实践教学平台;角色扮演;学习空间;知识库
1、高校软件工程课程实践教学现状
随着我国经济的发展,软件产业在国民经济中越来越起到了举足轻重的作用。高校作为社会所需人才的培养基地,有责任和义务培养和提供掌握软件开发方法和具有实践技能的软件人才,以更好地促进软件产业的发展。为此,很多高校开设了软件工程课程,以让学生从工程化的角度认识软件开发和维护,工程化的概念、原理、技术和方法必须通过实践才能真正理解和把握。但是,目前的软件工程课程教学存在着“重理论、轻实践”的现象,且传统的授课模式也不利于开展实践教学。下面将对目前高校软件工程课程实践教学中存在的困难和问题进行分析。
1.1 传统的课程结构设置,不利于开展实践教学
目前,高校的软件工程课程结构基本上是采用理论课+上机课的形式,总学时为48学时,其中,理论课36学时,上机课12学时。这样的课程结构设置凸显了以教师讲授为主、实践教学为辅的特点,学生的实践训练基本以课下为主。
1.2 教学案例过于“文档化”,学生无法了解过程细节
在软件工程课程的教学中,教师一般都会从教材或其他资料上引入一些软件开发的案例,但是,这些案例一般都是直接给出了结果,却没有对过程进行详细的描述。例如,在讲授需求分析时,可能案例中直接给出的是需求分析的结果——《需求规格说明书》,其中描述了功能需求、性能需求、接口需求、安全性需求等,并构建了相应的分析模型,但是却没有给出需求分析的过程描述,即这些功能、性能等的需求是如何分析出来的,模型是如何一步一步建立起来的等。再如,在讲授系统设计时,案例中可能直接给出了数据库设计的结果,其中包括数据库表结构、视图等,但是却没有详细的描述数据库设计的过程,即如何建立数据库设计模型,如何设计相应的数据库表,数据库表中的字段以及字段的类型、约束等是如何得到的等。这些案例只有结果描述,类似于企业里开发所用的文档,学生仅仅通过这些“文档化”的案例,是无法真正掌握软件开发的细节的,而导致的结果是——学生看看都会,听听都明白,动起手来却是满脑子空白。
1.3 缺乏有效的实践教学环境。无法做到“学”“练”和“指导”的全过程互动
目前的软件工程课程实践教学主要采用学生课下完成实践作业的形式,学生在学习“纸质的”和“静态的”理论知识和案例的基础上进行开发实践,这样的实践教学过于简单,缺乏环境的支持,无法做到“学”“练”和“指导”的全过程互动,不利于真正提高学生的实践能力。
(1)学生只能被动地学习和接受案例,但是却不能提出自己的见解,更不能将其与其他学生来分享。
(2)学生无法对案例细节和过程进行“拆解”,并对某部分过程和细节进行模拟训练,更无法对模拟的结果进行动态的对照,发现自身理解的偏差和问题,从而加深对案例的理解和掌握,不至于让案例学习“流于表面”。
(3)学生无法通过实践环境,动态创建软件开发项目,并将项目开发的过程细节和结果与其他学生进行分享,甚至让其他的学生动态参与其中,也无法让教师对实践项目进行全程指导。
(4)学生没有自己的学习空间,无法将课程学习和实践中的心得、体会等进行记录,也无法将一些好的技术、方法等资料与其他学生进行分享。
(5)案例的更新缺乏一种动态的机制,只能依赖教师去收集,无论是数量,还是真实性、贴切度,都无法满足实践教学的要求。
2、具体改革实施方案
经过上文的分析,我们发现目前的软件工程课程实践教学存在课程设置不合理、缺乏能够被学生深入学习和理解的实际案例、缺乏能够支持“学”“练”和“指导”全过程互动的实践教学环境等问题。为此,我们提出了基于实践教学平台的软件工程课程实践教学改革方案,主要从课程结构设置和实践教学平台的使用两个方面人手,加强学生的实践训练,并以实践教学平台为支撑,让学生切实提高实践能力。下面将对具体的改革方案进行论述。
2.1 以课程实训代替上机课,加强实践教学
我们以课程实训来代替传统的上机课,将总学时数由48学时调整为64学时,其中,理论课设置为32学时,实训课设置为32学时。课程实训是在教师的指导下,由学生自己完成一个完整的软件开发实践课题,具体的课程内容如下。
(1)课题确定:由学生自己根据日常生活和学习中所接触或熟悉的软件来命题,如学生管理系统、图书馆管理系统、选课系统、宿舍管理系统等,也可以由教师结合教学、科研的实际情况设置多个课题供学生选择,要求课题的规模大小适中,有一定难度,但经过努力可以较好地完成。
(2)组织形式:课题以小组的形式来进行组织,包括一位组长和3~4位组员,对于系统中的部分开发工作也可以采用“外包”的形式,即由组外的其他学生来帮助完成。
(3)教学安排:实训课每周安排2学时,每一位组长在课上介绍本组项目的进展情况和碰到的问题等,其他项目组的学生可以就项目的某些部分提出疑问,教师可以对项目的实施进行指导,也可以引导学生就某一细节问题展开讨论。
(4)成绩评定:课程实训结束时,每组需提交所完成的软件系统和相关的文档、实践报告等,而成绩的评定采用验收答辩的形式,即每个小组演示开发完成的软件系统,并总结项目实践经验和提出改进意见,由教师主持实践项目验收答辩,由其他组的代表(或组长)充当评委,共同对实践项目的成果进行评审并打分,最后由教师进行综合评定,给出每组的课程实训的最终成绩。
2.2 建立完整的课程实践平台,注重过程学习和模拟实践训练
我们建立一套完整的课程实践平台,学生可以利用平台来进行案例学习和模拟训练,也可以通过共享资料来形成知识库,供每个人参考。此课程实践平台主要包括4个部分。
1)案例学习机。
案例学习机主要为学生提供完整的案例,以供学生进行学习。案例学习机包含由多个案例构成的案例库,案例的选择基本上以学生所熟悉和易于接受的软件开发项目为主,每个案例都详细记录了一个完整的软件开发项目实践,包括项目管理的内容,具体内容包括以下几个方面。
(1)案例分解,细节分析:每一个案例都是完整的整体,同时又可以按照软件开发的流程(瀑布模型)进行分解(如图1所示),学生既可以看到软件开发过程中每一步的结果,也可以看到每一步的过程细节,包括开发中所碰到的问题,解决的办法,甚至开发中所走的弯路等,都可以在案例中进行浏览和学习。
(2)个性思考:学生在学习案例的过程中,可以针对某一个细节进行思考,并发表自己的评论(如图2所示),也可以浏览其他学生针对此所发表的评论,所有的评论构成了一个个性思考评论空间,可以给后续的更多的学生提供借鉴。
2)项目模拟训练器。
项目模拟训练器为学生提供了一个案例模拟和项目开发实践的平台,为学生进行课程实训提供了实践环境,学生可以将案例作为框架,进行模拟训练,也可以进行全新的项目开发实践训练,具体内容包括以下几个方面。
(1)案例模拟环境:学生可以直接引入一个案例作为模拟项目,可以参照案例的执行步骤自行进行每一步的执行操作,并将自己的操作结果与案例进行对照(如图3所示),找出自己模拟训练中存在的问题。
(2)项目实践环境:学生可以自行创建一个新的项目,实践环境将给出项目管理和开发实践的基本流程及任务框架(如图4所示),学生可以进行项目组建、编写项目计划、记录项目执行过程,可以按照软件开发流程进行需求分析、系统设计、编码及测试等活动。
这样的项目实践环境是全方位的,即学生可以训练项目管理方面的技能,也可以训练软件开发环节的技能,如学生可以创建一个项目,并担任项目经理,同时可以将项目在系统中,并“招聘”分析人员、设计人员、编码人员、测试人员等,其他学生可以在系统中看到的“招聘”信息,如果愿意的话,可以在此项目中担任相关的角色,这样可以实现一种“角色扮演”,即某个学生既可以是A项目的项目经理,以此训练项目管理方面的技能,也可以是B项目的系统分析师,以此训练系统分析的技能,还可以是C项目的开发工程师,以此训练编码实现的技能等。
(3)网上评审:学生在项目实践环境中创建了自己的项目后,安排相应的开发工作,在每一个开发阶段结束时,都可以“网上评审”邀请,其他学生可以对该项目本阶段的工作进行评审和打分,这样,最终会汇总出每个项目的总分,也可以根据每个学生在各个项目中参与的工作评分汇总出其项目实践的总分,教师也可以很容易统计出每个学生的实践课程成绩。
(4)师生交流平台:教师和学生可以在模拟训练器中针对某个具体的任务或实践活动进行交流,教师可以提出相应的指导意见,也可以创建一个论坛,以方便学生之间、学生和教师之间的交流。
(5)案例申请:学生可以将自己的实践项目申请成为案例,教师对实践项目的过程细节和结果进行评估,若通过,则可以提交到案例学习机的案例库中,这样可以形成一个良性循环,不断地补充由学生自己开发的真实案例,以供更多的学生进行学习。
3)学习空间。
学习空间是为每个学生的课程学习和实践所建立的一个私有空间,学生可以将课程学习的计划、日程安排、学习心得等置入学习空间中,形成一个完整的学习平台。学生可以在个人的学习空间的桌面上放置便签、今日安排、实践项目列表、消息提醒、常用联系人等快捷图标(如图5所示),并通过点击进人相关部分进行操作。
4)知识库。
知识库是所有资料的共享空间,学生和教师均可以将与软件开发项目相关的资料上传到知识库中,并依照技术、管理等进行分类,以供所有学生进行查阅(如图6所示),还可以建立一个FAO库,把所有的问题和问题的解答(可以是教师解答的,也可以是其他学生解答的)进行记录并存储到FAQ库中,以供学生在实践过程中碰到问题时进行查阅参考。
建立了课程实践平台后,软件工程的课程实训就可以依赖此平台进行开展,学生可以在“案例学习机”中进行学习,在“案例模拟环境”中自己动手参照案例进行模拟训练,在“项目实践环境”中创建和组织新的项目,也可以参与到其他组的项目工作中,在“学习空间”中构造自己的私有学习环境,记录学习心得等,还可以将心得或资料上传到“知识库”中,与其他学生进行分享,从而使“学”与“练”动态结合,真正达到课程实训的目标。
随着社会对人才需求的变化,培养高素质的应用性人才成为我校办学的方针,为培养学生的实践动手能力和操作技能,我们修改了软件工程的教学大纲,针对学生的实际和该课程课时较少的状况,课堂上主要讲解重点,次重点的内容让学生在实验过程中掌握,删除一些过时的内容,增加学科的最新知识和研究进展,使学生了解更多的前沿知识,增加学生的学习兴趣。
2改革教学方法
软件工程的方法、原理和技术都是为了软件开发服务的,所以实践性知识是其教学的关键,所以在教学过程中引入案例教学,让学生利用软件工程的方法、原理和技术进行分析和练习,激发学生的学习兴趣。具体的做法是,教学前,教师选取合适的案例,公布给学生,指导学生进行分组,按照软件工程的开发流程进行任务分配。然后通过分析案例的解题思路和方法,引出案例中用到的知识点,将枯燥的理论和技术用生动形象的方式表达出来,再要求学生按照小组对案例进行讨论,归纳和总结,对案例进行完善和扩展,达到学生快速的掌握知识和能力的提高。
3提高实践能力
软件工程是实践性很强的一门学科,单纯的理论讲授并不能让学生很好的掌握软件工程的知识,必须让学生动手参与具体的项目开发,才能够在实践中合理的应用软件工程相关技术和方法。为了让学生很好地利用软件工程的思想进行项目开发,在学期初就安排学生按照自愿的原则进行分组,一般要求4-5人一组,小组成员推选出一个组长。结合之前学习过的课程,每个小组选定一个开发项目,这些项目可以有教师指定,也可以小组成员自主选定。随着软件工程课程的进行,每个小组需要按照软件工程生命周期完成可行性研究、需求分析、概要设计、详细设计,实现和测试等内容的相关文档,在每个生命周期结束的时候,需要小组组长提供该生命周期的文档,并从各个小组中随机抽取一些小组进行答辩,由教师和其他小组组长组成的答辩小组对其进行提问和总结。实践证明这种项目开发方式不但可以培养学生实际解决问题的能力,还可以培养学生的团队合作精神,为以后参加工作打下坚实的基础。
4教学评价改革
作为一门实践性的课程,最后成绩评定的重点不应该是理论考试的成绩,而应该是学生是否在软件开发中使用软件工程的理论、方法和技术,是否正确的使用软件工程的方法提高软件质量。所以,要将实践部分即项目开发部分的比重加大到30%,平时课堂上案例总结部分比重为10%,试卷部分比重60%。而且试卷应该以开卷考试为主,在试卷中,综合性和实践性的题目应该占主要部分。这样就不会让学生在学习的过程中死记硬背,而应该以理解和会应用为主。
5结束
[关键词]项目管理软件需求开发进度成本质量管理模型
一、引言
软件需求开发是软件工程的一个重要环节,在软件生命周期中的需求、设计、编码、测试和维护等各个阶段中,需求开发处于软件工程的开始部分,它提供构建软件项目的根基,决定软件开发成果满足客户需求的匹配程度。软件需求开发环节的失误会随着开发进度的扩大而蔓延,资料表明,软件项目中由于需求开发管理混乱而造成的返工开销几乎占了总开发的50%。本文应用项目管理理论分析软件需求开发阶段的系统构成,并设计管理模型来提高软件需求开发的管理效率。
二、软件需求开发管理过程
由于计算机技术的迅速发展,使得软件需求具有模糊性、不确定性、变化性、主观性等特点,并带来软件需求开发管理的复杂性。软件需求开发是一定的组织利用有限的资源在规定的时间内完成,可以作为项目来进行管理,其管理过程由需求获取、需求分析、编写软件需求规格和需求验证四个阶段构成。
1.需求获取
需求获取是在问题和最终解决方案之间架设桥梁,其主要任务是和用户方的领导层、业务层人员进行沟通,获取用户的具体需求,并了解用户的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等具体情况,同用户建立起良好的沟通渠道和方式。软件需求获取的方法有:与用户交谈,向用户提问题;参观用户的工作流程,观察用户的操作;用户工作的情景分析;现有系统的问题报告和改进要求,事件和响应;市场调查和向用户群体发调查问卷;与同行、专家交谈,听取他们的意见;分析已经存在的同类软件产品,提取需求;从现有产品或竞争产品的文档中提取需求;从行业标准、规则中提取需求;从Internet上搜查相关资料等。
2.需求分析
需求分析主要通过建立业务模型的方式来描述用户的功能需求,为客户、用户、开发方等不同参与者提供一个交流的渠道。业务模型可以映射出软件产品的核心需求,即功能需求。功能需求应描述软件提供的功能和服务、对输入的响应,并描述特定条件下的系统构成等。软件产品本身可能还存在与业务无直接关系的非功能需求,具体与系统的总体特性有关,如可靠性、响应时间、存储空间等。非功能需求定义系统提供服务或功能的约束,包括时间约束、空间约束、开发过程约束及应遵循的标准等。通常这两类需求构成软件需求的总集。
3.编制软件需求规格
软件需求规格的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础,需求分析完成的标志就是提交一份完整的软件需求规格说明书。软件需求规格说明书以一种开发人员可用的技术形式阐述软件必须提供的功能和具备的性能,以及必须考虑的限制条件。软件项目客户通过软件需求规格了解软件项目能够提供的软件产品,检查软件需求是否满足需要;项目管理人员根据软件需求规格制定项目的开发计划和管理过程;软件开发人员通过软件需求规格理解要开发的产品及具体要开发的内容;软件测试人员通过软件需求规格验证软件。
4.需求评审
编写的软件需求规格说明书还应当进行需求评审,确保需求确定的科学性。可采用下列指标进行评审:(1)正确性:每条需求都正确代表构建软件系统所要完成的事情。(2)无歧义:每条需求只有一种解释。(3)完备性:需求不能发生遗漏,应全面考虑相关问题。(4)一致性:用户需求必须和业务需求一致,功能需求必须和用户需求一致。(5)重要性和稳定性分级:现有资源不足以实现所有需求时,可以根据级别的高低决定实现的先后,舍弃一些级别低的需求以保证项目的按期交付。(6)可验证性:需求分析是可测试的,只有系统的所有需求都是可以被测试的,才能够保证软件始终围绕着用户的需要,保证软件系统是成功的。(7)可修改性:每一条需求都易于完整一致的进行变更,且不改变需求集的结构和风格。(8)可跟踪性:每条需求都是可溯源的,且存在一种机制使得在以后的工作中引用需求是可行的。(9)可理解性:用户和开发人员都完全理解需求集的整体行为、所提供的功能及其中的每条需求的含义。
三、软件需求开发管理模型
1.软件需求开发管理模型构建原则
软件需求开发是一项复杂的系统工程,管理模型的构建应遵循下列原则:(1)程序性原则:软件需求开发管理应遵循固定的业务流程,可将其划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段,前一阶段的工作完成后才能进入下一阶段。(2)系统性原则:软件需求开发要在限定的时间、成本条件约束下达到一定的质量,实现软件系统的最优,要求管理遵循系统管理原则,实现目标最优。(3)简化性原则:化繁为简,将模糊的、潜在的复杂问题明确化,以图表的形式表示出,并以简化的解决方案解决问题,便于项目管理。(4)平衡性原则:管理软件需求开发的具体事务要有一定的侧重。对于需求开发过程事项,应根据影响大小分清主次,关键的事项或者事项里的某个多发问题点,着重管理,达到在管理上的主次平衡。(5)高效性原则:模型的设计必须以促进需求开发目标的实现为前提,提供给相关人员一个展示需求开发管理和有效解决方案的平台。(6)时时控制性原则:及时控制需求开发过程中影响进度、成本、质量等问题,及时发现解决冲突事件,做到事前、事中、事后控制,保证项目按时保质保量完成。(7)动态性原则:开发中应关注信息技术的发展,将先进的技术应用到软件需求开发中,并学习借鉴相关软件需求开发的成果。
2.软件需求开发管理模型
基于以上分析,本文构建了软件需求开发管理模型,见下图:
该模型遵循了软件需求开发的管理流程。启动阶段,软件开发进行了可行性研究,软件项目已立项,项目正式启动。软件需求开发管理阶段是模型的主要部分,按照项目流程,依次划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段。总结阶段,对软件需求开发管理进行总结,并进入到软件程序设计阶段。模型的核心部分是应用项目管理的进度管理、成本管理、质量管理,对软件需求开发进行动态管理。进度管理就是制定出经济合理的进度计划,然后在计划执行过程中,检查实际进度与计划进度之间的差异,并及时找出出现差异的原因,采取有效的补救措施,以确保项目按时按质完成。进度管理应加强沟通,掌握可能延误进度的环节,并严格控制进度变更。成本管理就是对项目所需的成本情况进行详细地分析和估算,编制资源需求计划,并编制项目所需的成本估算和预算,在执行过程中,采取相应的措施对项目成本进行控制。成本管理应严格控制加班、浪费等额外支出。质量管理是为了保证项目的可交付成果能够满足客户的需求,围绕项目质量而进行的计划、协调和控制等活动,其具体内容涉及质量规划、实施质量保证和质量控制。通过进度管理、成本管理和质量管理,使软件需求开发成为进度快、成本低和质量合格的有机统一体。
该模型规范了软件需求开发的业务流程,并在整个软件需求开发的不同环节之间建立联系,明确需求开发过程与自身各任务项之间以及项目其余环节所存在的各种联系。模型各环节间的相关性、可追溯性保证了软件项目需求开发过程,可以遵循统一的管理模式。该模型具备可配置性。每个软件项目,都具有个性化管理需求,在进度管理、成本管理、质量管理等方面有不同的要求,可以针对具体的开发团队,项目要求,管理侧重点,扩增相应的管理模块,将此模型推广到任何一个软件需求开发项目。
3.模型应用
由于软件需求开发具有复杂性,其主要表现为需求描述问题,明确表达需求较难确定,并且难以统一;需求完备问题,需求没有遗漏,难以准确划定系统范围;需求的变更问题,需求变化是永恒,需求不可能是完备。模型应用需做好以下工作:(1)文档化管理。需求必须有文档来记录,该文档必须是正确的,是经过验证的,是在受控的状态下变更的。开发或管理人员常常会在含糊的情况下把认为是相对简单的需求忽视而省略文档记录,其实未必简单,只有想清楚、写清楚、说清楚才说明已经真正把需求整理清楚了,同时方便日后维护工作的展开。需求含糊的情况下要进行会议形式处理,并邀请相关人员参加进行需求澄清及确定,需求在进行多方确定后进行归档。同时软件需求的复用率也是相当高的,可以避免升级时重新将需求再次获取,只需要在原来的基础上作为文挡需求复用升级处理。(2)审核评估需求变更,减少变更的影响。在管理软件开发过程中,需求渐变是必然的,无论需求变化的程度如何,只要需求变更就必须进行评估。在需求变更之前必须由项目管理人员审核,再传给开发人员进行评估等工作。管理人员必需依据对整套系统的了解程度分析需求变更过程中可能受影响的系统及受关联的功能模块,并制定积极应对措施。(3)整体管理。应识别、确定、结合、统一与协调软件需求开发管理过程中所需要进行的各种过程和活动,保证进度、成本、质量等各要素的相互协调。
四、结语
软件需求开发在软件项目管理中具有重要地位。本文应用项目管理理论,设计了软件需求开发管理模型。该模型遵循项目管理流程,将软件需求开发划分启动、需求开发过程、总结三个阶段,并将软件需求开发过程划分为需求获取、需求分析、编写软件需求规格和需求验证四个阶段,模型应用项目管理的进度管理、成本管理、质量管理,对软件需求开发进行动态管理,实现软件需求开发项目目标最优。该模型能够提高软件需求开发管理效率,确保软件开发能够按进度,低成本,高质量地完成。
参考文献:
[1]景慎艳:软件项目需求管理的探索与实践[J].电脑知识与技术,2008(27)
[2]左怀远:软件项目中的风险管理研究[J].世界科技研究与发展,2008(3)
[3]孙琦龙:加强软件项目管理的实践模式[J].科技信息,2008(7)