当前位置:文档之家› 软件工程专业课程

软件工程专业课程

软件工程专业的课程体系设计骆 斌 张大良 邵 栋1 210093)(南京大学软件学院 1、引言南京市汉口路 22 号软件工程是指开发、操作和维护软件系统的系统、规范、可度量的方法。

从历史上看, 软件工程学科曾是计算机科学的一个分支,但随着软件产业不断发展的需求,传统的计算 机学科逐步上升到计算学科, 2001 年 IEEE 发布的计算学科教学规划把计算学科划分为计算 机科学、计算机工程、软件工程、信息系统、信息技术和其他有待发展的学科等子学科, 标志了软件工程这个名词作为与计算机理论相对应的各种软件实践技术的总称已经得到世 界范围内的公认。

我国在 2001 年底推出了示范性软件学院计划,把我国软件工程专业定位在面向软件产 业培养高素质的工程型软件实用人才。

围绕这一定位,软件工程教育应该围绕大型软件开 发过程中的工程方法、关键技术和相关工具展开,在专业教学过程力图使得学生具备科学 世界观,掌握科学方法,具有扎实软件基础,受到良好软件工程训练,熟悉软件应用和工 具,参与过实际项目,拥有较好职业素质。

本文研究软件工程专业的课程体系设计,在研究过程中引入了科学的方法,参照 IEEE CC2001 的成熟做法, 首先明确专业的学科定位和人才培养定位, 然后建立相关的知识体系, 再后确定课程体系,最后确定课程设置和教学计划。

2、软件工程专业的相关知识领域简介 课程体系必须建立在对本专业知识体系的全面研究之上。

作为软件工程专业人才培养 的基本依据,我校编写的《复合型软件实用人才的知识体系》定义了基本素质 BAS,计算 机软件基础 CSE,软件工程与软件管理 SEM,数学、工程和职业基础 MEP,软件系统与应 用 SSA,软件工具与产品 STP 等 6 个知识体系子类,并在各子类之下细分为知识领域、知 识单元和知识点三级。

为方便讨论课程体系设计,现将与专业相关的 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) ,嵌入式与实时1骆斌,教授,副院长,博士;张大良,教授,副校长,软件学院教学委员会主任;邵栋,讲师。

联系邮件, luobin@。

系统 SSA.EM,图形软件系统 SSA.GH,信息系统 SSA.IS(组织和管理 GM,系统开发理论 SD,智能信息处理 IP,ERP 系统 EP,电子商务系统 EC)等领域。

毕业生应该深入理解其 中至少一个软件应用领域。

5)STP 定义了从事软件工作所应掌握的当前主流软件工具与软件产品,包括硬件,网 络设备,PL,OS,DBMS,CASE 工具等。

3、软件工程专业的课程体系设计策略 在确定软件工程专业的知识体系之后,紧接着就应该研究课程体系的设计策略。

课程 体系设计策略包括课程启动策略,课程组织策略和特色课程设置策略。

课程启动策略主要有:1)围绕算法设计展开的算法优先策略,2)自底向上展开的硬 件优先策略,3)从计算机导论展开的广度优先策略,4)强调编程能力的程序设计优先策 略,5)强调系统使用的命令优先策略,6)从面向对象展开的对象优先策略。

课程组织策 略包括:1)基于主题的组织模式,把知识体系中的每个知识领域组织成一门或几门课程; 2)基于系统的组织模式,把每类计算机软硬件系统设置一门或几门课程;3)混合模式, 在课程设计时不区分前两种方法。

特色课程设置策略依据本校的办学特色和研究专长确定。

软件工程专业的课程规划一方面应强调工程性、技术性、实用性、系统性、综合性和 复合型,另一方面也要充分认识到强化基础在更快、更好、更有效率地解决复杂软件的构 造和应用方面起到的关键性作用。

因此,对于课程启动策略,传统计算机科学专业的课程 启动方式并不适合于本专业,但工程优先策略也不适合于那些没有任何计算机基础的本科 生;对于课程组织策略,基于主题的组织模式更多地具有科学研究属性,而基于系统的组 织模式又不利于强化基础知识;对于特色课程设置策略,也应避免缺乏全面综合考虑,因 人设课,从而造成特色课程系统性差,教学内容重复和遗漏并存。

我院在课程体系设计时认真考虑了上述因素,采用了分阶段互动式的课程设置方法。

如下图所示,把课程体系设计分解为三个阶段,即基础知识教学阶段,专业技能教学阶段, 工程实习教学阶段。

时间 阶段三 24 周 软件 软件 分析 过程 阶段二 与设计 与管理 课程 课程 48 周 模块 模块 软件 开发 技术 课程 模块 目标 理论 实践 职业素质 三位一体 数学 工程 职业 课程 模块 课程 设计 学生 竞赛 工程 系统 专业方向 三位一体软件工程实习 与毕业设计 网络 嵌入式 信息 图形 其他 系统 系统 系统 与图像 待开发 与应用 与应用 与应用 处理 课程 模块 课程 课程 课程 课程 模块 模块 模块 模块阶段一 语言类基础课程 64 周软件基础与数学基础 课程模块其他公共基础课程基础 系统 编程 三位一体基础知识教学阶段共两学年,设计思路是达到强化学生基础知识的目的,实现“基础 扎实、系统级认知和编程能力强”三个目标。

