面向卓越计划的软件工程课程设计

2019-12-19 06:31曹晓鹏
计算机教育 2019年11期
关键词:卓越文档课程设计

闫 波,曹晓鹏

(北京理工大学 计算机学院,北京 100089)

0 引言

卓越计划,全称卓越工程师教育培养计划,是教育部贯彻落实《国家中长期教育改革和发展规划纲要(2010—2020年)》和《国家中长期人才发展规划纲要(2010—2020年)》的重大改革项目,也是促进我国由工程教育大国迈向工程教育强国的重大举措,旨在培养造就一大批创新能力强、适应经济社会发展需要的高质量各类型工程技术人才,为国家走新型工业化发展道路、建设创新型国家和人才强国战略服务,对促进高等教育面向社会需求培养人才、全面提高工程教育人才培养质量具有十分重要的示范和引导[1]。

卓越计划具有3个特点:①行业企业深度参与培养过程;②高校按通用标准和行业标准培养工程人才;③强化培养学生的工程能力和创新能力[2]。

软件工程学科所涉及的内容十分广泛,包含软件生命周期各个阶段所需要的知识、方法和工具。软件工程不局限在理论之上,更重要在实践上,良好的软件工程实践能够帮助软件组织协调团队,运用有限的资源,遵守已定义的软件工程规范,通过一系列可复用的、有效的方法,在规定的时间内达到预先设定的目标[3]。

软件工程课程设计是面向计算机科学与技术专业和软件工程专业高年级一门必修课,旨在通过实际软件项目培养学生的需求分析和系统设计能力,并推广于软件生命周期全过程。相对于其他课程,该课程具有实践性强、与计算机业界发展贴合紧密等特点。学生基于实际项目,完成软件的分析和设计,严格遵照文档规范,撰写必要的项目工程文档(包括需求文档和设计文档)。在实践的过程中,使学生学以致用,巩固软件工程课程的知识,培养软件研发工程化的意识和能力,掌握常用的软件项目生命周期过程,深入理解和掌握软件工程中需求分析和系统设计的过程与方法,为学生进一步地学习及走向实际工作岗位打下一个良好的工程基础。

卓越计划强调按照行业标准和企业标准培养学生,强调培养具有一定创新能力的优秀工程师,满足社会要求和企业要求,强调实践能力、工程能力和创新能力的培养[4]。软件工程课程设计与卓越计划要求具有良好的结合点,是北京理工大学计算机学院最早入选卓越计划的课程之一。各个行业的优秀工程师教育规则不一样,有相应的行业特点。面向卓越计划的软件工程课程设计应具有以下特点。

(1)实践性。这是由软件工程的自身性质决定的,面向卓越计划的软件工程课程设计有很高的实践要求。

(2)工程意识和团队协作。软件项目开发有很强的工程特性,通过课程培养学生良好的工程意识,遵守软件项目开发和管理规范。当前企业级软件开发都是基于团队合作,要求软件工程师具备良好的协调和沟通能力。

(3)自学能力。计算机技术快速发展且广泛应用于各行业,软件工程师只有不断更新自己的技能才能跟得上发展。

(4)创新意识和能力。大数据、物联网、区块链等计算机技术的发展要求软件工程师要具有强烈的创新意识,发挥其创造性和主观能动性。

在目前的软件工程课程设计中,普遍存在学生参与性不强、案例与实践脱节、注重个人主义忽略团队配合、技术滞后、文档不规范、评分标准不一致等问题,针对这些问题,围绕卓越计划的培养目标,笔者提出了面向卓越计划的软件工程课程设计方案。

1 当前软件工程课程设计教学和实践环节存在的问题

1.1 学生参与性不强

当前,高校教师偏重学术研究,注重传授理论知识,在课程设计中,只是适当地增加一些项目开发的案例,目的是对课堂上理论知识进行验证。学生缺乏对实际工程项目直观的认识,认识不到软件工程的意义和价值所在,感觉课程枯燥,缺乏学习的兴趣,学生的参与性不强,这是软件工程类课程普遍存在的问题。

1.2 案例与实践脱节

