基于就业的软件工程课程教学改革
2014-03-29李小荣疏志年朱爱国
李小荣 疏志年 朱爱国
(1 巢湖学院,安徽 巢湖 238000)(2 苏州风云科技集团,江苏 苏州 215000)
1 引言
软件工程是一门旨在生产无故障、及时交付的、在预算之内的和满足用户需求的软件的学科[1],其理论教学、实验操作、课程设计等涉及多门专业课程知识,有助于提高学生的实践能力、沟通技能、理解及表达能力、文档撰写能力,又可初步培养学生的规范工作能力和团队协作精神,并对学生的创新意识、工程思维能力等综合应用能力和素质培养起到重要作用,对校企过渡有很好的促进作用[2]。近年来大学生毕业人数节节攀升,每年都在刷新 “史上最难就业季”,2013年高校毕业生699万人,2014年727万人,“毕业即失业”。与此同时,我国在2012年实现软件业务收入2.48万亿元,2013年达3.06万亿元,相当多的软件企业订单充裕,人才缺乏[3]。企业“招聘难”,高校“就业难”。其实,高校、企业和学生三方的愿望并不矛盾,都希望学校培养出符合社会需要的学生。
2 《软件工程》课程的特点
2.1 教学内容较抽象
软件是由脑力劳动生成的逻辑产品,具有抽象性、无形性、动态性。指导软件开发和管理的软件工程知识更为抽象,其所讲解的原理(如:软件设计应遵循的原理等)、方法(如:面向数据流的设计方法)和技术(如:各类测试技术)位于具体项目之上,是跨具体项目、跨语言、跨平台、跨国界的。
2.2 课程综合性强
《软件工程》课程横跨多个领域,如:计算机科学与技术,辅助建模和算法优化的数学,估算项目规模、成效分析的经济学,有助于项目监控、配置管理、质量管理等的管理学等;就其指导的具体的某软件而言,又需要用到计算机领域下的计算机语言、数据结构、数据库原理、算法、动态网站设计、网页制作、软件文档写作、软件测试等多门专业课程的有机融合和综合应用。因此,《软件工程》课程具有先天的无法简化的复杂度和困难性。
2.3 课程实践性强
学生很难靠老师课堂讲解或自学理论原理就能学会如何开发一个实际的软件,其所讲解的知识,如:系统成本的预算、数据接口的设计、数据库代码编号的设计、各类软件测试方法等,都需要在实际项目的“动手做”和“做中学”,在失败或成功中去体会和掌握。
2.4 内容更新快
信息化社会中信息技术发展日新月异,软件产业正加快向网络化、服务化、体系化、融合化方向发展,云计算、物联网、移动互联网、大数据等新技术新业态、新模式迅速兴起,商业模式、服务模式不断创新,企业的信息化规划在不断调整,指导软件开发和维护的软件开发方法、开发工具、成功经验和项目失败的启示在不断的积累和更新换代[3]。
2.5 对教师要求高
首先,教师对软件工程本身要有深刻的理解,且需要有一定的软件开发经验,最好在授课同时具备项目和工程背景,这样的教师上课才有可能讲解生动,激发学生的兴趣[4]。其次,这门课程学科跨度大,综合性强,所涉知识面广,实践时基本上要用到大部分所学习到的所有专业课程,要求上课教师熟悉并较好地实现所有相关课程知识的具体应用是较难的。
2.6 对学生就业影响大
软件工程的应用性很强,其理论及实验课的学习对培养学生的工程化系统化的思维能力、沟通、理解和表达能力、分析与解决问题能力、设计能力、团队协作能力、组织协调能力、实践能力、创新与发展能力、综合应用能力及项目的开发与管理能力起到重要作用,初步培养学生的职业素质,为将来从事计算机相关工作打下坚实的基础[2]。
3 《软件工程》课程的现状
3.1 教学模式选用不当
因国家对高校学科教育只有培养目标方面的抽象描述,并未制定统一标准,故高校大多是根据专业进行通用性教育,并侧重于理论教学,而无法结合企业实际需要的技能和企业文化进行针对性教育[5]。就软件工程课程而言,高校侧重于传授学生专业技术基础知识,重视方法论与思辨能力的培养;企业则更看重工程项目经验,在某个领域能上手做事情,要求员工具备良好的职业素质和团队协作精神。
3.2 教材滞后
新的软件开发思想、开发方法、辅助工具等方面的知识,由于学生教材版本更新的相对滞后而无法尽快体现在学生教材中,这样往往导致学生学习的课本知识无法满足当前产业界的需求,且学生也会为此认为课本知识无用而渐失学习激情,导致课堂教学效果欠佳[6]。
3.3 教学内容庞杂、抽象
软件工程的应用横跨多个领域,集计算机诸多专业课的应用于一体,由指导计算机软件开发和维护的10大知识域共同组成,其研究的内容非常庞杂,复杂度非常高。软件工程中指导软件开发和运维的知识和技术本身就比较抽象,如数据流图的制作,软件结构图的确定等,无法仅通过书本中有限的案例和课堂教学来获得,需要在具体项目调研和资料分析中提炼各组成元素,在成功或失败的项目参与中领悟,于大量的软件开发中掌握和熟悉。
3.4 理论教学和实践相分离,学生难以融会贯通
受传统教学模式、教学目标和教学课时等多因素影响,诸多高校专业课程教学方式采取的多是理论教学和实践过程分开的教学方式,两者相互独立进行。软件工程教材各章节采用案例都相对独立,缺少整体性、系统性和实用性,所指导的软件亦是抽象无形。软件是一个整体,软件开发的方法、工具等难以体现在某单个软件中,教师只在课堂有限零散案例中演示各种原理、方法等,学生无法体会其深层含义和其对实践的指导作用,就难以在实践中用理论知识有效指导和约束实践活动,总结经验并提升自身实践能力和理论水平。其次,软件工程课程实验教学所需系统开发是对多门专业课程的灵活运用,对学生要求较高,故组织学生编写软件项目相关文档成了主要环节,以小组为单位的项目开发要求也流于形式,而对学生真正从事软件开发工作时最需要的工程能力和职业素质的训练重视不够。因此,如何开展软件工程的实验教学,培养学生工程化系统化软件开发能力,有效促进就业一直是个问题。
3.5 考核手段无法真实反映学生对知识的掌握情况
目前,有些高校为统一教务管理及方便教学材料的存取,在学生成绩管理上简化操作,如:各科考核形式统一为平时分加期末卷面考试检验学生对课本知识的掌握程度。考核形式往往会影响到教师的教学计划和引导学生的学习方式,此种形式不够体现出软件工程课程实践能力培养的重要性,对教师的教学水平和学生的学习能力评价不够系统全面客观,不利于教、学、用三者的统一,由此生成的成绩流于形式,没有具体的实际意义。
4 策略
为响应国家卓越人才培养计划,适应新就业形式,为避免供求脱节扩大化,最大程度上保证教、学、用三者的统一,从而实现高校、企业、学生多赢,现对就业影响最大的软件工程课程,提出以下教学改革策略。
4.1 基于就业、面向岗位、校企共建课程
软件工程课程内容更新快、实用性强、对就业影响大,因此在设置课程时,要与市场需求充分结合以有效保证课程体系的针对性、先进性、权威性、科学性、实用性、有效性、系统性等。在设置课程时,要与市场需求充分结合以避免闭门造车,要加强与大型IT企业的合作,每年定期开展企业调研、在职人员的问卷调查和毕业生回访以了解行业最新动向,根据反馈结果和企业岗位要求,参照国家职业资格标准和相关认证考试标准,及时将新知识、新技术、新框架、新开发工具、新标准等纳入课程体系,并由学校教师,行业专家、一线软件工程师共同调整和确定教学内容,课程标准、授课计划、实训案例。
4.2 “基于工作任务的教学情境”课堂教学
为更好地培养学生的工程化能力,在教学过程设计中,宜采用项目教学案例教学的策略和“基于工作任务的教学情境”教学思想。这种教学模式将教学内容按岗位任务划分为若干个相对独立的教学模块,每个模块的教学首先由老师从自己参与过的项目中精选适当案例导入教学,提出本模块的学习的理论及要完成的工作任务,让学生知道为更好的开发和管理软件,本阶段要做什么以及怎么样去做,在实际案例的剖析中让学生实现从抽象知识到实际应用的无缝衔接;其次,教师提出阶段性的问题,引导学生参与讨论和交流,提出解决问题的诸多方案、实施条件及改进建议,阐述自己的观点和看法,并由教师进行各种方案的对比分析和点评,提出解决问题的方法,以开放的活跃的课堂气氛中充分调动学生的积极性、创造性和思考问题解决问题的能力,提升学习成就感;再次,进行知识的拓展,展开讲解此案例没有用到但本阶段相关的其它知识点,拓展学生知识面;最后,布置任务,让学生用学到的知识去完成所在团队本阶段的工作,目的是为了加深学生对理论知识的理解和应用,较真实的体验就业后真实项目开发管理的流程。
4.3 以项目为主导的实践教学
软件工程实践课是对软件工程理论知识的具体综合应用,使学生在分析和解决问题、软件设计及实现、资料的获取和整合、文档撰写和团队协作等方面得到综合的训练,教师在课时许可的条件下,选择单元实践、课程设计、虚拟委托性实训和企业实训。实践课程不仅仅是参考教材书写实验报告或在网上下载某虚拟系统修修改改,实践内容可以是忠于市场需求的,最好由实验课指导教师参与研发的规模适中的真实系统。由教师按学号序或随机安排每6~8位学生为一个团队进行项目开发(注:不建议学生自由组队,以避免出现少数人包办全部工作的情况),让学生在项目的不同阶段承担不同的角色,如:项目经理、分析员、设计员、编程员、测试员、维护员等,负责此阶段相关任务,随着项目开发过程的推进,实现角色的有序变化,让学生在参与实践的同时亲身体会到项目中每一个角色责任的重要性,体会项目团体开发与语言课个人编程的区别,使在校学生能够体会和适应软件企业对人才的需求,帮助学生顺利地转型为适应现在就业新形势下的职业化人才。
4.4 将职业资格认证内容嵌入教学
为积极响应《国家中长期教育改革和发展规划纲要(2010—2020年)》和《国家中长期人才发展规划纲要(2010-2020年)》中对高技能人才与工程技术人才培养的要求,也为更一步提高学生就业时的竞争力,高校可参考职业院校“积极推进学历证书和职业资格证书‘双证书’制度,推进职业学校专业课程内容和职业标准相衔接”,通过内容整合的方式将国家认可的计算机相关职业资格认证内容(如软考中的模块独立性、数据流图的分层次的实现及注意事项、软件设计中的启发式规则、ER图和关系模式的综合应用、UML建模等)嵌入软件工程课程教学内容中。
4.5 丰富教学资源库
由学校出资购买大量具有自主版权的案例、开发文档、视频等资源,由课题组创建高度共享的教学资源库,包括:项目案例资源库、软件开发工具、软件开发工具学习网络资源库、软件工程习题库和在线交流系统,在此基础上建立开放灵活的教育资源公共服务平台,所有资源库免费开放供学生学习和参考,促进学生学习和师生交流。学校应营造一个适合软件工程课程实践项目的软件工程环境,提供软件开发所需要的相关硬件和软件,软件实验室所需提供的软件有:软件项目管理软件、综合软件环境、数据库管理软件、软件分析、测试和验证工具软件、中间件和构件开发相关软件、基于Agent的软件开发工具等。
4.6 加强师资队伍建设
目前,高校多以学历、职称的比例来衡量师资队伍水平,故高校评价教师时侧重于教师的学术研究(如:论文数量、课题数量等),而《软件工程》课程具有很强的实践性,需要教师具有较强的专业实践知识、工程实践经验和操作能力。为建设适应软件工程实践型人才培养需求的师资队伍,高校必须逐步改革教师水平评价方法,促进技能型人才评价多元化,评价标准向工程技术能力和产学合作能力转变,改变传统单一的培养方式,建立立体化,全方位的教师培养模式,实现高校学术及企业应用的良好接口。
(1)加大高校“双师型”教师培养培训力度,支持教师到国内外著名大学进修和学术访问,鼓励专职实验教师每年都要到合作企业挂职锻炼一段时间,参与企业的真实项目,以便掌握行业动态及最新的前沿技术。
(2)每年聘请企业内具有较丰富开发工作经验,较高业务水平,较强组织协调能力的一线专家或技术骨干承担实践课程的教学任务,并指导学生顶岗实习和毕业设计等。
(3)聘用、评价、晋升人才的标准从学术型方向向工程实践型方向转变。
4.7 改革考核方式
采用 “理论课堂+上机实验+综合型课程设计+期末卷面成绩”相结合的综合考核方式,强调理论知识学习和团队开发能力并重,鼓励学生积极进行思考和做中练练中学。完善成绩考核体系有利于形成技能型和工程型人才培养的方向,引导学生树立正确的学习观念,促进学生对软件工程知识的学习和软件开发能力的提升,提高学生的应用能力和创新能力,为就业打下良好基础。
5 结语
现在信息技术发展日新月异,软件应用深入各行各业,改变了个人生活方式,企业生产和管理方式、国家和社会的动作方式,影响着世界政治和经济等格局剧烈变化[7],指导软件工程化规范化开发和维护的软件工程课程的重要性不言而喻,如何顺应时代要求进行高校软件工程课程的改革,缩短高校人才培养的效果与市场需求之间的偏离,实现国家、高校、企业和学生的多赢非常重要[3]。《软件工程》课程对培养学生的工程思维能力、创新能力、团队合作能力和职业素养起到重要作用,是学生实现角色转换的重要桥梁,软件工程教学改革的探索之路没有终点,只有因时因地扩充和再完善。
[1]吴洁明.软件工程实例教程[M].北京:清华大学出版社,2010.
[2]李彤,赵娜.基于 CDIO 的软件工程国家精品课程建设[J].计算机教育,2012,(1):14-19.
[3]许丽萍.2013 年软件产业发展展望[J].上海信息化,2013,(2):52-54.
[4]蓝贞雄,钟智,梁春贤.软件工程教学模式的研究与实践[J].广西师范学院学报(自然科学版),2013,(2):117-119+124.
[5]郑光贵,杨欣,秦宗槐,等.我国职业教育标准制定者、实施者及评价者的角色错位问题研究[J].安徽商贸职业技术学院学报(社会科学版),2013,(2):52-59.
[6]赵业清.“软件工程”课程教学改革探索[J].中国电力教育,2013,(14):85-86.
[7]赵衍.互联网时代的信息安全威胁 个人、组织与社会[M].北京:企业管理出版社,2013.