软件工程慕课教学建设探讨

时间:2022-11-04 11:55:04 来源:网友投稿

摘 要:通过分析目前教学当中存在的问题,探讨将慕课引入软件工程课程教学中,实现慕课与工程教育混合式教学的改革与探索,以培养软件工程卓越工程师的创新能力为目标,推动软件工程慕课的建设。课程结合实际案例,指导学生以组进行软件系统的开发,让学生完整的体验软件工程方面的专业基础理论,建立起软件开发的工程概念、原则和习惯,提升学生分析问题、解决问题,以及团队协作、谈判沟通等能力。

关键词:慕课;SE-CDIO;创新能力;卓越工程师;协同育人

中图分类号:TP311.5 文献标识码:A

Abstract:By analyzing the problems existing in the current teaching, this paper discusses how to introduce MOOCs into the teaching of software engineering,and implements the reform and exploration of the blended teaching of MOOCs and engineering education,in order to cultivate the innovation ability of excellent software engineers and promote the construction of software engineering MOOCs.With the integration of the course and practical cases,students are guided to develop the software system in groups,which enable students to fully apply the professional and basic theories in software engineering into practice,understand the concepts,principles and conventions of software development,and improve the abilities of analysis,problem solving,teamwork,communication and negotiation.

Keywords:MOOC;SE-CDIO;innovation;excellent engineer;cooperative cultivation

1 引言(Introduction)

“软件工程”是软件工程专业的专业核心必修课程,作为中国大学资源共享课程、国家精品课程、教育部-英特尔精品课程、云南省精品课程,在师资队伍、教学设计、教学案例、实验项目等方面进行了大量的积累。所在学院软件工程专业获得国家卓越工程师项目和云南省卓越工程师项目,“软件工程”课程结合卓越工程师的培养目标,注重培养实践能力强的工程人才。“软件工程”课程与深圳软酷网合作已完成慕课录制并上线,为后期建设奠定了良好的基础。慕课(Massive Open Online Courses,MOOC)即大型开放式网络课程,为学生提供了系统学习的可能性[1,2]。世界各国的大学和课程提供商提供了相应的平台。通过翻转课堂建设,有效地精简“软件工程”的授课时间和授课内容。按软件实践的过程重新梳理和设计知识点后,通过每次6—8分钟的授课,保持学生的兴趣和关注点。在精简内容的同时,有效地补充课后实践体系和课程辅导,加强学生的实践动手能力培养。改革考核目标,通过灵活多变的能力评价,加强学生创新能力培养,为学生接受知识和培养能力提供了新途径。

为了加强对软件工程卓越工程师能力培养,本课程要求软件工程的学生能适应不断发展和改变的技术环境,成为同时掌握专业能力和管理能力的综合人才,具有合理的知识体系结构和较宽的学科理论基础,有助于卓越工程师能力的培养。

2 软件工程实践体系(Software engineering practice

system)

根据国家发展战略,国际社会各国都逐渐加强科学和工程研究,强化科学与工程的高等教育,鼓励创新,培育和发展创新性教育环境和系统[3-6]。软件学院针对学院本科生开设了《软件工程》这门必修课程,这门课在三年级上学期进行,学分为3,周学时为3,授课总学时为54。本课程是一门综合性和实践性很强的核心课程,主要内容包括软件工程概述、可行性分析、需求分析、项目计划与管理、面向对象分析与设计、系统架构和构件、软件质量与质量保证。为通过课程支持结合应用背景的软件开发和创新能力培养,该学期开设了《软件工程实验》这门必修课程,学分为1,周学时为2,授课总学时为32。以软件构思、软件设计、软件实现,以及软件运作等为主线进行,结合软件工程关键知识点出发设计实践体系,支持对软件工程知识的掌握和应用,从而培养卓越工程师人才的需要,具体的实践体系由以下实验组成。

第一个环节是软件工程工具与环境安装与应用,实践的目的是通过对软件开发工具的安装流程和使用了解软件工程开发流程,实践主流的软件工程技术和工具。

第二个环节是软件工程标准化文档撰写,学生熟悉和掌握软件工程标准化的概念、内容和意义,较为全面地了解软件工程相关国际和国家标准,通过对标准化文档的撰写熟悉软件生命周期,并且针对具体应用背景,进行项目可行性分析。

