软件体系架构课程本科教学探讨

| 浏览次数:


打开文本图片集

摘要:现代社会的每一方面都需要依赖软件,构造高质量软件需要设计良好的架构和专业的实现过程。因此,软件体系架构被选作软件工程方面的主修课程。文章结合软件体系架构本身及学生知识结构特点,介绍如何选择本科阶段软件体系架构课程教学内容、以及教授方面的经验。文章设计了教学内容的体系架构,涵盖课堂教学及实验环节,并进行详细阐述。

关键词:软件体系架构;本科课程;软件工程

软件体系架构 (Software Architecture,以下简称SA)学科涉及内容纷繁庞杂,至今一直处于发展演进阶段,选取什么样的内容进行本科阶段教学工作,是一个值得深入研究的问题。

国内外相关机构针对此问题提出了指导性意见,如在IEEE-CS和ACM联合工作组制定的SEEK (Software Engineering Education Knowledge)[1]中,软件工程本科生获得学位所需要掌握的相关知识包括:体系架构的视图与表示、权衡问题、硬件问题、需求的可追踪性、特定领域的SA和软件产品线、风格和设计模式。我国教育部门于2006年制定高校“计算机科学与技术本科专业规范”[2],以IEEE-CS和ACM制定的相关标准为蓝本,对2003年以来的相关工作进行了总结和改进。这些指导性文件为SA教学提供了参考框架,但并没有规范具体教学内容。下面结合我校计算机学院的教学实践,对这个问题进行讨论。

1学生知识结构及课程特点分析

1.1学生知识结构分析

由于大四阶段学生面临实习、找工作或考研等任务,软件体系架构课程通常于大学三年级开设。此前学生学过的专业课程包括高级语言程序设计(C语言)、汇编语言、数据结构、计算机组成原理、单片机及其应用、操作系统、软件工程、计算机网络、可视化程序设计、面向对象程序设计(C++、Java),同期开始的课程包括数据库、编译原理、应用服务器开发、网络工程、构件技术、UML建模等。尽管已有不少专业基础知识,但学生普遍缺乏大型软件项目的实战经验,许多学生甚至是第一次接触SA概念。因此,从自身经历出发,学生难以自发体会到SA对软件系统的重要性。这就造成教师要把许多SA概念“推”给学生,尽管不能说是拔苗助长,显然不及学生主动去“拉”知识的效果好。

1.2SA课程的特点

SA不是一门成熟学科,主要表现在:1) 缺乏明确的定义。2) 问题的解决方案不唯一,寻找解决方案没有固定统一的途径可遵循。3) 如何维持SA与具体软件质量属性之间的关系,没有明确答案。良好的架构是成功软件开发的基础和必要条件,但不是充分条件,还有许多因素如编码技术等,都会影响软件质量。4) SA涉及不仅仅计算机学科内容,还包括商业、政治、心理、艺术、社会经验等诸多方面因素。5) 缺少成熟、经典的教材及教学案例。国内很多高校也是在最近几年内,才陆续开设了这门课程,很多地方还待改善,例如就课程名称来说,用“软件体系架构” 就比“软件体系结构”更准确[3],因为英文“结构”一词应该用structure,而architecture则表达更宏观的含义,更贴近SA实质内容。

1.3SA教学策略和教学内容的体系架构

基于以上特点,我们在学期一开始就给学生布置了软件开发任务,让他们变被动为主动,有目的地接受课堂内容,主动去搜集相关知识。教学中对一些理论性、抽象性较高的内容做了适当取舍和调整,增强实例演示。针对于SA中某些不确定内容,教师提出几种可能解决途径,让学生思考讨论其优缺点。学生在开发软件时,将亲身体会SA对软件开发的决定性影响。

2SA教学内容讨论

2.1软件开发流程介绍

软件开发流程包括:调研、立项、需求分析、总体设计、详细设计、编码、测试、产品化、结项、维护。同时教学中还概要介绍了开发工具、开发语言和开发方法学(瀑布、RUP、极限编程),展示一个软件开发实例。上述内容共计4学时。

