当前课程知识点:软件工程 >  第4章 软件开发过程 >  4.4 微软公司开发过程 >  微软开发过程之二

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

微软开发过程之二在线视频

微软开发过程之二

下一节:讲课视频

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

微软开发过程之二课程教案、知识点、字幕

微软在开发软件的时候

它的确不是说永远是

这个公司内部开发

它有很多的合作者

实际上有这样一个故事

就是微软在通常跟很多的

别的公司合作然后

那这个一个项目结束之后呢

这些它会写些心得体会

很多人就提到它说微软

当然这个工程师也不错

这个但是我们公司的

工程师也挺好的

然后这个设备也很好

但是我们公司

我们公司也不差

很多人就提到

说它微软有一个

这个项目管理的工具

的确是很好

我们公司没有

而且在我工作这么长时间内

就跟这个公司合作

它的这个项目管理工具

做的很好

所以这个

就是因为我们用

这个内部用一些

RAID、Product Studio

TFS

就给别人很深的印象

所以是在早期这个

别人就来问微软

就是你这么成功的吗

那你一定有秘诀了

所以这个那微软就说

那我就总结几条吧

所以它叫做一个比较松散的

一些我们认为软件

应该怎么开发

就是我们的一些方法论

在这个03年的时候

就是我们就把它总结出来

组成一个比较正式的说

这个叫

Microsoft Solution Framework

或者叫 Microsoft Solution Foundation

就说那我是

这是我的一揽子

这个计划

和这个一揽子方案

然后后来这个别人说

这个外面有很多的

这种敏捷开发

你支持吗

我们说当然支持了

就是我们有支持敏捷

各种这个工作方式

所以这个MSF的

这也是不断的发展

所以它有一些principle

在这里大概有九条

那这九条呢

事实上就是它认为一个公司

你不能说只买了我的工具

比如说你听说你这个工具不错

我就把你工具买过去了

也许我就可以开发出

很好的软件

未必是这样所以

它说那你如果你想成为

一个高效的这个软件开发者

一个团队

那你必须遵循这九条

这种规则

所以这件事

我们得讲的这九条规则

我们在这里就不细讲

那当然就是

在微软开发软件的过程中

也很难讲说每一个团队

在每一时刻都遵循这个规则

所以微软

还有一个很重要的文化

就是说它在每一个项目

结束之后

它会做一个叫做尸体解剖

叫Postmortem

因为我们说软件开发

它有生命周期的

就是你把这个软件

从无到有写写完

之后这个1.0就发布了

或者是2.0就发布了

相当于这个开发流程就结束了

那你可以回头来看说

在这个过程中

我们犯了什么错误

那么我们如果我重新做一遍

我有什么东西会做的不一样

那这个实际上它每一个版本

它会留下一些经验教训

然后它会交给

下一个版本的开发人员

和这个项目经理以及测试

就是我们收集下来的

这个经验教训

希望我们能够改进

这就是我们经过一些

很多总结总结出来的经验

就说我们的经验证明

如果你这个软件很成功

事实上是你看

你这个软件开发过程

它的确是遵循的这些原则

那如果你不成功

实际上你很容易就看出来

说有些人有些角色

在某一方面

的确是就违背了这些原则

就是软件就不成功

然后这个在微软

发展的过程中

也有很多就是软件工程

这个学术领域

以及不同公司

这个业界一下发展它们的

这个方法论

那当然我们跟这个业界

有很多交流

那其中一点就是说

这个当时有这个

CMM

叫做

Capability Maturity Model

就是说我们怎么样

衡量一个团队是成熟的

怎么衡量一个团队是高质量的

这个卡内基梅隆

这这个软件工程学院

就总结出这样原则

那它们就想来

游说这个微软公司说

你能不能让我们

来做些实验看看

这个微软公司的这个团队

到底到了哪一个等级

对吧那我们怎么样

或者看看我们这个模型

是不是有道理的

所以我们做了一些合作

当然微软它有一个文化

是说它说也许这些流程

不是那么重要

只要我能找到非常优秀的

这个员工就可以了

所以他们

就是微软中的很多老员工

对这些流程方法论

还是觉得比较保守

它是不会说

我听说外面

流传这样一个新的方法论

我们一定要

一定要采用的方法

因为我们只有这样

才能做好软件

他不这么认为

他说关键是

说你得给我找到优秀的人才

你找到优秀的人才

他会自己找到

适合这个产品

适合这个团队的这个方法论

不要说我要真的

要符合某一个官方发布的

一个模型

所以这是微软对

很多人对