课程启动策略采取系统级认识和编程能力双 优先的策略,设置《计算基础》课程,内容贯穿从芯片、汇编语言、系统调用到 C 语言, 以程序设计为主线并引导学生的系统级认识能力;随后数学基础课程系列,硬件与系统软件课程系列,程序设计/数据结构/软件构造课程系列三路并行,力图达到“基础、系统和编 程”三位一体的教学目标。

课程组织策略采取基于主题的组织模式,有利于学生掌握基础 理论知识。

另外,专业教学阶段的某些基础课程也在此阶段进行,此类课程的设置综合考 虑专业阶段和基础阶段的特点,以便较好地实现两个阶段的衔接,如《数据库技术》要考 虑与软件基础和信息系统两个课程模块的衔接。

专业技能教学阶段共设 48 周,设计思路是强调学生工程性、技术性、实用性、系统性、 综合性和复合型能力的培养,实现“熟悉软件工程技能、更完整的系统级认识和掌握某一 方向的软件设计开发技术”三个目标。

在这一阶段中,综合考虑主干专业课程和特色课程 的设置,基于办学特色设置若干动态可扩充的课程模块,全面考虑课程之间的关联,强调 统一设计、统一规划。

学生在这一阶段必须选修一定数量的软件工程方向专业课和一个专 业课程模块,达到“工程、系统和专业方向”三位一体的教学目标。

现阶段设置软件分析 与设计、软件过程与管理、软件开发、嵌入式系统与应用、网络系统与应用、信息系统与 应用、图形与图像处理等 7 个选修课程模块。

课程启动策略采取基础课优先方式,与软件 基础模块共同确定一门衔接较好的基础课作为专业方向课程的启动。

课程组织策略采取系 统的组织模式,有利于提高学生的软件系统开发应用能力。

工程实习教学阶段共设 24 周,设计思路是通过具体项目工作参与实际项目训练,通过 毕业设计与论文培养总结概括能力,实现理论与实际结合、技能与职业素质结合的目标。

上述三个教学阶段是彼此联系和互动发展的,在课程体系设计中应充分考虑衔接性、 系统性和创新性。

另外,软件产品和工具的知识体系仅设置少量课程,大都融合在具体课 程之中;交流、沟通、讲演、写作和团队能力的培养也是这样。

我院还参照某些工程学科, 独立设置课程设计类学分课程,如程序设计课程设计、软件工程课程设计、以及与具体专 业方向课程模块结合的课程设计。

常设性的学生软件设计比赛也被引入教学过程中。

4、软件工程专业的核心课程和主干课程设置 我校软件工程专业主要课程设置如下:1)计算基础、面向对象程序设计、数据结构与 算法、操作系统、计算机网络、数据库技术等软件基础课,离散数学、概率统计等数学课, 软件工程、软件设计、人机交互、软件过程与管理、软件测试与可靠性等软件工程课为核 心课;2)程序设计课程设计、软件工程课程设计、某一课程模块的课程设计、工程实习与 毕业设计为必修环节;3)要求学生自选一个专业课程模块和 3 门以上综合素质课程,必须 选修两门全英文教学的课程。

下表给出了核心课程和各模块重要课程及其与知识体系的关 联,其他 33 门专业课程以及公共课略。

课程名称 1. 计算基础 2. 离散数学 3. 计算机组织结构 4. 面向对象程序设计 5. 程序设计课程设计 6. 数据结构与算法 7. 操作系统 8. 计算机网络 9. 数据库技术 课程模块 软件基础 软件基础/数学基础 软件基础 软件基础 软件基础 软件基础 软件基础/嵌入式 软件基础/网络 软件基础/信息系统 知识体系中对应的知识领域 CSE.PF,CSE.CH,C CSE.PF CSE.CH CSE.PF,JAVA CSE.PF,JAVA CSE.PF,JAVA CSE.SS/CH/DB CSE.NC CSE.DB10. 软件工程 11. 软件工程课程设计 12. 软件构造 13. 编译技术 14. Linux 程序设计 15. 软件模型 16. 软件设计 17. 人机交互 18. 软件过程与管理 19. 软件测试与可靠性 20. 网络与信息安全 21. 分布式系统 22. 嵌入式系统 23. 管理信息系统 24. 商务智能 25. 多媒体技术 26. 计算机图形学 27. 知识产权 28. 概率统计 29. 软件工程经济学软件工程 软件工程/职业基础 软件基础 软件开发 软件开发/嵌入式 软件分析设计 软件分析设计 软件分析设计 软件过程 软件过程 网络/信息系统 网络 嵌入式 信息系统 信息系统 图形图像 图形图像 职业基础 数学基础 工程基础SEM SEM,MEP.PP CSE.CT CSE.SS CSE.SS,C,SSA.EM SEM.MA,UML,CASE SEM.DE,UML,CASE SEM.DE/VV SEM.PR/QA/EV/MG,CMM,ISO SEM.VV,CASE .AN,CSE.SS .DC,CSE.SS SSA.EM,Xcale SSA.IS,CSE.DB SSA.IS.IP .MM SSA.GH MEP.PP MEP.MF MEP.EF为促进教学效果,专业课全部采用双语教学,并要求实验成绩占总成绩的 30-60%。

相关主题