在软件工程课程实践中强化过程思维与过程控制

2006-03-24 04:00黄国兴
计算机教育 2006年3期
关键词:文档软件过程

周 勇 黄国兴

摘要本文强调将过程思维与过程控制应用于软件工程教学实践,分析并总结了实践结果,表明这一方法对课程教学有显著作用。

关键词过程思维过程控制课程实践软件工程

1 问题的提出

今天,越来越多的国内软件开发企业认识到软件过程的重要性。导致软件项目失败的原因除了技术、工具等因素以外,更多的是由于缺乏过程规范。软件开发需要团队的努力,如果缺少过程规范,团队就可能遵循不同的过程。更普遍的情况则是团队根本就没有任何经过定义的过程。

正如Watts Humphrey认为的那样,“为了解决软件问题,重要的第一步就是将整个软件开发任务看作一个可控的、可度量的以及可改进的过程。”

将已有的软件过程运用于实践或在实践中改进现有软件过程,需要软件工程师在学习期间接受不同方面的教育,概括来说,一个合格的软件工程师,他需要具备以下基本素质:

(1)了解一个或多个开发过程。

(2)对于自己从事的开发过程有详细的了解。

(3)建立起一套改进过程的机制。

(4)对过程改进作出计划。

(5)找出上述计划所需的资源。

(6)执行上述计划。

(7)持续改进过程。

在上述活动中,需要度量和评估。同时,还要给软件工程师们在其复杂的工作中提供智能化的工具。

传统的计算机学科教学中,强调数学基础和按部就班的理论学习,而伴随着以程序设计语言为引导的编程实践活动通常是以学生个体为单位进行的,它并没有充分教授学生从事软件开发所必需的方法和技巧。

现在比较流行的软件工程教学方法,是在授课过程中伴随个体或小组项目开发。但是,无论是教师还是学生往往把注意力集中在任务、工作、人员或者结构之上,而不是集中在过程之上,在项目开发中采用的还是一贯的基于任务的思维方式,即将工作划分为最小的组件再将它们分配给指定人员的方式。

我们在教学实践项目中强调以软件过程为中心,让学生了解并实际看到自己的开发过程,这一开发过程通常会贯穿软件工程实践领域,包括计划、分析、设计、实施、测评以及修改等一系列需要专门技术的复杂活动。

认知科学的研究表明,开发方法与技巧的掌握,涉及以下三个方面。

(1)明确各类指示和实践活动。

(2)在一个相关的环境中运用此类技巧。

(3)采用结构化的方式开展此类活动。

针对上述三个方面,我们在教学实践中采用了项目驱动、基于过程、小组开发。其中,项目驱动对应于明确各类指示和实践活动,小组开发对应于在一个相关的环境中运用此类活动,基于过程对应于采用结构化的方式开展此类活动。另外,我们在教学实践中强调过程思维和过程控制,有别于一般的小组项目实践。

2 强调过程思维和过程控制

在传统计算机学科的教学中,经常会忽视软件过程,这一点从许多的计算机学科的教学计划及教学大纲中反映出来,一般地,学生们总是先写代码,然后再补写文档,对学生的调查表明很多学生在开发时根本不写书面的设计文档(如图1所示)。我们在课程实践中,强化了学生们的过程思维。

从某种意义上说,过程思维反映了人类的大脑对知识与经验的保存及其使用的方式。根据加涅提出的学习过程的基本模式,学习是人的倾向性或能力的变化,这种变化要能保持一定时间,且不能单纯归于生长过程。所谓的“知识”就保存在神经元之间的相互连接中,开始时是一种“弱连接”,即我们所说的“弱记忆”,当我们获取了知识并且在实践中加以运用的话,上述连接就会得到加强,从而形成所谓的“强记忆”。只要你拥有了针对于某一特定领域的知识和经验后,再遇到相同的情况,就会自动运用头脑中保存的有关知识,这时你所作出的反应就像是自动完成的,过程的执行将是自然而然的事。可以说,正是由于多次相同的经历和不断的训练,才导致了我们对知识的掌握,对过程的驾轻就熟。

过程思维和传统的思维方式大不相同,采用这种方法会导致明显不同的结果。这一点对于所有团队成员都具有相同的目标并且在采用过程思维时尤其突出。过程思维会使大家保持行为的一致,从而实现整体能力的提升,获得更佳的效果。这在强调团队精神的软件开发中显得尤其重要。

因此,我们在课程实践中,要求学生在以小组为单位的软件开发活动中,采用以过程为中心的方法,即要求他们的开发活动基于过程。这里所涉及的软件过程在课程的理论部分已经明确阐述过,需要学生们在项目开发中加以实践,做到融会贯通。