这个方法论的一些看法

那还有一点

就是说在这个2000年前后

就是随着微软

这软件这样使用了很多

实际上我们发现了

很多的这种严重的这个bug

就是比如说

经常有一些这种黑客攻击

利用我们的一些漏洞

然后呢我们发现

我们为什么不能够

在我们软件开发的过程中

就把这些bug给消除掉

然后这个我们和硬件

做一个类比

所以我们发现硬件工程上

有很多标准 对吧

比如做电器

做这个手机电视机

你会发现

在现在这个年代

你很少发现有

这种功能性的缺失

所以它们就说为什么

因为这个质量控制

在这个工业界做得很好

有一个俗语叫做Six Sigma

就描述说

如果你有100万次机会犯错误

但是你犯错误的时候也许只有少于5个

大概有3个左右

那这个是质量的最高等级

叫Six Sigma

它从1到6都有是一个

相当于指数上升的

这样一个质量要求

那么它就衡量这个

那微软对吧

那比如说我写一个程序有

有那么300行代码

我第一遍写完之后

我拿出去

也许发现了10个Bug

后来也许我要改

我要改30行代码

那它就说 那好你有300行代码

对吧你有300个可以犯错误的机会

但是你在30个中

30个机会中你犯了错误

所以这个当然这个

称不上Six Sigma

这个是非常低的Sigma

所以那它说

你跟这个硬件比较看

比如说我们要做手机对吧

如果我把这个手机设计好

我在上产线上做手机

好像我不会说做300个手机

会有30个出问题

也许我会做这个3万个

说不定只有3个出问题

那你这个软件设计

能不能也到这样一个标准

就是说如果是以

这个代码的行出来比较

看你的工作量

你能不能减少这个犯错误的机会

这也是一个思潮

所以在这方面就是

我们在内部也做了很多研究

说软件开发到底是一个充满了创意

和不确定性的这样一个过程

就像艺术家画画一样

还是说一个是在流水线上

就组装机器这样一个过程

那如果是在流水线上组装机器

那当然我们可以用

这种工业的质量控制

Six Sigma来做

但是好像很少你听说这个

有一个软件是在

流水线上做出来的对吧

因为软件

有很多自己的一些特性

它需要在每一个新版本中

加入一些从来没有做过的东西

这个东西事实上

是有时候很难定义的

有点像艺术家一样

如果一个艺术家画了一幅名画

你不会讲说

这个你的名画画得很好

但是你在画的过程中

你比如说我们讲油画

你涂改好多对吧

你原来用的是白色后来用蓝色

这就是一个错误

后来你要用了棕色后来又改

后来又用刀把它刮掉

这是好多错误

你大概不会这么衡量

你会说这是一个艺术品质非常好

但是你生产的过程可能有很多的

不同的转折不同的方向

也许犯了错误

它的这个倒无所谓

所以我们认为这个软件开发

你大概不能够用完全的套用一些

硬件这个生产

这个模式来管理

所以这也是一个

我们学到一些经验教训

那还有一些就是说

还有一些别的一些思潮

比如最近经常讲的叫做MVP

MVP就是说

Minimum Viable Product

就是说我能不能就像创业一样

我做出一个最小的可用的产品

我就发布出去

然后我就收集用户的反馈

然后我就我做好

我就能够一步步的改进

这个我觉得很好

就是说在很多的

这种互联网相关的产业中

的确是有很多产品好像是这样做的

但是你真的要赢得市场

可能最后你要做一个

另外一个极端就是叫做MBP

就是Maximum Beautiful Product

就是你出来之后

是非常好非常吸引人的

就像我们看到这个iPhone一样

就说你即使拿最早期的iPhone比

那它也拿出来它并不是一个最小的

最简功能的那产品

它是一个的确是非常漂亮

设计的非常完备的一个产品

所以这两个我们叫做Methodology(方法论)

两个思潮我们也要辩证来看

就是你什么时候用这个MVP

什么时候用这个MBP

来指导我们的产品开发

那还有一点就是我想讲就是说

没有的软件可以说

我就很容易的做出来

实际上很多时候

在这个软件团队中开发

是非常辛苦的

就是我们当时做

这个Team Foundation Server

叫发布的时候

软件叫做燃尽图

Burn Down Chart
就是说你有这么多工作

你想把它都烧光

你想把它都变成零

但是你一味地达到某一个发布点

那你必须要求你的每一个模块

每一个组成部分

你的bug数量都得减少

所以这是一个

我们当时画下来的线

这个呢在有些情况下