在软件工程课程设计中,案例和实践脱节的现象往往非常严重。在学习实践过程中,学生难以验证所学到的理论和技术方法,理论与实践不同步。大多数软件工程课程设计不能完全反映软件工程理论,或者验证涉及的理论相对较少且相对简单。教学过程中教材的大部分理论内容都比较抽象,而课程设计只是让学生编写一些设计报告。所以,即使有丰富研发经验的教师,有再多的案例介绍,但对于学生而言,对软件工程课程的实际掌握基本上没有多大帮助。学生只是完成了一项任务,如何在实际工作中使用还不得而知,教学和实验的效果难以使人满意、有效性得不到保障,学生对于课程知识的掌握以及动手能力的培养和提高都得不到有效的保证。

1.3 注重个人主义忽略团队合作

学生的计算机基础参差不齐,在课程设计中,常常以小组的形式进行,课程设计成绩的评定只取决于最终课程设计的成果,这往往只是小组内个别学生的劳动成果,难以落实到所有学生,而目前业界所有的研发项目都需要明确的角色定位、协同完成,学生的团队协作能力得不到充分的培养。

1.4 技术滞后

软件工程课程设计内容陈旧。当前软件工程课程设计往往只是注重对课堂理论知识的验证和巩固。大多数的课程设计仅仅是局限于理论教学中所举范例的验证。计算机技术是一门高速发展的技术,很多内容更新换代的速度很快,而我们的课程设计提供给学生的案例大多内容陈旧,不能跟上计算机技术的发展速度[5]。

1.5 文档不规范

在软件工程课程设计中,学生往往只考虑编程能力的提高,忽略了文档的重要性,这种现象十分严重。学生没有实际参与过重大工程项目,难以了解文档的重要性。在实际软件工程项目当中,一般认为代码的工作量只占工程全部工作量的30%左右,与之相关的工程文档如需求分析文档、设计文档等,才是整个软件工程项目的核心所在。工程文档的书写比较枯燥,软件工程文档的多样、复杂和高质量给学生形成一个很高的门槛。尽管教师十分强调文档的重要性,但学生很难产生共鸣,依然认为文档无用。

1.6 评分标准不一致

软件工程课程设计的成绩评定因学校、因教师而异,课程设计考核方式不明、缺乏量化,尚未形成统一的评分标准。

2 面向卓越计划的软件工程课程设计改进方案

围绕卓越计划的培养要求,引入教师和企业联合培养机制,通过企业IT专家的讲座,让学生充分了解企业实际的人才需求;由教师与企业联合制定实践用的软件项目案例,有效解决案例与实践脱节和技术滞后等问题;优化课程设计流程,明确课程设计考核方式,让每个人在课程设计过程中都有自己的角色,从而解决了参与性不强、个人主义和评分标准不一致问题;通过企业案例的学习,学生可以接触到规范化的工程文档,引入软件生命周期过程中的工具和框架可以有效培养团队合作,量化工作,改善学生存在的文档不规范等问题。

2.1 进行一线公司的定制化讲座

外聘经验丰富的企业IT专家,介绍IT企业中软件研发过程中的人才选择、职业规划、团队组织、需求获取等实际的问题和经验,帮助学生拓宽思路和明确方向。外聘专家以企业实际案例为主进行讲座,使学生可以直观地了解到IT企业的人才需求和项目运作的方式,增加学生对业界的了解。每年的讲座内容由教师和外聘专家共同制订,从而保持先进性。

2.2 教师与企业联合制订实践用的软件项目案例

由教师与企业联合制订实践用的软件项目案例,案例来源于企业已经研发完成的实际软件项目。项目若涉及商业机密,需进行脱密改造,如精简项目案例当中的业务问题、强化软件工程的流程性等。项目应当能够通过严格的测试,并且在使用周期内运行良好。由教师和企业联合评估技术难度,使案例可以符合教学要求。企业项目伴随着相应的规范化开发文档,对学生进行规范化软件开发过程训练有很好的示范作用,由企业负责整理需求和设计文档,全部文档应该符合公用标准规范,比如CMM规范等。

2.3 优化课程设计流程