第三个环节是构思性实践,“构思”要求学生按组考虑技术、企业战略等因素,设立系统目标和要求;依靠分析技术,对待开发软件系统所对应的问题域和系统责任進行分析和理解;对其中的事物和它们之间的关系产生正确的认识,并按照某种规范形成需求规约。这个环节将培养学生具有独立分析和相互协调的能力。因为大部分学生擅长于完成具体的任务,不擅长寻找问题,所以这也是学生觉得最困难的部分。

第四个环节是软件项目管理实践,学生掌握项目管理基本概念和工具,实践人员管理、成本估算、质量管理、过程改进相关过程,针对构思部分得到的项目创建资源列表、资源分配,成本分配等。

第五个环节是软件开发绘图工具安装与使用。要求学生培养面向对象的分析能力,使用UML绘图和建模工具实践确定项目的需求分析,给出业务处理模型、用例图和包图,使学生能够运用工具进行系统分析和需求建模操作,生成标准需求规格说明书。

第六个环节是设计性实践,学生通过一个产品、过程或系统的设计而进行实践。在构思阶段成果的基础上,将关注点放在“如何实现”上,从对问题空间的建模转移到解空间的建模。该过程为实现构思阶段生成的需求模型引入计算模块以及模块之间的关系描述,并从提高软件设计质量和效率方面改进软件结构,完成概要设计说明书、数据库设计说明书和详细设计说明书。

第七个环节是软件测试实践,学生掌握软件测试的策略和自动化工具,实践自动化软件测试用例设计以及单元测试过程,在此基础上迭代地进行需求验证,对前期的需求分析修改。

第八个环节是实现性实践,学生掌握实施技术,实践软件的编码、配置、集成、验证、认证和对实施过程。学生利用自动化工具进行代码版本控制、配置管理、权限管理、历史记录跟踪等,按业界规范撰写和管理源代码。将程序设计艺术融入到编码实践中,要求学生较多地考虑程序的内存要求和运行时间等,提交用户手册等文档。

第九个环节是运作性实践,学生在相关网站和同学群中对开发出的系统进行实际应用,撰写商业企划书,了解融资和相应的营销和服务渠道。并反馈到构思、设计和实现阶段,对前期的需求、设计和编程等进行迭代式地修改。

软件工程实践体系具体要求学生能掌握教学课程以外的相关技术,以自学习的方式进行新知识的学习,并能运用相关技术创新地进行实际项目的构思、设计、实现和运作。体系涉及基础面广、可操作性强、环节之间层次分明、并强调循序渐进注重过程质量控制。学生通过平台进行软件工程生命周期各阶段的实践,在网上通过配置环境等进行项目合作,提交项目等,并完成网上测评。实践体系重新编排教学内容以配合不同学习者的目标,促进回应和互动,进行灵活的实践环节设计,较好地适应学生的多样性。传统教学中学生接触到的教师和其他学生较为有限,由于时空的限制无法进行随时的沟通。实践体系使得学生可有效地进行沟通和交流,分享按不同学习目标编排的教学内容和想法。自主的参与极大地触发了学生的积极性,使得学生按不同的兴趣点和授受能力进行创新。

3 翻转课堂建设(Flipped classroom construction)

软件工程慕课由于授课时间及地点的灵活性,可缩短每次授课的时间,通过每次6-8分钟左右时间的授课,保持学生的兴趣和关注点。较短的时间片使得学生可自由地编排教学内容,易于制定不同的教学目标。教学目标的不同可有效地促进创新能力的培养,并且对学生的能力进行多种方式的评价,着重卓越工程师创新能力的培养。以下针对传统教学对创新能力培养存在的问题,对传统授课知识点进行删减,分为以下研讨主题:

软件工程的发展史:基于软件工程发展过程中重要里程碑事件研讨其意义和影响,学生交流关于工程的理解。

软件生命周期:讲授软件生命周期中需求分析、软件设计、软件构造、软件测试、软件交付、软件维护各阶段,讨论敏捷软件、SCRUM、极限编程等。

面向对象软件工程:讨论软件过程模型及其发展过程,对现代软件过程模型进行比较和分析,讲授面向对象方法在软件工程学中的作用。

SE-CDIO和系统案例:以实践案例分析讲授SE-CDIO人才培养模式,风险投资项目,软件著作权和知识专利,项目实践过程。

软件项目管理:讲授软件项目管理大师及项目管理的经典案例团队组织与管理,讲授软件质量保障,软件配置保障。

需求工程:讨论软件需求的开发和管理,以需求在整个软件项目中的作用和开发过程为主线,完整描述了需求定义、需求获取、需求分析、UML业务建模、需求规格说明、需求验证和需求管理等需求工程活动。

