夏小娜 禹继国 曹宝香
摘要:从工程化的实践角度,对高等学校的软件人才素养教育展开研究。结合传统软件工程学科的培养方案,充分考虑软件生命周期过程的阶段性和软件自身的基本特点,以提高软件人才的专业素养和实践驾驭能力为目标,提出“软件分析与设计的统一”与“理论与实践统一”的软件工程实施方案。在具体的展开过程中,达成方案优化和人才素养深化的演化效用,实现“两统一”的有效融合,即“A&D”+“T&P”融合核心理念。
关键词:“A&D”+“T&P”融合;软件工程;专业知识架构;软件人才素养;软件生命周期;课程设计
0.引言
随着软件产业的快速发展,市场对软件人才的需求日益增加,对人才的软件能力属性和从业适应度也提出了更大的挑战。软件工程作为一个独立专业的人才培养模式,也已在各大高校展开。由于此专业起步慢、人才缺口大,关于其培养思路的探讨从开始设置本专业至今,都得到了业内教育界的积极思考。另外,软件工程是计算机高等教育的一个分支,在培养方案和培养模式的讨论议题上,在宏观上依然没有走出计算机基础学科的思维模式;在微观上关于专业方向和专业特色,很多的执行措施并没有太大明显的专业性思路。软件人才在专业性和特色性体现并不明显,更多还是盘旋在传统计算机学科专业的固化模式里。
长期以来,由于培养目标单一、培养过程与企业需求的脱节和错位,高校软件类人才培养不论在数量还是质量都难以满足产业高速发展的需要,也不能很好地做到柔性接口对接,无法为软件产业的发展壮大提供强有力的人才支撑。由此产生了软件实际需求的快速增长与适应性软件人才极度缺乏的矛盾,一方面人才缺口很大,另一方面高校的软件毕业生就业面依旧很窄,专用性不突出,通用性不健壮。对于软件产业的稳固发展,除了要有一定数量的研发人才之外,更欠缺的是批量熟练掌握软件技术原理、柔性适应新型需求、能够灵活贯彻软件行业专业发展目标的应用型技术和架构人才。
1.软件工程学科与软件素养
软件工程是一个成长中的学科,目前还存在不小成熟和提升的空间。它的理念来自于多个学科,并非一个单一的纵向纯粹理念,使它的工程特性体现并不明显。但它的培养目标和学科目的,以及培养对象和实施规范,却是一个典型的工科门类,这在很大程度上可以反映出软件工程的教与学可使用的材料、可借鉴的案例极为匮乏。文献关于软件工程教与学提出“软件工程所有的课程必须要根植现实基础”,并指出“软件的概念、原理,以及解决方法应该贯穿于整个教学活动中以帮助学生建立起一个软件工程心态”。后者的论断是软件工程的出发点也是终结点,所以在整个教与学的实施过程中,问题在于如何很好地提供一个基于以上两点的教学与实践环境,以帮助学生建立起一个“软件工程心态”。所以,软件工程学科的发展目标就是在人才培养过程中创设和浸入软件的可持续素养,是理论与实践的有效融合方案实施,更实现了人才与学科双向的自适应性和可发展性。
软件工程学科的特点决定了软件工程课程的综合性和实践性并重。传统的教学模式在理论和实践环节上都存在一定空缺。一方面,国内高校软件工程课程教学仍停留在课堂授课为主,实践环节薄弱。而理论教材相对于不断涌现的新技术、新方法、新工具,都显陈旧。软件工程的教材不可能做到一本到底。另一方面,学生由于缺乏完备充分的实际项目研发经验,不能很好地理解理论联系,做不到学以致用,做不到主动学习,导致学生学习完这门课程后仍难以面对一项完整的软件项目开发。在进行软件开发时会出现许多问题,如文档不规范、建模使用混乱、CASE平台体会不深、软件项目估算与度量没有方法、系统化软件测试过程等。这些弊端,无法建立起一个自主的“软件工程心态”,也并不能够很好地体会软件素养的真正实质是随需而动、随时而变,而不是纸上谈兵。
软件工程学科和软件工程课程都指出了一个重要参与因素,就是软件工程专业培养过程的实践性问题,这里一般规划了软件工程课程设计。在课程实施时做到课堂与设计的相辅相承、有效融合。软件工程课程设计的目标使学生系统地掌握软件工程的过程、方法和工具三要素,为学生将来从事软件的研发和管理奠定基础。软件工程教学内容是围绕软件生命周期展开的,其相关的过程阶段、开发技术以及工程化的开发过程(软件过程、配置管理、项目管理等)必须通过实际软件问题的实际求解过程以及团队合作进行体验,而综合的软件开发能力的锻炼和培养需要借助一个完整的软件项目开发过程,而不仅是一个小的作业或者几段程序的累砌。因此,以课程设计为基础的实践展开方案是巩固课程教学成果、培养学生软件工程应用能力的重要因素。为了高素质、高质量的人才必须强化理论与实践的结合和跟进,通过强化实践的素质培养来提升人才素养。
2.专业知识架构演化需求
软件工程的专业教授过程,是一个以软件生命周期为纵向线索的执行过程,涉及面广,学科间融合度大。整个知识体系的架构拓扑,不能偏离这条主线。但它的具体实施,并非仅是一个简单的直线序列,首先,需要一个全面扎实的基础底层知识支持,这里需要计算机、软件工程等相关学科的基本知识体系形成,例如数学、管理、经济学、计算机和软件技术基础等的前驱理念。其次,执行过程是个阶段间存在重叠、螺旋、迭代的局部整合结构,每个阶段间存在严格的前驱后继关系,逾越和跳跃的处理方式,均小可行,并且每个阶段的展开过程,有着自己的知识体系,同时都存在知识间的前因后果联系。再次,知识结构的纵向上升轴线,需要实践的并行跟进,实践反过来补充完善教学内容。接下来,进入项目实训过程,综合先期的理论知识和实践经验,以项目管理为指导,通过一个综合性中等及偏上的案例。最后,总结案例过程,汇总相关资料,进一步完善案例内容,补充优化下一阶段教学过程。
这里定义此架构为一个金字塔式的三维体系,如图1所示。
由于软件工程知识结构的综合性和特殊性,金字塔的每个横面和纵面展开细节是按需驱动的平台。并且,知识结构的新型性和技术性是展开细节的主旨思想,即软件工程的教科书知识点不可以拘泥于一本书。课程更多内容,来自于最新的科研、学术、文献和互联网资料。为了更好地完成实践意义和应用目标,在整个教学过程中,知识架构里需要一定实质科研项目的引入,并非几个简单的课程作业。这个实践环节,也是个重叠、螺旋、迭代、逐渐深入、实时反馈总结的过程。这一点,和软件工程的基础理论实施是相辅相承、相得益彰的。理论和实践的实施是专业知识中金字塔的刚性框架是不变的,同时它的参与细节和过程是目标牵引、技术跟进和理论优化完善的,所以此架构的演化,是基本结构不变,参与细节柔性优化。endprint
3.“A&D”+“T&P”融合理念及实施方案
基于图1所示的软件工程理论与实践进阶体系结构,提出“A&D”+“T&P”的融合理念。此理念体现了4个关键字:A&D、T&P、软件工程及适应性软件素养,其中A&D(Analysis&Design)表示软件的分析与设计素养的统一,T&P(Theory&Practice)表示理论与实施的相辅相承。在此理念的实施过程中,秉承软件工程实施过程和先期取得的成果,从软件工程学科的发展和软件从业人才培养角度出发,坚持实施和应用的先导地位,强化分析与设计能力的深化和提升、理论与实践的融合和相长。理念的研究思路强调了自主和适应,即从软件工程的教与学实践出发,紧紧围绕软件工程专业特点,突出人才的适应性和专业特色性,建立可行、自主的理论落实方案,实施深化提升软件素养的分析与设计过程的全面和通用,做到分析与设计、理论与实施的高效结合,推进课程实施和具体应用向实用推广过渡,突现软件工程人才“厚基础、宽口径、强适应、针对性”的素养结构。
在“A&D”+“T&P”的推进过程中,针对高校软件工程学科的专业教育,随着软件工程学科的逐渐细化及不同研究方向间存在的耦合性关联,加上其自身应用行业领域的广泛性和普遍性,计算机各类专用和通用人才的迫切需求,有关计算机在企业、公司、市场等各个角落举足轻重的地位和广阔的发展前景,以及它和其他门类专业间存在的千丝万缕的交互和融合关系,本理念实施方案的主旨目标着眼于高校计算机教育与自适应应用型人才培养的探讨和实施。其实施的架构粒度化为教材框架的适应性创设和更新、课程设计向实施应用的无缝过渡、传统理论基础与前沿技术技能的有效融合和统一及两条主线架构的分析与设计技能提升方案。图2所示为整个方案的实施结构及成果演化拓扑图。此理论的提出有如下创新和建设:
①本理念体现为4个方面的融合和统一,即自主教材建设,重视以课程设计为基准的应用进阶过程,强调基础理论与前沿技能理念的融合,以软件生命周期为主线,体现结构化及面向对象技术。
②A&D、T&P的融合和统一。做到了分析与设计多种思维方式的融合,理论与实施的教学相长和相辅相成。
③软件分析与设计的技能在整个软件素养培养过程的强化和深化。
④适应性软件人才素养的定位,打破课程,建立自主的学科知识结构拓扑规划思路。
⑤硕带本、高年级带低年级的连带式人才培养梯队建设。
⑥“课程设计一软件、嵌入式大赛组织一实践项目参与”的应用实施方案。
⑦基于以上6点,建设了自主教学的《软件工程》教材和讲义。
4&自主性创新型与工程化目标的架构创设
本理念的主旨实施目标是实现自主性创新型的专业建设,以及人才工程化的培养目标。结合图2所示实施结构及演化拓扑过程,在具体实施过程中,序列化为以下4个展开侧面。
4.1自主教材框架的实施
软件工程是计算机学科中一个年轻并充满活力的研究领域,与此相关的软件工程课程是高等院校计算机教学计划中的核心课程。参考大量的国内外软件工程学科教材,从实际出发,总结多年的教学、科研和学科成果,结合软件工程及计算机专业人才素养提升深化的需求,在多个实际软件项目研发过程中积累经验教训,充分考虑软件工程和计算机专业本科生和研究生的知识结构,以软件的生命周期为线索,结构化和面向对象杂揉交织为分析与设计统一理念,项目规划为基本渗入点,统筹传统软件工程和现代软件工程的知识结构特点,规划书稿章节,深入浅出,理论联系实际,在实践中总结理论要点,有效组织书稿内容,自成体系。教材已由科学出版社出版,并在软件工程、计算机专业展开讲授,同时成为软件工程学科硕士研究生的基础参考书籍,取得了不错的效果。
4.2课程设计向实施应用过渡
课程设计是辅助软件工程课程实施的有效实践方案。在软件工程的课程讲授过程中,结合课程理论,已建成多个具体课程设计实施个案,具备了全套课程设计实施的文档、软件及作品。在课程设计的基础上,加大了两点力度:首先,软件、嵌入式大赛的组织和参与,进一步巩固深化了理论基础,演化了课程设计作品向参赛作品的转化,加强了软件的全面性、兼容性、商业化和实用性,从各类大赛的结果和作品自身特色上,充分体现了课程设计在知识点和技能点演化方面的亮点和优势。其次,在课程设计和参赛基础上,在软件工程教师的科研项目中,加大了本科生参与的力度,实现了学生阶段直接进入实施的目标,效果良好。有的学生在第4学年已可以进入软件公司直接展开研发工作,并有着不错的反响。
4.3基础理论与前沿技能理念的融合
基础理论与前沿技能理念的有效融合,体现在3个方面:软件工程学科课程拓扑的纵横两个侧面的思考,课堂教学、课程设计,实践应用的力度分化和统一。一方面,关于课程拓扑和知识结构衔接,做到了变通和灵活。根植实际和市场,建立起一套适时而动、随需而动的拓扑方案,即不拘泥一套培养计划,加大和突出实用性,以软件工程自身的特点为培养计划的实施线索和展开思路,在基础理论的讲授实践过程中,加大了新技术、新技能、新思想的渗透,并充分考虑和变通方向课和选修课的设置和实施。另一方面,打破了传统课堂填鸭式理论灌输方法,在启发式教学的理论基础上,灵活变通教与学角色、教师和学生身份,引导学生做专业学习的主人,强化讨论班、答疑课和讲座的力度,在讨论和答疑过程中,实现了知识点、技术点和前沿新技能由点到线、由线到面的统一。再者,建立了有效的硕带本、高年级帮低年级的培养梯队。不定时地让研究生和高年级本科生走进在授课程,交流研发经验,总结失败教训,交流学习和实践心得,鼓舞了学生自主学习的主动性和自觉性。
4.4软件分析与设计的两条线索
在上述展开过程中,打破了传统结构化和面向对象两个思路分阶段实施的思路,转以软件生命周期为主旨线索,建立了衔接有效的线索阶段划分。针对每一阶段,做到了结构化和面向对象两种思维方式的并行化展开,在对比中加强阶段目标的实现方式,在实现中加强两种思维方式在软件运作过程中的意义。
5.实践应用情况
本理念的实践应用本着“以服务为宗旨,以就业为导向”的办学方针,更新人才培养观念,把适应性人才的自主培养放在极其重要的位置,切实从专业学科本位向职业岗位和就业本位转变,实现教育与就业的对接,切实提高了软件专业素养。
自主教材框架的实施,打破了传统课堂与设计隔离的弊端,建立了多渠道的学习和实施方式。在实施中,巩固了实践的引导作用,在实践中自主完成理论的深化和融会贯通。由于教材的应用案例为多年的经验总结,理论基础的成形参阅了大量的书籍和文献,成熟、稳定、熟练、典型、规范,提供了身临其境的氛围和案例过程。起到了事半功倍、触类旁通的启发式教学目的,效果良好。
灵活变通的学科拓扑方案设计,加大了实践应用课程和选修课程的力度,强化了课程设置的适时、适人和适景,以课程设计为驱动,拓宽了学生的专业视野和觉悟。
提升了学生分析设计软件的技能,尤其在全面性和商业化方面取得了长足进步,提高了学生参与各类比赛和各项科研项目的热情,成果奖项逐年上升。
“硕带本、高带低”的帮带方式,加强了学生间的交流,提高了学生的学习兴趣,从另一层次上强化了学生参与实践、勤于思考、勤于应用的热忱。
同时,该成果的实施,催化了多个软件工程学科的科研项目立项和研发,多个软件成果屡获大奖。
6.结语
“分析与设计(A&D)”和“理论与实践(A&D)”统一的专业素养模式是软件工程学科教育模式的一次创新尝试,对“厚基础一宽口径”的工程型人才培养有着重要的指导意义。此理念从高层次人才需求角度出发,强调项目实践研发能力的前提,在学科教育实际相关的“教学、科研、实训”等环节,奠定理论的厚度和实践的广度,强化了人才能力结构关于项目架构和纵向实施的分析和设计的关键驾驭侧面。此专业素养模型的实施,显著加深了理论课程的“授受”效果,调动了学生学习和实践的自主性和积极性。另外,该模型有效改良演化了课堂与实践脱节、培养与就业脱节的传统计算机学科教育弊端,达成师生共同的知识进阶和实践参与过程,教与学的互动反过来优化了教师的专业和教学素养,实现双赢。endprint