当前课程知识点:软件工程 >  第5章 团队开发管理 >  5.3 软件项目计划 >  讲课视频

返回《软件工程》慕课在线视频课程列表

讲课视频在线视频

下一节:讲课视频

返回《软件工程》慕课在线视频列表

讲课视频课程教案、知识点、字幕

软件项目计划

是对软件开发过程中的活动

资源 任务 进度等进行规划

我们知道

按时交付是软件项目的最大挑战

所以合理地安排进度

是软件项目计划的关键内容

一般来说项目计划

需要由团队成员共同讨论制定

明确项目要做什么

如何做

谁去做

什么时候做

成本是多少

以及应该达到什么质量

等一系列问题

制定软件项目计划

一般需要经过以下过程

首先是开发问题描述

明确系统应该解决的问题

目标环境和交付验收标准

接下来进行顶层设计

确定系统的总体结构和模块划分

然后对整个项目

进行任务分解

并把任务分配给团队成员

最后估计可能完成的时间

建立项目的初始计划

问题描述是由项目团队

和客户共同讨论形成的

双方需要对系统所要解决的问题

达成共识

说明问题提出的背景

需要开发的功能和性能

以及系统运行的目标环境

下面我们给出一个

微信抢票应用的事例文档

微信作为一种新媒体

已经被大学生普遍使用

通过微信应用可以

及时发布各种活动

并且提供便捷的服务

免去排队的烦恼

基于这样一个背景

项目的开发目标

就确定为在微信服务号的基础上

开发一个抢票应用

实现活动推送和抢票服务

抢票应用的功能需求

主要包括帐号绑定

因为是针对校内学生的活动

需要通过绑定帐号

来确认学生的身份

还有活动创建和信息维护

抢票 选座和检票等

非功能需求

定义了用户并发数和响应时间

要求支持的手机操作系统

以及一些软件设计

和代码质量的要求

另外未来运行的应用服务器

要部署在阿里云上

考虑到这个应用

只是给校内学生使用

所以开发和运行环境

都要采用开源系统

以便节省成本

抢票应用要在年底的

新年联欢晚会上使用

所以规定交付时间

是2014年12月25日

对于问题描述中的功能需求

还要进一步说明

用户和系统交互的一系列场景

这里给出的

是一个学生抢票的场景

以及若干微信操作的界面原型

在需求分析的基础上

我们要给出系统的顶层设计

它定义了软件系统的体系结构

把整个系统划分成

若干独立的子系统

第一步

是要明确设计目标

这个时候要考虑一下性能

可扩展性这样一些设计质量

第二步

做初始的子系统分解

需要比较不同的设计方案

以及可以采用的标准的

体系结构风格

第三步 初始分解

也许不能满足所有设计目标

需要进一步的分解和求精

最后 把分解的不同的子系统

分配给不同的团队和开发人员

让他们协商定义

子系统之间的接口

需要强调的是

子系统分解应该是高层的

专注于功能并且要保持不变

每一个子系统

可以分配给一个团队或个人

由他来负责进行详细设计和实现

这是微信抢票应用的

顶层设计示意图

前端部分

根据用户角色的不同

分成用户微信页面

和活动管理员页面

其中用户微信页面

负责显示订票者

在微信端打开的网页

实现界面的一些业务逻辑

举RESTful API进行通讯

活动管理员页面也是类似

只是显示的是管理员

在PC浏览器中打开的网页

抢票消息处理模块

实现与微信服务器的通讯功能

在服务器端

处理与抢票相关的业务逻辑

RESTful API模块

是封装的HTTP API

处理网页前端

所涉及业务的数据输入和输出

并将数据读写请求

传递给数据存取模块

数据存取模块封装数据库接口

处理所有数据读写请求

并操作数据库

在必要的情况下对部分数据

像一些高频只读数据

进行内存缓存

项目工作分解

是将项目整体

分解成一些更小的

易于管理和控制的子项目

或工作单元

分解项目工作

可以有不同的方法

最常用的

是基于要做的功能进行分解

对于前面给出的

抢票应用这个例子

假设一个开发团队

由5个成员组成

我们按照系统功能

对项目工作进行分解

然后分配给不同的人员去完成

大家认为这个

工作分解方案怎么样

帐号绑定部分比较独立

单独交给一个人去做

比较合适

其余部分

虽然在功能上可以分割

但是在开发过程中

由于代码和数据库设计上的耦合

比如说

成员B和C他们的任务

都涉及到活动

成员C D E又都涉及到票

这样就造成

一个人在设计上的修改

会影响到其他人

另外

熟悉前后端和数据库开发的

全栈工程师并不多

对于学生团队更是如此

所以这种分解

可能会使不同人开发的部分

在集成的时候出现困难

另一种分解方法

是根据系统的产品结构

来定义项目工作

我们把前端的用户微信页面

和活动管理员页面

分别分配给成员A和B

抢票的消息处理模块

和RESTful API模块

分配给成员C

数据存取模块分配给成员D

成员E 完成帐号绑定模块

并承担更多的功能测试工作

这种分解方法

可以使开发人员

专注于前端 后端

和数据库的开发

不同模块之间

通过接口进行访问相对来说

耦合性比较低

项目工作分解之后

需要进一步估算

活动所需要的时间和资源

并按照一定的顺序

把这些活动进行组织和调度

建立项目的进度计划表

在这个过程中

首先要识别任务

以及任务之间的依赖关系