在软件工程的需求分析和设计过程中,学生需要具备计算机应用知识,能选择合适的技术手段,运用工程化的知识进行需求分析和系统设计,针对复杂的工程问题,能运用工具完成需求分析与建模和系统设计。通过流程优化来提高课程设计的合理性,以分组的形式来进行软件工程的实践活动,完成指导教师所分配的实际软件项目,学生应用软件工程中需求分析和设计的方法,以团队协作方式完成项目的需求分析和设计(目前课程设计只支持需求和设计阶段,后续会贯穿全过程),并提交规范的文档。

指导教师提供实践工程项目,学生分成小组协同完成项目的需求和设计工作,由小组组长分配任务协调工作,每周指导教师与学生面对面沟通项目实施情况,解决学生在项目需求和设计中存在的问题,小组内部以周例会或日例会形式沟通任务实施情况,协同推进项目的进展。通过每周与教师的沟通和研讨以及小组协作,完成工程任务同时培养沟通和交流的基本素养。在工程实践活动中,强调组长(项目经理)的职能,学生小组组长进行任务分配,组织项目的实施,协调组员之间的工作,通过每周的例会分配任务并检查完成情况,平衡进度和质量。通过每周小组与指导教师的交互,澄清问题、跟进问题的解决,小组成员在组长的带领下,分工协作完成项目需求分析和系统设计并完成文档的撰写。同时给组长赋予更大的权限,如匿名评价组员的工作,这样形成制衡机制,解决了“大锅饭”的问题,也使得成绩评价更全面。

在评分方面,教师严格实践软件需求和设计过程阶段的检查,根据学生在软件项目需求和设计的完成情况以及提交的综合大作业,并结合学生个人在实践中的参与程度和表现评定成绩。同时,引入评价工具,使衡量更为客观和量化。

2.4 使用工具与框架

软件开发工具是用来辅助软件生命周期过程的一系列专业工具。通常可以设计和实施工具以支持特定的软件工程方法,从而减轻手动管理的负担。熟练地使用软件开发的工具,在软件开发过程当中显得尤为重要,可以达到事半功倍的效果。目前针对课程设计引入业界常用的一些工具和框架。

需求管理工具的使用贯穿于整个项目周期,有效地促进团队沟通,帮助工程开发人员便捷地管理变更和评估变更可能带来的影响。Rational RequisitePro是一个功能强大,易于使用的集成需求管理产品,为软件工程生命周期的各个阶段提供了强大而便捷的信息查询、跟踪和管理功能[6]。

在系统设计阶段,设计工具可以帮助开发人员便捷地进行系统建模,典型的数据库设计工具如PowerDesigner,它可以为系统设计和开发的不同阶段提供数据库设计开发和应用开发[7],而原型工具(如Axure RP)可以实现专业的快速原型设计。Rose可以应用于面向对象的需求和设计全过程。

在团队协作和项目管理方面,业界有大量的优秀工具,如Microsoft Project是一个通用的项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本的计划、控制[8]。SVN(Subversion缩写)是一个用于共享信息的集中式系统,可以记录每次文件和目录的修改,允许获取以前版本的数据,以便可以检查所做的更改,如果更改不正确,只需取消更改即可[9]。Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Teambition是国内团队协作工具的倡导者,通过帮助团队轻松共享和讨论工作中的任务、文件、分享、日程等内容,让团队协作焕发无限可能。

在课程设计开始阶段,由教师和企业针对这些开发工具的使用对学生进行相关的培训,让学生可以在完成课程设计的不同阶段对相应开发工具进行实际上手,熟练掌握开发工具的使用。

3 结语

应对大数据时代对卓越软件工程师的需求,依据卓越计划的标准,结合软件工程课程设计的特点,软件工程课程设计改进方案可有效解决目前软件工程课程设计所存在的不足,培养学生的工程能力、沟通能力和团队协作能力,有利于高层次软件工程技术人才的培养。

猜你喜欢
卓越文档课程设计
“苏州园林:景致与情思”课程设计
浅谈Matlab与Word文档的应用接口
创优阳江 追求卓越
有人一声不吭向你扔了个文档
基于手机的微课程设计、开发与应用策略研究
从优秀到卓越门店需做好12项修炼(上)
以人为本 追求卓越——福州十中简介之一
A Study on the Application of Task—based Approach to English Vocabulary Teaching
Word文档 高效分合有高招
卓越之梦