📚 EL2311 – 软件开发2 完整课程课件结构汇总 (Week 1 - Week 23)
Week 2 - 编程语言与面向对象基础 (Languages and OO Basics) — 18页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第2周 - 编程语言与面向对象基础 |
| 2 | 编程语言 | Languages | 语言选择、优缺点、适用场景、权衡取舍 |
| 3 | 编程范式 | Programming Paradigms | 四大范式:过程式、函数式、逻辑式、面向对象 |
| 4 | 函数式与逻辑式编程 | Functional and Logic | 函数式编程特点、不可变数据、Lisp/Haskell/Scala/F# |
| 5 | 逻辑式编程 | Logic Programming | 基于公理和推理、Prolog、AI应用、非通用编程 |
| 6 | 过程式(命令式)编程 | Procedural (Imperative) | C/Pascal/Fortran/BASIC、控制结构、状态变化 |
| 7 | 过程式编程特点 | Procedural Features | 指令式布局、程序结构(开始-中间-结束)、循环 |
| 8 | 面向对象编程 | Object Oriented Programming (OOP) | 对象模型、属性与方法、封装继承多态、GUI适用 |
| 9 | OOP语言分类 | OO Languages | 纯OO语言(Ruby/Smalltalk)、混合语言(Java/C#/Python)、C++特殊性 |
| 10 | 其他语言差异 | Other Language Differences | 编译型语言、可执行文件、编译过程、机器码 |
| 11 | C#的特殊性 | C# Strangeness | CLR通用语言运行库、.NET框架、JIT及时编译 |
| 12 | C#跨平台特性 | C# Cross-platform | .NET版本、Windows兼容性、与C程序对比 |
| 13 | 解释型代码 | Interpreted Code | 脚本语言、解释器、无需编译、跨机运行需解释器 |
| 14 | 解释型语言 | Interpreted Languages | Perl/Python/Ruby/JS、Java字节码/JVM、语言分组方式 |
| 15 | 面向对象原则 | Object Oriented Principles | 对象概念、属性与方法、机器人臂示例、Accessor/Mutator |
| 16 | C#中的OO原则 | OO Principles in C# | RobotArm类代码示例、属性定义、访问器 |
| 17 | 实例化与构造器 | Instantiation | new关键字、构造函数、属性访问(get/set) |
| 18 | 下周预告 | Next Week… | 更多面向对象编程内容 |
Week 3 - 面向对象原则 (Object Oriented Principles) — 17页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第3周 - 面向对象原则 |
| 2 | 面向对象原则 | Object Oriented Principles | 本周主题:抽象、构造器、封装、继承、多态 |
| 3 | 抽象 | Abstraction | 模块化设计、信息隐藏、定义做什么而非如何做 |
| 4 | 抽象(续) | Abstraction | C#文本框示例、底层实现不可见、关注整体问题 |
| 5 | 封装 | Encapsulation | 数据与方法组合、机器人臂类示例、同一对象调用 |
| 6 | 构造器 / 析构器 | Constructors / Destructors | 构造器定义、签名差异、默认构造器 |
| 7 | 示例 | Examples | 三个重载构造器代码示例、对象默认值表格 |
| 8 | 析构器 | Destructors | 对象删除、C++内存释放、C#垃圾回收 |
| 9 | 罕见例外 | Rare exceptions | 非托管代码、高资源类、系统运行不可直接调用 |
| 10 | 继承 | Inheritance | 核心思想、属性行为继承、具体→通用 |
| 11 | 继承(续) | Inheritance | 机器人臂制造商示例、FanUC/Kuka特定类 |
| 12 | 继承 - 代码示例 | Inheritance - Example | RobotArm/KukaArm/FanUCArm代码、继承关系 |
| 13 | 继承说明 | Inheritance - Example | 粗体为继承属性、子类不继承超类构造器 |
| 14 | 多重继承 | Multiple Inheritance | 多来源继承、C++/Python支持、C#/Java不支持 |
| 15 | 致命菱形 | Deadly Diamond of Death | 移动机器人/机器人船/轮式机器人/无人机继承冲突 |
| 16 | 多态 | Polymorphism | 一个名字多种形式、方法重载、继承重载 |
| 17 | 多态(续) | Polymorphism | goHome()方法重写、同名不同实现 |
Week 4 - 接口与API (Interfaces and APIs) — 11页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第4周 - 接口与API |
| 2 | 接口与API | Interfaces and APIs | 本周主题:接口、保护、API;与上周内容关联 |
| 3 | 接口 | Interfaces | 接口定义、只含签名不含实现、多接口继承 |
| 4 | 接口代码示例 | Interfaces | robot/roboCar/roboArm接口继承代码示例 |
| 5 | 接口说明 | Interfaces | 相同签名不同实现、类+多接口继承 |
| 6 | 多接口继承代码 | Interfaces | robot/fanucRobot/drillingRobot多接口代码 |
| 7 | 接口继承详解 | Interfaces | fanucDrillingRobot继承说明、接口继承接口 |
| 8 | 保护 | Protection | 信息隐藏概念、保护属性/方法 |
| 9 | 访问修饰符 | Protection | Public/Internal/Protected/Private四级访问控制 |
| 10 | 保护代码示例 | Protection | topLevel/subLevel/Form1访问修饰符代码示例 |
| 11 | 应用程序编程接口 | Application Programming Interfaces | API定义、程序间通信、文档说明 |
Week 5 - 软件方法论 (Software Methodologies) — 16页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第5周 - 软件方法论 |
| 2 | 软件方法论 | Software Methodologies | 开发困难性、方法论定义、四大类型介绍 |
| 3 | 瀑布方法 | Waterfall Methods | 五阶段:需求分析→设计→实现→测试→运维;优点 |
| 4 | 瀑布方法 | Waterfall Methods | 缺点:难以适应变化;适用性:需求明确时 |
| 5 | 瀑布方法 | Waterfall Methods | (图示页) |
| 6 | 进化式方法 | Evolutionary Methods | 敏捷/极限编程、尽早发布频繁发布、原型迭代 |
| 7 | 进化式方法 | Evolutionary Methods | 缺点:缺乏可见性、结构不良;适用性:中小型系统 |
| 8 | 进化式方法 | Evolutionary Methods | (图示页) |
| 9 | 形式化方法 | Formal Methods | 数学概念、规格说明转换、安全关键组件 |
| 10 | 形式化方法 | Formal Methods | 缺点:不适用大规模、开发时间长;适用性:专业领域 |
| 11 | 形式化方法 | Formal Methods | (图示页) |
| 12 | 重用方法 | Re-Use Methods | 系统重用、内部组件/COTS商用现成组件、优点 |
| 13 | 重用方法 | Re-Use Methods | 适用性:通用问题、Microsoft Office示例 |
| 14 | 重用方法 | Re-Use Methods | (图示页) |
| 15 | 软件方法论概述 | Software Methodologies in General | 五阶段总结、大型组织分工、小型项目建议 |
| 16 | 注意! | Beware! | 警示:说做某事不等于真的在做 |
Week 6 - 需求与分析 (Requirements & Analysis) — 15页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第6周 - 需求与分析 1 |
| 2 | 需求与分析 | Requirements and Analysis | 五步骤回顾、本周聚焦前两个步骤 |
| 3 | 需求与分析 | Requirements and Analysis | 需求定义、用户需求vs系统需求、需求冲突 |
| 4 | 用户需求 | User Requirements | 自然语言风格、高级视图、故意模糊、非技术用户问题 |
| 5 | 用户需求 | User Requirements | 用户需求的四种问题、解决方法、内部文档风格 |
| 6 | 系统需求 | System Requirements | 技术性文档、ATM示例(UR→SR转换) |
| 7 | 系统需求 | System Requirements | 三类需求:功能/非功能/领域需求 |
| 8 | 功能需求 | Functional Requirements | 服务、输入输出、系统行为、完备性与一致性 |
| 9 | 功能需求 | Functional Requirements | 完备性(Completeness)与一致性(Consistency)目标 |
| 10 | 非功能需求 | Non-Functional Requirements | 可用性、准确性、成本、安全性、性能 |
| 11 | 非功能需求 | Non-Functional Requirements | 与功能需求冲突、测试指标定义 |
| 12 | 领域需求 | Domain Requirements | 领域特定要求、外部强加、文档完整性 |
| 13 | 系统需求文档 | Systems Requirements Document | 结构化文档、IEEE/ANSI 830-1998标准 |
| 14 | IEEE 830-1998 | IEEE 830-1998 | 标准说明页 |
| 15 | 参考文献 | References | Sommerville (2008) 软件工程第7版 |
Week 7 - 需求分析与设计示例实验课 (Requirements Analysis & Design Example Lab) — 12页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第7周 - 需求分析与设计示例实验课 |
| 2 | 从上周的实验课 | From Last Week's Lab Session | 自动化加油泵系统案例、信用卡支付、汽油/柴油/LPG |
| 3 | 油泵需求 | Pump Requirements | 三类需求回顾:功能/非功能/领域需求 |
| 4 | 油泵功能需求 | Functional Pump Requirements | 客户加油、信用卡支付、用户需求功能 |
| 5 | 油泵非功能需求 | Non-Functional Pump Requirements | 支付系统接口、安全性、性能、收据打印 |
| 6 | 油泵非功能需求 | Non-Functional Pump Requirements | 燃油输送限制、最小/最大量、储罐液位处理 |
| 7 | 油泵非功能需求 | Non-Functional Pump Requirements | 具体指标:5秒验证、加密通信、£5-£99限制 |
| 8 | 油泵领域需求 | Domain Pump Requirements | 非领域专家、车辆加满检测、停止输送 |
| 9 | 用例图 | Use Case Diagram | 系统用例图示 |
| 10 | 序列图(支付) | Sequence Diagram (Payment) | 支付流程序列图 |
| 11 | 序列图(加油) | Sequence Diagram (Fuelling) | 加油流程序列图 |
| 12 | 类图 | Class Diagram | 系统类图 |
Week 7 - 测试与调试 (Testing and Debugging) — 20页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第7周 - 测试与调试 1 |
| 2 | 测试与调试 | Testing and Debugging | Kernighan名言、错误不可避免、测试必要性 |
| 3 | 测试与调试 | Testing and Debugging | 单元测试与系统测试、本周聚焦单元测试 |
| 4 | 单元测试 | Unit Testing | 语法错误与逻辑错误、IDE检测 |
| 5 | Visual Studio 示例 | Visual Studio Example | 错误下划线、悬停信息、运行时错误 |
| 6 | 语法错误 | Syntax Errors | IDE信息谨慎对待、错误影响vs原因 |
| 7 | 语法错误 | Syntax Errors | 多语言切换、参考书与速查表 |
| 8 | 语法错误 | Syntax Errors | C#代码示例(除零、类型转换问题) |
| 9 | 逻辑错误 | Logical Errors | 更难发现、代码正确但行为不符、三种原因 |
| 10 | 逻辑错误 | Logical Errors | 逻辑错误比编译错误更危险 |
| 11 | 逻辑错误 | Logical Errors | 追踪方法:文本框/消息框、断点概念、F9设置 |
| 12 | VS 断点 | VS Breakpoints | 断点图示 |
| 13 | VS 断点 | VS Breakpoints | 断点执行、鼠标悬停查看变量、步进选项 |
| 14 | 步进功能 | Stepping Functions | Step Into/Over/Out详解 |
| 15 | 步进功能 | Stepping Functions | 代码行号示例、F10/F11/Shift+F11应用 |
| 16 | 异常 | Exceptions | 不可预测错误、外部输入、可恢复性 |
| 17 | Try, Catch, Finally | Try, Catch, Finally | 异常处理框架、三种语句作用 |
| 18 | 异常类型 | Exception Types | 常见异常:Format/InvalidCast/DivideByZero |
| 19 | 异常类型 | Exception Types | catch(Exception ex)代码示例、AccessViolation |
| 20 | 异常的使用 | Usage of Exceptions | 仅用于异常情况、不替代控制语句、性能代价 |
Week 8 - 系统测试 (System Testing) — 18页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第8周 - 测试与调试 2 |
| 2 | 测试 | Testing | 单元测试后进入系统测试、测试团队、黑盒/白盒测试 |
| 3 | 测试 | Testing | 三部分:集成测试、发布测试、性能测试 |
| 4 | 集成测试 | Integration Testing | 组件组合测试、API/接口测试、从小单元构建 |
| 5 | 发布测试 | Release Testing | 交付前测试、验收测试、黑盒测试、满足需求 |
| 6 | 性能测试 | Performance Testing | 压力测试、负载下的可靠性/正常运行时间/性能 |
| 7 | 性能测试 | Performance Testing | 极限负载下的错误发现、维护与升级规划 |
| 8 | 系统测试 vs 单元测试 | Systems vs Unit Testing | 为何不同团队、开发者视角vs测试者视角 |
| 9 | 系统测试 vs 单元测试 | Systems vs Unit Testing | 发现错误=成功、测试不应作为绩效衡量 |
| 10 | 测试用例设计 | Test Case Design | Whittaker原则:错误消息/缓冲区溢出/重复输入 |
| 11 | 等价域示例 | Equivalence Domain Example | 边界条件测试(3,4,10,11)、常规输入(7)、极端值 |
| 12 | 序列测试 | Sequence Tests | 多值序列输入、特定范围序列问题 |
| 13 | 序列测试 | Sequence Tests | Sommerville建议:单值序列、不同大小序列、边界访问 |
| 14 | 测试设计 | Test Design | 测试计划先行、测试模板记录输入与预期结果 |
| 15 | 测试表格 | Test Table | 两整数相加测试用例表(0-100范围、边界、无效输入) |
| 16 | 真实世界系统 | Real World System | 为何有缺陷系统、测试困难、经济现实、罕见错误 |
| 17 | 真实世界系统 | Real World System | 权衡:按时发布vs无错误发布、补丁更新、伦理考量 |
| 18 | 参考文献 | References / Bibliography | Whittaker (2002)、Sommerville (2004) |
Week 9 - 多线程 (Multithreading) — 19页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第9周 - 多线程 |
| 2 | 多线程 | Multithreading | 顺序执行vs并发、芯片设计哲学变化、多核处理器 |
| 3 | 多线程 | Multithreading | 适用领域:数学函数、UI解耦、大数据、多用户、中断 |
| 4 | 多少线程? | How many threads? | misconception:线程数≠核心数、内存限制、上下文切换 |
| 5 | 多少线程? | How many threads? | 线程优先级、队列插队、快速切换模拟并行 |
| 6 | 线程的问题 | Problems with threads | 设计谨慎、执行顺序不可控、同一代码多次运行结果不同 |
| 7 | 线程的问题 | Problems with threads | 颠簸、资源分割、竞争条件、算法设计、顺序操作 |
| 8 | 颠簸 | Thrashing | 上下文切换成本、线程饥饿、频繁切换导致CPU只做切换 |
| 9 | 颠簸 | Thrashing | 线程数量控制、硬件/其他任务影响 |
| 10 | 资源分割/共享 | Resource Splitting/Sharing | CPU时间共享、磁盘/通信/内存访问冲突、多线程收益有限 |
| 11 | 竞争条件 | Race Condition | 两进程同时访问同一资源、结果取决于先后顺序 |
| 12 | 竞争条件 | Race Condition | 银行转账示例:存款£100 vs 取款£80、顺序影响结果 |
| 13 | 算法设计 | Algorithm Design | 并行算法与顺序算法差异、数据分割、独立性、偏差 |
| 14 | 算法设计 | Algorithm Design | 并行算法效率、数据量阈值、小规模数据顺序更快 |
| 15 | 顺序操作 | Sequential Actions | 某些操作本质顺序:均值计算示例、分线程计算错误 |
| 16 | 顺序操作 | Sequential Actions | 正确方法:跟踪数量和总和、最后汇总计算 |
| 17 | 线程解决方案 | Threading Solutions | 锁、优先级、线程安全结构、线程关联性、死锁/活锁 |
| 18 | C#中的线程 | Threads in C# | BackgroundWorker(单任务后台)、ThreadPool、Thread |
| 19 | C#中的线程 | Threads in C# | 三种线程对比:控制级别、UI交互、前台/后台线程 |
Week 10 - 并发 (Concurrency) — 17页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第10周 - 并发 |
| 2 | 并发 | Concurrency | 线程之外的多进程访问、硬盘/数据库/串口/内存 |
| 3 | 处理并发 | Dealing with Concurrency | 锁的概念、共享锁和排他锁、读共享/写排他 |
| 4 | 锁示例 | Lock Example | 数据库两事务同一账户、丢失更新问题(无锁) |
| 5 | 锁示例 | Lock Example | 实现锁后的正确事务处理 |
| 6 | 锁 | Locks | 锁粒度:单元/行/列/表/整个数据库、可用性影响 |
| 7 | 锁的问题 | Lock Problems | 死锁:两进程各持资源等待对方释放 |
| 8 | 死锁 | Deadlock | 解决方案:中止重启、超时/预防/检测恢复 |
| 9 | 死锁 | Deadlock | 活锁:与死锁类似但持续请求资源、高CPU占用 |
| 10 | 超时 | Timeouts | 最简单死锁处理、等待时间限制、可能误判 |
| 11 | 死锁预防 | Deadlock Prevention | 时间戳优先级、Wound/Wait与Wait/Die策略 |
| 12 | 死锁预防 | Deadlock Prevention | Wound/Wait和Wait/Die策略对比表格 |
| 13 | 死锁检测与恢复 | Deadlock Detection and Recovery | 允许死锁发生、Wait-For-Graphs监控、循环检测 |
| 14 | 死锁检测与恢复 | Deadlock Detection and Recovery | 选择牺牲进程:效率、复杂度、饥饿问题 |
| 15 | 等待图示例 | Wait For Graph Example | 进程资源锁定等待表、有向图绘制、循环识别 |
| 16 | 死锁检测与恢复 | Deadlock Detection and Recovery | WFG图示、P5-P2-P4和P2-P3-P6-P7-P5循环、最佳中止候选 |
| 17 | 参考文献 | References / Bibliography | Connelly & Begg (2004)、Tanenbaum & Van Steen (2013) |
Week 11 - 并行与分布式 (Parallel and Distributed) — 10页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第11周 - 并行与分布式 |
| 2 | 并行与分布式处理 | Parallel and Distributed Processing | 线程与并发回顾、系统级别对比、重叠与争论 |
| 3 | 并行计算 | Parallel Computing | 共享资源(内存/处理器)、多核处理器、专用语言历史 |
| 4 | 并行计算 | Parallel Computing | 通信成本低、内存共享、多种硬件架构 |
| 5 | 并行架构 | Parallel Architecture | 共享内存:所有处理器访问所有数据、并发控制、昂贵 |
| 6 | 并行架构 | Parallel Architecture | 独立内存:各处理器控制、数据请求昂贵、更便宜 |
| 7 | 并行架构 | Parallel Architecture | 混合架构:私有+共享内存、复杂数据模型、昂贵且难设计 |
| 8 | 分布式计算 | Distributed Computing | 网络通信、廉价商品组件、大数据/云计算/IoT |
| 9 | 大数据 | Big Data | 分布式商品硬件、Hadoop框架、容错与故障重路由 |
| 10 | 共同问题 | Common Issues | 负载均衡、数据分配、存储位置、复制问题 |
Week 12 - 数据 (Data) — 12页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第12周 - 数据 |
| 2 | 数据 | Data | 系统最重要部分、数据收集/格式/存储/处理、数据vs信息 |
| 3 | 数据格式 | Data Formats | 传输考虑、文本格式优势、四种常见格式 |
| 4 | 纯文本 | Plain Text | 人类生成、邮件/文档、难以机器处理、正则表达式 |
| 5 | 纯文本 | Plain Text | 正则表达式示例、科学计数法检查、自然语言处理(NLP) |
| 6 | 结构化文本 | Structured Text | CSV/制表符分隔、分隔符区分值、机器人信息示例 |
| 7 | 结构化文本 | Structured Text | 易于构建解码、需预知布局、空值处理、搜索费力 |
| 8 | XML | XML | 可扩展标记语言、标准化数据表示、机器人信息XML示例 |
| 9 | XML | XML | 版本头、根元素、父子元素关系、C#本地库支持 |
| 10 | XML | XML | C#处理方式:XML Reader/XML Document、搜索优势 |
| 11 | JSON | JSON | JavaScript对象表示法、类似XML、机器人信息JSON示例 |
| 12 | JSON | JSON | XML vs JSON争论、紧凑性/可读性/采用度、.NET 4.5支持 |
Week 13 - 数据存储1 (Data Storage 1) — 14页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第13周 - 数据存储1 |
| 2 | 数据存储 | Data Storage | 长期持久存储、平面文件vs数据库、选择依据 |
| 3 | 平面文件存储 | Flat File Storage | 一次性读写、追加困难、XML/JSON格式、适用场景 |
| 4 | 平面文件存储 | Flat File Storage | 单用户、大数据量操作、很少更新、日志系统 |
| 5 | 数据库系统 | Database Systems | DBMS处理访问/安全/并发、关系数据库最常见 |
| 6 | 数据库系统 | Database Systems | Oracle/MySQL/SQLServer/Access/PostgreSQL/DB2 |
| 7 | 关系数据库系统 | Relational Database Systems | Codd发明、元组与属性、第一范式、主键 |
| 8 | 关系数据库系统 | Relational Database Systems | 索引、外键、数据完整性、表拆分 |
| 9 | 示例关系 | Example Relations | Inventory表和Supplier表、组件与供应商信息 |
| 10 | 数据库语言 | Databases Languages | DDL数据定义语言、DML数据操纵语言、SQL统一 |
| 11 | 数据库语言 | Databases Languages | SQL查询、与编程语言集成、ANSI/ISO标准 |
| 12 | 为何RDBMS流行 | Why are RDBMs so Popular? | ACID属性:原子性、一致性、隔离性、持久性 |
| 13 | 为何RDBMS流行 | Why are RDBMs so Popular? | 原子性详解:全有或全无、回滚/撤销、事务日志 |
| 14 | 为何RDBMS流行 | Why are RDBMs so Popular? | 一致性、隔离性、持久性详解 |
Week 14 - 数据存储2 (Data Storage 2) — 22页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第14周 - 数据存储2 |
| 2 | 数据存储 | Data Storage | RDBMS弱点、非关系型数据库、替代存储技术 |
| 3 | 数据存储 | Data Storage | OLTP联机事务处理 vs OLAP联机分析处理 |
| 4 | 数据存储 | Data Storage | 行存储vs列存储、物理磁盘存储方式 |
| 5 | 数据存储 | Data Storage | 行存储示例:按行顺序存储、查询整行快 |
| 6 | 数据存储 | Data Storage | 列存储示例:按列顺序存储、单列查询快 |
| 7 | 数据存储 | Data Storage | 列存储优缺点、范围查询、行信息重构 |
| 8 | 面向对象数据库 | Object Oriented Databases | OO模型存储、继承等特性、与OOP语言无缝集成 |
| 9 | 面向对象数据库 | Object Oriented Databases | 语言绑定限制、宿主语言查询、无索引 |
| 10 | 图数据库 | Graph Databases | 复杂数据模式、节点与边、时空关联、RDBMS困难 |
| 11 | 图数据库 | Graph Databases | 查询速度扩展性、存储效率、独特查询语言、一致性 |
| 12 | NoSQL | NoSQL | 背景:云计算/分布式/大数据/IoT、海量/快速/非结构化数据 |
| 13 | NoSQL | NoSQL | NoSQL家族、不同解决方案、"No SQL" vs "Not only SQL" |
| 14 | Hadoop | Hadoop | 分布式计算框架、HDFS文件系统、128MB块大小 |
| 15 | Hadoop | Hadoop | 块概念、无法更新删除、只能DROP表、无法Join |
| 16 | HDFS数据库 | HDFS Databases | Apache Hive:默认存储、HiveQL、OLAP、数据仓库 |
| 17 | HDFS数据库 | HDFS Databases | Apache Hbase:OLTP、键值对、CQL、Phoenix SQL层 |
| 18 | HDFS数据库 | HDFS Databases | Apache Cassandra:Facebook开发、去中心化复制 |
| 19 | 键值数据库 | Key / Value Databases | 键值对概念、值可拆分为列、基于键的分布存储 |
| 20 | 其他NoSQL数据库 | Other NoSQL Databases | Redis:内存键值、极快、RAM限制、股票/遥测 |
| 21 | 其他NoSQL数据库 | Other NoSQL Databases | MongoDB/CouchDB:文档存储(JSON)、分片、一致性模型 |
| 22 | 结论 | Conclusions | RDBMS未消亡、替代方案有缺点、SQL仍是数据访问语言 |
Week 15 - 云计算 (Cloud Computing) — 16页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第15周 - 云计算 |
| 2 | 云计算 | Cloud Computing | 远程服务替代本地IT设备、旧概念新实现、虚拟化技术 |
| 3 | 云计算 | Cloud Computing | 用户端桌面PC、云端商品服务器、虚拟机映像 |
| 4 | 云计算层次结构 | Cloud Computing Hierarchy | 三种服务类型:SaaS/PaaS/IaaS、用户控制vs提供商提供 |
| 5 | SaaS | SaaS (Software as a Service) | 软件即服务、无需安装、低硬件要求、提供商维护 |
| 6 | SaaS | SaaS (Software as a Service) | 缺点:不拥有软件、需一直在线、订阅费/按量付费、示例 |
| 7 | PaaS | PaaS (Platform as a Service) | 平台即服务、OS+开发框架、创建在线应用、托管环境 |
| 8 | PaaS | PaaS (Platform as a Service) | 缺点:工具限制、切换困难、依赖托管公司、定价模式 |
| 9 | IaaS | IaaS (Infrastructure as a Service) | 基础设施即服务、提供硬件、用户设置软件、最基础级别 |
| 10 | IaaS | IaaS (Infrastructure as a Service) | 故障替换而非恢复、按量付费(CPU/内存/存储/传输)、示例 |
| 11 | 云计算问题 | Issues With Clouds | 安全性、加密传输/存储、用户密码问题、信息集中风险 |
| 12 | 云计算问题 | Issues With Clouds | 工业部门问题、数据物理位置、美国vs欧盟法律、区域选择 |
| 13 | 云计算问题 | Issues With Clouds | 私有云:OpenStack、公司完全控制、内部维护备份 |
| 14 | 云计算问题 | Issues With Clouds | 混合云:敏感数据留本地、日常处理上云端 |
| 15 | 云计算问题 | Issues With Clouds | 云迁移困难、数据传输昂贵、可用性问题、停机风险 |
| 16 | 云计算应用 | Cloud Applications | 大数据 analytics、IoT/IoE传感器通信、协作项目、云制造 |
Week 16 - 物联网 (Internet of Things / Everything) — 17页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第16周 - 物联网 |
| 2 | 物联网/万物互联 | Internet of Things / Everything | 云计算应用、传感器嵌入设备、P2P或客户端/服务器 |
| 3 | 物联网 | Internet of Things | 设备架构图:多设备→云端平台→数据链路 |
| 4 | IoT vs M2M | IoT vs M2M | 机器对机器通信、M2M短距离/封闭/昂贵/可靠、IoT松散集合 |
| 5 | 标准组织 | Standards Organisations | OASIS:IBM/Microsoft创立、RESTful/JSON/Web Services |
| 6 | 标准组织 | Standards Organisations | IIC:OMG设立、IBM/AT&T/Cisco/Intel创始成员、IEEE等 |
| 7 | 协议标准 | Protocol Standards | 数据传输标准化重要性、应用和服务决定协议 |
| 8 | 协议标准 | Protocol Standards | 四大主协议:MQTT/MQTT-SN、DDS、AMQP、XMPP |
| 9 | MQTT / MQTT-SN | MQTT / MQTT-SN | 消息队列遥测传输、客户端/服务器、TCP/IP、低功耗 |
| 10 | MQTT / MQTT-SN | MQTT / MQTT-SN | MQTT-SN放弃TCP-IP改用UDP、简单性、云提供商支持 |
| 11 | DDS | DDS | 数据分布服务、高速实时、P2P和C/S、多协议兼容、OMG维护 |
| 12 | AMQP | AMQP | 高级消息队列协议、C/S、银行起源、中介控制、TSL安全 |
| 13 | XMPP | XMPP | 可扩展消息传递和到场协议、HTTP over TCP、IPv6、RESTful |
| 14 | 实现 | Implementation | 从零构建或使用现成方案、ARM embed IoT平台、以太网套件 |
| 15 | 实现 | Implementation | Microsoft Azure IoT:事件中心、TCP/IP或AMQP、流分析 |
| 16 | 实现 | Implementation | 数据收集、流数据收集、存储与分析挑战 |
| 17 | 实现 | Implementation | 远程控制、断开后果、安全性、故障检测、自动驾驶示例 |
Week 18 - 数据处理1 (Data Processing 1 - Data Preparation) — 15页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第18周 - 数据处理1 (数据准备) |
| 2 | 数据处理 | Data Processing | 数据是系统最重要部分、数据格式/存储/处理、数据vs信息 |
| 3 | 数据生命周期 | Data Lifecycle | KDD知识发现生命周期、数据准备→操作→反馈 |
| 4 | 数据生命周期 | Data Lifecycle | 数据来源、清洗收集、中央存储(数据仓库) |
| 5 | 数据生命周期 | Data Lifecycle | 数据准备、操作阶段、结果反馈系统 |
| 6 | 数据清洗 | Data Cleansing | 移除/修正错误条目、缺失值/错误/异常值处理 |
| 7 | 数据清洗 | Data Cleansing | 缺失值处理(留空/插值)、噪声过滤、异常值棘手 |
| 8 | 异常值 | Outliers | 超出预期范围的值、错误vs罕见事件、忽略或保留 |
| 9 | 异常值 | Outliers | 罕见事件检测、医学排查、臭氧消耗、数据挖掘 revisit |
| 10 | 数据脱敏 | Data Sanitisation | 移除敏感数据、匿名化数据集、医学/商业敏感信息 |
| 11 | 数据脱敏 | Data Sanitisation | 脱敏困难性、匿名数据集可重新识别、研究引用 |
| 12 | 数据仓库 | Data Warehousing | 多源数据合并、数据汇总、中间汇总数据、大数据例外 |
| 13 | 数据仓库 | Data Warehousing | 规格化:不同来源数据统一格式(英寸→厘米) |
| 14 | 数据仓库 | Data Warehousing | 数据集市(处理子集)、数据湖(原始数据)、数据孤岛(独立存储) |
| 15 | 参考文献 | References | Montjoye et al (2013)、Hern (2018) |
Week 19 - 数据处理2 (Data Processing 2 - Data Mining) — 26页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第19周 - 数据处理2 (数据挖掘) |
| 2 | 数据处理 | Data Processing | 数据准备后处理、应用依赖、简单检查到复杂操作 |
| 3 | 控制数据处理 | Data Processing for Control | 及时处理、实时/近实时、流数据、内存驻留算法 |
| 4 | 控制数据处理 | Data Processing for Control | 移动窗口统计、移动总计、时间周期/观测数 |
| 5 | 复杂数据处理 | More Complex Data Processing | 数据挖掘、商业智能、机器学习、模式搜索 |
| 6 | 复杂数据处理 | More Complex Data Processing | 分类、聚类、关联、特性化、趋势与偏差分析、模式导向分析 |
| 7 | 分类 | Classification | 基于分类属性识别数据集、预测 unseen 示例类别 |
| 8 | 分类 | Classification | 车辆油耗示例、ANN/决策树/统计分析 |
| 9 | 聚类 | Clustering | 相似数据关联、文档分析、最大化簇内相似性 |
| 10 | 聚类 | Clustering | 距离/概率相似度、k-means/最近邻/自组织映射 |
| 11 | 关联 | Association | 发现规则、支持度和置信度、非交换性 |
| 12 | 关联 | Association | 组件过热→故障示例、支持度/置信度计算 |
| 13 | 其他类型 | Other Types | 特性化:归纳总结对比、趋势与偏差分析 |
| 14 | 其他类型 | Other Types | 模式导向分析:用户指定模式、大数据集搜索 |
| 15 | 数据挖掘过程 | Data Mining Process | 数据仓库→数据准备→算法实施 |
| 16 | 数据准备 | Data Preparation | 采样代表性、数据分割、保持特征一致 |
| 17 | 数据准备 | Data Preparation | 训练集/验证集/测试集、数据集互不重叠 |
| 18 | 数据挖掘过程 | Data Mining Process | 监督学习:训练→验证→测试、模型准确性 |
| 19 | 数据挖掘过程 | Data Mining Process | 测试集防止验证数据过拟合、无监督算法给全部数据 |
| 20 | 问题与问题 | Issues and Problems | 过拟合:训练集参数学习太好、 peculiarities、小训练集 |
| 21 | 问题与问题 | Issues and Problems | 欠拟合:模型无法建模、数据不足/过多冲突 |
| 22 | 问题与问题 | Issues and Problems | 维数灾难:参数增加→示例需求剧增、SVM边界条件 |
| 23 | 问题与问题 | Issues and Problems | 稀少事件:训练集罕见、从不诊断癌症"优秀"结果 |
| 24 | 问题与问题 | Issues and Problems | 商店销售示例:游戏/DVD交叉销售、概率分析错误 |
| 25 | 问题与问题 | Issues and Problems | 结论:仔细思考输出、数据准备/算法选择/输出理解 |
| 26 | 有用链接 | Useful Links | WEKA、RapidMiner免费数据挖掘工具 |
Week 20 - 数据处理3 (Data Processing 3 - Big Data) — 12页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第20周 - 数据处理3 (大数据) |
| 2 | 大数据背景 | Big Data Background | 行业术语、Laney 3V:Volume/Velocity/Variety、Hadoop/MapReduce |
| 3 | MapReduce | MapReduce | 编程模型、Map函数、Key-Value对、集群分布 |
| 4 | MapReduce | MapReduce | 按键分布、Reduce算法、主节点收集、看似简单 |
| 5 | MapReduce示例 | MapReduce Example | 运输公司车队传感器、每月行驶最远卡车、Map操作 |
| 6 | MapReduce示例 | MapReduce Example | Reduce操作:每月最大距离、主节点整理结果 |
| 7 | 流数据 | Streaming Data | 批处理传统、Storm/Spark Streaming/Flink实时分析 |
| 8 | 流数据 | Streaming Data | Storm单值处理、Spark微批内存快、Flink双通道真流式 |
| 9 | 大数据挑战 | Big Data Challenges | 算法并行化、分布式计算、采样、分布时间、数据清理 |
| 10 | 大数据挑战 | Big Data Challenges | 集群节点vs性能、不同思维方式、挖掘潜力 |
| 11 | 参考文献 | References | Dean & Ghemawat (2004)、Laney (2001)、Woo (2012) |
Week 22 - Web服务 (Web Services Part 1) — 21页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第22周 - Web服务 第1部分 |
| 2 | Web服务 | Web Services | 服务器软件、互联网协议、IIS/Apache/nginx、控制分割 |
| 3 | Web服务 | Web Services | 用户通过端点(URL)连接、浏览器或专用程序访问 |
| 4 | Web服务考虑因素 | Web Service Considerations | 服务类型、无状态vs基于会话、安全、API设计 |
| 5 | Web服务 | Web Services | 会话服务:提供ID、跟踪客户端、复杂维护、逐渐失宠 |
| 6 | Web服务 | Web Services | 无状态服务:RESTful、不跟踪客户端、易于实现、WWW即RESTful |
| 7 | RESTful Web服务 | RESTful Web Services | 表述性状态转移、GET/POST/PUT/DELETE四大命令 |
| 8 | RESTful Web服务 | RESTful Web Services | 主要用GET和POST、原因说明 |
| 9 | RESTful示例 | Simplified RESTful Example | 控制机器人移动:客户端-服务器交互流程 |
| 10 | RESTful示例 | Simplified RESTful Example | 步骤1-3详解:GET可用性→POST坐标→GET位置轮询 |
| 11 | RESTful示例 | Simplified RESTful Example | 轮询行为取决于控制方式、目标坐标或动态移动 |
| 12 | API | API (Application Programming Interface) | 发布API描述交互、服务端点、代码库调用 |
| 13 | API | API | 服务端等待输入、API更新维护、过期但有效调用处理 |
| 14 | 安全快速入门 | VERY quick ideas about security | 安全深度不足、访问类型影响、RESTful无会话ID |
| 15 | 安全快速入门 | VERY quick ideas about security | 用户名/密码存储、初始分发问题、潜在解决方案 |
| 16 | 安全快速入门 | VERY quick ideas about security | 工程师应留给领域专家、安全影响解决方案 |
| 17 | 客户端访问 | Client side access | 两种方式:浏览器 vs 应用代码、浏览器限制与优势 |
| 18 | 客户端访问 | Client side access | 服务器端语言框架、Java/C/C++/PHP/.NET、HTTP消息请求 |
| 19 | GET困难 | GET difficulties | C#本地客户端无安全问题、PHP服务器端无安全问题 |
| 20 | GET困难 | GET difficulties | Javascript客户端运行、跨域安全限制、JSONP解决方案 |
| 21 | GET困难 | GET difficulties | JSONP安全性:服务器需知函数签名、同源确认 |
Week 23 - Web服务2 (Web Services 2) — 37页
| 页码 | 中文标题 | 英文标题 | 核心内容 |
|---|---|---|---|
| 1 | EL2311 – 软件开发2 | Software Development 2 | 第23周 - Web服务 第2部分 |
| 2 | 远程访问代码 | Remote Access Code | 回顾Web服务理论、两种访问方式:Web前端/代码 |
| 3 | 数据格式 | Data Formats | 纯文本、XML、JSON、数据发送格式定义 |
| 4 | 远程访问代码 | Remote Access Code | ADMT绘图演示案例、HTML/Javascript→RESTful C#服务 |
| 5 | 数据格式 | Data Formats | XML发送机器人位置数据、2D数组插入、服务器解析 |
| 6 | 数据格式 | Data Formats | JSON等效格式、版本/位置节点 |
| 7 | 数据传递 | Data Passing | RESTful请求:GET/POST/DELETE/PUT、POST代码示例 |
| 8 | 数据传递 | Data Passing | XMLHttpRequest对象、POST请求初始化、URL端点 |
| 9 | 数据传递 | Data Passing | setRequestHeader设置Content-type为application/xml |
| 10 | 数据传递 | Data Passing | send方法发送请求、服务器处理返回响应 |
| 11 | Web服务 | Web Services | HTML/Javascript/AJAX标准、服务器端更多选择 |
| 12 | 服务器端服务代码 | Server side service code | ADMT示例、WCF .NET 4.0框架、C#实现 |
| 13 | 服务器端服务代码 | Server side service code | WCF文件:Global.asax.cs/SampleItem.cs/Service1.cs/Web.config |
| 14 | Global.asax.cs | Server side code – Global.asax.cs | ASP应用可选文件、处理应用和会话级事件、路由传入流量 |
| 15 | Global.asax.cs | Server side code – Global.asax.cs | RouteTable路由配置、移除Service1术语、多服务指定 |
| 16 | Web.config | Server side code – Web.config | XML格式设置、httpProtocol允许POST/GET/OPTIONS、跨域启用 |
| 17 | Service1.cs | Server side code – Service1.cs | 端点定义、DataContract、imageStatus类、WebGet/WebInvoke |
| 18 | WebGet | Server side code – WebGet | 处理GET请求、UriTemplate定义URL、变量参数 |
| 19 | WebGet | Server side code – WebGet | IP:端口/imageload/zzzzz格式、变量可用性检查 |
| 20 | WebInvoke | Server side code – WebInvoke | 处理其他HTTP请求、Method参数、允许任何操作 |
| 21 | WebInvoke | Server side code – WebInvoke | 无PUT/DELETE实现则失败、检查OPTIONS、操作方法判断 |
| 22 | SampleItem.cs | Server side code – SampleItem.cs | 示例处理类、可添加多个类、DrawingItems.cs全局变量 |
| 23 | 客户端C# | Client Side C# | HTTPClient类、GET请求示例、XML响应解析 |
| 24 | 客户端C# | Client Side C# | HttpClient创建、HttpRequestMessage GET请求、Accept头 |
| 25 | 客户端C# | Client Side C# | Send发送请求、EnsureStatusIsSuccessful检查状态、ReadAsString |
| 26 | 客户端C# | Client Side C# | XmlReader解析XML、MoveToContent、ReadToFollowing读取ready值 |
| 27 | 客户端C# | Client Side C# | XmlReader解析详解、ready元素内容读取 |
| 28 | 服务器端 | Client Side C# (server side) | DataContract、handlingGet类、ready/error成员、WebGet处理 |
| 29 | 客户端C# | Client Side C# | 客户端发送GET、XML解析ready值、服务器端WebGet响应 |
| 30 | 客户端C# | Client Side C# | 跨域脚本仅浏览器需要、应用代码无需担心 |
| 31 | 客户端C# | Client Side C# | URL变量检查、status返回true、其他返回错误 |
| 32 | 客户端C# | Client Side C# | GET应用代码比浏览器更简洁、同时服务浏览器和应用 |
| 33 | 客户端C# | Client Side C# | HTTPClient POST示例、XML位置数据、strurl目标地址 |
| 34 | 客户端C# | Client Side C# | HttpContentExtensions.CreateXmlSerializable转换、HttpClient发送 |
| 35 | 客户端C# | Client Side C# | Post方法发送、EnsureStatusIsSuccessful检查成功 |
| 36 | .NET版本变化 | Changes between .net versions | ADMT示例针对WCF .NET 4.0、4.5重大变化 |
| 37 | .NET版本变化 | Changes between .net versions | WCF与ASP.NET Web API分路、库调用更新、向后兼容 |
📊 课程总览统计
| 周次 | 主题 | 页数 | 核心知识领域 |
|---|---|---|---|
| Week 1 | 课程介绍 | 13页 | C#与VS环境、语法基础、学习资源 |
| Week 2 | 编程语言与OO基础 | 18页 | 四大编程范式、编译vs解释、OO基础概念 |
| Week 3 | 面向对象原则 | 17页 | 抽象、封装、构造器/析构器、继承、多态 |
| Week 4 | 接口与API | 11页 | 接口定义与实现、访问修饰符、API概念 |
| Week 5 | 软件方法论 | 16页 | 瀑布/进化/形式化/重用四大方法论 |
| Week 6 | 需求与分析 | 15页 | 用户需求/系统需求、功能/非功能/领域需求 |
| Week 7 | 需求分析与设计实验 | 12页 | 加油泵案例、UML图(用例/序列/类图) |
| Week 7 | 测试与调试 | 20页 | 语法/逻辑错误、断点、步进、异常处理 |
| Week 8 | 系统测试 | 18页 | 集成/发布/性能测试、测试用例设计、等价类 |
| Week 9 | 多线程 | 19页 | 线程概念、上下文切换、竞争条件、C#线程类型 |
| Week 10 | 并发 | 17页 | 锁机制、死锁/活锁、超时、预防、检测恢复 |
| Week 11 | 并行与分布式 | 10页 | 并行架构、分布式计算、Hadoop、负载均衡 |
| Week 12 | 数据 | 12页 | 数据格式:纯文本/CSV/XML/JSON、NLP |
| Week 13 | 数据存储1 | 14页 | 平面文件、RDBMS、SQL、ACID属性 |
| Week 14 | 数据存储2 | 22页 | 行/列存储、OODB、图数据库、NoSQL、Hadoop/Hbase/Cassandra |
| Week 15 | 云计算 | 16页 | SaaS/PaaS/IaaS、公有/私有/混合云、安全与迁移 |
| Week 16 | 物联网 | 17页 | IoT/M2M、MQTT/DDS/AMQP/XMPP协议、Azure IoT |
| Week 18 | 数据处理1 | 15页 | KDD生命周期、数据清洗、异常值、数据仓库/湖/集市/孤岛 |
| Week 19 | 数据处理2 | 26页 | 数据挖掘:分类/聚类/关联、过拟合/欠拟合/维数灾难 |
| Week 20 | 数据处理3 | 12页 | 大数据3V、MapReduce、流数据Storm/Spark/Flink |
| Week 22 | Web服务1 | 21页 | RESTful、GET/POST/PUT/DELETE、API设计、跨域JSONP |
| Week 23 | Web服务2 | 37页 | WCF服务、Global.asax/Web.config、WebGet/WebInvoke、C# HTTPClient |
| 总计 | 22周 | 338页 |
课程知识脉络:
- 基础编程 (Week 1-4):C#语法 → 编程范式 → OO原则 → 接口与API
- 软件工程 (Week 5-8):方法论 → 需求分析 → 测试调试 → 系统测试
- 高级编程 (Week 9-11):多线程 → 并发控制 → 并行分布式
- 数据管理 (Week 12-14):数据格式 → 传统存储 → NoSQL/NewSQL
- 云与物联网 (Week 15-16):云计算层次 → IoT协议与实现
- 数据处理 (Week 18-20):数据准备 → 数据挖掘 → 大数据技术
- 网络服务 (Week 22-23):RESTful理论 → WCF实现细节

浙公网安备 33010602011771号