浅探软件技术专业学生软件开发能力的培养

2013-08-14 00:54张占孝
电子设计工程 2013年6期
关键词:编程软件职业

张占孝

(西安职业技术学院 陕西 西安 710077)

近年来,高校毕业生就业难已成为一个突出的社会问题,软件技术专业的毕业生就业形势也很严峻[1]。与此同时,软件行业对人才的需求也面临相当的困难,出现了“毕业生找工作难,软件企业求才难”的人才供需两难局面。造成这一问题的根本原因是各高校毕业生的软件开发能力不强,下面从几方面来阐述怎样才能培养出IT企业所需要的合格人才。

1 培养学生从事软件开发应具有的能力素质

1)培养学生学习软件技术专业的学习兴趣和独立学习能力。“兴趣是最好的老师”,有了学习兴趣,无疑为独立学习增加了动力。由于课堂教学自身的局限性,学生不可能仅通过有限的课堂教学就能获取全部的知识和能力,而是需要一个课余自主学习、巩固提高的过程,即不断的自我操练、自我补充,来吸收、消化、丰富课上的知识输入。

2)培养学生的职业生涯规划能力。通过职业生涯规划,学生规划自己将来打算选择什么样的行业、什么样的职业、什么样的组织、想达到什么样的成就、想过一种什么样的生活,如何通过自己的学习与工作达到目标?从而激发学生学习软件开发的动力。

3)培养学生获取新知识能力、信息搜索能力。从事软件开发需要各种处理信息的能力。面对新的挑战,教育的目的不再是给予学生大量的知识,而是教会学生最快、最准确地找到自己需要的知识和信息,并进行加工、整理、研究、处理。

2 如何培养学生从事软件开发的专业能力

1)掌握基础原理和基本技术:包括计算机原理、数据库原理、数据结构、编译原理、操作系统等。这些知识是很基础的,有了一定的基础才能更好的学习其他能力[2]。

2)掌握具体技术、语言和工具,包括各种编程语言、开发环境、数据库、开发框架等[3]。通过培养学生的单项技能为目标,利用校内实训室软硬件资源,通过理论与实践一体化教学,沿着由简单到复杂的顺序完成一个个独立的工作任务,形成单项职业能力。以工作任务为平台,以阅读程序、编写程序、调试程序、测试程序为周期,逐步递进增加程序难度,使学生对编程过程形成比较清晰的认识,从而掌握编程各个环节所必须的基本知识和基本技能,为专业能力的整合奠定基础。

同时具备以上两点,就可以成为一个优秀的程序员。

3)方法、思想和理论,包括面向对象思想、设计原理、设计模式、需求工程、UML等。举个例子来说,要学习面向对象的设计方法首先要学会一门面向对象语言还要会使用case工具,同时第三层的能力又会反过来影响第二层,好的方法能更好地发挥你的技术,还可以弥补技术的不足,举几个例子来说,设计做的好是不是写起程序来很轻松,断言、单元测试这些方法能让代码的质量达到前所未有的高度。在学生具有一定的单项能力的基础上,利用校内的实训基地,在模拟的职业环境中,以仿真项目工程的形式安排若干个具有综合性质的小型软件项目,学生在教师的指导下独立完成一个完整的工作任务,形成综合职业能力。在实习过程中,学生将通过岗位轮换的方式扮演不同的角色,完成不同的工作任务,体验各个岗位的职业氛围,逐步积累工作经验,为开发真实的软件项目做好准备。

4)过程控制和管理,这个层次的能力通常涉及时间跨度和团队协作,包括项目管理的能力,软件过程的控制能力、版本控制的能力、需求管理的能力等[4]。同样这一层次的能力也要以第三层的能力为基础,举例来说,如果软件没有好的架构,那不管采用什么过程最终都会一团糟,而良好的设计能力,再加上迭代的开发过程、严格的版本控制,就一定能开发出优秀的软件。学生在初步熟悉了软件开发过程、掌握了一定的专业技术、具备了一定的综合能力的基础上,通过参与完整的软件工程项目,全面提高学生的职业岗位能力。在此阶段中,学生首先在校企联合生产实习基地中进行生产性实习,教师根据真实的软件项目把学生分成若干个软件开发小组,学生可根据自己的特长和爱好扮演开发小组中的一个角色,开发小组从业务调查、需求分析、概要设计、详细设计、软件编码到软件测试、软件发布实施,完整地开发一个大型软件项目。

具备以上的4个能力,就可以成为一个优秀的架构师。

5)良好的编程习惯和思维。思维能力不是仅看书能培养的,需要通过学习编程的理论、编程的训练和经历,养成良好的编程习惯;应该是有了编程的养成、习惯,熟练掌握编程语言,更重要的最后结合业务调查和应用需要,才能转化为实用的程序和应用,自如的编程不是一蹴而就的。

3 熟悉软件开发过程

软件开发过程可以包括以下6个阶段:

3.1 计 划

对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。

3.2 分 析

软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。

3.3 设 计

软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。

3.4 编 码

软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。

当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。

3.5 测 试

软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。

3.6 维 护

维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。

图1 软件开发过程Fig.1 Software development process

4 学生职业素质的培养

1)培养学生良好的思想品德、法制观念和职业道德,具有吃苦耐劳的精神。

大学生“就业难”的问题越来越突出。用人单位特别看重毕业生的综合素质,把职业道德素质作为录用不录用的重要条件。一些学生自身的职业道德水平和职业道德素质不高,既想追求事业上的成功,又缺乏吃苦耐劳的精神,不愿意到能够发挥自己专业特长和自身优势的艰苦地方去,过分强调自我利益,把追求轻松、舒适、收入较高的工作放在第一位,缺乏远大的理想和敬业精神。因此,必须加强学生的职业道德教育和行业知识教育,使他们认识软件技术专业的社会价值,明确自己在职业生活中的地位、权利和义务,树立社会责任感和使命感。

