软件体系结构课程教学探讨

时间:2022-06-25 02:47:13

软件体系结构课程教学探讨

摘要:本文在分析软件体系结构课程特点和面临问题的基础上,从提高学生学习兴趣、课程衔接、组建以设计师为主的开发团队、构建实践教学平台和师资队伍建设等五个方面分析了课程教学中所运用的方法和手段。

关键词:软件体系结构;案例教学;实践教学平台

中图分类号:G642 文献标识码:B

建大厦必须进行设计,而建平房则不需要设计。传统观点认为需求分析是项目开发成败的一个关键,项目的失败或夭折主要是由于需求分析不充分造成的,但对如何做好需求分析却苦无良策。在软件开发的早期,软件代码量不大,对设计重要性的认识也不充分,程序员可以设计、编码一肩挑,但随着软件规模的扩大,人们在大型软件的开发面前显得力不从心,因而产生了软件体系结构理论。现代观念认为通过需求与设计之间的迭代,并根据设计建立系统原型,能够较为充分地理解需求并得到满足需求的设计。

软件体系结构的设计在中大型软件项目中更易于显示它的意义,这也是软件体系结构课程产生的原因。“软件体系结构”作为高等学校软件工程专业的一门核心课程,是根据人们的软件设计经验总结出来的理论与实践相结合的课程。“上梁不正下梁歪”,体系结构的设计是现代软件开发中最为重要的一环,它设计得是否合理直接关系到软件的成败。随着软件规模变得越大越复杂,软件开发对软件架构师提出了更高的要求。

1课程特点与面临的问题

1.1软件体系结构课程的特点

(1) 软件体系结构的设计原则、技术、方法较为抽象

软件体系结构的设计原则、技术、方法可以应用在不同的软件项目中,其目的是为了在给定的时间、经费等条件限制下设计出高质量的软件,它们位于所有具体项目之上,针对全体软件项目,因而是抽象的。

(2) 软件设计的效果体现在软件开发的后续阶段中

软件生命周期包括可行性分析、需求分析、设计、编码、测试、运行维护等多个阶段,设计对软件成败的影响往往在这个阶段反映不出来。设计阶段做出的一个决定,可能要到编码、测试甚至是后续的维护阶段才能显现它的效果。

(3) 软件体系结构的设计往往是折衷与权衡的产物

软件中的一些质量要素经常是相互冲突的,即软件的质量要素之间既有正相关,也有负相关,因此在实际的软

件系统设计过程中,必须根据具体情况对各种要素进行折衷与权衡,从而得到总体上满足用户要求的软件。怎么折衷和权衡,必须结合具体项目,根据项目的实际情况去把握。

1.2教学中面临的问题

(1) 软件体系结构的抽象理论容易使学生感到枯燥乏味

由于授课对象是大三学生,项目开发经验有限,学生很难在头脑中将软件体系结构的抽象理论和实际联系起来,因此较难对这门课产生兴趣。在接受抽象的理论时,容易产生枯燥乏味的感觉。

(2) 学生缺乏完整项目的体验

学生参与的课程设计实践一般仅限于小型项目,很少有机会参与软件开发和运行的全过程,难以体会到软件体系结构设计中关于正反经验的总结。例如,可维护性是软件的一个重要质量指标,但学生很少有机会去参与真正的软件维护,所开发的系统大多只是给任课教师大概地检查一下,一般不会交付使用,没有经受用户的真正检验,设计里的很多错误被隐藏起来了。但学生看不到错误,就不能对这些错误进行维护,也就不能体会到设计阶段工作对可维护性造成的影响。而且对于经验欠缺的多数学生来说,软件设计中的折衷与权衡难以想象,不容易理解和把握,包括各种质量属性之间以及与很多非技术因素的折衷与权衡。

如何搞好这门课的教学,是摆在教师面前的一道紧迫课题,对教学方法、手段和个人经验都提出了很高的要求。我们提出通过本课程学习要达到以下三个目标:

(1) 帮助学生了解软件架构的基本概念,初步掌握中大型软件系统构架的分析与设计方法。

(2) 使学生了解软件系统的成败不仅取决于用户的功能需求是否被满足,还和各种外部约束条件有关,如设计师的素质与经验、开发组织的目标以及政策法规限制等,从而提高软件设计的基本素养。

(3) 引导学生认识系统的性能、可用性、安全性等质量属性都是受软件构架制约的,或者说这些属性的实现影响着设计师的设计选择。

2强化案例教学,建设符合学生接受能力的案例

本课程较为抽象,要求学生有一定的软件设计经验,为了弥补学生在设计经验上的不足,我们在本课程中采用以案例教学为主的方法和手段,尽量将理论讲授和实际案例结合起来。案例选取有三方面的要求:一是要选取学生能听得懂、能理解的案例,案例本身不能过于复杂,超出学生的可接受范围;二是案例不能太简单,应稍高于学生的现有经验,这样才能提高学生的学习兴趣并帮助学生提高;三是案例要和每阶段的教学内容相匹配。经过几年的教学积累,我们以实际系统为基础,建立了多个符合学生理解和接受能力的案例,如软件学院的研究生选课系统、软件学院的图书管理系统、学生宿舍管理系统、订票系统、软件学院校友管理系统、超市进销存系统等。这些系统都是真实的,也是学生经常接触的,有很强的参照性,学生容易接受。我们还把这些系统作为课程实践的选题,提供原有设计方案和源代码,让学生使用并提出意见,找出原先设计的不足并改进,大大提高了学生实践的感知能力。

