这两天看了《移山之道:VSTS软件开发指南》,对团队软件开发又有了新的认识。也许对于我们这些软件开发的新手来说,最重要的是具体技术与应用框架,但读了这本书后我感觉到,实际团队项目中工具的使用是次要的,更重要的在于对人员的控制,如何高效得让一个团队各司其职、彼此之间在充分信息交流的基础上协同工作才是一个软件开发过程中最重要的因素。

VSTS 就是微软在MSF框架的基础上发布的一套团队软件开发集成环境,除了开发工具外还集成了测试工具、构建工具、管理工具和协作工具。其逻辑结构简单来说,就是把源代码存放在统一的服务器上,通过服务器程序为客户端不同的人员提供了不同的功能模块,也就是提供了不同的工具,比如为测试人员提供测试模块,为管理人员提供管理模块。不同的模块之间是高度耦合、协同工作的,我认为这样的运作体系之所以高效,除了因为各种工具集成完善之外,更多的原因在于所有人员一切的操作有有迹可寻,这一方面加强了人员的信息交流,免去了很多沟通的障碍,另一方面人们可以学习过去的经验,有一个“错题集”为你整理了过往的全部错题记录,这对于整个团队的建设十分有利。

说到底VSTS只是一个集成环境,完全可以有别的类似的工具出现,微软的这套工具之所以强大,原因在于其背后更深层次的思想与内涵,也就是刚刚说的MSF,即 Microsoft Solver Framework,中文是“微软解决问题框架”,说白了就是大型系统开发指南,是微软在多年软件开发经验的基础上总结出来的一套框架。下面就说说MSF的模型与准则。

MSF框架提出了软件开发过程中的组队模型和过程模型。组队模型其实就是如何进行人员配置,MSF 中技术人员组成为:开发、测试、用户体验、产品管理、程序管理、发布管理几个方面,这套人员体系的提出看似简单,其实背后藏着许多团队的血与泪。

更重要的是过程模型,这是一个团队开发软件的流程框架,如果缺少了这样一套流程体系,像无头苍蝇一样乱撞,开发过程必定会非常低效。过去的软件过程模型有两大类,瀑布模型和螺旋模型。瀑布模型是指,为整个软件开发过程设定一个个里程碑,在完成一个阶段的任务前,后续的工作都无法进行。这对用户需求始终保持不变的项目来说是适用的,但一旦用户需求有变化,整个里程碑的设置都要修改,十分低效。螺旋模型指的是依据用户需求不断改变重新构建软件,这对小型项目比较有效,但一旦项目较大,整个过程会非常混乱。

MSF框架提出的过程模型继承了以上两种模型的优点,它既使用了阶段里程碑的设计,也使用了迭代的方法根据需求重复构建软件。该过程模型中,软件不是像瀑布模型一下开发完整,而是先开发核心功能并构建、发布,然后再根据需求变化加入其他新的功能,不断发布新的版本,这是一个迭代的过程,体现了螺旋模型的优点。而在每一个版本的开发流程中,设置不同的阶段与里程碑,具体分为构思阶段、计划阶段、开发阶段、稳定阶段、部署阶段,分别对应需求分析、方案设计、技术代发、软件测试、项目发布这几个步骤。这样一套结合了迭代与里程碑的高效过程模型,既灵活多变又可稳步前进。

MSF有如下8个准则:推动信息共享与沟通;为共同的远景而工作;充分授权和信任;各司其职,对项目共同负责;重视商业价值;保持敏捷,预期变化;投资质量;学习所有的经验。这样一套设计准则在过程模型中有所体现,也为VSTS工具的设计提供了核心思想,我觉得其更重要的作用是为所有团队人员提供了一套行为与思想准则,是它们软件开发生涯中的人生观与价值观,心齐了步伐才能一致,思想统一团队才能前进。

VSTS集成环境就是对MSF框架的具体实现,其中蕴含了MSF框架的模型与准则。就算大家将来使用不到VSTS工具,了解MSF框架的基本原理对于团队软件开发还是必不可少的。

《移山之道:VSTS软件开发指南》读书笔记的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置

    一.Intellij IDEA的简介 Intellij IDEA是java语言的集成开发环境,与Eclipse相比,它的功能更多.更强大.更智能,Eclipse更适合刚学习java语言的初学者,它操作 ...

  2. 关于esp32的ADC采集

    对于ADC采集 程序源码如下: /* ADC1 Example This example code is in the Public Domain (or CC0 licensed, at your ...

  3. (转载)linux 常用命令

    出处:http://www.cnblogs.com/vamei $ 命令行提示符 粗体表示命令 斜体表示参数 filename, file1, file2 都是文件名.有时文件名有后缀,比如file. ...

  4. 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful)

    近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只考虑dotnet到dotnet的情形下,我们可以选择remoting.WCF(http).WCF(tcp).WCF(RESTful). ...

  5. Codeforces Round #553 (Div. 2) C. Problem for Nazar 数学

    题意:从奇数列 1 3 5 7 9 ....  偶数列2 4 6 8 10...分别轮流取 1 2 4 ....2^n 个数构成新数列 求新数列的区间和 (就一次询问) 思路:首先单次区间和就是一个简 ...

  6. 第30节:Java基础-内部类

    内部类 // 外部类 class Demo{ private int num = 3; // 定义内部类 class Int{ void show(){ System.out.println(&quo ...

  7. 锚接口(上)——hashchange api 和 $.uriAnchor

    概述 这是我在单页Web应用这本书上看到的方法,并深入的研究了一下,把结果记录在下面,供以后开发时参考,相信对其它人也有用. 说明一下,这个方法已经过时了,H5有更新的方法:history api,我 ...

  8. mysql升级8.0后项目不能连接问题

    转载简书:https://www.jianshu.com/p/a164d582e5d9 主要是因为驱动配置变了driver中得用com.mysql.cj.jdbc.Driver,多了个cj: url后 ...

  9. mint-ui Infinite scroll 重复加载、加载无效的原因及解决方案

    1.无限滚动的运用场景: 一般运用在列表展示,有分页.下拉加载更多的需求中. 2.代码分析 代码很简单,实现了列表分页,数据加载完之后显示数据状态 <template> <div c ...

  10. 21天打造分布式爬虫-requests库(二)

    2.1.get请求 简单使用 import requests response = requests.get("https://www.baidu.com/") #text返回的是 ...