就是我们叫做death march

就是说你工作很辛苦

每天你都去公司上班

但是这个bug就是很多

你解了这个bug你解了十个bug

会出来三个新的bug

然后呢你解了这三个bug

会出来一个再有一个bug

但是呢经过这些软件开发人员

这个无休止的工作

终于我们把这个东西给做出来了

微软在开发软件的过程中

还有很多这个文化

就是大家怎么决定一块

统一行动

其中一个很重要的特点就是说

我们有一个术语叫做ZBB

就是Zero Bug Build

就是我们在某一天

必须达到零个bug

就是你必须把所有已知的问题

进行修复

那这个日期如果一旦定好

那每个团队每个模块的负责的人

它就得执行

所以有些情况下

因为你的问题很多

有些时候就很难

所以你就得加班

做的比较辛苦一点

所以这个也是有个术语

叫做Death March

就像每天你出去打仗一样

但是你的伤亡很多

但是你不断的打

不断的打也说不定

你就能够你能做成功了

所以这个在微软相关的

这种Chart这种图表

用了很多

事实上最近呢

这个敏捷啊

或者别的一些这个方法论

也用到类似的图表

它们把它叫做

叫做Burn Down Chart

就是说叫做燃尽图

就相当于你原来有很多的工作

后来你把它们每一天每个礼拜

每个月就把它烧光了

所以这也是一个微软的一个特点

2008年之后呢

事实上这个微软的

这个开发流程也有很多的变化

其中一点就是说随着很多很多

这个互联网啊手机啊

这个的应用以及很多移动互联网

新兴的这种产品的出现

也许我们要采用一些

很多新的这种开发的模式

比如像敏捷的模式

这个持续改进的模式

这个我们叫SCRUM

以及还有这种我跟用户

有很紧密的结合

我不断的让用户来帮我

做这个测试

让用户来帮我做这个

提这个新的需求来改进

所以在这个最近的这个

Windows 10的这个发布中

实际上我们也用到了

类似的这样一些新的方法

就是说Windows它每天都会

产生一个我们叫构建

产生一个Build

我们内部叫做这个Canary

就是说这个金丝雀

为什么叫金丝雀呢

就是说因为每天都有很多人

迁入代码

修改这个整个产品

然后所以你这个构建不一定很好

你说不定就启动就启动不起来

或者是有一些这个驱动不支持

或者是有一些主要的功能

它就不工作

所以金丝雀什么意思

就是说如果金丝雀很早以前

这个在上一个世纪的时候

有很多煤矿

那煤矿下面经常有一些这个

有这个瓦斯爆炸的危险

传说呢这个金丝雀

对这个煤气就非常的敏感

所以你就下煤矿的时候

矿井的时候你带进去

那如果金丝雀突然间死掉的话

那你就觉得你得赶紧撤离

所以呢对于我们来说呢

这个金丝雀这个版本就是说

如果这个版本都不能行的话

那说明这些功能都做不了的话

那这个版本就不要了

但我们通过这个金丝雀版本之后

那我们说运行了几天

或者是通过了很多测试之后

我们把它发布给所有这个OSG

就是Windows这个团队

我就是其中一员

就大概有那么三万个人

让这些人来做测试来运行

所以我每天我们这个

我们电脑会收到一个新的更新

所谓还有一个新的版本

运行之后呢

当然我们会发现很多问题

我们会用这个它自带的工具

去报告这个bug

然后呢这个如果还可以的话

我们就可以发给这个

整个这个微软公司

大概有九万到十万个人

当然有些人不会说每一个版本都用

有些人会要比较积极的去使用

这些版本

然后呢这个测试也没有问题

之后我们就是说

那我们能不能给这个

我们叫Windows Insiders

就是外面的这个用户

但是对这个Windows比较好奇

比较积极的去响应

去安装版本去反馈意见给他们

大概有这个100万人左右的

这样一个团体

然后在这个整个Windows 10

发布的过程中

就是我们不断的有

有这样一个流程

就是这样的话呢

我们就可以很快的

得到用户真实的反馈

然后改进我们的工作

而不是说你把门关起来

你工作一年半

突然间有一个很新的版本

然后呢你又再把门关起来

又工作一年半又一个新版本

我们不是用这种方法

而是用这种积极的跟

不同层面的不同层次的

这个用户发布然后得到他们的反馈

然后快速地改正

软件工程课程列表:

第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章 期末考试与总结

-第一部分:基础知识

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

--编程与测试(选做)

微软开发过程之二笔记与讨论

也许你还感兴趣的课程:

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