尽管前期软件工程课程中会介绍这方面的部分内容,仍有必要向学生指出SA设计在软件开发中所处位置,为后面介绍SA对软件开发各阶段的影响奠定基础,并通过实例演示,引起学生的兴趣。

2.2SA概论

主要是关于SA的宏观介绍,包括:编程语言的进化历史、SA发展历史、SA各种定义(含IEEE 1471-2000标准)及其存在问题、哪些因素会影响到SA及SA对其的反作用。共计4学时。

历史介绍使学生了解SA学科发展的来龙去脉;定义、影响因素的介绍使学生意识到SA设计会受商业、架构师技能、前期产品架构等多因素影响,具有相当大的复杂性和不确定性。这个阶段可以开始给学生布置软件开发任务,让他们自己先思考如何完成工作,逐渐从被动接受过渡到主动获取知识。

2.3常见SA风格及应用实例

SA风格包括分层风格、管道—过滤器风格、黑板风格、代理风格、视图—表示—控制器(MVC)风格、表示—抽象—控制(PAC)风格、微内核风格、反射风格、C/S 和B/S风格、P2P风格、面向对象风格、解释器风格等,另外对应每一种SA风格都有应用案例。约12学时。

这部分是SA多年发展成果的一个总结,也是课程的一个重点。讲解时,教师指出这些风格所适用的软件系统类型,给出每种风格的应用实例,并用UML表示该风格(其中一些可布置为课后作业)。同时提醒学生注意:1)这些风格属于宏观级别;2)风格之间不是严格独立的;3)实际系统可能包含多种风格;4)开发软件系统时,应当首先考虑这些成熟的风格,再根据具体情况加以修正和细化。

2.4SA描述及编档

内容包括基于UML的SA描述、SA编档和“4+1”SA视图。4~6学时。

这部分涉及体系结构描述语言(ADLs),但考察后发现,一方面,ADLs较枯燥,很难引起学生的兴趣;另一方面,SA本身有着众多不确定性,尤其是开发的初期阶段,此时精确描述的SA会被修改多次,事实反倒是一些粗线条、不精确、不一致的SA内容真正在引导软件开发前进;最后,当前ADLs自身存在很多不足,对实际软件开发几乎没有影响。因此,本部分重点集中在怎样用UML描述SA和SA文档编档上,对ADLs及用途仅做简短介绍。从实用角度看,UML已经发展了十多年,因方便与外界交流,被业界广泛接受,学有所用。但是,仅用图形符号来表述SA会带来一些不确定性,因此还要补充适当符号、术语和原理等的文字说明,并从涉众的不同视角出发,去关注SA。

2.5质量属性驱动的SA设计

内容包括:常见的质量属性(可用性、可修改性、性能、安全性、易用性、可测试性等)及实现方法;理解属性之间的权衡;列举质量属性应用案例;从质量属性分析入手,设计SA并进一步求精。约8学时。

这部分除过让学生了解实现质量属性的基本战术外,还要使其意识到寻找各种属性之间的平衡,是架构师的重要责任。如何设计SA方法众多,没有统一途径可循,介绍过多的设计方法,反而会让学生感觉难以适从,因此重点讲解基于质量属性的设计方法。

2.6SA评估

内容包括架构权衡分析方法ATAM及案例。4学时。

评估方法还有许多,如软件架构分析方法SAAM、成本收益分析方法CBAM等,各有所长。为集中注意力避免盲目学习,除ATAM外,我们对其余评估方法均只做概要介绍。

2.7SA设计及实现实例

讲授一个人工智能软件的SA设计、评估、实现和编档。约4学时。

本软件在开学第一堂课就已经向学生展示,在课程接近结尾时把其SA设计及实现过程讲解给学生,前后呼应。好的实例胜过千言万语,让学生观察体验如何运用所学知识解决具体问题。

2.8SA前沿讲座

邀请大公司软件开发人员作讲座,约4~6学时。讲座内容包括:面向服务的体系架构SOA及Web Service;多核并行计算→集群→网格计算→物联网→云计算;国外SA教学课程;国际知名专家关于SA的最新论文等。

