基于能力本位的“软件体系结构”实践教学环节

时间:2022-08-24 04:05:28

基于能力本位的“软件体系结构”实践教学环节

文章编号:1672-5913(2011)17-0039-04 中图分类号:G642 文献标识码:A

摘 要:针对“软件体系结构”教学存在的实践教学形式过于单一的问题,在分析能力本位课程开发方法的基础上,提出基于能力本位的“软件体系结构”实践教学环节开发方法。该方法结合本三院校实际,在“软件体系结构”实践教学中取得较好效果。

关键词:软件体系结构;能力本位;本三;实践教学

作者简介:朱鹏程,男,讲师,研究方向为软件架构;管致锦,男,教授,研究方向为可逆计算。

软件体系结构(又称软件架构)是植根于软件工程发展起来的一门新兴学科[1-2]。专门和广泛研究软件体系结构始于20世纪90代,目前,软件体系结构已经成为软件工程研究和实践的主要领域,成为众多软件企业关注的核心技术之一。现代社会对大规模复杂软件有极高的需求,但目前国内的软件开发综合能力并不能很好地满足这个需求。一方面是由于软件架构方面的高端人才严重缺失;另一方面是绝大多数程序员缺少架构、设计模式及开发规范等相关知识,编写的代码随意性很强。

作为人才培养的基地,高校应该责无旁贷地承担培养具备架构相关知识软件人才的任务,“软件体系结构”便是以此为目的被各个高校所引入的。清华大学是国内是最先开设该课程的学校,在该课程上积累的成功教学经验以及编写的诸多经典教材为其他高校开设该课程提供了基础和借鉴。目前,越来越多本三层次院校的软件专业也开始开设该课程,因此,本三层次学生如何学好本课程是我们要思考的问题。

1 “软件体系结构”教学面临的问题

通过对某本三学院计算机及软件专业学生的问卷调查,我们发现该课程教学效果不佳,主要原因如下。

原因一,课程内容抽象,软件体系结构是从较高层次把握和理解复杂软件的整体结构,考虑元素和元素之间的关系,整门课程中充斥着各种原理、概念和理念,理论性和抽象性很强,而本三层次学生由于数学基础略显薄弱,抽象思维相对较差,所以,学习该课程有困难。

原因二,由于大多数学生在学习该课程之前无软件开发经验,所以不能充分认识该课程的重要性,认为该课程远远没有程序设计类和工具类的课程有价值。

原因三,实践教学形式单一,实践教学环节不够完整。实践是本三层次学生较喜欢的一种学习方式,但该课程往往只单设几节课内实验课,而对于复杂软件开发经验为零的学生而言,几节实验课肯定不能加深其对软件体系结构的理解。

清华大学覃征教授对前两个原因作了精辟的分析,并提出“动机-专题-案例”的教学主导思想[3],以此为借鉴并结合院校专业实际情况,我们应该能很好地解决这两个问题。但是,该课程实践环节应该如何设置,尤其是针对本三层次学生如何设置,目前还没有太多可供借鉴的成功案例。

2 以能力为本位,设计课程实践教学环节

能力本位教育[4-7]产生于二次大战后,以美国、加拿大为代表,其核心是从职业岗位的需要出发,确定能力目标。学校聘请行业中一批具有代表性的专家组成专业委员会,按照岗位群的需要,层层分解,确定从事行业所应具备的能力,明确培养目标。然后,再由学校组织相关教学人员,以这些能力为目标,设置课程、组织教学内容,最后考核是否达到这些能力要求。能力本位课程开发流程如图1所示。

图1 能力本位课程开发流程

2.1 课程面向岗位

能力本位课程设计的起点是职业岗位,所以,我们首先必须弄清楚本课程面向哪些岗位。部分人认为“软件体系结构”,顾名思义,面向的肯定就是软件架构师岗位了,这种认识较为片面,因为就本三层次而言,极少有学生一毕业就能走上架构师这样的岗位,绝大多数学生直到其职业生涯晚期依然不能走上这样的岗位,按这样的观点,这门课程在本三就没有开设的必要性了。本三层次的“软件体系结构”课程目的应该是培养具备软件架构知识的软件从业人员,其中包含架构师,但以程序员为主。基于这个起点,我们才有可能设计出本三层次学生能胜任且较喜欢的实践环节。

