Software Engineering for 9 courses
A Chinese version of the guide Guide for Using Software Engineering.Translated by Liu Bochao and Kong Weiqiang.
------------------------------------------------------------------
《软件工程》三卷书可以通过选取其中的某些部分构成完整的9门课程 的教材。这9
门课程都可以看作一个学期内,通常12-14周,每周两次, 一次两节45分钟的课程。
2.1 本科生课程
2.1.1 软件工程的两门课程 (SE I, SE II)
卷3可以通过两种形式阅读和教授。卷3的写作风格使得学生能够分别学习
(1) SE I + SE II 卷3,软件工程非形式化课程。使用卷3中非形式化部分。
(2) SE I + SE II 卷3,软件工程形式化课程。该课程可能需要非形式化SE I +
SE II课程,取决于学生对非形式化部分的理解程度。
2.1.1.1 软件工程,SE I
目标: 涵盖领域和需求工程的基本原理和技巧。
效果: 使得读者能够熟练的从事领域和需求工程,使得读者能够继续 学习SE II.
该课程涵盖以下章节:
+ 卷3,第1章, 1.1 1.2 三联式软件工程模式
+ 卷3,第2章, 文档
+ 卷3,第5章, 现象与概念
+ 卷3,第8章, 领域工程概述
+ 卷3,第9章, 领域参与者
+ 卷3,第11章, 领域刻面
+ 卷3,第16章, 领域工程过程模型
+ 卷3,第17章, 需求刻面
+ 卷3,第19章, 需求工程过程模型
2.1.1.2 软件工程, SE II
目标: 讲授领域与需求工程的高级原理和技术,以及软件体系结构和 组件设计的基本原理和技术。
效果: 使得读者能够在软件开发过程中熟练领导其他软件工程师进行 软件开发。
该课程涵盖以下章节:
+ 卷3,第1章, 1.3,1.4,1.5 三联式软件工程开发模式
+ 卷3,第3章, 方法与方法学
+ 卷3,第4章, 模型与建模
+ 卷3,第6章, 下定义与定义
+ 卷3,第7章, Jackson的描述原理
+ 卷3,第10章, 领域属性
+ 卷3,第12章, 领域获取
+ 卷3,第13章, 领域分析与概念形成
+ 卷3,第14章, 领域检查与验证
+ 卷3,第18章, 需求参与者
+ 卷3,第20章, 需求获取
+ 卷3,第21章, 需求分析与概念形成
+ 卷3,第22章, 需求检查与验证
+ 卷3,第23章, 需求满足与可行性
+ 卷3,第25章, 硬件/软件协同设计
+ 卷3,第26章, 软件体系结构设计
+ 卷3,第27章, 组件设计用例
2.1.2软件工程的离散数学课程(DM)
目标: 涵盖基本的概念,如数字,集合,笛卡儿,类型,函数, lambda演算,代数和数理逻辑。
效果: 使得读者能够继续学习课程,并能够自学软件工程的形式技术,即卷1和卷2剩余的材料以及卷3中的形式部分。
该课程涵盖卷1中的以下章节(如果读者在本科课程中没有学习过):
+ 卷1,第1章 概述
+ 卷1,第2章 数字
+ 卷1,第3章 集合
+ 卷1,第4章 笛卡儿
+ 卷1,第5章 类型
+ 卷1,第6章 函数
+ 卷1,第7章 lambda演算
+ 卷1,第8章 代数
+ 卷1,第9章 数理逻辑
2.1.3 抽象与建模(A&M)
目标: 涵盖抽象与建模的基本原理和技术(使用形式规约工具RAISE规约语言, RSL)。
效果: 使得读者能够掌握抽象与建模的基本概念和实践技巧,做为学习LS&I, SS&L与SE/"UML"的必修课程。
该课程涵盖卷1中的以下内容:
+ 卷1, 第1章, 介绍
+ 卷1, 第10章, RSL原子类型与值
+ 卷1, 第11章, RSL函数定义
+ 卷1, 第12章, 面向属性与模型的抽象
+ 卷1, 第13章, RSL的集合
+ 卷1, 第14章, RSL的笛卡儿
+ 卷1, 第15章, RSL的列表
+ 卷1, 第16章, RSL的映射
+ 卷1, 第17章, RSL的高阶函数
+ 卷1, 第18章, RSL的类型
+ 卷1, 第19章, 应用式规约编程
+ 卷1, 第20章, 命令式规约编程
+ 卷1, 第21章, 并行规约编程
+ 卷1, 第22章, 其余
2.2 研究生课程
2.2.1 语言设计与实现课程(LD&I)
该课程必须先学习A&M课程 . 该课程可以先于编译器开发课程, 也可以同形式语义课程同时进行。
目标: 介绍符号学的基本原理和技术: 语用,语义和语法,包括指称和计算语义的基本的抽象和建模的原理与技术,包括设计类型,函数 式,命令式,模块以及并行编程语言的基本原理和技术。
效果: 使得读者能够设计适度高级,同时简单良好的编程语言,能够为解释和编译开发精确的需求。
该课程涵盖卷1和卷2如下的章节:
+ 卷2, 第1章, 介绍
+ 卷1, 第19章, 应用式规约编程
+ 卷1, 第20章, 命令式规约编程
+ 卷1, 第21章, 并行规约编程
+ 卷2, 第6章, 语用
+ 卷2, 第7章, 语义
+ 卷2, 第8章, 语法
+ 卷2, 第9章, 符号
+ 卷2, 第16章, 简单应用式语言
+ 卷2, 第17章, 简单命令式语言
+ 卷2, 第18章, 简单模块,命令式语言
+ 卷2, 第18章, 简单并行,命令式语言
2.2.2 UML化形式软件工程技术(SE/"UML")
该课程要求先选修A&M。
目标: 向读者介绍软件开发图形规约的原理和技术,比如UML,尽管 UML不是非常精确。
效果: 使得读者能够掌握Petri网,消息和活动序列图以及状态图,能够严格有效的专业使用UML。
该课程涵盖以下内容:
+ 卷2, 第1章,介绍
+ 卷2, 第10章,模块化,类图
+ 卷2, 第11章,状态机与机器
+ 卷2, 第12章,Petri网
+ 卷2, 第13章,消息和活动序列图
+ 卷2, 第14章,状态图
该课程是下面的课程(SS&L)的简化版。 对于两个课程卷2,第12章涵 盖了足够的
Petri网的内容。如果需要进一步的学习可以参考相关文 献(http:
//www2.imm.dtu.dk/~db/Software_Engineering/se-guide.pdf 给出)。
2.2.3 系统与语言的规约(SS&L)
该课程要求学生学习过A&M。
目标: 向读者介绍开发复杂系统包括实时嵌入式系统的高级抽象和建模的原理和技术。
效果: 使得读者能够自信的解决复杂计算系统的规约。
该课程建议涵盖卷2中以下内容:
+ 卷2, 第1章,介绍
+ 卷2, 第2章,分层与组合
+ 卷2, 第3章,指称与计算
+ 卷2, 第4章,构型: 环境与状态
+ 卷2, 第5章,时间,空间与时间/空间
+ 卷2, 第10章,模块化
+ 卷2, 第11章,状态自动机与机器
+ 卷2, 第12章,Petri网
+ 卷2, 第13章,消息与活动序列图
+ 卷2, 第14章,状态图
+ 卷2, 第15章,时间量化模型
2.2.4 高级软件工程课程(SE III A or B)
该课程为SE I 及 SE II 的形式化版本(参见2.1.1.1及2.1.1.2)。
SE III 涵盖与课程SE I 及SE II 相同的章节,但是这里重点强形式化部分。
该课程可以分为两个版本:
(1)SE III A:短版本,要求学生首先学习过课程SE I 和SE II。
目标: 向读者介绍形式软件工程的原理和技术,包括:领域建模,需求和软件设计。该课程的内容与SE I的内容一致,但是以形式化的方式介绍。
(2)SE III B:长版本,不要求学生学习过课程SE I和SE II,但是却涵盖了在2.1.1中提及的章节。
目标:向读者介绍形式软件工程的原理和技术,包括:领域建模,需求和软件设计,以及获取,分析,验证等主题的原理和技术。该课程的内容与SE I和SE II中的内容一致,但是以形式化的方式介绍。
课程SE III A要求学生学习过课程LD&I或者SS&L(或至少了解这两门课程的部分内容)。课程SE III B要求学生学习过课程LD&I和SS&L。
2.3 “单一”项目实践
这里“单一”是指:由3个到8个学生组成的一个学习小组,在一个学期内解决一系列相关习题,而这一系列习题构成了一个“单一”全面的项目实践。
卷1的附录A以及卷3的章节1.7.1分别概括了3个和15个“单一”全面的项目实践。这18个项目实践涉及到3卷书中每个章节后的习题。卷2的第6到第9章的课后习题也构成了一个这样的“单一”项目实践。
2.3.1 卷1的项目实践
该卷书的3个项目实践分别为:
(1)交通网络
(2)集装箱物流
(3)金融服务行业
第2 – 5章,第8 – 16章以及第18 – 21章的习题部分为这3个项目实践给出了19个任务分配。
2.3.2 卷2的项目实践
第6 – 9章的习题部分列举了14道关于一套演变的编程语言的语用,语义和语法的习题:首先(第6 – 9章),STIL,一个简单类型命令式语言,然后(第9章)是3个对STIL语言的扩展。通过这些扩展,我们可以得到一个完全的命令式语言的定义。这个定义允许程序员定义包括维和单元的类型(就像长度,可以用毫米,分米,米,千米等等来度量)。在卷2第16 – 19章的基础上,该课的授课教师可以将语言设计项目的课程扩展为解释器和编译器的开发项目。
2.3.3 卷3的项目实践
卷3的15个习题部分以领域,需求和软件设计工程为中心,回答了以下问题:
(1)什么是管理表单处理?
(2)什么是机场?
(3)什么是空中交通?
(4)什么是集装箱港?
(5)什么是文档系统?
(6)什么是金融服务系统?
(7)什么是货物物流?
(8)什么是医院?
(9)什么是制造工厂?
(10)什么是市场?
(11)什么是都市旅游行业?
(12)什么是铁路系统?
(13)什么是大学?
(14)什么是公共管理?
(15)什么是金融部门?
卷3的习题部分涵盖了与以上15个项目相关的70道习题。