欢迎大家选修北京大学开设的软件工程MOOC课程。
随着信息技术的发展,软件已经深入到人类社会生产和生活的各个方面。软件工程是将工程化的方法运用到软件的开发、运行和维护之中,以达到提高软件质量,降低开发成本的目的。软件工程已经成为当今最活跃、最热门的学科之一。
本次软件工程MOOC课程是一门导论性课程,在11周、21次课的时间里,我们将全面介绍软件工程所涉及的各方面知识,包括软件过程、软件需求、结构化分析和设计方法、面向对象分析和设计方法、敏捷开发方法、软件测试、软件项目管理、软件开发工具和环境。通过课程讲授,让大家初步了解软件开发和维护的方法学,为进一步深入学习各专题打下基础。
课程还包含了实践环节,通过一个小型软件项目,大家可以体验软件开发的各个环节,并形成项目管理的意识。
一、本次课程的安排如下:
第1周 软件工程概论、软件过程
第2周 软件需求
第3周 结构化方法1
第4周 结构化方法2
第5周 面向对象方法1
第6周 面向对象方法2
第7周 面向对象方法3
第8周 面向对象方法4、敏捷开发方法
第9周 软件测试
第10周 软件项目管理
第11周 软件开发工具和环境
二、课程实践
本课程提供了三个实践题目,每个实践题目已列出三点基本需求,可在课程介绍的讲义中查看。请结合自身兴趣爱好从中任选其一,在仔细阅读并思考基本需求的基础之上额外补充一个需求,以此作为系统需求完成本次课程实践。
课程实践分为三个阶段,分别在第4周、第7周和第10周进行结构化方法、面向对象方法、软件测试和项目管理的实践,完成相应的文档报告。
实践成绩由同学互评给出,每位同学需要给其他三位同学的报告评分。
三、课程评分方案
在新的课程版本里,我们将课程实践所占的分数从30%降低到了12%。但我们依然鼓励同学们积极地完成课程实践的练习,加深对课程的理解。
(1)平时Quiz占88%
(2)课程实践占12%
祝大家学习愉快!
Overview
Syllabus
软件工程概论和软件过程
本周讲授软件和软件工程的基本概念,了解软件工程的知识框架。讲授软件生存周期过程和软件生存周期模型,介绍常见的软件生存周期模型。
软件需求
需求是软件开发的第一步。本周介绍软件需求的基本概念和分类,常见的需求发现方法,以及软件需求规约的相关知识。
结构化方法-1
结构化方法是经典的软件开发方法。本周介绍结构化分析方法和结构化设计方法的第一部分,讲解如何根据捕获到的需求进行分析,形成软件需求规格说明书,进而对软件进行总体设计。
结构化方法-2
结构化设计方法分为总体设计和详细设计两个步骤,本周继续介绍总体设计的体系结构设计、接口设计和数据设计部分,以及如何进行详细设计。
面向对象方法-1
面向对象方法是另一个经典的软件开发方法,从本周开始,我们将用四周的时间全面介绍该方法。本周我们学习统一建模语言UML,面向对象方法可采用UML来描述客体以及客体之间的关系。
面向对象方法-2
本周继续介绍UML。UML除了提供描述客体以及客体之间关系的术语以外,还提供了诸多建模工具,掌握这些建模工具对学习面向对象方法至关重要。
面向对象方法-3
在学习了UML的基础上,本周介绍面向对象分析和设计方法,讲解如何以面向对象的世界观、采取一定的步骤和方法来进行软件的分析和设计。
面向对象方法-4和敏捷开发方法
本周的第一次课讲授面向对象方法的最后一部分:面向对象设计中的人机交互、控制驱动、数据管理部分的设计,以及面向对象编程。第二次课介绍敏捷开发方法。敏捷开发方法与传统重过程的开发方法不同,强调对快速变化的需求的适应。
软件测试
测试是软件开发过程中非常重要的一个环节。本周从软件测试的概念入手,介绍测试的基本方法和常用技术,讲解软件测试的具体步骤。
软件项目管理
良好的项目管理是软件项目成功的重要因素,本周介绍项目管理的基本概念以及软件项目管理的概念,讲授CMM和ISO9000两大项目管理规范。
软件开发工具与环境
本周介绍常见的软件开发工具和环境,对具体软件开发有重要帮助。
Taught by
孙艳春