APP下载

乐教乐学软件工程-生活案例教学法改革探讨

2019-09-10狄国强钱忠胜刘德喜

赤峰学院学报·自然科学版 2019年12期
关键词:生活案例软件工程教学改革

狄国强 钱忠胜 刘德喜

摘 要:軟件工程方法、工具和过程对学习、工作具有启迪作用,软件生命周期、里程碑、过程模型、建模、面向对象等核心概念和知识点均可选取生活中的典型事例来类比和阐述,以更好地帮助学生加速理解、加深印象,使专业课程的教学变得生动有趣,使枯燥的理论说教变得通俗易懂,达到事半功倍的效果.生活案例教学法被应用于课堂教学和中国大学MOOC《乐学软件工程》中,配合翻转课堂和混合式教学,成效显著,受到学生的普遍好评.

关键词:软件工程;乐教乐学;生活案例;教学改革

中图分类号:G642.4  文献标识码:A  文章编号:1673-260X(2019)12-0157-04

1 引言

从软件工程是一级学科来看,足见其知识面、技能面之广;从软件工程作为一个专业来看,说明其知识点、技能点之深;软件工程还是软件工程专业的导论课,是计算机科学与技术专业的核心课.作为计算机科学与技术专业中一门重要的专业必修主干课程[1],它的内容既能串起先修课程的知识和技能,又能训练学生综合运用知识、技能解决问题的能力,在培养学生的专业技能和职业素养上具有重要作用.软件工程课程知识点多、涉及面广,既有理论又有实践,教和学难度都比较大.虽说知识、技能的学习和掌握需要学习者付出努力,但从教的角度上看,若能以鲜活的案例进行比拟和解说,无疑能更好地帮助学生加速理解、加深印象,起到事半功倍的效果.这是作为教师应该不断追求和提升的教学技能,需要教师在教学中不断探索和积累,不断改进教学效果,不断提升授课能力.

笔者课程组在日常教学中,经过不断探索,采用人生来比拟软件工程,选取日常生活中的一些典型事例来诠释软件工程中的知识点,以使专业课程的教学变得生动有趣,力图追求教与学的最佳状态,快乐学习,将教师快乐教学、学生快乐学习视为教师职业的一项成就和满足.

2 挖掘生活案例促进知识点理解

软件工程是软件开发方法和工程学的有机结合,是工程的系统观和方法论在软件业的应用,而工程的系统观和方法论同样适用于人生.软件工程的方法、工具和过程不仅是软件开发的要素,也有助于学习、工作和生活,如软件项目的可行性分析、业务模型的表述适用于日常任何活动的开展、沟通和交流.软件工程课程的内涵和外延中的很多内容演绎之后,能够对人生发挥启迪作用,具有在学习、生活、工作中实用化的功用.而且,工程化的思维、方法、工具和手段有利于培养学生的职业能力和综合素养.下面通过几个例子来探讨如何借助生活案例帮助学生理解重要的知识点.

2.1 生命周期、里程碑与四期

软件生命周期是软件工程的基本概念之一,如果用人的生命周期来类比,更易理解.人们常说的生老病死可以类比软件的开发、运行、维护和更新.人类的一生可以从计划生育到孕育、诞生,然后成长、成年为社会做贡献,再到老年、辞世和遗产,其中每个时期的重点内容、表现和标志都不一样,如图1所示.其中的阶段标志就是“里程碑”,如生日、满月、百日、周岁、成年等等非常受重视的时间节点是重要的里程碑,这些标志几乎不占用时间段,但是会取特定的名称并进行相应的庆祝活动,如成人礼,最常见就是过XX岁生日.人类生命周期的阶段还可进一步细分,也可粗分.细分如计划、怀孕、幼儿园、小学、中学、大学等;粗分如孕育、教育、贡献、老年等.

