当前位置: 简表范文网 > 专题范文 > 公文范文 >

程序设计教学中如何应用软件工程学

| 来源:网友投稿

程序设计教学(编程教育)已经成为信息技术教学的核心内容之一。在以信息经济、低碳经济等经济形态为主导的当代社会背景下,从人的全面发展出发,人才的培养核心是核心素养。程序设计教学成为信息技术学科核心素养——计算思维培养的重要途径。而在中学程序设计教学中,还存在一些不足甚至错误做法,严重影响着信息技术教学效果,无法达到预期的育人目标。无论是从宏观课程设计,还是从微观教学内容来看,借助软件工程思维有利于摆脱纯粹的理论教学,重构课堂,培养学生统筹规划、综合设计、分析推理等关键能力。

软件工程学是一门研究用工程化方法构建和维护有效、实用、高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。软件工程学借鉴传统工程的原则、方法,以提高质量、降低成本和改進算法。其中,数学用于构建模型,计算机科学用于设计算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。软件工程学定义的软件开发过程,通常包括需求分析、概要设计、详细设计、编码、测试、交付维护等阶段。

下面以一个简单的程序案例为例,详细分析软件工程思维与传统程序教学的差异。案例背景:学校举行一个“1分钟投篮班级对抗赛”,每班参赛选手5人,每人1次投篮机会且限时1分钟,共有10个班级参加比赛。比赛成绩以班级所有选手投中总数进行计算。请设计一个小程序,实现成绩统计和排序工作。

软件工程思维更关注需求分析和概要设计

传统的教学方式,教师往往将上述案例问题简化为“每组5个数求和,10项求和结果排序”,然后就直接进入程序语法教学环节了。而对于软件工程思维来说,需求分析要解决做什么和怎么做的问题。学生要自己分析这个案例,找出解决方案,得出设计思路。通过分析,学生可以发现需要设计哪些功能,如输入、求和、排序等。然后,要明晰这些功能可能涉及的编程语言知识。

第一,通过具体问题的分析,学生发现所学内容能够解决实际问题,是有实际意义的,从而避免了传统教学中用编程解决纯粹的数学问题的情况。需求分析能够激发学生学习兴趣,使得程序设计不再是单纯的语法练习。从核心素养角度来看,有利于培养学生开发或运用技术来解决问题的能力(技术素养),引导学生研究问题,并找到创新、有效的问题解决之道(创造性)。前期的需求分析可以有效解决程序设计的盲目性和“无从下手”之感,便于学生对整个程序的理解,其实也能够为后续教学节约时间。也许,这个案例过于简单,尚不能体现需求分析的重要性。若将案例扩展为运动会成绩统计程序这样的大案例,则会超出学生的设计能力,反而不利于学生学习。在小案例学习过程中,可以引导学生类比、类推,达到举一反三的目的,彰显小案例的典型性和代表性特点。

第二,概要设计是一名设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程。简单来说,就是将软件模块、功能、层次关系用视觉化的方式展示出来。一般情况下,概要设计不需要使用编程语言,常见如流程图。对应传统教学,流程图设计往往只是算法解析描述的工具,很少用来展示整个程序的功能设计。如果引导学生运用流程图进行功能的模块化划分,有助于培养模块化程序设计思维。通过概要设计可以进一步明确程序的模块构成和功能,便于确立各部分的实现方法(算法选择)。在设计环节还要决定程序设计使用的变量名称、类型甚至取值范围等细节问题。为便于后续阅读程序,变量命名不仅仅要“见名知意”,还要系统规划变量名称的分类以及大小写规范等,这能够锻炼学生良好的规范表达意识。这与平时教学中变量名使用无意义的单字母等对学生习惯的影响有很大不同。

软件工程思维更突出编码的模块化设计和软件测试

软件工程对程序教学的一个很大的意义是形成良好的程序设计的代码文化与素养,形成日渐深厚的计算思维。其中,程序的模块化设计是良好的程序设计过程技能,而编码测试则是良好性工程人员的代码文化素养。

第一,编码的模块化设计,是指在进行程序设计时按照功能将一个复杂程序划分为若干程序模块,每个程序模块完成一个确定的功能,模块之间通过必要的联系和互相协作完成整个功能的程序设计方法。与通常的简单程序设计要求不同之处在于,模块化设计主要体现在两个方面,一是程序设计尽量使用函数、子过程、子程序,少使用全局变量;另一方面,尽量将代码按照模块划分并做好注释。

以“1分钟投篮班级对抗赛”为例,可以将输入、求和、排序分作三个小部分。与平时相比,代码书写不一定减少,但会让编程作者和阅读者都能清晰了解整个程序的架构,有利于错误排查和分工协作。如果遇到诸如“运动会成绩统计”这样有一定复杂度的程序设计,通过调用某个功能模块(如函数、子程序等),则能较好地解决不同比赛项目的人员分组、成绩输入、排序打印等问题。而没有模块化的程序设计,可能要重复设计相应功能,存在大量的重复代码,会降低运行效率,且在遇到问题时不容易检查。

