研究生课程软件体系结构的教学实践探讨_第1页
研究生课程软件体系结构的教学实践探讨_第2页
研究生课程软件体系结构的教学实践探讨_第3页
研究生课程软件体系结构的教学实践探讨_第4页
研究生课程软件体系结构的教学实践探讨_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、研究生课程软件体系结构的教学实践探讨1 背 景软件体系结构, 又称软件架构, 是软件工程领域一个非常重 要的组成部分。人们目前一般认为软件开发过程包含需求分析、 概要设计、详细设计、编码、测试、维护等几个阶段。在需求分 析阶段, 开发人员得到一组关于系统功能的用例; 到了概要设计 阶段,开发人员需要为每个用例确定对应的函数以及参数名称和 个数。对于开发一个很小的系统来说,由于用例数量少,函数间 的调用关系简单, 从用例过渡到函数实现相对容易, 但是目前新 出现的软件规模越来越大(如 Visual Studio 2017安装包就有3G,而MATLAB 2016 b有6G),功能越来越复杂,安全性

2、 /实时 性要求越来越高。 开发大型软件时, 开发人员需要对系统进行合 理的模块划分,设计子系统,确定软件各模块调用逻辑,避免出 现代码冗余、代码膨胀、后期难以修改等致命的问题,这些内容 则属于软件架构设计的范畴。 软件架构设计是软件工程不可或缺 的一部分,连接了需求分析和概要设计两个阶段,如图 1 所示。虽然软件架构设计的地位非常重要, 但是目前开设这门课程 的高校却不多。 为了满足软件工程专业的培养要求, 同济大学软 件学院于 2014年开设了软件体系结构这门课程,旨在教授学生 如何设计软件架构、 编写架构文档、 对软件架构进行评估等知识 和方法。 为了使学生对软件架构有一个完整的认识,

3、教师可以卡 内基 ?梅隆大学软件工程学院( software engineering institute , SEI )编写的教材 1 为基础,综合目前流行的软件 架构模式和多方面资料,制订相应的学习内容 2 ;同时,每部 分理论知识应对应有课程实践,学生能够通过完成作业和项目, 最终掌握相应的知识点。2 课程内容2.1 软件质量属性质量属性需求在设计软件架构过程中起决定性作用, 因此本 知识点旨在教授学生熟悉软件的质量属性以及每种质量属性的 具体例子。在本知识点中,软件质量属性包含可用性 ( availability)、可修改性( modifiability )、安全性(security )

4、、性能(performanee )、可移植性(portability )、 可扩展性( portability )、可测试性( testability )等方面。学生学习使用场景的形式表示每种质量属性。 可用性的概要 场景和具体场景1如图2所示。一个场景包含6部分:source of stimulus 、 stimulus 、 artifact 、 environment 、 response 和 response measure。采用场景表示法能够统一不同质量属性的表 示方式,有利于理解项目需求,帮助架构师分析、设计合适的软 件架构。2.2 软件架构策略和模式软件架构策略( tactics

5、)是一些能保证系统达到所需质量 属性要求的技术总称, 如可用性的策略包括备份策略、 时间戳策 略、回滚策略、模块监控策略等。策略可以提高软件某一个属性 方面的质量, 软件架构模式则由一系列的策略组成, 是在不同软 件质量属性间作出的一种权衡( tradeoff )。之所以称为权衡, 是因为软件质量属性之间存在着冲突, 如采用备份策略增强系统 势必影响到系统的性能(因为需要花时间完成备份间的同步)。 常用的软件架构包括分层模式( layered pattern )、代理人模 式(broker pattern )、MVC模式、管道过滤器模式(pipe-and-filterpattern )、P2P

6、模式、CS架构等。文献3中又总结了另外 3 种架构模式:事件驱动架构( event-driven architecture )、微内核架构( microkernel architecture )和 微服务架构( microservice architecture)。软件架构策略和模式具有很强的经验性, 简单地要求学生记 住各种软件架构模式的特点是很难做到的。为了让学生深入理解各种策略和模式,可在课程内容中引入KWIC系统(该系统的详细说明见 3.2 节),以说明根据不同架构模式设计出的软件有什 么样的特点, 另外还可引入示波器软件, 说明如何根据需求找出 合适的架构模式并加以修改,直至最终设计