一般工程的生命周期与人类似,如图2所示,但阶段的名称有别于人类成长中的婴儿、少年、成年等名称,而是用项目建议书、工程规划、可行性研究、初步设计、技术设计或施工设计、施工与监理、运行维护来进行工程阶段的细分,大体上可划分为四期:概念期、设计期、实现期、运行期.工程被更新换代或者遗产的话,一般不再提起,除非具有特别的意义,比如长城、赵州桥等.工程的正式立项、破土动工、竣工验收是重要的时间节点和标志,一般要进行仪式化的庆典,比如早期的房屋上大梁,现在的大楼封顶等,类似于人的出生、百日、成年仪式等.

软件工程的生命周期与此基本类似又有细微的不同,阶段的划分没有一般工程细,可以细分为问题定义、可行性研究、需求分析、总体设计(或概要设计)、详细设计、实现、测试、运行维护八个阶段[2];也可粗分为四期:概念期、设计期、实现期、运行期.经过这样的类比,软件工程生命周期、里程碑更容易被学生理解.

将软件的生命周期细分为八个阶段是很多软件工程教科书中的经典划分法,这里为什么又要提出将软件的生命周期粗分为四期?笔者认为:这是因为越来越多的开发工具试图成为一种全生命周期的工具,这类工具希望将概念期、设计期、实现期、运行期的工作都纳入其支撑范围,以减少开发人员的不便,提升开发效率.不过,由于在这四期中软件的表现形式很不相同,因此在许多工具里面,分了较多的视图来呈现软件而没有分XX期,如设计视图、代码视图、运行视图.例如:Dreamwaver中的视图[3],如图3所示.

实际上,一些开发工具本身自带或者加装插件后的UML视图或ER视图对应了概念期;设计视图对应设计期;代码视图对应实现期;运行视图或模拟运行视图对应运行期.

2.2 软件过程模型与生产

软件过程模型也是软件工程的基本概念之一,对于没有软件开发经历的大多数同学来说,并不容易理解.如瀑布模型、原型模型、增量模型、迭代模型、螺旋模型、喷泉模型、敏捷模型等[2].由于软件工程中用到“模型”一词的地方非常多,因此需要强调它们是过程模型,代表着软件开发要经历的经典过程,有相对固定的内容、流程、方法、工具、成果,有其产生的背景和需要消耗的资源,有特点及其适用的场合.要使学生更快理解软件过程模型的涵义和作用,可借用女人的生育过程来说明.因为女人生育中的顺产、难产、剖腹产、流产并不是陌生的词汇,当听到这些名词时,这些过程所蕴含的内容、流程、方法、工具、成果是特指的,其背景和需要消耗的资源是特定的,不同生产过程的特点和适用的场合也是不同的.

一種预计的过程可能因为实际情况发生变化而需要转换为另一种过程,如本来预计是顺产的,但是不料发生了难产;按照难产的医疗处理还不行,需要进行剖腹产.这意味着内容变化了,相应的一整套处理要改变,包括流程、方法和工具都要改变.但是最终的结果不能变,就是不管哪种生产过程最终都要诞生健康的宝宝.软件的实际开发过程也类似,并不见得预期确定了某种过程模型后就不变了.因为现实中的软件开发往往是前松后紧,前期可能是瀑布过程模型,到了后面要赶工期,可能就转成敏捷模型.笔者以为软件开发过程中,过程模型变化不是什么问题,只要能够在工期内、低成本地开发出高质量的软件.

2.3 软件建模与表白

软件的建模工作非常重要,但是很多学生不重视建模,尤其是学了一些编程语言之后.对于软件项目,一开始就急着编码,往往事倍功半.这些现象可说明软件建模的重要性.软件模型怎样才算建好?可用“表白”来说明.比如:你表白过吗?你向什么人表白?怎么表白的?效果如何?别人是否明确地了解你“表白”的内涵,也就是说“表白”的对象、目的、内容、方法、工具、效果是否经过了思考?原来表白还有这么多的窍门.此例不仅可以引出软件表述的目的、对象、作用和内容,用来说明软件建模、软件文档、软件原型的重要性;从“表白”的方法、工具来说明软件建模的方法、工具,因为软件建模其实是一种表白;从“表白”的成效来说明软件建模的成果与效果.此例还可引出可行性分析等话题.仅仅只有语言、文字的表白是否苍白无力?借助于经典表征的、非语言的表达方式是否更加精准、更具有冲击力和感染力?这充分说明软件开发不仅需要文档,还需要图形、表格甚至是原型来表述.以此说明软件建模中要撰写好软件文档,不可缺少图、表,最好还有原型.这样的类比会不会产生一定程度的“笑果”呢?