面向对象需求分析:讨论面向对象需求分析方法和面向对象建模工具,讲授需求分析过程中UML业务建模和需求规格说明撰写。

软件设计:演示具体示例,讲授设计视图和设计图、设计视角和设计关注、需求和涉众、设计理由、设计描述的模板。

软件体系结构设计:讲授体系结构的原型构建、体系结构集成、测试关键需求、项目约束、体系结构风格、软件体系结构逻辑设计、和软件体系结构实现与完善。

体系结构的原型构建:讨论包的创建、构件之间的接口、关键需求的实现、体系结构的原型构建要求及过程、体系结构原型。讨论集成的策略、桩、驱动与集成测试用例、软件体系结构设计文档描述众、体系结构集成与测试。

人机交互设计:讨论人机交互设计的人类因素和计算机因素、一些人机交互设计原则、人机交互设计过程、经典的界面设计。

详细设计中的模块化与信息隐藏:讨论优秀设计的标准、设计质量、分解与模块化、信息隐藏。

软件构造:讲授软件构造概述,软件构造活动,软件构造实践方法,讨论软件构造活动、重构、测试驱动开发、结对编程。

代码设计:讲授代码的易读性、易维护性、可靠性,讲授使用模型辅助设计复杂代码和问题代码,使用模型辅助设计复杂代码。

软件测试:讲授测试用例开发、代码开发单元和测试用例间的关系、测试用例的选择、随机测试、基于规格的技术—黑盒测试方法、基于代码的技术——白盒测试方法、特定测试技术;

軟件运营与演化:讲授软件可修改性与软件维护、软件维护的类型、软件维护的高代价性、软件维护过程与活动,讨论软件运营和软件演化实践。

新技术专题:讨论基于搜索的软件工程和大数据环境下的软件工程新技术。

传统教学过程容易出现知识老化的现象。对于快速发展和不断发生改变的IT新知识和技术,传统课程教学时间和地点容易受限,课程内容难以快速调整,使得教学滞后于知识的发展。软件工程慕课提供一种对传统课程有效的补充方式,使得学生可以通过其他途径掌握新技术,充分发挥学生的自学习能力。联结主义式的慕课集结各种资讯从而实现高端的知识交换,使得学生可即时地接触到新知识,并可根据学生的反馈灵活地改变所学内容,便于进行新知识的传授,以及学生创新能力的培养。软件工程慕课通过联结课程内的教材或其他内容,混编大量不同的教学内容、同一内容的不同讲解方式甚至相反的看法在一起,易于开拓学生的眼界,从而培养学生的创新精神。

4 SE—CDIO课程辅导建设(SE-CDIO curriculum

guidance construction)

为了有效地进行卓越工程师的培养,本课程实现慕课和软件生命周期的有机结合,进行慕课及工程教育模式[1,2]混合式教学的改革与探索。将整个课程分为SE-CDIO四个阶段进行,具体为SE-Conceive软件构思、SE-Design软件设计、SE-Implement软件实现、SE-Operate运作。按这四个阶段教师不再进行课程的讲授,更多的是执行过程控制和导引的作用。各阶段的具体内容设计如下:

SE-C的内容主要是软件需求与建模。此阶段要求学生针对目前的技术热点,进行技术报告,体现自己的自学习能力。教师引导学生学习相关创新技术的资源,如TED演讲等,了解目前正在出现的新技术,如3D和4D打印机、云计算、大数据、移动计算和虚拟计算应用等。学生要进行市场研究,找到所学习技术和当前软件需求的结合点进行创新设计。教师在此阶段要了解学生对知识的掌握是否正确,并且确认结合点可行。由于学生对现实问题缺乏了解,教师会引导选择背景较为熟悉的创新项目,让学生了解创新技术以及对现实问题的创新求解。让学生针对现实世界的业务流程进行改革和创新,培养学生发现问题,以及创新性求解问题的能力。由于交叉领域易于进行创新,创新课程鼓励学生和其他专业的学生进行合作,比如和生物学院的学生合作进行生物序列比对、识别等。这阶段主要是扩展学生的眼界,培养学生的创新意识。

SE-D的内容主要是软件设计与优化。此阶段要求学生能针对项目的需求分析进行设计,并且结合业界的先进技术,进行软件架构设计及技术方案的创新设计及优化。使学生所学习的资源远远超越了已有课程教学的内容,甚至跨越了专业,体现了多样性。让学生自主学习人脸识别的技术、社交好友评价及识别系统等。由于学生结合了自己的兴趣点,能有效地发挥自学习能力。教师在此阶段不再是传授的角色,更多的是辅助和指导的角色,指出方向的正确性和可行性。不少学生能针对待求解问题进行新技术的学习,并能利用学到的新技术提出可行的设计方案。本阶段教师将基于搜索引擎对新项目进行查重,确认学生所选择项目创意或使用技术上的新意。