第二,软件测试是对编码程序的正确性、效率、容错能力等的测试。程序设计很可能遇到代码错误甚至算法错误,在教学中应该注意培养学生观察分析程序运行结果、错误提示的能力,对不同的数据结构、算法选择进行优劣评估等。在常规教学过程中,我们多数使用验证性实验进行教学。

如前面投篮的案例,程序设计完成后,一般会要求学生输入3到5组的“正常”数据进行验证。验证仅仅限于证明语法结构可能没有错误。这种知识巩固式的教学模式,使得不少学生养成一看到出现预计结果就终止实验的习惯,其实是不利于培养学生的程序测试意识的。参考软件工程思维中的程序测试,我们在要求学生进行数据验证时,一方面要提高验证的数据量和运行次数,另一方面要尽量使用“边界值”或“异常值”进行验证。仍以投篮案例为例,如果程序设计时限定了数组(或列表)上下限值,则在验证时要在上下限的边界选择数据进行验证。例如,根据生活实际经验,我们设置了1分钟投篮的上限为100次,那就可以使用三位数(如127)作为测试数据验证我们的设定是否有效。除此之外,验证数据还应包含负数、小数等,以避免程序运行时错误输入带来的错误结果。从软件工程视角来看,程序设计要关注编程安全问题,如分母为0、超出数组界限、变量取值超出范围等情况。而在程序设计教学中,这些也恰恰是不易被发现的“易错点”。可见,测试数据的作用是非常大的,设计有效的检验数据,既能检验程序设计的规范性和算法的合理性,同时能够让学生强化测试意识,避免测试的随意性,为以后解决复杂的具体问题奠定基础。

通过引入符合实际情况的测试数据,可以有效检验程序的健壮性。而要提高健壮性,就要进行容错设计,从而使得程序设计从简单功能向复杂功能过渡,拓展学生的思维强度和广度,激发学生的学习兴趣。在上述案例中,负数或小数作为无效输入,如何解决因此类输入所导致的程序结果错误呢?学生很容易想到,在输入错误时进行提示并要求重新输入。由此,再讲解相关程序语法,学生就更容易接受。同样,在大量数据输入时,不仅仅会出现错误输入,还可能会出现漏掉数据等情况。这就要求我们不仅仅要检验输入数据的合法性,还要跟踪数据的数量。必要的时候,还可以在程序关键步骤设置“断点”,以随时跟踪数据的变化。遇到错误不容易判断时,可以灵活运用数据跟踪,更容易发现问题根源。根据现实中可能遇到的问题,学生思考解决方案的过程中,不知不觉地拓展了程序功能,很多知识的学习也变得顺理成章。

综上所述,我们可以看出,在程序设计教学中运用软件工程思维,并不是只有复杂程序才需要,也不是只有专业人士才可以做到的事情。在任何程序设计中,都可以渗透软件工程思维。而这样的思维方式,不仅仅有利于加深学生对程序设计的理解,强化应用技术解决实际问题的能力,也将大大提升我们的程序教学效率。我们相信,程序设计对于学生来讲不再是枯燥乏味的学习体验。

苍山点题

如果我们说一线教师的专业水平与学术水准在新一轮课标下已初见端倪并不准确,如果说已经硕果累累也为时过早。怎样评价才合适呢?透过本期解码推荐的这两篇重磅文章,我们不妨去用心感受这“新星闪烁”般的思维光芒。

第一篇文章,一句泛“计算思维”时代,把我们对计算思维的认识的局限一下就打开了。首先是寻根溯源,提出计算思维是什么、要培养什么的问题。内容不再复述,只提那一个视频折半浏览找水杯的例子,就见其精彩绝伦。然后是高屋建瓴,问:计算思维就是算法吗?就是编程吗?尤其是,以实例说明在数据与计算模块之外的模块中也可以深入培养计算思维。例如,信息系统与社会中同样可以培养计算思维;又如,网络基础选修里面的网络安全部分也可以深化培养计算思维。这对我们是一种怎样的启示?

第二篇文章,给我们一种暂时离开计算思维去软件工程学寻找程序教学的深邃。在程序设计教学中如何应用软件工程学呢?软件开发过程包括需求分析、概要设计、详细设计、编码、测试、交付维护等阶段。其中,软件工程思维更关注需求分析和概要设计,软件工程思维更突出编码的模块化设计和软件测试,只这两点就够我们把程序设计教学提高到一个比较专业、比较深邃的境地,这不是一个巨大的惊喜吗?

信息技术教育沧海茫茫,必有新的浪花;信息技术教育天空辽阔,必有新的星辰。我们一起前行、一起探索,藍调解码期待您的浪花与光芒一起造就新的信息技术教育风景。

相关推荐

热门文章

防自然灾害安全教育心得7篇通用【完整版】

本页是最新发布的《防自然灾害安全教育心得7篇通用》的详细范文参考文章,觉得有用就收藏了,为了方便大家的阅读。教育能让更新了观念,改善了思想,了解了当前的社会形式。你在安全教育中一定有意想不到的收获,写一篇安全教育心得回顾一下吧。你是否在找正准备撰写“防自然灾害安全教育心得”,下面小编收集了