过程通常体现在三个方面:第一个方面是关于指定过程的定义,通常是将过程所包含的活动和程序文档化;第二个方面是过程的学习,通过人们头脑中学到的过程知识来驱动他们的行为;第三个方面在于过程活动的结果。所以,过程不仅仅是一堆文档,除了定义过程,对学生进行过程培训(结合理论知识),还需要加强过程的监控,通过这种方式确保过程活动是按照已定义的过程文档内容来执行并确保最终开发目标的实现。

3 设计的方法

我们针对学生开展的项目开发,设定了一个体系框架,用以支持并控制其开发过程。这个框架的设计参考了格拉奇和伊利在1980年提出的设计过程模式,这一框架在较高的层面列举了相关的活动内容,包括领域知识、启发式的策略、控制的策略、学习的策略。

针对上述认知框架,我们总结了教师的六项基本任务,用以支持和控制基于过程的教学。

(1)帮助建立任务模型

针对具体的领域及其实际任务,帮助项目小组制定任务模型(WBS),在开发活动中进一步细化相应的子任务。

(2)提供实时指导

教师实时地为项目小组提供指导(参加讨论会、专题网站、MSN等),给出提示性意见,评价局部成果,随时鼓励学生。

(3)提供开发模板

针对学生缺乏开发经验的实际情况,提供系统开发的模板,有助于学生熟悉开发过程和内容,提高文档的规范性。

(4)鼓励学生将其学到的知识和方法付诸实施

这种做法将有利于学生在实践中验证有关理论知识和方法。

(5)分析学生开发过程中反馈的信息

鼓励学生评审开发中的关键活动,分析反馈结果,对过程改进提出建议和意见。

(6)鼓励学生探索

鼓励学生在开发过程中创新,培养发现问题和独立解决问题的能力。

为了让学生在项目开发中运用软件过程更加有效,进一步地,我们设计了相应的角色与机制的配合,包括:

(1)过程所有权

由教师按照软件过程课程所教授的有关理论,结合项目实际,制定一个标准过程。学生可以根据需要提出改进这个过程,但是,需要得到教师的评估确认。

(2)对过程执行情况的监控

由教师在项目开发过程中全程监控过程的执行情况。

(3)过程使用者的反馈

学生在执行过程中按要求反馈其执行情况,教师据此了解和评价学生的过程执行结果。

(4)评价

教师对最终过程执行结果给出评价。

4 实验

我们选择了同一年级同一班级的两门软件工程专业课程进行对比实验,课程为三年级的“软件开发实践”和“软件过程”。我们采用的教学方法就是在课程中配套进行小组项目开发,以小组为单位独立完成既定的项目,要求参照软件过程的理论和方法,强调团队合作,提倡编写完整的开发文档。

实验流程如图1所示,两个样本集合分别代表了自由的小组开发(软件过程)和受控制的小组开发(软件开发实践),以此检验不同的开发效果。

实验的结果如表1、表2和表3所示。实验结果分析如图2、图3所示。

5 结论

从学生调查的反馈结果可以看出,在小组开发过程中强调过程思维,并让教师参与过程控制,大大提高了学生小组开发的有效性和规范性,其项目开发的结果评价也得到了明显的提高。对于受控的开发小组,其开发过程中相关活动的参与率较高,而对于自由的开发小组方式,其开发过程中相关活动的参与率较低。

进一步地,我们希望能改进我们的控制方法,如果能够建立一个统一的教学控制平台,在这个平台上将项目任务发布、项目控制、项目评审、项目资源以及项目讨论集成起来,将有效地提高学生项目小组的开发效率,加强过程控制,改进软件过程,从而大大促进软件工程专业课程的教学质量。(本文获“2005年全国青年教师计算机教育优秀论文评比”二等奖)

参考文献

1 Humphrey, W. S.Why Should You Use A Personal Software Process? Software Engineering Notes 20(3), July 1995 :33~36

2 尹俊华等.教育技术学导论.北京:高等教育出版社

3 Reder, L. and R. Klatzky . The Effect of Context on Training: Is Learning Situated? CMU/CS-94-TR-187, School of Computer Science, Carnegie Mellon University,1994

4 Moore, M. & C. Potts. (1994) Learning by Doing: Goals and Experiences of Two Software Engineering Project Courses. In J. L. Dìaz-Herrera. (ed.), Software Engineering Education: 7th SEI CSEE Conference. New York: Springer-Verlag:151~164

5 Sami Zahran , Software Process Improvement: Practical Guidelines for Business Success. Pearson Education, 1998

猜你喜欢
文档软件过程
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
轻松编辑PDF文档
描写具体 再现过程
有趣的识花软件
Word文档 高效分合有高招
在这个学习的过程中收获最大的是哪些,为什么?
即时通讯软件WhatsApp
圆满的过程
丰富多彩的Android软件