刘强
清华大学软件学院
Thinking About the Development of Software Engineering Education
Abstract
The demand for skilled software developers is growing at an extraordinary rate as software is being used in an ever widening set of domains. Software engineering education is evolving and changing to meet this need. This paper discusses the historical development of software engineering education, and surveys foundational topics including emergence of a new discipline, education programs, educational community and assessment of the current status. Finally, this paper gives a perspective on the future about software engineering education.
软件工程已经走过了四十年的路程,随着全球网络信息化时代的到来,正在迈入一个新的发展阶段。伴随着软件工程的发展进程,软件工程教育在逐渐形成自己体系的同时,也需要不断地更新和发展,以适应和满足社会对软件工程人才提出的新要求。因此,网络时代为软件工程教育的发展和成熟带来了新的机遇和挑战。
1. 软件工程学科
众所周知,软件工程的概念是在1968年举行的NATO会议上,为了解决“软件危机”问题而提出的。软件工程在四十年的发展历程中,产生了许多有影响的方法、技术和工具,取得了广泛的成功应用和最佳实践,在工业界获得了普遍认可。但是,软件工程是否应该成为一个独立学科依然是一个颇有争议的问题[1]。
在学术界,人们争议的主要焦点集中在软件工程与计算机科学之间的关系上,即二者是存在一定交集的两个独立部分,还是前者是后者的一个子集。IEEE-CS/ACM在Computing Curricula 2005(CC2005)中对整个计算领域进行了不同学科划分,清楚地表明软件工程与计算机科学是完全独立的两个学科,但是二者存在着大量的交叉[2]。
在工业界,人们往往忽略计算领域的学科划分,从各自职业的角度对软件工程有着不同的理解。通常情况下,“工程师”资格在相关工程领域的许可范围具有严格的界定,但是“软件工程师”却不相同,其职位和资格基本上是随需而定的,缺乏一个统一的公认标准,在正规教育和职业认证中也很少关注这一点。
我国软件工程专业的建设始于20世纪80年代初,90年代发展成为计算机软件与理论二级学科下的一个专业方向。近年来,伴随着我国软件行业的蓬勃发展,软件工程专业正以惊人的速度在发展壮大。国内学者对于软件工程的学科定位也存在着不同的看法,一种观点
认为软件工程只是计算机科学与技术的一部分,尽管在近几年发展迅速,但是其学科内涵无法单独分离;另一种观点认为软件工程已经发展成为一个与“计算机科学与技术”并行的独立学科,仅仅在现有的“计算机科学与技术”学科内以不变应万变、以内涵扩大调整的量变来应对业已发生的质变,难以满足软件技术的快速发展、产业结构的变革性调整、产业的逐步优化升级等方面的迫切要求,建议增设软件工程一级学科。
总之,无论是软件工程领域的发展还是软件工程学科的争议,它们都反映出软件工程是一个年轻而有活力的新生事物,具有被广泛应用和有待成熟的双重特性。软件工程自始至终致力于解决软件开发中的问题,正逐步呈现出成熟发展的态势。
2. 软件工程教育计划
在初期,软件工程只是属于计算机科学教育计划的一门或多门课程,这些课程至今在计算机科学教育计划中发挥着重要的作用。20世纪70年代末期,美国在制定研究生教育计划时采纳了IEEE-CS提出的制定软件工程教程的建议,为软件工程教育打下了基础。在英国,最早的本科软件工程教育计划开始于1985年的英国皇家学院和1988年的谢菲尔德大学。
20世纪80年代末和90年代初,软件工程教育得到卡内基·梅隆大学软件工程研究所(SEI)的发展和支持。在调查软件工程教育现状的基础上,卡内基·梅隆大学建立了软件工程硕士教育计划(MSE),并组织和推动软件工程教育者研讨会,出版了研究生的软件工程推荐教程。1987年,SEI发起和资助了第一届软件工程教育和培训会议(CSEET),为软件工程教育者提供了一个论坛,提出和讨论软件工程教育的观点、方法和活动。在1995年,作为软件工程教育计划的一部分,SEI建立了关于软件工程教育和培训的一个工作组(WGSEET),致力于本科软件工程教育计划的研究和开发。1993年,IEEE-CS和ACM为把软件工程建设成为一个专业,建立了IEEE-CS/ACM联合指导委员会。随后,该指导委员会被软件工程协调委员会(SWECC)替代,开发了软件工程职业道德规范、本科软件工程教育计划评价标准、软件工程知识体系(SWEBOK)。2004年8月,全世界500多位来自大学、科研机构和企业界的专家、教授经过多年的努力,推出了软件工程知识体系、软件工程教育知识体系(SEEK)两个文件的最终版本,标志着软件工程学科在世界范围正式确立,并在本科教育层次上迅速发展[3]。
20世纪80年代初,我国开始探索软件工程教育,部分高校面向研究生开设了软件工程课程。1984年和1985年,在原国家科委的支持下,北京大学和复旦大学分别举办了共四期软件工程研究生班。2001年,经教育部和国家计委批准,全国成立了35所示范性软件学院,后增加到37所。各高校软件学院为培养高层次、实用型、复合型、具有国际竞争力的软件工程人才,开发了本科生和研究生软件工程教育计划。2005年,教育部组织编写了我国软件工程专业规范,并于2006年成立了软件工程专业教学指导分委员会。这些举措有效地促进了我国软件工程学科的发展,标志着我国软件工程教育开始走向成熟。
从我国经济发展和软件产业的需要出发,我国的学位设置既要有利于培养理论创新人
才,也应该有利于培养技术创新人才和工程创新人才。因此,部分专家建议借鉴美、英、法、澳、新西兰、新加坡等国家设置的软件工程学位体系,考虑在我国设置如下学位序列:
(1) 在科学学位系列中,将“软件工程”设置成与“计算机科学与技术”并列一级
的学科,设置软件工程的学士、硕士和博士学位。
(2) 在专业学位系列中,设立软件工程领域,逐步完善专业学位系列,包括软件工
程专业硕士和软件工程专业博士。
3. 软件工程教育研究
在软件工程教育的发展和成熟过程中,许多软件工程教育团体开展了有意义的研究和推动工作。目前,比较有影响的软件工程教育国际会议包括CSEET、WGSEET、IEEE教育前沿会议、SIGCSE、ASEE年会等。
CSEET是一个软件工程教育与培训会议,首次会议于1987年4月由卡内基·梅隆大学SEI发起和举办,致力于软件工程知识体系和教育计划的研讨和交流。WGSEET是一个软件工程教育与培训工作组,于1995年由卡内基·梅隆大学SEI创建,探讨软件工程教育的研究与发展,与软件工程教育与培训组织共享信息和最佳实践方法;该组织于1999年提出了一个技术报告,为开发本科软件工程教育计划提供指导。除了美国之外,还有许多国家和国际组织为提高软件工程的教育地位,在一些软件工程国际学术会议中设立软件工程教育进展与跟踪的研讨内容。
2006年,教育部组织成立了软件工程专业教学指导分委员会,进一步开展我国软件工程专业规范的研究与推广工作。该组织在2007年和2009年分别举办了两届全国高校软件工程专业教育年会,旨在为高校软件工程专业教学人员提供一个广泛交流的平台,共同探索高等学校软件工程专业课程体系、教学质量标准和评估体系的建设,研讨专业基础和核心课程教学内容体系、教学方法和教学手段的改革与创新,探讨软件工程专业实践教学体系的建设与企业合作以及基于现代信息技术平台的优质教学资源建设与共享等。目前,该组织正在进行我国软件工程专业规范的完善和修订工作。
4. 软件工程人才培养
目前,国外在软件创新人才培养模式上形成了不同的层次和风格,包括侧重于计算机科学模式、侧重于软件技术模式、侧重于工程训练模式等,出现了像美国卡内基·梅隆大学(CMU)那样的顶尖学校,也有知名的爱尔兰工程学院等普通大学。像CMU这样的国际著名大学在软件工程领域不仅具有很深入的学术研究成果,而且通过CMM等形式极大地影响软件企业能力成熟度的认证与提升以及政府采购流程的控制。
在国内,目前开设软件工程专业的学校达200所以上,其中包括37所国家级示范性软件学院和43所省级示范性软件学院,另外还有一些院校在计算机科学与技术一级学科下自行开设软件工程方向。在本科生方面,我国软件工程专业的人才培养已经形成了较为完整成
熟的本科生培养体系,成功培养了大批软件实用人才,并受到了业界的广泛欢迎。在研究生方面,国家示范性软件学院以培养高层次、实用性、复合型、国际化的软件工程人才为目标,已有多届全日制软件工程硕士走上工作岗位,取得了巨大的经济效应和社会效应。
根据国家示范性软件学院的统计,截止2008年12月,已累计为国家输送了4万多名毕业生,其中本科生18000多名,研究生22000多名。企业普遍认为示范性软件学院的毕业生在外语实用能力、软件研发能力、工程管理以及创新能力等方面较为突出。
尽管如此,我国在软件工程人才的培养体系方面还存在着明显不足。在现有的计算机科学与技术的学科体系下,软件工程教育更偏重于理论与技术,学科设置的空白也限制了软件工程教育的整体发展。目前,软件产业不仅需要编程、测试人员,更需要设计、方案构架人员,还需要具有领域知识的复合型技术、销售和管理人才。因此,软件工程教育必须依据就业和产业结构调整的发展趋势,先于市场变化预测和调整学科专业布局和层次结构。
5. 未来展望
信息社会不断增长的软件人才需求同教育供给(特别是优质专业教育)不足的矛盾,已成为软件工程教育发展面临的一个重要问题,解决问题的关键之一是需要在不断的教学探索之中摸索出一个具有中国特色的软件工程教育思路和方法,形成一个正确的学科体系,从而保证教育质量的不断提高,使软件工程教育得以健康稳步地发展。
我国软件工程教育应该继续推进软件工程的学科建设,进一步培养软件工程博士和软件工程专业博士,同时继续开展高等学校与企业界的深度合作,培养一批软件产业急需的网络一代软件工程高端人才,在软件工程研究的基础上,将最新的创新研究成果应用到大型软件项目的管理、设计和工程实施中,最终促进软件工程创新团队的形成和大批有市场竞争力的软件创新成果和产品的产生。
在可预见的将来,软件工程的人才需求仍将十分旺盛,软件工程人才培养已成为我国抢占高技术领域制高点的关键因素。因此,建设和发展我国软件工程学科体系的时机已经成熟,我们应当在借鉴国外成果和总结国内经验的基础上,研究我国软件工程人才的培养模式和教学改革,逐步形成具有自身特色的学科体系和人才培养模式,为我国经济社会的可持续发展奠定基础。 参考文献:
[1] Hislop, Gregory W. Software Engineering Education: Past, Present, and Future. In Software Engineering:
Effective Teaching and Learning Approaches and Practices. Idea Group Publishing. 2009
[2] ACM&IEEE. Computing Curricula 2005: The Overview Report. IEEE Computer Society and Association
for Computing Machinery. Piscataway, NJ: IEEE CS Press
[3] ACM&IEEE. Computing Curricula, Software Engineering 2004: Curricula Guidelines for Undergraduate
Degree Programs in Software Engineering. IEEE Computer Society and Association for Computing Machinery. Piscataway, NJ: IEEE CS Press
因篇幅问题不能全部显示,请点此查看更多更全内容