HI,欢迎来到学术之家,期刊咨询:400-888-7501  订阅咨询:400-888-7502  股权代码  102064
0
首页 精品范文 软件开发项目总结

软件开发项目总结

时间:2022-11-17 12:13:59

软件开发项目总结

第1篇

一、软件工程开发中常见的问题

软件工程是一门工程性的学科,其目标主要是成功地建造一个大型软件系统。包括:付出较低开发成本;达到要求的软件功能;取得较好的软件性能;软件易于移植;维护费用较低;能按时完成开发任务;软件可靠性高等。在软件工程开发中遇到的具体问题可以总结为如下几点:

(1)软件模块开发过于独立,各模块没有统一的开发标准,造成系统功能重复,开发平台不统一,系统整合难度大;

(2)系统开发往往针对某一特定功能,没有形成一个完整的系统结构;

(3)总体设计不够细致,各个子系统功能模块风格不统一;

(4)开发人员技术水平、开发能力和时间有限,开发手段相对原始,代码的可重用性低、可读性差;

(5)缺乏有效的软件文档管理。这些问题集中体现在软件项目开发的每一模块中,导致整个项目开发过程中,开发费用超出原定计划,生产的软件系统不能满足用户需求,系统难以简易维护,系统无法高效运行等问题。这里既有技术层面的因素,即开发平台不统一;也有软件开发的组织与管理层面的因素,即程序员对系统功能的定义、规划和设计不明确,往往是开发人员摸着石头过河,仅仅从自己开发的这部分模块来考虑问题,另外开发人员和测试人员不能很好的协调,这些都说明了软件项目管理这一角色的欠缺。

二、项目管理针对软件工程开发的优势

项目管理包括时间、质量、成本三大要素,三者相辅相成,相互制约。时间可等价于软件项目开发中的开发生命周期,即在最终达到开发目标前的各个阶段的总用时。质量可等价于最终开发软件系统的功能性,可用性与达到的客户满意度。成本相当于软件项目开发中的费用,包括人力、地点、工具、系统故障处理等方面的开销。统筹时间、质量、成本三要素,即统筹软件项目开发周期、软件使用客户满意度和开发费用之间的平衡关系,不因忽略某一项指标而导致项目开发目的实现不了或中途中断,也不会为了实现较高的效率,而忽略成本的牺牲,让所有项目开发过程中,所涉及到的因素都可有条不紊地进行。

SPPT是项目管理另一层面上概括的四要素,分别为:战略(Strategy)、人(People)、次序和安排(Process)、工具(Tool)。战略对于软件项目来说,主要概括为模块开发的开发方式,配合方法等;人,毫无疑问,指的是项目开发中的参与者;次序则是项目如何划分模块,以及模块开发的先后次序;工具,即使用工具,包括:辅导设计程序系统、文档编写系统、资源管理系统等。对这四要素的稳定地统筹把握,能更好的协调好项目开发过程中涉及的多个方面,而又不造成某一方面的缺失,导致项目最终目的实现不了或效果不明显。

三、项目管理思想与软件工程开发的结合

根据上述项目管理要素与软件工程开发要素的结合,平衡项目开发过程中的开发要素,能更加简洁高效地完成项目开发目标。IT软件企业处于项目为主导的环境中,每天所面对的将是成百上千不断发生、进行的项目。在这种多项目并发、高技术、快速变化、资源有限的环境下,为了试图满足不断变化的市场需求及应对各种挑战,必须考虑改进项目管理。

以项目为中心有效地将所有资源结合在一起的工作方式将是软件企业,特别是项目经理或企业主管必须面对的、认真思考的课题。一个成熟的软件项目,必须具有一位项目经理做到:了解软件开发项目完整流程;掌握如何制定完整精炼的软件项目计划书;掌握项目管理体系中的各个要素;学会进行项目的跟踪和总结等。除此之外,一个软件项目能否最终达到成功,最关键的是进度控制。对于进度控制而言,计划尤为重要,它影响到资源是否被合理使用,项目能否顺利进行,直接关系到项目的成败。有两个重要方法可以应用到该控制中,一个是里程碑设置,以周为一个小里程碑,以月为中里程碑,以项目初验为一个大里程碑,允许在一定范围内存在进度偏移度。另一个是项目定期汇报。提交工作项目周报,包括项目名称、项目负责人、项目开始时间、项目计划初验时间、項目计划偏移度等。最后,制定周例会制度、建立配置管理和监督体系,也尤为重要。

第2篇

1SPME方案架构

该方案涉及的主要对象是软件经理和各模块的软件研发负责人,SPME方案架构如图1所示。图1中,SPME方案覆盖整个项目的启动、规划、执行、监控和收尾5大过程组,并贯穿始终。(1)启动规划阶段。首先软件经理和项目规划、产品经理、整个项目的项目经理、硬件、测试等同事进行充分沟通,确定项目范围,给出项目详细信息;其次根据项目信息,由软件经理牵头组织各模块研发负责人或具体的开发工程师,进行需求评估,划分出项目阶段,进行WBS分解,确定出开发环境和代码组织、人力规划、时间点计划等,达成一致的范围和成本基准;最后由软件经理画出关键时间点的时间轴图,建立时间基线。该阶段以确定了范围、成本、进度基准,输出了文档为结束标志。(2)执行和监控阶段。各模块的研发工程师按照WBS分解进行软件研发,同时用一页纸嵌入式软件项目管理表[1]进行研发问题的状态跟踪,这样以便后续参考和作为进展汇报给软件经理。软件经理进行进度和攻关问题的跟踪,同时每周要输出周报将研发进展或一些变更情况及时通知到整个项目组。该阶段一直持续到软件版本被验收通过。(3)项目收尾阶段。各模块研发负责人进行各模块技术提炼和总结,完善一页纸嵌入式软件项目管理表并汇报给软件经理,软件经理再根据项目详细信息等1~5份过程文档记录,进行整体复盘总结。

2SPME方案模板和具体应用

笔者选用了较为通用的Excel工具,基于这个方案给出管理模板,如图2所示。整个文档是一个工作簿(book),图1中提到的各文档分别作为该book的一个个对应的工作表(sheet),图2最下方的Excel表的各工作表信息仅展开了文档“1.项目信息”这个sheet的内容,相应还有其他sheet,这样整个项目用一个Excel文档就可以非常方便地跟踪起来。(1)项目信息。项目信息需要和项目组各方确认,并要特别注意规划阶段将项目的关联性和图2SPME方案模板特殊共性需求信息讨论清楚,确定后由软件经理将各项信息记录下来,也可根据实际需要进行丰富或裁剪。项目启动后,“1.项目信息”要最先共享给整个开发团队成员,作为研发启动的标志。这样在多项目并行研发时,可以使整个团队目标清晰,并充分利用各项目间共性部分,对特殊部分单独搭建以防干扰其他项目,使软件研发事半功倍。(2)WBS分解。软件经理组织各模块研发负责人或具体的开发工程师一起评估需求,划分出项目阶段,进行WBS分解,最终结果记录在“2.WBS分解”的sheet中。这个过程是明确项目软件研发范围基准、时间基准和成本基准的过程,所以WBS分解出的工作包需和各负责人讨论达成共识,有争议的要和项目组其他人员,比如:硬件、市场、测试、规划等同事商定。确定下来后必须评估出开始结束时间,并进行编号。WBS是项目执行的主干和绩效考核的基本依据。(3)时间轴图。完成“2.WBS分解”确认好时间点和逻辑关系后,由软件经理将各重要的工作包节点,特别是模块开发完成、版本、送测、上市等节点按照时间顺序标注出来,形成一个直观的时间图表,记录在“3.时间轴图”sheet中。这些时间点就是整个软件研发的时间基准。在执行和监控过程中要不断地进行核实,并标注出当前进展到哪,以便向项目利益相关者进行进度汇报,并可以从宏观上明晰项目状态。(4)过程问题跟踪和周报。在项目执行监控阶段中,软件经理将WBS分解出的各工作包分配到各模块的负责人,标志着研发执行工作正式开始。在多项目并行的情况下,具体的研发工作由各模块负责人采用一页纸嵌入式软件项目管理方式[1]进行研发跟踪,软件经理则采用“4.过程问题跟踪表”,“5.周报”将精力集中在各项目的进度和攻关问题的管理上。其中,过程问题跟踪表,一是用作WBS工作包的进展跟踪;二是将研发过程中新增的重要问题和变更记录下来,安排处理并跟踪处理进展,这样可以避免耗时耗力地去翻邮件查询相关问题信息,或遗忘等效率低下的现象。执行过程中,软件经理至少每周要安排对软件版本进行构建和测试,具体的周期时间可根据实际进行调整,整个研发团队从软件版本的测试情况,对研发工作的进展进行核实,由软件经理收集各模块的研发负责人汇报的开发进展,结合各项目过程问题跟踪表记录的一些问题和状态,梳理出周报。周报侧重于目前识别出的主要风险和需要领导协调的事宜,软件研发整体进展和下周计划,其中下周计划要细分到各软件模块,使得每个团队成员都有明确的目标和任务。周报是项目报告绩效和监控风险的重要工具,需要每周固定时间以邮件或其他方式共享给整个项目团队成员和相关领导,以便使相关信息能及时传递到位,新增需求和变更的迭代开发[3]。风险问题引起高层领导的重视和推动,使得整个团队步调整齐,从而达到预定目标。(5)复盘报告。软件版本被验收后,及时进行复盘总结。主要涉及客户分析,并针对主要需求,相关过程问题和教训等项进行总结,同时将开发负责人完善的一页纸嵌入式软件项目管理表附入到“6.复盘总结”sheet中。至此整个项目过程就通过层层的文档化,汇成了一份完整的软件研发项目总结,可以通过复盘会议等形式对整个项目团队或相关的项目团队进行共享。以上给出了SPME方案模板和具体应用。模版是基于Excel的建议格式,使用者可以根据SPME方案的思想和各自的需求进行定制和扩展。这样通过一个Excel文档就可以跟踪整个项目,从而使多个并行研发的嵌入式项目,有了统一的软件研发管理模式,可以更清晰、快速、有效地进行问题跟踪和信息传递,暴露项目研发中的风险,有效地降低人力协调和沟通成本,便于归档和追溯,能更快更好地进行项目交接和对比总结。

3结语

