敏捷开发学年毕业论文范文 跟基于敏捷开发的软件体系结构教学相关在职开题报告范文

本文关于敏捷开发论文范文,可以做为相关论文参考文献,与写作提纲思路参考。

基于敏捷开发的软件体系结构教学

丁 箐

(中国科学技术大学 软件学院,安徽 合肥 230051)

摘 要:针对传统的瀑布模型使学生很难完成各个阶段的任务,导致教学质量普遍欠佳,文章根据软件体系结构课程的具体内容,提出采用敏捷方法,使用Scrum精心设计各个Sprint的阶段任务、需要提交的内容以及对应的理论知识,并根据该课程的特点制订相应的实施方法.

关键词:敏捷方法;软件体系结构;scrum;软件工程

0 引 言

软件体系结构是软件学院针对工程硕士开设的一门专业类高级课程,学生通过学习该课程,能够掌握软件项目开发中的架构设计知识,了解一个软件系统的各种非功能需求如何满足.该课程必须通过实践操作,才能让学生更深入地理解和掌握.

目前,软件工程实践课程都采用传统的瀑布模型进行授课:首先教师进行理论课程知识点的传授,然后学生在实验课时内根据上课时传授的知识点进行相应的项目编程练习,软件产品的形态只有到了开发后期才能看到,但是学生一般没有开发经验,很难一步到位完成任务,而且学生普遍对撰写文档不感兴趣,导致教学效果不佳.敏捷软件开发以人为导向,主动适应项目需求的变化,因此本质上来说敏捷方法更加适合这类课程的教学[1-4].

1 敏捷开发方法在教学中的应用

敏捷开发是目前在IT公司中使用最多的软件开发过程,其开发模型适合中、小型软件系统,能在短时间内开发出可运行的系统,因此得到了广泛的研究,例如唐涌等[1]讨论了全球化开发团队的敏捷开发模式;季铁等[2]通过对比以用户为中心的设计和敏捷开发存在的共性和特性,结合实际项目提出了将以人为中心的设计整合到敏捷开发过程中的方法;荣国平等[3]通过调研和分析嵌入式系统开发过程中敏捷方法的应用状况,研究如何通过扩展和改进敏捷方法,更好地适应嵌入式系统开发;田晓盼[4]则关注敏捷思想的理念与用户体验设计的结合,从而引出敏捷用户体验设计的概念,并将之应用到移动APP的设计和开发中.

在软件工程实践类课程中,引入敏捷开发方法可以更好地调动学生的积极性,使学生能够更好地适应未来工作中开发软件产品的流程,增强学生的合作意识和团队精神,并且针对学生群体差异调整教学内容.近年来,不少教育工作者在如何将敏捷开发方法应用到计算机类课程的教学中进行了有益的探索,其中部分研究者集中于软件工程课程.例如管林挺等[5]讨论了当前软件工程在教学中遇到的问题,提出了基于敏捷开发组织教学内容和教学实践的方法,并分析了这种方法的优点;朴勇[6]通过分析传统开发过程和敏捷开发过程在软件工程课程教学中的不同特点,提出了敏捷开发的教学要点、相应的支持工具;白鱼秀等[7]针对传统瀑布模型在软件工程实践课程教学中的不足,基于敏捷开发方法提出一种适合软件工程实践课程的教学方法,并给出了相应的实施方法.另一些学者则将敏捷方法应用到其他的计算机领域课程的探索,如顾家铭[8]针对物联网专业实践课程中存在的问题,采用敏捷开发思想,引入Scrum开发模式,并改革成绩考核方式;肖小聪等[9]将敏捷开发思想融入数据库课程设计中,提出了基于敏捷开发的数据库课程设计的总体思路、实验框架以及具体实施办法.然而,对于如何在软件体系结构课程中应用敏捷方法目前还没有相关文献.

2 课程内容

敏捷软件开发在实际应用中有很多具体的实施方法,如极限编程(XP)、精益开发(Lean Development)、Scrum等.在教学实践上,首先需要选定一种方法作为实施工具.经过多方比较,笔者选择了Scrum,它是一个迭代增量框架,采用周期方式完成产品开发,周期性工作称为Sprint,因此课程内容围绕 Sprint的设计来开展.

