时间:2023-03-14 14:53:30
引言:寻求写作上的突破?我们特意为您精选了4篇软件工程课程设计总结范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
0、引言
软件工程专业本科生的培养目标是面向软件产业界对软件工程专业技术人才的需求,培养具备扎实的计算机科学技术基本知识,受过良好的软件设计、开发和工程管理方法基本训练的应用型高级技术人才。
Java程序设计是软件工程专业的一门重要课程,该门课程的课程设计作为实践教学的重要环节,对培养学生的学习能力、问题分析与解决能力、实践创新能力起着重要的作用,同时还可以培养学生的软件工程思想,提高学生的软件开发能力。
1、什么是课程设计
课程设计是学生在学完课程之后集中一两周时间,以个人独立完成或团队分工合作等方式,围绕某一设计题目进行专业实践活动,旨在巩固、强化、拓展所学知识,提高学生实践操作能力和自学创新能力,培养学生团队合作意识。
课程设计是针对性较强的实践教学环节,将课程基本理论与工程实际相联系的综合训练,是培养应用型人才的一个重要步骤。课程设计可以使学生通过查阅资料、分析题目、确定设计方案等一系列步骤将理论知识与工程实践相结合,从而加深对所学知识的理解与巩固,提高整体思维能力、综合应用能力和创新能力。
2、Java课程设计大纲的制定
根据Java程序设计课程的教学大纲要求,制定相应的课程设计大纲,明确课程设计的目的、任务要求、时间安排、设计文档要求、考核方式、备选课题等。由于课程设计以个人独立完成为主,因此课程设计的难易程度应适当,保证学生在指定的时间内能顺利完成。根据计算机技术的应用范围与学生当前的知识储备情况,备选题目可设置多种类型,如小型桌面软件类、管理系统类、网络编程类等题目,当然,学生也可以自拟题目。课程设计文档是学生对自己的作品在系统总体结构、功能模块、程序流程图、类图、主要算法、遇到的主要问题与解决方法等方面进行说明的文字材料,同时要求学生在文档的最后总结在完成课程设计过程中的心得体会。
3、Java课程设计方案
Java课程设计的实施主要由选题、指导、考核3个环节组成,其中,选题是首要的步骤,指导是教师了解学生遇到的问题和完成进度并给予辅导建议的过程,考核是对学生的作品进行检查与评价。
3.1 选题
Java课程设计题目的设置要与软件工程专业培养目标和Java课程的教学大纲要求相一致。课题应尽量满足理论知识与专业技术相结合、软件工程理论与项目实际需求相结合的要求,既要全面覆盖理论课程所学知识,适合实践教学和启发创新,又要联系工程实际,并适应本专业的发展趋势。课题应具有一定的可操作性、设计性、灵活性、挑战性和趣味性。课程设计内容难易程度的确定要以中等水平的学生在规定时间内经过努力能完成任务为依据。
另外,课题应尽可能地与学生的实际学习、生活相关,这样学生在调研、分析设计时更容易了解需求。例如,学生成绩管理系统、图书信息管理系统、宿舍管理系统、ATM柜员机模拟程序等课题与学生的学习、生活相关,在使用计算机时常用的计算器、画图板、音频或视频播放器等都可以作为选题。
在学生明确课程设计的大纲要求后,根据自己对Java语言知识的掌握程度与感兴趣的研究方向,可以从课程设计大纲的备选题目中选择适合自己的题目,也可以自拟题目。
3.2 指导
在课程设计中,学生是主体,教师是主导,因此指导应讲究方法与艺术,最大程度地发挥教师的导向作用与学生的主动性与创造性。指导分为两个阶段,第一个阶段是对学生选题的指导,第二个阶段是学生在完成课程设计的过程中教师对学生的集中辅导与答疑。指导过程同时也是教师对学生进度的检查与监督过程。
1)选题指导。
教师在指导学生选题时要说明各种题目的难度与要求,根据学生基础与能力的不同,因材施教,推荐不同的题目,帮助学生把握好方向。
对于理论基础好、动手能力强的学生,可以给他们提供难度较高、有挑战性的题目;对于理论基础好动手能力一般的学生,难度较高、可操作性强的题目可以激发他们的探索精神、提高动手能力;对于理论基础与动手能力都一般的学生来说,难度中等、有可参照原型的题目较适合他们;基础差的学生要独立完成设计比较困难,因此教师可以建议他们选择源于教材、难度低的扩展性题目。
2)设计指导。
学生在课程设计的具体执行过程中主要由个人独立设计与教师指导两个部分构成。个人独立设计是学生利用课余时间对自己的课题进行设计实现。除此之外,在课程设计期间,教师安排每周2次,每次4~5学时在实验室集中指导与答疑。通过这样的方式,教师可以参与到学生的设计中,了解并开拓学生的思路,发现问题并引导如何解决问题,还可以发掘学生的潜能,同时也可以对整个课程设计的过程进行监督与管理,提高课程设计的质量与效果。
在Java课程的教学过程中,教师应该逐渐了解学生的学习态度与学习情况,因此,鉴于学生态度与基础不同,教师在设计的指导上也要因材施教,有针对性。对于理论基础好、动手能力强的学生,教师可以引导他们进行深入的探索与研究,进行创新性的设计,而不仅仅局限在基本设计要求上。教师要参与他们的设计中,听取他们的思路,对有一定创新性、合理的想法给予鼓励,并给他们提出建议,推荐有关的资料。由于这类学生对新技术的求知欲强,但新技术在最初应用时容易出现问题,所以教师在听取学生的思路时,要及时发现并纠正他们设计中的不合理成分,引导他们朝着正确的方向前行。
对于理论基础好动手能力一般的学生,他们在系统分析与设计中一般都能够完成得很好,但是编程实践的能力欠缺,因此教师通过启发式的方法引导学生,发挥学生的理论水平进行创新性的设计,在系统实现时给学生推荐参考资料,加强对基础知识的应用能力。
对于大部分理论基础与动手能力都一般的学生,教师要帮助学生加深对理论知识的理解,同时在设计上多加指导与启发,引导学生更为完善地完成设计,并在设计中或多或少地表现出一些自己的特色,然后在编码实现时给予更多实际操作性的指导。
在课程设计的指导中,除了教师的指导,也可以采取“强帮弱”的形式,让能力较强的学生参与能力较差的学生的系统设计与实现中,促进他们之间的交流与帮助。
3.3 考核
学生在规定的时间内完成课程设计之后,教师要对学生的作品进行考核,考核的目的不仅仅是为了检查学生完成的情况,更重要的是给他们一个讲解其设计思路并演示作品的机会。考核主要采取学生讲解作品分析设计思路并演示说明作品、教师提问的答辩考核方式,这有助于学生加强知识的全面理解,培养其语言组织与表达能力、应变能力等。
答辩过程要求全班学生参加,分为学生自述、教师提问、学生提问3个环节。首先由学生针对其作品从系统分析、设计、关键技术与算法、存在问题等方面进行讲解,然后演示作品。之后,教师与其他同学可以对答辩人的作品从设计思路、功能、性能、代码与技术等方面进行提问。通过答辩,并结合学生的设计说明书、答辩水平、动手能力、独立分析问题与解决问题的能力、创新精神与学习态度等进行综合考评。对优秀设计者,给予表扬与鼓励,并号召其他同学学习,在评分时适当加分,以调动学生进行课程设计的积极性;对仅完成基本要求的学生,肯定他们的努力,并鼓励他们多实践;对未达到要求的学生,要求其进行整改或限期令其重做。
4、关于Java课程设计的几点思考
这几年Java课程设计的教学效果表明,课程设计为学生巩固所学知识并能学以致用、提高综合应用能力提供了重要的实践平台,教师也从课程设计实践教学中获得了一些有用的经验,为进一步完善课程设计教学提供帮助与参考。
1)注意因材施教,根据学生的基础布置不同的课题。
制定课程设计大纲时,首先制定一个对于大多数学生都比较合适的基本实践要求,然后再针对不同学生的基础设置难易程度不同的课题。这样对大多数学生来说,他们既不会感到实践要求高不可及,又感觉到有一定的难度,比较有挑战性。
2)及时发现并总结问题,积累经验。
在课程设计的整个教学环节中,教师要善于从中发现并总结问题,给予及时、到位的指导。例如,在指导学生完成课程设计时,对于大部分学生普遍遇到的问题,教师要及时发现并进行讲解;从学生上交的课程设计文档中发现学生利用面向对象技术进行程序设计存在的问题,分析问题产生的原因,以改进教学方法;在课程设计答辩考核之后,教师还要对全班课程设计的情况进行全面总结,不断改进。总之,在课程设计的任何一个环节,教师都要善于发现问题,总结经验。
3)教师要不断完善自己的知识结构。
从课程设计的大纲制定、任务布置到指导与考核都需要教师付出很多时间与精力,而且对教师的专业知识与能力要求也很高,因此要想保证课程设计的质量与效果,很大程度上取决于教师的责任心和知识结构的完善。
4)在课程设计中培养学生的软件工程思想。
JaVa程序设计是软件工程课程的先修课程,在讲授程序设计语言时,教师可以适当灌输一些软件工程的思想,让学生对软件开发的基本过程有初步的认识,避免学生陷入“学习程序设计课程只是学编程、软件开发就是编程”的思想误区。实际上,学生在课程设计过程中对系统进行分析、设计、编码、测试等都体现了软件工程思想的运用,程序设计是软件开发过程的一个阶段,通过课程设计能够加深学生对程序设计语言的理解,同时也能较好地培养学生的软件工程思想,为后续软件工程课程的教学打下良好的基础。
5)根据任务的大小,可适当采取小组协作方式。
0.引言
随着软件产业的快速发展,市场对软件人才的需求日益增加,对人才的软件能力属性和从业适应度也提出了更大的挑战。软件工程作为一个独立专业的人才培养模式,也已在各大高校展开。由于此专业起步慢、人才缺口大,关于其培养思路的探讨从开始设置本专业至今,都得到了业内教育界的积极思考。另外,软件工程是计算机高等教育的一个分支,在培养方案和培养模式的讨论议题上,在宏观上依然没有走出计算机基础学科的思维模式;在微观上关于专业方向和专业特色,很多的执行措施并没有太大明显的专业性思路。软件人才在专业性和特色性体现并不明显,更多还是盘旋在传统计算机学科专业的固化模式里。
长期以来,由于培养目标单一、培养过程与企业需求的脱节和错位,高校软件类人才培养不论在数量还是质量都难以满足产业高速发展的需要,也不能很好地做到柔性接口对接,无法为软件产业的发展壮大提供强有力的人才支撑。由此产生了软件实际需求的快速增长与适应性软件人才极度缺乏的矛盾,一方面人才缺口很大,另一方面高校的软件毕业生就业面依旧很窄,专用性不突出,通用性不健壮。对于软件产业的稳固发展,除了要有一定数量的研发人才之外,更欠缺的是批量熟练掌握软件技术原理、柔性适应新型需求、能够灵活贯彻软件行业专业发展目标的应用型技术和架构人才。
1.软件工程学科与软件素养
软件工程是一个成长中的学科,目前还存在不小成熟和提升的空间。它的理念来自于多个学科,并非一个单一的纵向纯粹理念,使它的工程特性体现并不明显。但它的培养目标和学科目的,以及培养对象和实施规范,却是一个典型的工科门类,这在很大程度上可以反映出软件工程的教与学可使用的材料、可借鉴的案例极为匮乏。文献关于软件工程教与学提出“软件工程所有的课程必须要根植现实基础”,并指出“软件的概念、原理,以及解决方法应该贯穿于整个教学活动中以帮助学生建立起一个软件工程心态”。后者的论断是软件工程的出发点也是终结点,所以在整个教与学的实施过程中,问题在于如何很好地提供一个基于以上两点的教学与实践环境,以帮助学生建立起一个“软件工程心态”。所以,软件工程学科的发展目标就是在人才培养过程中创设和浸入软件的可持续素养,是理论与实践的有效融合方案实施,更实现了人才与学科双向的自适应性和可发展性。
软件工程学科的特点决定了软件工程课程的综合性和实践性并重。传统的教学模式在理论和实践环节上都存在一定空缺。一方面,国内高校软件工程课程教学仍停留在课堂授课为主,实践环节薄弱。而理论教材相对于不断涌现的新技术、新方法、新工具,都显陈旧。软件工程的教材不可能做到一本到底。另一方面,学生由于缺乏完备充分的实际项目研发经验,不能很好地理解理论联系,做不到学以致用,做不到主动学习,导致学生学习完这门课程后仍难以面对一项完整的软件项目开发。在进行软件开发时会出现许多问题,如文档不规范、建模使用混乱、CASE平台体会不深、软件项目估算与度量没有方法、系统化软件测试过程等。这些弊端,无法建立起一个自主的“软件工程心态”,也并不能够很好地体会软件素养的真正实质是随需而动、随时而变,而不是纸上谈兵。
软件工程学科和软件工程课程都指出了一个重要参与因素,就是软件工程专业培养过程的实践性问题,这里一般规划了软件工程课程设计。在课程实施时做到课堂与设计的相辅相承、有效融合。软件工程课程设计的目标使学生系统地掌握软件工程的过程、方法和工具三要素,为学生将来从事软件的研发和管理奠定基础。软件工程教学内容是围绕软件生命周期展开的,其相关的过程阶段、开发技术以及工程化的开发过程(软件过程、配置管理、项目管理等)必须通过实际软件问题的实际求解过程以及团队合作进行体验,而综合的软件开发能力的锻炼和培养需要借助一个完整的软件项目开发过程,而不仅是一个小的作业或者几段程序的累砌。因此,以课程设计为基础的实践展开方案是巩固课程教学成果、培养学生软件工程应用能力的重要因素。为了高素质、高质量的人才必须强化理论与实践的结合和跟进,通过强化实践的素质培养来提升人才素养。
2.专业知识架构演化需求
软件工程的专业教授过程,是一个以软件生命周期为纵向线索的执行过程,涉及面广,学科间融合度大。整个知识体系的架构拓扑,不能偏离这条主线。但它的具体实施,并非仅是一个简单的直线序列,首先,需要一个全面扎实的基础底层知识支持,这里需要计算机、软件工程等相关学科的基本知识体系形成,例如数学、管理、经济学、计算机和软件技术基础等的前驱理念。其次,执行过程是个阶段间存在重叠、螺旋、迭代的局部整合结构,每个阶段间存在严格的前驱后继关系,逾越和跳跃的处理方式,均小可行,并且每个阶段的展开过程,有着自己的知识体系,同时都存在知识间的前因后果联系。再次,知识结构的纵向上升轴线,需要实践的并行跟进,实践反过来补充完善教学内容。接下来,进入项目实训过程,综合先期的理论知识和实践经验,以项目管理为指导,通过一个综合性中等及偏上的案例。最后,总结案例过程,汇总相关资料,进一步完善案例内容,补充优化下一阶段教学过程。
这里定义此架构为一个金字塔式的三维体系,如图1所示。
由于软件工程知识结构的综合性和特殊性,金字塔的每个横面和纵面展开细节是按需驱动的平台。并且,知识结构的新型性和技术性是展开细节的主旨思想,即软件工程的教科书知识点不可以拘泥于一本书。课程更多内容,来自于最新的科研、学术、文献和互联网资料。为了更好地完成实践意义和应用目标,在整个教学过程中,知识架构里需要一定实质科研项目的引入,并非几个简单的课程作业。这个实践环节,也是个重叠、螺旋、迭代、逐渐深入、实时反馈总结的过程。这一点,和软件工程的基础理论实施是相辅相承、相得益彰的。理论和实践的实施是专业知识中金字塔的刚性框架是不变的,同时它的参与细节和过程是目标牵引、技术跟进和理论优化完善的,所以此架构的演化,是基本结构不变,参与细节柔性优化。
3.“A&D”+“T&P”融合理念及实施方案
基于图1所示的软件工程理论与实践进阶体系结构,提出“A&D”+“T&P”的融合理念。此理念体现了4个关键字:A&D、T&P、软件工程及适应性软件素养,其中A&D(Analysis&Design)表示软件的分析与设计素养的统一,T&P(Theory&Practice)表示理论与实施的相辅相承。在此理念的实施过程中,秉承软件工程实施过程和先期取得的成果,从软件工程学科的发展和软件从业人才培养角度出发,坚持实施和应用的先导地位,强化分析与设计能力的深化和提升、理论与实践的融合和相长。理念的研究思路强调了自主和适应,即从软件工程的教与学实践出发,紧紧围绕软件工程专业特点,突出人才的适应性和专业特色性,建立可行、自主的理论落实方案,实施深化提升软件素养的分析与设计过程的全面和通用,做到分析与设计、理论与实施的高效结合,推进课程实施和具体应用向实用推广过渡,突现软件工程人才“厚基础、宽口径、强适应、针对性”的素养结构。
在“A&D”+“T&P”的推进过程中,针对高校软件工程学科的专业教育,随着软件工程学科的逐渐细化及不同研究方向间存在的耦合性关联,加上其自身应用行业领域的广泛性和普遍性,计算机各类专用和通用人才的迫切需求,有关计算机在企业、公司、市场等各个角落举足轻重的地位和广阔的发展前景,以及它和其他门类专业间存在的千丝万缕的交互和融合关系,本理念实施方案的主旨目标着眼于高校计算机教育与自适应应用型人才培养的探讨和实施。其实施的架构粒度化为教材框架的适应性创设和更新、课程设计向实施应用的无缝过渡、传统理论基础与前沿技术技能的有效融合和统一及两条主线架构的分析与设计技能提升方案。图2所示为整个方案的实施结构及成果演化拓扑图。此理论的提出有如下创新和建设:
①本理念体现为4个方面的融合和统一,即自主教材建设,重视以课程设计为基准的应用进阶过程,强调基础理论与前沿技能理念的融合,以软件生命周期为主线,体现结构化及面向对象技术。
②A&D、T&P的融合和统一。做到了分析与设计多种思维方式的融合,理论与实施的教学相长和相辅相成。
③软件分析与设计的技能在整个软件素养培养过程的强化和深化。
④适应性软件人才素养的定位,打破课程,建立自主的学科知识结构拓扑规划思路。
⑤硕带本、高年级带低年级的连带式人才培养梯队建设。
⑥“课程设计一软件、嵌入式大赛组织一实践项目参与”的应用实施方案。
⑦基于以上6点,建设了自主教学的《软件工程》教材和讲义。
4&自主性创新型与工程化目标的架构创设
本理念的主旨实施目标是实现自主性创新型的专业建设,以及人才工程化的培养目标。结合图2所示实施结构及演化拓扑过程,在具体实施过程中,序列化为以下4个展开侧面。
4.1自主教材框架的实施
软件工程是计算机学科中一个年轻并充满活力的研究领域,与此相关的软件工程课程是高等院校计算机教学计划中的核心课程。参考大量的国内外软件工程学科教材,从实际出发,总结多年的教学、科研和学科成果,结合软件工程及计算机专业人才素养提升深化的需求,在多个实际软件项目研发过程中积累经验教训,充分考虑软件工程和计算机专业本科生和研究生的知识结构,以软件的生命周期为线索,结构化和面向对象杂揉交织为分析与设计统一理念,项目规划为基本渗入点,统筹传统软件工程和现代软件工程的知识结构特点,规划书稿章节,深入浅出,理论联系实际,在实践中总结理论要点,有效组织书稿内容,自成体系。教材已由科学出版社出版,并在软件工程、计算机专业展开讲授,同时成为软件工程学科硕士研究生的基础参考书籍,取得了不错的效果。
4.2课程设计向实施应用过渡
课程设计是辅助软件工程课程实施的有效实践方案。在软件工程的课程讲授过程中,结合课程理论,已建成多个具体课程设计实施个案,具备了全套课程设计实施的文档、软件及作品。在课程设计的基础上,加大了两点力度:首先,软件、嵌入式大赛的组织和参与,进一步巩固深化了理论基础,演化了课程设计作品向参赛作品的转化,加强了软件的全面性、兼容性、商业化和实用性,从各类大赛的结果和作品自身特色上,充分体现了课程设计在知识点和技能点演化方面的亮点和优势。其次,在课程设计和参赛基础上,在软件工程教师的科研项目中,加大了本科生参与的力度,实现了学生阶段直接进入实施的目标,效果良好。有的学生在第4学年已可以进入软件公司直接展开研发工作,并有着不错的反响。
4.3基础理论与前沿技能理念的融合
基础理论与前沿技能理念的有效融合,体现在3个方面:软件工程学科课程拓扑的纵横两个侧面的思考,课堂教学、课程设计,实践应用的力度分化和统一。一方面,关于课程拓扑和知识结构衔接,做到了变通和灵活。根植实际和市场,建立起一套适时而动、随需而动的拓扑方案,即不拘泥一套培养计划,加大和突出实用性,以软件工程自身的特点为培养计划的实施线索和展开思路,在基础理论的讲授实践过程中,加大了新技术、新技能、新思想的渗透,并充分考虑和变通方向课和选修课的设置和实施。另一方面,打破了传统课堂填鸭式理论灌输方法,在启发式教学的理论基础上,灵活变通教与学角色、教师和学生身份,引导学生做专业学习的主人,强化讨论班、答疑课和讲座的力度,在讨论和答疑过程中,实现了知识点、技术点和前沿新技能由点到线、由线到面的统一。再者,建立了有效的硕带本、高年级帮低年级的培养梯队。不定时地让研究生和高年级本科生走进在授课程,交流研发经验,总结失败教训,交流学习和实践心得,鼓舞了学生自主学习的主动性和自觉性。
4.4软件分析与设计的两条线索
在上述展开过程中,打破了传统结构化和面向对象两个思路分阶段实施的思路,转以软件生命周期为主旨线索,建立了衔接有效的线索阶段划分。针对每一阶段,做到了结构化和面向对象两种思维方式的并行化展开,在对比中加强阶段目标的实现方式,在实现中加强两种思维方式在软件运作过程中的意义。
5.实践应用情况
本理念的实践应用本着“以服务为宗旨,以就业为导向”的办学方针,更新人才培养观念,把适应性人才的自主培养放在极其重要的位置,切实从专业学科本位向职业岗位和就业本位转变,实现教育与就业的对接,切实提高了软件专业素养。
自主教材框架的实施,打破了传统课堂与设计隔离的弊端,建立了多渠道的学习和实施方式。在实施中,巩固了实践的引导作用,在实践中自主完成理论的深化和融会贯通。由于教材的应用案例为多年的经验总结,理论基础的成形参阅了大量的书籍和文献,成熟、稳定、熟练、典型、规范,提供了身临其境的氛围和案例过程。起到了事半功倍、触类旁通的启发式教学目的,效果良好。
灵活变通的学科拓扑方案设计,加大了实践应用课程和选修课程的力度,强化了课程设置的适时、适人和适景,以课程设计为驱动,拓宽了学生的专业视野和觉悟。
提升了学生分析设计软件的技能,尤其在全面性和商业化方面取得了长足进步,提高了学生参与各类比赛和各项科研项目的热情,成果奖项逐年上升。
“硕带本、高带低”的帮带方式,加强了学生间的交流,提高了学生的学习兴趣,从另一层次上强化了学生参与实践、勤于思考、勤于应用的热忱。
中图分类号:G642 文献标志码:A 文章编号:1673-8454(2017)08-0050-03
一、引言
《软件工程》是指导计算机软件开发和维护的工程学科。软件人才所需要掌握的系统理论和方法,所需要具备的软件项目的理解与掌控能力、全面的实践开发能力以及良好的沟通协调能力都与《软件工程》课程的教学内容和教学目标紧密相关,因此《软件工程》课程在软件工程专业人才的培养上具有重要地位。
《软件工程》教学内容理论性强,表面上一看就懂,实际上很难掌握。近年来,该课程的教学方法和手段不断改进,在教学效果上有了明显提高,但仍然存在诸多问题。例如,将基础理论和方法的学习与软件开发实践割裂开来;在教学方法上以教师讲授为主,忽视了对学生积极性、主动性、创新性的培养;强调学生个人软件开发能力的发展,忽视了团队协作精神的培养等。
CDIO[1-3]教育模式是近年来国际工程教育改革的最新成果,CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),注重通过实做来加深对理论知识的理解和掌握,培养学生的创新意识、项目开发能力和团队协作精神。《软件工程》这门课程对于没有开发经验的学生来说枯燥抽象,无法产生共鸣。学生只有通过实践才能理解并掌握其理论知识,才能熟练运用相关工具完成软件建模和软件开发。其次,随着软件规模越来越大,软件开发工作必须以团队形式进行,但是很多大学生都缺乏良好的沟通能力和团队精神。采用CDIO的教学模式,学生以小组形式共同完成软件开发任务,必然会提高学生的沟通协调能力。因此,将CDIO模式引入《软件工程》课程教学势在必行。
翻转课堂[4-6]是一种新型的教学模式。传统情况下,学生的学习过程分为两个阶段:第一阶段是“知识传授”,通过教师在课堂上的讲解来实现;第二个阶段是“吸收内化”,在课后由学生通过复习、写作业等形式来实现。“吸收内化”的过程需要灵活运用所学知识解决问题,相对于“知识传授”阶段来讲难度更大,但此时却缺乏教师的支持和辅导,学生常常感到挫败,渐渐失去了学习动力,作业抄袭成了普遍现象。“翻转课堂”对学生学习过程进行了重构,“知识传授”在课前由学生自主进行;“吸收内化”是在课堂上通过教师讲解和师生互动来完成。在学习《软件工程》课程时,学生普遍感到看书时仿佛理解了,合上书本后却什么也没有留下,说明学生并没有掌握软件工程思想的精髓,知识的吸收与内化没有做好,需要教师在这一过程中提供及时的帮助。
因此,在CDIO模式下融入翻转课堂的思想,要求学生课前完成知识的了解,课堂上对学生理解不了的难点问题重点讲解、讨论,同时利用先进的实践环境进行实操训练,一定能够有效提高课程的教学效果。
二、CDIO教育模式在《软件工程》课程教学中的实施
在以往的教学中,理论教学在前十二周进行,然后到学期末尾进行软件工程的课程设计,为期两周,这两部分完全脱节。在理论教学中,由于没有实践环节,学生单纯学习理论知识,感觉枯燥乏味,不知所云,学习效果差。到了课程设计环节,由于前期没有打下坚实的理论基础,学生只是重视代码的编写,对分析和设计往往是在课程设计验收时才匆忙写一写,应付了事,并没有得到应有的训练,没有领会软件工程的思想精髓。
采用CDIO教学模式后,将《软件工程》的理论教学和实践教学有机地融合在一起,同步M行。
1.学生组建若干个软件项目开发小组
授课之初,将学生以自愿为原则分成若干组,每组3~5人,确定一名负责人,然后大家共同选定一个软件开发项目,这些项目可以由教师指定,也可以由各组同学按兴趣自行选定,教师给出指导意见,确定项目范围。
2.随着理论教学的推进,同步开展项目实践活动
软件开发分为需求分析、软件设计、编码和测试等阶段。按照这些阶段的先后顺序安排教学内容,并同步开展实践活动。例如,学习需求分析时,要求学生围绕自己的项目进行充分的需求分析,包括查阅资料、实地调研和分析建模,并撰写需求分析文档。学习软件设计时,要求学生进行项目的概要设计、详细设计和设计建模,撰写软件设计文档。
在开展软件工程各个阶段的工作时,要求学生采用业界常用的软件建模和开发工具,例如Enterprise Architect、MyEclipse、Visual Studio等。
3.充分利用课堂教学和课程设计之间的空档时间进行软件编码
软件工程理论教学结束后和课程设计开始前的这段时间是编码阶段的工作时间,每个项目组根据之前的分析和设计结果,选择程序设计语言和开发工具进行编码工作,实现系统的核心部分。
4.在课程设计时间段进行软件测试,编写课设报告
在软件工程课程设计的两周时间里,采用人工测试和机器测试相结合的方法进行软件测试,记录整个测试过程,包括测试用例和测试结果,形成测试报告。最后,根据课程设计文档的要求撰写课程设计报告。
采用这种教学模式,在理论教学中采用案例教学方式,让学生直观地感受软件工程的基本原理与方法;在课程设计中,通过动手实践使学生深入理解和掌握软件工程的基本原理与方法;通过研究性和探索性学习进行课题研究等形式,培养学生的研究能力和创新精神。
在实施CDIO教学模式时应该注意的是,学生的实践活动不应该着眼于一个个孤立的小任务,而应该定位在一个完整的项目上,随着课程内容的进展,一步步地完成软件项目的各个阶段任务。这部分的难点在于项目规模的控制,项目过小学生无法体会软件工程的重要性,项目过大会占用学生过多的时间。可行的方法是将一个规模较大的软件项目划分成若干个子系统,每个小组负责一个子系统的研发,各个小组之间分工合作、协调配合。在实践过程中,一定会遇到各种各样的问题甚至是失败,正是这些问题和失败使学生充分认识到软件工程方法的重要作用。
三、翻转课堂在《软件工程》课程教学中的应用
1.翻转课堂网络教学系统
实行翻转课堂教学需要一个教学软件系统的支持,现在有很多软件公司都提供了功能丰富、使用方便的教学系统。如果要实现特定的要求,可以自行开发。软件工程教学系统运用Java Web技术基于SSH框架开发,分为数据访问层、业务逻辑层和表示层,其体系结构如图1所示。使用本系统,学生可以方便地查看教师的任务单、观看视频、与教师进行交互和提交文档和作业等,教师可以任务单、上传视频、及时了解和掌握学生学习的情况以调整授课策略。
2.确定适合翻转课堂教学模式的教学内容
本科的《软件工程》教学主要讲述传统的软件开发方法和面向对象的软件开发方法,适合翻转课堂模式的教学内容比较多,如结构化分析、结构化设计、面向对象分析和面向对象设计等。这些内容都包含了建模技术的学习,如UML等,这些技术及其工具都比较简单,容易掌握,难的是如何将这些技术应用到具体的软件项目分析与设计中。因此,将建模技术的学习放在课前通过观看视频进行,将较难掌握的分析和设计方法结合具体项目在课堂教学中展开,通过师生之间的交流讨论,使学生能够对这些理论和方法有更深刻的理解和掌握。
3.制作教学视频
教学视频是实现翻转课堂的基础和前提。教学视频的制作,需要一个功能强大的视频制作软件,例如Camtasia Studio、OBS Studio等。视频内容要求体现重点和难点,将时间控制在20分钟以内。可以恰当使用背景音乐来营造良好的学习氛围。视频画面要求简洁清晰,富于变化。在视频中最好有一些分析和推导过程,教师通过手写板等工具对重点内容进行勾画并配以细致的讲解,吸引学生的注意力。教师的影像可以出现在画面中,增强面对面进行交互的感觉。在视频中放置一些问题,学生回答后才可继续观看视频,这一方面能够引导学生总结和思考,另一方面能使教师了解学生对知识的理解和掌握程度,从而更好地安排后续的课堂教学内容。
4.课堂教学
在课堂教学中,教师首先针对学生课前提出的问题和学习任务单完成的情况,有针对性地讲解相关知识点。然后以一个实际的软件开发项目的分析或设计为目标组织学生分组讨论。在此过程中,教师可以参加各组的讨论并进行答疑,对存在的共性问题统一讲解[7]。最后,随机抽取2~3组学生汇报其工作成果,并请其他组的同学发现存在的问题,然后教师再对这些问题进行点评,提供更多有针对性的帮助。
5.反馈与评价
教师根据学生掌握知识的情况以及反馈的各种意见,总结教学环节存在的不足,以此调整教学内容和教学方式。教师在评价学生时主要考虑两方面,一是根据学生观看视频、回答问题的情况以及在网上交流的情况;二是根据学生在课堂上的表现,包括学生所负责工作的难度和工作量,在组里的参与程度,和教师、其他学生的互动情况等。教师将评估结果及时反馈给学生,促使学生发现自身存在的问题,不断进步。
四、结束语
通过在《软件工程》课程中实施CDIO和翻转课堂相结合的教学模式,解决了传统教学模式的缺点,使学生成为主动的参与者,激发了学生的学习兴趣,发挥了学生的主观能动性,更有效的促进学生对知识的内化,教学效果得到了显著提高。不过,翻转课堂教学模式要求学生必须进行课前自学,否则教学效果很差,如何保证学生能够自觉地学习需要进一步探索。
参考文献:
[1]李彤,赵娜.基于CDIO的软件工程国家精品课程建设[J].计算机教育,2012(1):14-19.
[2]n智,张振虹,李兴娟.基于CDIO 理念的软件工程课程教学改革[J].计算机教育,2010(11):56-59.
[3]汪军,强俊.基于CDIO理念的软件工程专业人才培养模式的研究[J].重庆工商大学学报(自然科学版),2015(6):70-74.
1课程简介
软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及工程概论、项目管理、程序设计语言、面向对象的需求、分析、设计、测试、维护、数据库、软件开发工具、系统平台、标准、设计模式等,是一门综合性很强的软件课程,在计算机教学体系中占有十分重要的地位。
2国内外软件工程课程的现状
2009年9月,高等教育出版社正式出版、教育部高等学校计算机科学与技术教学指导委员会编制的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》(以下简称试行规范)中列出的“计算机科学与技术”专业方向之一就是软件工程。据信息查阅,目前有“软件工程”方向的教育部国家示范性软件学院有38所,全国高校开设“软件工程”专业方向授课的学校有两百多所。
以美国卡耐基•梅隆大学为代表的国外大学已经开发出非常实用的工程软件人才培养课程体系,它包括10个知识体系、58个知识领域[1]。2007年开始,国内的软件学院纷纷引进他们的课程体系,意在培养出中国的国际化工程型软件人才。各高校的软件工程方向本科教育也正在加快向工程型教育转变。以使课程教育紧密结合现代软件产业需求,课程内容结合一些实际工程项目[2]。
事实上,软件工程是一门教学难度比较大的课程,主要原因在于其以下4个特点。
(1) 软件工程作为指导计算机软件开发与维护的工程学科,研究范围广,包括技术方法、工具和管理等方面;
(2) 软件工程是一门边缘学科,内容丰富,涉及领域广,包括计算机科学、计算机技术、系统工程、管理学及经济学等。
(3) 软件工程还是一个相对比较年轻的学科,尚未形成成熟的教学模式,教材上例题零零散散,几乎没有较为成熟的实践内容。
(4) 软件工程是一项不断发展的技术,相关课程内容更替很快,如果继续偏重传统的成熟理沦,会造成与最新技术的严重脱节。但是完全讲解新技术,也不适合软件开发的实际需要,而且,课堂上也没有时间讲述全部新旧知识点。
国内高校的软件工程课程教学实践仍处在一种探索和发展阶段。在实施过程中,仍然以教师的思路为主,以此带领学生进行知识的学习。学生不可能独立面对一项完整的项目开发,仍然处于被动接受知识状态,缺少自主思考,很难体会到一个完整的项目开发过程。这种教学状态培养的学生在实际应用中不知道如何开展项目,也不懂如何推进项目。另外,课程的考试大多以笔试为主,一张试卷就决定学生课程学习成绩,这在很大程度上导致学生在软件工程课程学习中重理论轻实践。
为了弥补校园软件工程教育弱的现状,很多公司开设软件工程教育实习基地,把学生编入一个具体项目开发组,让他们在实际项目开发中建立工程概念,熟悉项目开发流程,参与项目具体代码和文档的书写,为胜任未来公司实际工作积累经验。为了适应外包软件人才的需要,2007、2008年市场上甚至出现了不少软件工程人才培育公司。
另外,大学为了培养学生职业技能也增设了专业实习,很多软件工程专业的学生被输送到相关的培训公司参加项目实习,而校园的实习也主要是引进公司的实训项目,以培养学生工程意识。
3电科院开设本课程的情况
软件工程课程包括的主要内容如下。
软件工程理论概述、软件开发过程、软件开发工具(建模技术)、项目管理、软件需求、面向对象、软件过程、软件建模、模式设计、极限编程、敏捷软件工程等。
作为一门独立课程,软件工程课程首先需要解决的问题是根据需要选择合适的授课内容;在具体教学过程中选用多本教材,它们的内容对比如表1所示。
北京电子科技学院开设本课程已有多年,经过对历届计算机科学与技术系学生的授课,课程教学处在不断摸索和进步之中。结合其他高校开设该课程的情况,并考虑到就业学生参与计算机项目开发的人不多这一情况,我们在课程内容上有所选择,主要是加大对软件工程项目的介绍和讲解,对软件合同中的甲方内容进行讲述,用政府电子政务项目做举例来说明软件工程的用处。从2008年开始,我们确定了软件工程课程的内容及基本要求,见表2。
通过本课程的学习,我们希望学生掌握软件工程的有关概念,了解各阶段的主要技术、方法与工具,具备协助和管理软件开发的基本能力。同时,强调文档,学习文档模板的学习。另外,在更加细化的内容上面,如分析方法之数据流图、分析工具之UML语言、测试方法之黑盒测试、白盒测试等方面,我们会根据实际的技术发展作适当的调整,以便跟上新技术发展和市场需求。
4教学方法和手段
软件工程课程的教学难度大,要讲好则需要下很大的功夫。
4.1软件工程第一堂课
课程定位:软件工程是计算机学科中一个年轻并且充满活力的研究领域。20世纪60年代末期以来,为克服“软件危机”,人们在这一领域做了大量工作,逐渐形成了系统的软件开发理论、技术和方法,它们在软件开发实践中发挥了重要作用。今天,现代科学技术将人类带入信息社会,计算机软件扮演着十分重要的角色,软件工程已成为信息社会高技术竞争的关键领域之一,而软件工程已成为高等学校计算机教育计划中的一门核心课程。
突出课程的核心地位,从“工程”角度去引导学生对本课程的认识;从“就业”角度去阐述本课程的重要性;从“大型软件”开发的兴趣来看本课程[3-4]。
4.2软件工程的实践
软件工程实践是很重要的环节,理论结合实际才能让学生真正体会课程的魅力。在数据库课程设计这个环节,我们要求学生应用软件工程的知识,尽量用工程化的思想来指导自己的设计。
4.3软件工程的案例
从实际出发,用软件开发的实际例子进行讲解,让学生体会大型软件开发的过程、方法、手段和控制。
从微软、IBM、用友等知名软件公司的软件开发看软件工程的开展。
从学生以前的计算机试验看软件的开发,并进行比较,从中看到弱点和不足。
4.4软件工程和项目管理
引进国外项目管理的概念,从别的项目管理到软件工程的项目管理。将两者进行比较,讲清不同点和相同点,让学生受到启发。突出项目管理的重要性,软件开发同样需要项目管理。从成本、风险、利益、控制角度看软件工程[5]。
4.5软件工程和毕业设计
从学生毕业前的毕业设计环节看软件工程的重要性。“毕业设计”不是一个小的计算机试验,而是一次对学生四年学习的全面考核,而软件工程正是可以利用的知识。
5实践安排与不足
为了培养学生工程概念,也是鉴于软件工程课程实践性强的特点。我们在2003年制定软件工程课程教学大纲时,特将该课程的实践环节与数据库课程设计相结合。本着在实践中体会、在实践中落实的原则,我们要求学生在多人合作开发数据库应用系统的课程设计中,运用软件工程学到的软件项目管理方法和软件设计与实现技术,并撰写必要的文档,以便使开发软件有较好的、完整的技术档案,并使其不断升级换代。另外,从各高校的情况看,实践环节非常重要,它需要实践环节的辅助教学。
6教学实施情况
开设课程实验是一个探索的过程,我们在反复摸索,以便增长学生的工程项目开发经验。我们曾要求1999级、2000级的学生将软件工程课程学习作为一个项目来管理,要求学生写课程学习日志,记录每周投入课程学习的具体时间、当时设计的目标、完成情况等。为了弥补学生缺乏项目开发经验的缺陷,我们也开展课后读书报告活动,即提供10~20个与毕业设计有关文档或指定若干软件工程发展的技术方向,让学生分组阅读文档或查阅并阅读有关文献,写出项目评价及专题读书报告(参见附录中当时读书报告分组评分记录)。但这也带来一些负面影响,即学生越来越依赖计算机,读书报告变成复制和粘贴文本,而不是认真阅读,预设的训练目的无法达成,因此,我们随后取消了这一做法。
99级教学中的软件工程实践时间设计为6小时,这主要是考虑学生在同一个学期中还有数据库课程设计30学时,不可能同时做两项大实验。因此,我们尝试从99级开始,在数据库课程设计中加入软件工程实践内容和要求,如需求报告完善、软件质量评估、软件测试具体检验等,并在课程设计答辩中设立软件工程相关问题的回答。到2003年,教学大纲正式提出两课实验合并。
在此,我们还有两个希望:(1)加大软件工程课程的课时(目前是30课时的教学,没有试验课时),同时开设试验环节,针对软件工程开设一个类似数据库课程设计的环节,加强学生动手能力的培养。(2)让学生走出去(政府或企业),撰写调查单位的软件实施方案。
7结语
软件工程蓬勃发展,学院的教学目标是培养服务于党政机关机要事业的计算机应用型专业人才。在课程教学中不断紧跟技术发展,紧紧抓住学院培养目标而设立课程教学目标,选好教学内容是个艰巨的任务,任重道远,它需要我们长期的努力。
参考文献:
[1] 孙家广,刘强. 软件工程理论、方法与实践[M]. 北京:高等教育出版社,2006.
[2] 钟珞. 软件工程[M]. 北京:清华大学出版社,2005.
[3] 胡飞,武君胜,杜承烈,等. 软件工程基础[M]. 北京:高等教育出版社,2008.
[4] 钱乐秋,赵文耘,牛军钰.软件工程[M]. 北京:清华大学出版社,2007.
[5] Carlo Ghezzi. 软件工程基础[M]. 施平安,译. 2版. 北京:清华大学出版社,2002.
Reflection on Software Engineering Course in BESTI
JIANG Xiang-gang, ZHANG Xiao-li