1、第 22卷 第 2期2023年 2月Vol.22 No.2Feb.2023软 件 导 刊Software Guide基于开源框架的软件体系结构教学方法探索贾玉祥,昝红英(郑州大学 计算机与人工智能学院,河南 郑州 450001)摘要:针对软件体系结构课程内容抽象、落地难的问题,提出基于开源框架的“案例+开源+框架”教学法,引入产业界主流技术,选择实践性强、有案例支撑的内容进行教学,在架构分析与设计的基础上进一步考虑了架构在系统实现中的应用。以软件质量属性策略及软件架构风格为纲组织教学内容,二者在主题选择上具有很好的弹性,便于根据不同学时灵活剪裁。采用开源案例和公开教学资料,使学生在理解相关知识
2、点的同时,具备基于源码分析软件体系结构的能力,也能掌握基于框架的构件式软件开发方法。学生评教结果显示,该教学法取得了较好的教学效果。关键词:软件体系结构;开源框架;软件质量属性;软件架构风格;多视图模型DOI:10.11907/rjdk.221127开 放 科 学(资 源 服 务)标 识 码(OSID):中图分类号:G420 文献标识码:A文章编号:1672-7800(2023)002-0199-05Exploration of Software Architecture Teaching Method Based on Open Source FrameworkJIA Yu-xiang,ZA
3、N Hong-ying(School of Computer and Artificial Intelligence,Zhengzhou University,Zhengzhou 450001,China)Abstract:Aiming at the problems of abstract contents and difficult implementation of software architecture courses,propose a teaching method based on open source framework integrating cases,open so
4、urce,and framework,introduces mainstream technologies from the industry,and selects contents with strong practicality and case support for teaching,considering application of software architecture to system implementation besides software architecture analysis and design.The teaching contents are or
5、ganized based on the software quality attribute strategy and software architecture style,both of which have good flexibility in topic selection,resulting in a good tailorability according to different school hours.Using open source cases and teaching materials,students can understand the relevant kn
6、owledge points,have the ability to analyze software architecture based on source codes,and master the framework-based component software development method.The teaching evaluation results by students show that the proposed method can achieve good teaching effect.Key Words:software architecture;open
7、source framework;software quality attribute;software architecture style;multi-view model0 引言软件体系结构(Software Architecture)又称软件架构,是指对系统进行推理所需的一组结构,包括软件元素及其之间的关系和二者的属性1。软件架构涵盖多种软件结构,大致分为3类:静态结构、动态结构和分配(Allocation)结构。软件架构设计就是在需求分析的基础上对软件高层结构进行建模(通常使用 UML工具),以指导后续的详细设计等软件开发活动。软件体系结构课程教学有一定难度2-3,原因包括以下几个方
8、面:教学内容比较抽象,软件架构属于早期设计阶段,与编码实现阶段有一定距离,而学生对编码更熟悉,也更感兴趣;软件架构关注的是软件质量属性,只有在复杂度较高的项目中才能体现价值,而学生接触到的项目多为课程设计类的小项目,且主要关注功能实现,不关心质量属性;教材内容与业界主流技术脱节,案例缺少源码等配套资料,学生只能从用户的角度来分析软件收稿日期:2022-02-15基金项目:郑州大学教育教学改革研究与实践项目(2019ZZUJGLX326,2019ZZUJGLX338);河南省研究生教育改革与质量提升工程项目(YJS2022ZX05)作者简介:贾玉祥(1981-),男,博士,CCF会员,郑州大学计
9、算机与人工智能学院副教授、硕士生导师,研究方向为自然语言处理;昝红英(1966-),女,博士,CCF会员,郑州大学计算机与人工智能学院教授、硕士生导师,研究方向为自然语言处理。2023 年软 件 导 刊架构。近年来,高校在软件体系结构课程教学方面进行了一系列探索。文献 4 提出贯穿式案例实践教学法,设计一套可贯穿软件体系结构课程主要知识点的若干案例,组织学生分组实践,设计软件架构;文献 5 将高等教育心理学中的学习迁移理论应用于软件体系结构教学;文献 6 针对应用型本科院校,提出将软件体系结构课程教学内容整合为软件体系结构原理和软件体系结构设计两部分,并利用案例驱动教学;文献 7 从教学内容、
10、课程实践项目、教学效果评估 3个方面探讨研究生软件体系结构课程建设方案;文献 8 提出将翻转课堂教学模式应用于软件体系结构课程教学,以任务驱动为主线,实现课程教学前、中、后3部曲操作。引入开源项目9-10也是提高教学效果的一个有效手段,源码可以展现软件的静态结构,也可以通过部署、运行、调试,体现软件的动态结构。结合源码可以对软件架构有一个比较全面的了解,同时基于源码的架构恢复也是软件体系结构的一个研究方向11-13。因此,源码为软件体系结构教学与科研的结合提供了一个很好的切入点。“案例+开源”将已有的案例教学法向前推进了一步,本文引入开源框架,提出“案例+开源+框架”教学法,除架构分析与设计外
11、,进一步考虑了系统实现。基于框架的软件开发正是软件体系结构的价值体现14,是构件层面的软件复用15。基于主流开源框架进行软件体系结构教学,既具有开源项目的优势,又能使学生掌握框架的使用方法,为将来从事软件开发工作打下一定基础。本文采用Java生态中最流行的开源框架Spring,将教学内容与Spring案例相结合,探索基于开源框架的软件体系结构教学方法。将软件体系结构与 Spring 相结合的一些最新实践为本 文 教 学 方 法 提 供 了 参 考,Software Architecture with Spring 5.016基于 Spring 介绍了客户服务器(Client-Server,CS
12、)架构、模型视图控制器(Model-View-Controller,MVC)架构、事件驱动架构、管道过滤器(Pipe-and-Filter)架构、微服务(Microservices)架构和无服务器(Serverless)架构共6种架构风格。南京大学曹春教授17的软件体系结构课程结合Spring讲授了基于构件的架构、分层架构、CS 架 构、MVC 架 构、RESTful(Representational State Transfer)架构、可扩展架构、管道过滤器架构、事件驱动架构、响应式(Reactive)架构、微服务架构、云计算架构及无服务器架构等10余种架构风格。1 教学内容及学时安排本课程
13、面向软件工程、计算机科学与技术专业的高年级本科生,教学内容及学时安排如表1所示。将课程理论与实践相结合,并安排讨论课进行学习实践结果的展示与验收,课程主要内容包括:概述、软件结构与视图、软件质量属性及策略、软件体系结构风格、软件体系结构设计与评估。概述部分介绍软件体系结构基本概念、软件体系结构的作用,并引入思政元素;软件结构与视图是软件架构的核心概念,是软件在不同视角下所呈现的模样;软件质量属性是软件架构的决定因素,每一种质量属性都有一定的架构策略;软件体系结构风格是课程的主体内容,会介绍不同风格的软件结构、质量属性表现、优缺点等内容,并结合Spring进行实验和案例分析;软件体系结构设计与评
14、估介绍属性驱动的软件体系结构设计方法(Attribute-Driven Design,ADD)以及基于场景的软件体系结构评估方法。课程一共有48学时,其中实验环节16个学时,软件质量属性及策略、软件体系结构风格两部分内容在主题选择上具有很好的弹性,可以根据不同学时安排灵活选择主题。(1)软件结构与视图。软件结构可分为静态结构、动态结构和分配结构。静态结构主要是模块(Module)结构,包括模块的分解与使用、模块的层次、类之间的结构、数据项之间的结构等;动态结构又称为构件连接件(Component&Connector,C&C)结构,是软件运行时的结构,包括服务交互、进程/线程并发等;分配结构描述
15、的是软件与周围环境的关系,如项目目录结构描述模块与文件的关系、部署结构描述软件与硬件的关系、分工结构描述模块与开发小组的关系等。为软件结构建立的模型又称为视图(View)。要完整地呈现一个软件架构,往往需要多种结构对应的多个视图,即多视图模型。“4+1”视图模型分别从4种不同涉众的角度,采用逻辑视图、开发视图、运行视图和部署视图来描述软件架构,最后用用例视图将不同视图统一起来,每个视图都可以用一种或多种UML图形来描述。(2)软件质量属性及策略。软件质量属性是描述软件质量好坏的指标,用来描述软件的非功能性需求。常见的质量属性指标有:可用性(Availability)、互操作性(Interope
16、rability)、可修改性(Modifiability)、性能(Performance)、安全性(Security)、可测试性(Testability)及易用性(Usability)等,其中可用性、互操作性、性能、安全性、易用性为运行期质量属性,可修改性、可测试性为开发期质量属性。功能需求一般用用例(Usage Case)表示,而质量属性需求一般用场景(Scenario)表示,每一个质量属性都会有相应的策略保障需求达成,例如:大型网站性能相关策略有分库分表、读写分离、动静分离、缓存等,可用性相关策略有异地多活、服务降级、限流等。Table 1Teaching contents and hour arrangement表1教学内容及学时安排章节序号12345总 计课程内容概述软件结构与视图软件质量属性及策略软件体系结构风格软件体系结构设计与评估理论课2468424实验00016016讨论课000808小计24632448 200第 2 期贾玉祥,昝红英:基于开源框架的软件体系结构教学方法探索(3)软件体系结构风格。软件无论大小都有架构,按照组成软件的元素及其交互方式不同,可把软件架构分