时间:2023-07-02 09:21:57
序论:写作是一种深度的自我表达。它要求我们深入探索自己的思想和情感,挖掘那些隐藏在内心深处的真相,好投稿为您带来了七篇软件开发基础知识范文,愿它们成为您写作过程中的灵感催化剂,助力您的创作。
【关键词】 软件开发 技术
计算机技术的发展是日新月异的,特别是近年来,随着各行各业经济建设和社会发展,需要不同的软件和技术为经济社会发展服务。近年来,随着我国的各项技术的不足和发展程度不够,我们在此技术的基础上提出了更高的要求。我国的自主创新能力和软件开发创新能力发展不足是我国目前所面临的主要困境。这些技术创新阻碍禁锢了我国的社会发展。提高软件开发能力和投入产出效率是目前亟待解决的。特别是软件开发技术在我国发展面临着诸多技术阻碍和科研投入不足的问题,更加需要我们进行技术创新和技术发展。
软件开发成功与否关键在于,主要取决于我们对于其中主要矛盾和关键要素的掌控程度。软件开发过程中的关键性要素对于整个过程起着决定性作用,主要的要素有:计算机基础知识,自主创新能力,团队合作能力,运用能力。上述这几条是实现软件技术进步的关键要素。
一、计算机基础知识
计算机出现于1946年的美国宾夕法尼亚大学,出现之初主要是为了实现军方的联系和巩固国防的目的。随着计算机技术的发展和进步,他已经不仅仅局限于某个特定的领域,而是广泛的应用于社会生产和生活的方方面面,计算机技术在如今的发展已经处于中期阶段,许多计算机技术和软件技术已经相当先进,运行效率高,计算速度快的特征使得这些技术已经成为我国技术发展的主要依托。我国的计算机技术起步较晚,发展速度慢,自身的发展基础和实践经验都不够丰富。因此,我国的软件开发技术相对落后,需要借鉴发达国家的技术和软件开发资源作为我国计算机发展的基础和平台,实现我国技术的发展和进步。我们只有熟练的掌握了计算机基础知识,才能够在运用的基础上进行软件开发。计算机基础知识是经过实践的检验,并且在实际需要中不断地改进之后才最终形成的理论,包括操作系统,计算机资源开发系统和信息管理系统,信息处理系统等理论知识。这些主要的理论知识都是实现转变和创新的主要理论依据。
二、主创新能力
软件开发能力实际上主要取决于团队和群体的自主创新能力,自主创新能力是实现理论发展和进步的源泉。因此,只有具备了自主创新能力,才会在当前的环境下提出更多的疑问,并且能够应用全新的思维和方式来解决实践发展中出现的问题。我们只有通过这样的方式才会真正的促进技术的发展和进步。目前,我国的CPU技术依然处于落后阶段,中国国内自主开发的CPU处理效率低,运行慢。刚刚诞生就意味着即将被淘汰。可以看出,我国的技术创新动力和水平远远落后于世界。造成我国计算机技术落后的根本原因在于我国的自主创新能力低下,总是因循守旧,不能够自主的进行技术创新开发。
因此,加强自主创新能力,创建创新型国家是实现可持续发展的根本途径,软件开发领域的自主创新思维和能力将会引领世界范围内的变革和发展。自主创新能力实际上是一种非常规的视野和思维来解决实际中出现的问题,这样就为现实问题的解决增加了新的途径。
三、团队合作能力
技术共享与成果交流是实现发展和进步的一个重要因素,面对着庞大的计算机系统和复杂的软件难题,一个人的能力在这样庞大的任务面前显得微不足道。只有加强团队合作和交流,实现发展环节无障碍才会促进团队内部的成长和进步。面对复杂的软件开发问题,只有加强任务的分配和团队内部的交流沟通才会提升发展效率,少走弯路。
四、接受和运用能力
软件开发的速度越来越快,新产品也一直处于不停的更新换代之中,面对这些复杂的变化,我们作为软件开发专业工作者,就必须要具备解读和理解运用不同的外来技术的能力。
本文结合目前信息与计算科学专业的实际情况,对如何提高学生的软件开发能力进行探索与研究,以求能够在有限的教学时间内最大程度地提高学生的计算机实际应用水平及提升软件开发能力,从而培养社会适用型人才,拓宽就业口径。
关键词:
信息与计算科学专业;软件开发能力;实践教学;就业
1研究意义及问题分析
在认真分析就业市场发展的新形势下,高校数学院系迫切需要采取有效的措施去解决数学本科生的就业问题。切实做到专业设置与社会需求相对接,目前,从已毕业的数学专业的就业方向看,从事软件开发行业的人居多,而其中约有80%左右的学生是去市场上软件开发方向培训班培训过的,为了节省学生的时间和费用,数学类专业有必要设置具有特色软件开发方向课程模块,培养学生的软件开发能力。根据就业市场所需积极进行数学类专业软件开发方向人才培养的研究与实践。提高数学本科生的综合竞争力切实帮助学生找到合适的就业出路。信息与计算科学专业软件开发能力培养旨在培养具有软件开发背景的综合性数学人才;使得数学与计算机专业的有机结合,形成一套独具风格和特色的教育培养模式,给用人单位明确地显示数学类专业学生在从事软件开发时的优势。数学系的学生到软件企业中大多作软件设计与分析工作,这部分人才在软件开发行业紧缺,而计算机系的学生做程序员的居多,原因就在于数学系的学生分析推理能力、逻辑推理能力强,数学思想的建立比计算机系学生强,这是数学专业学生从事软件开发的优势,也是培养数学专业学生软件开发能力的意义所在。
2信息与计算科学专业特点与特色课程设置
信息与计算科学专业人才培养应该尊重数学学科教育的发展规律,强化学生数学基础,着眼于学生的就业,瞄准社会对数学类人才的规格要求,注重应用技能的训练与培养。在专业定位上,坚持:强化数学基础,兼顾专业类别,突出因材施教,培养综合能力的办学原则。根据就业市场所需积极调整专业设置,把办学规模和专业设置与市场接轨。2.1设定该专业软件开发方向人才培养的目标:学生不仅能进行数学理论研究,同时会运用计算机工具,更主要的是他们能将两者有机地结合起来,将理论与实际紧密结合,进行软件开发、信息管理与处理等。这是既有别于数学专业又有别于计算机专业的特色。突出数学专业学生的思维优势。
2.2加强师资队伍建设。采取“稳定、培养、引进”相结合的方法,培养一批既懂数学又懂计算机的教师队伍,为专业教育质量提供师资保障。
2.3理论教学培养学生计算思维和算法设计分析能力:通过开设数学分析、离散数学、高等代数、概率论与数理统计、数值分析、数学模型等课程,培养学生的计算思维,使学生具备建立数学模型和解决实际问题所必备的数学知识和抽象逻辑思维能力。数学上功底扎实,在软件编程上的优势尽显,项目的设计模式格外地优化,程序逻辑条理也格外地清晰。因为数学可以培养人的逻辑思维能力,而程序设计需要很强的逻辑思维能力。所以无论从事什么具有扎实的数学基础是必要的。
2.4构建合理的软件开发方向的课程群,培养计算机应用软件的开发能力:通过开设高级语言程序设计(C语言)、数据结构、面向对象程序设计(C++与Java)、算法设计和分析等课程,有针对性地培养学生掌握算法设计与分析的方法,使学生熟练掌握常用算法、掌握算法设计与分析的方法和步骤,通过开设数据库原理及应用、软件工程、数据库编程,加大学生综合系统设计开发,使学生掌握中小型软件系统的架构、算法分析和设计能力,掌握软件系统分析与设计的方式方法,提高学生综合系统编程能力。
3软件开发实践教学体系研究与实践
改变传统的教学模式,培养学生的实践能力。包括:与行业人员合作的教学方法、案例式教学、精讲多练、机房授课、项目式考核等。整合实践教学内容,探索基于学生就业竞争力的实践教学体系;加强和完善实践教学条件:包括专业实验室建设、长期稳定的校外实习基地建设。丰富实践教学内容。做到把课堂搬到企业去,把理论用在实际。针对目前软件开发方向应用广泛的语言,信息与计算科学专业重点开设C语言、C++、Java、软件工程具有适应市场的竞争力的课程。这些课程能很好的与就业市场对接。我院已经有合作的校外实习基地—达内科技培训机构大庆分部;哈尔滨承德培训基地。大一实践课程设置:19周至22周,实践课程以Java程序设计为列。校内60学时的Java基础教学,边教边练,随堂消化。使学生掌握Java语言的基础知识,熟悉Java类库中最主要的类,掌握和面向对象程序设计的基本原则和特点。“Java技能实习”通过几个Java小项目的开发,培养学生Java编程能力,加深学生对Java语言的基础知识和面向对象程序设计的理解;大二已有Java基础的学生去达内实校外训基地,由校外指导教师指导项目实战。做到校内校外的课程安排有机结合,不脱节。同时通过走访已经毕业的学生的工作单位,了解当下的就业形势。充分发挥信息与计算科学专业学生的专业能力。大三暑期,学生实训走出去,去一些公司实习,让学生体会到学有所用。为大四就业打下经验基础。
4结束语
针对信息与计算科学专业的特点,结合办学思想和培养目标,特设置了该专业的计算机类课程,调整了教学内容,将数学知识和数学思维融入软件编程,体现专业特色,改革了教学模式与考核方式,并注重培养和考核学生的实践创新能力。通过两年的教学实践表明,对于信息与计算科学专业计算机类课程的改革思路是行之有效的,激发了学生学习计算机类课程的兴趣,开发了学生的潜能,提高了学生的编程能力和解决实际问题的能力。扩大了本专业学生就业面,培养出有一定数学基础和实践能力的从事软件行业的人才。实现推动数学类本科专业快速发展。
参考文献
[1]董立华,刘艳芹,数学专业创新性应用型人才培养的探索与实践[J].衡水学院学报,2012.
[2]方木云,戴小平,培养学生软件开发能力的软件方向课程群建设[J].安徽工业大学学报,2007.
[3]杨韧,基于体系建设的数学类专业实践教学改革[J].实验室研究与探索,2013.
[4]孙善辉,芦伟,以就业为导向的数学本科专业学生创新能力的培养[J].宿州学院学报,2012.
【关键词】项目带动 软件蓝领
1.前言。我国软件行业已形成较大的规模,软件行业的从业机会逐年递增,而处于软件人才金字塔结构底部的“软件蓝领”更是需求巨大。面对强大的市场需求,如何才能培养出符合要求的“软件蓝领”以适应市场的需求呢?运用“项目带动式”教学可更好地培养出“软件蓝领”。
“软件蓝领”是指进行软件开发工作的初级技术人员,主要从事比较基本的程序代码编写、调试、测试等重复性的工作,一般对外语和技术水平要求较低,但需要有一定的实践经验。因为软件行业的发展速度快,新的知识、新的技术、新的工具不断出现,所以还需要“软件蓝领”有较强的更新知识的能力。
“项目带动式”教学是指围绕项目开展学习的一种教学模式,本质上是一种应用(或仿真应用)驱动,是一种软件教学的互动。项目为中心的学习模式,既让学生学习到软件开发知识和技能,使学生对软件开发具有一定的工作经验,使之易于适应工作后的软件开发环境;还将在编写软件的过程中,培养学生的自主学习能力和群体协同的能力,培养学生的责任心和完成项目的决心。这种教学方式适合“软件蓝领”的培养,尤其适合在职业技术院校中采用,可以很好地让学生在完成项目的同时掌握基础知识,培养其自学新知识、新技术的能力。
2.软件“项目带动式”教学的概念与特点。软件“项目带动式”教学模式,围绕“软件蓝领”职业岗位能力的形成、科学设计和选择项目,根据特定的完整的软件工程项目所需要的知识、能力和素质结构,进行教学方案设计,按照软件工程项目的操作流程组织实施教学,使学生在项目开发的过程中,获取知识和经验,达到人才培养的目标。项目是指具体的软件工程项目或软件生产项目,可以是模拟的项目,也可以是具有实战性质的项目。项目是人才培养的核心要素,具有完整的流程,贯穿于人才培养的始终。学生在项目实施中学习知识,锻炼技能,掌握技术,提升职业素养,实现培养目标。
软件“项目带动式”人才培养模式的特点是将教学过程与软件项目工程充分地融为一体,围绕项目工程的需要构建课程体系,组织实施教学,有利于瞄准岗位设课程、瞄准能力搞教学,提高教学的针对性和实效性;在项目工程的具体实施过程中学生根据自己的兴趣和特长,重点选择不同的职业岗位、扮演不同的角色,学习目的更明确、针对性更强,有利于学生个性的培养,也为学生未来的择业奠定良好的基础;以具体工程项目或生产项目带动教学,使整个教学过程能始终贴近生产第一线,学生可以及时了解行业的发展趋势,掌握最新的设计理念、管理理念和工程施工技术。学校可以更准确地了解市场对人才的需求状况,及时主动地调整教学内容。改革教学方法,使培养的人才具有更强的社会适应性和就业竞争力。将专业教育融入行业背景,有利于学校专业教育与市场行业运作的衔接,有利于实现学生与行业、与社会的“零距离接触”,真正实现职业技术教育以需求为宗旨,以就业为导向,产学研相结合的教育理念。
3.“项目带动式”教学的实施步骤。
3.1 以项目带动教学的教学目标。从企业的实际需求出发,中职“软件蓝领”需要掌握的技能主要有两种:
3.1.1 必备技能。包括:
①基本理论知识技能,包括计算机基础知识、数据结构和算法、操作系统知识、工具软件、测试软件;
②网络知识技能,包括网络基础、综合布线系统知识;
③计算机程序设计语言知识,至少包括一种计算机编程语言,例如C、C++、JAVA等;
④软件设计开发工具,包括Visual Studio、Jbuilder等;
3.1.2 附加技能。包括:
①软件工程与项目管理知识,包括CMM流程、PMP(项目管理)相关知识、软件开发模型。
②团队沟通协作能力。
针对这些教学目标去选项目,在完成项目的情况下带动教学内容的学习。
3.2 以项目带动教学过程的实施。项目将贯穿整个教学的始终,在完成项目的过程中学习知识,在学习的同时完成项目,理论教学和实践教学同步进行,相辅相成。
理论教学的进行要结合具体工程项目进行讲解,引导学生分析、讨论,获取知识,提高解决实际问题的能力。通过教学,使学生明了所学知识为何种工程项目(或生产项目)的实施服务,对培养何种能力有效。提高教学的针对性,调动学生学习的积极性,实现理论教学与工程实践的有机融合。
实践教学的进行需先筛选项目,项目选择与教学时间和进度相关,通常选择难度适中、对开发技能要求较低及工作量与教学时间相吻合的项目。这里以使用VC开发一款类似计算器功能的软件为例详细说明“项目带动式”教学的实施步骤。
首先由教师制定和本项目的工作流程和工作计划。
通常软件项目的工作流程如下,这些工作流程可参考软件成熟度模型(CMM)。
①计划制定;
②需求分析;
③软件项目开发;
④软件项目测试;
⑤版本;
⑥版本结束。
接下来按照项目要求进行角色配置。一般软件工程相关的人员包括项目经理和开发人员。项目经理可以由老师兼任,老师同时负责对项目方案总体的把握。在这个项目中,根据功能可分为界面和计算两个部分,可以据此将学生分为两个小组,称为A组或称界面组和B组或称计算组。每个小组确定一位小组长,负责对各组组内的工作内容和工作计划进行跟踪和汇总。另外一个重要角色是项目配置管理员(CMO),负责对软件产品本身涉及的工具,配置物料进行归档管理。
接下来按CMM流程开展项目。在“项目带动式”教学中,教与学的相辅相成主要体现在如何解决项目进行过程中的难题。项目本身是有很强的目的性的,真正的项目要求必须按照规定的进度,符合要求的质量进行交付。学生和老师必须在项目进展过程中想很多办法,不断提升个人的技能,才能保证项目成功完成。在项目开展过程中,将暴露出众多问题,而圆满地解决这些问题,既可以锻炼学生的动手能力,独立解决问题能力,还可以增强学生适应项目环境的能力,更重要的是,可极大的鼓舞学生的信心。
通常项目开发中主要的问题可以分为以下几类,针对性地解决这些问题,将可以最大限度的发挥“项目带动式”的优势。
①学生基础知识不扎实的问题。学生对项目涉及的基础知识掌握不够,无法满足项目开发的所有知识点需求。此时教师应启发学生进行相互学习和培训,或者引导学生主动去寻求这些知识进行自学。即教师应力避直接告知正确方式或结果,而是通过引导,“授之以渔”。对于学生反馈较多的问题,说明这是较普遍而又必须克服的,则教师可以提前将相关材料准备妥当,结合当前项目进行充分说明,以保证项目的进度和质量不受影响。
②项目小组间的团队合作问题。较中等的项目都可以分为多个项目小组,各自完成项目一部分功能,最后汇总为单一软件。教师在划分项目小组时,须充分考虑到人力与工作量的问题。较单独的项目功能可独立为小组,各小组间接口尽量要简单明确,防止因为接口问题产生的内耗。
③项目质量问题。教师在项目的早期应引导学生重视测试问题。“项目带动式”方法较重视学生动手能力培养,并应兼顾项目开发的质量评估,以确保学生在项目实施中收到良好的训练。教师可以在项目开发前期指定一到两位学生参与测试计划的写作和测试用例的写作。他们可以是各小组中开发人员,也可单独出来,仅做测试。教师参考测试学生的测试结论,对项目进行评估,甚至可以对项目小组直至每位负责开发的学生的工作进行评估。
在克服了上述诸多问题后,“项目带动式”教学一般会取得成功。由于软件项目基本不需要场地,又不会造成较多的人员花费,软件项目本身已经有较成熟的开发管理流程(例如CMM模型),又有较多的知识获取渠道,如网络、开源社区、其他知识共享体系,因而将“项目带动式”教学应用于软件项目,应用于“软件蓝领”人员的培养中,比较便利,易于规范化,是教学法的一种新的应用,更有利于填补我国软件人员的缺口。
4.运用项目带动教学模式培养软件蓝领注意事项。
4.1 适当的项目决定了该教学模式的成败。项目是“项目带动式”人才培养的核心要素,必须妥善选择。软件开发项目可大可小,需要根据教学环境综合考虑,包括计算机资源、学生本身已经具有的软件开发素质、学生人数等。必须准备有一定难度,通过努力可达成质量要求的项目,尤其是具有实战性质的项目,因为这种项目还可以通过互联网,获得认可,更加有利于总结经验获取信心。软件项目的获取,可来自本校的实际需求,例如排课表,排座位等软件开发;可以从校企合作中获取;可在互联网上获取一些适当需求,作为仿真开发的输入。
4.2 科学的设计项目开发流程。项目开发流程设计的恰当与否,直接关系到学生对知识的掌握,关系到专业培养目标的实现。设计项目流程时应注意:
4.2.1 项目流程要覆盖多角色,保证学生深入了解角色配置。项目开发不能仅包括一到两个流程,必须涵盖整个的软件开发流程,使学生对各个流程中工作任务有较好的理解,加强学生对软件开发团队的理解。
4.2.2 项目流程要明确,开发计划尽量详细完整。每个项目开发的关键步骤(称为里程碑)需要在项目开发时即制定下来,并到每一位项目参与者。教师的工作环境犹如“作战室”,跟踪项目的进展,适当的调整工作计划等等,都需要及时开展并到各角色。
4.2.3 项目的安排要照顾学生的接受能力,需循序渐进。当学生对项目缺乏了解时,需培训学生的相关知识;当学生对项目理解出现偏差时,需强调项目的特点,引导学生纠正偏差。项目流程中复杂的部分,需分解到每个开发阶段,避免学生不知所措。
省属高校的软件工程专业多脱胎于计算机科学与技术学科,在研究生人才培养模式上受限于计算机科学与技术研究生培养模式。部分高校甚至于采用同计算机专业研究生实施无差别培养方式,这一根本性原因带来诸多问题。
1.人才培养方向目标定位不清晰
软件工程专业硕士应当仅限于软件工程师的培养。软件工程具有极强的工科属性,其人才培养,除软件工程科学硕士和计算机科学技术一样,可培 研究型人才外,专业学位应当清晰定位于培养具有软件工程必备基础知识,在软件工程某一领域具有较强专业知识与技能的工程师。
2.师资比较缺乏,尤其是双师型师资缺乏
软件工程正式成为独立的学科时间相对较短,软件工程师资大多来源于计算机科学与技术专业。计算机科学与技术专业可以胜任软件工程基础课程,但这部分教师往往缺乏工程实际经验,在教学中往往表现为重理论轻实践。省属高校十分缺乏来自软件企业一线的项目经理以上的技术管理人员充任实践课程教师。
3.培养模式陈旧,不适应国家教育部要求
由于全日制软件工程专业学位研究生2009年才在全国开展,很多高校沿用学术型学位研究生培养模式,忽视了国家对专业学位研究生培养要求中的专业实践能力的培养,未能很好地开展专业实践教学。
4.课程设置陈旧,不适应软件企业的人才需求
大多数高校软件工程研究生课程设置大多套用计算机科学与技术专业的课程设置,未体现软件工程学科特点。原因主要是因为师资缺乏、招生规模较小,出于节约培养成本的考虑。
二、一种实用的软件工程全日制工程硕士培养解决方案
四川师范大学作为四川省属高校中最早开设计算机科学与技术、软件工程本科生培养的院校之一,在软件工程工程硕士培养的诸多问题上,做了一些有益探索与研究,针对性地提出了一套适合于省属高校软件工程全日制工程硕士培养的解决方案,希望能为同类型高校提供人才培养的借鉴。研究生培养方案的制定,重点需要解决课程体系设置、培养流程规划与控制。对专业学位研究生而言,还需要解决专业实践能力的培养与训练这一关键问题。
1.课程体系设置
软件工程学科正式确立的两个标志性文件是2004年IEEE推出的软件工程知识体(SWEBOK)和软件工程教育知识体(SEEK)。两个文件内容相近,都包含了软件工程核心类的知识领域、基础类或前导类的知识领域,以及其他相关领域的知识。软件工程研究生的培养从原则上说应遵循上述两个文件,围绕上述知识领域进行教学。但由于这两个文件将软件工程的知识体系划分为知识点,各领域之间必然存在重复和交叠。在课程设置上无法照搬上述两个文件。以SEEK为基础,我们对软件工程的课程设置进行规划。整个课程设置被分为五个层次,分别为工程基础课程、计算机基础课程、软件工程核心课程、扩展课程和实践课程,如图1所示。课程开设顺序大体按照五个层次由低到高依次开展。其中,工程基础课程提供软件工程所需数学理论基础、外语能力培养、软件工程文档写作、论文写作基本功训练。计算机基础课程提供软件开发必须的计算机基础知识,如网络、算法和数据库知识。
相对于本科课程而言,此类课程讲授内容更深入全面。软件工程核心课程设置了高级软件工程、软件体系结构和软件测试与质量保证三门课程。高级软件工程侧重于软件分析与设计、软件工程过程、软件开发案例分析。软件体系结构侧重于结构风格、案例研究、共享信息系统、结构描述、结构的分析与评估、特定领域的软件体系结构和流行的软件体系结构等。软件测试与质量保证着重于软件质量的改进,讨论如何提高软件质量的方法。扩展课程包含系列领域知识课程,研究生可根据研究方向选择两门;软件开发工具讲授最新流行的软件开发、过程管理所需要的软件工具的使用,以实践教学为主。软件开发新技术研讨课程以讲座形式开展,教师和学生均可作为一个专题的主讲。实践课程包含校内实践、校外实践和毕业设计三个环节。
2.培养流程与实施
教育部明文规定,专业学位研究生学制原则上为两年,同时要求应届本科生进行专业实践不少于一年。一般来说,研究生在校课程学习时间应有一年左右,加上专业实践的一年,如何合理安排学习计划,在两年内完成培养环节成了一个现实的重要问题。我校以周为单位制定了四川师范大学软件工程专业学位研究生培养流程,如表1所示:上表规划了研究生培养中的几个关键环节,依次为报到入学、课程学习、校内实践、校外实践、开题、毕业设计、论文写作和送审答辩。第一学期研究生主要是课程学习,同时在校内导师指导下开展文献阅读和编程能力锻炼。第二学期前半学期结束理论课程的学习。后半学期和暑期开展校内实践和毕业设计开题工作。第三学期研究生到实习基地进行校外实践。从第二学期后半段和整个第三学期,学生在专业实践的同时,需完成毕业设计。从第二个寒假开始直到第四学期前六周,研究生完成毕业论文的初稿。从第七周开始,进行论文修改、、盲评和答辩工作。
从培养流程表可以看出,这种安排具有两个显著特点。一是理论课程学习安排在一个半学期完成,二是实践课程分为校内实践和校外实践。研究生理论课程学习任务并不重,完全可压缩到一学期半,同时可为实践提供更多时间。校内实践非常有必要。由于是省属高校学生大多能力一般,为保障学生进入企业能融入研发团队从事技术工作,必须先期培训其实践能力。这种安排时间较为紧凑,也比较合理,符合专业学位研究生侧重于实践能力培养的要求,也在两年的学制内确保了研究生的实践时间不少于36周。
三、专业实践能力的培养与训练
软件开发能力是软件工程专业硕士必备的核心能力,其能力培养既是对前端课程学习效果的检验,也是后端毕业设计和就业的必然需要。我校将软件工程专业硕士实践能力培养融入了众多环节。从前期的实验型课程教学,到中期的校内实践、再到后期的校外实践和毕业设计。实验型课程教学解决软件设计开发的基础技能,校内实践解决中小规模软件设计开发能力,校外实践和毕业设计解决中大规模软件设计能力。
1.实验型课程教学
包含软件工具的使用训练、软件开发环境的搭建、软件开发案例分析和新技术研讨。软件工具的使用训练学生单个软件开发工具的使用,如项目管理软件Project、开发文档化软件Rational、软件测试工具LOADRUNNER、QTP、TD等。由于这些工具结构分散,还需进行开发环境的搭建训练。开发环境搭建训练内容一为搭建基于微软的VSTS和VisualStudio的开发平台,适合.net方向;内容二位、为搭建基于IBMRSA和Eclipse的开发平台,适合J2EE方向。软件开发案例分析中研究生将自己放在决策者的角度来思考项目所涉及到的具体问题,增强了学生的实际应对能力。新技术研讨促进学生或主动或被动地掌握了一些新兴技术,拓宽了技术领域。
2.校内软件开发实践
采用项目驱动形式开展。要求研究生必须申报各类实际的软件开发项目,如四川省苗子工程、学校研究生科研创新项目、学院研究生科研创先项目。研究生可组织本科生参与项目实施,但必须任项目组长,在项目中担任核心角色,完成软件需求文档审定、软件架构设计、软件详细设计、大部分编码工作、测试方案制定等重要工作。
3.校外软件开发实践
在上述环节经历后,研究生已经掌握中小规模软件开发的基本技能,此时将研究生派到实习基地,实战参与企业软件开发项目。其实践由校内导师和企业导师共同负责。前期技能的培养已保证研究生胜任企业中一般性的软件开发角色。
4.毕业设计
研究生在校内和校外实践的36周中,还需要同时进行毕业设计的开题、实施。研究生可结合企业实习工作完成毕业设计。专业实践的考核分为定期汇报和实践环节结束汇报两种形式。研究生应每隔两个月集中汇报一次实习期工作心得,取得的成绩等。实践结束时在全院公开汇报,其成绩作为实践课程成绩。
四、结论
软件工程专业主要学习的内容有:
1、软件工程专业以计算机科学与技术学科为基础,强调软件开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上熟练掌握从事软件需求分析、软件设计、软件测试、软件维护和软件项目管理等工作所必需的基础知识、基本方法和基本技能;
2、软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
3、软件在现代社会中应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
(来源:文章屋网 )
考核不科学.通常采用规范化、标准化的试卷笔试,以学生成绩的高低来评价学生对教学内容掌握程度.同时,考核内容结构不合理,基础知识所占比重大,程序设计类题型所占比重小,对实践能力的考评弱化.考核形式单一.多数的考核方式是采用2小时闭卷笔试,这种方式很能考核学生的专业技能及应用能力,而这又是这门课的重中之中.缺乏对学习过程的有效考核.课程是对整个教学内容的全面、总结性的检查和评定.一次期考不足以涵盖所有知识点.要提高考核的可信程度,应采用分阶段的综合考核方式,参与到最终成绩的评定.
2基于CDIO工程教育理念的课程教学改革措施
2.1CDIO的4个能力与Java语言培训目标的关系
CDIO培养大纲将工程毕业生的能力分为四个,分别是工程基础知识、个人能力、人际团队能力和工程系统能力,大纲要求以综合的培养方式使学生在这4个层面达到预定目标.按此理论培养的学生深受IT界的欢迎.Java语言的课程教学目标是通过教学,使学生能利用Java进行面向对象程序的分析与设计.此目标又可细分为4个子目标,分别是知识目标、能力目标、专业素质目标、工程师目标.知识目标是学生能掌握Java语言的基础知识,如面向对象程序的分析与设计、输入输出、异常、SWT编程与Swing编程、多线程、常用API等.能力目标是能熟练配置和使用JDK,能使用一些流利的IDE环境如Eclipse,NetBeans等进行简单的软件开发;专业素质目标是养成科学规范的编程风格,具备良好的团队合作精神;工程师目标是具备综合的工程思维和能力,具有软件的分析与设计能力.通过Java的4个教学目标与CDIO的4个能力的对比研究发现,二者具有一一对应关系.即Java的知识目标的培养与CDIO的工程基础知识能力对应,Java的能力目标培养与CDIO的个人能力对应,Java的专业素质目标培养与CDIO的人际团队能力对应,Java的工程师目标培养与CDIO的工程系统能力对应.
2.2基于CDIO工程教育理念构建新的Java教学模式
Java语言的主要教学环节是理论教学和实验教学,教学效果的主要评价办法是课程考核,基于CDIO工程教育理念构建的Java教学模式主要从这3个方面来改革传统的Java教学模式.
2.2.1Java理论教学的改革
1)明确Java语言课程教学的核心知识点.Java语言的知识包罗万象,应该找出核心知识点,并作重点的讲解和强化,为后续课程学习新的程序设计技术打下技术基础.经过多年教学和软件开发实践,我们认为,Java语言的核心知识点可分为3个模块:基础知识模块、对象与类知识模块、应用程序接口模块.其中基础知识模块包括:操作符、控制执行流程、初始化与清理、访问权限控制;对象与类模块包括:类、对象、继承、多态、接口、异常、泛型、数组、多线程、网络编程;应用程序接口模块包括Object类、System类、容器类、I/O类、AWT类和Swing类、正则表达式(Patter,Matcher).
2)注重案例教学法在Java语言教学中的实践.调查显示,70%左右的学生认为当前的“理论课满堂讲”的教学方法不受欢迎,同时,这些学生认为采用案例教学法学生比较喜欢.在教学过程中,采用案例教学法有以下3个原则:
(1)选择生动有趣的案例.例如在讲授类的设计时,可以采用ATM取款机作为典型案例,因为同学们都有ATM的取款经历,并且在此过程中遇到很多异常,例如存款时钞票不能识别,取款时卡被吞等;在讲解Swing类时进行界面设计、事件触发时,可采用博物馆中的贵重物品装锁作为案例,我们考虑,这些锁还带有感应功能,如果被敲被砸则发出警报,相当Java中的事件触发机制.在选取典型案例时,既要考虑对知识面的涵盖,又要生动有趣.
(2)案例要真实,安全来自生活又要进行一定的改造.例如在讲解多线程知识点时,结合当下淘宝的流行,淘宝中的图片显示为何能快速呈现?就是使用了多线程技术,其原理是一幅被分解为n个部分,由n个线程分别负责一部分的显示,n个线程在多处理机系统下可并行执行,速度比单线程提高了n倍.
(3)案例的大小要适度.一般典型安全的代码在100~250行之间,案例太大学生难以完成,太小又达不到涵盖主要知识点的目标.
2.2.2Java实验教学的改革
实验教学是Java语言课程的重要环节,目前是是培养学生实践动手能力,以及知识综合应用能力.主要从以下几个方面来做好实验教学:1)在理论教学中引领实验教学的内容.在理论教学中涉及程序设计方面的内容,主要有有两种情况及解决办法,如果涉及的知识点比较综合,课堂上适合打开开发工具,先给出设计思路,然后对每条思路,一边编写代码一边讲解;对于比较大的程序,适合将编好的代码导入开发工具讲解.2)逐步构建立体化实践教学体系.实验分为3个层次:
(1)验证性实验,此类实验是学生按照实验指导书完成实验,以验证实验结果.例如,学会安装配置JDK、安装Eclipse开发环境、编写简单的类和对象、输入输出等,这些工作能培养学生的实验基本能力.
(2)设计性实验,老师给出题目和用户需求,学生根据已有知识来设计构思、设计、实现,目的是培养学生的知识综合能力和软件工程能力,在此过程中,学生可模拟软件开发团队,形成小组来完成设计性实验.另外,为了开拓视野,还要积极参加专业类竞赛,如鼓励学生参加云南省计算机作品赛.
(3)综合性实验,老师综合题目,这些题目来自老师的科研课题,综合性实验的目标是培养学生的工程师能力,能独立进行需求分析、设计、实施、运行和维护.由于综合性实验贴近实战,要求高,较难的部分老师要给学生重点指导.
2.2.3Java课程考核方式的改革
考核方式要科学,需要遵循过程考核与结果考核并重的原则.
1)举行章节性同步练习和测验,以了解学生的学习状态,评价当前的教学效果,同时也为科学地评定学生成绩提供依据.
2)采用答辩的方式.学生分组后,由老师公布课题名称和要求,然后,每组有一组长.在任务实施过程中,由组长讲解本组的研究成果,并说明组员的工作和贡献,为评委打分提供依据.最后由评委对各组的研究内容有疑点的地方以及从完善项目的角度出发进行提问,组员回答,评委根据贡献和回答情况给组员打分.
3结束语
[关键词]ARM体系 嵌入式方向 课程设置
[中图分类号]G643 [文献标识码]A
引言
随着嵌入式系统的广泛应用,许多高等院校计算机、电子、软件等专业针对市场需求,开设了嵌入式方向相关课程,然而同嵌入式技术的飞速发展和巨大的产业需求相比,我国高等教育体系下的嵌入式方向相关课程设置存在教学知识陈旧,缺乏实践锻炼,无法适应企业的实际需要等问题,本文首先结合我校办学特色和实际教学情况,阐述了基于ARM体系的嵌入式方向课程设置与教学方案,进而探讨了农业院校应用型计算机类嵌入式方向教学过程中存在的问题,最后对存在的问题给出了一些建议,对其他地方院校应用型嵌入式系统开发人才培养将起到一定的借鉴作用。
一、计算机专业嵌入式方向培养目标与课程设置
(1)计算机专业嵌入式方向培养目标
我校计算机专业嵌入式系统方向培养整体目标是注重工程能力培养的嵌入式系统人才培养目标,尤其侧重嵌入式系统工程应用编程等软件设计开发。根据学生的接受能力以及我校的办学特色,具体嵌入式系统的学习体现层次性、渐进性、注重操作性,在教学中注重培养在农业领域中的嵌入式系统应用能力。
(2)嵌入式方向课程设置
我校于2012年购买了30套基于ARM体系的嵌入式开发实验平台设备,可实现每人一台的教学环境,其中嵌入式开发平台采用ARM11的UP-Magic6410核心开发板,所以嵌入式方向的课程设置都是围绕ARM体系展开教学内容。
嵌入式方向课程设置遵循四个“1”,即“一种主流嵌入式微处理器、一门开发语言、一种嵌入式操作系统、一套开发工具”,嵌入式微处理器采用S3C6410X(ARM11),嵌入式开发语言主要以C语言为主,其他如汇编语言、C++语言、Java语言等为辅;嵌入式操作系统采用Linux;集成开发工具以ADS为主,辅助Windows CE开发工具,这样就能达到系统学习嵌入式技术的要求。表1是我校嵌入式方向专业课设置时间和学时整体情况。
表1:专业基础及专业课设置情况
嵌入式导论课程:介绍嵌入式的主要应用领域、嵌入式软件开发的基本概念、嵌入式软件开发的基本流程和基本方法、嵌入式系统的特点。
嵌入式操作系统课程:介绍嵌入式系统基本知识,嵌入式操作系统与通用操作系统的差别。结合典型的嵌入式操作系统对操作系统的基本构成、工作机制、系统移植剪裁和实时任务调度等内容进行介绍。我校根据具体情况选择、Linux、WinCE等嵌入式操作系统进行教学。
嵌入式程序设计基础:介绍嵌入式系统体系结构、嵌入式系统设计的基本方法、软件编程及设备接口和驱动等。通过该课程的学习,学生了解和掌握必要的嵌入式系统设计方法学的概念、方法和工具嵌入式程序设计基础,掌握嵌入式系统的基本原理与设计开发思想,学生能完成简单的嵌入式系统的软硬件设计。
JAVA开发语言:介绍Java语言的体系结构、Java语言的基本概念和程序设计的基础知识、面向对象的程序设计的思路和方法。培养学生的编程能力,使学生能够运用Java语言作为完成应用程序设计。
嵌入式接口技术:介绍键盘接口、LED显示器接口、触摸屏、通信接口、中断接口、A/D和D/A转换、ARM的JTAG接口。
嵌入式高级编程:介绍Android嵌入式开发环境搭建的方法,项目结构;Android的体系结构,嵌入式软件开发流程;嵌入式特性开发,多媒体开发,数据存储开发,联网开发等开发方法,学生通过实践能达到独立完成开发单机、网络嵌入式软件的能力。
嵌入式课程是实操性极强的课程,因此实践教学在嵌入式培养体系中占有重要的地位,既是理论讲解的验证与升华,又是培养学生创新思维和独立分析解决问题能力的重要途径。我校的嵌入式方向实践教学课程设置时间和学时大致如下表2所示。
表2:嵌入式课程实践教学设置情况
嵌入式操作系统实验内容:典型的嵌入式操作系统的基本构成、工作机制、系统移植剪裁和实时任务调度等。我校根据具体情况选择Linux嵌入式操作系统进行教学。
嵌入式程序设计基础实验内容:在现有的嵌入式开发平台上完成嵌入式系统设计的基本方法、软件编程及设备接口和驱动等,学生掌握必要的嵌入式系统设计方法学的概念、方法和工具嵌入式程序设计基础,掌握嵌入式系统的基本原理与设计开发思想,能完成简单的嵌入式系统的软硬件设计。
JAVA开发语言实验内容: Java语言程序设计的基础知识、面向对象的程序设计的思路和方法,学生能够运用Java语言作为完成应用程序设计。
嵌入式接口技术实验内容:包括键盘接口、LED显示器接口、触摸屏、通信接口、中断接口、A/D和D/A转换、ARM的JTAG接口等实验。
嵌入式高级编程实验内容:基于Android嵌入式开发环境搭建的方法;Android嵌入式软件开发流程;嵌入式特性开发,多媒体开发,数据存储开发,联网开发等开发方法,学生通过实践能达到独立完成开发单机、网络嵌入式软件的能力。
二、三位一体的嵌入式课程教学体系建设
我校嵌入式系统方向学习侧重嵌入式软件设计部分,实验室选用UP-Magic6410嵌入式实验开发平台,着重培养学生在该平台下进行嵌入式Linux程序开发的相关环境搭建与软件设计方法的能力。针对各模块以及物联网的应用背景,按照由浅入深,不同课程层次对应不同实验项目等原则,循序渐进,逐步提高,以满足不同阶段的教学要求,为学生提高了动手能力,为进一步的实践开发和毕业设计打下了良好的基础,因此,我们提出了三位一体的嵌入式方向课程教学体系结构,如图1所示。
图1:嵌入式方向教学体系结构
(1)基础型
基础性包括基础知识和基本技能,主要是为了满足基本的教学要求和教学目标,课程包括ARM体系的基本知识、基本技能以及基础类实验的开展。
教师在基础性课程实施时,可以根据各自的科研项目按照模块化将案例分解到各个部分,鼓励学生对实例所采用的技术和方案进行不同角度的评价,变被动知识灌输为主动探索思考,使教学理论知识与科研实践有机地结合在一起。
(2)提高型
提高型包括ARM体系基础型知识的深化和提升,包括理论知识和实践内容的进一步深化,理论知识包括嵌入式编程的设计思想和设计方法的提高,实践教学包括设计类实验,每个实验课题规定1周或更长的时间让学生动手设计开发嵌入式应用程序,在强调基础性知识掌握的同时,鼓励学生创新的综合设计。使得学生既掌握了一些具体的通用的嵌入式系统的开发方法,也能发挥主观能动性,独立设计并实现较完整的嵌入式系统,激发学习、创造热情。要求学生课外查找资料进一步地学习,引导学生进行主动性学习,对某些问题进行深入的分析研究,进而提出自己的设计思想,教师全程指导学生答疑指导工作,启发学生进行嵌入式编程,为学生提供一些解决问题的方法。
(3)综合型
综合型主要指的是依托科研项目实践来锻炼和提高学生动手能力。科研项目可以包括教师的科研项目、学生的科研项目以及依托科研项目或实践基地完成的毕业设计项目。
嵌入式方向课程授课教师可以鼓励学生参与到教师科研项目之中,如笔者主持的嵌入式系统温室环境监控系统应用项目,学生直接参与到前沿的课题和项目中去,成立了兴趣小组,将温室环境监控系统分解成若干子题目,交由各兴趣小组,模拟项目的形式实践开发,真正做到“在学中做,在做中学”,以务实的项目培养学生的实践科研能力。
近年来,北京地区大学生课外科技活动开展的力度逐年加大,笔者指导的学生主持的北京市大学生科研计划,利用嵌入式平台,对温室环境等参数检测,进而对温室大棚实现智能化控制,学生在该课题中,运用所学理论知识,系统的完成了整个项目,获得了北京市大学生科研计划成果二等奖,尤其值得一提的是,毕业的学生在担任京郊村官期间,将课题成果应用于所服务的村镇,取得了良好的效果。实践证明,鼓励学生参与课外科技活动,将会拓展学生的知识体系,并学以致用,对进一步提高学习兴趣以及培养合作精神发挥了至关重要的作用。
学生的毕业设计是所学知识的综合运用的过程,学生从事的毕业设计已经不仅仅是课程实践教学,而且还是从事科学研究的过程。为了保证提供充分的毕业设计时间,提高设计论文和专业课的学习质量,做到有的放矢,我们将毕业论文提前到第七学期安排任务,进行设计任务的前期准备及调试工作。
三、建议
(1)采取层次化的知识体系
嵌入式方向的理论知识体系体现专业基础知识、专业综合知识、专业系统知识由易到难的渐进性和层次化。
专业基础知识包括嵌入式导论、嵌入式操作系统、嵌入式程序设计基础等课程,这些课程的学习包括嵌入式系统基本概念、典型的嵌入式操作系统的基本构成、工作机制、系统移植剪裁和实时任务调度等;嵌入式系统设计的基本方法、软件编程及设备接口和驱动等内容。学生通过这些课程的学习目标是掌握必要的嵌入式系统设计方法学的概念、方法和工具嵌入式程序设计基础,掌握嵌入式系统的基本原理与设计开发思想,能完成简单的嵌入式系统的软硬件设计。
专业综合知识包括嵌入式高级编程、通过实践课程获得的综合性知识。这些内容包括智能终端的嵌入式软件开发方法、编程开发流程;数据存储开发、联网开发等开发方法,学生通过学习能达到独立完成开发单机、网络嵌入式软件的能力。
专业系统知识包括基于行业背景的嵌入式软件开发知识,这一层次是通过专业实习和毕业设计的环节完成的,也就是通过实践综合完成的项目后获得的知识,这不仅涵盖了符合社会需求的嵌入式方向的新知识、新技术,还包括企业的项目实施机制等无法从学校课本学习到的知识,为学生顺利走向社会工作岗位提供了重要的支持。
(2)采取多方位的实践教学体系
嵌入式系统作为实操性极强的课程,通过强化夯实基础实验、丰富实践综合教学内容,获取更多的实践项目的多方位立体化实践教学模式对培养高素质嵌入式系统人才至关重要,目前,我院嵌入式实践教学改革还处在起步阶段,今后我们将在智慧农业背景下,立足于农业院校发展特色,将嵌入式系统实验实践体系作进一步完善,重点培养学生的创新思维和独立分析解决问题能力。
针对在校学生缺少行业背景知识这一问题,需要大力开展与企业的相关合作,直接把学生派到企业进行16周的专业实习甚至12周的毕业设计,在工程实践项目选择上,应该尽量选择企业的实际项目,尽可能覆盖嵌入式领域的内容,比如嵌入式项目一般包括需求分析、硬件平台设计、软件平台设计(包括嵌入式OS的选择)、应用程序的开发与系统测试等多方面,使学生能够通过查阅一定的资料,利用所学的知识解决工程实际中的问题。学生在实践工程项目中完成毕业设计和论文,综合能力得到极大的提升,同时学生可以掌握企业项目的实施机制,为毕业后快速进入项目开发打下良好和基础,从而实现人才培养和社会需求的无缝对接。
四、结语
随着嵌入式技术的高速发展,嵌入式方向课程体系也应不断改进与之相适应。本文从ARM体系的嵌入式方向培养目标出发,提出了三位一体的课程体系结构,采取层次化理论知识和多方位的实践教学方式,使学生在学校就具备扎实的专业知识和技能,最后将学生送入实训基地做企业实际项目,为学生走向工作岗位打下良好的基础,最终达到计算机专业嵌入式方向的教学和培养目标。
[参考文献]
[1]徐欣,于红旗,卢启中."嵌入式系统设计技术"课程教学研讨[J].高等教育研究学报,2004,27(2):59-60
[2]徐远超,张聪霞,关永.嵌入式系统专业课程教学存在的问题与思考[J].计算机教育,2009(18):85-86.
[3]田泽.嵌入式系统开发与应用教程[M].北京:北京航空航天大学出版社,2005:1-48
[4]李岩,王小玉,孙永春.嵌入式系统教学研究[J].电气电子教学学报,2006,28(3):45-47,90
[5]李曦,周亦男,周学海."嵌入式系统设计"系列课程建设[J].教育与现代化,2004(4):48-51