时间:2023-03-14 14:53:30
引言:寻求写作上的突破?我们特意为您精选了12篇软件工程课程设计总结范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
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
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2014)19-4518-03
Java Programs Applied Undergraduate Teaching and Research Group for the Training of Software Engineers
YU Xiao
(Wuhan Technology And Business University Department of Information Engineering, Wuhan 430065, China)
Abstract: In this paper, application-oriented university training Java software engineers in the process of teaching a number of issues, analyzes how demand-oriented enterprise Java software engineers conduct group teaching curriculum design, including accurate positioning training applied talents teaching objectives, optimize Curriculum reconstruction and the accumulation of experience teaching curriculum system, integration and research.
Key words: Application-Oriented; Training of Software Engineers; Java Curriculum Group; Teaching and Research
1 应用型本科Java课程群的教学现状
随着计算机行业的发展进入到互联网时代,由于 Java语言在计算机软件开发尤其是支持网络编程方面的优势,大多数高校计算机科学与技术专业在培养计划中都设置了Java系列课程的培养方案。应用型本科大学作为第三类大学在进行Java系列课程教学改革中确定Java课程群体系的培养目标是非常重要的。因为应用型本科培养的软件类毕业生在就业中将会与研究性大学本科专科毕业生、职业技术专科学院和职业培训机构的学生进行竞争。为了适应软件行业对Java开发人才的需要,高校简单的开设一门Java语言程序设计是远远不够的[1]。现阶段,应用型本科大学的Java课程体系是参考研究性大学本科课程体系的标准而制定的,并没有突出应用性的特点,而学生在编程方面的能力培养远不及职业技术学院、职业培训机构的学生在实践编程能力的培养。
2 面向培养Java软件工程师课程教学的重要性
现阶段计算机应用软件的开发主要采用.Net平台和Java两大平台,这两个平台各有千秋[2]。在计算机类职业培训机构的课程体系中Java系列课程也是热门的课程。Java软件工程师的职位在目前就业市场中属于紧缺职位。面向培养IT企业需要的软件工程师,为企业输送急需对口人才是各大高校在进行Java课程群的教学建设中需要考虑的问题。但是,很多Java课程体系的教学与市场需求存在脱节的情况。另外,Java教学的知识落后于企业正在使用的技术。计算机行业是发展和更新知识非常快的行业,由于高校教师缺乏与企业交流而导致在Java教学过程中不能及时更新到最新的技术,使得学生在毕业时所学的知识过时。
3 面向培养软件工程师的Java课程群教学思路
3.1应用型本科大学在Java课程群教学改革中的优势
应用型本科大学比科研型本科大学在课程设置上允许更为灵活,所以在Java课程群教学中可采用多种培养方式相结合。例如,在实践教学环节可以加强校企合作。Java的实践课程可以由企业的讲师或软件培训机构的人员参与教学过程,在教学内容上,可以比研究性大学更偏重应用。也可以在高年级的实践教学中的有限课时内让学生直接在企业中实习。为实施素质教育,提高学生的专业技能,培养技术应用型人才,需要不断探索以变更落后的教学方法,改革传统的教学模式[3]。
应用型本科大学在教学过程中比职业培训机构更注重综合能力的培养。比如,应用型本科教学不仅教授的是Java语言,除此之外教学课程体系中还会设置有《数据库原理》、《计算机网络工程》、《操作系统原理》和《软件工程》等重要的理论性指导课程,使学生在计算机应用能力上更具全面性,为学生更好的在职业发展中成为软件工程师打好理论基础,而不仅仅只能成为程序员。
3.2 面向培养软件工程师的教学目标
应用型本科Java课程体系教学应将与Java技术紧密相关的多门课程整合起来形成课程群,以强化课程间的关系,理清课程间的衔接,避免课程内容的重复性。设计课程群中实践课程的递进关系。课程群的建设应紧密结合企业的需求,设计面向培养软件工程师所需的能力项目的定向案例或课题。进行Java课程群教学培养的目标应是面向企业需求的以应用型为主的强化实践编程能力的软件工程师。
3.3 Java课程群体系
根据现有Java技术相关的教学课程选择五门课程组成Java课程群,分别是Java语言程序设计、Java语言程序设计课程设计、Java Web程序设计、Java Web程序设计课程设计、Java技术毕业设计。课程群中前一门课程是后一门课程的基础,课程的难度是递进的由浅入深的介绍Java技术的应用。每门课程都有不同的教学培养的侧重点,如下表所示。
表1 Java课程群的培养与考核
[课程名\&能力培养侧重点说明\&考核方式\&Java语言程序设计\&Java语言基础、面向对象程序设计、图形用户界面编程、文件编程\&理论笔试与实践课程综合评分\&Java语言程序设计课程设计\&三个方向的综合应用程序开发:图形用户界面与文件流结合编程;图形用户界面与网络通信结合编程;图形用户界面与数据库结合编程\&答辩与课程设计论文综合评分\&Java Web程序设计\&JSP技术基础、JDBC、JSP进行动态网站开发\&理论笔试与实践课程综合评分\&Java Web程序设计课程设计\&使用JDBC数据库连接技术进行JSP动态网站开发的综合应用\&答辩与课程设计论文综合评分\&Java技术毕业设计\&使用EJB应用开发、Java API的使用及服务的应用进行小型实际应用项目的开发\&毕业设计答辩与毕业设计论文综合评分\&]
课程群的每门课程都分为理论教学环节、实践教学环节和考核环节组成。每门课程的评分标准根据课程的特点而定。程序设计课程以理论考试与实践课程的程序完成情况进行综合评分,课程设计课程以系统运行演示与答辩结合课程设计论文的综合评分,毕业设计环节需要通过本科毕业设计答辩和本科毕业论文的考核综合评分。
4 面向培养软件工程师Java课程群的教学研究
4.1 面向培养软件工程师Java课程群教学方法的研究
在应用型本科大学教学多年Java课程群的课程以后,根据教学实际情况在教学方法方面进行了归纳总结。在Java课程群教学中应以学生在学习该课程的实际情况为出发点,一方面强化面向对象编程思想,因为面向对象是软件工程的基础,为后续用Java工具进行软件工程与产品设计打基础;另外一方面应突出Java与C++的不同点和各种工具包,主要以图形用户界面与事件作为重难点。具体来说,课堂教学方法上尽量深入浅出而突出重难点,因为一般来说,开设《Java程序设计》课程是在大学本科已经开设了至少两门语言课程《C语言程序设计》、《C++语言程序设计》之后的高年级专业课,一部分内容希望学生在老师的引导下培养自学能力或在后续课程《软件工程》与《Java Web程序设计》课程中逐步强化细节。
4.2面向培养软件工程师Java课程群教学方式的研究
教师在本校应用型本科大学教学过程中与学生进行了多次交流,得到了学生宝贵的反馈,结合教师在不断教学探索与实验教学过程中的体会与思考,对进行培养面向软件工程师的Java课程群教学方式改革进行了总结,得到以下五个方面的改进措施。
1) 实践教学与课堂教学整合
学生反映理论教学在教室学习效率不高,建议安排在实验机房进行教学,理论教学后及时进行上机操作能更好的巩固知识,实现理论与实践的同步教学。课堂教学中的每个知识点在理论教学后布置上机的小实例作业,学生通过完成小实例作业就能很好的检测该知识点的掌握情况,将实践教学与课堂理论教学整合。整个教学全程安排在实验机房完成。
2) 分步式案例教学
Java课程群中的课程的每门课程开始列出该门课程的重要知识点。在教学过程中以一个综合应用案例为线索,涵盖该门课程大部分最重要的知识点应用。将这个综合案例分解成若干部分,整个教学过程中在不同的重要章节中逐步分别讲解案例的某个部分。最后,将分步骤讲解的案例部分组合在一起,完成整个案例的拼接运行与演示。这种分步式案例教学让学生对该门课程有一个完整的知识体系。分步式案例教学在培养学生综合应用能力方面取得了很好的效果,使学生从应用角度对该门课程每章的内在联系有了一个总体的了解。
3) 学生演讲与教师指导相结合
一般来说,学生在学习Java课程群的课程时已经具有了一定程序设计语言的基础,学生在现有的C语言或C++语言学习的基础上进行多种编程语言的对比,能更好更快的掌握Java课程群的新知识。关于Java语言基础和JSP语言基础部分,例如变量与常量、表达式与运算符等知识点,可以让学生进行课下自学,并在上课过程中由学生进行演讲,对比现已学过的语言,分析Java语言或JSP语言的不同点和相同点。教师在学生讲课中及时进行补充或更正学生知识点的讲解。学生演讲与教师指导相结合的方式适用于Java课程群中程序设计语言基础部分。这种教学方式在一方面锻炼了学生的表达能力,在另一方面让学生巩固了以往的知识点并学习了新的知识点。在一定程度上调动了学生的学习积极性和促使学生更加参与课程教学,增加教与学的互动。
4) 分组答辩式教学
学生的课程设计或教学演讲都可以采用分组的方式,例如一个班级30人,一般将该班级分为6个组,每组5人。因为企业大型项目开发都是以团队的方式进行的。在应用型本科Java课程群的课程设计类课程中以团队方式进行答辩,每组团队得到相同的分数等级。使学生更具有团队合作意识,增进团队合作能力进行编程,使学生在企业中作为软件工程师能更快适应软件开发团队。
5) 案例式扩展教学在实践教学过程中的应用
Java课程群中实践课程教学可以采用一个应用实例贯穿到每个实践环节。从课内小案例的添加功能就可以完成该门课程的大案例,再在这个大案例的基础上进行优化完善可以完成综合课程设计,然后添加高级应用功能可以达到毕业设计的要求。使实践课程体系中的所有课程共同使用一个应用实例使这些多门实践课程具有内在的连续性,又可以很好的扩展性,使一个应用实例不断进行加强与优化。
参考文献:
课程设计是一门课程结束之后安排一周或者两周综合实训,让学生完成一个实际的课题巩固理论知识,对课程知识体系获得更深刻全面的理解,是提高学生实践能力的重要环节[1]。目前,学院软件工程专业从第4、5学期陆续开设专业基础课和专业课,如《C#面向对象的程序设计》、《Java程序设计》、《软件需求分析》、《数据库原理及应用》、《软件工程》、《UML技术》、《软件测试》等,这些课程均安排了为期一周的课程设计。但大四毕业设计时发现部分学生实践能力达不到专业培养要求,原因主要在于专业类课程实践环节没能够达到理想的教学效果。经调研发现,这些课程设计周是由各科授课老师布置一个相关课题,明确课题要求,给一周时间让学生自主完成,最后提交一个小的系统与课程设计报告。这种课程设计存在以下问题:(1)课程设计教学内容方面。老师未能提供系统、综合的课程知识相关案例,导致学生对题目理解不足,对课题认知模糊,无从下手,降低了学习主动性。(2)教学手段陈旧。基本还是停留在老师讲、学生听的阶段。师生互动较少,学生没有足够时间思考,即使在某个环节出现问题也不能及时解决,课后问题可能不了了之。(3)课程设计考核体系不完善。实践环节大多为考察,导致学生不够重视,提交一个报告了事。由于缺乏完整监管机制,学生对整个课题的开发过程认识不清,没有收获。另外,老师凭提交的报告给出成绩,区分度不明显,不够合理公平。针对目前存在问题,本文提出软件工程类课程设计实践教学改进方案。首先,建设一个可复用的软件工程实践教学案例库,案例库中的教学案例运用主流开发技术、管理技术及开发环境。“可复用”是指同一案例根据不同课程分割出不同的知识单元,软件工程类课程之间本来就紧密联系,相互承接,案例库可供多门专业课在实践环节教学中使用。其次,推行案例同时更新教学手段,采用注重学生参与及师生交流的分段式教学模式。最后,制定明确的课程设计监管与考核方案,对整个课程设计过程严格把控,培养学生综合应用知识能力与实践动手能力,提高课程设计环节教学效果。
1案例库建设
案例库中的项目不仅要考虑案例库的可复用性,能够服务多门课程,还需体现软件工程专业能力培养需求,并考虑开发难度与学生接受程度。因此应选择学生熟悉的业务系统,采用主流开发工具来实现轻量级工程化系统。系统功能尽量有代表性,同类系统可以仿照实现,并根据课程知识结构需要进行功能定制。如案例库中的项目:《学生成绩管理系统》用C#与SQLServer2008开发。该系统是典型的小型MIS系统,主要实现了学生、教师、管理员3类用户对学生信息、课程信息及成绩信息不同程度的增、删、改、查。该案例可以服务于《C#面向对象的程序设计》、《数据库原理及应用》、《UML技术》、《软件工程》、《软件测试》等课程的设计教学。案例库项目开发融合了软件工程很多专业课程知识,在不同课程中使用,学生可以明确各门课程学习目标,从不同视角体验软件开发流程,提高对软件工程整体把握的能力,建立软件工程的思想。
2知识结构划分与整理
案例实现之后,为了服务于不同课程,不同授课教师需要重新组织教学资源,梳理课程大纲、划分教学内容、整理教学素材、制作教学课件,这一步至关重要也最为核心。想要通过一个完整教学案例,使学生建立起课程知识结构网络,授课教师不仅要基于案例将课程相关基本知识点及联系贯穿其中,还要对知识进行高度提炼,体现课程内容有机联系。这样学生通过案例讲解,不仅对理论知识理解更加透彻,对课程体系也会有更深刻的把握,学习效果取得质的飞跃。下面以《学生成绩管理系统》的实现为例,按不同课程知识侧重点进行概要划分,在课程设计环节中,授课教师结合案例针对本门课程侧重讲授知识结构。(1)《面向对象的程序设计C#》,讲授如何利用C#语言进行系统开发。利用常用控件来搭建设计学生成绩管理系统界面、实现窗口间跳转、消息传递;利用面向对象的程序设计方法实现系统业务逻辑与主要功能;利用ADO组件访问数据库,完成对系统数据的基本操作。(2)《数据库原理及应用》,讲授如何进行学生成绩管理系统后台数据库设计。数据流图,数据字典的创建;概念结构设计(E-R图的绘制)逻辑结构设计,将E-R图转换为关系模式,如何考察关系模式、规范化程度、规范化理论、视图机制、安全性及完整性设计;数据库的实施:SQL的应用,建库、建表、录入数据等。(3)《软件工程》,以学生成绩管理系统为例,按照软件工程流程,讲解每一阶段任务及涉及方法,结合案例从可行性分析、需求分析、总体设计、详细设计、系统实现及系统测试几个步骤进行。(4)《UML面向对象设计与分析》,对应学生成绩管理系统开发各阶段从建模的角度讲解UML的9种图,主要包括在需求阶段如何识别参与者与用例,建立用例模型;在分析设计阶段静态结构模型的建立(类图、对象图)及动态行为模型的建立(顺序图、状态图、活动图);系统实现阶段物理模型的建立(组件图、系统部署图),及将UML自动转换为面向对象设计语言的实现。可以看到,不同课程使用《学生成绩管理系统》案例侧重于不同知识体系。
3案例推行与考核模式建立
授课教师在课程设计环节中推行案例,按照案例教学、任务驱动模式来进行,课堂讲授仍然是不可或缺的[2]。首先通过分析案例程序引导学生学习,由案例的讲解分析,深入浅出地引出知识点,引导学生逐步理解课程重点、难点,深化理论知识学习[3]。其次提出本次课程设计任务要求,老师详细分解设计题目内容与步骤,给出参照与示范。案例讲解与任务分解交叉进行,课程差异性使得案例教学不必拘泥于固定模式与时间,讲授案例时间大概是6~10学时,老师可以自行调整授课进度与节奏。在案例教学中,为了充分调动学生主动性,并及时发现问题、解决问题,采用了“教师提出课题—学生分组讨论—教师演示案例—学生实践—学生总结、师生交流”分段方式进行,并且在以学生为主体的阶段进行考核。在案例讲解、任务驱动教学方式下,建立完整考核机制,教师监控整个实践过程,激励学生参与到每一个阶段中,学生遇到问题也可以反馈给老师,及时得到帮助,提高学生主动性。成绩考评是根据学生每一阶段任务完成情况,从分析解决问题、团队合作、语言表达及文档书写能力表现作综合评定,不仅保证了评价结果客观性,也引导了学生加强这些方面的能力培养。
4结语
针对学院现在软件工程类多门课程在课程设计环节存在问题,提出了建设可复用的案例库,并根据不同课程教学需要对案例进行知识结构划分与整理,在实践中采用分段式教学推行案例,加以完整考评方式,现已收到较好教学效果。基于案例库的实践教学改进方案还可以应用在软件工程综合实训环节,为了达到更高教学要求,培养高质量人才,案例库还需要不断更新与完善。
参考文献:
一、引言
课程设计是指学生在学完相关课程后,综合利用所学知识分析问题、解决问题、实现理论向实践转换的重要教学环节,也是对前期理论教学效果的检验。
软件工程专业的大部分课程设计是有关软件开发的。这就要求学生在设计过程中经历一个完整的软件开发流程:项目定义、分析、设计、开发、维护[1]。作为软件开发过程中的一个重要环节,需求分析在实际的课程设计中由于各种条件的限制往往被忽略,没有得到应有的重视[2]。针对这一问题,本文首先阐述了需求分析在软件开发过程中的重要性,分析了软件工程专业课程设计中需求分析阶段存在的主要问题,并给出了相应的解决方案。
二、需求分析的重要性
软件需求定义了系统必须具备的能力,即软件能完成什么样的功能,达到什么样的性能,这种能力体现了用户的需要和开发者对用户需要的理解。软件项目的开始,就是因为软件需求的存在,需求是项目开发的基石。
一个项目成败的关键因素之一就是对需求的把握程度,研究表明,软件项目中大部分的问题都是在需求分析阶段埋下的隐患,需求问题发现的越晚,软件维护的开销就越大。很多项目的失败,也是由于需求分析的不明确而造成的,有些项目甚至是在需求没有完全确认的情况下就开始执行了,这必然会导致成本浪费、进度延迟等严重问题。所以分析是软件开发中最为基础和重要的环节,是软件项目迈向成功的第一步。
需求分析也称需求建模,主要任务就是借助当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题,即对目标系统提出完整、准确、清晰、具体的要求[4]。分析用户需求主要过程如下:
(1)以图形描述系统的整体结构。
(2)为用户提供可视化界面供用户对需求做出评价。
(3)以模型描述系统功能、实体关系及状态转等内容[3]。
需求分析要保证需求明确,尽量避免需求描述不清楚、需求遗漏、需求互相矛盾等问题,避免在开发后期因需求问题对项目产生困扰。
三、课程设计中需求分析现状
(1)学生重代码,轻需求,急于完成可见的执行软件,大大压缩了需求分析时间。
(2)学生缺乏对所选课程设计题目相关的业务知识的了解,需求分析只是对需求的拼贴,不完善,不系统。
(3)教师缺乏实际项目经验,对需求分析的认知只是停留在理论阶段,不能在实践上给学生以高水平的指导。
四、解决方案
针对以上问题,文中给出解决方案如下:
(1)一方面转变学生对需求分析的认知误区,强调需求分析的重要性,通过一些案例及调研数据让学生了解忽视需求分析带来的严重后果,让学生重视需求。让学生了解软件项目开发工作和项目管理工作都与需求密不可分,如软件项目成本估算、进度计划、项目跟踪控制、验证、确认等工作都以需求为基础;软件设计、编码、测试最终的目的都是为了提交一个满足用户要求的可执行软件,用户的要求主要就体现在需求分析的制品上。
另一方面增强需求分析的趣味性,让学生主动参与需求分析,如选题上给学生充分的自主选择权利,或者让两个同学选相同题目(分别做不同模块),同组间进行需求分析竞赛等。
在软件开发过程中让学生记录并总结,自身项目中存在的那些需求问题,对项目产生了怎样的影响,让学生在实践中体验、总结需求的重要性,加深认识。
(2)题目选择范围上给学生更大空间,可从教师给定的题目中选取,也可学生自拟题目。因为课程设计的时间有限,需求又是一项要求精细、准确、全面的工作,所以在课设开始前至少一个月,让学生预先选好题目,进行需求调研、分析工作。需求分析开始前,由教师预先规定应分析什么,如:软件功能需求、性能需求、可靠性和可用性需求、接口需求、系统约束等;采用什么样的分析方法,建立什么模型,如:功能模型、数据模型、行为模型等;及最终要形成软件需求规格说明,该文档模板由教师提供。任何软件需求都离不开其涉及到的业务领域,因此也要要求学生对业务领域相关的标准模型进行分析和研究,对业界的一些标准和最佳实践进行熟悉,对业务领域进行大量调研。这样才能让才能分析出真正的需求,否则需求就会脱离实际。
(3)作为教师不但要有扎实的理论知识,还应具有较强的实践经验,指导学生完成由理论知识向实践技能的转换。所以在选择课程设计教师的一个重要条件就是教师要有软件项目开发经验及管理经验[5],熟悉软件开发的各个环节。若教师本身不具备这样的能力,也可以通过加强教师培训,让教师到企业中实习的方式来提高教师实践指导水平,通过考核的教师才可以指导课程设计。
五、结论
总之,需求分析是软件开发过程中非常重要的一个环节,是项目所有活动展开的基石,在软件工程专业软件类的课程设计中,作为教师在这一环节应为学生提供有效的理论和实践指导,让学生理解需求分析的重要性,积极主动地做好需求分析工作,为后续的各项软件工程活动展开打下良好基础。
参考文献:
[1] 秦放等.案例驱动与项目导向结合的软件工程课程教学模式探讨[J].计算机教育. 2013(9):87-90
[2] 陈杰.计算机专业课程设计中的需求分析[J].集美大学学报.2009(2):89-92
中图分类号:
1、 引言
提起软件,在当今社会人们并不陌生,正是由于软件的发展,使计算机应用逐步渗透到社会生活的各个角落,使各行各业都发生很大的变化。这同时也促进人们对软件的品种、数量、功能和质量等提出了越来越高的要求。然而,软件的规模越大、越复杂,人们的软件开发能力越显得力不从心。于是,人们开始重视软件开发过程、方法、工具和环境的研究,软件工程应运而生。
“软件工程”主要介绍软件工程的基本原理、开发方法和开发工具,通过本课程的学习,使学生了解和初步掌握开发1个软件项目所使用的方法和工具,以及“软件工程”的发展过程和发展趋势,为进行软件开发打下1个良好的基础。
2、 课程特点
1。 课程综合性强。
软件工程与其他计算机课程,如程序设计语言、数据结构、编译原理、数据库以及操作系统等课程都是相互作用和影响的。在1定程度上说,软件工程讨论的是在实际开发当中综合运用这些课程中讲过的理论和方法,将这些课程的理论和方法放在1个统1的目标下,这个目标就是在有限的时间及预算条件下,开发出高质量的令用户满意的软件。
2。 课程内容不断更新。
软件工程课程的教学培养目标应该以市场需求为导向,使课程培养的学生真正能够在软件行业中发挥作用。因此,在授课时,我们不能拘泥于教材内容的限制。在讲解基本原理、基本概念和基本方法的同时,介绍1些新方法、新技术。这样,有助于开拓学生的视野和培养创新意识与开发能力,使他们走向社会后不至落伍。
3。 课程的实践性强。
软件工程是1门实践性很强的课程,它是各种开发经验的总结与提炼。在学习过程中不但应注重概念、原理、方法和技术的掌握,更应注重方法、技术的实际应用。学习软件工程必须投身于软件开发的实践,才能真正领悟软件工程的精髓。
实际教学当中,这门课的教学效果往往不是很理想,教师觉得这门课教起来较困难,学生学习中多数也觉得枯燥无味,很难达到较好的教学效果或获得较强的实践能力等预期目的。如何改善?结合软件工程的课程特点,笔者认为可以从以下几个方面来改进《软件工程》的教学质量。 三、软件工程教学改进的内容和方法
1。 教学过程引入实际案例
软件工程课程涉及面很广,如果不结合实际工程项目进行教学,很难把教学内容教授给学生。因此,在教学过程中引入案例,将复杂抽象的概念用具体生动的实例进行诠释,能够收到事半功倍的效果。例如,在授课时教师可结合1个“学校教材购销系统”实例,给学生介绍具体的开发过程和方法。
另外,学校还可邀请领域内有实际经验的资深程序员,针对软件工程中具体理论和方法在实际开发中的应用,在课堂上和学生进行面对面讲座,深入浅出地作讲解。这样,学生可以更加熟悉、掌握软件开发的过程。
2。 组织课堂讨论,形成教学互动
我国有句名言:“授人以鱼,不如授人以渔”。学生是教学活动的核心,教师要利用合适的方法调动学生的积极心理和参与意识,改变传统的教师高高在上的教学方式,让学生参与教学过程,有机会发表自己的看法。
比如在讲授需求分析这章内容时,可结合“学校教材购销系统”这个案例,要求学生按照软件工程教学的思想和方法认真做好需求分析。在实施过程中,首先由学生独立思考,给出解决方案。然后在课堂上,组织学生进行讨论,分析各自解决方案的优劣,并进行综合。最后由老师进行总结和评价,指出该案例所涉及的理论知识及其应用方法,就学生提出的问题进行解答。这样通过组织学生讨论,可使学生进1步理解和掌握课程内容的方法和步骤,使抽象的知识变得看得见,用得着,大大激发了学生学习的兴趣和自信。
3。 加强实践环节
从本质上看,软件工程的实践性和综合性是其他相关课程难以比拟的。因此,必须结合设计项目和实际应用加以施教,才能取得良好的教学效果。那么,在把握教学进度的同时,必须及早安排好课程设计,让学生同步开展课程设计。这样,理论课讲完了,课程设计也基本结束,学生们能从理论和实践的结合上,加深对软件工程知识难点、重点的理解,进1步深刻理解软件过程和系统消化理论知识,训练项目设计的思路,锻炼实际开发能力,培养严格规范的项目开发方法和步骤,体验文档编写整理、阶段性评审总结以及软件测试等各个方面的工作流程,直接培养了学生从事实际开发的能力。
四、结束语
在教学中,我们还应根据学生的具体情况,因材施教。总之,通过不断改进教学,使学生能更好地理解、掌握知识,运用所学服务社会。
参考文献
在信管专业中,软件工程主要指导学生进行管理信息系统的分析、设计、实施及维护,侧重系统的研发和维护的原理和方法。管理信息系统课程则是让学生全面认识管理信息系统,涉及的知识面广,但内容浅显。两者在系统开发和维护部分的内容上存在交集,部分院校因此未将软件工程加入专业培养计划。另外一些院校为强化学生的系统开发能力,将“软件工程”与“信息系统分析与设计”课程同时开设,出现课程重复的现象。这些都是软件工程定位不清晰的结果。
2.课程时间安排不合理
信管专业中的软件工程与诸多信管专业基础课程联系密切,需要较强的专业基础知识,但目前部分院校的课程体系将软件工程与管理学、程序设计等专业基础课程安排在同一学期显然不合适,教学安排缺乏层次性。
3.师资力量存短板
信管专业教授软件工程的教师几乎都毕业于计算机专业,不仅缺乏管理学相关知识且在教学思想上沿袭了理工科的风格,偏重程序研发流程,忽略管理信息系统开发过程的多学科交叉特点,导致学生把管理信息系统等同于一般的计算机软件,使得学生对管理信息系统的内涵认识不足,甚至产生误解。此外,大多数教师并没有实际参与大型管理信息系统项目的开发,缺乏实际的研发经验,故难以全面、深入地介绍管理信息系统研发过程和特点。
4.适用教材缺乏
一方面现有信管专业软件工程的教材大都沿用自计算机专业,着重从理论方面介绍各种经典分析和设计方法,所选案例也缺乏与管理学等其他相关学科结合,且很少结合最新的设计方法和工具进行介绍。这种教材选择方式难以和信管专业内的其他课程有机结合,自身形成知识孤岛,无法体现信管专业管理为主、计算机为辅,多学科交叉的特点,同时也不能反映信管专业与计算机专业的本质区别。
5.教学方法古板,实践不足
软件工程的教学内容多为以往研发经验的概括和总结,知识点多以各种概念、原则、规则和要点等形式出现,缺乏完整案例,内容抽象晦涩,教师多采用单向注入和强行灌输的教学方式,不利学生的理解和应用。此外,信管专业课程体系庞杂,无法为软件工程分配足够的实践课时。其他系统开发相关课程,或因项目过小而无需使用软件工程思想,或因课时限制而侧重系统的实现和测试方面。这些问题导致软件工程思想难以完全付诸实践,使学生缺乏系统性和全面性的训练。
6.学生评价机制不合理
成绩评定是评估学生学习效果的重要依据,也是反映教师教学能力的参考指标。本校统一采用“平时表现+期末笔试”的考核机制,比例为3:7。其中,平时表现包含期中考试成绩、日常考勤、课后作业和实验成绩等。这种成绩评定机制存在诸多问题:(1)期末考试比例过大,不能全面客观反映学生的表现。(2)闭卷理论笔试不利于扩展学生的知识面,难以考查知识的实际综合运用能力。(3)笔试为主的考核机制容易诱使学生产生应试教育的倾向。
二、《软件工程》课程教学的若干对策
针对信管专业软件工程课程的问题,结合本校教师的教学经验提出相关的应对措施。
1.明晰教学定位
信管专业的定位是计算机和管理的交叉学科,管理信息系统是信管专业关系最为密切的信息系统。软件工程在信管专业中的主要任务是为了培养学生使用软件工程的思想分析、设计和开发管理信息系统。鉴于学生培养目标的不同,信息系统开发能力并非所有学生所必须掌握的。因此,软件工程在信管专业中的定位不能搞一刀切,必须因方向而异。系统开发方向的学生应把软件工程作为专业必修课,而信息管理方向的学生则作为专业选修课选修。
2.优化课程安排
软件工程的目的是指导管理信息系统开发,学生选修前需具备基本的编程能力和数据库知识。而且,管理信息系统的开发需要结合管理、会计和运筹等课程的相关知识。因此,软件工程的安排应置于数据结构、数据库、程序设计、管理学和运筹学等课程之后,信息系统课程设计之前。在课程设置上,软件工程与面向对象程序设计、管理信息系统、信息系统课程设计等相关课程组成课程群,相关任课教师以团队方式备课。每学期期初和期末,同一课程群的教师互相交流教学效果和存在的问题,根据学生的情况各自调整后序教学内容,有针对性地开展教学。课程群方式可以有效加强课程间的平滑衔接,强化教师间的团队合作,实现知识的有机结合,提高课程安排的层次性与合理性。
3.建立合理的教师培养机制
教师培养采用“走出去,引进来”的方针,加强与兄弟院校和相关企业的交流。围绕构建应用型本科院校的目标,引入高职院校中的“双师型”培养机制,将科学研究和实际应用相结合,组织软件工程及相关课程组构成的开发团队,积极参与校内外的合作项目的研发,如校内各部门的信息系统开发项目、校外实习基地的合作开发项目、科研项目的系统实现等。在教学任务之外,学校应鼓励任课教师定期到实习单位参加项目见习,甚至直接参与项目研发,提高教师的研发能力,更新知识储备。同时,教师的考核体系应根据教师的授课内容进行分类评价,软件工程等应用性课程的考核机制应加大对实践的要求,鼓励科研与知识应用的结合,真正实现应用型培养的发展方向
4.改进教学方法,强化实践教学
根据软件工程理论和实践要求都较强的特点,采用案例驱动的方法开展教学,将理论知识融入到具体案例当中,通过“学中练、练中学”的模式将抽象的知识通过具体的项目展示,方便理解和消化吸收。此外,单纯的理论知识学习是不够的,需要通过实际的项目训练进行提高,进而达到巩固所学知识,灵活应用的目的。项目训练以学生分组的方式进行,在学习的同时培养学生的团队意识和协作精神。项目类型以中型管理信息系统为宜,来源可出自教师自身的项目或者协作单位项目中的子系统,也可以学生提出由任课教师审核通过。项目结束时,学生必须能够提交可正确执行的程序,同时提交相关的系统开发文档,文档要求严格按照国标GB-T8567-2006编写。在实践过程中,教师应以项目管理人的角色监督项目的进度,及时发现并纠正存在的错误,同时回答学生在实践中遇到问题。这种方式既让学生清楚了解课程开设的目的和意义,也强化学生对所学知识的理解和应用。
5.完善教学资源
信管专业软件工程课程的教学资源(如教材、辅导资料、教学案例等)的安排和设计应按本专业的需求进行改进和完善。首先,调整教材内容的编排。软件开发技术知识点需要与时俱进,已被淘汰的知识点应予以删除或以概述的形式介绍,同时增加近年出现的新技术和新方法,并对其中的典型方法进行重点介绍,并配上相应的案例进行讲解。其次,修改教材内容的编写方式。采用案例驱动的教学模式,将以往逐条罗列的抽象理论融合到具体的教学案例中,让学生通过分析案例提取出知识要点。该方法既有利于对枯燥知识的理解和吸收,也为进一步的知识应用提供极好的参考素材。第三,修改配套案例。案例选择中等规模的管理信息系统的完整研发过程较为合适。案例规模不宜过大的案例,否则不适宜初学者学习;规模太小则细节不足。案例可以取自教学参考书,也可以是教师自身的项目研发经历,还可以源自合作单位的项目。第四,建立信息化教学实验平台。通过云计算等先进技术构建的软件工程教学实验平台,师生能够无时间、地域限制地实现教学课件和视频等资源的共享、作业和课程实践的实时监控和学生疑难问题的解答,极大方便了师生间的交流,对提高教学效果具有重大现实意义。
6.改革学生评价机制
课程成绩对学生在课程学习过程中的表现和效果的综合评价,对学生学习起指向性作用,必须秉承公正、全面、客观的态度。第一、全面考虑学生评价要素。在教学过程中,除考勤情况、期中成绩、期末成绩等常规项目外,学生的课堂表现、作业完成质量和上交情况,实践项目的完成情况等也是衡量学生的学习成绩的重要依据。因此,软件工程的考核体系可综合为以下三方面:(1)平时表现,包含出勤情况、课堂提问和作业完成情况等;(2)实践成绩,包含课程设计和实验的质量和文档的编写情况;(3)卷面成绩,包含期中和期末考试的笔试成绩。第二、合理分配评价要素的比重。评价要素的比重定量反映了课程各教学环节的重要性,能够对学生的学习起导向作用。为了突出软件工程以“理论为基础,重在实践应用”的特点,实践成绩的比重应与卷面成绩相当,也可以考虑使用课程实践成绩代替期末笔试。第三、客观评定评价要素。学生的评价要素通常分为定性和定量两种。其中,各种考试成绩和作业成绩、考勤情况等定量评价易于给定。相对而言,平时表现等定性指标需教师主观评定,易受到教师个人情感的影响,需要教师秉持公正客观的态度。对学生的主观评价一般以良为基础,表现突出的学生可给予优,存在迟到早退、作业应付或缺交、课堂纪律不佳等情况的学生则酌情给予中或差的评价。第四、丰富考核形式。除传统的闭卷笔试外,软件工程的考核形式还可采用以下几种:(1)课程论文:以个人为单位,就管理信息系统研发和管理中的某个环节提出自己的观点并展开论述,完成3000-5000字的课程论文。(2)课程设计:参考教学案例,采用软件工程思想,以团队方式开发一个管理信息系统,完成从需求分析到设计实现的完整过程,并编写相关软件文档。(3)开卷笔试:以论述和应用题为主要题型,主要考察学生解决系统分析、设计、测试和维护等环节中具体问题的能力,如按要求绘制程序流程图、软件结构图和系统流程图等分析设计图表,设计测试用例等。学生允许携带一定数量的参考资料,但不允许携带电子设备。任课教师可根据教学目标和学时安排综合使用上述方式。总体而言,以课程论文或课程设计代替期末笔试进行考核更符合学以致用的教学目标。
数据库课程设计是计算机相关专业的一门非常重要的专业实践课,该课程总的学习目标是让学生熟练掌握数据库技术的相关理论知识,并能够理论联系实际,解决实际问题。通过数据库课程设计的实践环节,培养学生分析、设计和编程实现数据库应用系统的能力,让学生具备较好的数据库项目实践能力,掌握过硬的职业技能。本文对数据库课程设计教学中存在的主要问题进行了细致的分析,提出了基于项目的数据库课程设计的详细教学方案。
1.数据库课程设计中存在的主要问题
(1)学生参与数据库课程设计的积极性不高、知识和技术储备不够。
(2)学生重编程实现而轻分析和设计。
(3)课程人员组织和时间安排不太合理,任务设计和要求偏低。
(4)课程考核方式、评价体系和管理过程不够科学。
2.基于项目的数据库课程设计教学方案的设计与实施
2.1 基于项目的数据库课程教学方案
本文提出的基于项目的数据库课程设计教学方案是指设计能够吸引学生兴趣、难易适中、选题丰富并且能够满足不同层次的学生需求的项目设计任务,参照软件公司分析、设计、编程实现应用软件的基本步骤和人员组织形式来安排和组织学生进行数据库课程设计。其重点在于把学生的课程设计任务提高到软件工程项目的高度,并通过模拟实训加以实施。按照软件工程传统方法学的思想,结合数据库设计的基本步骤,将数据库应用软件的开发简单划分为需求分析、总体设计、详细设计、编码和测试四个阶段。每个阶段的任务均在指导老师的指导下,由项目组成员通力协作、自主完成。在每个阶段结束后,采用项目评审的方法,对每个小组每个学生的具体工作进行阶段性评审,学生分组汇报工作成果,并按照软件工程的要求提交阶段性技术文档。项目模拟实训根据课程设计选题采用项目小组的形式进行分工,项目规模和难度由指导老师和项目小组全体成员根据课程设计指导书协商决定。每个项目小组由一名同学担任项目组长,项目组长可以根据小组内每个人的能力和经验合理分配任务。每个学生在项目开发过程中,担任不同的角色。在工作中,项目小组的成员相互沟通和交流,组与组之间也可以相互借鉴学习,提高学生的参与积极性,培养学生的团队合作精神。
2.2 基于项目的数据库课程教学方案的实施
2.2.1 课程设计的选题
数据库课程设计是培养学生创新能力的有效途径,其设计题目应该具有一定的应用背景,让学生能够遵循软件工程的基本原理设计一个具有实用价值的数据库应用系统,使所学知识能够融会贯通。
精心准备和策划设计适当的项目,是实施基于项目的数据库课程设计教学的关键。在确定项目时应综合考虑以下几方面的因素:(1)能将数据库的理论知识和实际应用技能较好的结合在一起;(2)所选项目数量要足够多,涉及面要广而且是学生比较熟悉和有兴趣的应用领域;(3)项目的难易程度要能够满足不同层次的学生的需求;(4)项目的整个开发流程要规范,以项目为主线,引导学生把掌握的程序编程知识、数据库和软件工程等理论应用到软件开发实践当中去,让学生掌握软件开发的整个开发流程,具备项目开发的实战经历。
2.2.2 课程设计的人员组织
按照开发流程,参照软件公司的人员组织形式,将班级的学生分组,每组5至6人,以学生自由组合为基础,教师可根据学生的兴趣和特长、编程水平、知识结构、学习能力、性格特点、男女搭配等因素进行调整。每个同学可以担任不同的角色:如项目管理员,系统分析员,系统设计员,系统开发员等。
每个小组由其成员推选产生一名项目组长,负责制定本小组的开发计划、工作任务的分配和调度、监督实施等工作。在组长的指挥下,对小组成员进行分工,语言表达能力强善于沟通的同学负责联系工作和调查研究,美工好的同学负责界面设计,编程能力强的负责代码的编写,程序设计能力强的负责系统的整体设计和程序调试,写作能力强的负责技术文档的书写等。教师要负责帮助把握进度,提醒学生合理分配工作时间等。
按小组形式开发项目,不但有利于培养学生的团队合作精神和提高学生的管理能力,而且更接近工作实际。
2.2.3 综合设计过程
学生发挥各自的特长分工协作,运用已学软件工程、数据库理论思想和数据库设计理念、C#或C++等编程语言,具体设计实现一个小型数据库应用系统。开发设计过程按以下顺序进行——自选课程设计课题,调查用户需求,总结归纳数据流程,分析性能,书写需求分析及总体设计报告(包括数据流图、数据字典、数据库概念模型、逻辑模型、系统功能模块),完成应用系统的开发,进行系统整合和测试,功能完善,汇报设计成果(包括撰写设计报告、系统验收、结果汇报)。主要分为需求分析、项目设计、项目实施和成果展示。
(1)需求分析是保证项目顺利完成的前提。需求分析做得不好,甚至会导致整个系统返工重做。因此,在课程设计环节中学生必须根据教师提供的项目背景资料,通过图书馆、网络或相应的组织、部门、企业去查找相关资料,结合自己的生活经验,对数据和处理进行分析,画出各层数据流图,做好详细地需求分析。教师要对学生的需求分析报告进行指导和评价。
(2)项目设计是关键。本阶段主要包括数据库的概念结构设计、逻辑结构设计和物理结构设计。要求学生在需求分析的基础上,设计E—R模型,详细描述实体的属性及实体之间的联系;实现E-R图向关系模型的转换,并对关系模型进行优化;定义主键、外键、视图、索引等。此外学生还应该设计出系统的功能模块图。教师通过检查学生设计的E-R图、关系模型和功能模块图,对每个组进行分析、评价和指导。
(3)项目实施。项目实施即数据库的实施、运行与维护阶段,主要包括应用系统的编程与调试。指导教师为学生提供技术支持,适时组织讨论、讲解和归纳总结为学生提供解决问题的新思路、新方法。
(4)成果展示。学生以项目组的形式完成了项目的整体设计与开发后,各个小组将在课程设计末期进行成果汇报和展示,接受教师和其他同学的评价。通过作品展示和评价,可以激发学生的竞争意识,促进项目组成员之间的交流与协作。
2.2.4 课程设计的时间安排
针对课程设计时间安排上的不合理问题,采取双管齐下的方式。首先增加教学计划中数据库课程设计的教学学时,由原来的2周改变为4周,使得学生有足够的时间来完成课设任务。其次,提前让学生进入分组和选题环节,并将每个人要完成的任何合理分配,让学生提前进入做好项目的知识储备、调研等前期准备工作。
2.2.5 课程设计的考核与评定
加强过程考核,提高对课程设计的总体要求,细化评价指标。学生在课程设计结束后,不仅要提交软件系统,还要提交课程设计报告,并进行分组汇报。课程设计的最终成绩由以下几部分组成:考勤lO%,平时抽查1O%,答辩20%,课程设计报告30%,系统演示30%。其中前四项由教师评分,系统演示由学生评分,每组各选派一名代表给大家演示系统并介绍基本情况,由各组分组讨论,对其它组开发的系统进行评价和评分,最后取平均分并公布成绩。
为学生提供展示自我的平台,建立完善的考核指标和体系,这样不仅有利于激发学生的学习兴趣和积极性,也有利于提高学生运用数据库理论实际问题的能力。
3.总结
通过基于项目的数据库课程设计教学研究,不仅使学生能够在理解数据库理论的基础上,实际动手开发一个实际的应用系统,而且在一系列的开发设计过程工作中能够树立学生的项目开发管理思想,能够培养学生应有的团队协作、自主管理、主动学习、创新思维、综合运用、动手实践等能力。使数据库课程设计真正成为学生验证理论的“实验场”,成为开发学生潜力、培养实战能力的“战场”,成为体验项目开发过程的“运动场”。
参考文献
[1]王艳红,章小莉,姜湘岗.在数据库课程设计中培养学生项目开发能力[J].教育与教学研究,2009,13.
如何在高职高专院校中更好的实施这门课程的教学,紧密结合国家信息化人才培养需求,正确把握软件工程领域的发展趋势,发挥自身学科优势,突出能力培养,使计算机软件专业的学生切实具备软件工程的实践能力,是摆在我们面前的一项紧迫课题。但该课程内容抽象,总结性的内容多,条条框框较多,不太容易讲解,学生学习起来也感到内容空洞、枯燥乏味、难学。
因此要想将该课程真的讲得通俗,让学生易于接受又能达到相应的教学效果,必须对该课程进行改革,采用案例教学和研究性教学模式,突出实践环节,培养学生开发计算机软件系统的实际能力。
二、实践教学改革的思路
1.依据培养对象,因材施教
高等职业技术教育是一种特殊类型的高等教育。在传授基本理论和基本知识的同时强调基本素质、基本技能和基本方法的培养,专业理论以培养技术应用能力为主线,具有较强的针对性和实用性。培养目标不仅要给学生传授知识技能,而且要培养具有创业和创新精神的人,进行以人为本的教育,培养学生劳动道德、技术操作、集体合作和创业能力,传授人文价值观。
2.按培养目标,对课程进行整合
现有的《软件工程》教材中对具体方法的介绍一般以面向过程的结构化方法为重点,而面向对象的程序设计方法中的UML和ROSE发展很快。讲授时对课程中纯理论部分适当简略,注重与有关课程的有机结合,重点介绍软件系统分析、设计、实施、运行与维护的主要步骤、方法,并通过课程设计,让学生自己经历软件开发的每一步,选择适当的开发方法,分组完成一个实用的小型计算机应用系统的开发工作。
针对学生实际应用了解较少的特点,可将有关典型应用(如学校信息系统、ERP)等内容有机的插入相应的章节,这样不仅可以帮助学生理解课程有关知识,也可以提高学生的学习兴趣,加深对相关知识的理解,为以后继续提高打下基础。
3.贯穿软件工程系列课程的案例教学
《软件工程》属于基于项目的课程,模拟工业界典型项目,以小组作业、口头报告、正式评审等形式,让学生在整个项目中承担不同的角色,构筑立体化的互动教学平台。将真实系统和项目作为学习案例,从软件工程的基础入手,让学生实际运用他们所学过的知识和技能,模拟案例提出相应阶段的问题,并给出解决方案,真正使学生体会和做到学以致用。
这种带着明确的实践任务,按照阶段划分、强调文档等系统工程的思想,采用理论与实践相结合的教学方法,使学生既了解了软件开发的基础性、共性知识,又掌握实际开发方法的应用。
4.培养研究性学习、团结协作的精神
由于各方面客观原因,本课程要求的学生知识结构、课程设计、实训条件等往往达不到理想程度,给教学带来不便。在教学中应有意识地要求学生学会自主性学习、研究性学习。老师给学生一些方向性指导,让学生自己去学习、提高。鼓励学生用多种开发工具,不仅有助于项目的开展,更加强了学生的学习自信心和自学能力。
在软件设计过程中,不仅要求每个成员的个人能力,更强调团队合作精神。小组成员的组合以及每个成员的分工均由学生自己按排。并试着选定一个小组长,小组长就类似于项目经理。要求组员们既服从组长的领导又主动发挥个人积极性。互相尊重,互相学习,依靠团队的力量完成任务。当遇到问题或困难时,任课教师给予指点、协调。这样同学们不仅提高了专业水平,也加强了团队合作意识和同学们之间的友谊。
教师在整个项目进行过程中采用多种方式给予指导,经常了解学生的进展情况。同时多给出一些案例,让学生在总结别人的经验的基础上完成自己的系统。在教学过程中除了单一的讲授外,还可组织形式多样的讨论、演示活动,提高教学效果。
5.实践教学的组织
课程设计或项目开发的项目可以由任课教师给出,也可以由学生自己选题,经老师同意可列为项目。在系统开发环境选择上,可以根据项目需求和学生掌握知识的情况,自主地选择他(她)们所熟悉的一种开发工具,如:VB、VC++或JAVA等。
从项目立项开始,进行系统需求分析、设计、实现与测试、评价等各环节,每个阶段应递交相应的文档,并进行检查和交流,对检查中发现的问题和不足,要求进行改进和完善,才可进入下一个阶段的工作。每一个阶段都要求严格控制。检查、交流与指导工作可在师生之间、同学之间互相进行,各组汇报进展、成果以及遇到的问题,其他同学可提问和给出帮建议等。特别是做同样项目的小组会针对性很强地提出实际问题或从中得出的有益的启发,老师在最后提一些建议和要求。
项目结束后,要组织答辩。可以让小组长对他们的项目的功能及基本情况作一个陈述,然后让每个同学说明在整个项目开发过程中所完成的任务,老师可针对每个同学的实际负责的部分进行提问,这样既有助于帮助同学掌握知识,又有助于了解每个同学所完成的任务。
在学生完成了项目之后,除递交系统和文档外,每个同学还必须进行总结,说出个人在参与项目开发过程中的心得体会。让学生自己在总结中学习知识。
6.学习效果评定
针对本课程特点,将理论和实践能力、学习态度和能力等进行综合评价。
三、思索
从专业教学整体和软件开发技术发展来看,高等职业技术院校开设的《软件工程》课程的教学改革还需要在以下方面进行努力:
1.与前期课程的配合,特别是学生对流行的开发工具的了解和应用。
2.不断完善本课程的教学资源,添置教学所需的软件,特别是计算机辅助分析、设计、测试、项目管理等工具软件。
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)02-0122-03
1 软件工程网络课程开发的必要性
软件工程是我校计算机科学与技术(职教师资班)专业的一门专业必修课,是指导软件开发和维护的工程学科,该课程信息量大,软件开发的理论知识和方法贯穿教学实践全过程,近五年的教学,积累了大量的课程资源、文档、工具和项目资料,而学生实践中遇到的问题、技术实现上的讨论也需要平台进行交流分享。信息化新时代,信息技术融入课程日益加强,构建有效的网上学习社区,提高教学中的互动与协作,开展教学多元评价,有利于有效提高教学绩效。软件工程教学实践性强,针对课程的特点,精心进行网络课程设计,利用现代教学手段开展教学,以适应信息化发展需要。因此开发一个辅助学生自主学习软件工程的网络课程非常有必要且具有很大的推广性。
Moodle平台使得课程目标、课程内容、学习资源等能有效被呈现,学在真实的网络环境下,学生能够自主学习、讨论以及向教师提问等,学生的积极性与创造性得到充分调动,利于培养学生良好的信息素养和计算机应用能力,也利于加快信息化校园的建设与实现。
2 Moodle平台简介
Moodle是模块化的、面向对象的、动态学习环境(Modular Object-Oriented Dynamic Learning Environment)的简称,是由澳大利亚教师Martin Dougiamas开发的一个课程管理系统(CMS),可帮助教学人员创建高效的在线学习组织,帮助教师高质量地创建和管理在线课程[1]。在国外高校中,Moodle作为一个免费的、开源的课程管理系统被广泛的使用。 Moodle依据建构主义的学习理论,注重强调在信息化情景下教与学活动中的相互协作、交流,使学生根据已有的经验完成意义建构。表1说明了Moodle平台对教师和学生教学行为的支持[2]。
Moodle 教学平台功能强大,操作简单,它主要包括课程管理、资源管理、活动管理和互动评价四大功能模块[3]。Moodle平台提供在线评价系统,支持多种学习评价方式,可以实施软件工程阶段性性评价与总结性评价相结合,学生自我评价与教师(他人)评价相结合。
3 软件工程网络课程的设计
良好教学效果需要有科学的网络课程设计。软件工程学研究的范围非常广泛,设计软件开发过程中的理论、技术方法,工具和管理等许多方面,内容丰富、学生参与和讨论程度高,软件工程网络课程拟构建一个资源高度共享的、师生之间、生生之间的网络协作学习平台,丰富学习的交互性和生动性。结合网络课程一般设计流程和Moodle平台特点,针对我院软件工程课程教学特点,分别从流程设计和任务设计两方面阐述我院基于Moodle平台的软件工程网络课程的设计思路。
3.1流程设计
在参考熊小梅等提出的Moodle平台下网络课程设计的一般流程[4]的基础上,软件工程网络课程的设计流程如图1所示。
在教学内容方面,软件工程知识和能力是软件研发岗位的职业基本技能。为强化软件工程过程管理,将教学内容划定为面向过程的软件工程、面向对象的软件工程和软件过程管理专题的三大部分,而前两部分又细分为问题定义、需求分析、概要设计、详细设计、编码实现、软件测试、维护、文档配置管理等知识点。
在教学策略上,本课程采用软件过程阶段实例导入、技术学习与讨论、实践操作分析相结合的启发式教学策略及方法。既有实例导入,又有知识与技能的学习,还需要结合小组项目任务的制定和实施,开展教学。本课程采用理论教学、实验实践教学、项目驱动教学相结合的教学模式,让学生参与软件项目活动,开展协作学习并完成任务。同时,教师上传丰富的资源形式并进行管理,学生可随时网上学习和下载,并在课外学习,突破时空限制,为学生深入研习创造条件。教师利用每个学习阶段对每个教学单元开展多种形式(如互动、测验、心得报告等)对学生的学习效果和课程实施进行评价、获取学生反馈,以便及时改进教学。
3.2任务设计
林鸿等人提出了C语言课程在线系统的设计[5],本文结合软件工程课程特点,给出在线课程的主要任务设计如图2所示。
4 软件工程网络课程Moodle平台的搭建
Moodle平台是采用PHP技术并使用MySQL数据库的开放源码软件平台,任何支持PHP和MySQL的系统均可安装Moodle。为开展软件课程网络课程实践,本文给出在Windows 7系统下搭建Moodle平台网络课程的过程。
4.1平台软件工具和环境配置
1)WampServer2.4。WampServer2.4是Apache+PHP+Mysql在Windows下的集成服务器环境,它安装简单,易于操作,避免了诸多PHP环境配置问题[6]。
2)VC++ 2008可再发行组件包。WampServer2.4所必需的微软程序组件VC++ 2008可再发行包。
3)moodle-2.8.5。Moodle平台的最新正式版本。
4)Moodle平台中文语言包。
在安装上述软件之前,如果机器安装有IIS 服务,还要事先关掉IIS 服务功能,因为通常一台电脑上不能同时安装两个Web 服务器(80端口冲突)。平台所需软件见图3所示。
4.2 平台搭建过程
1)安装VC++ 2008可再发行组件包。
3)启动WampServer2.4所有服务,打开其中的PhpMyAdmin服务,管理课程Moodle平台数据库,创建一个名为moodle的空数据库即可,注:用户名为root,密码为空。
4)解压moodle-2.8.5.zip到WampServer2.4服务器安装路径下的网站文件夹www目录下(如:D:\ wamp\www\)。
5)解压中文包zh_ch.zip到服务器网站目录www下的moodle文件夹的语言目录中(如:D:\wamp\www\moodle\lang)。
6)打开http://localhost/moodle/开始进行Moodle平台安装与参数设置,建议选择中文语言界面进行安装,最后更设置好个人资料,用户名和密码即可。
安装好之后管理员可在主页上进行网站管理、用户管理、课程管理等操作。
4.3《软件工程》网络课程构建与应用
搭建好Moodle平台之后,用户以教师(课程创建者)的身份登录到Moodle平台上,即可开始管理自己的网络课程,构建课程的主要过程有:(1)添加并设置课程。(2)添加用户。(3)共享教学资源。如课件、文档、文章、网络资源等。(4)创建活动。如论坛主题讨论、在线测验、作业、问卷调查、投票等活动。
在对我校2013级计算机科学与技术(职教师资班)专业32名学生开展的《软件工程》课中搭建和应用了基于Moodle课程网络平台,师生共同完成了网络课程的教师和个人信息编辑、课程资源共享和下载、课程讨论区使用、站内与回复消息、在线实时聊天、课程作业管理、课程在线测验、管理课程博客等功能,通过近一个学期的使用发现,网络课程平台使师生加强了课堂外的交流讨论、学习和小组协作,拓展了学生学习方式,提高了学生学习自主性和创造性,学生反馈课堂学习更加丰富多彩,知识学习和交流互动更加便捷了,教与学的质量得到了很大的提高。学生课程首页应用效果如图5所示。
5 后记
软件工程网络课程的建设,加快了现代化教与学的模式的实施进程,给教学实践和互动交流搭建了良好的平台,学生从被动学习转变为主动学习,探究与协作学习,突出了学生的主体性,有利于教学质量的提高。Moodle作为一个开源、基于建构理论的课程管理系统,对开发出高质量的软件工程网络课程平台提供了很大的帮助。
参考文献:
[1]黎加厚. Moodle课程设计[M],上海. 上海教育出版社,2007.
[2]Moodle官方网站.http:///.
[3]景宝华. 基于moodle平台的《数据库应用技术》网络课程构建研究[J].计算机光盘软件与应用, 2014(6).