由开发人员

估算所承担任务的完成时间

最终创建项目的进度表

需要说明的是

制定进度计划

需要在资源 时间

和实现功能之间进行平衡

并且要定期进行更新

软件工程课程列表:

第1章 初识软件工程

-1.1 软件无处不在

--讲课视频

-1.2 软件的本质特性

--讲授视频

-1.3 软件工程的产生与发展

--讲授视频

-1.4 软件工程的基本概念

--讲授视频

-1.5 软件质量实现

--讲授视频

-1.6 业界人士谈软件工程

--海芯科技创始人施侃乐访谈

-测验题--作业

-讨论题

--讨论题

-作业题

--第一张 作业题

第2章 编写高质量代码

-2.1 编程过程与规范

--讲课视频

-2.2 良好的编程实践

--讲课视频

-2.3 Python集成开发环境

--讲课视频

-2.4 代码静态检查

--讲课视频

-2.5 代码性能分析

--讲课视频

-2.6 结对编程实践

--讲课视频

-2.7 刘贺谈软件工程

--讲课视频

--讨论

-测验题--作业

-作业题

--第二章 作业题

第3章 单元测试

-3.1 单元测试概述

--讲课视频

-3.2 黑盒测试方法

--黑盒测试方法

-3.3 白盒测试方法

--基本概念

--代码覆盖标准

--基本路径测试

-3.4 单元测试工具

--单元测试工具

--html

-测验题--作业

-作业题

--第三章 作业题

--作业题附件

第4章 软件开发过程

-4.1 软件过程

--讲课视频

-4.2 软件过程模型

--讲课视频

-4.3 敏捷开发过程

--讲课视频

-4.4 微软公司开发过程

--邹欣经理自我介绍

--微软开发过程之一

--微软开发过程之二

-测验题--作业

第5章 团队开发管理

-5.1 团队组织与管理

--讲课视频

-5.2 项目沟通管理

--讲课视频

-5.3 软件项目计划

--讲课视频

-5.4 软件项目估算

--讲课视频

-测验题--作业

-讨论题

--讨论

第6章 敏捷开发与配置管理

-6.1 敏捷开发之Scrum

-- 敏捷开发之Scrum

--html

-6.2 用户故事与估算

--讲课视频

-6.3 团队协作工具Tower

--Tower工具介绍(1)

--Tower工具介绍(2)

-6.4 配置管理

--讲课视频

-6.5 配置管理工具Git

--讲课视频

-测验题--作业

-作业题--作业

第7章 需求获取

-7.1 需求工程师

--讲课视频

-7.2 需求定义

--讲课视频

-7.3 需求的类型

--讲课视频

--讲课视频(2)

-7.4 需求工程过程

--讲课视频

-7.5 需求的主要来源

--讲课视频

-7.6 需求获取技术

--讲课视频

--讲课视频二

--讲课视频三

-7.7 撰写需求文档

--讲课视频

-测验题--作业

-讨论题

--讨论

第8章 用例建模

-8.1 用例建模概念

--讲课视频

-8.2 用例建模过程

--讲课视频

-8.3 用例建模精讲

--讲课视频

-8.4 建模工具介绍

--讲课视频

-8.5 微信抢票应用案例

--讲课视频

-测验题--作业

-讨论题

--讨论

第9章 面向对象分析与设计

-9.1 面向对象分析

--讲课视频

-9.2 CRC卡片分拣法

--讲课视频-1

--讲课视频-2

-9.3 面向对象设计

--讲课视频-1

--讲课视频-2

-9.4 类图建模

--讲课视频-1

--讲课视频-2

-第9章 面向对象分析与设计--测验题

-讨论题

--讨论

第10章 行为建模

-10.1 顺序图概念

--讲课视频

-10.2 顺序图建模

--讲课视频

-10.3 顺序图风格

--讲义视频

-10.4 状态建模

--讲课视频

-10.5 状态图

--讲课视频

-10.6 状态图精讲

--讲义视频

-测验题--作业

-讨论题

--讨论

第11章 软件系统设计

-11.1 软件体系结构概念

--讲授视频

-11.2 软件设计原则

--讲授视频

-11.3 软件体系结构风格(一)

--讲授视频

-11.4 软件体系结构风格(二)

--讲授视频

-11.5 软件体系结构风格(三)

--讲授视频

-11.6 软件设计过程

--讲授视频

-11.7 Web系统架构设计

--讲授视频

-11.8 数据库选择策略

--讲授视频

-测验题--作业

-作业题

--html

--html

--html

-作业题--作业

第12章 软件交互设计

-12.1 交互设计概述

--讲授视频

-12.2 交互设计目标

--讲授视频

-12.3 GUI设计原则

--讲课视频

-12.4 KLM效率模型

--Video

-12.5 Fitts定律

--讲授视频

-12.6 交互设计过程

--讲授视频

-测验题--作业

第13章 软件系统测试

-13.1 软件测试概念

--讲课视频

-13.2 软件测试类型

--讲课视频

-13.3 软件功能测试

--讲课视频

-13.4 软件性能测试

--讲课视频

-测验题--作业

第14章 软件交付与维护

-14.1 软件部署与交付

--讲课视频

-14.2 软件演化与维护

--讲课视频

-测验题--作业

第15章 期末考试与总结

-第一部分:基础知识

-第二部分:编程与测试(选做)

--编程与测试(选做)

讲课视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。