2.2 岗位能力剖析

人们经常会在杂志或论坛上看到架构师抱怨:设计出的好架构,却得不到彻底的贯彻。除了成本、领导决策等因素以外,软件实现人员的技术水准较低,缺少熟悉架构知识的程序员也是导致这种情况出现的根源之一。通过对本地软件公司的走访并结合网络调研[8],我们认为,熟悉架构师知识的软件从业人员应该具备以下能力。

1) 良好的沟通能力,能清晰地表达自己心中所想,并能正确理解别人的意图。软件是一个高度复杂的逻辑产品,是在需求基础上由设计人员、开发人员、

测试人员等相关人员分工合作而获得的脑力劳动成果。因此,沟通显得尤为重要,无论是和客户沟通,还是团队内部的沟通,必须能正确理解别人并让别人正确理解自己,否则任何一环的沟通不畅甚至是误解,都会给整个项目带来巨大的风险。

2) 较好的抽象思维能力和建模能力。即能从模糊的用户需求中分离出确定因素和不确定因素,然后选择合适的工具和风格构建总体架构模型以容纳确定因素并拥抱未来可能的变化因素,并能通过图形化的工具清晰描述该结构。

3) 较好的软件实现能力。即精通常用程序设计语言、数据库系统及开发工具,熟悉常用的设计原则和设计模式,能将架构描述的规范很好地付诸实践。

4) 较好的创新能力。软件开发中虽然有很多场景不断重复,但每次出现的细节都有所不同,在设计和开发时,不仅要借鉴已有的成功经验,还要懂得灵活变通,因地制宜。

2.3 教学目标和实践内容的确定

为了培养上述能力,我们结合课程理论教学大纲和学生特点,甄选实践内容如下:软件体系结构风格实践、UML建模实践、软件体系结构描述语言实践、设计原则及设计模式实践、完整软件项目的综合性实践。教学目标和实践内容的安排如表1所示。

表1 教学目标和实践内容安排

2.4 教学实施和管理

教学实施是教学设计付诸实践的过程,合理选择实践形式和实践场地,并对实践过程作实时监控和管理有助于教学效果的提升。实践形式及场地选择等情况如表2所示。

本课程的实践体系由课内实验、校内独立实践周和校外独立实践周组成。其中课内实验主要和课程理论教学相辅相成,让学生对课程涉及的概念、原理、工具等有较清晰地认识,并逐步培养相关能力;校内独立实践周是对整门课程所学知识的一个总结和回顾,通过这个环节培养学生的综合能力,并为校外实习打下基础;校外独立实践周,是在企业氛围下进行的课程实践,能让学生真正做到学以致用。本课程的每个实践环节都由专人进行监督和管理,尤其是在校外实践时,除了校内指导教师以外,还会给学生安排相关的企业导师,企业导师就企业环境、开发团队组织、相关技术对学生进行指导,并对学生完成相关任务的过程作监督和评价。

表2 实践形式及场地选择等情况

另外,在教学实施过程中,我们还应该灵活选择实验案例,使案例具备典型性、时效性,贴近学生,并有一定的趣味性。比如在做设计模式实验时,如果只是让学生按照相关模式的概念去设计类图,并编写典型代码,学生往往不感兴趣,对此,我们可以通过一些有趣味性的引子,逐步将学生引入到模式的世界中去。比如在讲工厂方法模式时,可以将中国古代神话“女娲造人”的故事作为引子,女娲通过八卦炉构建出黄种人、白种人、黑种人,其中各个人种是具体产品,而八卦炉是生产产品的工厂,然后让学生为“女娲造人”这样的场景构建类图并给出实现代码,在这样的情境下学生的参与积极性会比较高,对设计模式的理解也会更深入,甚至有的学生用“终身难忘”这样的词汇来形容这种案例。

2.5 教学评价

对教学效果的评价分为两类:对学生学习效果的考核和教师教学活动的评价。

