欢迎来到学术参考网

软件开发类毕业设计中敏捷软件技术的应用

发布时间:2016-08-18 14:53

  提出了在软件开发类毕业设计中采用敏捷技术进行过程控制的方法,从实际效果中可以看出,这种方法较好地解决了软件开发类毕业设计中遇到的各种问题,能够有效提高软件开发类毕业设计的质量,使学生在毕业设计中得到充分的锻炼和提高。

 

  0 引言

 

  毕业设计是本科教学中非常重要的一个教学环节,是对学生所学知识的检验和总结,是培养学生独立分析和解决问题能力的重要手段,也是学生进入工作岗位前的最后一次实战演习;并且,它是本科教学水平评估指标体系的重要指标之一,是考核学校本科教学水平和质量的重要内容。

 

  软件开发是计算机专业毕业设计中一个重要组成部分。学生开发的软件质量直接反映出毕业设计质量,而指导教师的指导和监控对学生开发软件的质量高低有很大影响。本文首先介绍了软件类毕业设计的特点、遇到的问题及其原因分析,然后将敏捷软件开发技术应用于指导和监控软件类毕业设计,最后通过具体的实践对其进行总结。

 

  1 目前状况及问题

 

  1.1 软件开发类毕业设计的特点

 

  本科计算机专业毕业设计中,软件开发占很大比重。而软件开发类毕业设计与其他专业的毕业设计以及商业化软件开发又有很大不同,主要体现在:

 

  (1)设计的最终目的是要生成可运行的、实现一定功能的、错误率较低的实际软件产品,而不仅仅是提交一份文档报告。

 

  (2)设计小组成员分工合作,要将各人的成果整合,形成完整的软件;小组每个成员不是完全孤立的,每个人的工作都与其他人息息相关。

 

  (3)项目小组一般只包括一个人或几个人,人数较少,远少于一般商业化软件开发项目小组的人数。

 

  (4)小组成员没有足够的团队意识,没有足够的软件工程经验,一般没有作为一个团队的成员共同开发过软件产品。

 

  (5)项目开发过程不完全,编码的结束即意味着项目的结束。项目不要求有完整的工程化的分析和设计文档。

 

  (6)有些软件开发没有与商业项目挂钩,也就没有真实客户的需求对其进行功能和性能上的监控。

 

  1.2 遇到的问题及原因分析

 

  根据上面的特点可以看出,普通毕业设计的指导方式或是工程化的控制手段,并不能适应软件开发类毕业设计,最终会导致毕业设计质量低下,学生得不到真正锻炼。比较突出的问题主要表现在以下几个方面:

 

  (1)项目组成员各人任务不明确,能力参差不齐,并且有时没有充分地交流设计思想,最后导致软件各个功能模块无法有效整合。

 

  (2)项目需求因为各种原因不断改变,软件不断修改,最终完成的软件产品达不到设计要求。

 

  (3)编码开始后,软件的错误和缺陷不断涌现、不断累积,最终无法控制。

 

  这些问题的产生,固然与设计选题、学生能力、实验环境以及教师的指导力度分不开,最重要的还是与教师的指导和监控方式有关。应当采用恰当的指导和监控方式,最大化地促进学生能力的提高,最有效地根据各个学生的特点,推动学生逐步达到毕业设计软件质量和功能的要求。

 