2.4 面向对象与人

面向对象的软件开发方法是现代软件工程中的重要方法,也是软件工程中的核心概念之一,其中诸多的概念和理论对于学生来说,要充分理解和完全掌握还是有相当难度的.要讲清楚这个概念,可以挖掘一些浅显易懂的案例来阐述.辛好,面向对象方法本身就是来源于人类对于客观世界的思考方法,生活为我们提供了丰富的案例.

笔者尝试了用与人相关的常识来阐述面向对象的概念,人就是讲解面向对象很好的案例.每个人作为具体的对象是人这个类的实例;人的姓名、年龄、性别、学号等固定不变的特征是人这个对象的属性,而其每天的吃、喝、拉、撒、睡、学、工、动等个体行为是人这个对象的方法.我们通常说的言谈举止能够表明一个人的修养,反映出一个人的内在,可以用来说明对象的封装.人与人、人与外界的相互沟通和相互作用都是通过看、听、闻、味、触五大感觉器官来实现,足以说明对象的沟通和互动可以通过接口和消息来实现.感觉器官就是接口,发出或接收到的内容就是消息.人与人之间如果是父与子或者家族亲戚,他们的遗传就是类的继承.这些对象和类的形象的案例和解说,能够将面向对象的类、实例、属性、方法、继承、封装、多态、消息等核心概念的理解难度大大降低.

2.5 软件测试、调试与体检

要提升软件质量,软件的测试与调试不可或缺.软件的测试与调试如同我们在医院进行身体检查、化验和治疗.为了确定身体是否感染疾病,需要检查或化验以确定有没有病,是什么病,以及病情的程度.软件测试好似体检和化验,仅仅是检查、发现或定位疾病,而不是治疗疾病.软件调试则不同,是排除软件不足的手段,如同医生开处方进行疾病的治疗.软件测试中的白盒测试方法好比X射线拍片、CT扫描、B超彩超的检查等;软件测试的黑盒测试方法则好比中医的望、闻、问、切,它是通过对象的接口和外在表现来检查、分析和判断所检查的对象是否存在问题.

2.6 软件运维与保健治病

生命的延续离不开身体的保健,定期和不定期的体检,能够及时地发现疾病,起到早发现、早治疗的作用.软件的寿命与此类似,需要在运行中持续的维护和管理,软件维护中的预防性维护、适应性维护、扩展性维护,以及软件运行中的定期或不定期的检查、日志审计、资源轮换、垃圾清理等不仅能够提升软件运行的质量,无疑是延长软件生命周期的重要措施.运维起到有病治病,没病延年的作用.软件的维护,特别是纠错性维护好比医生治病,不会有副作用吗?会有后遗症吗?国内近年就出现过因为维护不到位而产生严重后果的实例.这些既可以作为解说软件维护的案例,也可以用作课堂设问的引入话题.

3 教学成效

以上所列的生活案例,凡此种种,不一而足,是课程组基于多年从事软件工程教学、开发实战的经验积累.借助生活案例诠释软件工程中的重点、难点概念取得了良好的教学效果.

3.1 课程建设方面