在学时分配方面也做到向案例教学倾斜,本课程总共48学时,除了8个学时的专门案例分析和8个学时的上机实践,在课堂理论教学时还穿插大量案例,案例教学占课堂授课比例的40%左右。我们还采用启发式教学手段,在课堂上留有一定时间专门就案例展开讨论,鼓励学生通过争论来比较和掌握软件构架设计方。例如,学生都实际使用过选课系统,选取该系统作为案例,学生就很乐意参与讨论并给出建议。这些手段的采用取得良好的教学效果,加深了学生对抽象的软件架构设计思想的理解。

3教学内容与教学手段

(1) 激发学习兴趣和热情

我们从课堂气氛、内容选择、语言表达三个方面入手。在营造课堂气氛方面,讲解时尽量营造探究气氛,鼓励学生参与讨论,避免学生被动地听,增强教师与学生的交流互动。在内容选择方面,选一些容易引起学生兴趣的素材。例如,在讲到架构风格时,我拿了一个自己编写的对战游戏程序给学生看,由于这种游戏学生普遍都感兴趣,因此在讲解架构风格时,学生注意力都很集中,收到了较好的教学效果。语言表达方面,在讲课时多用一些形象、有趣的事例或类比来说明或代替那些抽象、枯燥的理论陈述。例如,在谈到满足不同质量属性需要权衡时,列举了斑马为什么有黑白条纹的例子。

(2) 注意与其他课程的衔接

软件体系结构的教学内容与软件工程、软件项目管理以及软件文档写作等课程紧密相关、甚至有部分重叠,我们针对不同课程的特点进行了妥善安排,在教学内容上注意相关课程内容的相互渗透。大三上学期首先讲授软件工程,使学生对软件工程有一个初步认识,紧接着是软件文档写作的训练。大三下学期软件体系结构和软件项目管理同步讲授,要求学生运用软件体系结构的理论、技术和方法进行软件设计和评审,同时运用项目管理的知识组织项目开发,最终验证软件设计的合理性。设计和实现的题目鼓励沿用软件工程课程上所用的项目、人员组成也鼓励保持一致,使学生对某个项目能保持一个学年左右的长期接触。

(3) 建立以设计师为主的开发团队

以小组(四人为一组)为单位开展课程实验,每个人扮演不同角色。首先他们是一个设计师团队,但其中要有一人负责,这也是软件设计的一条重要原则;其次,还有项目经理、需求分析师、程序员和测试员等角色需要担当,也就是说每个人要承担多个角色。实验综合运用软件工程、软件体系结构设计、软件文档写作、软件项目管理以及其它课程的知识,来体会如何围绕软件体系结构进行开发,体会软件体系结构设计的原则和方法。

(4) 建立实践教学平台

软件体系结构的教学应使学生通过对这门课的学习,加上对其他专业知识的综合运用,能够在实际工作中应付真正的项目设计,因此有必要让学生参与一个长期(不少于一学年)的软件项目。为此我们设计多个规模较大的、完整的软件项目作为实践教学平台,这种项目包括分析、设计、实现、软件维护、软件重用、对现有软件的扩展,以及团队合作、项目管理等等。让学生长期接触某个项目,使他们可以在这个平台上观察和动手实践自己的软件设计方案,或者对现有方案进行改进,这样既有机会获得正面成功经验,也有机会得到反面失败的教训。

实验与教学进度保持匹配,使学生在实验中主动运用所学设计理论,并和传统设计方法进行对比,帮助学生迅速地把所学知识转换成实际的软件设计能力。设计过程要求采用Raional等工具进行分析和设计。

课程结束时,安排专门的时间,由每个团队向全班同学演示自己的实验成果,并由学生和教师共同对实验结果进行评价和给分,极大地调动了学生的积极性,评分过程中的议论则帮助学生进一步加深了对软件架构设计方法的理解。

团队提交的实践结果:需求说明书、体系结构设计说明书、体系结构评审报告、个人总结报告、演示Demo,要求说明每个人的角色和工作量。

评分标准:项目文档描述60%;个人总结报告20%;Demo20%。

上述评分标准以团队为基础,改变了传统的针对个人实践结果的考评模式,避免了相互抄袭。通过以团队评分为主,个人表现为辅的评价方式,达到培养学生学会与他人合作,培养团队精神的目的;通过以软件文档评分为主,以实践结果为辅的评分体系,达到学生对软件设计过程和方法的掌握。

其次,让学生参与教师的研究课题,加强实践基地建设,构建课程实训环境,鼓励学生到社会上的软件公司去实习、兼职。学院已与国内外多家软件领域的著名公司和研发基地建立了合作关系,建立了全方位、多层次的课程实践教学环境。

(5) 构建高素质的师资队伍

根据国家示范性软件学院工程型人才的培养目标,考虑软件体系结构设计课程实践性很强的突出特点,构建了三三制的师资队伍结构,即专职教师、IT公司教师和境外教师。完善了校内专任教师到软件企业一线参与实际软件项目研发和交流、软件企业的工程技术和项目管理人员到学校兼职授课的制度和机制,形成了一支了解行业需求、教学经验丰富、专兼结合、国内国外、校企联合的高素质的教师队伍。

4教学效果

我院针对软件体系结构课程教学中存在的不足,从教学方法、手段等方面提出了改进方案,融理论、案例与实践为一体,系统地阐述了软件体系结构的设计过程,体系结构设计师的主要工作和职责,辅助以实际案例向学生传授软件架构的理论、方法和技巧,并以小组为单位完成课程实验。通过本课程学习,学生可以在较短时间内掌握软件体系结构的基本知识和实践能力。

参考文献

[1] 裴小兵. 基于软件开发团队的软件工程教学实践研究[J]. 计算机教育,2008,(2):55-56.

[2] 林.巴斯著,车立红译. 软件构架实践(第2版)[M]. 北京:清华大学出版社,2004.

上一篇:计算机专业数据库实践课程探索 下一篇:从社会需求的角度探索软件工程教育