- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件体系架构课程本科教学探讨
摘要:现代社会的每一方面都需要依赖软件,构造高质量软件需要设计良好的架构和专业的实现过程。因此,软件体系架构被选作软件工程方面的主修课程。文章结合软件体系架构本身及学生知识结构特点,介绍如何选择本科阶段软件体系架构课程教学内容、以及教授方面的经验。文章设计了教学内容的体系架构,涵盖课堂教学及实验环节,并进行详细阐述。
关键词:软件体系架构;本科课程;软件工程
软件体系架构 (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风格及应用实例
文档评论(0)