用PSP塑造合格的软件工程师

时间:2022-06-22 09:17:11

用PSP塑造合格的软件工程师

摘要:本文首先简要介绍了PSP的原理,阐述了如何使学生理解从个体软件开发过程到软件产品工程过程,培养学生从开发简单小程序的实践转向开发大规模软件。然后结合实际的教学环境对教学策略加以详细的说明,并对收集到的学生数据进行总结和分析。

关键词:软件工程;软件过程;个体软件过程;团队软件过程;过程性能

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

文章编号:1672-5913 (2007) 22-0157-05

众所周知,管理人员和用户需要专业的开发人员,他们应具有可信的、专业化的能力,能够完成承诺的工作;同时开发人员也在寻求更愉快的、有开发经验回报而又满足专业要求的工作。因此教育工作者最应该关注和培养社会需要的这类人才。

个体软件过程PSP(Personal Software Process)是由美国卡耐基・梅隆大学软件工程研究所(CMU/SEI)开发的关注于个体工程师的过程实施及改进框架。Watts S. Humphrey先生自80年代末开始研究如何指导个体工程师对工作进行改进,并在95年和97年先后针对高校教学出版了两本著作[1,2]。著作[1]具有很强的学术性,适合高校本科高年级学生或研究生使用。而[2]作为[1]的精简版,可供低年级学生或社会工程师学习使用。之后,为进一步在社会上推广PSP的应用,2005年他又针对软件工程师出版了著作[3],并带领其团队开发了完整的配套教学材料,目前已经在SEI网站上已经了V4.1的版本。同时SEI推出了PSP知识体(Body of Knowledge,BOK),将PSP的知识主体分为7个能力域,再将每个能力域的内容细分为概念和技能两个部分,使PSP的知识体系更加结构化,更利于学习。同时PSPBOK也作为软件工程师取得SEI官方PSP Developer资质认证的主要参考。

北京航空航天大学软件工程所自90年代末就已经开始了对个体软件过程的研究和推广[4],并组织翻译了多部PSP著作[2,3]。我们的团队多年来在研究PSP的基础上,在北京航空航天大学计算机学院开设个体软件过程从课程,将教学与实践相结合,得到很成功的反馈。同时为软件企业提供培训,以达到产学研最好的结合效果。在近十年的PSP研究和教学实践中,总结了一套更加实用的教学和实验大纲、课件及练习,同时开发了配套工具。经过教学实验的结果分析,这个体系不但适合学校教学也适合对企业的软件工程师的培训,较好地达到产学研结合的目的和效果,培养了社会需要的人才。

正如Watts S. Humphrey在2005年的PSP著作中讲到:在这几年中,成千上万的软件开发人员接受了PSP课程,成百上千的TSP团队已经在他们的项目中使用了PSP方法。这个结果已经远远超出我的预料[3]。

1个体软件过程PSP简介

个体软件过程是一个自我改进的框架,它提供了一个稳定、成熟的个体软件过程,并定义了过程中所用到的表格、标准和规程,帮助个体软件工程师控制、管理和改进自己的工作方式,指导工程师估算和计划自己的工作,满足承诺,处理不合理的承诺压力,同时PSP向工程师展示如何收集用于持续的改进工作的生产率、质量和可预测性的数据,改进个人过程[3]。

PSP通过一个不断进化的过程来引导学习者学习PSP的工程方法,如图1所示。学习者通过在每个步骤中编写一个或多个模块级别的程序,学习如何对自己的工作进行数据的收集和分析,并使用这些结果来改进个人性能。其中,几个主要的PSP等级所关注的问题如下:

PSP0:建立一个度量的性能基线

PSP1:制订规模、资源和进度计划

PSP2:实践缺陷和效益(yield)管理

软件产品规模日益增大,使得产品的开发必须由团队完成。学会PSP后,必然要将PSP应用到实际开发的项目中。SEI开发了团队软件过程TSP(Team Software Process)用于支持在开发工程中使用PSP,并解决软件开发团队所面临的承诺、控制、质量和团队合作等问题。

2造就专业软件工程师的过程

2.1从个体软件过程到软件产品工程过程

软件产品的质量在很大程度上受到软件产品生产过程的影响。软件产品工程过程作为软件产品生产的核心过程,定义和集成了软件工程中的各项活动。因此,软件产品工程过程的性能将直接影响软件生产的效率和产品的质量。

个体软件工程师是软件产品工程过程中最重要、最不稳定的一环。只有参与过程的每个工程师都了解过程的执行并遵循过程进行工作,过程性能才能够得以保证。PSP是大型软件工程过程的一个缩影,通过PSP的学习,可以使工程师掌握好抽象、晦涩、不易实践的软件工程理念和方法,提高软件专业人员的责任感,为成为称职工程师打下良好的基础。因此,学习并实践个体软件过程是软件工程师了解、掌握和融入软件产品工程过程的一条捷径[5]。