针对一个软件团队,在多个嵌入式项目并行研发下的软件项目管理,目前业界还没有成熟的实用方案。本文基于当前存在的问题,结合PMI、敏捷开发的理念和笔者多年从事软件研发管理的经验,提炼出SPME方案,并给出了模板和具体应用,归纳和展示了该方案的优势和价值。相信通过这种管理方法,能够使软件管理者在纷扰的多项目并行研发中,梳理出头绪,如条条主线引领着各个不同的项目走向成功,同时能形成一笔笔有益的积累,使嵌入式软件和相关产品越做越好。

作者:王晓伟 单位:中兴通讯股份有限公司手机产品体系项目一部

第3篇

[关键词]软件项目;设计管理;流程

[中图分类号]TP31 [文献标识码]A [文章编号]1672-5158(2013)06-0076-01

1 何为流程及在软件项目管理中的作用

1.1 软件开发的目的

在进行软件项目开发活动中,要实现很多目标,比如关于项目的范围、成本、时间以及质量等,项目协调也是要完成的目标。项目协调可以满足项目参与者和利益相关者的要求,伴随软件规模和它所涉及领域的扩展,软件项目管理变得越来越复杂,大大的增加了管理难度,造成这结果的主要因素是不能管理其过程如果管理项目在无纪律混乱的情况下,那么项目组织就很难总结出好的管理方法和工具,就更不用说从中获益了。管理严谨的好处不仅能够就检查和改进在阶段内出现的偏差,还可以及时的终止项目。甚至还可以避免人才的来去带来的负面影响。如果想要有效的对过程进行控制,就不得不对项目管理流程更加明确。

1.2 软件项目的构成

一系列活动有机构成流程。而个人与团体构成基本活动,基本活动的构成不需要来自其他活动的转换。流程的每个活动间都有着自己的独有的流向,在流程过程中包含着明显的开始与结束,所以这是一个非静止的概念。从结构方面可以看出,流程由四个基本因素构成:活动及活动的逻辑关系、承担着、实现办法。流程管理所包含的不但有管理技术,还有现代管理的理想,以前的职能管理凭借的是控制、塔式组织。但随着时间的推移其已经不能适应市场竞争和当今企业的发展需要,以分工理论为主的管理理论已经使用了几百年,目前又返回到系统和整合上面。

1.3 软件项目生命周期的一系列的开发过程是各种各样的流程活动

软件项目是由各种各样活动流程活动组成的,具体包括如下,软件项目的计划编制、系统分析、概要设计、详细设计、程序编码、测试与维护等活动过程都属于流程活动:制定软件项目管理流程,当我们在制度项目管理流程过程中,要着重考虑一下几点:(1)流程的制定可以将项目逐步引至成功,(2)流程的制定可以适应软件的开发,(3)流程的制定对项目开发可以起到指导作用,(4)流程制定是使用流程图表示的,可以让每个参与者都能够清楚的明白管理过程与开发过程之间的关系,(5)流程过程中的参评要有明确的定义、标准和方法。

2 软件项目管理大体过程设计

2.1 软件项目管理的构成

软件项目管理过程大体可以分为以下几部分:项目构思、项目立项、签订合同和执行合同。可以使用P1、P2、P3、P4、P5代替。同时也可以划分为五个里程碑,分别是:完成立项、签订合同、定义功用、产品开发、投入市场,可以用TM1、Tm2、Tm3、TM4、TM5代替。

2.2 软件项目管理的流程分析

项目管理的大体流程分析,项目搜寻是项目开始的前提,其阶段主要任务包括收集市场信息、客户需求、以及潜在的需求。项目立项阶段就是可行性的研究阶段,就是讨论成本与效益的可行性。项目售前阶段是项目立项与签订项目合同的这段时间,主要任务包括以下几个方面:做好与客户介绍交了的计划、对产品的销售对象要有一个比较全面的了解以及客户对项目感兴趣的原因和对产品的要求。合同生成阶段要做的是对项目方案的比较与相关的政策法规的认识,以及对合同的评估以及签订合同。合同执行阶段是项目管理流程的重要环节,主要包括软件的开发、测试、验收、系统的维护等过程。

3 软件项目失败的原因和软件项目管理方法的探究

3.1 软件项目失败的原因

我们可以从目前国内外的软件行业企业可以看出,“软件危机”的影响仍持续着软件行业。软件项目的实施情况也总是很难令人满意。经过研究发现,软件项目之所以会失败的原因主要有以下两方面:一是应用项目发展难以控制;二是项目管理者对项目管理工作的认识掌握还不成熟。实践证明,缺乏有效的项目管理是致使软件项目失控的直接原因。

3.2 制定项目的任务

软件项目计划的主要作用是用来协调其他计划的,协调的目的是为了指导控制和执行可操作文件。它这是对客户需要的理解表现,是开展项目活动的开始,也是开展其他工作的依据,项目计划由全局计划和下属计划构成。在下属计划制定时,项目经理必须遵循的原则是:谁负责那一部分工作,那部分的计划就有谁来制定,项目经理只需审批就行。

3.3 开发过程的制定

软件开发之所以存在较大风险,最主要原因是软件过程能力低,这是因为管理软件过程十分困难,为此就非常有必要在软件过程的控制和管理方面加强。不同的软件项目有着不同的过程,虽然项目计划与执行是互相交叉的,其主要部分是相似的,但是不同的项目的每个过程它所包含的具体活动是差之毫厘谬以千里,而且由于不同的制定者所使用的开发技术和技术路线的不同,所导致的侧重点就不可能相同了。项目经理在计划制定前就必须根据开发软件的实际情况,建立一个稳定性好、可控的软件开发模型。

3.4 加强过程控制

软件项目的开发和实施总是处于动态之中,这种动态是持久的、永恒无止境的,世上不存在静止的软件项目。需求、技术、系统结构、代码都会发生变化,就算是连环计都会发生变化,项目经理在做好了计划和准备后,最重要的任务就转换到过程的控制上来了。过程管理和变更控制是过程控制的主要部分。配置管理是一个软件项目能否顺利执行的前提。在软件开发过程中比如会出现很多的附加产品,比如代码、一系列文档、数据等等,这些产品是有用的。而且随着软件项目的改变这些产品都会发生变法生产出不同的版本,试想一下,如果配置管理失效,项目工作人员势必会深陷配置项的“泥潭”。很明显我们应该加强项目过程的任何部分细节。

4 结束语

在本文设计的软件项目管理总体流程及相关技术,目前已经十分成熟了,在软件项目的研发和管理中已经大量的采用了。流程管理在软件项目管理中的使用,降低了软件项目管理的复杂性,增加了软件项目的成功率。事实也证明,根据企业和项目的实际情况,制定软件项目的实施步骤,确定产品的用处,指明各阶段的开始条件和终止条件,进行有效的流程控制与管理,这样将会极大的提高了软件开发的效率和降低项目的失败率。

参考文献

[1]罗铁清,王如龙,软件项目管理的研究及在项目开发中的应用,项目管理技术2005,3:66-70

[2]刘宽宏,殷人尾,基于GMMI的过程和产品质量保证模型,计算机工程,2004,30(15):75-77

第4篇

 

1 软件类课程的教学现状

 

目前国内院校对《C语言程序设计》及《数据结构》等软件设计类课程仍采用“以系统知识点的灌输”的传统的教学模式,甚至以“计算机等级考试”通过率作为考核教学效果的标准。教学中理论和实验分离,实验多为单一章节实验,缺乏对整个软件开发知识的综合训练,软件开发中缺少团队建设,编程亦不规范。主要原因在于老师不熟悉企业开发流程,教学与企业实际脱节较严重。枯燥乏味的知识点使得学生对课程学习失去兴趣,逐渐产生抵触的情绪,最终导致学生反应学习难度大,教师反应教学效果差[1]。

 

本文提出了一种综合《C语言程序设计》、《数据结构》、《数据库》等课程,模拟真实企业软件开发环境的新型实训课程。

 

本课程采用全新的教学理念,融合软件开发各种知识,并模拟各知名企业通用的软件开发模式,进行实战演习,注重团队合作精神的培养,进一步提高软件调试的能力。

 

2 《新型软件开发综合实训》课程出发点和意义的分析

 

本文从该新型实训课程的教学目标、教学内容、教学实施、课程考核办法等几个方面进行详细阐述。

 

本文提出开设的《新型软件开发综合实训》课程,旨在综合运用所学《C语言程序设计》、《数据结构》等软件开发基础课程,结合具体的驱动项目,并完全模拟企业真实的开发环境,以达到学以致用、教学与企业生产实践相结合的目的。

 

《新型软件开发综合实训》课程是在学生完成编程语言等基本理论学习的基础上,综合运用软件开发相关的主要知识和技能,在校内集中进行综合性、系统化的岗前训练,其目的是通过开发一个个完整的软件项目,将软件开发的各个主要阶段串联起来,让学生掌握企业的软件开发流程和规范,逐步培养软件开发项目团队协作意识。熟悉真实企业开发环境及较通用的开发模式,逐步积累项目开发经验,养成良好的软件开发职业素养。

 

3 《新型软件开发综合实训》课程具体实施方案

 

本课程属于全新课程建设,包括理论教学、实验教学、项目驱动教学。

 

1)该课程的总体安排

 

该课程须有2~3名教师承担,才能保证其指导效果;其次,开展具体项目之前要进行关于企业软件开发流程及编程规范的理论授课。理论教学的内容包括介绍软件开发的基本知识、各大企业较通用的软件开发流程、编程规范、团队建设等。理论授课教师应由本校有企业开发经验的双师型教师承担或邀请企业资深的软件开发专家承担。实验教学的教学内容主要是指导学生在具体项目开发中的设计思路、调试方法,以及如何组织测试、编写测试用例等。该课程的总体安排如表1所示。

 

表1 教学总体安排表

 

[《新型软件开发综合实训》教学总体安排\&授课类别\&课时\&内容\&授课教师\&

 

理论课\&

 

3\&1.本课程的教学目的

 

2.企业软件开发流程

 

3.各大企业通用的软件开发模式介绍\&

 

1.有多年软件开发经验的双师型教师

 

2.邀请企业软件开发资深专家\&

 

3\&1.编程规范学习

 

2.软件测试方法及测试用例编写

 

3.课程考核说明\&3\&1.代码检视必要性及要求

 

2.一种代码检视工具的学习\&

 

实验课\&

 

6\&通过具体小项目《通讯录程序设计》把企业软件开发流程、模式、代码检视、代码调试、测试用例编写等贯穿其中,为后续项目实训课打基础。\&

 

由负责本课程的2~3名教师承担\&

 

项目实

 

训课\&

 

27~36\&可选项目名称\&项目功能

 

要求\&学生管理系统\&1. …

 

2. …\&职工工资管理系统\&…\&…\&\&]

 