这部分主要用于开阔学生视野。例如,学生看过微软、谷歌、IBM等的“云”架构后,体会到尽管应用领域日新月异,SA的一些基本原理和方法仍然有效。专家论文中的观点和方法对理解SA有很好的启发效果,使学生把握到学科前沿动态,了解自己所处位置及努力方向。公司开发人员的讲座是对课堂教学的有益补充,使学生了解实际软件开发中问题,有针对性地进行学习。

2.9SA课程自学内容

自学内容有设计模式、软件产品线、特定领域软件体系结构(J2EE,WWW等)、SA重构等。

设计模式属于软件开发过程中的详细设计部分,如果放在SA课程中会使内容过于庞大、流于形式,我们考虑将来开设单独的课程。自学内容这块我们要求学生查阅相关参考书,就其感兴趣领域撰写阅读报告,深度上要求知晓主旨大义,略过细节。

2.10SA教材选取

到目前为止,SA课程没有集大成的教材,国内外教材各有长处和不足。正因如此,我们决定不固定教材,要求学生遇到相关问题后,就同一问题查阅相应的中外参考资料[3-10]。

3实验环节

实验内容包括软件可修改性实验;动态人机交互界面实验;管道—过滤器模式软件的设计及实现;MVC风格软件的设计与实现;主要SA风格的(UML)描述;人工智能软件SA的设计(实现)、评估、编档。约20学时。

教师在对学生分组时候应注意人员搭配,根据情况及时调整,避免某些工作有的组进行不下去。学生分组后,按指定内容完成实验,通过实验使学生体会如何将理论转换为实际软件产品,掌握知识要点。根据学生特点,我们选取了难度和复杂度适中、包含人机交互的项目。每次实验后组织课堂讨论,交流经验体会。部分实验内容如图2~图4所示。

图2中显示一个可修改软件质量属性场景,主要让学生掌握如何利用软件工程基本知识,灵活适应需求变化。这些知识包括信息隐藏原则、最小权限原则、基于函数的过程设计、面向对象设计等,它们不仅是计算机专业学生应当掌握的基础知识,而且也贯穿SA设计实现、发展演化的全部过程。图3显示管道—过滤器SA风格有着众多实际应用,如编译器、示波器等数据流处理系统。基于当今多核处理器的普及,我们让学生设计实现一个多线程环境下的管道—过滤器风格软件。图4的MVC实验目的是让学生掌握人机交互软件的SA设计和实现。实验开始前教师将一些基础的算法程序交给学生,然后让他们按照MVC风格将这些程序组织起来,形成一个容易拓展的软件架构。其他实验还包括SA的设计、UML描述、评估、文档制作,等等,内容涵盖SA教学环节的各主要方面,有效配合课堂教学。

4结语

SA课程建设涉及内容繁多,今后我们还需在以下方面加强努力:1)教学、实验案例及教材建设;2)从

SA到软件实现,如何保证质量属性一致性;3)如何使SA教学适应工业软件产品开发的实战需求等。SA正向成熟期过渡,课程建设将紧紧围绕学科发展方向和社会需求而进行。

参考文献:

[1] Bourque P.,Robert F.,Lavoie J.M., et al. Guide to the Software Engineering Body of Knowledge (SWEBOK) and the Software Engineering Education Knowledge (SEEK) - A Preliminary Mapping Software Technology and Engineering Practice[C]. Proceedings of the 10th International Workshop on Software Technology and Engineering Practice, (STEP 2002),2002:8-23.

[2] 余颖,刘杰,李晓昀.“软件体系结构与设计模式”课程教学模式的探讨[J]. 计算机教育,2009(22):120-122.

[3] 张友生,李雄. 软件体系结构[M]. 2版. 清华大学出版社,2009:1-15.

[4] Mary Show and David Garlan. Software Architecture: Perspectives on an Emerging Discipline[M]. Engkwood Cliff: Prentice Hall,2006:1-30.

[5] Grady Booch,James Rumbaugh,Ivar Jacobson. The Unified Modeling Language User Guide [M]. 2nd ed. New Jersey: Addison Wesley,2005:53-75.

[6] Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software[M]. New Jersey:Addison Wesley,1995:10-26.

[7] L. Bass,P. Clements,R. Kazman. Software Architecture in Practice[M]. 2nd ed. New Jersey:Addison Wesley, 2003:10-33.

