基于案例的软件项目管理课程教学
2011-12-31于庆梅王兰骆解民沙荣方
计算机教育 2011年23期
文章编号:1672-5913(2011)23-0039-05 中图分类号:G642 文献标识码:A
摘 要:为提高软件项目管理课程的教学质量,本文分析该课程教学活动中存在的主要问题。针对该门课程的特点和要求,提出改进教与学的方式,运用基于案例的教学法,给出贯穿整个教学过程的完整案例。同时,针对重点内容,结合辅助工具软件,加强实例的可操作性,提高学生的实践能力,为教学工作者提供一定的参考。
关键词:案例教学;软件项目管理;教学方法
1 研究背景
软件项目开发的高失败率说明个人单独的软件开发方式已不能适应软件发展的需要[1-2]。软件项目管理直接影响软件成本、进度、质量。国内许多院校[3]和培训机构[4]纷纷开设软件项目管理课程,同时国际计算机教育课程体系不同分支中都开设此课程[5],它逐渐发展成为计算机专业的一门重要课程。
软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法在工程领域的应用。但是,软件项目与一般的项目不同,有它的特殊性,主要表现在软件产品的抽象性。由此决定软件项目管理的特点是难度大、实践性强,也直接影响本门课程的教学。
纵观我校开设的软件项目管理教学活动,我们发现该门课程的教学活动主要存在两个问题。
1) 对课程和角色存在认识误区。
软件项目管理课程具有自身的特点,学生感觉到该课程与所学的专业方向和未来从事的职业相关性不强,认为该课程属于管理类课程,呈现出理论性强的特点。学生对自身的角色认识不清,普遍认为自己是编程开发人员,不做管理工作,该门课程与己无关,影响课程学习的积极性,学习态度消极,被动学习,丧失学习兴趣。
2) 缺乏软件开发经验。
该门课程是在学生学习软件工程、程序设计语言课程的基础上开设的一门专业课程。在学习之前,要求学生有一定的软件开发经验。熟悉一个软件产品开发、设计的整个环节,才能有效地实施对这一过程的管理。而目前的情况是,学生最多自己做过一个课程设计的软件编程,没有接触大型软件项目开发的经验,更谈不上对大型项目开发与管理的经验。
针对上述问题,本文提出基于案例的软件项目管理课程教学法,在对重点内容理解方面加强实践环节。一是对课程理论性强、学生认识误区问题,正确引导,提高认识,对重点内容增加可操作性,激发学生的主动学习能力;二是对课程的实践性强、学生缺少开发经验问题,采用案例教学法,通过对已有案例的讲解,在了解软件开发全过程的基础上获取开发经验,熟练常用软件项目管理辅助工具的使用。
2 正确认识软件项目管理课程
首先,在课程开始前,教师介绍软件项目管理课程的核心内容,依据2004计算机工程本科教学课程指南中的介绍[6],主要内容包括团队管理、项目进度计划、软件度量和评估技术、风险分析、软件质量保证、软件配置管理和项目管理工具等7部分。目的是通过参与团队项目,说明团队建设和团队管理的基本内容,做好软件项目计划中各项准备工作,包括项目规模和成本的估算、进度、资源分配、配置控制、变更管理和项目风险识别与管理,对比和比较用于保证软件产品质量的不同方法和技术。
其次,根据现阶段我校生源情况,分析当代大学生的学习现状,培养学生对该门课程的兴趣。根据课程的学习内容与特点,建立项目小组责任制,每组6人,由学生自由组合,每人重点负责项目管理中的一部分,同时协调关系,培养团队合作精神。详细说明项目管理中的七部分内容与每个人软件开发过程中的需求分析、总体设计、详细设计、代码实现、测试与维护的关系,使学生充分认识到课程的实用性和重要性,提高对该课程的学习兴趣。
3 软件项目管理课程中的案例教学法
案例(case),也被称为个案、个例、事例或实例,最早属于医学领域,后来被广泛运用于法学、军事学、教育学、管理学等学科。案例教学法(case method),在国外也称为个案研究,即case study,是为了培养和提高学习者知识能力的一种教学方法,是将已经发生或将来可能发生的问题作为个案形式,让学习者去分析和研究,提出各种解决问题的方案,从而提高学习者解决实际问题能力的一种教学方法。19世纪70年代,该教学法由美国哈佛大学法学院院长兰德尔(C.C.langclell 1826—1906)[7]首创。他编著的《合同法案例》是世界上第一本案例教学法的教科书。目前,作为一种新型的教学方法,案例教学法遍及美国以及其他国家。我国的案例教学始于20年前,对我国高校教育思想和教学方法的全面改革有着重要启示和推动作用。
案例教学法以学生作为案例教学过程的主体,教师组织课堂、引导讨论、布置任务、创造场景,调动学生积极性,提高学生能力。案例教学有利于把软件项目管理课程与社会实践密切联系起来,使理论与实际相结合,体现学以致用的思想。
根据该门课程的特点,我们在教学设计中,以ACIC项目中基于Web的网上开户和账户跟踪业务为例,从项目规划、项目执行和项目收尾三个阶段讲解软件项目管理的基本理论和方法。
在项目规划阶段,我们从项目规划基础结构、过程规划、工作量估计和进度计划、质量规划、风险管理、计划的度量和跟踪、项目管理计划和配置管理等关键的规划任务入手,通过ACIC项目的规划报告,让学生将这些抽象的管理内容具体到一个实际的开发项目中。通过问题评审的方式进行案例教学,即给出问题和解决问题的方案,让学生去讨论与评价各种方案的优劣,充分调动了学生的思维积极性,对评价出的好方案给予肯定和引导。例如,对于项目中的工作量估计这一节的内容,我们给出两种方法:自底向上和自顶向下的估计方法。在讨论的时候,学生发现这两种方法都忽略不同任务单元之间的协调工作量,由此想到,面向对象的分析法中,每个用例都是由不同单元任务集成的,这样就包含了不同单元任务集成时的协调工作量。这个例子改变了传统的理论灌输式教学方法,让学生从后台到前台扮演主角,通过多方位的互动交流集思广益,激发学生的学习主动性。
在项目的执行阶段,包括执行项目计划、跟踪项目的状态,对项目过程进行跟踪和控制,这是软件项目管理过程中历时最长的阶段。但是,学生由于缺少实践机会,对这一过程没有感性认识,因此,在教学过程中,ACIC项目中具体的实例讲解帮助学生理解执行阶段,使学生学会应用给出的方法解决实际问题。例如,对里程碑分析一节中,在讲解实际与计划工作量的进度分析、质量监督和风险监督的基础上,通过ACIC项目的里程碑分析报告和故障因果分析报告具体化实例[8-9],学生不仅在整个项目开发中认识里程碑分析报告的重要性,学会制作里程碑分析报告,如表1所示,而且还运用项目管理的里程碑分析思想,针对自己的开发工作进行阶段性的分析。
软件项目收尾是对项目执行进行总结,完成事后分析,揭示问题所在和出现问题的原因。总结项目开发中的经验和教训,是一个经验积累的过程。针对这部分内容,分析课程中的案例在执行中存在的问题,给出一般项目收尾分析报告中的主要要素,并对本课程中给出的案例写出ACIC项目收尾分析报告。
通过ACIC项目三个阶段的具体化,学生对于软件项目管理课程的学习有一个整体的概念,有利于提高分析问题和处理实际问题的能力,提高创新思维能力,加强多元化思维和团队协作精神,发挥集体智慧,增强处理复杂事件的应变能力。
4 软件项目管理工具的学习
在基于案例的软件项目管理课程的教学基础上,教师对案例的分析增加可操作性、可实践性,为学生提供一套切实可行的实验工具,提高学生对软件项目管理课程学习内容的应用。
项目管理软件具有成本预算、成本控制、进度计划安排、资源分配、项目信息分发、项目数据的导入和导出、多个项目和子项目的处理、报表制作、工作分析结构创建、计划跟踪等功能。这些工具可以帮助项目管理者完成管理工作。根据教学内容的不同,教师在全面介绍IBM Rational项目管理工具包的基础上,根据项目管理的不同阶段,介绍并提供不同的管理工具,提高学生对工具的操作、使用与了解能力。
首先,介绍IBM Rational项目管理工具包。在系统需求分析阶段,利用需求管理平台RequisitePro进行需求分析,在系统分析阶段给出Rational Software Modeler工具,用于业务和用例建模,理解业务需求,清晰地定义软件需求。在系统总体设计阶段,使用可视化建模技术和架构设计工具Rational Software Architect来构建软件系统架构,在代码编写过程中,使用Rational Application Developer工具加快软件编码工作,使用Rational PurifyPlus工具进行单元测试。在测试阶段,使用Rational Functional Tester进行回归测试,使用Rational Manual Tester提高手工测试的效率,使用TestManager进行测试管理。在软件项目进行的全过程中,使用ClearQuest实现变更管理,使用ClearCaseLT进行配置管理,Rational Performance Tester检验系统能达到预定的性能指标,Tivoli Configuration Manager快速准确地安装部署发布的软件产品,Tivoli Monitoring工具用来监控生产系统的运营状况,及时发现问题。
其次,介绍其他相关的项目管理工具,如Micro- softProject制定计划日程表,WBS Chart Pro分解项目任务,估算项目规模,MS Word制定项目开发计划,Excel制作日报、周报、增值分析图表和风险管理,MindManager进行项目组结构管理,PowerPoint制作项目阶段报告,QQ、MSN和Skype帮助项目组内外部交流与沟通。
最后,从软件项目开发人员的不同角色建议使用不同的管理工具。项目经理是领导整个项目团队完成项目开发的领导者,利用团队协作平台TUP(Team Unifying Platform)来增强团队成员之间的沟通协作,包括统一的软件开发方法RUP、需求管理平台RequisitePro、测试管理平台TestManager、变更管理工具ClearQuest和配置管理平台ClearCaseLT。系统分析员采用业务和用例建模方法以及建模工具Rational Software Modeler与业务部门进行更为有效的沟通,更好地理解业务需求,更加清晰地定义软件需求。架构设计师基于软件需求并利用可视化建模技术和架构设计工具Rational Software Architect来搭建软件系统架构。开发人员利用Rational Application Developer来加快软件编码工作,并结合单元测试工具 Rational PurifyPlus 来保证代码模块的质量。测试人员通过自动化的回归测试工具Rational Functional Tester来保证测试的完备性并提高测试效率,Rational Manual Tester则可以帮助提高手工测试的效率。另外,利用Rational Performance Tester来检验系统是否能达到预定的性能指标。部署人员利用Tivoli Configuration Manager快速准确地部署软件产品,维护人员通过Tivoli Monitoring工具监控软件的运行状况。在软件项目开发过程中,为不同人员提供不同的管理工具,达到提高软件开发效率、保证软件产品质量的目的。
在教学中,针对软件开发过程中各个阶段运用不同的辅助管理工具,教师对重点内容,如成本预算中的COCOMO三种模型和Putnam模型,给出免费工具Costar 7.0[10],依据COCOMO II模型计算上述案例中项目的持续时间、人员水平和成本,提高学生对软件项目开发过程中具体内容的感性认识,增加学习的兴趣。
5 结语
通过上述教学方法的改革,学生毕业进入工作单位参与项目的过程中,能够快速适应团队开发,认清自身角色,准确定位。然而,随着计算机科学技术发展的日新月异,软件项目管理这门课程越来越呈现出内容广泛、实践性强、新技术和新方法多等特点。同时,作为软件工程课程的后续课程,其教学面临着新的挑战,特别是软件技术与开发手段的不断更新。因此,课程内容也要随之调整,要不断引入新的软件项目管理方法,追踪业界新方法、新手段,建立新案例、新工具,为进一步拓宽学生未来的发展奠定良好的基础。
参考文献:
[1] 朱全敏. 软件项目管理综述[EB/OL].(2003-08-06)[2010-10-10]. http://www.e-works.net.cn/ewkArticles/Category 112/Article15074.htm.
[2]