2)项目选取环节

 

项目驱动教学过程中,将所有选修学生分组,每组控制在8人左右,由指导老师拟定5~10个具有一定创新的综合性设计项目,项目选取要注重知识点覆盖,并有一定趣味性,难度适中[2]。由学生自选项目并组建团队,或学生自组团队,自拟项目,通过教师评估其自拟项目的难度及涉及知识面符合教学目标即可[3]。每个指导老师负责2~3个团队,模拟企业软件开发团队的模式指导学生。

 

3)团队组建环节

 

团队组建在对项目了解、对自身特长了解的基础上坚持自愿的原则自行组建,团队总成员一般为6~8人,为进一步增强团队意识,提高战斗力,每个团队需给出团队名称及口号。项目团队必须有项目组长、开发人员、测试人员、维护人员、文档负责人员等角色,组内每个成员可兼职其他角色,最多2~3个。

 

4)组内考核环节

 

组长定期组织开会,各成员汇报所负责的任务进度,评价前一阶段工作取得的成果与存在问题,并确定下一阶段的任务与目标。每一阶段完成后,项目组长需对项目组各成员给出阶段考评结果,每个项目根据实际情况可分为5~7个阶段。各阶段组内考核平均分作为组内考核总评。

 

各部分所占分值,态度:满分20分;任务完成情况:满分50分,按时完成基本功能可得40分,视具体情况可上下浮动;团队合作精神:满分20分;对团队的特殊贡献:满分10分。

 

阶段考核表格式如表2所示。

 

表2 组内阶段考核表

 

[《新型软件开发综合实训》组内阶段考核表\&团队名称\&成员\&态度\&任务完成\&团队合作\&特殊贡献\&阶段总评\&神

 

 

队\&谭洁\&20\&48\&20\&0\&88\&马韵\&20\&50\&20\&5\&95\&…\&\&\&\&\&\&]

 

5)代码检视环节

 

本新型实训课程注重代码检视环节,不仅要求完成项目基本功能,而且要确保所写代码符合编程规范。定期组织代码检视活动,各开发小组之间依据编程规范互相检测,检查结果量化公开,公开结果具体到某个开发小组某个开发人员,并把检视结果纳入考核。各部分参考比重为:

 

自己代码质量总分为70分,被检测出每个严重问题-10分,被检测出每个一般问题-3分。

 

代码检测能力,旨在提高学生阅读代码并发现问题的能力。其满分为30分,每发现一个严重问题+5分,每发现一个一般问题+3分。如果到后期代码质量越来越高,问题越来越少,再进行调整分值及比重。代码检视考核表如表3所示。

 

表3 代码检视考核表

 

[《新型软件开发综合实训》代码检视考核表\&团队名称\&组员\&被检出

 

严重问

 

题数量\&被检出

 

一般问

 

题数量\&所写代码

 

质量得分\&代码检测能力得分\&

 

代码检

 

视总评

 

\&神码队\&谭洁\&1\&3\&51\&25\&76\&马韵\&\&\&\&\&\&…\&\&\&\&\&\&苍鹰队\&高霄\&\&\&\&\&\&…\&\&\&\&\&\&]

 

6)项目答辩环节

 

项目结束要进行答辩,答辩组成员由2~3指导老师及邀请其他1~2名软件课程老师组成。答辩总评各部分比重为:项目基本功能演示占60%,特色功能展示占20%,答辩ppt制作占10%,回答提问占10%。答辩考核表如表4所示,团队的答辩总评作为团队各成员的答辩总评。

 

4 考核方案

 

考核是教学过程中非常重要的环节,既是体现教学的导向及侧重点,又是激励学生的重要方式[4]。

 

本文提出的考核方案,注重项目开发的企业化,既体现团队合作的重要性又重视个人的才能的展示。

 

表4 答辩考核表

 

[《新型软件开发综合实训》项目答辩考核表\&团队名称\&口号\&项目名称\&组长、成员数\&基本功能\&特色功能\&PPT制作\&回答问题\&答辩总评\&神码队\&神码都是赋韵\&学生管理系统\&谭洁

 

6人\&\&\&\&\&\&苍鹰队\&高效就是那么任性\&职工工资管理系统\&高霄

 

7人\&\&\&\&\&\&…\&…\&…\&…\&\&\&\&\&\&]

 

理论课总评占20%;各开发小组内自主考核即阶段考核总评比重较大,为30%,充分体现对团队合作的重视度;团队答辩成绩作为个人答辩成绩,占30%;代码规范性检查占20%,考核表如表5所示。

 

表5 《新型软件开发综合实训》课程总考核表

 

[《新型软件开发综合实训》总考核表\&姓名\&理论课考评(20%)\&组内总评

 

(30%)\&答辩总评

 

(30%)\&代码检视总评(20%)\&总评\&谭洁\&\&\&\&\&\&高霄\&\&\&\&\&\&…\&\&\&\&\&\&]

第5篇

关键词:项目管理;软件;开发应用;问题;对策

现在,信息技术发展速度越来越快,在这种背景下,企业需要应对信息化变化的挑战就必须高度重视软件的开发在具体项目中的应用。但目前一些企业在软件的开发与应用中存在着许多不容忽视的问题,需要我们认真研究并努力解决。

一、项目软件管理的基本内涵

1、什么是项目管理

项目管理是在一定的约束条件下,以高效率地实现项目业主的目标为目的,以项目经理个人负责制为基础和以项目为独立实体进行经济核算,并按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。

2、为什么要有项目管理

没有项目管理,项目也有可能成功。但没有管理的项目,很难保证项目的利润空间,对公司来说,亏损的风险就大。所以,我们要有项目管理,以保证公司在总体上是盈利的,注意不是每一个项目都要盈利。

二、项目软件管理的发展现状

现在项目管理作为一种现代化管理方式在国际上已获得了广泛的应用,从最初的国防、航天、建设工程领域,迅速发展到电子、通信、计算机、软件开发、金融等行业以及政府机关的项目管理工作。随着计算机、网络系统的迅速发展,项目管理技术的不断进步,项目管理软件产品层出不穷,其功能、特点、应用对象也各不相同。从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。

软件开发是一项复杂的系统工程,牵涉到各方面的因素,实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。目前的软件开发正逐步趋向于复杂化、多元化,大多数开发团队中都会出现同时开发多个版本、开发维护工作并存、多地点同时开发等情况,给软件开发管理带来了前所未有的困难。如果管理不善,必将造成版本混乱,各个开发人员的工作相互交叉、干扰,整个开发团队的工作在一种无秩序的不良状况下运行,严重影响软件产品开发的进度和质量。

三、项目软件管理常见问题及解决策略

1、缺乏项目管理系统培训

项目经理在项目管理方面的培训较少或不够系统。项目经理或管理人员不了解项目管理的知识体系和一些常用工具和方法,所以在实际工作中没有项目管理知识的指导,完全依靠个人现有的知识技能,管理工作的随意性、盲目性比较大。在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。

解决策略:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。应实行项目经理知识技能资格考核制度,让项目经理自觉补充学习项目管理的知识和一些常用工具和方法。

2、项目计划意识问题

项目经理对总体计划、阶段计划的作用认识不足。项目经理认为计划不如变化快,项目中也有很多不确定的因素,做计划是走过场,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。没有计划或者是随意的不负责任的计划的项目是一种无法控制的项目。

解决策略:在高技术行业,日新月异是主要特点,因此计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关各种知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。

3、管理意识问题

部分项目经理没有意识到自己项目经理的角色,没能从总体上去把握管理整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。

解决策略:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。

4、风险管理意识问题

项目经理没有充分分析可能的风险,对付风险的策略考虑比较简单。项目经理在做项目规划时常常没有做专门的风险管理计划文档,而是合并在项目计划书中。有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。

解决策略:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。

5、不重视项目经验的总结

项目经理在项目结束时有些是因为自身对写文档工作的兴趣或意识,或者是因为紧接着要参加下一个项目,总体对项目总结的重视程度不够。有些是项目总结报告一再拖延,有些是交上来的报告质量较低,敷衍了事。

第6篇

关键词:项目开发 成本核算 问题 对策

软件公司项目管理主要是指为了保证某一项目目标的实现,从而开展的前期项目开展计划、全程的项目管理、项目的绩效考评等。项目管理质量的好坏主要依据项目的整体绩效、项目投入成本、项目完成周期以及项目涉及范围等几方面,在这几个主要评价指标中,能够进行有效管理控制的只有项目成本,通过对软件公司某一项目成本进行核算,可以准确的评估项目的开展状况,并能够进一步确认项目的收益。此外,通过核算项目成本,确保项目进度以及项目范围处于合理的控制范围内,确保项目能够取得应有的收益。因此,强化软件公司项目管理,必须强化针对项目成本的核算,从而提高项目整体管理水平。

一、项目成本核算主要内容分析

现阶段,项目成本核算的内容主要包括直接成本以及间接成本两部分,直接成本主要包括项目开展材料费用、人工费用以及其他各类直接费用,间接成本主要包括参与项目开发的各种管理费用、员工福利支出以及员工保险费用等。对于软件公司的项目开发而言,由于主要是由员工利用计算机进行技术研发,所以成本主要是由人工成本所构成的,人工成本的高低也是决定项目开发经济效益的关键因素。

二、软件公司项目开发成本核算问题分析

1.人工成本核算困难

由于软件公司在项目开发过程中人工成本是最难以准确核算的部分,而且人工成本在总成本中的比重最大部分,项目在开展过程中,迫于时间和质量的要求,必须在项目开展过程中追加人力,这就造成了人力资源的使用超出了原计划的预算,造成项目开发成本的提高以及整体利润的降低。

2.软件公司项目成本核算体系不健全

软件行业作为一种新兴的行业,与其他领域相比较,在成本核算方面理论体系是相当不成熟的。而且现阶段大部分的软件公司成本核算并不是根据单独的项目进行核算,而是结合部门进行统一核算的。由于一个部门可以承担多个项目,因此难以根据某一项目的财务管理数据开展项目核算工作。

