朱磊 徐传运 张杨
摘要:针对系统分析与设计课程的特点和当前存在的主要问题,根据长期的教学实践基础,提出案例引导教学法和五步实践教学法,以案例作为课程的核心,采用“把理论融入案例、从案例中抽取理论”的双向思维方式,通过“从实践中来、到实践去”的双向过程,解决系统分析与设计课程在教学过程中面临的难题。
关键词:系统分析与设计;双向驱动;案例教学法;实践能力
0.引言
系统分析与设计课程是软件工程的专业骨干课程,该课程面向已掌握计算机科学基础知识、软件开发基本技术的高年级学生,因此该课程通常开设在大三下学期或大四上学期。该课程是在学生已经具备一定程序设计能力的基础上,培养学生的软件系统分析与设计能力,进一步培养学生的软件开发综合能力,同时培养比代码编写人员更高层次的系统分析与系统设计人员的专业核心课程。该课程在培养学生软件工程应用能力方面有着不可取代的地位。
系统分析与设计是一门承上启下的课程,在程序设计基础类课程、计算机科学基础类课程、程序设计技术类课程的基础上,讲授软件系统分析与设计的基础理论、方法、技术、工具,为软件工程开发高级类课程奠定基础。该课程的主要先修专业课程有程序设计基础、面向对象程序设计(Java)、数据结构、计算机网络、操作系统原理及应用、程序设计方法学、数据库原理及应用、Web程序设计基础、Windows程序设计基础、Java EE架构与程序设计/.Net架构与程序设计、高级C#开发技术/移动开发技术等。后续或同步开设的课程有软件质量保证与测试、设计模式、软件体系结构、软件项目管理与团队协作、Web软件应用案例分析等。
1.课程特点与问题
系统分析与设计是一门理论性与实践性都比较强的课程,同时又是一门抽象性较高的课程,学生在理解理论、将理论运用到实践、解决具体问题方面感到困难。课程的主要特点有以下几个方面。
(1)实践性较强。该课程主要培养软件工程专业(或相关专业)学生的系统分析与设计能力,要求学生在学习完该课程后,具备对中小型系统进行需求收集、分析、规约、建模、系统架构设计、数据库设计和详细设计的能力。
(2)理论性较高。虽然系统分析与设计课程实践性较强,但是实践必须在理论的指导下进行,要求学生系统掌握软件系统需求、设计的相关概念以及规律、原则、模式等知识。
(3)理论不成熟。软件工程经过十多年的高速发展,虽然在理论知识方面有一定的积累,但总体来说,软件工程的理论知识仍然不系统、不完备,其正确性、有效性仍然需要在实践中验证。在理论不成熟的领域,经验积累就显得尤其重要,经验知识传授的最佳方式应该是“师带徒”,但当前大学教育主要采用课堂授课方式,这是培养学生系统分析与设计能力面临的难题。
(4)抽象性较强。系统分析与设计完全是基于概念基础上的逻辑模型的建立与优化,这些逻辑模型的建立过程是从无到有的抽象创造过程,是完全在逻辑空间中的演化。软件系统逻辑模型的复杂度往往较高,这要求学生必须具有较强的抽象思维能力,而抽象思维能力培养又是一个长期且具有一定难度的过程。
(5)综合能力培养。系统分析与设计要求学生具备较高的综合能力,既包括理论知识、方法、技术、工具等工科方面的知识和技能,又包括交流、沟通、演讲、辩论、写作、创新等文科方面的能力。软件工程专业的学生主要以理科生为主,文科方面的能力相对较差,而这些能力对需求的收集、确认、规约以及设计方案的讲解、交流、说服显得特别重要。这一特点常常被忽略,一些教师经常误认为学生学会面向对象、面向过程的方法以及UML、数据流图、ER图,就学会了系统分析与设计。
在系统分析与设计课程的教学过程中经常出现以下问题:理论与实践脱节,理论不能指导实践,实践不能验证和提升理论;学生不能真正理解抽象的理论;学生不知道如何运用理论以及在何种场景中运用理论;学生掌握了工具的使用,但不知道怎么用工具解决系统分析与设计问题;学生学完课程后,仍然不能独立地完成一个软件系统的分析与设计。
2.案例引导教学法
系统分析与设计是一门理论性和实践性都较强的课程,以致理论知识的理解与实际应用之间存在鸿沟,经常出现学生已经掌握理论原理,但不能在合适的场景中灵活运用相关知识解决分析与设计问题的状况。为了解决这个问题,该课程采用案例引导教学法,即在理论教学过程中不是直接讲授理论知识,而是先给出实际的系统分析与设计案例,在案例中植入理论知识能够解决的问题,在讲解案例时提出问题,针对问题引出相关知识,然后再对理论知识进行讲解。案例引导教学法能够让学生一开始就知道理论知识适用于何种场景以及解决何种问题,从而提高理论知识的运用能力。
案例引导教学法由“案例引导-理论讲解-案例剖析-项目实践-项目评讲”五步构成。案例引导教学法的第一步即在进行理论讲解之前先讲解案例,在案例中植入理论知识能够解决的问题,讲解案例时明确提出这些问题,然后针对这些问题引出相关的理论知识;第二步就是正式讲解理论,系统讲解理论中的概念、方法、原理、规则、约束,让学生在理解理论知识的基础上进行第三步——案例剖析;案例剖析需要学生结合理论深入地剖析案例,讲解如何利用理论知识解决案例中的问题,并且把理论知识能解决的问题进行泛化,即讲解理论知识能够解决哪些问题、如何解决这些问题以及解决方法的优缺点等。在第三步的基础上,学生需要参与项目实践,真正运用理论知识解决系统分析与设计方面的实际问题,最后由教师对学生的实践过程和结果进行评价(关于实践教学的方法参考下一节的“五步实践教学法”)。
案例引导教学法实际上坚持的是“理论指导实践、实践验证理论”的教学原则以及“思维培养、知识传授、技术训练、工具指导、能力提升”相结合的教学理念。采用案例引导教学法给学生授课的教师必须是双师型教师,有软件项目开发背景,亲自参与过软件项目开发(该课程要求主讲教师至少全程主持或参与过3个以上的软件开发项目)。在教学过程中,要求教师在讲授时将理论知识融入真实的案例,避免空洞的理论知识讲解,不仅要讲透理论知识的原理,还要讲解理论知识的使用场景、使用方法以及实践中可能存在的问题和解决思路。
3.五步实践教学法
系统分析与设计实践教学的特点是验证性实验较少,主要是分析性、设计性、综合性的实验;目标是训练学生使用软件工程理论、方法、技术、工具,分析和解决软件系统开发过程中出现问题的能力,因此实验过程相比实验结果更重要。该课程的实践教学分为两部分:与课程同步的分阶段项目实验和独立的课程设计。与课程同步的分阶段项目实验主要分为4类实验:软件系统业务背景与需求理解、系统业务建模、系统需求分析与需求表示、系统设计与设计规约。这4类实验基于同一个领域背景,针对开发同一个软件系统过程中的各个子问题进行能力训练。该课程设计的目的是系统地训练学生综合运用课程各个知识点进行软件系统需求分析和系统设计,进一步提高运用知识解决问题的能力。
学生在完成实验内容过程中经常出现的问题是无从下手,不知道系统分析应该从何开始,过程如何展开,结果如何表示,设计方案如何形成、选择和评价。我们针对此问题提出五步实践教学法。在五步实践教学法中,每一类实验的教学过程包括教师讲解实验要求、教师示范、学生实验、教师考核和评讲。系统分析与设计课程特别强调教师在实验过程中的示范和指导作用:在实验开始之前,教师先以实验的部分内容作为示例,向学生示范实验的具体过程和主要方法;在实验过程中,教师对有问题的学生进行单独指导,如果存在共性问题,就进行集中讲解。
实践教学按照项目组的方式进行管理,将4~6名学生分为一组并设立小组长,学生以某种实际角色参与到项目中,小组长(作为项目经理)直接向教师汇报项目进展(包括组员的完成情况),教师通过随机抽取组员询问的方式,考查小组长汇报情况的真实性。教师在项目进行过程中,根据学生的完成情况,对一些共性问题进行讲解。实践成果的考核主要分为3个部分:文档质量、答辩情况、过程参与积极性(成绩主要由小组长分级评价给出)。
4.结语
采用案例引导教学法和五步实践教学法后,教学质量明显提高,课堂教学气氛更加活跃,学生能非常积极地参与到案例分析过程中,完成作业的积极性以及作业质量有所提高。由于有了教师的具体指导和参考案例,学生更愿意完成并知道如何完成系统分析与设计作业,该专业毕业设计论文质量的总体提高可以反映出学生的系统分析与设计能力明显提高。endprint