黄佳佳 李鹏伟
摘 要:针对当前软件体系结构课程特点和教学过程中存在的难点,提出贯穿式案例实践教学法。通过设计一套可贯穿软件体系结构课程各主要知识点的若干案例,组织学生分组实践,设计软件架构,解决现有教学模式存在的问题。该教学模式将理论与实践相结合,帮助学生理解理论知识,培养学生动手实践能力,在实际教学中取得较好效果。
关键词:软件体系结构;贯穿式案例;实践教学法;教学实践;软件工程
DOI:10. 11907/rjdk. 201493 开放科学(资源服务)标识码(OSID):
中图分类号:G434 文献标识码:A 文章编号:1672-7800(2020)011-0249-03
The Application of Penetrating Case and Practical Teaching Method
in Software Architecture Course
HUANG Jia-jia, LI Peng-wei
(School of Information Engineering, Nanjing Audit University, Nanjing 211815, China)
Abstract: Focusing on the course features of software architecture and difficulties in the teaching processing of this course, this paper proposes a penetrating case and practical teaching method. We try to solve current teaching problems through designing a series of cases that are able to penetrate the main points of software architecture course and designing software architecture in practice by dividing students into groups. This teaching method can both improve students cognition of software architecture theory and enhance their practical ability, which acquires promising result in teaching practice.
Key Words: software architecture course; penetrating case; practical teaching method; teaching practice; software engineering
0 引言
軟件工程专业作为计算机科学与技术一级学科的一个分支学科,较为偏重软件开发的工程性与实用性,要求学生不仅学习相关理论知识与实践技能,还要熟悉软件开发的一整套流程,包括软件项目管理、软件需求分析、软件架构设计与细化、产品测试及后期维护等[1]。在软件工程本科生培养方案中,最能综合体现该专业工程性与实践性的课程即软件体系结构。通过学习51或34个学时的软件体系结构课程,使学生掌握常用的软件体系结构风格及其特点、软件体系结构设计与评估理论知识。此外,结合UML设计与设计模式等课程,使学生能依据特定的软件需求设计出软件架构,并对该架构进行相关评价[2]。
软件开发产业一般要求应聘者“熟悉软件工程领域理论知识,熟悉大型软件系统架构知识及实现方法,熟悉软件框架的设计和编码论证”[3],这要求高校在培养软件工程专业学生时加强工程实践技能培养,使其从一个合格的程序员逐步过渡为软件架构师。众多教育者从各种角度探讨不同的教学方案,对培养软件架构人才进行研究,如强调案例库建设与项目实践重要性[4-5]、提出以培养学生编程能力为中心[6]增强学生学习兴趣[7]的教学改革方案等。在软件体系结构课程改革中,清华大学覃征教授2009年提出“抽象与实践相结合”教学思想,强调将专题研究作为讲授线索[8]。在随后的课程改革探讨中,相关学者也认为软件体系结构课程应以案例式教学为主[9-12],以开源软件的设计与分析为实践案例。
本文基于软件工程专业人才培养需求与软件体系结构课程特点,提出贯穿式案例实践教学法,从顶层设计上推进实践教学模式创新,培养适应软件行业发展需求的软件工程人才。
1 软件体系结构课程特点及存在的问题
与软件工程其它基础或核心课程不同,软件体系结构课程具有知识面广、抽象程度高、实践要求强等特点。
(1)软件体系结构课程一般开设于大三,这是因为该课程涉及到数据结构、数据库设计、计算机网络、程序设计与编程语言等课程知识,要求学生较为熟练地掌握这些已学过的核心知识并灵活运用。
(2)软件体系结构课程本质是对一款软件的顶层架构进行设计与细化,这种设计思想与单一的算法设计及其编码实现的思维方式差异较大。该课程要求学生能够从软件需求出发,以UML等为设计工具,灵活运用所学的软件架构风格和各类设计模型/思想,为某款软件设计一个合理有效的架构方案并逐步细化该方案。这一过程抽象程度较高,要求灵活运用知识点且设计方案不唯一,学生往往难以真正掌握。
(3)软件体系结构课程要求理论与实践相结合。理论知识可辅助学生进行体系架构的细节设计,但是如何为软件规划一个合理的架构需要学生在过去的软件开发经验中寻找灵感。仅依赖课堂的理论知识讲解和做习题而不进行软件项目开发实践,学生很难从整体上理解和把握这门课程精髓,进而很难将其运用到软件设计中[9]。
笔者发现当前软件体系结构课程多采用传统教学模式,即以“老师课堂讲解,学生听课、记笔记、做练习”为主[13],辅以少量的实验教学,如使用UML设计软件架构的部分模块,这种教学模式存在如下问题:①以知识点为中心的理论教学较为枯燥。在传统教学模式下,软件体系结构课程涉及知识点较多且分散,若教师在课堂上逐一讲解各章节知识点但缺乏较为形象的实验案例,学生的学习注意力不易集中、学习热情较低;②学生对软件系统的整体设计框架理解不足。由于软件架构一般结构宏大,而在课堂教学中往往只针对部分知识点设计相应的小型案例。这些案例之间独立设计,无法将离散的知识有效贯通起来,因而学生往往只能理解一款软件架构的部分设计细节,很难理解其总体设计思想;③学生综合实践能力较差。由于教师在教学过程中以理论讲解为主,缺乏实战经验,容易忽视案例的趣味性和系统性,导致学生不能很好消化这些理论知识。此外,由于课时限制和实践机会欠缺,学生往往无法将所学知识点与软件架构设计真正结合起来。
2 贯穿式案例实践教学法
案例教学是一种开放、互动的新型教学方式,其通过模拟和重现生活中的一些场景,将学生纳入案例场景中,从而使学生能够深刻体会所学知识点的内涵和价值。案例学习是知识迁移的重要方式,特别是在创新工程教育背景下,基于问题解决的案例教学在工程教育中具有重要作用[14]。在案例教学中,教师需要根据教学目标和所学知识点设计学生能理解的教学案例[15]。学生通过对这些案例的讨论和交流增强分析和解决问题的能力。
软件体系结构课程包含章节和知识点较多,若只针对每个知识点设计相应案例会使整个课程案例之间关联性差,无法解决学生对软件架构整体框架理解不足的问题。为此,本文从连贯性和系统性出发设计一个或若干個完整案例,将课程知识点有序串联起来,使课程理论与实践更好地结合。
案例设计遵循以下几点原则:①难度适中,案例既要符合大三本科生的认知水平,也要符合当前软件架构发展趋势;②案例能够将课程中的主要知识点囊括进来,通过案例使学生加深对理论知识的认知;③设计与案例难度相匹配的练习题,增强学生运用知识点能力;④学生根据软件需求以分组作业形式设计软件架构体系。
与传统扁平式分章节教学相比,贯穿式案例实践教学法围绕课程的核心知识点展开纵深模式教学。这种方式对知识点详略把握得当、对知识点之间的区别与联系理解更加深刻、对理论知识与实践方案的结合运用更加灵活。学生通过案例学习到特定问题的解决方法,熟悉特定工作领域业务流程,身临其境地进行系统分析与决策,能更好激发学生的学习热情和独立思考能力,提升团队协作能力和实践开发能力,同时丰富该课程教学形式与教学内容,提高教学质量。
3 教学目标及案例设计
3.1 软件体系结构课程教学目标
软件体系结构课程主要学习内容包括体系结构概念、“4+1”视图模型、软件体系结构风格、UML建模与应用、基于体系结构的软件开发与评估等。在51个学时的学习过程中实现如下教学目标:①学生掌握该课程的核心理论知识,如什么是软件体系结构?不同体系结构风格的优缺点、异同点是什么?②能将所学理论用于软件体系结构细节设计中,如使用UML设计软件的用例模型和类图,根据软件需求设计软件的逻辑视图与开发视图等;③在通学所有知识点后根据某款软件的需求设计一个体系架构方案。这一目标需要学生不仅具有对课程知识点的灵活运用能力,还需要学生具有分组协作能力。在这一过程中,学生通过充分的沟通交流和分工协作为软件选择某种体系结构风格并自顶向下(或自底向上)设计。
3.2 贯穿式案例选择
基于该课程的教学目标及案例设计原则,本文选择Hassan编著《软件建模与设计:UML、用例、模式和软件体系结构》[16]一书中的“ATM系统”和“在线购物系统”案例作为本课程贯穿式教学主案例。选择这两个案例理由:①这两个系统所隐含的软件需求较为清晰简洁,贴合学生认知水平;②这两个贯穿式案例都是从需求分析入手,遵循“选择风格→设计顶层结构→设计”4+1“视图(如用例模型、类图等)→设计具体细节(如数据库表单设计、服务设计等)→架构评估”这一过程。通过剖析子案例可将所学的大部分知识点贯穿起来,形成一个统一的架构方案;③这两个案例分别使用“客户/服务器”和“面向服务”风格实现软件架构的顶层设计,而这两种风格及其应用正是学生需要掌握的最重要且有一定难度的软件设计风格;④在整个案例讲解过程中,学生能够将设计模式、UML建模、面向对象思想等软件工程专业的知识融入到软件设计实践,提升软件开发能力。
3.3 分组实践
贯穿式案例实践教学法不仅要求教师在教学过程中设计贯穿式案例,还要求学生能够将所学理论知识应用到软件架构开发实践中,为此设计若干个软件架构设计课题,学生以自愿分组形式选择某个课题,其整体思路如图1所示,包括组队(3~5人)、选题、设计架构方案、撰写架构文档、总结与展示、交叉评价架构方案等5个环节。其中,设计架构方案包括细化需求分析、选择体系结构风格、设计顶层架构、设计视图、设计类/包/服务、设计数据库等模块。
在分组协作完成课题过程中,需要根据兴起爱好自由组队并推选一名组长开展组织协调工作,小组设定需求分析师、架构师、模块开发员、文档撰写员和架构评估员等不同角色。通过团队合作,培养学生沟通协作能力、文档撰写能力和软件开发能力。
项目完成后,教师采取综合评定方式对每个小组实践课题进行打分,并从教师、项目组内部和项目组之间3个维度进行评分。首先,小组成员自行分配各自对课题的贡献度;其次由教师和其它小组分别为组织软件架构方案展示答辩打分,将两类分数加权并按内部贡献度划分给每个小组成员,作为其在该实践课题中的综合得分。
3.4 教学效果
贯穿式案例教学法与软件体系结构设计实践相结合,不仅能有效提升学习效果,还能促进对理论知识的应用能力。通过生动形象又有机统一的贯穿式案例,能够让学生对各知识点逐步加深理解,提升学习主动性和积极性;课堂教学过程不再是教师的“独奏”,而是在与学生的积极互动与共同探讨中度过。分组设计软件架构方案使学生不再被动式学习,而是带着任务和问题主动寻求解决方案。此外,分组实践锻炼了学生的合作交流能力和良性竞争意识。
4 结语
针对软件工程专业核心主干课程软件体系结构的特点和教学现状,结合学生在该课程学习过程中存在的难点,本文对贯穿式案例实践教学法进行了探索。该教学方式能够在教学过程中将软件体系结构课程中的重要知识点和软件设计与开发的核心思想有机结合,根据课程特点对教学案例进行针对性设计,学生由被动接受转为主动学习。然而该教学方案案例设计仍有较大改进空间,需在后续实践中不断优化。
参考文献:
[1] 陈海鹏,吕颖达,王玉,等. 软件工程应用型人才特点及培养方式研究[J]. 计算机教育,2016,15(11):61-64.
[2] CLEMENTS P R,KAZMAN M KLEIN. Evaluating software architectures:methods and case studies[M]. Boston:Addison-Wesley,2002.
[3] 应时,李小红,刘伟,等. 软件工程专业教学思考与实践[J]. 软件导刊,2020,19(1):15-17.
[4] 毛燕琴. 软件工程专业案例启发式教学实践框架研究[J]. 计算机教育,2015,14(7):22-24.
[5] 侯雪梅,李志博,于磊,等. 软件工程课程群案例库建设和实践教学方法研究[J]. 大学教育,2019,18(10):11-13.
[6] 杨爱民,邓芳,高飞. 软件工程专业人才培养模式的研究与探讨[J]. 计算机教育,2016,15(3):64-67.
[7] 方芳,刘袁缘,赵一石,等. 基于 MOOC 的软件工程专业教学模式创新实践[J]. 计算机教育,2018,19(8):82-85.
[8] 覃征, 刑剑宽. 《软件体系结构》课程教学:抽象与实践的协调与统一[J]. 中国大学教学,2009, 18(7):14-15.
[9] 李暾,文艳军,刘万伟,等. 《软件体系结构》课程教学改革规划与实施[J]. 计算机教育,2015,14(6):19-21,37.
[10] 朱泽民,张青,何中林. 《软件体系结构》课程教学改革探讨[J]. 软件导刊,2014, 13(12):171-172.
[11] 李天科. 应用型本科《软件体系结构》课程教学内容设计[J]. 计算机教育,2018, 17(6):120-123.
[12] 孙耀,陈圣国,王智钢,等. 基于真实项目案例的《软件体系结构》课程建设[J]. 金陵科技学院学报(社会科学版),2018, 32(4):58-62.
[13] 吴建斌, 陈中育, 叶荣华, 等. 软件工程类课程教学模式改革探索[J]. 中国信息技术教育, 2013,12(5): 119-121.
[14] 安榮,王梅. 基于问题解决的工程案例教学[J]. 高等工程教育研究,2007,25(1):133-135.
[15] 陈亮,穆楠. 基于贯穿式案例及合作学习的 Web 课程教学研究[J]. 计算机教育, 2018, 17(9):87-91.
[16] GOMAA H. 软件建模与设计:UML、用例、模式和软件体系结构[M]. 彭鑫,吴毅坚,译. 北京:机械工业出版社,2014:282-347.
(责任编辑:杜能钢)