3.我国相应的企业会计准则中针对项目成本核算缺乏明确的规定

现阶段在软件公司项目成本核算过程中,究竟是作为无形资产、在建工程或者是存货,进行核算,缺乏一致的认识,以项目作为核算中心的财务体系不健全,导致项目成本核算存在较多问题。

三、项目成本核算管理

强化软件开发过程中的项目成本核算管理,已经成为项目开发管理的主要内容,项目成本主要通过以下几方面进行核算管理:

1.软件公司项目开发工时统计

(1)建立健全项目管理相应的数据信息。对于参与项目信息管理收集的单位组成及人员主要包括开发的部门、人员组成、项目编号的设置以及项目的具体开展阶段,进而对项目开展进行全方位的动态监控,同时也可以以此为依据核算出不同时期项目开发所耗费的总工时,将工时与原先预算时候的项目指标进行科学比对,从而明确项目管理的实际状况以及是否发生偏差,可以根据不同的情况对项目开发的步骤或者是预算进行调整管理。

(2)软件公司项目开发工时的统计。工时统计直接关系到软件公司项目开发成本核算的准确程度,这一部分是软件公司项目管理中的核心环节,因此软件公司的各个管理层都应当强化重视工时统计工作,并针对工时统计表、相关负责人审批、主管部门整理汇总以及最后的分析比较等。对于项目开发过程中的工时统计方法主要有以下两方面:通过相应的管理软件,并结合员工的考勤平台填报;手工填报法,并将表中的统计数据准确地录进系统中,再通过统计分析得出相关人员的单位项目耗时。

2.项目人工成本计算

在这一部分的核算中需要将每个人的人工工时与其相对应的工时工资相乘来获得,也就是把参与某一个项目的人员的总的人工成本进行累计相加,以此获得这个管理开发项目的直接人工成本。

3.间接人工成本的分配

一般情况下,项目开发的间接费用是根据具体的项目管理部门来核算的。 软件公司在进行项目开发过程中的研发部门的职工福利费、社会保险以及内部管理、培训学习所耗人工成本都属于间接人工成本;而房租、水电、固定资产折旧等都是其他间接费用。对于这些间接成本的核算,应当汇总至部门管理费用之中,在项目开发结束时同意分配结转到各合同项目成本中。对于分配方式的选择,可以根据部门所承担的各合同项目人工成本占所承担所有合同项目的人工成本之和的比重来分配。 在软件开发项目结束时,根据间接费用的分配计算结果作分配结转分录,将研发部门的间接费用分配到各个合同项目中。通常情况下采用财务软件核算的公司期末只需算出分配率,再利用软件期末自动结转分配的功能设置结转分录,由系统自动结转间接费用即可。

4.软件公司项目成本的归集以及结转

一般情况下,软件公司开发某个管理项目需要耗费较长的时间,不少的项目成本在进行会计核算时常常会跨域某一个会计期间,在多个会计期间内核算。在这种情况下,就需要新设置一个相应会计科目来整理归集软件公司的项目成本,在会计周期末,软件公司可以根据项目的实际开发进度合理地确定项目的完工比例,并对收入和费用进行科学结转。

首先,在进行软件开发项目的成本核算过程中,应该针对资产类会计科目中增设“项目成本”科目,通过项目成本这一科目来汇总软件公司项目开发过程中所发生的所有的直接成本以及所有的间接成本并且在设置相应科目时应当尽量细化具体,将科目落实明确到具体的部门或者项目,现阶段,较多的采用一些具有辅助核算功能的管理软件来进行项目成本的核算,进而明确项目参与各部门的总的项目成本,以此可以实现科学合理的项目绩效评价。

其次,在软件公司项目核算中还需要遵循成本费用配比原则以及权责发生制原则,在进行相应成本的结转时要确保与相关收入金额匹配,可以依据完工百分比法确认项目收入情况,并依据收入结转比重结转成本,计算利润。

再次,项目开发过程中,公司财务人员还可以以积极参与公司管理,通过向业务考核部门提供相应的项目进展数据以及绩效评价财务信息等,帮助管理层提升管理能力,并以此深化部门项目业绩考核,强化项目监管和控制,提升管理效率和效益。

四、结语

软件公司作为以科技为核心的技术型企业,主要是针对科技知识以及信息的生产、处理以及应用,作为以知识资源为基础的知识经济的代表,传统的项目管理的理论以及观念已经难以适应。必须对软件公司的项目管理进行深入的研究。因此,软件公司在进行项目管理过程中,必须充分认识到项目成本核算的作用,并分析项目成本核算的主要难点,按部就班的开展项目成本核算,提高项目管理水平,确保软件公司项目开发的顺利进行。

参考文献:

[1]吴晓颖.新时期会计专业大学生参与成本核算与管理探析(期刊论文).商情2010(3).

[2]蒋凤英.张家港市中小企业成本管理的现状及对策(期刊论文).沙洲职业工学院学报,2007(04).

第7篇

关键词: 软件工程课程教学 问题 对策

一、引言

软件工程是建立在计算机科学基础上、指导计算机软件开发和维护的工程学科。本课程已成为计算机及信息学科相关专业最重要的专业基础课之一,在计算机科学专业和软件工程专业的人才培养上发挥着非常重要的作用。

软件工程是一门研究研究软件开发与维护的普遍原理和技术的工程学科,其研究的范围非常广泛,包括技术方法、工具和管理的等多个方面,软件项目的过程、组织和管理涉及面广,理论性、技术性、工程性都很强。软件工程自身的抽象性与应用性都很强,在目前教与学的双向过程中存在不少问题,致使教学效果很不理想。如何提高“软件工程”的教学水平和学生的学习效果,是国内外学者广泛探讨的话题。我从软件工程教学中存在的问题出发,在更新教学内容、激发学生的学习兴趣、改进教学方法与手段、加强实践环节、改革考试方式等方面提出了一些具体的建议。

二、目前教学中存在的问题

1.教学内容陈旧。

近年来,软件工程中的WEB应用开发技术、软件重用技术、原型开发方法、软件构件、集成化CASE工具与环境等领域取得了显著的进展,而国内各高校使用的教材,因编写时间的限制,在先进技术的跟进、知识结构、内容取材及实践环节等方面或多或少存在缺陷,有的甚至还停留在对面向过程的结构化方法上,却忽略了目前更适用更流行的面向对象方法,有的教材连项目组织、软件成熟度、软件构架、项目风险等十分重要的内容都未给予足够的论述。同时,软件工程作为一门正在飞速发展的学科,目前大部分教材难以及时、全面、准确地反映当前一些新方法新技术和新工具。

2.教学方法不当。

目前有些高校仍然把软件工程列为纯理论课程,教学的工具就是一张嘴、一支粉笔和几乎是教课书内容翻版的教学课件,使得学生往往是被动地接受知识,非常地枯燥乏味,很难激发学习兴趣。另外软件工程课程的教学内容是针对较大规模的软件项目开发而设计的,十分庞杂,涉及面非常广,很多知识建立在实践经验基础之上,这种“填鸭式”的教学方法,对于尚未踏入社会、没有项目经验的学生而言,很难理解该课程的精髓,很容易对该课程产生虚无缥缈的感觉,使整个教学过程流于形式,该课程变成需要死记硬背的课程,学生在学习完课程后将一无所获。

3.学生学习中存在的问题。

在传统的教学过程中,软件工程往往是一门独立的理论性课,学生对软件工程的抽象理论容易感到枯燥乏味。这门课不涉及具体软件项目,不怎么涉及软件算法,没什么逻辑推理,不像程序设计课程那样能带给学生智力上的,激发学生的学习兴趣和热情。不少学生认为软件工程就是一些条条框框,由于缺乏实践经验,缺乏合作开发软件的感性体会,他们在学习过程中难以理解软件工程的精髓,很难在头脑中将软件工程的抽象理论和实际联系起来,因此较难对这门课程产生学习兴趣。

4.教学实践环节薄弱。

软件工程的理论并不是空洞的理论,它的许多理论及规范均来自于实际需要和前人的经验总结,它的目标是实实在在地做出一个满足用户要求的系统出来,这是一个很具体的实践过程。通过学习,学生应该具备从事工程实践的技能,包括软件项目的系统分析、编写文档、源码设计与控制、使用工具等基本技能。因此,教师需要将基本概念、原理和实现技术与具体的软件项目相结合,以实例增进学生理解,以实践锻炼学生的工程能力。然而,在当前的教学中,普遍存在理论教学与具体实践脱节的现象,有时甚至缺乏进行教学实践的场所与环境,这样势必造成学生无法真正理解软件工程的精髓,更难以做到学以致用。

三、软件工程教学改革建议

以上分析了当前软件工程课程在教学中存在的一些问题。随着教学改革的不断深入,软件工程的教学改革在迫在眉睫。下面我就软件工程课程的教学改革谈一些建议。

1.更新教学内容。

在教学实践中,应该结合软件工程的发展和国内外软件企业的人才需求现状,不断更新教学内容,更要注重一些新方法新技术的讲授。例如,关于软件工程方法学,重点讲授面向对象方法学,略讲传统的结构化方法,注重面向对象方法在内的一些新方法新技术,让学生尽快熟悉和掌握软件重用、快速原型、集成化CASE环境等,同时要保持教学内容对先进技术的跟进,介绍一些目前已经推出或比较成熟的新方法,如:基于组件的方法、面向Agent方法、敏捷软件方法等。而对一些没有长久生命力的,并且在今后的项目实践中又很少用到的知识,尽量少讲,这样既有助于开拓学生的视野和培养创新意识与开发能力,又能使他们步入工作岗位的时候而不落伍。

2.提高学生的学习兴趣。

“兴趣是最好的老师”,是学生求知欲的源泉,是思维发展的动力。教师应从教材实际出发,讲究教学方法,激发出学生对本课程的学习兴趣,这对于教学效果的保障具有重要的意义。“软件工程”包含了较多的理论内容,且大多数学生都是第一次接触,是一门理论联系实际的综合性很强的课程。所以教师应通过多媒体动画等教学手段生动地剖析基本概念和基本原理,并以基本概念和基本原理贯穿软件工程知识体系的方式组织教学内容,让学生深入理解基本概念和基本原理背后的深刻内涵,并让学生系统地掌握各知识点之间的逻辑关系。要鼓励学生主动地提出问题、分析问题、解决问题,激发学生的主动学习兴趣。