课程组积极挖掘生活案例开发的课件曾获得第五届全国多媒体课件大赛二等奖、第九届全国多媒体课件大赛一等奖.实施生活案例教学法后的软件工程课程于2006年获批为江西省优质课程,2014年江西省精品资源共享课程,江西省第十三次优秀教学成果二等奖[4-6].课程组不仅将生活案例教学法应用于线下的课堂教学,还积极开展MOOC教学,2016年获批为首批江西省精品在线开放课程建设项目,在中国大学MOOC、超星MOOC平台上开展了《乐学软件工程》教学.2018年11月获批为江西省高校育人共享计划课程,2019年1月10日被认定为江西省级精品在线开放课程.学生在课程学习中,不仅是如何完成作业,还有自己以后的人生规划.从软件的生命周期到人生的发展历程,每一环都很重要,每一环都为下一环打下了基础.近几年来,配合翻转课堂和混合式教学[7],学生的学习效果得到改善,选课人数不断刷新,并主动进行系统的、完善的思考,取得优异成绩的同学逐年增多,反馈也非常积极,受到学生的普遍好评.

3.2 校内教学反馈

校内选修的同学在结课的学习总结中写到:“老师课堂上用生活中案例引导我们积极思考、表达自己的观点和想法,给我们提出许多有深度的建议,让我们不断成长和进步.感谢老师这一学期以来的认真付出和悉心教导,在软件工程上所学习到的知识我今后也会更多的运用到实际生活中,争取获得更大的进步……”

“軟件工程是一门很好的课程,老师热心指导同学,良好的氛围提高了我们的学习热情,每次上课同学们的学习积极性都很高,也让我们更加热爱这门课,再加上老师合理的作业布置,让我们更加深刻地理解了课程原理,掌握了软件开发的方法……”.

3.3 慕课教学方面

跨校选修的同学在中国大学MOOC平台上的评教如下.

用户“19981877108”的评教:“老师讲的深入浅出,讲解的非常透彻.让我对软件有了全新的认识.”

用户“19972216167”的评教:“讲解有条理,并且有可看性.”

用户“杨玉洁ykt1503729963489”的评教:“老师讲的深入浅出,知识点清楚详细,通俗易懂,强力推荐!十分棒!”

图4是中国大学MOOC平台上的《乐学软件工程》的评价截图.慕课网址为http://www.icourse163.org/course/JXUFE-1002335005.

4 结语

传统的软件工程课程教学枯燥难懂、晦涩乏味,教学改革时不我待.破解方法之一是努力发掘日常生活中能够映射到专业知识学习的事例,用常见的案例来阐述枯燥的专业原理,使教和学成为有趣的探讨,也给学生理解专业知识打下深刻的烙印.诚然,软件工程在不断地发展,内容也不断更新,还有更多、更好的生活案例有待发掘,期待同仁们探索并分享,以改进专业课程的教学效果,使更多的学习者受益.

参考文献:

〔1〕教育部高等学校计算机类专业教学指导委员会,全国高等学校计算机教育研究会.培养计算机类专业学生解决负责工程问题的能力[M].北京:清华大学出版社,2018.140-149.

〔2〕张海藩,牟永敏.软件工程导论(第6版)[M].北京:清华大学出版社,2013.8.

〔3〕柏松.中文版Dreamweaver网页设计[M].上海:上海科学普及出版社,2009.9.

〔4〕狄国强,杨小平,杜宾.软件工程实验[M].北京:清华大学出版社,北京交通大学出版社,2008.2.

〔5〕狄国强.软件工程实践教学探讨.2007年度全国高校软件工程专业教育年会论文集[M].北京:高等教育出版社,2008.4.

〔6〕狄国强.移动互连网的远程教育支持服务[J].教育信息化,2005(06):70-71.

〔7〕万常选,刘喜平,廖国琼,吴京慧,刘爱红.数据库系统原理课程的翻转课堂教学模式探索[J].计算机教育,2015(20):53-57+63.

猜你喜欢

生活案例软件工程教学改革
结合生活案例提高道德认知的研究
依托工作室的软件工程实践教学研究
基于工程教育认证的《软件工程》课程教学质量建设研究 
关于如何创新和完善计算机软件工程管理的探讨
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
以职业技能竞赛为导向的高职单片机实践教学改革研究
微课时代高等数学教学改革的实践与探索
高中化学新课教学中生活案例的导入
探析数学生活化教学的有效手段