首先,我们谈一谈对学生的考核,课程考核是教学过程中一个十分重要的环节,是检验教学效果、保证教学质量的重要手段,其目的在于帮助和督促学生系统地复习和巩固所学知识和技能,检验其理解程度和灵活运用的能力,调动学生学习的主动性和积极性,培养学生的创新思维。但以往的考核方式过于单一,只是以实验报告为依据给学生打分,这种方式过于注重最后的结果,而忽略学生在实践过程中的参与程度,因此,部分学生在整个实践过程中碌碌无为,只是在最后草草完成一份实验报告。为了改善这种状况,我们除了将实验报告作为考核依据外,还引入成员互评、教师评价、企业导师意见等方式(如表2所示)。成员互评,是由学生根据组内其他成员在共同完成实践任务时所表现出的作用而给出的评价;教师评价是教师根据学生在实践过程中的出勤率、解决问题的能力等方面给出的评价;企业导师意见是企业导师根据学生融入企业开发的速度、给企业创造的价值等方面给出的评价。通过这几种考核方式有机结合,得到学生实践的总评价。比如企业实践的最终评价构成如下:成员互评20%,实验报告及作品40%,教师评价10%,企业导师意见30%。

其次,对教师教学活动评价的主体为学生。经过两年的“软件体系结构”实践教学改革,对07级和08级学生的问卷调查显示学生在学习兴趣、对课程的理解程度等方面都有了较大进步,课程的平均成绩也有较大提升。调查结果如表3所示。

表3 学生调查结果统计表

3 结语

能力本位课程以职业能力为主线,按照能力单元或能力要素来开发课程,课程目标直指相应岗位,从这个角度看,它有利于学生就业。但是,它打破学科本位的知识体系,不再追求学科体系的逻辑严密性,以相关岗位上的典型工作过程为载体按照能力单元来开发课程,而这点对本三院校来说是有待商榷。本三院校培养的应用性人才和专科院校培养的应用性人才应该有区别,本三院校培养的人才应该更有弹性而不只是局限在少数几个岗位上,正因为这个原因,本门课程将面向岗位定位具备架构知

识的软件从业人员,而不仅仅是某一个具体岗位。另外,将若干典型工作过程(即完整工作任务)贯穿整个课程,看起来好像是学生更贴近真实工作任务,其实,它加剧了学生在开始学习时对各个知识单元的掌握难度,所以在设计该实践教学环节时,前面环节应依然采用小案例让学生逐步掌握各个知识单元,最后才引入完整的工作任务,让学生掌握如何综合运用知识。这样循序渐进的方式更符合认知规律,因此,本文提出的能力本位实践教学环节是在参照传统能力本位课程开发方法上的修改版本,更适合于本三院校。

参考文献:

[1] 张友生,李雄. 软件体系结构原理、方法与实践[M]. 北京:清华大学出版社,2009:1-29.

[2] 董威,齐志昌,陈振邦. 软件设计与体系结构[M]. 北京:高等教育出版社,2009:1-22.

[3] 覃征,邢剑宽. 软件体系结构课程教学:抽象与实践的协调与统一[J]. 中国大学教学,2009(7):14-15.

[4] 樊继轩. 基于能力本位的人才培养模式的构建:对民办高校本科学历教育+职业技能培养人才培养模式的思考[J]. 北京城市学院学报,2010(1):15-20.

[5] 梁熠葆,王晓江,罗怀晓. 基于能力本位实践教学体系的探索与实践[J]. 教育与职业,2010(6):157-158.

[6] 张锡侯. 民办本科高校应实施能力本位的素质教育[J]. 黄河科技大学学报,2009(1):6-7.

[7] 吕玉铬. 应用型本科的能力本位教育与职业化取向探析[J]. 教育与职业,2008(7):178.

[8] 周爱民. 做人、做事,做架构师――架构师能力模型解析[J]. 程序员,2009(4):20-21.

Competency-based Software Architecture Practice Teaching Development

ZHU Pengcheng1, GUAN Zhijin2

(1.College of Xinglin, Nantong University, Nantong 226000, China; 2. Department of Computer Science, Nantong University,

Nantong 226000, China )

Abstract: For the form of “software architecture” practice teaching is too simple, based on analysis of competency-based curriculum development approach, proposes competency-based “software architecture” practice teaching development approach, in considering situation of students of the third batch of universities, achieve good teaching effect.

Key words: software architecture; Competency-Based; the third batch of universities; practice teaching

上一篇:CDIO模式下软件工程专业课程的教学评价方式 下一篇:“汇编语言”教学改革与实践