如表1,软件体系结构课程共50理论学时,分为6个阶段任务.每个Sprint开始时,项目团队从阶段任务列表中选择需要完成的项目,并在该Sprint结束前完成这些需求.Sprint期间团队成员简要汇报彼此的进度,Sprint结束后,项目团队演示他们所做的工作,并且反馈需要融入下次Sprint的工作.课程关联的项目是一个分布式系统里监控系统机群的智能监管系统,不指定具体的开发技术,仅要求需要完成的功能以及需要满足的各项非功能需求.课程的内容以软件体系架构的各种视图和质量属性为主,联系J2EE框架的各个组成部分,学生在每个Sprint中可以选择J2EE框架各层的相应技术完成本阶段的任务.Sprint3之前的开发技术为必须完成的任务,考虑到学生间差异较为明显,Sprint4和Sprint5的相关技术为选做内容,开发进度较快的学生可以采用这些技术对开发项目进行再次迭代,并比较不同技术对所开发项目各种非功能需求的影响.

Scrum团队一般由产品负责人(Product Owner)、Scrum主管(Scrum Master)和开发团队(Scrum Team)组成.产品负责人收集来自客户、项目团队等各方面的需求信息,追求商业价值最大化,输出需求优先列表,该软件在软件体系结构的教学中由任课老师担任;开发团队是软件的实现者,决定最终提交产品的质量,本案例中开发团队的规模是4人左右,选择一人作为Scrum主管,负责引导团队使用好Scrum;一般来说软件项目中的开发团队包括分析师、开发者、接口设计者、测试员等,案例中团队内部的职责划分由学生实施,但建议每名学生既承担开发任务,又承担测试任务.

3 实施方法

整个课程的Scrum实施过程包括以下几大部分.

1)开始Scrum.

即Sprint0阶段,教师介绍课程基本情况,列举项目所有产品需求,根据全部需求明确优先级,形成产品订单,开始Sprint 迭代.

2)Sprint迭代.

即Sprint1到Sprint4阶段,主要包括:

(1)开展迭代会议.

Sprint计划会议(Sprint planning meeting)要确定本次迭代结束按照优先级顺序需要提交的需求项以及评估小组在此次迭代中完成任务需要的时间,按优先级分解为任务,并在团队成员中分配.

站立会议中开发团队成员汇报进展和困难,更新完成每项任务的剩余时间,Scrum主管据此更新任务看板上的燃尽图.

评审会议,评估本次Sprint完成情况,为进入下一个Sprint做准备,根据上次完成的结果修改产品订单,重新确定优先级.

反思会议要求每个小组必须每天进行代码回顾,及早发现问题,通过对代码进行重构,反思得失.

(2)持续集成,小组每天进行一次代码集成.不同迭代阶段涉及同一层上采用不同技术开发的相同功能,在不影响程序正确性和功能的前提下,可以部分集成,并行开发.

(3)技术讲座,课程开展过程中结合课程内容会安排几次讲座,主要涉及目前流行的各种开发框架,学有余力的学生可以尝试采用这些框架在迭代中更换某些系统层.

(4)文档编写,采用敏捷开发的教学也需要部分文档的支持,本课程主要集中在软件体系结构中各种视图的展现,针对解决问题的不同角度,要求各小组在迭代的各个阶段完成相应的视图.

3)发布产品.

各小组提交最终产品,进行课程项目最终的考核评价.小组进行项目答辩,小组项目考核分数由教师评定分和其他小组评定分综合决定.考核的依据主要是系统的完成程度和功能(40%)、项目的难度(20%)、文档的正确性(20%)以及答辩表述(20%).小组中每个学生的成绩由项目小组的分数和其在项目小组中的贡献率综合评定,最后结合课程理论考试的分数,得到该学生的最终成绩.

4 结 语

针对软件体系结构这门软件工程硕士专业的专业类高级课程,由于涉及大量的架构类理论知识,对没有大量编程训练的学生来说,要想较好地理解这些概念具有很大的难度.因此,通常来说该门课程需要增加项目练习来辅助学生理解概念.然而,采用传统瀑布模型,学生很难一步到位圆满地完成各个阶段的任务,导致教学质量普遍欠佳.

通过调研敏捷开发方式在软件工程以及其他一些计算机课程中的应用,笔者发现敏捷开发是基于适应的,通过主动适应项目需求的变化,从本质上来说更适合软件体系结构课程的教学.因此,根据课程的具体内容,笔者采用Scrum精心设计了各个Sprint的阶段任务、需要提交的内容和对应的理论知识,并根据该课程的特点制定了相应的实施方法,在实际的教学中起到了很好的效果,根据学生的反馈,对掌握该课程的各知识点有较大的帮助.

基金项目:安徽省质量工程项目(2015jyxm007).

作者简介:丁箐,男,讲师,研究方向为分布式计算、无线网络、计算机科学教育,dingqing@ustc.edu.cn.

表1 教学实践案例框架表

阶段时间安排阶段任务提交内容对应理论知识

Sprint08(1)团队建立;

(2)分布式机群监管系统的基本需求;