2.2从编写简单小程序到开发大规模软件

PSP课程按由浅入深、程序规模从小到大,从基本度量到综合分析的策略渐进展开。虽然要完成的练习程序均为代码行数仅在几十到数百行的小程序,但是PSP所提供的一系列开发及管理方法,如规模估算、构件重用、进度跟踪、代码和设计评审及度量知识和应用等,都是业界普遍采用的方法。通过完成一些精心编排的小程序,在练习过程中理解和掌握PSP的工程方法,养成良好的工作习惯,可以使学生在参与大型软件的开发时能自觉管理好自己的工作,高质量地完成任务。PSP的真正目的是让使用复杂软件工程过程的大型软件开发团队中的每一个人都能规划和完成好自己的工作,具有稳定和高效的个体过程性能,从而使得整个开发团队具有稳定、高效、受控和可预测的过程能力,最终有能力在可预期的时间内开发出高质量的软件产品。

大量的实际应用表明,PSP完全可以胜任实际大型软件项目的开发[6,7,8],并具有很好的改进效果。也有研究表明,PSP可以和一些比较新的工程方法结合使用[9]。PSP诞生已经有十余年,在SEI的大力推动和不断更新下,越来越提高了适用性,并与CMMI中最佳实践相结合进行实施产生了令人瞩目的成果。

2.3PSP所涉及到的工程方法和规范

PSP不仅告诉了个体工程师应该做什么,还详细说明了应该怎样做。所以,PSP中包含了大量的工程方法和规范,它们大多来自业界的最佳实践。这些方法在PSP知识体中都有详细的描述。表1列出了PSP中所涉及到的工程方法和规范以及引入的PSP等级。

3教学程序概述

Humphrey在文献[10]中提到,推广PSP最有效的途径就是通过教育系统,SEI也在PSP的授课和培训上做了大量的研究和工作。我们结合多年PSP教学研究,参考SEI材料,为北航计算机学院大学三年级的学生设计了全套的教案。课程共9周,授课18课时,实验18课时,包括了课程要求、课程讲义和作业说明、评分标准及其他相关材料,并自主开发了教学辅助工具,结合企业应用针对性地教学,在教学过程中跟踪学习效果,及时总结和纠正学生学习中的问题,形成了一套精炼而完整的课程体系。

3.1教学策略

PSP教学内容包括授课环节和实践环节。理论与实际结合的授课使学生对课程所涉及到的软件工程知识在应用方面有进一步的理解,而丰富和有效的课程实践更使学生对所学知识在实践能力方面有进一步的提升。同时通过自己亲身的实践体会,更彻底地认识到以前不良的开发习惯,提高质量意识。

课程教案分两部分:开发过程策划和质量管理。第一部分侧重于讲授个体过程规划,使学生学习软件的估算与度量方法,还讲授如何将统计学方法用于计划管理和预测,从而使学生提高了解自己、计划自己和管理自己的能力。第二部分是缺陷管理和质量控制方法,讲授如何识别和管理缺陷,通过设计评审策略和方法以及代码评审的讲授,给出软件质量方法在实际应用方面的指导,学生通过评审自己的设计和程序,发现缺陷,提高个人质量的责任感,不断提高产生无缺陷软件的能力。与之相配套的8次练习也具有一定的先后次序及重用关系,使学生在练习的过程中体会如何通过历史数据和重用来更准确地规划自己的工作和提高产品质量。8次练习之间的层次鲜明,其重用关系如图2所示。

与练习相配合,给学生补充一些轻松的小游戏来加深对课程知识的理解,提高学生掌握PSP中的工程方法。如填字游戏,用于讲解PROBE估算方法;代码评审游戏,用于提高学生的代码评审技能以及对其重要性的认识;情景测验,选自NASAC的一份月球生存测试,用于辅助学生体验小组评审的方式和效果。通过课堂游戏和练习,有效活跃了课堂气氛并巩固了教学效果。

3.2教学的国际化

PSP开发者认证是SEI推出的目前唯一针对个体软件工程师的资质认证,自05年至今已有数千名工程师获得该认证。我们的教学紧密联系认证的指导材料:PSP知识体,对相关知识点加以重点讲解,并鼓励学生参加认证考试,获取PSP开发者资质,推动国内软件开发者同国际接轨。

3.3教学辅助工具

在PSP教学中,学生所遇到的最大的困难是诸多数据采集任务,加上难于随时指导,会导致无法方便地得到所采集到的数据的直观反馈[11,12]。由于缺少自动化工具的支持,导致很多学生产生了抵触情绪而使PSP课程失败。