软件开发类毕业设计中敏捷软件技术的应用


  2 敏捷软件开发技术的应用

 

  采用适当的指导和监控方式,实际就是要求教师对学生软件开发应用适当的软件过程模型,也就是软件开发的工程化控制手段。

 

  2.1 敏捷软件开发简介

 

  传统的软件工程方法中的架构设计与程序开发在时间上是先后分离的,这种分离常常导致一些脱离实际的设计和脱离设计构想的编程,导致最终软件开发的不理想甚至是失败。鉴于以上问题,敏捷软件开发技术应运而生。

 

  敏捷软件开发以交付而不是以构造为核心,它强调的是交付对客户有价值的软件,而不是用户需求中所描述的软件。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷软件开发方法提倡采用先进的技术和高水平的小型团队,并辅以人性化的管理,充分发挥软件开发者的才华,建立畅通的交流机制,使软件开发团队水平和软件质量共同提高。

 

  敏捷式开发采用适应性方法,而传统的软件工程学采用的是预测性方法。敏捷式开发是以人为主的,而传统的工程学是以过程为主的。二者的主要区别存在于它们对软件开发过程的描述中,也就是说,敏捷开发实现当前最需要的功能,然后根据变化来修正和改进;而传统软件工程学一开始就将软件的各种架构预测好,然后采用固定的过程来实现这种架构。软件开发中的变化是不可避免的(通常传统软件开发的失败主要原因就是不能很好适应这种不可预知的变化),因此就要找到一种新的方法能够更有效地适应变化,这其实也就是敏捷式开发方法所要达到的效果。

 

  可以看出,上述的敏捷软件开发的许多特点正是与软件开发类毕业设计的许多特点不谋而合,例如,小型的开发小组,适应性(适应不可预测变化)的开发机制,短期的交付(毕业设计一般都在半年甚至更短时间内完成软件的交付),充分发挥小组成员的特点,建立畅通的交流机制等等。因此,将敏捷开发思想引入毕业设计中的软件开发,不失为解决后者诸多问题的很好尝试。

 

  2.2 敏捷软件开发应用 敏捷软件开发技术包含若干的价值观、原则和实践方法。将其用于毕业设计的指导和监控,主要应包含如下原则的应用:

 

  2.2.1 增量式开发

 

  传统软件类毕业设计采用传统软件工程学指导方法,先进行需求分析,然后根据需求进行功能模块划分,接着开始编程。如果最初阶段不能很好地完成分析和设计任务,后面的软件开发将出现严重问题。

 

  而在敏捷软件中,采用的是增量式开发,对于难度较大的软件设计,不是一步吃透功能,而是逐步添加功能,在改进的过程中促进学生能力的提高。在笔者指导的一项毕业设计中,要求学生用Java编制网络实时通讯软件。采用增量式开发方法,先要求学生实现基本功能,即发送字符串到另外一台计算机,使用 Windows的超级终端作为接收机进行测试;接下来要求学生实现程序互相发送和接收字符信息;然后,实现聊天室的多人聊天的线程控制;进一步可以实现数据库存储登录用户信息,并进行验证;最后,实现其他功能,例如网络硬盘,文件传输等等。在开发过程中,增量式设计能够让学生逐步进入高层次的内容,而不是一开始就进行高难度的开发。并且,通过逐步修改代码,可以提高学生阅读代码和优化代码的能力,学生的编程水平得到很好的提高。

 

  2.2.2 可持续的开发速度

 

  敏捷开发技术不要求团队一开始就尽全力完成任务,而是尽量保持一种稳定的、可持续的开发速度;团队的成员必须始终保持旺盛的精力和警觉的思想。

 

  在很多毕业设计中,一开始学生就以极高的热情和全力以赴的状态去工作,然而随着进度的延缓,错误不断增多,以及越来越复杂的需求变化,学生的热情迅速减退,最终影响设计成果。因此,指导老师必须充分调动学生的积极性,又不能让学生的精力过早地消耗,要保持一个稳定的进度。

 

  2.2.3 简单

 

  敏捷软件开发方法采用最简单的方式实现当前最需要的功能。在毕业设计中,针对某一个功能,采用尽量简单的方式去实现,不需要考虑为了将来的功能而进行提前的准备。因为这种提前的准备往往会让学生考虑问题过多,反而忽略了当前最重要的内容。

 

  然而,简单并不代表着功能的缩减,当某些功能的实现成为必须的时候,敏捷软件开发方法采用在代码上改进的方式来完成,并且以此为机遇,充分进行反省,让学生在改进中得到进一步提高。

 

  2.2.4 结对编程

 

  结对编程是敏捷开发和极限编程(XP)的重要实践,它是指两个程序员结对使用同一台计算机完成编码——其中一位控制键盘并输入代码,另一位观察输入的代码并寻找着代码中的错误和可以改进的地方。这种方式能极大地促进知识在团队中的传播,并有效降低代码的错误率。

 

  在毕业设计中,根据学生的特点,采用结对编程方式,可以让学生充分交流,互补所短,互用所长,互相学习。例如,在网页制作类的软件开发中,ASP脚本编程人员和界面设计人员结对,能够充分利用二者的特点,将脚本程序和网页界面元素有机地结合起来,形成功能完善,界面美观的动态网页。

 

  2.2.5 适应改变

 

  敏捷开发的一个重要特点就是它能够很好地适应改变,并且欢迎改变。这里的改变主要是指功能需求方面的改变。而敏捷开发对改变的适应,主要是通过增量开发,持续交付以及不断地改进与反省来实现的。

 

  在毕业设计中,设计题目一经给出,主要方向不能变。然而选择题目的学生是变化的,个体能力有时候有很大差别,并且在开发中会碰到很多不能预知的技术问题。采用敏捷开发中的过程控制手段,可以有效地让毕业设计小组更好地应对各种变化,不会因为突发因素导致软件开发的失败。

 

  2.2.6 个体激励和交流

 

  毕业设计的重要目的是促进学生各方面能力的提高,采用的手段可以有很多。在敏捷设计中,强调个人能力在团队中的充分展示。把这种思想应用于毕业设计指导中,可以采取定期召开小型交流会议的方式,让每一个组员充分发挥自己的能力,以头脑风暴的形式对系统当前状态和改进方式进行畅所欲言的交谈。通过这种形式的交流,能够充分调动整个小组成员的积极性,及时发现系统开发过程中的各种问题,增强整个小组的凝聚力,有效提高学生的团队协作能力。

 

  2.2.7 反省

 

  好的团队并不只是埋头工作,他们会思考如何工作和为什么工作。在毕业设计指导过程中,指导教师应当在适当的时机提醒学生对开发工作中各项内容进行反省,让学生能够有机会去辨别可能或已经发生的错误。反省不仅仅是简单的思考过程,反省的后面应该紧跟着行动,学习是反省的行为,要能够将错误造成的危害尽早地阻止,并从中学习,以免同样错误的再次发生。

 

  2.2.8 其他原则

 

  敏捷软件开发技术还包含其他一些原则,在设计中包含了面向对象设计的一些基本原则,例如单一职责原则(SRP)、开放一封闭原则(OCP)等等。要将这些设计原则应用到具体的软件开发中,需要学生熟悉面向对象程序设计的相关概念和技术。

 

  将敏捷软件开发技术应用到毕业设计的指导过程中,需要指导教师本身对它有较为深刻的理解,并且勇于进行大胆的尝试一毕竟敏捷开发的很多实践是与传统软件工程学方法相悖的。指导教师可以先在某一门程序设计课的课程设计中采用这种思想,然后进行相应的调整,再将其应用于毕业设计的指导工作。

 

  3 结束语

 

  将敏捷软件开发技术应用于指导毕业设计,能够充分适应软件类毕业设计的特点。在实际采用这种方法对我校的两组毕业设计小组进行指导的过程中,可以看出,这两组同学在对语言工具和相关知识不是很熟悉的情况下,采用渐进的方式,逐步实现设计要求的功能,并且不断对代码进行改进,软件完成的质量比其他小组明显要高。毕业答辩中,小组成员能够很清晰地阐述其软件开发进程以及相关知识的学习过程。并且,小组成员通过毕业设计加深了交流,团队协作能力有了大幅度的提高,小组成员个人的精神面貌也有了较大的改变。

 

  作者:杨 健 张晓玲 周少云 来源:计算机时代 200710

上一篇:信息安全模式下的计算机软件开发和应用

下一篇:高职高专软件开发专业实训教学方法探索