课堂讨论也是一个提高学生学习兴趣的有效途径。教师在每堂课讲完之后应该给学生留出5分钟时间,要求学生通过讨论对所学知识进行总结归纳,然后进行评价。评价方式可以是学生相互交换自己总结的内容并进行讨论,最后由教师补充、纠正和提炼知识点。这种方法不仅能提高学生总结归纳能力,而且能激发出学生的学习兴趣,使学生主动地参与到教学当中。

3.加强实践和工程训练,提高学生的实践能力。

软件工程是一门实践性很强的课程,实践环节能使学生对整门课程中的方法、技术、工具等有亲身的体验和系统理论知识的梳理,对整个教学质量的检验具有举足轻重的作用。抓好实践环节,对培养新型的合格的软件人才具有十分重要的意义。因此在努力提高课程教学质量的同时,还应该加强实践环节的管理。

软件工程的实践以课程设计为主,教师可根据学生的能力,设计一套完整的课程设计方案。课程设计的目标是通过在课程实践的一系列环节中,如需求分析、设计、编码和测试,让学生提高其综合运用软件工程的方法、技术、工具、过程进行软件开发和软件项目管理的能力,并培养其团队协作的精神。

课程设计要求完成的项目必须具有一定的规模和复杂性,教师可将学生划分为6―8人的项目小组,项目组成员相互合作共同来完成一个项目。各项目小组应严格按软件工程各阶段的要求来完成该项目,在项目开发的各关键阶段(可行性研究、需求分析、总体设计、详细设计、测试和项目开发总结),各小组都要进行报告,由老师和其他小组现场提问,最后教师给出点评,这种阶段评审有利于各小组开发进度和质量的保障。

在课程设计结束时,每个项目组应提交软件产品和规范的软件开发文档(项目开发计划、需求说明书、总体设计说明书、详细设计说明书、测试分析报告和项目开发总结报告等)。课程设计完成后必须进行现场答辩,在答辩过程中,不仅对学生进行评分,而且指出学生的不足,提出改进的意见和建议。通过现场答辩的方式可以让学生进一步明确今后需要改进的方向,使自身在分析问题、解决问题、交流沟通、团队协作、谈判沟通、适应发展等方面的能力获得较大的提高。

4.教学方式与教学手段的改革。

软件工程的原理、方法、技术若不与实际项目结合,学生往往难以有深刻的体会。因此,为增强授课效果,提高学生学习的积极性,课堂讲授应引入项目式教学法。教师可设计一个完整的、规模适中、难易适度的软件项目,在讲授软件工程基本知识点时结合该项目进行重点讲解,即以该项目作为贯穿整个软件工程授课的主线。

为了提高课程教学质量,激发学生的学习兴趣,不仅可以采用多媒体教学方式,而且可以建立软件工程课程的教学网站。软件工程课程网站中不仅有该课程的介绍,而且有大量的教学资源(多媒体课件、实验指导、自测题、试卷库、常用软件工程新技术介绍、新工具介绍和演示、有价值的参考书籍和网址等),学生还可在网站上提出自己在学习过程中遇到问题或者对本课程的教学好的建议,教师或其他学生则可进行回答或共同探讨,为广大师生学习、交流、提高提供很好的途径。

5.考核方式的改革

很多高校软件工程课程传统的考核方式以期末书面理论考试为主,但软件工程是一门实践性非常强的课程,原有的考核方式使学生不注重实践能力的提高,倾向于被动地接受理论知识,学习缺乏兴趣和主动性,只是在考试前突击复习来应付考试。理论考试成绩不是重点,主要是看学生能否在软件开发过程中贯彻软件工程学的思想和方法。因此,要加大实践考核的比重,如课堂出勤占10%;课堂表现占10%,为力避学生考前突击现象,本课程在平时课堂教学中采取课堂提问方式或者进行一些基础理论的测验,帮助学生循序渐进地巩固基础知识点;课程设计占40%;期末考试占40%。采用以上考评方法,学生们将非常重视课堂上的发言,以及知识的运用和创新,主动学习的积极性将会大大地提高。

总而言之,要改进软件工程的课程教学,除了要遵循教育学的普遍规律、合理安排好课程内容外,还要培养学生的学习兴趣,重视理论与实践的结合。

参考文献:

[1]张海藩.软件工程导论(第五版)[M].北京:清华大学出版社,2008.

[2]曹薇.高职院校软件工程课程改革探析[J].高教论坛,2008,(02).

[3]陈丽萍,张芳.软件工程教学方法探讨[J].教学园地,2009.3.

第8篇

关键词:软件体系结构;案例教学;实践教学平台

中图分类号:G642 文献标识码:B

建大厦必须进行设计,而建平房则不需要设计。传统观点认为需求分析是项目开发成败的一个关键,项目的失败或夭折主要是由于需求分析不充分造成的,但对如何做好需求分析却苦无良策。在软件开发的早期,软件代码量不大,对设计重要性的认识也不充分,程序员可以设计、编码一肩挑,但随着软件规模的扩大,人们在大型软件的开发面前显得力不从心,因而产生了软件体系结构理论。现代观念认为通过需求与设计之间的迭代,并根据设计建立系统原型,能够较为充分地理解需求并得到满足需求的设计。

软件体系结构的设计在中大型软件项目中更易于显示它的意义,这也是软件体系结构课程产生的原因。“软件体系结构”作为高等学校软件工程专业的一门核心课程,是根据人们的软件设计经验总结出来的理论与实践相结合的课程。“上梁不正下梁歪”,体系结构的设计是现代软件开发中最为重要的一环,它设计得是否合理直接关系到软件的成败。随着软件规模变得越大越复杂,软件开发对软件架构师提出了更高的要求。

1课程特点与面临的问题

1.1软件体系结构课程的特点

(1) 软件体系结构的设计原则、技术、方法较为抽象

软件体系结构的设计原则、技术、方法可以应用在不同的软件项目中,其目的是为了在给定的时间、经费等条件限制下设计出高质量的软件,它们位于所有具体项目之上,针对全体软件项目,因而是抽象的。

(2) 软件设计的效果体现在软件开发的后续阶段中

软件生命周期包括可行性分析、需求分析、设计、编码、测试、运行维护等多个阶段,设计对软件成败的影响往往在这个阶段反映不出来。设计阶段做出的一个决定,可能要到编码、测试甚至是后续的维护阶段才能显现它的效果。

(3) 软件体系结构的设计往往是折衷与权衡的产物

软件中的一些质量要素经常是相互冲突的,即软件的质量要素之间既有正相关,也有负相关,因此在实际的软

件系统设计过程中,必须根据具体情况对各种要素进行折衷与权衡,从而得到总体上满足用户要求的软件。怎么折衷和权衡,必须结合具体项目,根据项目的实际情况去把握。

1.2教学中面临的问题

(1) 软件体系结构的抽象理论容易使学生感到枯燥乏味

由于授课对象是大三学生,项目开发经验有限,学生很难在头脑中将软件体系结构的抽象理论和实际联系起来,因此较难对这门课产生兴趣。在接受抽象的理论时,容易产生枯燥乏味的感觉。

(2) 学生缺乏完整项目的体验

学生参与的课程设计实践一般仅限于小型项目,很少有机会参与软件开发和运行的全过程,难以体会到软件体系结构设计中关于正反经验的总结。例如,可维护性是软件的一个重要质量指标,但学生很少有机会去参与真正的软件维护,所开发的系统大多只是给任课教师大概地检查一下,一般不会交付使用,没有经受用户的真正检验,设计里的很多错误被隐藏起来了。但学生看不到错误,就不能对这些错误进行维护,也就不能体会到设计阶段工作对可维护性造成的影响。而且对于经验欠缺的多数学生来说,软件设计中的折衷与权衡难以想象,不容易理解和把握,包括各种质量属性之间以及与很多非技术因素的折衷与权衡。

如何搞好这门课的教学,是摆在教师面前的一道紧迫课题,对教学方法、手段和个人经验都提出了很高的要求。我们提出通过本课程学习要达到以下三个目标:

(1) 帮助学生了解软件架构的基本概念,初步掌握中大型软件系统构架的分析与设计方法。

(2) 使学生了解软件系统的成败不仅取决于用户的功能需求是否被满足,还和各种外部约束条件有关,如设计师的素质与经验、开发组织的目标以及政策法规限制等,从而提高软件设计的基本素养。

(3) 引导学生认识系统的性能、可用性、安全性等质量属性都是受软件构架制约的,或者说这些属性的实现影响着设计师的设计选择。

2强化案例教学,建设符合学生接受能力的案例

本课程较为抽象,要求学生有一定的软件设计经验,为了弥补学生在设计经验上的不足,我们在本课程中采用以案例教学为主的方法和手段,尽量将理论讲授和实际案例结合起来。案例选取有三方面的要求:一是要选取学生能听得懂、能理解的案例,案例本身不能过于复杂,超出学生的可接受范围;二是案例不能太简单,应稍高于学生的现有经验,这样才能提高学生的学习兴趣并帮助学生提高;三是案例要和每阶段的教学内容相匹配。经过几年的教学积累,我们以实际系统为基础,建立了多个符合学生理解和接受能力的案例,如软件学院的研究生选课系统、软件学院的图书管理系统、学生宿舍管理系统、订票系统、软件学院校友管理系统、超市进销存系统等。这些系统都是真实的,也是学生经常接触的,有很强的参照性,学生容易接受。我们还把这些系统作为课程实践的选题,提供原有设计方案和源代码,让学生使用并提出意见,找出原先设计的不足并改进,大大提高了学生实践的感知能力。

在学时分配方面也做到向案例教学倾斜,本课程总共48学时,除了8个学时的专门案例分析和8个学时的上机实践,在课堂理论教学时还穿插大量案例,案例教学占课堂授课比例的40%左右。我们还采用启发式教学手段,在课堂上留有一定时间专门就案例展开讨论,鼓励学生通过争论来比较和掌握软件构架设计方。例如,学生都实际使用过选课系统,选取该系统作为案例,学生就很乐意参与讨论并给出建议。这些手段的采用取得良好的教学效果,加深了学生对抽象的软件架构设计思想的理解。

3教学内容与教学手段

(1) 激发学习兴趣和热情

