软件开发流程

从创意到产品

中级

大约 3 个月

6小时每周 (按照自己的节奏)

由以下企业参与制作:
加入成千上万的全球学员

开始免费课程

加入课程
免费
可享受
课程视频
实战练习
中级

大约 3 个月

6小时每周 (按照自己的节奏)

由以下企业参与制作:
加入成千上万的全球学员

课程概述

此课程在佐治亚理工学院的课程编号为 CS6300,是该校在线硕士学位 (OMS) 的一部分。在此学习这门课程并不会获得 OMS学位的学分。

在这门课程中,你将学习如何为开发项目选择和实现理想的软件过程。通过 Orso 教授引人入胜的举例讲解和与行业内部人士的访谈对话,你将学习软件工程的概念和实践知识。本课程涵盖需求工程、架构和设计、测试和维护以及软件质量。

本课程的目标是帮助你掌握必要的技能,来定义需求、设置集成开发环境(IDE)、学习 Git(和 Github!),并使用统一建模语言(UML)设计和构建一个 Android 应用。我们还将呈现几个对软件项目发布前的准备工作较为重要的测试实践和重构技术。

虽然每个使用软件的人都应具备这些技能,但它们对于软件工程师和工程经理来说尤为重要。

为什么学习这门课程?

软件工程不仅仅是编程,也不只是构建一个技术栈。

本课程介绍软件工程作为一个迭代、系统过程的概念。在学到开发生命周期、设计过程和软件测试时,你将学习使用 Github 和 Eclipse。

此课程将向你展示从技术层面理解软件产品所需的技能和过程,使你成为工程团队中更有效的开发人员。

先修要求

最好非常熟悉 Android 开发(如不熟悉,可以学习我们的 Android 应用开发课程)。

查看使用优达学城的技术要求

学习计划

第 1 课:介绍和概述

  • 软件工程的重要性
  • 软件工程学科
  • 软件危机
  • 软件阶段

第 2 课:生命周期模型

  • 简介
  • 需求工程(Requirements Engineering)
  • 设计
  • 维护
  • 软件过程模型介绍
  • 瀑布型过程
  • 螺旋型过程
  • 进化式原型过程
  • 统一软件开发过程
  • 敏捷开发模式
  • 选择模式
  • 生命周期文档

第 3 课:集成开发环境

  • Eclipse 简介
  • 集成开发环境(IDE) 概述
  • 插件
  • Eclipse 演示:创建 Java 项目
  • Eclipse 演示:创建类
  • Eclipse 演示:运行配置
  • Eclipse 演示:调试

第 4 课:版本控制系统

  • John Britton 访谈
  • 版本控制系统介绍
  • 两种主要的版本控制系统(VCS)类型
  • Git 入门
  • Git 工作流
  • Git 演示:Git 入门
  • Git 演示:Git + Eclipse
  • Git 演示:Github
  • Git 回顾:本地代码库
  • Git 回顾:远程代码库

第 5 课:需求工程

  • Jane Cleland-Huang 访谈
  • 一般需求工程定义
  • 软件密集型系统
  • 功能性和非功能性需求
  • 用户和系统需求
  • 建模需求
  • 分析需求
  • 需求优先级
  • 需求工程过程

第 6 课:OO 软件和 UML

  • 面向对象概念简介
  • UML 结构图:类图
  • 类图:创建提示
  • UML 结构图:组件图
  • UML 结构图:部署图
  • UML 行为图:用例
  • 使用案例图:创建提示
  • UML 行为图:序列
  • UML 行为图:状态转换图

第 7 课:软件架构

  • Nenad Medvidovic 访谈
  • 什么是软件架构?
  • 规定性与描述性架构
  • 架构演变
  • 架构退化
  • 架构恢复
  • 架构元素
  • 组件、连接器和配置
  • 部署架构视角

第 8 课:分析与设计概述

  • 分析要求
  • 优化类和属性
  • 添加属性
  • 识别操作
  • 优化类图

第 9 课:设计模式

  • 模式目录
  • 模式格式
  • 工厂方法模式
  • 策略模式
  • 选择模式
  • 负设计模式

第 10 课:统一软件过程

  • 用例驱动
  • 初始阶段
  • 精化阶段
  • 构造阶段
  • 移交阶段
  • 阶段和迭代

第 11 课:常见概念

  • 故障、过失和错误
  • 验证方法
  • 各种方法的优缺点
  • 测试简介
  • 单元测试级别
  • Alpha 和 Beta 测试
  • 黑白盒测试简介

第 12 课:黑盒测试

  • 系统功能测试方法
  • 测试数据选择
  • 类别分区方法
  • 制定和评估测试用例规格
  • 按测试用例规格生成测试用例
  • 基于模型的测试
  • 有限状态机

第 13 课:白盒测试

  • 覆盖标准简介
  • 声明覆盖
  • 控制流程图
  • 测试标准包含
  • 修订的条件(MC)/判定覆盖(DC)

第 14 课:敏捷开发方法

  • 变更的成本
  • 敏捷软件开发
  • 极限编程(XP)
  • XP 的价值和原则
  • 先行测试开发
  • 重构
  • 结对编程
  • 连续集成
  • 测试策略
  • Scrum 高级阶段

第 15 课:软件重构

  • 重构原因
  • 重构演示
  • 重构风险
  • 重构成本
  • 什么时候不该重构

讲师与合作伙伴

Alex Orso

Alex Orso

Alessandro (Alex) Orso 是佐治亚理工学院计算机学院的一名教授。他拥有意大利米兰理工大学的理科硕士和哲学博士学位。Alex 的研究领域为软件工程,侧重软件测试和程序分析。他已经在学术界和工业界教授软件工程相关的课程超过 15 年(以三种不同的语言教学)。他热衷于开发能提升软件可靠性、安全性和可信赖性的技术与工具,并在真实系统中验证这些技术。

Sarah Spikes

Sarah Spikes

Sarah Spikes 在斯坦福大学获得计算机科学学士和硕士学位,并花大量时间担任助教工作。她在 Google 担任过两年的软件工程师,对教学的热爱让她加入优达学城。在闲暇时间,她喜欢音乐剧表演、制作果汁冰糕和攀岩。

官方微信公众号二维码

优达学城(Udacity)微信