论文部分内容阅读
摘要:针对普通高等院校“软件工程”课程教学中存在的问题,有感于电视剧《亮剑》的启示,分析了贯穿软件开发整个过程的系统性教学和启发式、对比式学习的意义,提出了基于两条线的教学模式。在结合尽可能好的案例基础上,使学生能更好地理解和掌握当前软件工程的方法、技术和工具。
关键词:软件工程;系统性教学;启发式和对比式学习;两条线教学模式
作者简介:宋礼鹏(1975-),男,山西文水人,中北大学电子与计算机科学技术学院博士研究生;韩燮(1964-),女,山西文水人,中北大学电子与计算机科学技术学院,教授。(山西 太原 030051)
基金项目:本文系国家自然科学基金项目(项目编号:60771026)、中北大学软件工程专业教学改革项目(教字[2009]43号)的研究成果。
中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2011)07-0085-02
软件工程是将系统性的、规范化的、可度量的方法应用于软件的开发、运行和维护——即将工程化技术应用于软件开发过程中,[1]以及对这些方法本身的研究。因此,“软件工程”课程是一门综合性和实践性都很强的课程,比起传统的工科课程,“软件工程”具有更多的技术成分。传统的教学模式存在很大不足,直接影响了课程的教学质量和教学效果。
针对“软件工程”教学中存在的问题,许多专家学者进行了研究与实践,提出了项目或任务驱动的教学方法、[2-4]市场需求导向的教学模式、[5,6]理论教学与实验室建设相结合的教学方法,[7]甚至考虑了“软件工程”课程体系建设问题。[8-10]这些方法都强调理论教学和实践教学的有效结合,对学校的师资力量和教学资源有很高的要求。然而,对于普通院校来说存在两个最本质的问题:全才型教师缺乏,甚至没有;大型的、好的软件案例缺乏,或根本没有。[11,12]在这样的背景下,很难实现理论教学与实践教学的完美结合,因此,利用已有的简单案例,尽可能提高教学质量与水平是最好的选择。
此外,这些方法忽略了一个根本问题,就是对理论教学本身的研究。从理论上系统性地认识软件开发的整个过程有助于培养学生的综合素质,使学生能根据任务、环境的变化创造性地运用技术,甚至提出全新的技术。因此,理论教学本身的研究具有重要的意义。根据多年的教学经验和看电视剧《亮剑》的感悟,提出了基于两条线的教学模式。在结合尽可能好的案例基础上,强调贯穿软件开发整个过程的系统性认识、启发式教学方法和对比式教学方法,并结合中北大学电子与计算机科学技术学院(以下简称“我院”)“软件工程”课程教学进行了总结。
一、电视剧《亮剑》的感悟
电视剧《亮剑》里塑造了几个人物,其中最主要的是独立团团长李云龙。他训练士兵很有一套,总能调动战士们的积极性。此外,他打仗很有创意,会灵活运用各种技战术,是一位出色的指挥员。解放后,他在南京军事学院深造,做了一名学生,潜心研究岛屿作战方略。在这里李云龙既是一名老师,又是一名学生。作为老师,他无法像敌军一样拿战俘训练士兵,但他能启发战士们的创造力和想象力,利用有限的资源达到最佳的训练效果;作为学生,他在没有亲自参战的情况下,能抽象地思考具体的技战术,并且这种思考是从战争全局的角度出发的。
从这里可以得到一些启示:指挥战争是一项复杂任务,同样软件开发也是一项复杂任务。从宏观上系统地认识软件开发的整个过程有助于培养李云龙式的学生。训练士兵与教学生类似,可以在简单案例的基础上,尽可能启发学生的创造力和想象力,达到最佳的学习效果。把握软件各个阶段的本质任务,对比式地学习现有方法的特点及其演化过程能培养学生创造性地运用所学技术的能力。
此外,《亮剑》里还有一个人物,即国民党暂7师师长。他是李云龙的手下败将,但最后却成为李云龙在南京军事学院的老师。李云龙对他也由看不起到尊敬。从这里面可以看到,军事理论知识对指挥作战有指导意义,尤其对高级军事干部更有必要学习;军事理论知识需要灵活应用。
二、两条线教学模式
两条线教学模式已经被许多学者广泛研究,[13,14]但其随着研究内容的不同有着完全不同的定义。根据上面的讨论,软件工程的教学需要系统地认识软件开发整个过程,这个过程可以看做一条主线。此外,在软件开发的每个阶段,结构化方法学和面向对象方法学都提供了相应的建模技术。结合具体案例对这两种建模技术进行比较,并启发学生探讨可能的改进,这可以看做另外一条主线。
两条线教学模式的实现:首先结合一个案例来贯穿软件开发的整个开发阶段,授课顺序按开发阶段的顺序进行。对于软件开发的每个阶段,先系统地讲解这个阶段的本质任务,对建模技术、方法和工具的要求;然后简单介绍结构化方法学在该阶段提供的建模技术、方法等,并让学生借助该技术、方法来解决实际案例中的任务;在完成实际案例的基础上,启发学生剖析结构化技术、方法的优缺点;接着重点讲解面向对象方法学的技术思想,让学生用新技术做同样的案例;最后启发学生通过对比两种方法学的技术,分析面向对象方法学的优点,思考未来可能的改进。这样的过程一直进行下去,直到完成软件开发的全部阶段为止。
两条线的教学过程中还存在一个具体问题,即学生只对具体技术感兴趣,对抽象的工程理论思想感到枯燥,觉得无用。在教学过程中,借用《亮剑》的启示,通过实际项目的经验和请一些有说服力的工程技术人员来帮助学生转变思想,正视理论知识的价值。
对两条线教学模式的具体应用:在讲完软件概述和软件工程过程及其模型后,按软件开发的基本阶段(软件规格描述、软件开发、软件验证和软件演进),采用两条线模式进行教学。以软件规格描述(即通常的需求分析)阶段为例,在这个阶段主要讲需求分析的任务、需求的层次性及对需求理解的不一致性。
讲完每种方法学在相应阶段的技术后,让学生分别采用数据流图、用例图、类图等技术对系统需求进行建模(采用的案例是图书管理系统)。学生们得到以下体会:
(1)结构化方法学与面向对象方法学都给出了需求建模技术,这些技术均采用由抽象到具体、分层次刻画系统需求的思路;
(2)面向对象方法学依据人类习惯的思维方式对系统建模,使分析员更容易找到建模元素,建起来的模型也更稳定;
(3)面向对象方法学依据需求本身所具有的层次性特性,将需求分析进一步细分为需求和分析阶段,并提供了不同的建模技术,使每种技术可以更好地关注于它们所在阶段的任务、相应文档读者的特点等本质要求。
在老师的启发下,学生们进一步讨论了面向对象方法学在需求、分析建模技术上存在的问题,需求以及分析阶段的建模技术未来可能的改进之处。经过热烈的讨论,学生们提出了许多观点和建议,主要有:用例是有粒度的,如何通过引入好的技术来帮助分析人员把握好用例粒度;由用例图向类图的映射能否引入更好的机制、手段;能否对建立的模型引入自动消歧技术。
三、结束语
本文给出了基于两条线的教学模式,强调系统性认识软件开发整个过程、启发式教学方法和对比式学习方法的意义,并在我院进行了试点。两年的实践证明,这种方式极大地提高了学生学习“软件工程”的热情,期末成绩在试题难度相同的情况下有较大提高。此外,学生分析问题、解决问题的能力也明显提高。
参考文献:
[1]孙家广,等.中国软件工程学科教程[M].北京:清华大学出版社,2005:10-32.
[2]霍英.项目驱动教学法在软件工程课程中的实践[J].计算机教育,2010,(17): 123-125.
[3]阳王东,祝青,邓艳智.《软件工程》项目型教学模式的探索[J].计算机时代,2008,(4): 68-71.
[4]张兆印,陈超,李艳芳.软件工程课任务驱动教学法的研究[J].计算机时代,2009,(8): 52-54.
[5]张大平.跨越软件工程教学到实践的鸿沟[J].计算机教育,2010,(17):
34-37.
[6]杜立智.软件工程教学与实战剖析[J].计算机时代,2010,(8):57-58.
[7]张霞.软件工程课程教学改革的探讨[J].计算机教育,2010,(4):40-42.
[8]况立群,韩燮.软件工程课程体系教学模式的探索与改革[J].中国电力教育,2009, (15):75-76.
[9]韩中元,雷国华,李军.应用型本科软件工程人才培养模式的探索与实践[J].计算机教育,2010,(10):26-29.
[10]徐玲,等.软件工程专业实践教学体系的构建[J].计算机教育,2010,(11):137-139.
[11]郑耿忠,刘秋梅.地方性院校软件工程专业建设探讨[J].电脑知识与技术,2009,5(30):8477-8478.
[12]付勇智,王文燕,史旅华.普通院校软件工程专业实践教学体系[J].计算机教育,2010,(17):110-112.
[13]张克军,高树风,周天剑.围绕“一个核心、两条主线”构建独立学院计算机学科独立实践教学体系[J].计算机教育,2010,(16):134-137.
[14]马巧梅.基于两条主线的网络工程专业课程体系建设探讨[J].计算机教育,2009, (5):75-77.
(责任编辑:麻剑飞)
关键词:软件工程;系统性教学;启发式和对比式学习;两条线教学模式
作者简介:宋礼鹏(1975-),男,山西文水人,中北大学电子与计算机科学技术学院博士研究生;韩燮(1964-),女,山西文水人,中北大学电子与计算机科学技术学院,教授。(山西 太原 030051)
基金项目:本文系国家自然科学基金项目(项目编号:60771026)、中北大学软件工程专业教学改革项目(教字[2009]43号)的研究成果。
中图分类号:G642.3 文献标识码:A 文章编号:1007-0079(2011)07-0085-02
软件工程是将系统性的、规范化的、可度量的方法应用于软件的开发、运行和维护——即将工程化技术应用于软件开发过程中,[1]以及对这些方法本身的研究。因此,“软件工程”课程是一门综合性和实践性都很强的课程,比起传统的工科课程,“软件工程”具有更多的技术成分。传统的教学模式存在很大不足,直接影响了课程的教学质量和教学效果。
针对“软件工程”教学中存在的问题,许多专家学者进行了研究与实践,提出了项目或任务驱动的教学方法、[2-4]市场需求导向的教学模式、[5,6]理论教学与实验室建设相结合的教学方法,[7]甚至考虑了“软件工程”课程体系建设问题。[8-10]这些方法都强调理论教学和实践教学的有效结合,对学校的师资力量和教学资源有很高的要求。然而,对于普通院校来说存在两个最本质的问题:全才型教师缺乏,甚至没有;大型的、好的软件案例缺乏,或根本没有。[11,12]在这样的背景下,很难实现理论教学与实践教学的完美结合,因此,利用已有的简单案例,尽可能提高教学质量与水平是最好的选择。
此外,这些方法忽略了一个根本问题,就是对理论教学本身的研究。从理论上系统性地认识软件开发的整个过程有助于培养学生的综合素质,使学生能根据任务、环境的变化创造性地运用技术,甚至提出全新的技术。因此,理论教学本身的研究具有重要的意义。根据多年的教学经验和看电视剧《亮剑》的感悟,提出了基于两条线的教学模式。在结合尽可能好的案例基础上,强调贯穿软件开发整个过程的系统性认识、启发式教学方法和对比式教学方法,并结合中北大学电子与计算机科学技术学院(以下简称“我院”)“软件工程”课程教学进行了总结。
一、电视剧《亮剑》的感悟
电视剧《亮剑》里塑造了几个人物,其中最主要的是独立团团长李云龙。他训练士兵很有一套,总能调动战士们的积极性。此外,他打仗很有创意,会灵活运用各种技战术,是一位出色的指挥员。解放后,他在南京军事学院深造,做了一名学生,潜心研究岛屿作战方略。在这里李云龙既是一名老师,又是一名学生。作为老师,他无法像敌军一样拿战俘训练士兵,但他能启发战士们的创造力和想象力,利用有限的资源达到最佳的训练效果;作为学生,他在没有亲自参战的情况下,能抽象地思考具体的技战术,并且这种思考是从战争全局的角度出发的。
从这里可以得到一些启示:指挥战争是一项复杂任务,同样软件开发也是一项复杂任务。从宏观上系统地认识软件开发的整个过程有助于培养李云龙式的学生。训练士兵与教学生类似,可以在简单案例的基础上,尽可能启发学生的创造力和想象力,达到最佳的学习效果。把握软件各个阶段的本质任务,对比式地学习现有方法的特点及其演化过程能培养学生创造性地运用所学技术的能力。
此外,《亮剑》里还有一个人物,即国民党暂7师师长。他是李云龙的手下败将,但最后却成为李云龙在南京军事学院的老师。李云龙对他也由看不起到尊敬。从这里面可以看到,军事理论知识对指挥作战有指导意义,尤其对高级军事干部更有必要学习;军事理论知识需要灵活应用。
二、两条线教学模式
两条线教学模式已经被许多学者广泛研究,[13,14]但其随着研究内容的不同有着完全不同的定义。根据上面的讨论,软件工程的教学需要系统地认识软件开发整个过程,这个过程可以看做一条主线。此外,在软件开发的每个阶段,结构化方法学和面向对象方法学都提供了相应的建模技术。结合具体案例对这两种建模技术进行比较,并启发学生探讨可能的改进,这可以看做另外一条主线。
两条线教学模式的实现:首先结合一个案例来贯穿软件开发的整个开发阶段,授课顺序按开发阶段的顺序进行。对于软件开发的每个阶段,先系统地讲解这个阶段的本质任务,对建模技术、方法和工具的要求;然后简单介绍结构化方法学在该阶段提供的建模技术、方法等,并让学生借助该技术、方法来解决实际案例中的任务;在完成实际案例的基础上,启发学生剖析结构化技术、方法的优缺点;接着重点讲解面向对象方法学的技术思想,让学生用新技术做同样的案例;最后启发学生通过对比两种方法学的技术,分析面向对象方法学的优点,思考未来可能的改进。这样的过程一直进行下去,直到完成软件开发的全部阶段为止。
两条线的教学过程中还存在一个具体问题,即学生只对具体技术感兴趣,对抽象的工程理论思想感到枯燥,觉得无用。在教学过程中,借用《亮剑》的启示,通过实际项目的经验和请一些有说服力的工程技术人员来帮助学生转变思想,正视理论知识的价值。
对两条线教学模式的具体应用:在讲完软件概述和软件工程过程及其模型后,按软件开发的基本阶段(软件规格描述、软件开发、软件验证和软件演进),采用两条线模式进行教学。以软件规格描述(即通常的需求分析)阶段为例,在这个阶段主要讲需求分析的任务、需求的层次性及对需求理解的不一致性。
讲完每种方法学在相应阶段的技术后,让学生分别采用数据流图、用例图、类图等技术对系统需求进行建模(采用的案例是图书管理系统)。学生们得到以下体会:
(1)结构化方法学与面向对象方法学都给出了需求建模技术,这些技术均采用由抽象到具体、分层次刻画系统需求的思路;
(2)面向对象方法学依据人类习惯的思维方式对系统建模,使分析员更容易找到建模元素,建起来的模型也更稳定;
(3)面向对象方法学依据需求本身所具有的层次性特性,将需求分析进一步细分为需求和分析阶段,并提供了不同的建模技术,使每种技术可以更好地关注于它们所在阶段的任务、相应文档读者的特点等本质要求。
在老师的启发下,学生们进一步讨论了面向对象方法学在需求、分析建模技术上存在的问题,需求以及分析阶段的建模技术未来可能的改进之处。经过热烈的讨论,学生们提出了许多观点和建议,主要有:用例是有粒度的,如何通过引入好的技术来帮助分析人员把握好用例粒度;由用例图向类图的映射能否引入更好的机制、手段;能否对建立的模型引入自动消歧技术。
三、结束语
本文给出了基于两条线的教学模式,强调系统性认识软件开发整个过程、启发式教学方法和对比式学习方法的意义,并在我院进行了试点。两年的实践证明,这种方式极大地提高了学生学习“软件工程”的热情,期末成绩在试题难度相同的情况下有较大提高。此外,学生分析问题、解决问题的能力也明显提高。
参考文献:
[1]孙家广,等.中国软件工程学科教程[M].北京:清华大学出版社,2005:10-32.
[2]霍英.项目驱动教学法在软件工程课程中的实践[J].计算机教育,2010,(17): 123-125.
[3]阳王东,祝青,邓艳智.《软件工程》项目型教学模式的探索[J].计算机时代,2008,(4): 68-71.
[4]张兆印,陈超,李艳芳.软件工程课任务驱动教学法的研究[J].计算机时代,2009,(8): 52-54.
[5]张大平.跨越软件工程教学到实践的鸿沟[J].计算机教育,2010,(17):
34-37.
[6]杜立智.软件工程教学与实战剖析[J].计算机时代,2010,(8):57-58.
[7]张霞.软件工程课程教学改革的探讨[J].计算机教育,2010,(4):40-42.
[8]况立群,韩燮.软件工程课程体系教学模式的探索与改革[J].中国电力教育,2009, (15):75-76.
[9]韩中元,雷国华,李军.应用型本科软件工程人才培养模式的探索与实践[J].计算机教育,2010,(10):26-29.
[10]徐玲,等.软件工程专业实践教学体系的构建[J].计算机教育,2010,(11):137-139.
[11]郑耿忠,刘秋梅.地方性院校软件工程专业建设探讨[J].电脑知识与技术,2009,5(30):8477-8478.
[12]付勇智,王文燕,史旅华.普通院校软件工程专业实践教学体系[J].计算机教育,2010,(17):110-112.
[13]张克军,高树风,周天剑.围绕“一个核心、两条主线”构建独立学院计算机学科独立实践教学体系[J].计算机教育,2010,(16):134-137.
[14]马巧梅.基于两条主线的网络工程专业课程体系建设探讨[J].计算机教育,2009, (5):75-77.
(责任编辑:麻剑飞)