我们从课堂气氛、内容选择、语言表达三个方面入手。在营造课堂气氛方面,讲解时尽量营造探究气氛,鼓励学生参与讨论,避免学生被动地听,增强教师与学生的交流互动。在内容选择方面,选一些容易引起学生兴趣的素材。例如,在讲到架构风格时,我拿了一个自己编写的对战游戏程序给学生看,由于这种游戏学生普遍都感兴趣,因此在讲解架构风格时,学生注意力都很集中,收到了较好的教学效果。语言表达方面,在讲课时多用一些形象、有趣的事例或类比来说明或代替那些抽象、枯燥的理论陈述。例如,在谈到满足不同质量属性需要权衡时,列举了斑马为什么有黑白条纹的例子。

(2) 注意与其他课程的衔接

软件体系结构的教学内容与软件工程、软件项目管理以及软件文档写作等课程紧密相关、甚至有部分重叠,我们针对不同课程的特点进行了妥善安排,在教学内容上注意相关课程内容的相互渗透。大三上学期首先讲授软件工程,使学生对软件工程有一个初步认识,紧接着是软件文档写作的训练。大三下学期软件体系结构和软件项目管理同步讲授,要求学生运用软件体系结构的理论、技术和方法进行软件设计和评审,同时运用项目管理的知识组织项目开发,最终验证软件设计的合理性。设计和实现的题目鼓励沿用软件工程课程上所用的项目、人员组成也鼓励保持一致,使学生对某个项目能保持一个学年左右的长期接触。

(3) 建立以设计师为主的开发团队

以小组(四人为一组)为单位开展课程实验,每个人扮演不同角色。首先他们是一个设计师团队,但其中要有一人负责,这也是软件设计的一条重要原则;其次,还有项目经理、需求分析师、程序员和测试员等角色需要担当,也就是说每个人要承担多个角色。实验综合运用软件工程、软件体系结构设计、软件文档写作、软件项目管理以及其它课程的知识,来体会如何围绕软件体系结构进行开发,体会软件体系结构设计的原则和方法。

(4) 建立实践教学平台

软件体系结构的教学应使学生通过对这门课的学习,加上对其他专业知识的综合运用,能够在实际工作中应付真正的项目设计,因此有必要让学生参与一个长期(不少于一学年)的软件项目。为此我们设计多个规模较大的、完整的软件项目作为实践教学平台,这种项目包括分析、设计、实现、软件维护、软件重用、对现有软件的扩展,以及团队合作、项目管理等等。让学生长期接触某个项目,使他们可以在这个平台上观察和动手实践自己的软件设计方案,或者对现有方案进行改进,这样既有机会获得正面成功经验,也有机会得到反面失败的教训。

实验与教学进度保持匹配,使学生在实验中主动运用所学设计理论,并和传统设计方法进行对比,帮助学生迅速地把所学知识转换成实际的软件设计能力。设计过程要求采用Raional等工具进行分析和设计。

课程结束时,安排专门的时间,由每个团队向全班同学演示自己的实验成果,并由学生和教师共同对实验结果进行评价和给分,极大地调动了学生的积极性,评分过程中的议论则帮助学生进一步加深了对软件架构设计方法的理解。

团队提交的实践结果:需求说明书、体系结构设计说明书、体系结构评审报告、个人总结报告、演示Demo,要求说明每个人的角色和工作量。

评分标准:项目文档描述60%;个人总结报告20%;Demo20%。

上述评分标准以团队为基础,改变了传统的针对个人实践结果的考评模式,避免了相互抄袭。通过以团队评分为主,个人表现为辅的评价方式,达到培养学生学会与他人合作,培养团队精神的目的;通过以软件文档评分为主,以实践结果为辅的评分体系,达到学生对软件设计过程和方法的掌握。

其次,让学生参与教师的研究课题,加强实践基地建设,构建课程实训环境,鼓励学生到社会上的软件公司去实习、兼职。学院已与国内外多家软件领域的著名公司和研发基地建立了合作关系,建立了全方位、多层次的课程实践教学环境。

(5) 构建高素质的师资队伍

根据国家示范性软件学院工程型人才的培养目标,考虑软件体系结构设计课程实践性很强的突出特点,构建了三三制的师资队伍结构,即专职教师、IT公司教师和境外教师。完善了校内专任教师到软件企业一线参与实际软件项目研发和交流、软件企业的工程技术和项目管理人员到学校兼职授课的制度和机制,形成了一支了解行业需求、教学经验丰富、专兼结合、国内国外、校企联合的高素质的教师队伍。

4教学效果

我院针对软件体系结构课程教学中存在的不足,从教学方法、手段等方面提出了改进方案,融理论、案例与实践为一体,系统地阐述了软件体系结构的设计过程,体系结构设计师的主要工作和职责,辅助以实际案例向学生传授软件架构的理论、方法和技巧,并以小组为单位完成课程实验。通过本课程学习,学生可以在较短时间内掌握软件体系结构的基本知识和实践能力。

参考文献

第9篇

[摘要]软件项目管理通过应用知识,技能,工具和技术来指导软件项目开发以满足软件项目的需求。本文从软件项目管理的重要性谈起,研究了软件项目管理中的需求管理,沟通与协作,风险管理,并分析了四个主流的软件项目管理技术。

[关键词]软件项目管理需求管理沟通与协作风险管理

一、引言

从上个世纪中期到现在,软件产业迅猛发展。软件产业在推动人类社会发展的同时,软件危机产生了,这是因为落后的软件生产方式无法满足迅速增长的计算机软件需求。软件危机的产生促使人们开始研究软件开发的技术手段和管理方法。

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,通过计划、组织、控制等一系列活动,合理地配置和使用各种资源,而对成本、人员、进度、质量、风险等进行分析和管理,以达到既定目标的过程。项目管理更强调项目负责人的作用和团队的协作精神,其组织形式灵活,更加关注人的因素,关注客户和服务客户,着重于提高软件项目研发的效率和质量。在本文中,对软件项目管理中的需求管理、员工之间的沟通与协作、软件项目风险管理等方面进行了阐述。本文最后介绍了软件项目管理的几项经典技术。

二、需求管理

软件需求是每个软件开发的开端与基础。在项目需求分析阶段,双方必须全面地尽可能细致地讨论项目的应用背景、功能要求、性能要求、操作界面要求、与其他软件的接口要求,以及对项目进行评估的各种评价标准。在进行需求分析时,可以首先分析客户原有系统的建设情况,对客户的原有产品进行分析,明确建设目标等。

需求管理对软件项目能否最终实现产生至关重要的影响。任何的软件项目都必须进行合理的、细致的、一致的需求管理,只有这样才能制定正确合理的软件开发计划,软件项目才能顺利地开发完成。

三、沟通与协作

软件项目管理中的沟通与协作是指信息的交流,是使信息发挥积极作用和达到目标的手段;协作是指和谐地在一起工作的活动。沟通技术可分分四类:(1)正式书面沟通,包括项目文档和备忘录、项目里程碑和交货时间表、需求变更和错误跟踪规程、数据字典、系统分析模型(用例图等);(2)正式口头沟通,包括状态审查会、需求评审会、设计评审会、代码评审会、用户测试,项目定期例会等;(3)非正式口头沟通,包括小组碰头会、同行讨论、与直属业务领导讨论等;(4)电子沟通,包括电子邮件、内部BBS等。协作技术包括资源合理配置、开发步骤有序化、工作目标一致化、提高关心程度、信息共享等。

四、风险管理

软件项目风险管理是指对在软件开发过程中所遇到的预算和进度等方面的问题进行分析,寻求风险应对方法,做好风险管理计划。

针对软件项目中的风险管理问题,不少专家、组织提出了自己的风险管理模型。常见的主要风险管理模型如下。

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保障软件产品质量的一个重要途径是提高设计质量。

六、小结

本文分析研究了软件项目管理中的需求管理、员工之间的沟通与协作、软件项目风险管理。最后结合实践,提出并分析了软件项目管理技术。我们相信随着软件工程的发展和进一步成熟,软件项目管理技术的发展会取得更大的进步。在实际项目中,我们要坚持改善软件工程的管理,并在实践中总结适合自身的经验,这样才有利于管理技术的进步和软件项目的顺利完成,创造出更高的品质、更大的效益。

参考文献:

[1]PhpMetzger,JohnBoddie.软件项目管理-过程控制与人员管理[M].北京:电子工业出版社,2002.

[2]RajeevTShandilya.王克仁译.软件项目管理[M].北京:科学技术出版社,2002.

第10篇

基于CDIO工程教育模式的项目驱动“面向对象软件工程”课程教学方法(下简称CDIO教学法),以培养学生的基本工程能力和工程综合素质为目标,将“面向对象软件工程”知识体系中的相关知识点渗透到实践的各个环节中,而这些环节和软件工程生命周期完全一致,在各个环节中解决问题的方法则可以采用CDIO的构思、设计、实现和运行理念。我们参照CDIO能力大纲,提出通过“面向对象软件工程”教学和课程项目实践,培养学生如下方面能力:①通过基于案例/项目驱动来学习,要求学生能够深入理解“面向对象软件工程”的知识体系和该课程的基础理论并能在实际项目中加以灵活应用。“面向对象软件工程”的知识体系为学生理解和应用其基础理论解决分析、设计、实现和运行中的实际问题打下基础并提供有效工具;而“面向对象软件工程”理论基础为学生针对实际问题进行发明创造提供动力,为学生发现问题、分析问题和解决问题提供理论支持。②通过“面向对象软件工程”课程中项目的驱动,要求学生创建项目团队,通过课程项目实践各个环节(包括需求分析、设计和实现等环节及在此环节中的各项活动、沟通与协调、文档撰写),培养学生的良好职业素养,以及团队合作、系统思维、工程实践、项目管理和文档写作的能力。③通过“面向对象软件工程”理论学习和课程实践,培养学生的创新意识和能力,以开发出具有鲜明个性的软件作品。

2CDIO教学法在“面向对象软件工程”理论及其课程项目教学设计中的应用

2.1总体设计

