软件工程学术论文(2)
软件工程学术论文篇二
软件工程综合实训软件过程初探
摘要:软件工程综合实训应采用迭代的软件开发过程。基于实训课程目的的分析,提出一个为期20周、分6次迭代的实训模型。学生以小组为单位开展实践,分别任组长、开发经理、计划经理、测试经理及技术支持经理等角色,每完成两次迭代交换角色一次。实训中开展业务分析、需求、分析设计、实现、测试、部署、团队管理、计划管理、配置管理及环境支撑等领域的约30种活动,考核分迭代的考核和角色考核两种。
关键词:软件工程;综合实践;软件过程;迭代开发
为了提高软件工程人才培养的水平,增强学生的实践能力,文献[1]基于建构主义认知学说提出了一种创新的人才培养模式。该培养模式的特点是在第6—7学期引入长周期的综合实训。为便于实施,该综合实训可按学期分成两段。其中第6学期的实训为期20周,如何开展全面的软件工程过程实践,是本文要探讨的对象。此实训将部分原在课堂讲授的理论课贯穿在实训中讲解,并要求学生以小组为单位完成软件开发项目,从而理解和掌握软件开发过程与技术。为有效开展此实训,本文依据现有软件过程理论和经验,对实训中的软件过程进行探讨。
1概念与研究的必要性
软件开发过程是指在工业化环境(如软件公司、大型软件开发团队)开发软件的有先后顺序的一系列活动。它是将各种软件技术组织在一起的粘合剂,是合理高效开发软件产品的保证[2]。对软件过程的描述,往往包括过程模型、活动、角色、制品等方面。
软件工程综合实训课程的目的是为了让学生熟悉软件开发过程,掌握软件开发技术,增强实际动手能力。它与实际软件开发有以下几点不同:
1) 目标不同。前者以培养学生为目标,后者以生产软件为目标。
2) 实践主体不同。前者为学生,后者为工作者。
3) 环境不同。前者在学校的模拟环境进行,后者处于具体的软件开发环境。
这意味着实训教学中应该采用接近实际的软件开发过程,但又不能完全照搬实际过程。这是我们必须探讨综合实训软件开发过程的原因。以下从软件开发过程模型、过程角色、主要活动及对学生的考核等几方面对软件工程综合实训的软件开发过程进行讨论。
2综合实训的软件过程模型
历史上,出现过多种软件过程模型,但大致可分为线性模型和迭代模型两类。线性模型也称瀑布模型,已被实践证实不能适应需求变化的场景。迭代模型认为软件开发是一个反复的过程,比较符合软件复杂、易变的本质,是当今软件开发的主流思想。
在考虑实训教学软件过程模型的选取时,应以简单易行、便于软件技术学习、便于软件过程理解为出发点。单从简单易行的角度,采用瀑布模型比较有吸引力。瀑布模型的步骤和章法清晰,教学组织方便。但是,如果使用瀑布模型,对迭代过程的介绍只能停留在口头上,学生无法从实践中领会这一重要的过程思想。瀑布模型是一次性完成需求描述,然后做全面
设计。这不利于由浅入深、循序渐进地掌握软件架构、设计和编码方面的技术。如果采用迭代式模型,虽会令实训的组织和管理变得复杂,但既可以领会瀑布模型的章法,也可以克服瀑布模型的弊端。对于本文所针对的长达一个学期的综合实训,其教学目标是多维和综合的,既要在过程中传授显性知识,也要通过过程组织和实践指导传递隐性知识。如采用瀑布模型,会将开发过程理想化,而使很多隐性知识和实践经验难以传播。因此长周期的综合实训采用迭代式过程模型更合理。
按照有关迭代开发经验[3],对于小型项目,以3周为一次迭代较合适。我们决定将20周的实训分为开始1周、结束1周、中间6次迭代18周。各次迭代的目标如表1所示。
表中,迭代1的任务是发掘和初步表述系统的主要需求,并设计系统原型;迭代2要完成系统的主要功能,约占全部功能的30%~40%;迭代3完成系统的全部功能;迭代4对系统架构进行优化,增加业务逻辑层;迭代5进一步优化系统架构,增加数据读写层;跌代6使用现有框架对系统进行重构。
在实际的软件开发过程中,早期迭代要着重于影响架构的功能和性能需求的实现,从而一开始就为系统选择合理的架构。但在实训教学中,按由浅入深的教学规律,在学生具备一定的开发经验后引入架构设计知识。因此,前几次迭代较少涉及架构设计的细节,所完成的软件在架构方面是不成熟的。在后几次迭代中,通过对代码的重构逐渐完成软件架构的优化,从而让学生牢牢树立架构设计的理念。这是实训软件过程与实际软件过程的区别。
上述各次迭代的目标,也是系统开发的里程碑。教师检查各次迭代提交制品的同时,也考核了学生团队的成绩。
3综合实训过程中的角色
基于文献[4]及文献[5]的思想,软件工程综合实训学生团队应设置对等角色。即每个小组成员担任一种角色,负责一个方面的工作,同时又是其他成员所负责工作的参与者。这既是实际开发团队的做法,也最适合学生的学习。
考虑到项目规模较小,实训时间较长,一个小组人数不宜过多。以5人一组,分别扮演组长、开发经理、计划经理、测试经理、技术支持经理等角色,各角色职责主要为[4]:
1) 组长:负责小组建设,让小组成员有共同的目标和项目愿景,激励士气,维持纪律,安排任务,主持每周小组例会、成员互评等。
2) 开发经理:主持小组开发工作,包括需求、分析与设计、实现等过程。
3) 计划经理:负责带领小组制订项目计划和迭代计划,督促各成员按要求完成工作日志,制订项目周计划,整理项目周报,对计划进行跟踪,在例会或计划会议上通报项目进度。
4) 测试经理:负责测试计划的制订,编写测试用例,组织测试实施及管理,组织每日集成测试。
5) 技术支持经理:组织执行配置管理、变更控制、数据库管理及风险管理,培训本组成员正确使用工具软件,督促每日代码签入、签出。
上述角色职责涉及的各种活动,详见第4节说明。指导教师在实训中的角色是代表客户方提出对系统的要求,同时也是学生开发活动的指导者和监督者。
在实际的软件开发过程中,团队成员的角色在一个项目中是固定的。但在实训过程中,为了让学生得到更全面的训练,可规定每两次迭代交换角色一次。这样在整个实训中,每人都可以担任三种不同的角色。这是实训过程不同于实际过程的地方。
4综合实训过程的主要活动及制品
依据文献[4]和文献[6],将学生在综合实训中的活动领域分为两大类,一类是核心开发域,包括业务分析、需求、分析与设计、实现、测试、部署等;一类是核心支持域,包括团队管理、计划管理、配置管理、环境支撑等。各活动域的活动种类、制品及负责角色如表2所示,共有约30种活动。
上述活动涉及很多学生尚不了解的知识。对于其中适合讲授的显性知识,由专题主讲老师在过程中集中讲授;对于可以通过实践过程习得的隐性知识,通过实训指导书对有关活动的规范和引导,让学生在活
动中领悟。需要集中讲授的知识可以分成以下几个模块:
1) 项目辅导。介绍有关小组建设、小组沟通、工作理念、计划管理等方面的知识,对开发过程的纪
律、工作程序、会议等作具体的指导。
2) 软件开发过程。主要介绍软件开发统一过程(RUP),包括迭代开发方法,各种开发活动、角色及制品的含义,配置管理及风险管理等。
3) 数据库管理。结合项目和实训环境指导学生设计和管理大型关系型数据库。
4) 软件测试。结合项目介绍各种测试活动的要求、内容和组织实施办法。
5) 系统分析与设计。介绍面向对象的可视化建模方法、软件架构设计、模式应用等方面的知识。
6) 程序设计技术。介绍完成项目所需要的程序设计技术。包括Web应用开发、多层体系架构的实现、测试驱动的开发、应用程序框架设计与应用等内容。
在开展项目过程中,讲授也是重要的环节,这也是本实训过程与实际过程的不同之处。
5考核方式
作为一项教学活动,必须对学生学习情况进行考核并给出成绩。由于该实训长达一学期,理论课学时较多,所对应的学分也较多。如果采用一次性考核,显然操作难度很大,也不利于在过程中发现问题,激励学生。因此,本实训最适合分阶段考核,即对每次迭代进行考核,成绩由三部分组成:一是本次迭代过程有关理论知识掌握,占40%,采用笔试方式考核;二是工作成果,占30%,以测试迭代产生的结果为依据;三是工作表现,占30%,通过统计考勤、学生互评及老师评价得到。每两次迭代完成,学生交换角色前,要求每位学生提交所担任角色工作的总结报告,作为单独的角色考核。由于角色是任选的,此考核学分可作为选修学分记入成绩表。
6结语
由于实训与实际软件开发不同,实训软件过程不能照搬实际开发过程。为了与当代流行的软件开发过程一致,也为了能循序渐进地教学,在实训中选择迭代式开发模型。项目小组的成员依次承担多种角色,并产生相应的制品。实训的考核以迭代为单位进行。按照这样的过程开展本文所述约30项实训活动,必将提高学生对软件工程知识的认识和实际的动手能力。
参考文献:
[1] 郑大鹏,林国璋,张克军. 一种创新的独立学院软件专业人才培养模式[J]. 计算机教育,2010(8):1-3.
[2] Roger S. Pressman. 软件工程—实践者的研究方法[M]. 4版. 北京:机械工业出版社,1999:22-49.
[3] Craig Larman. UML和模式应用[M]. 3版. 北京:机械工业出版社,2008:13-20.
[4] Watts S. Humphrey. 小组软件开发过程[M]. 北京:人民邮电出版社,2000:163-225.
[5] 微软公司. MSF Team Model v.3.1[EB/OL]. [2010-11-06].
[6] Ivar Jacobson,Grady Booch,James Rumbaugh. 统一软件开发过程[M]. 北京:机械工业出版社,2002:3-11.
看了“软件工程学术论文”的人还看: