软件工程在“软件开发设计实训”课程中的应用
笔者所在学院的软件工程系是成立于2005年的新专业,为校级特色专业。近年来,随着对软件工程特色专业建设进程的推进,课程体系日趋完善。针对软件工程学科具有理论多且实践性极强的特点,本系较大幅度地加大了实践类课程和环节所占的比例,“软件开发设计实训”便是其中很重要的一门实践课程。由于软件工程学科发展速度很快,在软件产业不断发展,全国对高素质的软件人才的需求量激增的形式下,迫切需要研究和探索实践类课程的教学模式,激发学生学习兴趣,以更有效的手段和方式提高教学和指导质量,为培养更加符合社会实际需要的软件开发人才打下坚实基础。在我校教改基金的资助下,依托软件工程教学团队,本文对将软件工程应用于“软件开发设计实训”课程的教学模式及主要措施进行探讨。
1 选择适当的软件工程过程
“软件开发设计实训”课程的主要目的是使学生学会用面向对象的设计方法设计实际系统。结合软件工程学科的发展和应用现状,软件开发过程主要采用rup(rational unified process,统一软件开发过程)的方式组织软件开发。rup是风险驱动的、基于use case(用例)技术的、以架构为中心的、迭代的、可配置的软件开发流程。
rup分为初始、精化、本文由论文联盟http://收集整理构造和交付四个阶段,各阶段涉及多种工作流【1】。www.133229.cOmrup的核心工作流主要包括:
需求捕获工作流:需求捕获通过对问题的理解和分析,确立问题涉及的信息、功能和系统行为,将用户需求精确化、完全化。需求的焦点主要在初始和精化阶段,在精化阶段后期,需求捕获的工作量大幅下降。
分析工作流:分析的主要工作开始于初始阶段的结尾,和需求一样是精化阶段的主要焦点。精化阶段的大部分活动是捕获需求,分析工作与需求捕获在很大程度上重叠。
设计工作流:设计的主要工作是位于精化阶段的最后部分和构造阶段的开始部分的主要建模活动。系统建模最初的焦点是需求和分析,在分析活动逐步完善后,建模的焦点开始转向设计。
实现工作流:实现(实施)是关于把设计模型转换成可执行代码的过程。从系统分析师或系统设计师的角度看,实现工作流的重点就是完成软件系统的可执行代码。实现工作流是构建阶段的焦点。
测试工作流:测试是一项相当主要的工作。测试工作流贯穿于软件开发的整个过程。它开始于软件开发的初始阶段,而细化阶段和构造阶段是测试的焦点。测试是为了找出程序中的错误与缺限,而不能证明程序无错。
rup就像一个元过程,通过对rup进行裁剪可以得到很多不同的开发过程,非常灵活,所以可以将其按本课程需要进行精简,从而把深奥的理论指导融入具体软件项目的开发设计中,让学生更加深切地体会到什么叫学以致用,消除畏难情绪,培养和增强在软件开发设计中自觉遵从软件工程思想的习惯。本课程使用的case(computer aided software engineering,计算机辅助软件工程)工具集采用sybase公司的powerdesigner。
2 将有价值的软件工程知识引入课堂,教学采用项目贯通案例
为让学生在中小规模的实训项目中也能体会到较大型项目通常会用到的一些软件工程技术,让本课程更有实用价值,教师需要对学生补充一些软件工程相关知识,包括:设计模式、架构设计、类的持久化以及数据库设计、面向对象实现以及文档的书写这四个方面。
为配合上述四个方面的软件工程相关知识的介绍,教师采取“项目驱动的案例教学”方法【2】,在课堂讲授中引入一个完整的、规模适中、难易适度的软件项目案例。该案例需要通俗易懂而又具有实际意义,涉及的应用领域应该是学生较为熟悉的,这样理解起来更为容易。以此案例完整的开发设计过程为主线,借助这个贯穿整个课程教学进程、文档齐全的完整案例来将软件项目开发设计过程中的各个环节串连起来,着重展现上述四个方面的知识运用,让学生熟悉和掌握软件开发设计的具体实施步骤和技术。
3 学生实践环节分小组按项目方式进行
由于在本实训课程之前学生已经学习过一门先导课程:“软件需求分析实践”,所以可以把学生仍然按照在“软件需求分析实践”课程中的各小组成员组成来进行项目分组,这样各小组便可将该课程中的最终成果——《软件需求分析规格说明书》作为本课程的起点来进行,需求捕获工作流便只需粗略进行。由于本课程侧重于软件开发过程的分析工作流和设计工作流,对实现工作流和测试工作流也只作粗略涉及。
每个项目小组通常为3到5人,分组时采用了优势互补的方式,注意合理搭配,尽量让每组各个成员具有不同的优势能力,并让其民主推选一名组长负责组内的组织和协调【3】。
教师的项目贯通案例教学分阶段间插在学生实践过程中,每介绍一个阶段的rup理论,就紧跟几次课的学生实践环节,如此交替进行,当教师的教学案例施教完毕,学生的项目也同步进行到最后阶段。
项目进行中模仿软件公司的例会形式,定期由项目小组长召开小组讨论会(如每周一次),对最近这段时间的项目进展情况和技术问题进行讨论。每个开发设计阶段结束时教师均要求各小组给出相应的文档,且每个阶段完毕要进行一个模拟的里程碑式的评审(教师参与作为评审团的一员)【4】。
教师还应在课程即将结束的最后课时中对各小组的项目完成情况及普遍存在的共性问题作一个分析总结,并让各小组组长总结本组项目完成的经验教训,以利于同学之间取长补短,活跃思维,提高分析总结问题的能力。
4 依托教学团队,理论及案例部分采用轮流授课法