[8] 李代平. 软件体系结构教程[M]. 北京:清华大学出版社,2008:1-20.

[9] 覃征,刑剑宽,董金春,等. 软件体系结构[M]. 2版. 北京:清华大学出版社,2008:91-100.

[10] 杨芙清,梅宏,黄罡,等. 构件化软件设计与实现[M]. 北京:清华大学出版社,2008:135-150.

Discussion about the Undergraduate Course of Software Architecture

LU Gang, QIU Guo-yong

(School of Computer Science, Shannxi Normal University, Xi"an 710062, China)

Abstract: Every aspect of the modern society depends on software, and to build high quality software requires using well designed software architecture (SA) and disciplined process. Consequently, SA is chosen as a dedicated course in software engineering curricula. In this paper, with the characters of the SA itself and the students’ knowledge structure taken into consideration, we report our experiences on what contents are appropriate to be chosen and taught in an undergraduate SA course. The architecture for the contents (including both the lecture and experiment aspects) which have been taught in our SA course has been designed, and the detailed discussion followed.

Key words: software architecture; undergraduate course; software engineering

(编辑:彭远红)

推荐访问: 架构 本科教学 探讨 体系 课程

【软件体系架构课程本科教学探讨】相关推荐

工作总结最新推荐

NEW
  • XX委高度重视党校的建设和发展,出台《创建全省一流州市党校(行政学院)实施方案》及系列人才培养政策,为党校人才队伍建设提供了有力的政策支撑。州委党校在省委党校的悉心指导下、州委的正确领导下,深入贯彻落

  • 为推动“不忘初心、牢记使命”主题教育常态化,树牢“清新简约、务本责实、实干兴洛”作风导向,打造忠诚干净担当、敢于善于斗争的执纪执法铁军,经县纪委常委会会议研究,决定在全县纪检监察系统开展“转变作风工作

  • 为进一步发展壮大农村集体经济,增强村级发展活力,按照中共XXX市委抓党建促乡村振兴工作领导小组《关于印发全面抓党建促乡村振兴四个工作计划的通知》要求,工作队与村“两委”结合本村实际,共同研究谋划xx村

  • 今年来,我区围绕“产城融合美丽XX”总体目标,按照“城在林中,水在城中,山水相连,林水相依”以及“城乡一体、景城一体、园城一体”的建设思路,强力推进城市基础设施建设、棚户区改造、房地产开发和城市风貌塑

  • 同志们:新冠疫情发生至今已有近三年时间。三年来,在广大干群的共同努力下,我们坚决打好疫情防控阻击战,集团公司范围内未发生一起确诊病例,疫情防控工作取得了阶段性胜利。当前国际疫情仍在扩散蔓延,国内疫情多

  • 我是毕业于XX大学的定向选调生,当初怀着奉献家乡、服务人民的初心回到XX,在市委的关心关爱下,获得了这个与青年为友的宝贵历练机会。一年感悟如下。一要对党忠诚,做政治坚定的擎旗手。习近平总书记指出,优秀

  • 同志们:今天召开这个会议,主要任务是深入学习贯彻习近平总书记重要指示批示精神,以及李克强总理批示要求,认真落实全国安全生产电视电话会议和全省、全市安全生产电视电话会议精神,研究我县安全生产和安全隐患大

  • 2022年市委政研室机关党的建设工作的总体要求是:坚持以XXX新时代中国特色社会主义思想为指导,全面贯彻党的XX届X中X会和省、市第十二次党代会精神,自觉运用党的百年奋斗历史经验,弘扬伟大建党精神,深

  • 同志们:今天,我们在这里召开市直机关基层党建示范点工作会议,一方面是对各示范点单位进行表彰授牌,另一方面是想通过这种会议交流的方式,给大家提供一个相互学习、取长补短的平台和机会。市直工委历来把创建基层

  • 新冠疫情暴发以来,学校党委坚决贯彻习近平总书记关于疫情防控工作的指示要求和党中央的决策部署,严格执行×××部、×××厅关于疫情防控的系列要求,认真落实驻地防疫部门的工作举措,继承发扬优良传统,以最高标