小学生寒假安全教育家长心得3篇通用

本页是最新发布的《小学生寒假安全教育家长心得3篇通用》的详细范文参考文章,好的范文应该跟大家分享,这里给大家转摘到。是生命之本,安全是头等财富!我们每个人都应该重视自己安全。写一篇安全心得能让自己在安全教育过后的总结中得到许多的收获。你是否在找正准备撰写“小寒假安全教育家长心得”

2022年70年周年校庆演讲稿最新范本(精选文档)

《70年周年校庆演讲稿最新范文》是一篇好的范文,觉得有用就收藏了,希望大家能有所收获。演讲稿的最终目的是用于讲话,所以,它是有声语言,是书面化的口语。它一方面是把口头语言变为书面语言,即化声音为文字,起到规范文字、有助演讲的作用。下面是小编为大家整理的70年演讲稿最新范文,希望能够帮助到大家!70年

2022年度清明节感怀演讲稿【完整版】

本页是最新发布的《2022清明节感怀演讲稿》的详细范文参考文章,好的范文应该跟大家分享,重新编辑了一下发到。4月4日,是我国的传统节日:清明节,让怀着无比沉重和景仰的心情来缅怀革命,继承革命传统。你知道么,今天小编整理了清明节感怀演讲稿供大家参考,一起来看看吧!清明节感怀演讲稿一

2022教学工作会议演讲稿(全文完整)

《教学工作会议演讲稿》是一篇好的范文,觉得应该跟大家分享,希望大家能有所收获。演讲稿是人们在工作和社会生活中经常使用的一种文体。它可以用来交流思想,感情,表达主张,见解。也可以用来介绍自己的学习,工作情况和经验等等。下面是小编为大家整理的工作会议演讲稿,希望能够帮助到大家!教学工作会议演讲稿1各位:

五四青年节青春演讲稿

《五四青年节青春演讲稿2022》是一篇好的范文,觉得有用就收藏了,重新编辑了一下发到。青年们还要集中进行各种社会志愿和社会实践活动,还有许多地方在青年节期间举行****仪式。五四的核心内容为,进步,民主,科学。以下是小编为大家准备了五四青年节演讲稿2022范本,欢迎参阅。五四青年节青春演讲

2022最新青年担当演讲稿(全文完整)

《最新青年担当演讲稿》是一篇好的范文,感觉很有用处,这里给大家转摘到。沧海,无人愿甘沦平庸,无人愿在茫茫粟漠中归依。青年们,当在光华中,勇披战衣,秉承之责任心,书写高昂之战歌。下面是小编为大家整理的最新青年担当演讲稿,希望能够帮助到大家!最新青年担当演讲稿1敬爱的老师,亲爱的同学:大家好!

2022年度清明节主题学生作文500字合集

《2022清明节主题学生作文500字》是一篇好的范文,觉得应该跟大家分享,这里给大家转摘到。这来之不易的幸福生活是革命用自己的鲜血换来的,作为一名青年志愿者,一定不辜负烈士们的遗愿,让我们踏着烈士们的足迹奋勇向前!下面是小编为大家带来的关于2022主题学生作文500字,希望能对大家

2022年高三毕业典礼演讲稿(精选文档)

最近发表了一篇名为《高三2022年毕业典礼演讲稿》的范文,觉得有用就收藏了,重新整理了一下发到这里。演讲是演讲者与听众、听众与听众的三角信息交流,演讲者不能以传达自己的思想和情感、情绪为满足,他必须能控制住自己与听众、听众与听众情绪的应和与交流。

五四精神演讲稿

本页是最新发布的《2022五四精神演讲稿》的详细范文参考文章,感觉很有用处,这里给大家转摘到。演讲稿也叫演讲词,它是在较为隆重的仪式上和某些公众场合发表的讲话文稿。演讲稿是进行演讲的依据,是对演讲内容和形式的规范和提示,它体现着演讲的目的和手段。以下是小编整理的2022五四演讲稿

学雷锋致英雄演讲稿怎么写(完整)

最近发表了一篇名为《学雷锋致英雄演讲稿怎么写》的范文,觉得应该跟大家分享,这里给大家转摘到。演讲稿特别注重结构清楚,层次简明。在日新月异的现代社会中,在很多情况下需要用到演讲稿,如何写一份恰当的演讲稿呢?下面是小编为大家整理的学致英雄演讲稿怎么写,希望能够帮助到大家!学雷锋致英雄

语文新课程纲要教材解读培训心得3篇通用

本页是最新发布的《语文新课程纲要教材解读培训心得3篇通用》的详细范文参考文章,觉得有用就收藏了,看完如果觉得有帮助请记得(CTRL+D)收藏本页。语文要让了解文章的含义,吸取其中的精华,感悟文章的写法。你知道语文心得的写法?不妨来学习一下如何写语文培训心得。你是否在找正准备撰写“语文新课程