前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的软件工程导论主题范文,仅供参考,欢迎阅读并收藏。

作者简介:周伟(1980-),男,湖北襄阳人,华中师范大学计算机学院,讲师;陈柳(1979-),女,湖北丹江口人,武汉工程大学电气信息学院,讲师。(湖北 武汉 430073)
中图分类号:G642.421 文献标识码:A 文章编号:1007-0079(2013)29-0064-02
一、传统课堂教学法的不足
“软件工程导论”是计算机专业和软件工程专业重要的基础课程之一,也是一门融会其他专业基础课的综合性课程,其地位和作用是由软件工程在软件产业中的重要地位所决定的。它以提高质量,降低成本为目的,将系统化、规范化、可度量的工程化方法应用于软件的开发、运行和维护的过程中。[1,2]软件工程来源于20世纪60年代末期爆发的软件危机,是一门研究开发与维护的普遍原理、原则、方法和技术的工程学科,并与计算机工程、计算机科学、管理(项目管理、质量管理等)、数学、系统工程等学科有着密切的联系。它涉及到软件的需求、设计、实现、测试、维护、配置管理、项目管理、工具与方法、软件过程及软件质量等知识域。
利用传统方法进行“软件工程导论”基础课堂教学,主要是采取“粉笔+黑板”讲授法,辅以挂图、实物演示等,优点是灵活性高,便于教师自由发挥,有利于师生随时交流。但是单纯采用传统方法进行“软件工程导论”这门课教学有以下的不足:首先,“软件工程导论”课程有大量的理论知识,这些知识前后相互关联,上课时需要前后串联,使用传统的教学方法不方便在前后的知识点之间进行切换。[3,4] 其次,在进行“软件工程导论”课程课堂教学时需要使用音频、图像和flash等多媒体信息向学生讲解软件的需求分析、软件设计方法等内容,而这在传统的教学方式下很难实现。
二、使用多媒体技术优化“软件工程导论”课堂教学的方法
1.采用多媒体改变课堂内容的形式,增强学生的学习积极性
“软件工程导论”课程本身的知识是比较枯燥和难懂的,容易让学生在学习中由于疲劳和畏难而减低兴趣。在课堂教学中,采用各种媒体来设立各种直观场景,从而激发学生的学习兴趣是一种有效的手段。如在讲述“软件工程导论”的软件生命周期模型时,单纯说明模型的原理和方法,学生不容易理解和记忆。在感到不能理解和没有直观认识的时候,学生学习的兴趣和课堂的直接吸引力会明显降低。这时多媒体教学就可以凸显其优势,给课堂教学带来生机,达到诱发学生求知欲,激发学生兴趣的目的。
比如在讲解软件测试时,包括黑盒测试和白盒测试曲线两个部分,教师在教学时可以采用在课堂上用测试软件,载入事先准备好的测试用例,当场给学生演示测试过程。经笔者在课堂上实践证明,学生反映良好,效果明显。
2.使用多媒体技术,锻炼学生的主动思考能力和创新意识
培养学生的创新意识是高等教育的重要目标之一,在目前国家提倡的创建创新型社会的的大方向下,学生良好的创新意识是将来成材的重要素质。教师要引导学生增强思维的跳跃性,鼓励学生勤思考,多进行头脑风暴来探讨问题和解决问题。一个小问题、一段动画等都可能成为启发式教学的契机。教师可以在教学中发掘适于提出问题的教学点,利用多媒体使用声像、动画多种形式提出问题,引起学生的兴趣,开展思考和讨论。而且由于多媒体内容的准备工作是在课前,所以在缩短教师课堂上的板书时间,把精力集中于课程内容的讲解上有显著的优势。[6,7]
在传统教学中,在课堂上结合实践教学操作是比较困难的,因为会受到时间、场地、实验效果、演示效果等诸多因素的限制。但利用多媒体就可以非常方便地把预先准备好的演示实验录像用光盘在计算机大屏幕中播放出来,直接演示给学生看,即可避免当堂演示的不足,而且可以多次反复在课堂上使用。另外目前已经有许多学校已经或正在开发“软件工程导论”虚拟实验系统,可以供学生直接在计算机上或通过网络远程操作,通过虚拟环境下的人机互动,让学生自己动手操作,完成一些虚拟实验。这就有利于在课堂内外增加实践部分的内容,对学生提高理论知识学习的兴趣,加深对理论知识的理解,培养基本实践能力都很有帮助。
3.运用多媒体技术和因特网相结合,还可更大程度发挥现代教育技术在“软件工程导论”基础课程教学中的作用
在当前许多高校如清华大学、武汉大学、华中科技大学等学校的网页上有大量关于“软件工程导论”基础课程的教学资源,可以供学生通过网络自由地远程访问。这些开放的教学资源包括课件、教案、相关动画、习题、解答、模拟试题、教学交流论坛等等,其中多数是校级、省级甚至国家级精品课程建设的经验总结,同时还在不断补充更新。充分合理地利用这些共享资源,对各地高校的教师和学生都有极大的帮助。一方面教师可以利用这些资源丰富自己的课堂、课外教学内容,直接改善课堂教学效果;另一方面教师还可以指导学生利用这些网络资源,既能帮助学生拓展知识面,辅助课程学习,又可培养学生的自我学习能力。
随着网络技术的发展,教师还可为自己的课堂建立qq群、微博和朋友圈等联系方式,把课件和电子教案发到网上,供学生课后访问,随时预习和复习课堂内容,并开辟多种途径的师生交流渠道。此举反响良好,受到学生的普遍欢迎,在实际操作中也达到了比较好的效果。[6,7]
三、目前多媒体教学面临的问题
虽然多媒体教学在问世以来很快得到了令人瞩目的发展,并且在教学实践中被证明的确能够有效改善教学效果,在某些程度上弥补传统教学方法的不足。但是在当前的实际操作中,要想充分发挥它优化课堂教学的作用,还有几个问题需要解决。
1.教学资源有待进一步丰富并实现广泛共享
多媒体教学与传统教学方法相比,其优势是建立在多媒体教学资源丰富,容易取得的基础上的,这样才能使教师把主要精力集中在其本职的教学上。如果把大量的时间和精力用于开发多媒体教学资源,而忽视了教学本身的基本要求,就是本末倒置了。目前多媒体手段丰富,要想制作出比较理想的课件和相关教学资料,往往需要掌握多种技能,如PPT、Authorware、Flash软件的使用、影音媒体制作等等,这也增加了完善多媒体教学的难度。因此要真正发挥多媒体对教学的支撑作用,还需要专职和专业教学资源开发人员。
另外,虽然从“百花齐放”的角度来看,多家高校对一门课程开发不同的多媒体课件是有利于课程建设、交流和资源丰富的,但是由于这些资源分属不同的单位,大家相互不能重复使用,造成了资源的严重浪费。在高校之间实现相同课程多媒体资源的共享,可以有效解决因为资源重复开发引起的浪费。[6,7]这样可以充分、有效地利用资源,节省人力、物力、财力。如何使得多媒体资源的共享便于具体操作、方便快捷,并且能够保护资源原创者的利益和知识产权,则是下一个需要研究的问题。
2.在实践中探索多媒体技术如何更好地与传统教学实现优势互补
将多媒体技术引入课堂教学是在新的教学实践中的一种新的尝试。多媒体教学资源能提高学生的学习兴趣,而且学生的创造力和独立思考能力等综合素质也能全方面发展。与此同时,多媒体技术在课堂教学中也逐步暴露出自身的缺点。[6,7]比如多媒体教学资源一般是预先定义好的,显示的时候只是简单的呈现,不如传统的黑板教学便于教师临场发挥;再比如有的教学内容如公式推导等,学生还是认为老师手书讲解更易理解,等等。其中部分问题可以随着多媒体技术和电子技术的发展逐渐得到解决(目前的电子双板教学可以让老师在电子白板上用手代替粉笔,进行书写,并能够保存在多媒体资源中),而有些必须回到传统教学方式上寻求解决方案。要真正解决这些问题和不足,需要广大教育界同行在教学实践中不断探索、总结,逐渐找到传统教学和多媒体教学的契合点,使它们相互之间取长补短,进一步提高“软件工程导论”基础的教学水平。
参考文献:
[1]教育部人事司.高等教育学[M].北京:高等教育出版社,2001.
[2]张利娜,张戈.案例教学在数字电子技术课程中的应用研究[J].中国电力教育,2011,(18).
[3]肖丁,吴建林,周春燕,等.软件工程模型与方法[M].北京:北京邮电大学出版社,2008.
[4]郑仁杰.实用软件工程[M].北京:清华大学出版社,1997.
[5]刘强,陈越, 骆斌,等.“软件工程”课程教学实施方案[J].中国大学教育,2011,(2):41-44.
关键词: CDIO; 教学模式; 教学改革; 软件工程
中图分类号:G642 文献标志码:A 文章编号:1006-8228(2014)03-44-02
0 引言
软件工程导论作为计算科学、软件工程等专业的核心课程,具有理论抽象、实践性强等特点,在现实中存在理论教学和实验教学严重脱节的问题,因此对该课程进行教学改革十分重要。本文针对软件工程导论课程教学过程中存在的问题,尝试引入CDIO模式,将能力培养模式和方法应用到软件工程导论课程的理论教学、实验(实践)教学和考核过程中,体现以案例开发过程为驱动来安排教学内容和方法的教学思想。
1 CDIO模式的内涵
CDIO模式是近年来国际工程教育改革的最新成果。从2000年起,由麻省理工学院和瑞典皇家工学院等四所大学组成的跨国研究团队,经过四年的探索研究,创立了CDIO工程教育理念,并成立了以CDIO命名的国际合作组织。
CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate)四个方面,以产品研发到产品运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式学习工程[1]。其倡导“做中学”和“基于项目教育和学习”的新型教学方法,在工程基础知识、个人能力、人际团队能力和工程系统能力四个层面上进行综合培养的教学模式。CDIO模式是能力本位的培养模式,本质上区别于传统的知识本位的培养模式[2]。
2 CDIO模式在软件工程导论中的应用
CDIO模式在软件工程导论课程中的应用原则:①根据软件工程课程对学生的培养目标,进一步明确对学生知识、能力和素质的要求,以软件(系统)工程设计为导向,以项目训练为载体,重新设置课堂、实验(实践)和考核模式;②一方面设置小规模实践项目或验证性的项目,加深和强化学生对课程内容的理解与应用,另一方面,选取合适的工程项目案例,将其完整地、前后衔接地贯穿于整个课程的各个教学阶段,使学生得到构思、设计、实现、运作四个层面上的系统训练,以培养学生的综合创新思维能力。
2.1 理论教学改革
软件工程导论所涉及到的理论知识内容相对抽象,需要与实践的案例(项目)构建为一个整体,同时为实践教学做好补充、深化和拓展。这就需要改变传统课题教学模式,主要体现在教师教学与学生学习的过程中,侧重于学习的经验获取方式及技能的训练方法上。
CDIO模式不仅注重培养学生的自学能力,也强调教师团队的指导作用。在理论教学实施过程中围绕某问题、任务或项目开展,以项目为载体,由教师引导学生自主学习和探索。教师成为教学的组织者、引导者、咨询者和评价者;学生不再是知识的被动接受者,而成为知识的主动建构者,即实现三个转变:以教师为中心转变为以学生为中心,由以课本为中心转变为以项目为中心,由以课堂为中心转变为以实际经验为中心[3]。
选择“书店信息管理系统”项目作为教学案例,贯穿整个理论教学过程。将课程项目划分成计划订购管理、书库管理、销售管理和书店日常事务管理等若干个模块,并把每个模块涉及的知识点罗列出来,对其要实现的目标和要求,结合软件工程导论中的需求分析、概要设计、详细设计、测试、维护等方面的理论,进行详细的讲解。
在理论教学过程中,注重由项目案例中的应用,导入基本的概念和方法,提出问题引导学生思考应用,将理论的应用贯穿于软件工程导论课程的教学中,增加学生主动学习和动手实践的兴趣,强调分析问题和解决问题的能力,增强概念学习。
2.2 实验(实践)教学改革
CDIO模式倡导在“在工程项目中学习”的教学理念,遵循“案例导向、项目驱动”的实验教学模式。结合软件开发的实际场景,以团队为单位进行[4]。以团队负责人为核心,组织对员进行需求分析、软件设计、编码、测试、维护等,既可分工协作,也可集中完成某一个阶段的任务。在实验教学过程中,遇到问题,先由学生间讨论来解决,并制定解决方案进行相应的尝试或验证。在学生不能解决问题的情况下,由教师指导完成。在这个过程中,教师肩负着答疑和指导的任务,鼓励学生团队用不同方法完成任务,针对具体情况提出改进建议。借助这种途径,学生共同参与、协作完成项目,从而锻炼了他们的交流与合作能力、自学和思考能力、解决问题和创造性思维能力。
2.3 考核方式改革
在教学过程中,改变过去单一的考试模式,建立多样性的评价模式,以充分调动学生的积极性。在教学任务完成后,针对CDIO模式的构思、设计、实施、运行四个阶段的工作进行总结,指导学生撰写课程学习报告。指导教师对每个团队及其成员的表现进行点评,对发现的亮点进行表扬和推广。考核不仅仅是关注最终的结果,更重要的是借助考核形式,引导学生在教学过程的每一个阶段注重知识学习,积极参与技能练习,全面提高学生的综合职业能力。考核时,主要包括这些方面:①职业素质的考核,考核学生平时的到课率和上课表现,循序渐进地对学生进行职业素质的培养;②学习过程的考核,在CDIO的四个阶段分别进行考核并给定相应的分数,其目的在于调动学生平时学习的积极性、主动性,这项考核是反映和检验学生在学习过程中努力程度的标志;③综合应用能力考核,以演示、答辩的方式展现学生的劳动成果,一方面可以展示学生的学习成果,鼓励学生互相学习,另一方面,可以培养学生的交流能力,从而提高学生的成就感和学习积极性;④职业所需的理论素养考核,对理论知识的考核以笔试的方式进行,侧重于考核职业岗位所需的基本理论与基本知识[5]。
3 结束语
经过两年多的不断探索,基于CDIO模式的软件工程导论课程在我院计算机科学与技术、软件工程本科专业中开展教学改革,打破传统的以验证理论为主的课程教学模式,开设综合性工程实践课程,为学生提供系统连贯的实践机会和创新能力训练的机会,实现了一个新型的教学设计逻辑思路:以软件项目的现实条件为背景,以软件实现过程的构思、设计、实施和运行的生命周期为载体,全面地培养学生的专业知识、专业能力和团队写作能力。这样,既有效地解决了软件工程导论课程在理论教学、实验(实践)和考核之间的矛盾,也为计算机专业的相关专业课程的教学改革提供了借鉴,为培养应用型计算机类专业人才奠定基础。因此,CDIO模式具有很好的推广价值和应用前景。
参考文献:
[1] 易著梁,黄伟.基于CDIO教育模式软件技术专业项目教学实践[J].计
算机教育,2012.13:4661-4663
[2] 毕忠勤,单美静.基于CDIO的软件工程专业培养体系建设[J].计算机
教育,2013.8:23-26
[3] 袁磊,黄健,宁彬.软件工程实训课程体系研究[J].计算机教育,
2010.22:138-141
[4] 宁彬,龚雄兴,袁磊.开放式计算机实验教学体系探索[J].电脑知识与
技术,2012.13:4661-4663
【关键词】软件工程;数字媒体;专业建设
1.引言
随着计算机技术、通信技术和数字广播等技术不断发展,以互联网、无线通信为传播载体,以传统媒体内容与创新内容模式为核心的数字媒体产业在全球范围快速崛起,并正在改变着人们的信息获取方式和休闲娱乐的形式。
我国的数字媒体业近几年正处于高速发展时期,对于具有较高人文素养、掌握数字媒体核心技术并具有艺术创意能力的复合型数字媒体技术开发与设计人才需求旺盛。四川理工学院软件工程专业是与IT企业合作办学、实行“3+1”人才培养模式,即学生前3年在校学习,第4年在软件企业实习并完成毕业设计(论文)。为使培养的学生既有较扎实的理论基础,又有适应人才市场需求的职业技能,在软件工程专业大框架下设置了数字媒体技术方向。
数字媒体技术作为一个宽口径、以技术为主、艺术为辅、技术与艺术相结合的新的专业方向,涉及到不同的学科知识,因此,我们有必要通过探索与改革人才培养模式、课程体系以及实践教学体系的研讨,搭建科学的创新人才培养平台,促进软件工程专业人才培养整体水平的提升。
2.人才培养目标
培养目标是制定教学计划、设计课程结构、选择知识发展方式以及确定教学组织形式的依据,也是教学内容、教学方法、教学组织与管理、教学手段、教学评价等方面改革的基础和前提。软件工程专业数字媒体技术方向具有软件工程与数字媒体技术相结合的特色,注重对学生软件开发、应用能力的培养,实践性强。结合我们自身办学特色和办学条件,我校软件工程数字媒体方向人才培养目标是:“培养具备计算机科学、多媒体网络、软件工程技术、信息安全等方面的专业知识与技能,具有扎实的软件工程和数字媒体技术基础理论、宽厚的专业基础知识、较强的实践能力,能够从事包括新媒体应用以及虚拟现实等在内的多媒体技术开发、数字媒体设计与创作、计算机游戏设计、网页设计与网站维护、信息服务及数字媒体管理等工作的创新性技术人才。”
3.核心课程体系
数字媒体方向课程体系的建设以创新性复合型人才培养为基本指导思想,重视实践课程的开设,使学生所学习掌握的方法具有充分的实效性,真正做到学有所用,以适应未来的工作岗位,成为本行业和企业所欢迎的有用人才。课程体系分为软件工程专业核心课程模块、数字媒体方向核心课程模块、专业实训、毕业实习和毕业设计(论文)等模块。
3.1 核心课程
软件工程专业数字媒体技术方以软件工程专业为主线构成专业基础和专业主干课程。其中,计算机与软件基础课程有:计算机导论、程序设计入门、面向对象程序设计、数据结构与算法、Java程序设计、计算机组成原理、数据库原理、计算机网络、操作系统、编译原理、信息安全技术、计算机体系结构以及J2EE与中间件技术;软件工程专业课程有:软件工程导论、软件测试技术、需求分析与UML设计、软件项目管理与过程控制;数字媒体技术专业课程有:数字媒体技术导论、计算机图形学、数字图像处理、网络流媒体技术、用户界面设计、视频音频制作与处理、数字影视特技应用、高级游戏特性与游戏引擎、人机交互技术、虚拟现实技术与应用、高级脚本与插件技术等。对于实践性较强的课程开始单独的实验课程和配套的课程设计。
3.2 特色课程
计算机网络游戏由计算机技术、艺术设计学和计算机动画以及计算机图形图像技术高度交叉结合,目的是培养具有扎实的游戏编程功底和良好的逻辑思维习惯,具备较强的审美能力和一定的艺术素养,熟悉游戏产品开发流程,具有一定的策划能力,能在游戏公司、门户网站、手机运营企业、动画公司等单位从事游戏设计、游戏开发、游戏制作、游戏策划、游戏运营等方面工作的富于竞争力与创新精神的高级复合型人才。
计算机游戏程序设计。课程目标:本课程主要学习普及游戏开发理念,培养游戏开发氛围,挑选有潜力的学生组成开发团队;传授游戏开发中的程序设计要素,特别是游戏引擎开发的基本知识。通过本课程的学习,学生能够掌握游戏开发的基本理念,熟悉游戏开发的基本技巧和流程,并具备从事游戏程序设计工作的基本技能。
虚拟现实与数字娱乐。课程目标:本课程主要介绍虚拟现实的基本概念及其系统组成、相关的软件技术及虚拟现实的应用,并介绍了当前数字娱乐的现状,发展和一些关键技术。内容包括:虚拟现实的定义、特性和组成,虚拟世界的创建和管理,虚拟现实中的视觉计算,虚拟现实中的交互技术,虚拟现实中的声觉计算,增强现实,分布式虚拟现实,虚拟现实应用,与虚拟现实相关的数字娱乐技术。
4.实践教学体系
培养符合时代需要的创新性人才,就要强化实验教学的开放性和多层次化。基于创新性原则和以生为本原则,结合培养目标和自身教学特点,数字媒体技术方向实践教学体系分为课程实验,专业实训、毕业实习和毕业设计三个方面,各实践环节之问相互协调、相互衔接、循序渐进。
4.1 课程实验
依照实践能力培养循序渐进的原则,根据实现数字媒体技术专业基本能力培养的系列课程,并按照系列课程的复杂度和规模设计实践环节,开展了多层次课程实验教学,根据学生的需要和实践能力培养的渐进规则,将实验课安排大学四年的各个环节。
多层次实验教学是指在实验大纲与目标的规范基础上,将实验项目设计成基础型、综合设计型、研究创新型不同层次的实验。同一学生从基础规范一综合设计一研究创新这样难度递增的实验项目中逐渐进行训练,实现系统培养学生综合实践能力。课程实验主要包括:手绘训练、视频特技与非线性编辑、多媒体网页设计、移动娱乐软件开发、网络娱乐软件开发、界面设计课程设计、虚拟现实开发课程设计等。
4.2 专业实训
专业实训作为知识、能力、综合素质教育的结合点,成为数字媒体技术专业实践教学的重点之一。专业实训是对课堂教学具有延伸作用,是学生培训职业能力、熟悉职业环境、了解实际知识的重要渠道。通过专业实训,学生不仅可以把所学转化为所用,还能使学生在学习操作过程中通过不断调整自己的知识结构来慢慢适应相应职业岗位,锻炼职业的能力,为实习以及今后走向社会积累经验、打下基础。
我校软件工程专业是校级专业综合改革试点专业,以争建微软IT学院、HP软件学院为契机,与知名IT企业开展深度合作,联合培养具有国际视野的软件开发、软件测试和服务外包人才。与中软国际、Tarena(达内)科技等十多家IT企业联合建立了实习实训基地、就业基地。
4.3 毕业实习和毕业设计
毕业实习是学生将前期学习到的知识运用到生产实践中,真正了解、感受未来的工作,锻炼自己各方面的综合能力。真正实现与行业需求的专业实践能力对接。能胜任相应岗位的工作,从而积累工作经验,为就业做准备。为了增强学生和指导老师对毕业设计(论文)及毕业实习的重视,提高毕业设计(论文)的质量和提高学生在毕业设计(论文)及毕业实习实践环节获得的实践能力,也为缓解毕业设计时间(论文)不足,笔者将毕业实习与毕业设计(论文)有机结合,实行“毕业实习+毕业设计”相结合的模式,学生毕业设计的内容来自于毕业实习,并且毕业设计的内容要将毕业实习的内容进行一定的升华,除体现学生四年来所学知识综合之外,还要体现出学生的创新能力与科研能力,达到培养创新型、复合型人才的标准。
5.结束语
通过对国内外数字媒体技术相关专业及方向的调研,基于创新性人才培养目标,建立了相关的核心课程和多层次实践教学体系,融合专业技术、实践教学、校企合作共同培养为一体的软件工程数字媒体特色专业方向的知识体系,着力培养学生的艺术与技术交叉结合的数字媒体制作与开发能力和职业素质,进而使得学生的基础知识、科学素养、艺术感悟、专业知识、创新能力、工程能力和职业素质都得到全面均衡的发展,以增强他们在数字媒体行业就业的竞争能力。
参考文献
[1]沈琦,于学军,张丽,等.软件工程(数字媒体技术)特色专业复合型创新型人才培养模式研究[J].中国校外教育,2010,16:162-163.
[2]蔡建平,沈琦,于学军等.软件工程(数字媒体技术)特色专业的特色建设[J].软件,2012,33(4):108-111.
[3]耿卫东等.面向数字媒体技术专业的数字化学习平台建设[J].计算机教育,2010(16):99-101.
[4]向辉.数字媒体技术专业课程体系探讨[J].计算机教育,2008(15):28-30.
[5]黄成云.数字媒体技术本科专业实践教学体系研究[D].华中师范大学,2012,5.
关键词:软件工程 教学改革 案例教学
《软件工程》是计算机科学与技术及其相关专业的一门重要的专业必修课程,是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护 ,其重点在于软件的分析与评价、规格说明、设计和演化,同时还涉及管理、质量、创新、标准、个人技能、团队协作和专业实践等。其先修课是《程序设计语言》、《数据结构》、《操作系统》、《数据库原理与应用》等,这些课程着重培养学生从局部问题入手,解决问题的能力,而《软件工程》则着眼于从全局角度出发分析和解决问题,理论要求高,同时也是本专业中实践性非常强的一门课程。
一、软件工程的发展
软件工程的发展速度是惊人的。自1968年提出“软件工程”这个词以来,已经历了40多年的时间70年代在取得大量研究成果的基础上,形成了软件工程的概念、框架、方法和手段,称为软件工程的“第一代”,我们称之为传统的软件工程,是目前软件工程教学中的主要内容。
20世纪80年代以来,面向对象的方法与技术受到广泛的重视80年代中期到90年代,研究的重点转移到面向对象的分析与设计,并演化成一种完整的软件开发方法和系统的技术体系,成为软件工程的“第二代”,即对象工程技术。在以往的软件工程教学中,这一部分内容没有太多的讲解,且没有相应的完整实验要求和方法。
到了80年代中期,人们在研究和实践中发现,为了提高软件生产率和保证软件的质量,关键在于软件开发和维护中的管理和支持能力,并认识到最关键的是“软件过程”,从而逐步形成软件过程工程,并成为软件工程的“第三代”。项目软件过程改进与质量提高也是软件工程学研究的重要内容,其中以软件能力成熟度模型(CMM)为代表,目前的软件工程教学因为课时关系很少讲授这方面的内容。
二、存在的问题
由于软件工程是一门综合性的课程,包含的内容非常多:从软件工程概述、软件计划、需求分析、概要设计、详细设计、编码、测试、软件维护、面程、软件重用技术、软件配置管理、软件工程向对象方法学引论、面向对象分析、面向对象设计、UML建模语言、系统工标准化和软件文档、软件工程质量、软件工程项目管理等等内容,并且随着信息技术的不断发展,软件工程中也出现了不少新的技术和方法。但安排的教学学时一般都是48~64学时之间,在有限的学时中要教授这么多的内容, 导致目前国内高校对于该类课程的普遍做法是以教师课堂授课为主,学生被动地听课,教学内容一般是重理论而轻实践,即使配备课程实验,学生也只是编写一些规定的文档,其开发方法和手段基本上与软件工程的要求脱节。
三、解决方法
精心选择教材,注重理论教学教材的选择要密切关注社会的需求,教学活动应该以社会即需求为主导进行。巨大的社会需求也推动了计算机教材的繁荣,各大出版社或引进或组织教师编写,各种计算机教材陆续走进了课堂因此,要选择一本适合本院学生学习的深入浅出的教材至关重要,通过大量认真细致的比较,我们决定选用由张海藩编著,清华大学出版社出版的《软件工程导论》(第五版)为教材,分别讲述了用面向对象方法和结构化方法开分别讲述了用面向对象方法和结构化方法开学很有帮助,也是上机实践的好材料。在教学过程中,要注意引导学生重视系统地掌握软件工程的基本概念、基本原理、基本方法,在向学生介绍概念的内涵时,既要注重科学性和严谨性,也要注重通俗性,通过生动的举例帮助学生理解理论知识,利用课堂提问、课后布置作业和批改作业发现问题,及时纠正错误概念,逐渐强化理论知识,在时间上也互相协调、合理衔接,使学生从了解、理解到系统地掌握软件工程的基本理论,为今后的实践打下良好的理论基础。
四、合理安排实验,注重案例教学
根据软件工程课程的特点,在安排实验的环节上,要注意以软件项目作为实践环节的主线,随着课程进展布置任务,从项目开发的准备工作、系统分析过程、系统设计过程、软件测试到系统实施,结合所学习的理论知识,完成项目的开发。首先,应设置一些综合实验项目,通过问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、维护及技术文档的编写,结合所学习的理论知识,完成设计。软件工程的理论和方法是从众多软件开发实践中总结出来的,在整个教学过程中结合该案例,讲授了每个知识点以及软件开发各个阶段的任务是如果完成的。此外,我们还收集和总结一些软件开发案例,在讲授完每个知识点后,将这些案例结合起来,贯穿于理论知识的讲解中,使学生真正理解这些理论知识,建立软件开发的系统化与工程化观念和质量意识。
五、组织兴趣小组,培养团队精神
在软件工程实践的过程中,要求学生以开发团队的方式协作开发一个具有一定规模的软件系统,建立支持小组开发的软件开发支持环境,一般每个小组5~6人,分别担任项目经理、客户、系统分析员、程序员和测试人员等角色,根据所选项目的需求,制定项目计划,分工合作,在研究问题分析系统的过程中创造性地学到知识。最后,由组长讲解所开发的项目。在这个过程中 ,让每个成员都得到实际的锻炼,并初步体会到一个软件开发项目的全过程。
六、结语
《软件工程》课程教学中的问题是客观存在的,软件工程的课程改革本身就是一项复杂的工程,要做的事情还有很多,将来会更好的利用网络资源,设计出更符合教学的案例,同时建立自己的软件工程网络系统,提高教学能力。
参考文献
[1]孙家广,刘强,等.中国软件工程学科教程[M].北京:清华大学出版社,2005.
[2]朱三元 ,钱乐秋,宿为民.软件工程技术概论[M].北京:科学出版社,2002.
关键词:软件工程;软件危机;发展与应用
中图分类号:TP31文献标识码:A文章编号:1007-9599 (2010) 07-0000-01
Development&Application of Software Engineering
Zhang Bin
(China Yto Group Corporation,Luoyang471004,China)
Abstract:The related content of the software engineering was summarized in this paper,the sofeware engineering techniques and methods and software engineering application were explained.The development trend of software engineering was explained,which has laid the groudwork for the further research on the issues.
Keywords:Software engineering;Software crisis;Development& Application
一、前言
随着高科技的逐步发展,计算机应用得到了日益普及与深化。计算机应用的大范围扩展,对软件自身与软件系统的需求的复杂度大幅度上升。传统的软件开发方法已无法适应计算机用户在效率与质量等方面对软件的需要[1]。由此导致了“软件危机”,长期以来,研究人员为了克服“软件危机”,在软件的相关领域做了大量而有实效的研究工作,逐步形成了系统的软件开发技术、理论与方法。在计算机信息时代的今天,计算机软件工程扮演着重要的角色。它已成为现代信息技术竞争的关键领域。
二、软件工程的相关内容概述
(一)软件工程的产生背景
计算机硬件技术的迅速发展,要求软件系统能与之相适应。然而,早期的软件生产具有作坊式、个体化特点,软件开发平台单一,开发工具相对落后,程序设计语言功能差。尤其是软件维护工作复杂,耗费大量的物力、人力与计算机资源,大量程序的个体化特性使得它们无法维护与修改。而且,软件的结构变得越来越复杂,规模也越来越大,软件维护与管理开发费用不断增加,这种软件开发工具、技术与生产方式落后的状况与计算机行业对软件的需求日益增加形成了很大矛盾。为了解决这一困境,研究人员把工程技术的思想引入到软件领域,使软件技术走上工程学科的途径。西欧与美国的一些软件研究人员于1968年首先提出“软件工程”这一学科名词,从此软件工程得到了相关研究与发展。
(一)软件工程的定义
软件工程是一门研究用工程化的方法维护与构建实用的、有效的与高质量的软件学科。它涉及到数据库、系统平台、程序设计语言、软件开发工具、设计模式与标准等方面的内容。在现代信息社会中,软件应用在许多方面。典型的软件如嵌入式系统、办公套件、编译器、数据库、电子邮件与游戏等。工业、银行、政府部门、农业、航空等[2]。这些实际应用促进了社会与经济的迅速发展,以方面提高了生活质量,另一方面,使人们的工作更加高效。
三、软件工程的方法与技术
当前,软件工程中主要使用的技术与方法可以分成管理与技术两类。从技术角度来看,软件工程理论在实践中应用时重点在软件复用。参照目前成熟的产品的开发模式,软件复用可以在软件开发中规避重复劳动,以现有成果为基础,利用过去开发应用系统中积累的经验与理论知识,将开发的重点放在新应用的特有构成成分上。
从管理的角度来看,软件项目管理与其他项目管理相比,具有一些不同的特性。软件项目管理需要平衡资源、质量、工期、需求这四者之间的关系;依靠规范的项目过程来控制项目进度,并能确保及时发现、解决问题[3]。大规模的软件工程项目需要拆分成几个子项目,以减小项目的管理风险;另外需针对不同软件工程项目的特点,制定不同的软件工程管理的方针。
四、软件工程的应用现状
(一)软件工程在测试标准的应用
软件测试时软件可靠性与质量保证的关键技术,目前正日益得到发展。然而,许多软件企业的开发模式始终处于无序开发的不规范状态,软件测试的作用没有得到应用的重视,不少软件工程项目的技术人员对软件测试还存在着认识误区,这种状况影响了软件测试的开展与软件测试质量的提高。
(二)软件工程在复杂动力网络的应用
软件工程在复杂动力网络上的应用与研究已经有10年,许多这一领域的研究人员将复杂网络的方法与理论应用与软件工程的相关研究中,如工具分析软件网络的网络化软件与各种统计特征的相关研究。
网络化软件是行为与结构可以动态演化的软件,具有开放性、自组织性与适应性等主要特点。相对于传统软件,网络化软件的组成单元的规模可伸缩、耦合更松散;网络化软件通过挖掘、发现、定制可用的网络资源,以实现网络资源的动态组合,并提供可持续运行的协同与交互服务,更便捷地满足用户需要。
五、软件工程的发展趋势
伴随着现代科技的迅速发展,软件工程的发展有如下趋势:
(一)蓄势待发,持续集成
持续集成是一个复杂的软件系统工程,组织需要首先会将现有的变更管理/配置管理工具与Build过程,在根据软件企业/软件项目/软件产品的现状,定义如何自动化地检测出软件质量情况,并定义管理报表[4]。持续集成式保证迭代化软件开发的主要方式,通过持续集成可尽早、自动化地保证代码质量。
(二)迭代、敏捷渐成标准
迭代开发已成为许多软件开发企业的必选项。但迭代对整个研发团队的架构、需求、协同与测试能力都提出了更高的要求,目前很多研发单位都在试图导入迭代开发的过程中,敏捷是被看成迭代化开发的一种导入方式。
(三)需求工程渐成热点
互联网级的交付速度,日益复杂的业务水平创新,专业化的角度及全球分布的团队,都对需求获取的有效性及正确性提出了更高的要求。需求分析员可以方便地通过用例分析将需求体系精华成分析模型。
参考文献:
[1]史济民.软件工程.高等教育出版社,2002
[2]张海藩.软件工程导论.清华大学出版社
大学教育不是培训班
重视基础教学是中国科大一贯的办学特色,如何在工程型人才培养过程中找到理论与实践、科学与工程之间的“平衡支点”?
中国科大软件学院执行院长周学海认为,高校应当从企业的需求出发,结合高校自身的培养模式,提炼出人才应具备的能力、素质。“软件工程人才,不仅要上手快,还要有后劲,后者更重要”。
学院软件工程硕士目前学制是两年半,要求完成不少于40个学分,分为3个阶段:第一年是理论学习,第二年开始到企业实习、做毕业论文,最后半年是论文整理、答辩和学位申请。
据中国科大软件学院副院长李曦介绍,学院强调专业基础课教学,很重视学生的计算机、软件、数学等基础能力培养,比如,《算法设计与分析》这门基础理论课,其他高校一般开40学时,该校是60学时。学生也有很大的学习自主权。全院共开设了108门课程,除本专业的几门核心课程外,5个专业方向的学生可以自由选修各模块的课程,也可以跨专业选课。
自主不代表要求降低。学生入学头一年要完成30多个学分的理论课学习,要求核心课程平均分不得低于75分,否则就失去学位申请的资格。即使是拥有计算机和信息专业背景的学生,每天也要学到夜里11点多。
“我们培养的不是简单的打工仔,而是技术骨干和懂技术的管理者,要为大家今后的职业成长和发展打好基础。”最让李曦欣慰的是,毕业生返校做讲座的时候,总会在结尾提到:感谢那段艰苦学习的岁月。
教学与实践相结合
“做软件的首先要有IDEA(创意),然后开发设计出样品,最终按照工程的要求做出产品。”在软件学院总支书记、副院长吴敏看来,软件公司其实就是一个“软件工厂”,如果学生不下车间锻炼实践,就无法树立起一个工程师应具备的“工程意识”。
在实践教学方面,学院在第一年就设置了“工程实验”的必修环节,首创了如同“三明治”一样的“多阶段分层次实践教学”模式,将实践教学细化为“专业基础、专业强化、专业综合”3个阶段,共3个学分,把不同阶段的理论学习与实践紧紧地镶嵌在一起。
其中,专业基础部分主要针对各专业方向的基础课程,要求学生能熟练掌握和运用本专业项目开发所需的基本理论、编程语言和开发环境。专业强化部分是完成某专业方向的综合性实践能力的训练,要求学生能综合运用本专业相关理论知识和方法,以及软件工程项目管理工具。在专业综合部分,学生自主选题,或者是企业提出需求,3~5名学生组成一个小团队,利用一年的课余时间,按软件工程规范完成一个工程开发项目,以培养学生的创新能力和团队协作能力。学院还建立了软件工程中心,承接项目开发,为学生提供工程实践环境。
据李曦介绍,设置工程实验环节后,学生的实际开发项目能力得到显著提高,能够熟练使用本专业的各种软件开发工具。从学生实习单位反馈情况看,学生的动手能力和团队合作能力得到工业界的认可,对提高学生的一次就业质量帮助很大。
从机制上确保学生实习质量
第一学年结束后,软件学院的学生像候鸟一样飞往70家稳定的校外实习基地。这些基地多为国内外著名研究所和IT企业,如中科院计算技术研究所、微软、惠普、IBM、华为等。2011年,平均每个学生有5个实习岗位可供选择。
接下来的一年里,他们将扎根企业进行严格的实习,同时开始准备毕业论文。
到企业之后,学生每人都配有企业导师,进行全程指导。实习3个月左右,学院派校内导师到学生所在实习城市检查实习情况,指导论文开题。
论文题目要求来自企业生产实际,不仅强调先进性和可行性,还对论文所涵盖的内容有明确要求。
关键词:《软件工程》;课程教学;教学改革;教学方法
中图分类号:G433
文献标识码:A 文章编号:1672-7800(2014)003-0178-02
基金项目:河南省教师教育课程改革研究项目(2012)
作者简介:朱变(1982-),女,硕士,周口师范学院计算机科学与技术学院助教,研究方向为云计算、可信计算。
0 引言
《软件工程》是高等院校计算机科学与技术专业的一门专业必修基础课,该课程与数据结构、数据库原理和操作系统等课程相互联系和影响。它涉及到计算机、经济学、管理学、工程学等多个领域的知识体系,在一定程度上,软件工程最早是为了解决“软件危机”问题而提出的。1968年,NATO(北约)科技委员会召集几十名专业编程人员、计算机科学家和工业界知名人士,讨论如何摆脱“软件危机”带来的危害。在商讨会上,软件工程的概念首次被提出,即软件工程[1]是指导计算机软件开发与维护的工程学科,它采用工程的概念、原理、技术和方法来开发与维护软件,把已经证明正确的管理流程和当前成熟的技术相结合以经济高效地开发出高质量的软件并保证后期维护。
实践教学中,作为一名《软件工程》任课教师,发现《软件工程》课程的教学效果不如人意,与教学目标相差很远。针对《软件工程》课程本身具有的抽象性和应用性特点,学生很难记住讲授的知识点,即使记住也只是从理论方面死记硬背,这样导致学生眼高手低——理论强、实践差。学生毕业后不能和社会很好地接轨,即使学过《软件工程》课程也不能满足市场对学生的技术要求。如何搞好《软件工程》课程教学,如何培养学生用软件工程的思想开发软件是摆在教师面前的一道难题。
1 《软件工程》课程特点
《软件工程》的先修课程有高级语言程序设计、数据结构、数据库系统原理、操作系统、计算机网络等。《软件工程》贯穿于软件开发的整个过程,该课程的体系结构有软件可行性研究、软件需求、软件设计、软件实现、软件测试、软件维护等相关知识点。
《软件工程》课程的知识体系结构如图1所示。《软件工程》课程的教学目标是要求学生掌握利用软件工程的基本思想、工具、技术、过程和方法,为今后从事计算机类相关工作打下良好的基础;培养学生综合运用大学四年所学的专业知识训练和提高软件开发能力;锻炼学生的交流和沟通能力与团队合作的能力。
2 《软件工程》课程存在的问题
根据《软件工程》课程特点和笔者对该课程的教学心得,发现学生在学习这门课程时难以提起兴趣,大多感觉学习内容太过枯燥。具体表现如下:
2.1 课程内容抽象、理论性强
《软件工程》课程主要介绍软件开发常用的原则和方法,逻辑性不强,不涉及软件算法。因此,学生只能被动地接受理论性知识,这样他们的智力得不到充分发挥,让没有开发经验的学生将课程中讲授的理论和实践知识相联系更是不现实。久而久之,学生的兴趣和热情渐渐丧失。
学生在学习过程中,只能想像用软件工程的思想开发软件,很少有时间能真正参与软件开发。对于教师布置的作业,学生也都是为了应付检查才做。每个阶段的文档都必须付诸行动后才有内容可写,由于学生没有实践,因而只能从网上搜集资料想像别人是怎么做的。对于学生上交的系统一般都不能使用,因为这些系统没有接受真正的测试,也存在一些错误的代码,学生如果检查不出这些错误,就不能深刻地体会到用《软件工程》开发软件的流程和重要性。
2.2 教师教学水平有限
任课教师大多数任教时间不长,教学经验不足,没有软件开发经验。教师讲授《软件工程》课程时也只能以课本知识为主,或者借助视频授课,教学方法较单一,影响了《软件工程》课程的教学效果。
2.3 学生基础差
《软件工程》与其它专业课紧密相联,一些学生存在着自卑心理,即他们认为自己有很多先修课程没有掌握好,这门课肯定也学不好。大部分学生对理论性课程的积极性不高,学生的基础普遍较差(高级语言程序设计、数据结构、数据库原理等掌握不好),许多知识不能运用自如,这也给《软件工程》课程教学带来了困难。
2.4 考核方式
《软件工程》课程考核一般采用书面考试和平时成绩相结合的方式。对于这种考核方式,学生们平时不学习,到期末复习时,只要背一些基本概念也能考出好成绩。这种为了考试而学习的学习方式容易使学生放纵自己,不利于学生的学习。
3 《软件工程》课程教学效果提升措施
3.1 教学过程引入实际案例
针对《软件工程》课程内容的抽象性特点,教学中要采用案例法。列举生动具体的案例来诠释抽象复杂的概念和原理,这样学生就能深刻体会到软件工程的思想、方法和技术,更利于达到教学目标。例如,在讲课时教师可以以“学生成绩管理系统”为案例,给学生介绍详细的开发过程和相关文档写作。案例教学法是使用最多的教学方法,它适合于所有课程的讲授。案例教学法还可以以公司的实际项目为案例讲解或者抽取项目某一部分,让学生在课堂上看到项目的实际环境,从而在复杂的条件下学会如何解决问题。要使用案例教学法,还必须从教学备课、教学课堂过程设计、教学小结与讨论这几个环节进行准备。在教学实践中,需考虑以下几个问题:
(1)使用案例是为了让学生更好地理解《软件工程》的理论内容,所以在设计和选择案例时,要考虑案例的针对性、复杂性与理论内容的结合程度,案例最好与所讲《软件工程》的生命周期完全一致。
(2)教师可以布置案例,学生们以团队的形式组成开发小组,每个小组进行“讨论式”学习。学生是学习的主体,教师只是起到引导、组织的作用。
3.2 组织课堂讨论,形成教学互动
“授人以鱼,不如授人以渔”。它是对教学中教师和学生的重新考虑。传统教学中教师高高在上,学生们处于被动接受地位。要改变这种教学现状,必须让学生成为教学过程中的主体,这就要求教师在课堂中调动学生的积极性,让学生由“要我学”的被动心理转变为“我要学”的主动心理,最终让学生掌握一种会学的能力。
想让学生得到这样的转变,教师在教学时需注意以下几点:
(1)表扬每一位主动发言的学生,让他们对自己充满信心,并且让学生掌握一些关于自学的技巧,同时从实践中得到体会。
(2)教师在教学过程中所要表达的语言要有利于学生的主动式学习。比如,“请大家一起来思考这个问题”、“大家可以针对前面同学的发言来表达自己的想法”等。
(3)教师转变“教师讲解”为“学生讲解”。整个教学过程设计分为哪几部分、每部分都涉及到哪些内容、如何安排等都由学生自主决定,教师只是起到引导和维护课堂秩序的作用。这样,学生才能真正成为教学过程中的主人。
3.3 加强实践教学
《软件工程》课程教学想要取得良好的教学效果必须把教学内容和实际项目、学生已有知识相结合。以实际项目为基础可以激发学生的兴趣,带动学生学习的积极性和主动性。具体实施过程如下:
(1)分组。教师根据班级人数分为几个小组,每个小组的人数以4~7个人为宜,每组指定一个组长,由组长来协调各个成员的工作及其它事情。
(2)选题。学生可以在教师已拟好的题目中选择,也可以自拟题目,但是学生自拟的题目一定要具有完整性、真实性和可行性。项目开发工具根据实际情况自行选择。
(3)项目实施。项目的开发过程要与教学内容进度一致,即项目开发有可行性研究、需求分析、概要设计、详细设计、编码、测试几个过程。每个阶段教师都要求学生提交相应的文档报告,报告格式要按照国家标准要求。
(4)总结评价。教师要对学生提交的报告认真批改,并在课堂中进行总结,提出需要修改的问题以便学生改正。教师还要对学生提交的报告给出成绩。学生的成绩可以由“小组成绩”(50%)和“个人在小组(50%)中的贡献成绩”两部分构成。
教师要对学生选题的实践内容由简单到复杂地加以引导,要把握好尺度,以便给学生留下足够的时间去思考和解决问题。
3.4 教师参加企业项目实践
学校的《软件工程》教师大多是青年教师,实际项目开发经验较少,把《软件工程》课程教好有一定的难度。想把课教好,又为学校节省开支,《软件工程》任课教师可以利用暑假到公司里参与项目的实际开发。这样不但教师自身能力可以得到提升,实践开发的具体项目也可以在教学中作为案例来驱动教学。
3.5 改革考核方式
考核是检查教学质量的重要手段。它检验学生对所学知识的综合运用而不是考查学生对这门课的掌握情况。传统的考核方式偏重书本中的理论内容,容易出现高分低能的现象,不利于学生的长远发展。《软件工程》课程主要是为培养学生的软件开发能力,针对这一特点,需改革考核方式,可以从3个方面来考核学生的最终成绩:出勤和课堂表现(20%)、项目实践(30%)和笔试成绩(50%)。采取这种考核方式既能检验学生对理论知识的掌握情况,也能兼顾到知识的灵活运用和创新。
4 结语
《软件工程》是一门实践与理论紧密联系的学科,其教学目标是让学生运用软件工程的基本知识进行软件开发,在实践中加深对过程的理解和方法的掌握。《软件工程》课程教学中除了使用常规的教学方法,还要注重学生兴趣的提高和教师教学水平的培养。
参考文献:
[1] 陈明.《软件工程》导论[M].北京:机械工业出版社,2011.
针对《工程教育认证标准》中对“毕业要求”提出的要求,结合软件工程课程的教学内容,对软件工程课程的教学进行思考和探讨,分析认证标准要求与课程内容之间的对应关系以及标准中蕴含的意义,提出教学改进措施,以期更好地培养出符合《工程教育认证标准》的软件工程人才。
关键词:
工程教育认证;标准;华盛顿协议;软件工程;毕业要求
0引言
2016年6月2日在吉隆坡召开的国际联盟工程大会上,经过《华盛顿协议》组织的投票表决,我国正式成为《华盛顿协议》签约国。这是我国高等教育发展史上具有里程碑意义的一件大事,意味着我国工程教育实现国际多边互认,教育质量得到国际上的认可[1]。国内高校顺应形势,积极参与工程教育专业的认证工作。湖北工业大学机械设计制造及其自动化专业2016年顺利通过工程教育专业认证,这为我校其他工程专业申请认证提供重要参考和指导。在中国工程教育认证协会修订的《工程教育认证标准》中,对“毕业要求”提出12条要求[2]。针对这12条要求,结合软件工程课程教学内容,对软件工程课程的教学进行思考和探索,深刻理解标准的含义和意义,能更好地培养出符合《工程教育认证标准》的软件工程人才。
1工程教育认证标准
为了与《华盛顿协议》的标准实现实质等效,结合我国工程教育的事实与特点,中国工程教育认证协会修订了《工程教育认证标准》,对工程专业的学生、培养目标、毕业要求、持续改进、课程体系、师资队伍、支持条件7个方面规定了标准和要求[3]。其中,在毕业要求中,对工程知识、问题分析等12个方面提出了具体要求,符合工程教育认证以产出为导向的理念。
2软件工程课程教学内容
软件工程这一学科的产生源于软件危机。软件固有的成本高、逻辑复杂、风险大、维护困难等特点以及人们对软件的错误认识导致软件危机的产生。人们逐渐认识到必须使用规范的、工程化的方法开发软件,因此,软件工程应运而生。软件工程是应用了工程化思想的计算机领域的一门交叉学科,软件工程课程是软件工程专业学生必修的核心课程,其教学内容围绕软件生命周期的各个环节[4],讲授一个软件项目从立项到维护各个阶段的基本概念、相关技术、开发操作等。这门课程在整个本科4年的课程体系中起承上启下的作用,需要数据结构、数据库、面向对象语言与程序设计等前期课程知识的铺垫,不仅对后续软件需求工程、软件测试、软件项目管理、软件工程经济学等专业课程的学习有重要影响,还为学生以后的毕业实习、毕业设计和走上工作岗位所必需的工程实践能力奠定基础。
3认证标准的思考与探索
3.1认证标准要求与课程内容的对应关系
《工程教育认证标准》中明确指出工程专业学生毕业时必须达到12条要求,而软件工程课程大纲里面列出了学生学习这门课程应该掌握的所有知识和内容。通过对比,我们发现《工程教育认证标准》中的12条毕业要求与软件工程课程的章节内容有一定的对应关系,如图1所示。
3.2认证标准要求与课程内容对应关系的说明
R1工程知识:要求学生能够将数学、自然科学、工程基础和专业知识用于解决复杂工程问题。在软件工程的经济可行性分析中,需要用到数学和经济学的知识,以估算软件项目的成本、收益、投资回收期、投资回收率等指标,判断项目在经济上是否可行。在需求分析、软件概要设计、详细设计、软件开发等阶段,需要用到数据结构、数据库、算法、面向对象语言等各种数学、计算机专业知识,如图2所示。R2问题分析:要求能够应用数学、自然科学和工程科学的基本原理,识别、表达并通过文献研究分析复杂工程问题,以获得有效结论。在软件需求分析中,需要根据用户提出的软件需求,建立结构化或面向对象的需求模型。R3设计/开发解决方案:软件概要设计将软件系统设计为若干模块相互连接的关系;软件详细设计是为每一个模块设计详细的算法、数据结构等;软件开发将软件详细设计的结构转换为可运行的代码。R4研究:软件交付给用户使用之后,还需要一直对软件进行维护。维护过程中,为了分析研究软件工作的效率,需要对软件运行中的各种指标进行统计分析,计算出软件的可靠性、失效率等,为软件的改进提供数据支持。R5使用现代工具:在软件工具这一章节,介绍为了提高软件生产率和改进软件质量,辅助和支持软件开发和维护的各种工具,包括计划工具、分析工具、设计工具、测试工具等。学生应能了解多种工具以及它们之间的差异,熟悉和掌握某些常用工具,会根据具体情况选择合适的工具。R6工程与社会和R7环境与可持续发展:在软件立项之前,需要从各方面进行可行性分析,为项目是否能立项提供决策支撑。除了技术可行性和成本效益之外,政策可行性和市场可行性也是影响软件能否立项的重要因素。政策可行性考虑是否有政府的政策支持或限制该软件项目,软件项目是否危害健康、触犯法律、影响环境和社会的可持续发展等。市场可行性分析调查市场上同类产品的市场份额、市场成熟程度等。这些内容的学习能让学生有强烈的社会责任感,教育他们无论是软件开发员,还是项目的管理者,在软件立项之前,就应该预想软件项目对社会、健康、安全、法律以及文化的影响。R8职业规范、R9个人和团队、R10沟通和R12终身学习:在软件工程师道德规范这一章节中,ACM/IEEE给出软件工程师应该具备的职业道德准则,包括公众感、客户与雇主、产品、判断力、管理、专业、同事和自己;除此之外,还给出软件工程师的职业素质,包括团队合作能力、人际交往能力等[5]。这些内容与R8—R10和R12完全吻合。R11项目管理:无论是在软件项目立项时,还是在软件开发过程中,都需要对软件项目进行管理。在立项阶段需要立项管理,通过规范化的流程,判断并采纳符合企业根本目标的立项建议,提供合适的资金和资源,使立项建议成为正式的项目;或者拒绝不能给企业带来利益的立项建议,避免浪费人力资源、资金和时间。立项管理包括立项建议、立项评审和项目筹备。需求分析阶段需要进行需求管理,管理产品和产品构件的需求,识别需求与项目计划及工作产品的不一致,包括变更控制、版本控制、需求跟踪和需求状态跟踪。在软件概要设计、详细设计、开发阶段,同样需要随时跟进项目的进度,在每一阶段结束后召开评审会议,检查每一阶段的成果是否与相应文档相符合。
3.3教学改进措施
发现《工程专业认证标准》要求与软件工程课程内容之间的对应关系,能够帮助我们深刻理解认证标准蕴含的含义和意义。在软件工程课程的理论教学内容和实践环节中,着重强调与认证标准要求对应的教学内容,可以为学生日后从事不同工作和扮演不同角色做好准备。(1)研究者。加深学生对理论知识的理解,帮助学生达到对理论知识举一反三的水平,能将其他学科的理论应用到软件项目研究中。(2)开发者。提高学生的动手实践能力,强调上机、课程设计等实践环节的重要性,帮助学生在实践中掌握多种软件工具,能独立地分析和解决问题。(3)管理者。项目的管理对一个软件项目能否顺利完成起着举足轻重的作用。在教学中,平时容易被忽视的软件项目管理章节也应该被重视起来,为将学生培养为优秀的项目管理人员打下良好的基础。(4)无论是研究者、开发者,还是管理者,都应该遵循最基本的软件工程师道德规范,对社会和环境有强烈的责任感和主人翁意识。这需要我们教育工作者在对学生进行智育的同时,也不要忘了对学生的德育。
4结语
申请工程专业教育认证是高校教育工作者反思工作中的不足,进一步提高教学质量的契机。挖掘《工程教育认证标准》中毕业要求与软件工程课程教学内容的对应关系,为未来的教学工作提出一系列改进措施,为软件工程专业的工程认证提前做好准备,也为软件工程教学质量的提高提供理论支持。
参考文献:
[1]林健.如何理解和解决复杂工程问题:基于《华盛顿协议》的界定和要求[J].高等工程教育研究,2016(5):17-26.
[2]刘成林.工程教育认证背景下现代控制理论课程教学分析与改革[J].中国教育技术装备,2016(18):106-108.
[3]吕品,王淮亭,汪鑫.“对标国外大学,深度融合认证”的软件工程专业人才培养方案[J].计算机教育,2017(1):38-43.
[4]邓娜,陈旭.应用瀑布模型的MOOC制作方法[J].计算机教育,2016(7):89-91.
【关键词】工程认证背景;软件工程;实践课程平台
一、国内工程认证背景下软件工程专业实践课程的发展概述
在新工科背景下,实践教学作为实践性、创造性较强的教学工作,需要在传统工科实践教学模式的基础上进行深入探索和创新,打造符合新工科模式的实践教学平台。国内各大高校学者在工程认证背景下提出了若干工程教育认证与教育教学理念和研究方法。武汉大学计算机学院学者从软件工程专业实验教学定位分析,结合“以学生为中心、以‘创造、创新、创业’为导向”的教育理念,建设基于云的实验教学平台,培养"新工科"学生的核心能力[1]。东北大学软件学院学者结合新工科教育理念提出了软件工程专业理论与实践相结合的计算机网络课程建设与改革方案。湖南工程学院计算机与通信学院学者提出了软件工程课程教学改革整体框架,该框架构建四位一体的教学模式,以学生为中心,从学习资源库、教学团队、角色课堂和评价体系四个方面,全方面提高学生的项目开发实践能力。肇庆学院计算机科学与软件学院学者提出针对学生实际动手能力不足、团队协作意识薄弱的问题,构建了一种基于校企合作的软件工程专业实践教学模式[2]。郑州升达经贸管理学院信息工程学院学者提出了民办高校软件工程专业进行工程教育改革的措施,以培养学生运用所学专业知识解决实际负责工程问题的能力,提高学生走入社会的竞争力。
二、工程认证背景下软件工程专业实践课程的体系构建
结合我院特色,在软件工程传统实践教学模式的基础上进行探索和创新,研究与建设符合新工科模式的实践教学平台。我院软件工程专业设置了大量的实践课程,2018级、2019级、2020级软件工程培养方案中的实践课程分为51学分、54学分、52.5学分,占总学分的比例为31.76%、33.53%、26.38%。在工程认证背景下,专业课程的设置了大量的上机、课程设计、实验、实训、毕业设计等注重学生实践动手能力的教学环节。现阶段专业教师在进行实践课程授课的过程中仍然采用QQ发放作业、收取作业,亟需建立一个满足日常授课、配套的学生练习和成绩考核以及提高学生实践动手能力和创新能力的平台。现阶段软件工程专业实践课程体系包括上机、课程设计、实训、毕业设计4个教学环节。
2.1上机课程
上机课程占比为1/4~1/2课时,为学生巩固所学知识点而开设,其主要内容强调演示证明某个一个算法、设计某一个模块的实验结果。涉及的课程主要为专业课:计算机程序设计基础、数据结构、面向对象程序设计(Java)、数据库原理与应用、网页制作、软件工程导论、可视化建模与UML、JavaWeb编程等课程。覆盖的工程认证毕业要求1工程知识、2问题分析、3设计解决方案、5使用现代工具等[3]。
2.2课程设计
课程设计是在理论课结束后,新开设的实践课程,能够将对应理论课程的内容进行综合的练习而进行课程设计,是实践课程体系中最重要的组成部分。课程设计强调对课程知识点综合应用,实践案例来自企业真实的项目或者国内知名竞赛的题目。涉及的课程有:网页设计课程设计、软件工程课程设计、Java语言课程设计、JavaWeb课程设计、Web前端开发课程设计等。覆盖的工程认证毕业要求3设计解决方案、5使用现代工具、6工程与社会等。
2.3项目实训
项目实训主要开设在第7学期,综合运用多门课程的知识点完成软件工程的项目实训。让学生参与软件的需求分析、设计、实训、测试、维护等软件工程的生命周期,培养学的团队协作、职业规划、沟通、项目管理、终身学习等能力。软件工程专业现阶段的专业方向课程分为web方向课程和移动端开发方向课程,web方向的课程项目实训涉及课程为Java架构课程设计和Java微服务架构课程设计,题目选取了校企合作的企业级应用项目的部分功能,综合了专业基础课网页设计、Java、JavaWeb编程、数据库原理与应用、Web前端开发技术等多门课程。移动端方向设置的Android高级编程课程设计和微信程序开发课程设计综合了H5移动应用开发、Android应用开发、数据库原理与应用、网页设计、移动后端开发等多门课程的知识。其覆盖的工程认证指标点除了课程设计的要求以为,还覆盖了毕业要求8职业规范、9职业规范个人和团队、10沟通等。
2.4毕业设计
毕业设计是软件工程实践教学体系中的最后一个综合性、创造性的实践性教学环节。毕业设计题目从企业中的实践项目中进行选取,采用指导教师和企业导师联合指导的方式进行。毕业设计的整个过程包括选题、开题、中期检查、毕业论文编写、毕业设计项目演示、项目答辩等过程。最后系部邀请企业导师和校内导师联合推选优秀毕业设计,举办毕业设计展等活动。其课程所覆盖工程认证毕业设计要求的指标点除了上机、课设、项目实训的等课程的指标点以外,还加入了毕业要求11项目管理和毕业要求12终身学习。
三、工程认证背景下软件工程专业实践课程的实践平台建设
我院软件工程实践教学平台坚持“以学生为中心、提高实践能力、增强学习能力”为建设目标,采用项目式教学方法来构建学生的知识体系和动手实践能力。该实践教学平台承担上机、课程设计、实训、毕业设计等多个功能,并体现“工程认证”背景中提出的“以学生为中心”的原则。实践教学平台主要包括实践课资源共享系统、实践课在线培训系统、实践课在线练习系统、学生能力分析系统等4个部分。
3.1实践课资源共享系统
软件工程专业实践课各类资源共享系统,对教师、学生开放。主要包括课程介绍、教学大纲周历、教案、演示文稿PPT、、参考资料、课程录音录像等有助于教学提升的资源。该子系统主要包括平台首页、学习资源、翻转课堂和我的审核等模块。在平台首页、学习资源区均能看到课程的相关资源信息,同时支持同学们对某些重难点知识点按照自己的理解录制讲义视频等,通过教师审核后到平台,供其他同学学习。
3.2实践课在线培训系统
实践课在线培训系统与资源共享子系统搭配,通过学生学习的路径设置相应的算法进行评分设置、学分排名等。学生可以通过学习资源信息、完成作业、参与点赞和信息等行为,实时查看班级的排名信息,该分数可以作为教师过程性考核的依据。
3.3实践课在线练习系统
实践课在线练习系统与培训系统搭配,可根据课程内容或知识点进行考试练习。涵盖出题、组卷、考试、导入考生信息、监考、自动评卷/人工评卷等完整流程。可任意指定参与考试班级,指定考试试卷,规定每场考试时间。并可以限定每名考生的重考次数。
3.4学生能力分析系统
学生能力分析系统与在线培训系统搭配,提供督学监控功能,能正确反馈学生的进度、时间,监控每个学员、每门课程的进度等信息。与在线练习系统搭配,为整个班级、每个学生、每次考试进行分析,分析学员的错题情况,对症下药。
四、工程认证背景下软件工程专业实践课程平台的应用效果
该平台应用于软件工程17级、18级、19级等Java语言程序设计1、Java高级编程、JavaWeb开发等3门课程的上机、课程设计等教学过程中。教学过程中取得了相应的教学数据,同时对系统的进一步优化也提供了数据支撑。
4.1教师端和学生端翻转课堂模块
传统的教学模式中,以教师讲解为主。结合课上课下的讲解案例,教师可以将某一门课程的学习资源包括PPT和视频上传到功能区。同时在该模块中允许学生根据自己的理解对该知识点进行重新讲解,通过教师审核通过后该视频资源,使得教学变成双向过程,师生互动更加流畅。同时也将传统的老师讲-学生听的授课模式更改为学生讲-学生听的翻转课堂模式。
4.2积分模块设计
积分模块主要为激励学生学习兴趣设计,在学习过程中进行嘉奖,也能促进学生之间形成良好的竞争,同时为教师课程打分提供一定的参考。积分系统包含了积分获取、学习排行两个功能。积分获取提供两种获取方式,通过学吧论坛点赞互动以及每日签到。学习排行则提供了班级、年级排行等信息。在学生端首页提供了所在班级的学生排行信息,在教师端提供了所教授班级学生的排行信息。
4.3学生练习-测试模块老师可以申请考试教室,等待管理员进行审批,可以查看自己的申请状态,用来查询是否通过审核。申请教室时支持考试试卷上传,学生考试完毕后,将试卷上传到服务器,老师能够查看并批改上传的试卷。本模块支持多个参数查询、成绩报告生成、历史试卷回阅等功能。
4.4学生实践课程练习分析模块
在不断的教学过程中学生能力不断提升,以往采用期中考试、期末考试为学生能力的评估方式,缺乏中间过程有条理、有证据的分析支撑。无法准确获知学生在哪个阶段出现问题,也难以从源头解决。采用学生能力全过程的分析手段,有助于及时发现异常并调整,高效提升学生的综合素质和能力。以上机练习的选择题为例,将错误的选项进行统计形成分析报告,可以帮助教师分析集中的错误知识点,便于教师有目的讲解错误习题。
五、结束语
针对新工科建设和工程教育认证对软件工程特色专业建设和人才培养的要求,以本校软件工程专业实践课程为突破点,针对学生实践能力较低、动手能力不足、团队协作意识薄弱等问题,践行“新工科”工程教育理念、探索培养模式,助力学院向应用技术型高校转型,构建软件工程专业实践课程教学平台,一方面满足软件工程实践课程的日常教学需求,另一方面完善软件工程实践课程的教学体系,加深课程与课程之间的衔接关系,为其他应用型高校软件工程专业提供较好的借鉴和参考模式。
参考文献
[1]熊念,周珊,刘小丽,陆尧胜.基于云计算的跨校区计算机通识课程实验教学研究[J].实验科学与技术,2020,18(03):114-117.
[2]廖卓凡,王静,熊兵.新工科背景下“软件工程”课程教学与实践改革研究[J].计算机时代,2021,{4}(05):81-83+87.