“软件工程”是北京大学信息科学技术学院本科生重要的专业基础课。该课程是北京大学几代老师努力建设的结晶,它有着悠久的历史和很好的基础。
为了培养具有国际竞争能力的高水平、创新型及复合型软件工程人才,满足中国软件产业发展的需要,北京大学积极探索和推进软件工程教育已有30年的历史。1980年在北京大学召开了第一次软件工程研讨会。1984年,北京大学首次为本科生开设了软件工程课程,培养学生在软件工程学科的基础知识以及基本实践能力。同年,在国家科委的支持下,北京大学和复旦大学分别举办了共4期软件工程研究生班,教学以工程实践为主,聘用国际上一些计算机专家任教,先后培养了近200名软件工程人才;1988年北京大学计算机科学技术系试办软件工程的本科专业;1996年北京大学开始招收软件工程领域的工程硕士。目前,在北京大学软件工程领域培养的人才,大部分已成为我国软件企业和国际软件企业的技术骨干。
通过多年北京大学软件工程的教学实践,杨芙清院士提出“软件工程教育体系需要多层次、多样化。比如,在本科教育阶段,重点培养软件工程学科的基础知识、基本的实践能力。而研究生教育阶段,首先要培养扎实的理论基础、软件工程技术和方法,然后再根据人才需求和职业发展分为两种,一是学术研究型,二是工程应用型”。
针对北京大学本科学生的特点,一是基础知识扎实、自学能力强,二是毕业后大部分继续学习深造,攻读硕士和博士学位(根据历届统计,大约在50%-60%), 这为软件工程教育课程体系的建设提出了新的挑战,即如何体现启发式和因材施教原则,如何适应持续培养“本-硕连读”学生的需要。
围绕以上问题,在杨芙清院士的指导下,王立福教授和梅宏教授带领软件工程课程授课小组,不断结合北京大学软件工程团队在大型软件工程科研项目上的丰富的研究和实践经验,结合软件工程领域最新的研究成果,对软件工程本科课程进行教学改革,创建了具有“注重基本概念,形成体系、夯实基础;依托科研任务,体验实际、锻炼能力”特点,满足多元化、多层次软件工程人才培养的软件工程本科课程知识体系。针对北京大学的学生具有很强的自学能力、不同专业和不同层次的学生对软件工程知识的需求也各不相同等因素的考虑,本课程先后设置了计算机科学技术专业班、非计算机专业班、软件工程实验班、高年级拓展班四个层次,以学生为本,因材施教,进行多元化、个性化的培养,让每个学生得到最大的收获。
在软件工程课程建设中,王立福教授和梅宏教授非常注重软件工程教材建设,亲自编写了一系列具有广泛影响的高质量软件工程教材和讲义。王立福教授编写的《软件工程》(第一版,1997年,北京大学出版社)和《软件工程》(第二版,2002年,北京大学出版社)已经被国内多所高校采用。王立福教授编写的《软件工程》(第三版)为国家十一五重点规划教材,2009年10月由北京大学出版社出版。杨芙清院士和梅宏教授主编的软件复用与软件构件技术丛书:《面向复用的需求建模》、《构件化软件设计与实现》和《面向复用的软件资产与过程管理》,2008年由清华大学出版社出版,在国内外计算机界深受好评。这些教材是北京大学软件工程团队研究几十年经验和成果的结晶,在理论上有许多创新,对各高校软件工程教学和科研有重大的指导意义。
软件工程课程的发展一直充分依托北京大学软件工程团队承担的国家科研任务,充分利用北京大学软件工程实验室的软硬件环境,以科研促进教学。以杨芙清院士带领的北京大学软件工程团队几十年来承担了数十项国家级重大科研项目。这些项目的研究成果如青鸟面向对象建模工具JBOO、青鸟配置管理系统JBCM、软件测试工具JTester、可视化体系结构建模工具ABCTOOL等成为学生进行软件工程课程实践的良好平台。这些大型软件工程项目的研发,使教师经历了从结构化开发方法到面向对象开发方法、再到基于构件的软件开发方法、以及到最新的网构软件开发方法的发展历程,培养了教师的软件工程实践能力,丰富了教师的软件工程实践经验。教师积极参加科研项目,并不断将科研成果和软件工程实践经验形成案例,贯穿到软件工程的教学和实践活动中。北京大学软件研究所积极接收本科生进入实验室相应研究小组从事软件工程课程实践。软件工程课程也结合科研项目,设置了很多课程实践课题供学生选择。软件工程课程通过科研促进教学,极大地培养了本科生的创新能力。
近年来,本课程形成了由王立福教授和梅宏教授带队,由教授3人、副教授2人组成的教学团队,5位主讲教师都拥有博士学位,不仅具有多年的教学经验,而且均主持或参加多项国家科技攻关计划、973计划、863计划等国家级项目,具有丰富的实际软件项目开发经验,科研和教学能力强。教学中配备大量硕士和博士研究生参与课程答疑和课程实践的指导。
北京大学软件工程课程通过30年的建设历程,已经形成了厚基础、高起点、具有数理背景和理工科相结合特色,充分体现“注重基本概念,形成体系、夯实基础;依托科研任务,体验实际、锻炼能力”课程建设思想,满足多元化、多层次软件工程人才培养、深受学生好评和产生广泛影响的课程。
课程负责人:王立福 教 授
王立福 ,博士,北京大学信息科学技术学院教授,博士生导师。现任北京大学软件工程国家工程研究中心副主任。曾任全国文科计算机教学指导委员会副组长。现兼任公安部信息安全标准化委员会成员。全国信息安全标准化委员会WG1成员。1985年从师杨芙清院士,1988年获北京大学理学博士学位。 | |
早在七十年代初,参加了我国DJS240机操作系统的研制开发。之后一直从事软件工程的教学和科研工作。主讲软件工程课程20年,带领教学团队研究先进的软件工程课程体系和教学方法,积极编写教材,提高教学效果。编著了一系列高质量教材《软件工程》(第一版、第二版和第三版),其中《软件工程》(第三版,北京大学出版社,2009年10月)为国家“十一五”重点规划教材;翻译了《软件工程最佳实践》(电子工业出版社,2004)作为辅助教材。自八五以来,主要参加了杨芙清院士主持的国家重点科技攻关课题:“软件工程环境标准化与实用化”,“软件工程环境工业化生产技术与系统的研究开发”。并主持了多项国家级科研项目,发表学术论文100余篇,并获得“国家科技进步二等奖”、“国家科技攻关先进个人”、“电子工业部科技进步特定奖”等多项奖项。 |
课程第二负责人:梅 宏 教 授
梅宏,博士,北京大学信息科学技术学院教授,博士生导师,教育部长江学者奖励计划特聘教授。北京大学信息科学技术学院院长兼软件所所长,高可信软件技术教育部重点实验室主任,软件工程国家工程研究中心主任。国家“核高基”科技重大专项实施专家组成员,国家863高技术计划信息技术领域专家组成员,中国计算机学会常务理事、系统软件专业委员会主任,中国软件行业协会软件工程分会理事长,信息产业部软件构件技术标准工作组组长。多个国内外重要学术期刊编委,多个重要国际学术会议程序委员会主席或大会主席。 |
|
长期从事软件工程及系统软件领域的研究工作,讲授软件工程、程序设计语言等课程,和杨芙清院士一起主编了软件复用与软件构件技术丛书:《面向复用的需求建模》、《构件化软件设计与实现》和《面向复用的软件资产与过程管理》(清华大学出版社,2008年),翻译了《软件工程-实践者的研究方法》(第五版)等软件工程教材,发表4篇教学论文。先后承担国家级科研项目十余项,两次担任国家重点基础研究发展计划(973计划)项目首席科学家。在国内外重要刊物与会议上发表学术论文120多篇。获得的奖励和荣誉主要包括:1998年国家科技进步二等奖(排名3),2006年国家科技进步二等奖(排名 2),2007年教育部高等学校技术发明一等奖(排名1),2008年国家技术发明二等奖(排名1);1997年霍英东基金青年教师奖(研究类),1997年中创软件人才奖,1998年中国优秀博士后奖,2001年国家杰出青年科学基金,2004年第八届中国青年科技奖,2006年度国家百千万人才工程国家级人选,2008年国家自然科学基金委创新研究群体负责人。 |
主讲教师:孙艳春 副教授
孙艳春 ,博士,北京大学信息科学技术学院副教授。1999年在东北大学获得博士学位,同年到北京大学计算机科学技术系工作。于2005年9月-2006年9月去美国耶鲁大学计算机系做访问学者。主要研究领域为软件工程、软件开发环境、软件复用及软件构件技术、计算机支持的协同工作等。目前任软件学报、计算机学报、电子学报等刊物的评审专家。 |
|
在学术研究方面,主持国家自然科学基金项目一项,合作主持国家863项目一项,参加国家973计划项目、国家863高科技发展计划项目、国家“九五”、“十五”重点科技攻关项目、国家自然科学基金项目等国家级项目十余项,现已发表学术论文50余篇,译著3部。在教学方面,承担了北京大学信息科学技术学院“软件工程”、“软件项目管理”和“方案工程”等课程的主讲工作,并为教育部-IBM精品课程“方案工程“课程的主持人,发表教学论文4篇,和王立福教授一起编写了国家“十一五”重点规划教材《软件工程》(北京大学出版社,2009年)。获得2009年IBM奖教金、2008年教育部-IBM精品课程等奖励。现任IEEE SWEBOK(Software Engineering Boby of Knowledge) 2010版的 KA editor. |
编号 |
章节 |
课时 |
内容摘要和知识点 |
难度和重要性 |
1 |
软件工程概述 |
2 |
介绍软件工程概念的提出以及发展历程,并分析软件开发的本质。 | 难度
★★ 重要性 ★★ |
2 |
软件过程 |
6 |
介绍如何定义一个项目的过程,主要涉及三方面的知识: (1)要了解软件开发通常需要做哪些工作,即软件生存周期过程; (2)要了解定义过程的基准框架,即软件生存周期模型; (3)是要了解一般性的过程规划技术。 |
难度
★★★ 重要性 ★★★★ |
3 |
软件需求与软件需求规约 |
2 |
介绍软件需求的定义、需求的分类、常用的需求发现技术,以及需求规约 | 难度
★★ 重要性 ★★★ |
4 |
结构化分析 |
5 |
结构化需求分析、需求验证及实例研究 | 难度
★★★★ 重要性 ★★★★ |
5 |
结构化设计 |
8 |
总体设计的目标及其表示、总体设计方法、设计评价准则与启发式规则、 设计优化、详细设计、软件设计规格说明书、实例研究。 |
难度
★★★★ 重要性 ★★★★ |
6 |
面向对象方法-UML |
8 |
面向对象方法发展以及UML(Unified Modeling Language)的提出, 表达客观事物的术语、表达关系的术语、组织信息的通用机制--包、模型表示工具。 |
难度
★★★★ 重要性 ★★★★★ |
7 |
面向对象方法-RUP |
6 |
RUP(Unified Software Development Process)的作用和特点、核心工作流。 | 难度
★★★★ 重要性 ★★★★★ |
8 |
软件测试 |
4 |
软件测试目标与软件测试过程模型、 软件测试技术、 软件测试步骤、 静态分析技术-程序正确性证明。 |
难度
★★★★ 重要性 ★★★★ |
9 |
软件工程管理 |
3 |
软件工程管理活动; 软件规模、成本和进度估算; 能力成熟度模型CMM; ISO9000标准。 |
难度
★★★ 重要性 ★★★★ |
10 |
软件开发工具与环境 |
2 |
计算机辅助软件工程(CASE)概述、 软件开发工具与环境的分类、 典型工具的介绍。 |
难度
★★★ 重要性 ★★★ |
11 |
习题课和作业讲评 |
4 |
||
12 |
课程实践汇报和讲评 |
4 |
一、主教材
王立福、孙艳春、刘学洋. 软件工程(第3版). 北京大学出版社,2009年. |
二、辅助教材
梅宏(译), 软件工程-实践者的研究方法(第5版),北京:机械工业出版社,2002年9月. |
王立福译,软件工程最佳实践项目经理指南,电子工业出版社,2004年. |
杨芙清,梅宏(主编),软件复用与软件构件技术丛书:构件化软件设计与实现,清华大学出版社,2008年,北京. |
杨芙清,梅宏(主编),软件复用与软件构件技术丛书:面向复用的需求建模,清华大学出版社,2008年,北京. |
杨芙清, 梅宏(主编),软件复用与软件构件技术丛书:面向复用的软件资产与过程管理,清华大学出版社,2008年,北京. |
孙艳春,陈向群,赵俊峰(译), 管理软件开发项目:通向成功的最佳实践(第2版), 电子工业出版社,2002年4月. |
- 郑人杰,马素霞,麻志毅. 软件工程. 北京:人民邮电出版社, 2009年11月.
- 周之英. 现代软件工程. 科学出版社,2000.
- 杨文龙. 软件工程. 北京:电子工业出版社,2000.
- 邵维忠,杨芙清. 面向对象的系统分析(第2版). 北京:清华大学出版社,2006年12月.
- 邵维忠,杨芙清. 面向对象的系统设计(第2版). 北京:清华大学出版社,2007年5月.
- Ian Sommerville. Software Engineering(8th Edition). Pearson Education Press, 2007.
- Roger S.Pressman. Software Engieering-A Practioner’s Approach(Sixth Edition), 北京:机械工业出版社, 2008年.
- 陈明. 软件工程实用教程. 北京:机械工业出版社,2004年10月.
- 张效祥主编. 计算机科学技术百科全书(第2版), 北京:清华大学出版社,2005年11月.