SE-I的内容主要是软件实现、集成与测试。此阶段中学生需要对选定的技术方案进行设计与实现。往往此阶段也是出错最多的阶段,除了核心技术问题外,运行环境的设置、接口的设置和调用也是失败最多的地方。例如,在软件的配置过程,往往出现由于版本不同而引导的问题,以及由于运行环境不同而导致的问题。在手机软件的设计中,学生往往由于一些接口以及配置问题而陷入困境。由于学习的是新技术,很难从同学和教师身上获得答案,所以老师要引导学生在国内外的技术论坛进行学习。学生的自学习和实践能力在此阶段将得到锻炼。

SE-O的内容主要是软件运用、维护、产业化、市场营销,让学生经历工程中理论→技术→生产→应用的全过程。在此阶段教师将引导学生了解软件的成功不仅仅取决于其功能,事实上很多时候需要考虑非功能性需求,如用户友好性、易用性、易维护性等。学生通过软件的试运营,改善产品的界面设计,优化软件的使用方式,细化用户需求,达到对前三阶段的迭代及反馈式改进。在此阶段,教师让学生观看有关营销、管理及产品介绍的慕课资源,让学生了解如何去主动接触他人,如何了解客户的需求。通过一流软件公司如苹果公司、微软公司、GOOGLE公司的经营理论和产品介绍的慕课资源,让学生了解公司的经营及相关产品发展。此阶段教师还要求学生进行同一软件的多版本比较,以及类似功能的不同软件比较,通过这些比较让学生了解产品设计思路的改变,以及公司的经营策略。比如通过微软公司、苹果公司不同时期的公司网页和软件产品,以及中外IT网页和产品的比较,学生可了解业界的发展历史和当前趋势,让学生了解软件市场的热点和趋势。

5 改革考评方式(Reform the way of evaluation)

传统教学和考核方式过于单一,实践环节薄弱。为了满足学分和教学体制的要求,学生必须按课程体系的要求进行相关学习,这影响了创新知识的传授和接受。单一的考试方式不能全面的考查学生对知识的掌握,尤其是学生创新能力、知识应用能力,以及毕业后不断更新知识的能力。学生只以通过考试为目标,缺乏学习的动力和持续性。本课程的考核实施过程控制,成绩不完全由考试或大作业决定,还将包括考勤和学生在课堂上的演讲、学生的自学习和团队沟通能力、软件创新能力等共同组成。学生参与的软件竞赛成绩,以及参与的教师研究项目可计算入本课程的考核成绩。

由于学科的快速发展及大量网络资源的可获取性,教师很难了解所有的相关文档及源代码的原创性。本课程依托学院实验平台上的自动化线上评量系统,进行软件查重。同时利用学生开发的系统对相关文档进行查重,从而客观、公正地对软件作品进行评价。

6 结论(Conclusion)

软件工程专业基于慕课和CDIO的混合方法进行课程教学,改革了创新课程。以慕课扩展教学资源,结合SE—CDIO应用实践设计四阶段的教学内容,进行学生创新能力的培养,达到培养自学能力、创新能力、项目实践能力的卓越工程师人才为目标。

参考文献(References)

[1] Urman,Ingrid.Make the Most of MOOCs[J].Training.2017,

54(2):14-33.

[2] 陳澎,熊耀华,周慧.基于CDIO模式的软件工程实践教学课程建设的研究[J].软件工程,2016(1):1-3.

[3] O.M.Zamyatina,et al.Analysis of Engineering Invention Competencies in Standards and Programmes of Engineering Universities[J].Procedia-Social and Behavioral Sciences,2015,171:1088-1096.

[4] Edström,et al.PBL and CDIO: Complementary Models for Engineering Education Development[J].European Journal of Engineering Education,2014,39(5):539-555.

[5] 康雁,李彤.基于SE-CDIO培养学生项目管理能力的新途径[J].计算机教育,2013(13):69-72.

作者简介:

康 雁(1972-),女,博士,副教授.研究领域:软件开发,数据挖掘.

李 彤(1963-),男,博士,教授.研究领域:软件工程,软件过程.

张 璇(1978-),女,硕士,副教授.研究领域:软件工程,信息安全.

推荐访问:软件工程 课教学 探讨 建设