目前,“面向对象软件工程”课程教学安排共计54学时,我们将理论教学内容与课程项目实践教学内容结合起来进行设计。在整个教学周期内,按照软件生命周期并结合CDIO、案例与项目驱动的教学法,设计理论课程案例教学过程中的相关活动,配合对应的课程项目实施活动加以有效组织与实践,在整个教学环节结合项目开发活动的进展与深入,要求学生记录自己团队活动中的相关内容,按照我们事先制定的规范撰写并维护项目文档。具体解决方案是:第一,正式课程教学的1~6周,设计项目描述和需求获取与分析、系统设计中的具体活动,这些活动包括分别标识实体对象、边界对象和控制对象;将用例映射成对象;建立对象之间的交互;标识关联、聚集和属性;对单一对象状态依赖行为的建模;对对象之间的继承关系建模;对本阶段的分析对象模型进行评审;基于分析对象模型标识出设计目标,进行子系统分解和标识;将子系统映射到系统构件元素上;标识并存储持久性数据;设计访问控制策略;设计全局控制流;标识服务;标识边界条件;对系统设计进行评审。第二,7~14周,设计对象设计与实现中的活动,这些活动包括学习软件复用和设计模式,并在详细设计中加以应用;对对象之间的接口进行说明,涉及标识遗漏的属性和操作、说明接口类型、签名与可见性,说明接口中相关方法的前置条件、后置条件和不变式等。第三,15~16周,设计测试阶段中的活动。第四,17周,进行相关的总结活动,包括项目文档的静态检查和验收,以及课程项目的动态演示与现场回答问题。

2.2设计课程项目

在设计课程项目中,将考虑提供给学生一个贯穿整个学期的课程教学项目描述,为此我们将选择开发一个基于Web的应用系统。这类系统的实例很多,可以由教师设定或者由学生自选,如教师可根据教学中的需要设定一类基于Web的师生交流系统,以方便实现教师和学生之间关于做项目时的沟通。学生也可以根据个人兴趣选择网游软件开发,或者选择基于Web的电子商务网站系统等。总之,相关项目的设计需要教师事先准备好项目描述或问题定义。为了开发这类基于Web的应用系统,教师需要指定项目使用的环境和工具,主要包括两类:一类是开发环境与工具、数据库管理系统、界面开发工具等,另一类是项目管理工具。这一阶段设计的活动属于CDIO中的构思阶段。

2.3设计理论课程教学过程

首先,在理论课程教学内容设计中,我们主要依据的是第3版的SWEBOK标准(2013),在CDIO工程教育模式的指导下,完成相关知识体系教学设计。在SWEBOK2013版中的17个知识点中(其中2个为候补知识点),我们选择了其中10个知识点,并将这些知识点融合到“面向对象软件工程”的理论课程教学中。这些知识点可有效地体现着CDIO的工程教育理念,如软件需求体现了CDIO的构思,软件设计体现了CDIO的设计,软件构造和软件测试体现了CDIO的实现,软件维护体现了CDIO的运作等。其次,在此基础上设计理论教学过程。一方面,以案例/项目驱动教学方法为基础,“面向对象软件工程”课程中相关知识体系及理论学习,要求学生在学习和思考中掌握“面向对象软件工程”的相关知识、术语、理论和技术基础,并通过团队方式共同学习、讨论和完成作业,并以团队形式参加全体同学的各种讨论活动;另一方面,要求学生围绕着项目描述或者待解决的问题描述,完成团队组建、工具选择、项目计划制定,并开始执行需求工程中的需求获取和需求分析活动,以及在此基础上的系统设计活动,这些阶段的工作结论需要学生加以记录,特别是需求获取与分析的结论和总体设计结论更要以文档形式加以记录。第三,结合案例/项目驱动教学,进一步完成“面向对象软件工程”理论课程。具体做法是一方面引入小型案例,另一方面引入面向应用领域的实际项目,并在项目描述、需求获取和分析活动、系统设计和对象设计中,将该项目的具体情景或者可行的系统设计解决方案引入课堂,在课堂上组织学生参与讨论、分析这些基于场景的案例,将需求阶段和系统设计阶段中涉及的重点知识、术语、过程与步骤等重点和难点融入到案例中来讲解和学习,以便于学生真正理解相关的理论教学内容。这一阶段的活动设计对应着CDIO中的构思阶段。

2.4基于项目驱动的课程实验教学设计

解决软件项目中的问题或实现软件项目中的任务,要求学生以团队方式进行活动,并在整个活动中的各个阶段贯彻CDIO工程教育的理念,即让学生能够对软件项目中的任务完成进行构思,获取与软件项目相对应的软件系统的功能性需求、非功能性需求和系统约束,并以文档方式进行描述;接着,通过设计手段来完成项目任务,用系统来对应将来要完成的任务,并在该系统设计中落实项目的各项要求,这需要通过对系统的总体设计、详细设计等环节来达到,并将设计结论记录在软件设计文档中;在前面构思和设计的基础上,选择合适的程序设计语言、数据库管理系统等基础设施,用编程的方式实现该系统,并完成相应的测试任务,注意在实现过程中,同样要将相关结论以文档的形式加以记录,以备维护之需;在系统实现后,通过部署和运行等方式,让该软件系统(可以看成是本项目的解决方案)呈现出价值。在这一完整过程中,让学生通过项目驱动下的团队活动过程,体验到软件产品从构思、设计、实现到运行(包括维护)所经历的全生命周期过程。这一阶段的活动设计对应着CDIO中的设计、实现阶段。

2.5项目总结与项目验收过程教学设计

项目总结过程的教学设计是以团队为单位进行自我总结并撰写项目总结报告,以个人为单位撰写学习心得,教师主要验收和检查相应的项目总结报告和学生学习心得。项目验收过程的核心是开展两阶段验收活动,即在学期的15~18周中,选择第15周进行一次中期检查,第18周再进行一次期终项目验收。全体主讲教师和辅导教师组成一个答辩小组(一般为4人),他们事先要做好各项准备工作,包括现场点名以确认学生的有效身份并结合点名宣布学生团队的答辩顺序,保证答辩的有效性和合理性;由答辩小组组长宣布评分标准细节和学生是否能够通过本次验收活动的标准。

3实践活动

在“面向对象软件工程”课程教学活动中,共有45位学生(组成了15个团队)全程参与了我们的教学改革过程,现在仅就验收答辩环节进行说明。整个答辩所耗时间共计7个多小时;答辩老师根据实际情况(最低底线是学生必须完成项目要求的最基本功能),充分肯定了学生到目前为止所完成的开发成果,同时建议相关学生利用即将到来的假期进一步完成或完善该应用软件系统的开发,及时修改设计上的缺陷。在本次教改实验过程中,我们充分认识到这一教学过程对教师也提出了更高的要求。教师不仅仅是需要在理论基础教学上过硬,还需要具备软件项目开发的经验,这样才能够做到既能站在理论的高度指导学生分析和解决问题,同时也能给出实实在在的课程项目开发活动中的技术指导。

4结语

第11篇

 

引言:

 

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

 

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

 

1、软件项目管理的概念

 

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,通过计划、组织、控制等一系列活动,合理地配置和使用各种资源,对成本、人员、进度、质量、风险等进行分析和管理,以达到既定目标的过程。项目管理可以让一个项目获得高额的盈利也可以让一个项目损失惨重,而软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,其根本目的是对软件开发的各个阶段进行管理,增强对软件开发的控制能力,提高软件开发质量编码的影响力。企业的软件生产越趋向于成熟,企业越能够稳定发展软件因其复杂性和难以度量,使软件项目管理较之其他项目管理而言有其特殊性。

 

2、软件开发中的项目管理的必要性

 

现在的软件开发过程中,存在着诸多的不确定性因素,而为了能消除不确定性,提升软件的稳定性、可靠性,就需要对软件进行项目管理。软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员、产品、过程和项目进行分析和管理的活动。软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束时才终止。软件项目管理和其他的项目管理相比有相当的特殊性。首先,软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。其次,软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。庞大的系统如果没有很好的管理,其软件质量是难以想象的。

 

3、开发中的项目管理方法

 

3.1、调查。

 

(l)调查市场。对一个软件项目经理来说,他的职责主要在于调查同行业同类产品,分析现有技术,以便构建合理而又有充分扩展性的软件结构。同时,项目经理还有义务协助上级主管向公司决策层提交项目市场前景分析报告。

 

(2)调查自身资源。主要是调查项目组成员的技术实力,工作状态,还有其它相关人员的支持度。一个项目的成功,不仅仅需要一个优秀的项目经理,还需要项目发起人、项目组成员和其它相关人员的共同努力,才能实现项目的预期目标。

 

(3)调查客户需求。这是最关键也是最重要的环节。任何一个软件项目都是针对一定的使用对象而开发的。作为项目经理,必须充分了解客户的现有资源、工作方式、工作流程以及使用习惯。值得注意的是,很多项目经理往往容易忽视客户的使用习惯,以至于开发出来的产品虽然功能齐全、界面友好,但却无法取得用户的认同。

 

3.2、严控变更。一个项目在实施过程中,总会遇到很多需要变更的地方。要想有计划地管理好变更,就必须具备健全的变更控制系统。应由项目实施变更小组之类的组织来负责项目变更的可行性论证,进行最终的变更确认,也由它来决定一个项目是否应该终结。

 

3.3、阶段总结和评审。一般来说至少要进行两次全体评审。第一次评审是由项目负责人完成信息系统计划、信息系统分析、信息系统设计之后,提交出软件模型,再交由项目专业技术组讨论评审。软件模型必须包含主体的功能界面。典型客户在其中扮演着重要的角色,只有他们才是最有发言权的评审成员。待项目结束之后,再由技术小组对其进行终审。

 

4、影响软件开发中的项目管理因素

 

4.1、成本。指完成项目需要的所有款项,包括人力成本、原材料、设备租金、分包费用和咨询费用等。软件开发项目中人力成本比例很大,而工作量又难以估计,因而制定预算难度很大。项目的总成本以预算为基础,项目结束时的最终成本应控制在预算内。

 

4.2、人。指参与项目管理及具体软件开发活动的所有人员。在项目管理中,人是一个非常重要的要素,由人来确定项目目标、推动项目进程、使用项目成果创造价值,而且软件项目中的人力成本也经常占总成本的相当比例,因此人的因素往往决定了项目的成败。

 

4.3、时间。项目时间相关的因素用进度计划描述,进度计划不仅说明了完成项目工作范围内所有工作需要的时间,也规定了每个活动的具体开始和完成日期。项目中的活动根据工作范围确定,在确定活动的开始和结束时间还要考虑他们之间的依赖关系。

 

4.4、质量。是指项目满足明确或隐含需求的程度。一般通过定义工作范围中的交付物标准来明确,交付物在项目管理中有重要的地位。定义这些标准包括各种特性及这些特性需要满足的要求,因此,有时还可能对项目的过程有明确要求,比如规定过程应该遵循的规范和标准,并要求提供这些过程得以有效执行的证据。

 