(3)架构上下文和基本概念;

(4)评审会议;

(5)反思会议(1)团队分工表;

(2)系统功能模块图;

(3)软件愿景架构上下文和基本概念

Sprint19(1)架构视图的基本知识,分类;

(2)讲解logicalview和ConceptualArchitecture;

(3)对照这些概念,学习JaEE框架的基本概念;

(4)采用界面驱动开发方式,学习JaEE框架中的Servlet、J构件,并采用这些技术开始实际的项目界面设计和开发;

(5)评审会议;

(6)反思会议针对分布式机群监管系统,画出:

(1)logicalview;

(2)ConceptualArchitecture架构视图、范式;

J2EE框架

Sprint29(1)讲解processview、physicalview和ImplementationArchitecture;

(2)学习JaEE框架中的EJB、JPA构件技术,并采用这些技术开始实际的项目逻辑层和数据持久层的开发;

(3)针对分布式机群监管系统,分析其非功能需求的一些重点响应,如性能需求、可扩展性需求、可用性需求等;

(4)了解EJB、JPA的应用目的,检查以前的设计是否能够满足这些非功能的需求;

(5)评审会议;

(6)反思会议针对分布式机群监管系统,画出:

(1)processview;

(2)physicalview;

(3)ImplementationArchitecture架构视图;

非功能需求分类

Sprint39(1)学习QualityAttributes的基本定义,着重介绍可用性以及性能等runtime属性,重点掌握具体的技术有哪些;

(2)学习JaEE框架中的Jax-WS、Jax-RS、websocket等技术,考虑如果采用这些技术实现应用的逻辑层,对上述非功能性需求有哪些影响?

(3)采用敏捷迭代方法,用上述技术对应用重新设计和开发(可选做);

(4)评审会议;

(5)反思会议针对分布式机群监管系统,画出:

(1)主要类图;

(2)顺序图质量属性

Sprint49(1)讲解developmentview和ExecutionArchitecture;

(2)针对分布式机群监管系统,分析其非功能需求中nonruntime的一些重点需求,如灵活性、可升级性、安全性等;

(3)介绍QualityAttributes的可修改性、可升级性、可测试性等nonruntime属性需要重点掌握的具体技术;

(4)学习AJAX等技术,采用敏捷迭代方法,对应用界面进行重新设计和开发,分析其对上述QualityAttributes的影响(可选做);

(5)讲解AOP、IOC、MVC等概念,并分析其对QualityAttributes的影响;

(6)检查代码,在实际编码中运用AOP、IOC、MVC等概念(可选做);

(7)评审会议;

(8)反思会议针对分布式机群监管系统,画出:

(1)developmentview;

(2)ExecutionArchitecture视图;

执行架构

Sprint56(1)项目总结、课程归纳;

(2)总结常见的架构模式;

(3)项目得失最终软件产品

参考文献:

[1] 唐涌, 马振勇, 张道林. 全球化团队的敏捷开发模式[J]. 东华理工大学学报(社会科学版), 2014, 33(1): 87-93.

[2] 季铁, 谢琪, 陈宪涛. 将以用户为中心引入敏捷开发的方法探究[J]. 包装工程, 2013, 34(6): 50-54.

[3] 荣国平, 刘天宇, 谢明娟, 等. 嵌入式系统开发中敏捷方法的应用研究综述[J]. 软件学报, 2014, 25(2): 267-283.

[4] 田晓盼. 基于敏捷开发的移动APP用户体验设计研究[D]. 上海: 华东理工大学, 2015.

[5] 管林挺, 顾沈明. 基于敏捷软件开发的软件工程教学研究[J]. 计算机时代, 2009(8): 45-46.

[6] 朴勇. 敏捷过程在软件工程课程中的教学实践[J]. 计算机教育, 2015(24): 78-80.

[7] 白鱼秀, 郑欢欢. 敏捷开发在软件工程实践课程中的应用[J]. 计算机时代, 2017(1): 85-86.

[8] 顾家铭. 敏捷开发在物联网实践教学中的探索[J]. 软件导刊(教育技术版), 2016, 15(4): 19-21.

[9] 肖小聪, 曹步清, 龚波. 基于敏捷开发的数据库系统课程设计教学研究与实践[J]. 当代教育理论与实践, 2016, 8(1): 37-39.

(编辑:孙怡铭)

敏捷开发论文范文结:

关于本文可作为相关专业敏捷开发论文写作研究的大学硕士与本科毕业论文敏捷开发论文开题报告范文和职称论文参考文献资料。

1、西部大开发杂志社

2、房地产开发和经营论文

3、石油勘探和开发期刊

4、西部大开发杂志

5、开发杂志社