余 颖 刘 杰 李晓昀
摘要:一套完善的课程体系对于教学的实施十分重要。“软件体系结构与设计模式”是软件工程的专业主干课程之一,本文在总结SEEK及专业规范对课程的具体要求的基础上,结合实际教学情况,对该课程的教学模式进行了探讨并提出了一些建议。
关键词:SEEK;软件体系结构;设计模式;教学模式
中图分类号:G642 文献标识码:B
1引言
自20世纪40年代第一台数字电子计算机问世,人们对于计算机的应用就以惊人的速度发展起来。以信息技术为核心的高新技术发展极大改变了我们的生产、生活以及经济、政治关系。计算机软件在我们日常生活的各个方面正扮演着一个核心角色,它涉及政府、银行和金融、教育、交通、娱乐、医疗、农业和法律等各个领域。软件产业已成为信息产业的核心和灵魂。国内外高等学校、科研院所纷纷建立起软件工程学科,采取系统、规范的方式培养市场所需的软件工程人才。
软件工程作为一个专业方向,必须通过一套完善的课程体系来实施教学,ACM和IEEE-CS联合工作组织制定的软件工程知识体系SWEBOK(Software Engineering Body of Knowledge)、计算教程软件工程卷CCSE(Computing Curriculum Software Engineering)及其中的软件工程知识体系SEEK(Software Engineering Education Knowledge)都明确给出了相应的课程体系构成。我国于2006年推出了《计算机科学与技术本科专业规范(软件工程方向)》,该专业规范结合我国高等教育的实际情况,详细描述了软件工程教育知识体系、核心课程等内容。“软件体系结构与设计模式”是软件工程方向专业重要的专业核心课程之一,目前还处于专业课程体系建设的起步阶段,要建设高水平、高质量的“软件体系结构与设计模式”课程,还需要进一步深入的研究和探讨。本文在总结SEEK及专业规范对课程的具体要求的基础上,结合南华大学的实际教学情况,对该课程的教学模式提出了一些建议。
2该课程在SEEK和专业规范中的构成
2.1该课程在SEEK中所涉及的知识领域和知识单元
软件工程知识体系SEEK分为三层结构,最高层是教育知识领域(area),它代表了软件工程的子学科,通常被认为是本科生应该掌握的软件工程知识体的重要部分。知识领域是对软件工程知识进行组织、分类和描述的高层结构元素,每个领域使用一个缩写进行标识。每个知识领域又分成许多知识单元(unit),表示一个领域中的独立主题模块。在知识领域标识的后面,添加两到三个字母的后缀标识知识单元。每个知识单元被进一步分成知识点(topic)集合,知识点是层次结构的最底层。表1是SEEK总结的知识领域,列出了知识单元的集合,并推荐了每个知识领域和知识单元所需的最少学时数。表2则列出了SEEK中软件设计知识领域中包含的软件体系结构和设计模式的内容(其他四个知识单元的内容在此省略)。
由表1和表2的内容可知“软件体系结构与设计模式”涉及到SEEK十个知识领域中的软件设计(DES)这一知识域,其中软件体系结构对应于体系结构设计(DES.ar)知识单元,而设计模式则属于详细设计(DES.dd)知识单元的知识点之一。
SEEK中知识域的划分是以本科教学和课程体系建设为目标进行的,尽管SEEK不代表教程,但是SEEK为构成软件工程教程的教学单元提供了设计、实现和交付的基础,在课程建设中需要研究各个知识域之间的关系,并进行合理的权衡和安排。
2.2专业规范中该课程的构成和要求
在教育部制定的《高等学校计算机科学与技术本科专业规范(软件工程方向)》中,软件设计(DES)知识领域所包含的内容有:
软件设计策略(str):其主要内容为面向功能的设计、面向对象的设计、以数据结构为中心的设计、面向主题的设计。
体系结构设计(ar):其主要内容为体系结构风格、多属性间的体系结构折衷、软件体系结构中的硬件问题、特定领域的体系结构和产品线、体系结构的表示。
详细设计(dd):其主要内容为设计方法、设计模式、构件设计、构件和系统接口设计、设计表示。
设计支持工具与评价(ste):其主要内容为设计支持工具、设计属性的度量、设计标准、形式化设计分析。
专业规范中软件设计知识领域的知识构成跟SEEK中大体一致。规范中还对软件设计和体系结构的课程内容、教学目标等做了具体的描述。对软件设计和体系结构知识的学习,旨在使学生能够在各种软件设计中应用多种设计模式、框架和体系结构,使用不同的中间件技术设计并实现软件,能使用合理的变更控制方法更改设计以及使用逆向工程技术重新获得软件设计。课程内容涵盖设计模式、框架和体系结构、当前中间件体系结构综述、用中间件技术设计分布式系统、基于构件的设计、度量理论和设计中的合理性准则、设计质量、设计的评估和演化、软件演化、再工程和逆向工程的基础知识。专业规范结合了我国高等教育的实际情况,对课程的规划和建设具有极大的指导意义。
3该课程目前的教学模式及分析
软件工程专业是南华大学2005年新办的专业,并将迎来第一届毕业生。“软件体系结构与设计模式”已完成了第一轮教学。目前的教学计划将该课程列为专业必修课程,安排在学生第6个学期学习,学分为3分,以考试的形式进行考核,总学时为54课时,其中理论课时占30课时,实验课时占24课时。通过本课程的学习,要求学生对软件体系结构和软件设计模式有一定的认识和理解,掌握软件体系结构的基本概念和主要方法,熟悉在面向对象软件体系结构中常用的23种设计模式,并能够将这些设计模式应用到软件系统设计中。要求先修课程为“面向对象程序设计”、“离散数学”、“软件工程”。
从SEEK和专业规范中可以看到,软件体系结构和设计模式虽然同属于软件设计这一知识域,但是分属不同的知识单元,软件体系结构描述的是软件工程实施中概要设计的部分,是一个抽象层次上的设计,而设计模式则输入详细设计阶段的内容,具体指导了编码。因此,将软件体系结构和设计模式放在一门课程中进行讲授不太合理,事实上在目前的教材中也很少要将二者放在一起的,在第一轮的教学中我们选用的教材是设计模式经典之作——机械工业出版社的《设计模式—可复用面向对象软件的基础》,并以机械工业出版社的《面向模式的软件体系结构 卷1:模式系统》作为辅助教材,因前者仅对设计模式部分进行了介绍,选择后者补充体系结构知识的内容。
实践环节主要针对案例进行分析设计,让学生熟悉使用统一建模工具进行软件设计,我们选用了IBM的Rational Software Development Platform 和 Rational Rose Enterprise Edition,就实验教学的情况看,部分学生对统一建模工具的使用稍显生疏,需要在此之前加强学生对建模工具的运用。
4几点建议
(1) 课程安排:将目前本门课程的内容划分为两门课程,我们已在新的教学计划中对此作出了调整。
(2) 教学内容:设计模式的教学仅仅局限于23种设计模式是不够的,还应该将构件设计、构件和系统的接口设计等知识添加进来,以丰富详细设计阶段涉及的内容。
(3) 教师队伍:开设这门课的教师,最好由参与过面向对象的软件开发过程的人员承担,这样更有利于结合实际案例和经验进行授课。
(4) 前导课:软件工程、离散数学、面向对象的程序设计这几门课程必须讲授到位才会给本门课程的教学打下良好的基础,比如设计模式中,对于模式应用的举例主要源自.NET和JAVA,在面向对象的程序设计基础上,还需要学生对这些语言有一定的了解。
(5) 考核方式:本课程主要介绍各种体系结构风格与适用情况、23种常用设计模式及其应用、构件设计等,目的是要求学生能够在软件开发的实际过程中进行合理的设计应用,对于各种体系结构、设计模式没有必要强行记忆,因此,如果单独出卷进行闭卷考试意义不大,重在学生对知识点的理解,可要求学生根据对某些知识的学习体会、模式的使用情况等写总结报告,最后以所写报告、实验情况以及平时的表现综合给予评定。
5结束语
“软件体系结构和设计模式”是软件工程专业的专业主干课程之一。作为高校的新办专业,该课程的总体安排、教材选定、理论与实验课的内容以及安排、甚至考核方式和成绩评定都需要进一步的探索和研究。随着课程体系的不断发展和完善,必将使这门课程更加健全。