4.5、范围,也称工作范围,指为了实现项目目标必须完成的所有工作。一般通过定义交付物和交付物标准来定义工作范围。工作范围根据项目目标分解得到,它指出了完成哪些工作就可以达到项目的目标,或者说完成哪些工作项目就可以结束了。

 

结语

 

软件项目管理是一件十分繁琐的任务,其直接影响着项目的成败,所以,在实际的项目开发过程中,只有加强对项目的管理才能使整个软件开发顺利完成。在软件项目管理活动中,既要研究技术层面的问题,也要仔细考虑认识层面的问题,成功的软件项目开发一定是两者相辅相成的结晶。软件项目管理是软件开发过程中的一项重要工作,管理水平的高低、管理工作是否规范将对软件开发的质量、效率、成本起着决定性的作用。目前,我国软件项目管理水平参差不齐,一些软件开发单位、软件项目管理者管理水平有限,导致开发出的软件产品质量低下和成本浪费。尽快提高软件项目管理水平、规范软件项目管理工作已成为一些开发单位和管理者的当务之急。当然,随着应用水平的提高,我们可以适当运用项目管理软件来指导、管理项目的实施,并且在管理过程中不断学习先进的软件项目管理方法,提高软件项目管理水平,这样才能开发出真正满足企业、用户需要的实用的软件产品。

第12篇

论文关键词:能力成熟度模型 能力成熟度模型集成 个体软件过程 群组软件过程

论文摘要:从软件项目管理的重要性谈起,研究分析了四个主流的软件项目管理技术,指出了它们的缺陷,最后结合实践提出了一种新颖的软件项目管理概念。

1引言

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。最早源自于70年代中期。当时美国国防部曾立题专门研究软件项目做不好的原因,发现70%的项目是因为管理善引起的,而并不是因为技术实力不够,进而得出一个结论,即管理是影响软件项目全局的因素,而技术只影响局部。这个结论非常重要。到了90年代中期,软件项目管理不善的问题仍然存在。据美国软件工程实施现状的调查,软件研发的情况仍然很难预测,大约只有10%的项目能够在预定的费用和进度下交付。在商用软件产业中,这一现象尤为严重。1995年,美国共取消了810亿美元的软件项目,其中31%的项目未做完就取消了,53%的软件项目进度通常要延长一半的时间,通常只有9%的软件项目能够及时交付并且费用也不超支。由此可见,软件项目管理技术的研究至关重要。

2软件项目管理技术综述

随着上世纪末软件工程的快速发展,软件项目管理水平也有了很大提高,提出了很多的软件项目管理技术,极大地推动了软件业的发展,这里我们主要谈以下四种主流的软件项目管理技术。

2.1 CMM

CMM是美国卡纳基梅隆大学软件工程研究所(CMU/SEI)提出的软件研发项目管理的一系列方法,它基于组织对关键过程域的支持,定义了软件过程成熟度的五个级别。

级别1(初始级)描述了不成熟,或者说是未定义过程的组织。级别2(可重复级),级别3(已定义级),级别4(已管理级)和级别5(优化级)分别描述了软件过程成熟度级别递增的组织。和这些级别相关的KPA是:

级别2:需求管理,软件项目计划,软件项目跟踪和监控,软件子合同管理,软件质量保证,软件配置管理。

级别3:组织级过程焦点,组织级过程定义,培训大纲,集成软件管理,软件产品工程,组间协调,同行评审。

级别4:定量过程管理,软件质量管理。级别5:缺陷预防,技术更新管理,过程更改管理。

2.2 CMMI

CMMI被看做是把各种CMM集成为一个系列的模型中。CMMI的基础源模型包括:软件CMM2.0版(草稿c),EIA一731系统工程,以及IPDCMM(IPD)0.98a版。CMMI也描述了5个不同的成熟度级别:

级别1(初始级)代表了以不可预测结果为特征的过程成熟度。过程包括了一些特别的方法、符号、工作和反应管理,成功主要取决于团队的技能。

级别2(已管理级)代表了以可重复项目执行为特征的过程成熟度。组织使用基本纪律进行需求管理、项目计划、项目监督和控制、供应商协议管理、产品和过程质量保证、配置管理、以及度量和分析。对于级别2而言,主要的过程焦点在于项目级的活动和实践。

级别3(严格定义级)代表了以组织内改进项目执行为特征的过程成熟度。强调级别2的关键过程域中前后一致的、项目级的纪律,以建立组织级的活动和实践。附加的组织级过程域包括:①需求开发:多利益相关者的需求发展。②技术方案:展开的设计和质量工程。③产品集成:持续集成、接口控制、变更控制。④验证:保证产品正确建立的评估技术。⑤确认:保证建立正确的产品评估技术。⑥风险管理:检测、优先级,相关问题和意外的解决方案。⑦组织级培训:建立机制,培养更多熟练人员。⑧组织级过程焦点:为项目过程定义建立组织级框架。⑨决策分析和方案:系统可选的评估。⑩组织级过程定义:把过程看做组织的持久发展的资产。⑩集成项目管理:在项目内统一各个组和利益相关者。

级别4(定量管理级)代表了以改进组织性能为特征的过程成熟度。3级项目的历史结果可用来交替使用,在业务表现的竞争尺度(成本、质量、时间)方面的结果是可预测的。级别4附加的过程域包括:①组织级过程执行:为过程执行设定规范和基准;②定量的项目管理:以统计质量控制方法为基础实施项目。

级别5(优化级)代表了以可快速进行重新配置的组织性能和定量的、持续的过程改进为特征的过程成熟度。附加的级别5过程域包括:①因果分析和解决方案:主动避免错误和强化最佳实践;②组织级改革和实施:建立一个能够有机地适应和改进的学习组织。

2.3 PSP

PSP(PersonalSoftwareProcess,个体软件过程)是由CMU/SEI开发出来的,它的推出在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段,PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计约束准则,而不是设计方法的选择。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。

2.4 TSP

TSP(TeamSoftwareProcess,群组软件过程)是CMU/SEI在PSP基础上又发展出的软件项目管理技术,它主要是指导项目组中的成员如何有效地规划和管理所面临的项目开发任务,并且告诉管理人员如何指导软件开发队伍。始终以最佳状态来完成工作。TSP实施集体管理与自己管理自己相结合的原则,最终目的在于指导开发人员如何在最少的时间内,以预定的费用生产出高质量的软件产品,所采用的方法是对群组开发过程的定义、度量和改进。

实施TSP的先决条件有三条:首先,需要有高层主管和各级经理的支持,以取得必要的资源;其次,项目组开发人员需要经过PSP的培训并有按TSP工作的愿望和热情;第三,整个开发单位在总体上应处于CMM二级以上,开发小组的规模以3~20人为宜。在实施TSP的过程中,首先要有明确的目标,开发人员要努力完成已经接受的委托任务。在每一阶段开始,要做好工作计划。如果发现未能按期按质完成计划,应立即分析原因,以判定问题是由于工作内容不合适或工作计划不实际所引起,还是由于资源不足或主观努力不够所引起。开发小组一方面应随时追踪项目进展状态并进行定期汇报,另一方面应经常评审自己是否按PSP的原理工作。开发小组成员应按自己管理自己的原则管理软件过程,如发现过程不合适,应及时改进,以保证用高质量的过程来产生高质量的软件。项目开发小组则按集体管理的原则进行管理,全体成员都要参加和关心小组的规划、进展的追踪和决策的制定等项工作。 3软件项目管理技术分析研究

CMM的基于活动的度量方法和瀑布过程的有次序的、基于活动的管理规范有非常密切的联系,所以CMM在实践中反映出来的问题表现为过度基于过程的管理,具有典型的传统瀑布方法症状。现代主流的叠代软件项目开发技术、软件产业最佳实践和经济动机推动了软件开发组织采用基于结果的方法:开发业务案例、构想和原型方案;细化后纳入基线结构、可用发布,最后定为现场版本的发布。虽然CMMI保留了基于活动的方法,它的确集成了软件产业内很多现代的最好的实践,因此它很大程度上淡化了和瀑布思想的联系,而和叠代思想联系得更紧密。软件项目管理技术发展到今天,有了成熟的现代软件项目管理十大原理(沃克尔·罗伊斯):①首先注重结构过程;②用叠代生命周期在早期防御风险;③强调基于构件的开发;④建立变更管理环境;⑤用循环工程工具使变更更自由;⑥使用严格的、基于模型的设计符号;⑦提供过程的客观质量控制的手段;⑧使用中间产品的基于演示的评估;⑨发布细化的、展开的计划;⑩建立一个可升级的、可配置的过程。

根据对软件开发项目一线的多数工程师和项目经理的调查分析,我们知道CMM对现代原理几乎没什么影响,甚至有些现代原理实际上是和CMM关键过程域相冲突的。基于对产业默认实践的观察和分析,CMMI和现代管理原理关系十分密切,激发了半数的叠代软件管理原则,如表1所示。

因此,对于采用瀑布过程开发软件项目的组织来讲,最好采用CMM的软件项目管理技术,而对于采用迭代软件开发过程开发软件项目的组织来说,还是应该采用CMMI软件项目管理技术进行软件项目管理。

但是,并不是实施了CMM/CMMI后,软件研发项目的质量就能够有所保障了。CMM/CMMI不是万能的,它的成功与否,与组织内部有关人员的积极参与和创造性活动密不可分,而且CMM/CMMI并未提供有关子过程实现域所需要的具体知识和技能。这就需要PSP的管理技术来协作了,PSP专注于为个体和小型群组软件过程的优化提供具体而有效的途径。统计数据表明,在应用了PSP后软件中总的差错减少了,在i贝0试阶段发现的差错减少了,生产效率提高了,软件项目开发有了很大的改善。

众所周知,现代软件项目早已走出单个英雄单打独斗的时代,而是需要众多软件工程师的密切合作。实践证明,PSP已不能解决现代软件项目管理中的所有问题,这时,擅长于项目任务规划管理和项目人力资源规划管理的TSP恰好可以在这方面做有益的补充。

综上所述,单纯实施CMM/CMMI,永远不能真正做到能力成熟度的升级,达到软件项目管理的最佳境界,只有将实施CM CMMI与实施PSP和TSP有机地结合起来,灵活地应用于软件项目管理,才能发挥最大的效力,取得最好的效果。