7、出合适的软件架构。2.3 质量属性驱动的软件架构设计 如何挑选和设计软件架构需要架构师的经验,但是从系统的质量属性出发设计软件架构是一个很好的实践方法。 质量属性驱 动法(ADD根据用户的需求输出一系列的架构视图以及视图中 每个模块的功能和相互作用关系。 这些输出结果是软件架构的原型,根据这个原型能够很快得到最终的软件架构。ADD方法包括3个步骤:找出要分析的对象模块;分析该模块的需求,设 计该模块的架构模式, 分解模块并分配需求和功能, 定义子模块 的接口;重复第2步直至模块无法分解。2.4 软件架构文档编写软件架构文档是用于记录软件架构的重要工具, 一方面描述 了软件架构师在设计系统架构时

8、作出哪些重要决策, 另一方面是 一种对后期代码实现的约束。 架构文档是会议讨论和信息传递的 基础,一个清晰完整的架构文档对所有参与的人员都有重要意 义。本知识点包括: 如何选择适合的结构作为架构文档的内容; 如何根据模板撰写架构文档。 学生需要学习根据模板将合适的 结构写入架构文档中。2.5 软件架构评估架构师设计好软件架构并且撰写架构文档后, 项目参与人员 需要对该架构进行评估以确认是否符合项目需求。 软件开发前期 的架构评估可以避免系统出现致命且难以修改的错误, 提高软件 开发的成功率。 SEI 提供了一种架构评估的方法,即体系结构权 衡分析方法 (architecture tradeof

9、f analysis method, ATAM)。 该方法包含 9个步骤, 如图 3所示, 基于软件架构文档和需求文 档,参与ATAM讨论的人员通过提问的方式向架构师确认设计的 软件架构能够满足所有功能需求和质量属性方面的需求。 如果该 架构不能满足某些重要的需求, 那么架构师需要修改软件架构和文档直至满足要求为止。3 课程实践项目3.1 ICDE 系统的质量属性分析 为了使学生更好地理解不同质量属性的含义, 教师可以通过 一个具体的项目(ICDE系统)需求演示该软件需要具有哪些质 量属性。ICDE系统是一个小型系统,用于记录客户端用户的所 有操作,如浏览页面的网址、搜索的字符串等,这些信息将

10、被 ICDE系统保存在数据库里,供第三方工具分析使用,如图4所示。项目需求显示该系统要求记录用户每个操作的时间不超过 0.1 秒;另外,该系统要求能同时将 150 个用户的操作保存至数 据库中。课堂实践中,学生从性能、可扩展性、可修改性、安全性、 可用性、集成性6方面具体分析ICDE系统的质量属性。基于场 景表示法,学生需要根据需求为ICDE系统的每个质量属性找出一个具体场景,并明确指出 Source of stimulus 、 Stimulus 、 Artifact 、Environment、Response 禾口 Response measure 分另U 是什么。3.2 KWIC 系统的实

11、现学生在课堂上需要了解 KWIC系统的需求,并对4种不同架 构的特点进行分析。 在课下实践中, 学生需要下载 4种架构下实 现好的代码, 根据每种架构特点对系统已有的功能进行修改, 如 给系统增加新的功能、改变数据类型等。通过该实践项目,学生 可以亲身体会不同架构对可能发生的修改会产生怎样的影响。除此之外, 学生还要回答一系列问题, 如修改系统功能时需 要修改哪些模块?该架构是否支持这种修改?最后学生需要将 答案整理成报告提交给教师。3.3利用ADD方法的软件架构设计该实践项目首先让学生学习 ADD 方法如何运用在车库门控 制系统的架构设计中。车库门控制系统允许用户通过开关按钮、 遥控器和家庭

12、信息系统 3 种方式控制车库门的开闭; 另外家庭信 息系统可以诊断车库门控制系统出现的问题; 最后该系统能够在 多种处理器上运行。 可以提取出 4 个质量属性方面的需求: 检 测到障碍物时,门需要在 0.1s内停止;车库门的开闭命令; 支持多种处理器;多种操作界面。从质量属性出发,软件架 构增加了虚拟机模块和时间调度模块机制, 保证实现的系统满足 以上需求。第一轮迭代结果 1 如图 5所示。继续迭代第 2 个步骤直至每个模块不能继续划分为止, 这样 就可以得到一个软件架构原型。 通过车库门控制系统, 学生可以 掌握ADD方法的步骤,学会在实际项目开发中设计合适的软件架 构。在课下实践中, 学生

13、需要挑选一个项目进行需求分析, 找出 功能性需求、非功能性需求和约束,利用课堂上讲授的ADD方法 设计出合适的软件架构。该实践项目一般需要学生结合实际经 验,对做过的项目重新进行分析和设计,观察利用ADD方法设计出的架构与自己之前实现的架构有什么区别, 从而体会两种架构分别有何优缺点。3.4 ATAM 的课堂实践课堂教学中, 一部分学生作为评估团成员提问, 一名学生作 为架构师对自己设计的架构进行讲解和回答问题。 通过亲身实践 ATAM的9个步骤,学生能够对整个评估过程有更深的理解。4 教学效果评估4.1 教学经验总结 在课堂教学中, 学生对老师讲授的知识点会结合实际经验提出自己的问题,如传统

14、的MVC架构如何演化到目前流行的 MVP架 构,两者的区别有哪些,分别适应于何种需求。此外,学生对一 些策略的具体应用很感兴趣,如如何应用运行时注册( runtime registration )、动态查找( dynamic lookup )等策略提高软件 的可修改性; 学生对云服务和云计算的框架也非常感兴趣。 多年 授课经验表明, 学生更喜欢基于开发经验理解软件架构的基本概 念,而不是简单地背诵书上的知识点; 在课堂上就所讲知识和教 师进行实时交流,要求教师随时解释不懂的问题。总体来说,通 过课堂教学,学生不仅了解了软件架构的基本概念和相关方法, 还学会了设计软件架构和撰写架构文档以及如何进

15、行架构评估。在课程实践中, 学生基于项目实例进一步理解软件架构相关 知识和设计方法。在设计ICDE系统时,学生先在教师的带领下 自己分析该系统包含哪些质量属性的需求, 然后参考答案总结自 己遗漏的地方, 并且共同分析自己的结果和课件答案产生差别的原因。在学习KWIC系统时,学生感受到不同的软件架构最终生 产出具有不同质量的软件。 在课堂上, 学生会对每种软件架构的 设计过程提出问题, 如如何根据需求对软件模块进行划分、 每个 模块的功能如何定义等。在学习利用ADD方法设计车库门控制系 统时,学生对ADD方法的设计过程表现出很大兴趣。 由于以前从 未使用过类似的软件架构设计方法,因此学生会发现A

16、DD方法设 计出的软件架构和自己设计的架构有很大不同。学生针对ADD方法中的每一步对模块功能的细化提出很多问题, 体现出积极思考 的过程。在利用ATAM方法进行架构质量评估时,学生在课堂上 展开了热烈讨论。 作为架构师的学生对评估团成员的提问一一作 答,有时会被问题问住, 继而发现软件架构中存在的问题并加以 改正。通过实践,学生更加熟悉了 ATAM方法的整个流程。最后,学生结合自己做过的项目, 利用ADD方法进行架构设 计,如有的学生设计了安全房屋系统的架构, 有的学生为在线旅 游网站设计了软件架构。 对于每个项目, 学生都认真考虑和仔细 分析,充分将课堂上所学的知识转化到实践中。4.2 教学中遇到的问题 软件体系结构这门课程包含的内容很多, 从相关理论到实际 应用,每一点都需要教师阅读大量材料并且积累丰富的开发经 验。在课堂教学中,学生会从各个角度提问,有时甚至需要教师 课下查阅资料才能回答学生的问题。 教师在授课过程中也需要不 断积累学生的问题, 通过总结分类发现学生关注的焦点, 针对这 些问题作好充分准备,才能满足学生的求知欲望。在课程实践项目中,ICDE系统和KWIC系统的需求有些过时, 跟目前各?N新型项目(如基于移动平台的项目开发、包含人工 智能的项目开发等) 的需求差别较大, 导致学生通过课程实践获

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论