2)培养学生爱岗敬业、诚信务实、豁达勤奋、谦虚好学的品质。

爱岗敬业就是社会从业者热爱自己的工作岗位,崇敬自己所从事的职业。在社会转型期的今天,学生奉献意识弱化,比较强调索取,缺乏实干精神和基本的敬业精神,同时人们诚信意识淡化。因此必须培养学生正确认识当前就业形势,珍惜和热爱自己的职业。诚实守信是中华民族的传统美德,也是学生一切品质形成的基础和保证。学生应自觉加强诚信道德建设,把诚信作为高尚的人生追求、优良的行为品质、立身处世的行为准则。

3)培养学生较强的现场管理和组织能力,能较好地处理公共关系。

4)培养学生人际交流能力,能有效地进行人际沟通[5]。这种能力不是怯懦,不是没有争吵,而是善于根据自己的调研需求的需要、去诱导和启发企业的管理者和业务骨干,描绘他们自己所要的管理要求。同时你还是需求的传递者,你必须与需求定义的人员实现良好沟通,你也必须与软件的测试人员实现良好沟通,因为在你的下游所做的一切工作都是依赖于你的需求报告而产生。所以你必须有很好的表达能力、也必须有很好的管理知识和经验,因为这两点是成功沟通的基础,没有很好的表达你无法和软件公司的人员 “默契”交流、也无法和企业的人员“默契”交流,这里使用了“默契”,是为了强调交流的成功度;而没有管理知识与经验,企业的管理者和业务骨干对于你的信服都将大打折扣。

5)健康的体魄、美好的心灵和良好的心理素质,形成学生良好的行为习惯,健全的人格和健康的个性。

6)培养学生较强的劳动组织能力、集体意识和社会责任。

7)培养学生较好的团队合作能力[6]。微软亚洲研究院院长张亚勤说,中国IΤ行业有很多聪明年轻的人才,但团队合作精神不够,所以每个简单的程序都能编得很好,但编大型程序就不行了。微软开发Windows XP时有5 000名工程师奋战了两年,有5 000万行编码。软件开发需要协调不同类型、不同性格、不同知识结构的人员共同奋斗,缺乏领军型的人才、缺乏合作精神是难以成功的。团队精神、协作能力是集体和个人成功先决条件,更是优越条件。培养教育学生学会和不同的人相处,这是一个人能否成功的关键。搞科研、做学问离不开群众的智慧和力量。软件技术专业本身涉及面广,且要求很强的动手能力,同学们需要相互借鉴,相互探索,以求进步;一个项目的设计如数学建模、网页制作,需要大量的人员参加,分组进行,相互交流,然后把个人的劳动交互在一起才能共同完成任务。举个例子,如若学生在个体设计方面随意为变量确定数据类型,采用不同的操作平台,势必很大程度上影响整个项目,损失不可低估,相应的,学生通过个人的努力,借助集体的智慧和力量,在集体中交流,他必定能有所创新,最终取得成功。中国软件开发多是几个人作坊式的运作,当务之急是,中国软件产业需要学习国际软件巨头管理体系、研发方法和产业化的能力,造就产业持续赢利能力。如果教育工作者只顾培养学生学习技术而忽略了培养学生合作能力,即使再优秀的学生也不能发挥其潜能。软件开发是许多人共同参与的计划,不同的软件开发阶段需要不同的人员相互沟通。

8)培养学生很强的时间观念。

5 结 论

总之,如何针对软件技术专业学生特点,搞好学生软件开发能力的培养,是摆在我们每一个从事计算机教育的教师面前的重要课题。要系统地培养学生软件开发能力,必须从多方面入手,是一项系统工程,既需要教师的指导,也需要学生的自身努力。

[1]李志强.计算机专业软件开发能力的培养策略[J].计算机教育,2008(14):15-17.LI Zhi-qiang.Capabilities training strategy of computer professional software development[J].Computer Education,2008(14):15-17.

[2]蔡建平.软件开发综合能力培养的案例教学[J].计算机教育,2011(20):102-106.CAI Jian-ping.Case teaching software development ability[J].IT Educational,2011(20):102-106.

[3]瞿中,王练,程克非.培养适应社会需求的复合型软件人才研究[J].计算机教育,2007(8):75-77.QU Zhong,WANG Lian,CHENG Ke-fei.Training to adapt to the social needs of complex software talent research[J].It Education,2007(8):75-77.

[4]顾韵华,郑关胜.以系统开发能力培养为目标的计算机软件系列课程的构建[J].教育探索,2009(1):24-25.GU Yun-hua,ZHENG Guan-sheng.In system development ability training as the goal of computer software series of curriculum construction[J].Jeducation Exploration,2009(1):24-25.

[5]马乔林.论高职院校学生关键能力的培养[J].南通航运职业技术学院学报,2007,6(1):76-78.MA Qiao-lin.Theory of students in higher vocational colleges key ability training[J].Journal of Nantong Vocational and Technical Shipping College,2007,6(1):76-78.

[6]陆季春,刘海红,金奕.浅谈高职学生职业素质培养的内容建构和途径[J].南通航运职业技术学院学报,2006(4):17-18.LU Ji-chun,LIU Hai-gong,JIN Yi.Discuss higher vocational students’vocational quality training content construction and ways[J].Journal of Nantong Vocational and Technical Shipping College,2006(4):17-18.

猜你喜欢
编程软件职业
禅宗软件
守护的心,衍生新职业
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
软件对对碰
职业写作
我爱的职业
即时通讯软件WhatsApp