针对PSP的教学及应用,我们自主开发了PSP辅助工具PSP CASE Tool(PSPCT),对PSP 0~PSP 2的过程元素提供全面支持,如图3和图4所示。PSPCT能够帮助使用者管理自己的项目,采集过程中的时间、缺陷、规模数据,辅助规模估算和项目计划,并提供分析支持、过程支持等高级功能。PSPCT大量减少了学生数据采集和分析的工作量,及时课后分析授课情况,分析学习效果,有效辅助了教学工作的进行。支持学生自己分析所采集的数据发现和改进个体过程中的问题,有效地预防问题再次发生,提高了学习兴趣和成就感。

同现有其他工具[11,13],PSPCT具有更强的教学指导作用,更具有开放性,对环境和使用者的要求更低,并且具有投入商业化应用的潜力。

4教学效果分析

在教学过程中以及教学过程结束后,对教学所产生的结果进行总结和分析,能够有效地指导学生纠正理论及实践上的错误,及时对自己过程进行改进,同时也使得授课人员能够了解学生们的状态,发现存在的问题,从而及时对教学过程进行调整,并在课程结束后对自身的教学过程加以改进。图5为近两年教学所采集到的学生数据。从图中可以看出:随着课程的进行,学生的工作效率\产品质量和估算准确度等方面都有明显的提高。表2显示了学员在各方面的提高情况。可以看出,经过PSP培训后,学生的改进是显而易见的。

5结论

大量的数据证明,对大学高年级学生和企业的软件开发工程师进行PSP训练,是塑造合格的、专业化的软件工程师的有效途径,也为建造高效的软件开发团队培养人才,从而满足软件企业的人才需要和业务目标的需要,达到缩短软件产品开发周期、降低成本和改善软件产品质量的目的。这将对于提高软件产业化、加速与国际接轨、建造名牌产品具有重大意义。

在下一步的教学工作中,我们会继续改进教学方法和过程,争取组织学生集中完成实践环节以给予即时的指导和反馈,并把重点放到如何将PSP与实际项目结合起来,研究如何以TSP为切入点,把PSP和项目管理方法进行有效的整合,给予学生更加实际的工程指导,使PSP教学的效果最大限度地得以发挥。

Training qualified individual software engineer using PSP

ChaoYing Wu, Chao Cheng

Abstract: This article briefly introduces PSP principle and methods, and illuminates how to teach students from personal process to software engineering process, and how to get a foundation of large-scale software development by practicing module-sized programs in detail. Then it analyzes the student data collected during our teaching activity. The result reveals that PSP method is of benefit for student’s engineering practices, and is capable of improving student’s personal process. At last, this article gives a summary to results and findings, and points out the future works.

Keywords: Software Engineering, Software Process, Personal Software Process, Team Software Process, Process Performance

参考文献

[1] Humphrey W. S. A Discipline for Software Engineering[M]. Addison Wesley, 1995.

[2] 吴超英等译著. 个体软件过程[M]. 北京:人民邮电出版社, 2001.

[3] 吴超英等译著. PSP:软件工程师的自我改进过程[M]. 北京:人民邮电出版社, 2006.

[4] 车向东等. 个体软件过程实验研究[J]. 北京航空航天大学学报, 1998, 8(24): 426-429.

[5] 程超等. 个体软件过程实验及分析[J]. 计算机科学, 2007, 34 (9A):119-123.

[6] Morisio M. Applying the PSP in Industry[J]. Software, IEEE Vol. 17, Issue 6, 2000 P.90 C 95.

[7] Kamatar J, Hayes W. An experience report on the personal software process[J]. Software, IEEE Vol. 17, Issue 6, 2000, P.85 C 89.

[8] Stark J. A, Crocker R. Trends in software process the PSP and agile methods[J]. Software, IEEE Vol. 20, Issue 3, 2003 P.89 C 91.

[9] Babar A. Adapting the Personal Software Process (PSP) to Formal Methods[J]. Proceedings of the 2005 Australian Software Engineering Conference, 2005.

[10] Humphrey, W. S. The Personal Software Process: Status and Trends[J]. Software, IEEE Vol. 17, Issue 6, 2000, P.71 C 75.

[11] Syu L, Salimi A. A web-based system for automating a disciplined personal software process (PSP) [J]. Software Engineering Education & Training. Tenth Conference, 1997.

[12] Abrahamsson, P. The personal software process experiences from Denmark[J]. Proceedings of the 28 th Euromicro Conference, 2002.

Sison R. Personal software process (PSP) assistant[J]. Proceedings of the 12th Asia-Pacific Software Engineering Conference, 2005.

上一篇:软件工程课程教学改革的研究 下一篇:抓好各个组织环节提高毕业设计质量