程序设计教学中如何应用软件工程学
- 格式:pdf
- 大小:1.65 MB
- 文档页数:3
大学一年级软件工程课教案软件工程基础与软件开发方法论【大学一年级软件工程课教案】【软件工程基础与软件开发方法论】一、引言在当今信息时代,软件工程作为一门重要的学科,对于培养学生的创新能力和解决实际问题的能力具有重要意义。
本教案旨在帮助大学一年级软件工程课的学生全面了解软件工程基础与软件开发方法论的相关概念、原理和方法。
二、课程目标1. 理解软件工程的基本概念和发展历程;2. 掌握软件需求分析和规格说明的方法和技巧;3. 学习软件设计与架构的原则和实践;4. 熟悉软件测试和质量保证的方法和要点;5. 了解软件项目管理和团队合作的基本知识。
三、教学内容本课程将围绕以下几个主要内容进行教学:3.1 软件工程概述3.1.1 软件工程的定义及重要性3.1.2 软件工程的发展历程3.1.3 软件工程的相关概念和术语3.2 软件需求工程3.2.1 需求获取与分析的方法3.2.2 需求规格说明的技巧和规范要求3.2.3 需求验证和确认的方法3.3 软件设计与架构3.3.1 软件设计基本原则3.3.2 软件设计模式的应用3.3.3 软件架构的概念和分类3.4 软件测试与质量保证3.4.1 软件测试的基本方法和策略3.4.2 测试用例设计和执行技巧3.4.3 质量保证与缺陷管理3.5 软件项目管理与团队合作3.5.1 软件项目管理的基本知识和流程3.5.2 团队协作与沟通技巧3.5.3 敏捷开发方法与实践四、教学方法4.1 授课法本课程将采用讲授理论知识的方式,重点讲解软件工程的基本概念、原理和方法。
教师将通过案例分析、实例讲解等方式,帮助学生更好地理解和应用所学的知识。
4.2 实践法在理论教学的基础上,通过编程实践、软件开发项目等实际操作,让学生亲自参与软件工程的各个环节,提升其实际操作能力和团队合作意识。
4.3 讨论与互动教师将鼓励学生在课堂上积极参与讨论,提出问题,并与其他同学进行互动。
通过案例分析和小组讨论,激发学生的思维能力和创新意识。
软件工程课程设计c语言一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和软件工程的基本原理,培养学生运用C语言进行程序设计和软件开发的能力,培养学生的团队协作能力和创新精神。
具体来说,知识目标包括:掌握C语言的基本语法、数据结构、算法和软件工程的基本原理;了解C语言在软件开发中的应用和优势。
技能目标包括:能够使用C语言进行程序设计和软件开发;具备一定的软件工程实践能力,如编码规范、代码重构和版本控制。
情感态度价值观目标包括:培养学生的团队协作意识,使学生能够在团队中发挥自己的作用;培养学生对软件工程的热爱和敬业精神,提高学生对软件行业的认同感。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和软件工程的基本原理。
具体安排如下:1.C语言的基本语法:包括变量、数据类型、运算符、表达式、语句等基本概念和用法。
2.数据结构:包括数组、链表、栈、队列、树等基本数据结构及其应用。
3.算法:包括排序算法、查找算法、递归算法等基本算法及其实现。
4.软件工程的基本原理:包括软件开发流程、需求分析、设计、编码、测试和维护等基本环节。
三、教学方法为了达到本课程的教学目标,我们将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过教师的讲解,使学生掌握C语言的基本语法、数据结构、算法和软件工程的基本原理。
2.讨论法:通过小组讨论,培养学生对软件工程的思考和分析能力,提高学生的团队协作能力。
3.案例分析法:通过分析实际案例,使学生了解C语言在软件开发中的应用和优势,培养学生运用C语言解决实际问题的能力。
4.实验法:通过上机实验,使学生掌握C语言编程的基本技巧,提高学生的动手能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C程序设计语言》或《软件工程》等权威教材,为学生提供系统的理论知识。
2.参考书:提供一些与C语言和软件工程相关的参考书籍,丰富学生的知识体系。
《C语言程序设计》的教学探讨李振涛1)(石家庄铁路工程职业技术学院计算机系1)石家庄050041摘要:C语言是一门功能强大、应用广泛的程序设计语言,但由于其数据类型繁多、结构复杂、运用灵活多变,而成为难学难教的语言,传统教学模式很难适应目前思维开阔的学生。
本文探讨了通过改变教学方法与考试模式、培养学生学习兴趣、激发学生学习的潜在动力、课上课下两条线、实践教学与多媒体课件相结合、学生自主学习和教师适当协助相结合,来提高教学效果。
关键词:C语言教学质量教学模式教学改革一、前言《C语言程序设计》以其功能丰富、表达能力强、目标程序效率高、可移植性好等特点,深受计算机程序设计人员的喜爱和依赖。
另外,全国计算机等级考试、全国计算机应用技术证书考试(NIT)和全国各地区组织的大学生计算机统一考试都将C 语言列为必考范围。
因此目前许多大学理工科院校在低年级开设了《C语言程序设计》,作为学习计算机语言知识或作为其它基础课(如《数据结构》,《面向对象程序设计C++》等课程)的先修课。
C语言作为培养大学生计算机技能至关重要的一门计算机语言,其难度也是相当大的,经常听学生反映该语言难学、难懂、太抽象。
对以往学习过C语言的学生进行软件编程测试,结果也表现出学生编程能力、调试能力较差,甚至影响到后续课程的学习问题。
如何提高这门课程的教学质量和教学效果,在有限的时间内使C语言学习化难为易,把抽象的东西变成具体的,笔者结合近几年C语言教学的经验,尝试了一些新的教学方法,收到了良好的教学效果。
二、明确教学目标,恰当把握教材内容,合理分配教学课时教学目标是期望学生在完成学习任务后达到的程度,是预期的教学效果,是组织、设计、实施和评价教学的基本出发点。
教学目标可分为长期目标和近期目标。
长期目标被称为教育目标,如C语言课程结束后达到什么样的编程能力、为后继课程打下什么样的基础等等,这些无法在具体教学中一次性实现,而是长期努力的方向。
近期目标被称为教学目标,这一目标,主要确定一节课教什么内容,通过哪些活动方式来学习等。
软件工程技术在系统软件开发过程的应用研究河南省郑州市 450000摘要:随着我国社会的发展,我国已经逐渐进入了信息化的时代,所以计算机的运用范围也越来越广,并且在互联网和计算机普及的情况下,人们的日常生活也越来越丰富,社会各个领域的生产也往智能化的方向发展。
而对于计算系统软件开发来说,这是一项逻辑性和系统性都极强的工作,所以系统软件开发人员一定要具有足够的专业技术经验和专业的知识储备。
而在计算机系统软件开发的过程中,软件工程技术是不可缺少的开发工具。
因此,该文就计算机系统软件开发中软件工程技术的运用进行研究,以此来促进软件研发更加合理、更加科学,进而对计算机运行的实际需求更好地予以满足。
关键词:软件工程技术;系统软件开发;应用前言互联网是目前全球技术走向的主要方向,互联网技术的应用范围正在不断拓展,而对系统软件开发工作来说,更是促进互联网技术进一步发展的一项研究工作。
在系统软件开发过程中,为了保证系统开发的综合质量和实际效率可以优先使用软件工程技术。
软件工程技术是应用计算机科学,数学逻辑,学管理学的原理,对软件开发过程加以规范化。
有效完成现有资源的规划,提升软件开发质量。
从目前对软件工程技术的研究来看,其主要应用方向是将软件开发过程变得更加规范化系统化,从而减少软件系统无法运行的风险。
所以说如何将软件工程技术应用于系统,软件开发是保证开发质量的重要工作原理和技术解决方案。
1系统软件开发基本现状1.1系统软件开发现状随着当前计算机技术的快速发展,系统软件的开发,技术水平也在不断提高,相对于传统技术开发方向系统开发已经进入了新的发展阶段,开发技术水平正在不断提高。
在系统开发传统技术设计中,首先需要对系统软件进行建模,建模完成后在按照软件功能需求。
从软件开发基本结构来说,既是高层次特征,概念至低层次概念的映射过程,是软件设计由高至低的处理转移包括人力资源,技术应用等多个领域。
初步模型是软件设计的基础模型,对软件系统进行设计开发在这一过程中传统开发方式较为复杂,开发周期较长,维护相对困难,这些问题都将导致系统软件开发存在诸多限制因素。
软件项目与典型程序在程序设计类课程中的应用研究摘要:许多高校的计算机和某些非计算机专业都开设了程序设计类课程,这类课程知识繁杂、抽象。
传统的教学模式,学生会感觉枯燥难学,积极性不高。
多年来,笔者对软件项目与典型程序在此类课程中的应用进行了研究,效果良好。
关键词:典型程序;软件项目;程序设计中图分类号:g642许多高校的计算机和一些非计算机类专业都开设了程序设计类课程,这类课程理论性、操作性、应用性都很强,并且知识繁杂,严谨抽象,较难掌握。
比如:visual basic程序设计课程,首章就是抽象难懂的属性、事件、方法等概念,然后就是更加枯燥抽象的数据类型、变量、语句、过程等语言基础知识。
这些又都是vb程序设计的基础,必须掌握。
如果过分追求知识体系的系统性,以概念、命令的讲解为重点,偏重理论灌输,学生就会感觉枯燥难学,失去兴趣,也不利于应用型、创新型人才的培养。
因此,笔者采用了软件项目与典型程序相结合的教学方法,深受学生欢迎,也收到了良好的教学效果。
软件项目与典型程序是教师采用软件开发项目和一些典型程序来主导学生主动学习的一种学习方法。
教师精心选择、设计软件项目和一些典型程序,在一定程度上打破原有的课程知识体系,重新组织知识内容,将抽象的理论知识和软件操作融入到具象的软件项目开发与典型程序设计中。
教师不再接部就班地直接向学生灌输知识,而是以学生为主体,主导学生去直接设计程序和软件项目。
通过引导学生去设计程序来探究新知识,通过一个实际软件项目的开发来整合课程知识,掌握软件工程和项目管理的思想。
软件项目开发是理论与实践的结合体,加大了课程实训力度,增强了学生实践能力。
软件项目开发与典型程序设计方法,将理论与实践相结合,在知识的运用中学习知识,符合认知规律,有利于知识体系的建构,充分培养了学生的应用能力和创新能力。
下面,结合实践,对该方法的应用进行有益的探讨。
1 软件项目的应用把软件项目开发应用于程序设计类课程的教学中,围绕真实的项目来组织教学,创造与实际工作环境相似的学习环境,有效提高学生的学习积极性,培养学生的职业素养和能力。
软件工程与程序设计的关系1. 引言软件工程和程序设计是现代计算机科学领域中两个密切相关且互相依存的概念。
作为计算机软件开发的重要组成部分,它们共同为软件的开发、实现和维护提供了必要的理论和实践基础。
本文将从多个角度探讨软件工程和程序设计之间的关系。
2. 软件工程的定义与概述软件工程是一门关注如何系统地开发和维护软件的学科,旨在提高软件的质量、效率和可靠性。
它不仅仅是生产和设计软件,也包括软件项目管理、软件测试、质量控制和维护等方面的内容。
3. 程序设计的定义与概述程序设计是一项创造性的过程,旨在通过编写代码来解决问题。
简单来说,程序设计就是将问题转化成计算机编程语言能够理解和执行的形式。
4. 软件工程与程序设计的关系4.1. 软件工程是程序设计的实践指导软件工程提供了一套规范和指导,帮助程序员在开发软件时更加高效地进行程序设计。
软件工程强调代码的可维护性、可重用性和可扩展性等方面,而这些都是优秀程序设计的重要特征。
4.2. 程序设计是软件工程的核心技术软件工程的目标是开发高质量的软件,而程序设计是实现这一目标的关键技术。
合理的程序设计可以保证软件的正确性、高效性和可靠性,是软件工程的核心环节。
4.3. 程序设计为软件工程提供实施基础软件工程强调的各种开发方法、工具和框架都依赖于程序设计的基础。
程序设计提供了实现软件工程理念和技术的具体手段,为软件工程的实施提供了基础。
5. 软件工程与程序设计的互补性软件工程和程序设计的关系是相互依存的,它们互为补充,共同推动软件开发的进步。
软件工程提供了程序设计的指导和规范,而程序设计为软件工程提供了实现的手段。
6. 结论软件工程和程序设计是紧密关联的概念,在现代软件开发中扮演着重要角色。
软件工程提供了对软件开发的整体指导和规范,而程序设计则是实现这些规范的关键技术。
只有将两者结合起来,才能开发出高质量、可维护和可靠的软件产品。
因此,软件工程和程序设计不仅在理论上相辅相成,而且在实践中也密不可分。
计算机应用基础学习软件工程的基本原则与方法软件工程是一门研究如何制定、设计、构建和维护有效、可靠和高质量的软件系统的学科。
计算机应用基础课程的学习是软件工程学习的基石,通过学习软件工程的基本原则与方法,可以为今后的软件开发和项目管理打下坚实的基础。
本文将探讨计算机应用基础学习软件工程的基本原则与方法,并提供一些学习软件工程的建议。
1. 明确软件工程的基本原则- 程序的正确性:软件工程的首要目标是构建正确的软件系统。
学习者应注重理解和掌握程序设计的基本原则,如模块化、抽象化、封装等,以确保编写出功能正确、可靠的程序。
- 模块化设计:将软件系统分解为多个相互关联但相对独立的模块,以便于开发和维护。
学习者应学会进行模块划分和模块间的接口设计。
- 可重用性:鼓励学习者在软件开发过程中充分利用现有的软件模块和工具,提高开发效率和质量。
2. 掌握软件工程的基本方法- 需求分析:在软件开发的初期阶段,需要进行需求的收集和分析,明确软件系统的功能和性能需求。
学习者应了解和学习需求分析的基本方法和技巧,如面谈、调研、文档分析等。
- 系统设计:在需求分析的基础上,进行系统的整体设计和模块设计。
学习者应学会使用UML等建模工具,进行系统的结构设计和行为设计。
- 编码与测试:根据设计文档,进行程序的编码和单元测试。
学习者应注重编码规范和代码的可读性,并学习测试用例的设计和执行方法。
- 验收与维护:在软件开发完成后,进行系统的验收测试,并进行系统维护。
学习者应了解软件开发过程中的整体流程和掌握维护技术。
3. 提供一些建议和实践方法- 展开实验课程:计算机应用基础课程通常会有实验环节,学习者可以充分利用实验课程来实践软件工程的基本原则与方法。
尝试设计小型软件系统,通过实践来理解软件开发的流程和技巧。
- 参与开源项目:学习者可以积极参与开源软件项目,通过与其他开发者合作,学习软件工程的实践经验。
贡献自己的代码和参与讨论可以提高自己的软件开发能力。
软件工程课程教学大纲(SoftwareEngineering)学时数:32其中:实验学时:6课外学时:0学分数:2适用专业:计算机科学与技术一、课程的性质、目的与任务《软件工程》是计算机科学与技术专业教学计划中一门综合性和实践性很强的核心课程,主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。
根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。
二、课程教学的基本要求(-)基本概念和基本知识:软件与软件工程,生存周期与软件开发模式,结构化分析、设计与编码,面向对象分析、设计与编码,软件的评审、测试与维护,项目计划与项目管理。
(二)基本技能:能用软件工程的方法参与软件项目的分析、设计、实现和维护重点:系统分析、系统设计、系统实现、系统维护难点:需求分析、软件测试课程的教学要求在每一章教学内容之后给出,大体上分为三个层次:了解、理解和掌握。
了解即能正确判别有关概念和方法:理解是能正确表达有关概念和方法的含义;掌握是在理解的基础上加以灵活应用三、课程的教学内容、重点和难点第一章概论一、软件(一)软件的发展;(二)软件的定义;(三)软件的特点、软件的种类。
二、软件工程的概念(一)软件危机与软件工程的定义;(二)软件工程的目标;(三)软件工程的原则。
三、软件生存周期与软件开发模型(一)瀑布模型、原型模型、螺旋模型、基于四代技术模型、面向对象与组件模型、混合模型。
教学要求:软件和软件工程的基本概念,软件生命周期及软件开发的各个模型重点:软件生存周期与软件开发模型第二章可行性分析一、可行性研究的任务二、可行性研究的步骤三、系统流程图四、成本/效益分析第三章需求分析一、需求分析的任务与步骤(一)需求分析的任务;(二)需求分析的步骤;(三)需求分析的原则。
软件工程的设计方法与应用一、引言软件工程是指应用计算机科学中的原则、方法和工具来开发、维护和管理软件。
软件工程的实践中,设计是其中关键的一个环节。
设计方法与应用则是软件工程中不可忽视的一部分。
本文将详细介绍软件工程的设计方法与应用,帮助读者了解设计在软件工程中的作用。
二、设计方法软件设计过程就是将问题映射到计算机世界中的过程,包括静态设计和动态设计两个方面。
下面将分别介绍这两个方面的设计方法。
1.静态设计方法静态设计方法是指软件结构的设计,包括模块划分、接口定义、数据结构设计等。
其中最重要的是模块划分,本文以下详细介绍模块划分的过程。
模块划分是将整个系统划分为多个模块,每个模块负责实现一个或多个功能,模块之间通过接口进行交互。
模块划分时要遵循几个原则,包括高内聚、低耦合、模块独立等。
高内聚指模块内部的元素尽可能密切相关,低耦合指模块之间的依赖关系尽可能少,模块独立则指每个模块都是相对独立的,可以单独编译、测试、维护和升级。
2.动态设计方法动态设计方法是指软件行为的设计,包括流程设计、状态转换设计、调度算法设计等。
下面重点介绍流程设计。
流程设计是指将一个系统功能划分成多个流程,每个流程负责实现一部分功能。
流程设计时要遵循几个原则,包括流程的粒度要适中、流程内部要简化、流程之间要明确划分等。
流程设计的好坏会直接影响软件的性能和可靠性。
三、设计应用软件设计并不是一个孤立的过程,它需要与其他环节紧密配合,才能实现高效优秀的软件。
下面将从需求分析、编码、测试、维护等方面介绍软件设计的应用。
1.需求分析从需求分析开始就要考虑到设计。
需求分析可以为设计提供依据和指导,同时也可以反过来检验需求的合理性和完整性。
同时,需求分析中识别出的软件特性也为后续设计提供了方向和灵感。
2.编码设计结果必须要实现,编码是将设计转化为程序代码的过程。
如果设计不合理,编码很难保证其正确和高效。
编码时,程序员可以依据设计文档实现代码,避免在实现过程中脱离设计,减少代码出错的可能性。
信息技术课
tougao4@
31
MAR 2019 NO.05
泛到这节课学完只是学会了几个电脑操作。
这种看似热闹非凡实则人工造势的“优质课”,其实是低级的、乏力的、经不起考验的,因为缺少了思维培养,特别是计算思维适当而必要的融入。
那么如何把握这个度呢?这正是我接下来要说的问题。
本次新课标,是一次新的开局,是我们学科华丽逆袭、证明自己
的一次机会,是信息技术课从渐渐庸俗化、套路化、乏味化,重回精致化、高端化、趣味化的一场翻身仗。
计算思维作为一项核心素养,应该起到指引方向、贯穿始终的核心作用。
我想,这对我们信息技术教师,特别是一线教师,提出了更高的要求。
如果我们没有深度思维,如果我们没有算法思想,那怎么去启迪
思想,振刷精神?势必很难适应新时代的课堂。
所以,当下机遇与挑战共存,我们需要加强学习、深入思考,早做储备。
这样,才能在愈多纷繁的新概念中保持清醒,才能在课程改革新高度下游刃有余,也才能在科技创新、立德树人的大环境背景下贡献自己的力量。
程序设计教学中如何应用软件工程学
张渤 山东省桓台第一中学
程序设计教学(编程教育)已经成为信息技术教学的核心内容之一。
在以信息经济、低碳经济等经济形态为主导的当代社会背景下,从人的全面发展出发,人才的培养核心是核心素养。
程序设计教学成为信息技术学科核心素养——计算思维培养的重要途径。
而在中学程序设计教学中,还存在一些不足甚至错误做法,严重影响着信息技术教学效果,无法达到预期的育人目标。
无论是从宏观课程设计,还是从微观教学内容来看,借助软件工程思维有利于摆脱纯粹的理论教学,重构课堂,培养学生统筹规划、综合设计、分析推理等关键能力。
软件工程学是一门研究用工程化方法构建和维护有效、实用、高质量的软件的学科。
它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
软件工程学借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。
其中,数学用于构建模型,计算机科学用于设计算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
软件工程学定义的软件开发过程,通常包括需求分析、概要设计、详细设计、编码、测试、交付维护等阶段。
下面以一个简单的程序案例为例,详细分析软件工程思维与传统程序教学的差异。
案例背景:学校举行一个“1分钟投篮班级对抗赛”,每班参赛选手5人,每人1次投篮机会且限时1分钟,共有10个班级参加比赛。
比赛成绩以班级所有选手投中总数进行计算。
请设计一个小程序,实现成绩统计和排序工作。
● 软件工程思维更关注需求分析和概要设计
传统的教学方式,教师往往将上述案例问题简化为“每组5个数求和,10项求和结果排序”,然后就直接进入程序语法教学环节了。
而对于软件工程思维来说,需求分析要解决做什么和怎么做的问题。
学生要自己分析这个案例,找出解决方案,得出设计思路。
通过分析,学生可以发现需要设计哪些功能,如输入、求和、排序等。
然后,要明晰这些功能可能涉及的编程语言知识。
第一,通过具体问题的分析,
信息技术课
tougao4@
32
中国信息技术教育
学生发现所学内容能够解决实际问题,是有实际意义的,从而避免了传统教学中用编程解决纯粹的数学问题的情况。
需求分析能够激发学生学习兴趣,使得程序设计不再是单纯的语法练习。
从核心素养角度来看,有利于培养学生开发或运用技术来解决问题的能力(技术素养),引导学生研究问题,并找到创新、有效的问题解决之道(创造性)。
前期的需求分析可以有效解决程序设计的盲目性和“无从下手”之感,便于学生对整个程序的理解,其实也能够为后续教学节约时间。
也许,这个案例过于简单,尚不能体现需求分析的重要性。
若将案例扩展为运动会成绩统计程序这样的大案例,则会超出学生的设计能力,反而不利于学生学习。
在小案例学习过程中,可以引导学生类比、类推,达到举一反三的目的,彰显小案例的典型性和代表性特点。
第二,概要设计是一名设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程。
简单来说,就是将软件模块、功能、层次关系用视觉化的方式展示出来。
一般情况下,概要设计不需要使用编程语言,常见如流程图。
对应传统教学,流程图设计往往只是算法解析描述的工具,很少用来展示整个程序的功能设计。
如果引导学生运用流程图进行功能的模块化划分,有助于培养模块化程序设计思维。
通过概要设计可以进一步明确程
序的模块构成和功能,便于确立各部分的实现方法(算法选择)。
在设计环节还要决定程序设计使用的变量名称、类型甚至取值范围等细节问题。
为便于后续阅读程序,变量命名不仅仅要“见名知意”,还要系统规划变量名称的分类以及大小写规范等,这能够锻炼学生良好的规范表达意识。
这与平时教学中变量名使用无意义的单字母等对学生习惯的影响有很大不同。
● 软件工程思维更突出编码的模块化设计和软件测试
软件工程对程序教学的一个很大的意义是形成良好的程序设计的代码文化与素养,形成日渐深厚的计算思维。
其中,程序的模块化设计是良好的程序设计过程技能,而编码测试则是良好性工程人员的代码文化素养。
第一,编码的模块化设计,是指在进行程序设计时按照功能将一个复杂程序划分为若干程序模块,每个程序模块完成一个确定的功能,模块之间通过必要的联系和互相协作完成整个功能的程序设计方法。
与通常的简单程序设计要求不同之处在于,模块化设计主要体现在两个方面,一是程序设计尽量使用函数、子过程、子程序,少使用全局变量;另一方面,尽量将代码按照模块划分并做好注释。
以“1分钟投篮班级对抗赛”为例,可以将输入、求和、排序分作三个小部分。
与平时相比,代码书写不
一定减少,但会让编程作者和阅读者都能清晰了解整个程序的架构,有利于错误排查和分工协作。
如果遇到诸如“运动会成绩统计”这样有一定复杂度的程序设计,通过调用某个功能模块(如函数、子程序等),则能较好地解决不同比赛项目的人员分组、成绩输入、排序打印等问题。
而没有模块化的程序设计,可能要重复设计相应功能,存在大量的重复代码,会降低运行效率,且在遇到问题时不容易检查。
第二,软件测试是对编码程序的正确性、效率、容错能力等的测试。
程序设计很可能遇到代码错误甚至算法错误,在教学中应该注意培养学生观察分析程序运行结果、错误提示的能力,对不同的数据结构、算法选择进行优劣评估等。
在常规教学过程中,我们多数使用验证性实验进行教学。
如前面投篮的案例,程序设计完成后,一般会要求学生输入3到5组的“正常”数据进行验证。
验证仅仅限于证明语法结构可能没有错误。
这种知识巩固式的教学模式,使得不少学生养成一看到出现预计结果就终止实验的习惯,其实是不利于培养学生的程序测试意识的。
参考软件工程思维中的程序测试,我们在要求学生进行数据验证时,一方面要提高验证的数据量和运行次数,另一方面要尽量使用“边界值”或“异常值”进行验证。
仍以投篮案例为例,如果程序设计时限定
信息技术课
tougao4@
33
MAR 2019 NO.05
了数组(或列表)上下限值,则在验证时要在上下限的边界选择数据进行验证。
例如,根据生活实际经验,我们设置了1分钟投篮的上限为100次,那就可以使用三位数(如127)作为测试数据验证我们的设定是否有效。
除此之外,验证数据还应包含负数、小数等,以避免程序运行时错误输入带来的错误结果。
从软件工程视角来看,程序设计要关注编程安全问题,如分母为0、超出数组界限、变量取值超出范围等情况。
而在程序设计教学中,这些也恰恰是不易被发现的“易错点”。
可见,测试数据的作用是非常大的,设计有效的检验数据,既能检验程序设计的规范性和算法的合理性,同时能够让学生强化测试意识,避免测试的随意性,为以后解决复杂的具体问
题奠定基础。
通过引入符合实际情况的测试数据,可以有效检验程序的健壮性。
而要提高健壮性,就要进行容错设计,从而使得程序设计从简单功能向复杂功能过渡,拓展学生的思维强度和广度,激发学生的学习兴趣。
在上述案例中,负数或小数作为无效输入,如何解决因此类输入所导致的程序结果错误呢?学生很容易想到,在输入错误时进行提示并要求重新输入。
由此,再讲解相关程序语法,学生就更容易接受。
同样,在大量数据输入时,不仅仅会出现错误输入,还可能会出现漏掉数据等情况。
这就要求我们不仅仅要检验输入数据的合法性,还要跟踪数据的数量。
必要的时候,还可以在程序关键步骤设置“断
点”,以随时跟踪数据的变化。
遇到错误不容易判断时,可以灵活运用数据跟踪,更容易发现问题根源。
根据现实中可能遇到的问题,学生思考解决方案的过程中,不知不觉地拓展了程序功能,很多知识的学习也变得顺理成章。
综上所述,我们可以看出,在程序设计教学中运用软件工程思维,并不是只有复杂程序才需要,也不是只有专业人士才可以做到的事情。
在任何程序设计中,都可以渗透软件工程思维。
而这样的思维方式,不仅仅有利于加深学生对程序设计的理解,强化应用技术解决实际问题的能力,也将大大提升我们的程序教学效率。
我们相信,程序设计对于学生来讲不再是枯燥乏味的学习体验。