中国大学教学2005年第1期
32
软件工程专业的课程体系设计
●南京大学骆斌张大良邵栋
件工程是指开发、操作和维护软件系统的系统、规
范、可度量的方法。
从历史上看,软件工程学科曾
是计算机科学的一个分支,但随着软件产业不断发展的需求,传统的计算机学科逐步上升到计算学科,2001年IEEE 发布的计算学科教学规划把计算学科划分为计算机科学、计算机工程、软件工程、信息系统、信息技术和其他有待发展的学科等子学科,标志了软件工程这个名词作为与计算机理论相对应的各种软件实践技术的总称已经得到世界范围的公认。
我国在2001年底推出了示范性软件学院计划,把我国软件工程专业定位在面向软件产业培养高素质的工程型软件实用人才。
围绕这一定位,软件工程教育应该围绕大型软件开发过程中的工程方法、关键技术和相关工具展开,在专业教学过程力图使得学生具备科学世界观,掌握科学方法,具有扎实的软件基础,受到良好的软件工程训练,熟悉软件应用和工具,参与实际项目,拥有较好的职业素质。
本文研究软件工程专业的课程体系设计,在研究过程中引入了科学的方法,参照IEEE CC2001的成熟做法,首先明确专业的学科定位和人才培养定位,然后建立相关的知识体系,确定课程体系,最后确定课程设置和教学计划。
1. 软件工程专业的相关知识领域简介
课程体系必须建立在对本专业知识体系的全面研究之上。
作为软件工程专业人才培养的基本依据,我校编写的《复合型软件实用人才的知识体系》定义了基本素质BAS,计算机软件基础CSE,软件工程与软件管理SEM,数学、工程和职业基础MEP,软件系统与应用SSA,软件工具与产品STP6个知识体系子类,并在各子类之下细分为知识领域、知识单元和知识点三级。
为方便讨论课程体系设计,现将与专业相关的5个子类的知识领域简单列举如下:
(1)CSE定义了从事软件工作所应具备的软件专业基础知识,包括离散数学基础CSE.DS,程序设计与算法基础CSE.PF,计算机硬件基础CSE.CH,系统软件基础CSE.SS,数据库应用基础CSE.DB,网络通信基础CSE.NC 和软件构造技术CSE.CT等知识领域。
(2)SEM定义了软件工程与软件管理知识,包括软件模型与分析SEM.MA,软件设计SEM.DE,软件检验和有效性验证SEM.VV,软件演化SEM.EV,软件过程SEM.PR,软件质量SEM.QA和软件管理SEM.MG等知识领域。
(3)MEP定义了从事软件工作所应具备的数学、工程和职业知识,包括软件的数学基础MEP.MF,软件的工程基础MEP.EF,软件行业的职业素质MEP.PP,软件业的外国语能力MEP.FL等知识领域。
(4)SSA定义了从事某一方面软件工作应具备的专业或领域应用知识,包括网络工程与网络应用(计算机网络进阶AN,分布式计算DC,多媒体技术MM),嵌入式与实时系统SSA.EM,图形软件系统SSA.GH,信息系统SSA.IS(组织和管理GM,系统开发理论SD,智能信息处理IP,ERP系统EP,电子商务系统EC)等领域。
毕业生应该深入理解其中至少一个软件应用领域。
(5)STP定义了从事软件工作所应掌握的当前主流软件工具与软件产品,包括硬件,网络设备,PL,OS,DBMS,CASE工具等。
2.软件工程专业的课程体系设计策略
在确定软件工程专业的知识体系之后,紧接着应研究课程体系的设计策略。
课程体系设计策略包括课程启动策略、课程组织策略和特色课程设置策略。
课程启动策略主要有:(1)围绕算法设计展开的算法优先策略。
(2)自底向上展开的硬件优先策略。
(3)从计算机导论展开的广度优先策略。
(4)强调编程能力的程序设计优先策略。
(5)强调系统使用的命令优先策略。
(6)从面向对象展开的对象优先策略。
课程组织策略包括:(1)基于主题的组织模式,把知识体系中的每个知识领域组织成一门或几门课程。
(2)基于系统的组织模式,把每类计算机软硬件系统设置一门或几门课程。
(3)混合模式,在课程设计时不区分前两种方法。
特色课程设置策略依据本校的办学特色和研究专长确定。
软件工程专业的课程规划一方面应强调工程性、技术性、实用性、系统性、综合性和复合型,另一方面也要充分认识到强化基础在更快、更好、更有效地解决复杂软件的构造和应用方面起到的关键性作用。
因此,对于课程启动策略,传统计算机科学专业的课程启动方式并不适合于本专业,但工程优先策略也不适合于那些没有任何计算机基础的本科生;对于课程组织策略,基于主题的组织模式更多地具有科学研究属性,而基于系统的组织模式又不利于强化基础知识;对于特色课程设置策略,也应避免缺乏全面综合考虑,因人设课,从而造成特色课程系统性差,教学内容重复和遗漏并存。
我院在课程体系设计时认真考虑了上述因素,采用了
软
分阶段互动式的课程设置方法。
如下图所示,把课程体系设计分解为三个阶段,即基础知识教学阶段,专业技能教学阶段,工程实习教学阶段。
基础知识教学阶段共两学年,设计思路是达到强化学生基础知识的目的,实现“基础扎实、系统级认知和编程能力强”三个目标。
课程启动策略采取系统级认识和编程能力双优先的策略,设置《计算基础》课程,内容贯穿从芯片、汇编语言、系统调用到C语言,以程序设计为主线并引导学生的系统级认识能力;随后数学基础课程系列,硬件与系统软件课程系列,程序设计/数据结构/软件构造课程系列三路并行,力图达到“基础、系统和编程”三位一体的教学目标。
课程组织策略采取基于主题的组织模式,有利于学生掌握基础理论知识。
另外,专业教学阶段的某些基础课程也在此阶段进行,此类课程的设置综合考虑专业阶段和基础阶段的特点,以便较好地实现两个阶段的衔接,如《数据库技术》要考虑与软件基础和信息系统两个课程模块的衔接。
专业技能教学阶段共设48周,设计思路是强调学生工程性、技术性、实用性、系统性、综合性和复合型能力的培养,实现“熟悉软件工程技能、更完整的系统级认识和掌握某一方向的软件设计开发技术”三个目标。
在这一阶段中,综合考虑主干专业课程和特色课程的设置,基于办学特色设置若干动态可扩充的课程模块,全面考虑课程之间的关联,强调统一设计、统一规划。
学生在这一阶段必须选修一定数量的软件工程方向专业课和一个专业课程模块,达到“工程、系统和专业方向”三位一体的教学目标。
现阶段设置软件分析与设计、软件过程与管理、软件开发、嵌入式系统与应用、网络系统与应用、信息系统与应用、图形与图像处理等7个选修课程模块。
课程启动策略采取基础课优先方式,与软件基础模块共同确定一门衔接较好的基础课作为专业方向课程的启动。
课程组织策略采取系统的组织模式,有利于提高学生的软件系统开发应用能力。
工程实习教学阶段共设24周,设计思路是通过具体项目工作参与实际项目训练,通过毕业设计与论文培养总结概括能力,实现理论与实际结合、技能与职业素质结合的目标。
上述三个教学阶段是彼此联系和互动发展的,在课程体系设计中应充分考虑衔接性、系统性和创新性。
另外,软件产品和工具的知识体系仅设置少量课程,大都融合在具体课程之中;交流、沟通、讲演、写作和团队能力的培养也是这样。
我院还参照某些工程学科,独立设置课程设计类学分课程,如程序设计课程设计、软件工程课程设计以及与具体专业方向课程模块结合的课程设计。
常设性的学生软件设计比赛也被引入教学过程中。
3.软件工程专业的核心课程和主干课程设置
我校软件工程专业主要课程设置如下:(1)计算基础、面向对象程序设计、数据结构与算法、操作系统、计算机网络、数据库技术等软件基础课,离散数学、概率统计等数学课,软件工程、软件设计、人机交互、软件过程与管理、软件测试与可靠性等软件工程课为核心课。
(2)程序设计课程设计、软件工程课程设计、某一课程模块的课程设计、工程实习与毕业设计为必修环节。
(3)要求学生自选一个专业课程模块和3门以上综合素质课程,必须选修两门全英文教学的课程。
为促进教学效果,专业课全部采用双语教学,并要求实验成绩占总成绩的30%~60%。
学院还在四年级设置学生综合能力测试,对学生的动手能力、自主学习能力和职业能力进行考核,作为学生进入第三阶段教学的门槛。
□
33。