- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
研究生课程软件体系结构教学实践探讨
研究生课程软件体系结构教学实践探讨
摘 要:软件体系结构课程是软件工程知识领域的重要组成部分,衔接需求分析和概要设计两个阶段,教学内容要求紧密围绕该领域的最新研究成果展开,难度很大,不容易组织。文章从内容、课程实践项目、教学效果评估3方面对这门课程的建设方案进行全面阐述。
关键词:软件体系结构;质量属性驱动;软件架构设计;软件架构文档;软件架构评估
1 背 景
软件体系结构,又称软件架构,是软件工程领域一个非常重要的组成部分。人们目前一般认为软件开发过程包含需求分析、概要设计、详细设计、编码、测试、维护等几个阶段。在需求分析阶段,开发人员得到一组关于系统功能的用例;到了概要设计阶段,开发人员需要为每个用例确定对应的函数以及参数名称和个数。对于开发一个很小的系统来说,由于用例数量少,函数间的调用关系简单,从用例过渡到函数实现相对容易,但是目前新出现的软件规模越来越大(如Visual Studio 2017安装包就有3G,而MATLAB 2016 b有6G),功能越来越复杂,安全性/实时性要求越来越高。开发大型软件时,开发人员需要对系统进行合理的模块划分,设计子系统,确定软件各模块调用逻辑,避免出现代码冗余、代码膨胀、后期难以修改等致命的问题,这些内容则属于软件架构设计的范畴。软件架构设计是软件工程不可或缺的一部分,连接了需求分析和概要设计两个阶段,如图1所示。
虽然软件架构设计的地位非常重要,但是目前开设这门课程的高校却不多。为了满足软件工程专业的培养要求,同济大学软件学院于2014年开设了软件体系结构这门课程,旨在教授学生如何设计软件架构、编写架构文档、对软件架构进行评估等知识和方法。为了使学生对软件架构有一个完整的认识,教师可以卡内基?梅隆大学软件工程学院(software engineering institute, SEI)编写的教材[1]为基础,综合目前流行的软件架构模式和多方面资料,制订相应的学习内容[2];同时,每部分理论知识应对应有课程实践,学生能够通过完成作业和项目,最终掌握相应的知识点。
2 课程内容
2.1 软件质量属性
质量属性需求在设计软件架构过程中起决定性作用,因此本知识点旨在教授学生熟悉软件的质量属性以及每种质量属性的具体例子。在本知识点中,软件质量属性包含可用性(availability)、可修改性(modifiability)、安全性(security)、性能(performance)、可移植性(portability)、可扩展性(portability)、可测试性(testability)等方面。
学生学习使用场景的形式表示每种质量属性。可用性的概要场景和具体场景[1]如图2所示。一个场景包含6??部分:source of stimulus、stimulus、artifact、environment、response和response measure。采用场景表示法能够统一不同质量属性的表示方式,有利于理解项目需求,帮助架构师分析、设计合适的软件架构。
2.2 软件架构策略和模式
软件架构策略(tactics)是一些能保证系统达到所需质量属性要求的技术总称,如可用性的策略包括备份策略、时间戳策略、回滚策略、模块监控策略等。策略可以提高软件某一个属性方面的质量,软件架构模式则由一系列的策略组成,是在不同软件质量属性间作出的一种权衡(tradeoff)。之所以称为权衡,是因为软件质量属性之间存在着冲突,如采用备份策略增强系统势必影响到系统的性能(因为需要花时间完成备份间的同步)。常用的软件架构包括分层模式(layered pattern)、代理人模式(broker pattern)、MVC模式、管道过滤器模式(pipe-and-filter pattern)、P2P模式、CS架构等。文献[3]中又总结了另外3种架构模式:事件驱动架构(event-driven architecture)、微内核架构(microkernel architecture)和微服务架构(microservice architecture)。
软件架构策略和模式具有很强的经验性,简单地要求学生记住各种软件架构模式的特点是很难做到的。为了让学生深入理解各种策略和模式,可在课程内容中引入KWIC系统(该系统的详细说明见3.2节),以说明根据不同架构模式设计出的软件有什么样的特点,另外还可引入示波器软件,说明如何根据需求找出合适的架构模式并加以修改,直至最终设计出合适的软件架构。
2.3 质量属性驱动的软件架构设计
如何挑选和设计软件架构需要架构师的经验,但是从系统的质量属性出发设计软件架构是一个很好的实践方法。质量属性驱动法(ADD)根据用户的
原创力文档


文档评论(0)