读书笔记——《构建之法》

trinidad trinidad     2022-10-23     142

关键词:

谢谢大家能来看我的博客,这是我第一次写博客,大概也会石沉大海吧。但我会逐渐成长,写出更优秀的博客。

那么下面开启正文吧。

  《构建之法》一书面向初级程序开发者,讲述个人开发、小组开发、团队开发中所要注意到的问题。有助于本学期软工课程的机会,我第一次能够担任一个较大小组(8人)的组长,并带领大家完成自己的小项目。但我深知自身的管理知识是非常贫乏的,又因本书章节很多,所以我特别挑选了几个章节借鉴经验,并且遴选了最有意义的两个章节将精华部分记录下来与大家分享。

 

5团队和流程

         团队模式问题是由人数渐增而产生的,2、3人的团队大多不需要多少事前规划就可以没有多少冲突地将事情解决,而人数渐增所带来的角色、任务分配问题几乎无法避免。然而各种团队模式和开发流程都是优劣并存的,如何选择取决了我们所要处理的问题以及队员们的水平

1、团队模式:软件团队有各种形式,适用于不同的人员和需求,有几种较为流行的模式及其优劣如下:

1)主治医生模式:首席程序员负责处理主要的设计和编码,其他人从各个方面协助其工作。

                   优:最大限度发挥首席程序员的能力。

劣:“明星”也是人,也会受伤、犯错误。

评:如何让团队的利益最大化,而不是“明星”的利益最大化?(IBM SYSTEM 360)

         2)社区模式:由许多志愿者参与,每个人参与自己感兴趣的项目,大部分人不拿报酬。

                   优:众人拾柴火焰高。

                   劣:如果大家不愿拾柴或柴火质量差,最后火就灭了。

                   评:成功的社区项目需要很严格的代码复审和质量控制。(Linux操作系统)

         3)秘密团队模式:一些软件项目在秘密状态下进行,别人不知道他们具体在做什么。

                   优:团队内部有极大自由、较高热情、较少外界干扰。

                   劣:士气会随着时间推移而下降。

                   评:若发挥得好,很大的驱动力能让团队发挥超高的效率。(苹果研发Macintosh之后的系统)

         4)交响乐模式:某个软件领域处于稳定成长阶段的时候,许多大型开发团队会采取。

                   优:门类齐全、各司其职。

                   劣:进行的都是很有经验的项目。

                   评:适合大规模的,有明确任务细分的软件工程。(Office97~2013…)

5)功能团队模式:具备不同能力的同事们平等写作,共同完成一个功能(Dev、UX、AQ、PM)。在一个功能完成后,这些人又重新组织,共同完成下一个功能。

         优:每个小组都是一个有自主权的单元,自由度高而带来了开发时的高效。

         劣:零散的小团队就要求团队间需要频繁的交流,从而一定程度上降低效率。较高的自由度不适用于一些等级制度森严的公司。

         评:很多公司最后都会演变为这一模式,能充分利用每一个人的能力,整体团队分工又不死板。(FORTRAN语言项目)

2、开发流程:一群人一起开发软件,必定需要有一定的流程,否则一窝蜂地毫无章法地干,最后有可能做成,但也是一堆没有意义的程序。开发流程的选择关乎到软件开发的效率容错程度开发周期对风险的规避能力

         1)瀑布模型:将硬件开发领域的分析->设计->实现->销售->维护运用到了软件工程中,先有一个模拟版本,在此基础上收集反馈,再走一次流程,最后交付最终版本。

                   优:1)各个阶段非常明晰,更容易把握项目的进展。

                            2)不需要频繁的交流。

                   劣:1)最终产品出现过晚,各个阶段相互独立,难以应对客户变化的需求。

                            2)各个过程难以回溯,但软件生产过程中需要时时回溯。

评:适用于客户要求非常稳定、技术人员较为分散、团队成员对所用的技术非常熟悉的情况。

         2)统一流程:在系统的主要需求和架构明确之后,软件团队进入了一个不断演进的循环中:【开发->发布->听取反馈->根据反馈做改进】。为了早日听取客户的意见,把产品最核心的功能用最小的成本实现出来,然后快速征求用户意见。

                   优:1)能尽快地听取客户的意见,及时纠正软件开发的走向,规避风险。

                   劣:1)不适用于创造性、颠覆性的技术开发。

                            2)过早地发布可能带来更激烈的商业竞争。

评:这是很实用的流程,尤其适用于高校内尚不成熟的学生在规定时间内开发代码,不断地更新换代保证了时刻有可以交付的版本。当然这不是说就不适用于大企业的开发,微软的MSF模型正是来源于这一构想。

7实战中的软件工程

分析实战中的软件工程,莫过于分析最成熟的大公司的开发过程。本章选取了经典的微软公司的MSF模型进行分析,从它的基本原则、团队模型、过程模型入手,描述了微软开发团队内的开发精神、开发方式、开发过程

基本原则

         一、推动信息共享与沟通

1、  在整个软件生命周期中使用团队协作服务器(GitHub或TFS),推动信息共享。

2、  借助于以上平台,团队成员之间的交流简明扼要即可。

3、保留并公开所有的信息,以便让项目进度和项目中存在的问题及时为所有人知道。

         二、为共同的远景而工作

1、  在设定项目时,所有成员需要明确项目的预期目标,统一思想,否则团队内的分歧会随时间而累加,对项目的发展是很有害的。

三、充分授权和信任

1、  微软的MSF团队模型就是建立在两个原则之上:1)平等协作2)充分授权给团队和成员。

优:每个人都有权利估计并决定自己的任务需要的时间,所以人人都会支持计划和时间表。

劣:充分的授权可能会导致倦怠的滋生,不停地追踪会加重主管的负担。

评:在团队工具VSTS的帮助下,所有工作的进展都记录在案(这也是要推动信息共享的原因),任何延迟都会被及时发现。当然授权的管理理念又和一些集权类企业格格不入。

         四、重视商业价值,提供渐进的价值

1、  首先,团队需要明确1)产品解决的问题2)为谁解决问题3)为什么你的产品能解决这些问题4)客户怎样付钱让你解决问题。因为项目需要重视市场和客户,技术是处于第三位的。

五、重视商业价值需要保持敏捷,预期和适应变化

1、项目需求的生存期是有限的,一旦开发过久,需求可能已经发生了很大的变化,而一个经验值是18个月。

2、客户的需求也是会变化的,我们需要预期变化而不是期望变化,这对开发流程和团队模式也带来了挑战。

六、在变化中需要抓住投资价值

1、投资讲究效率。我们并没有提质量第一,而是解决用户的问题第一,不惜一切代价达到最高质量往往错过了最佳的发布时机,而大型项目发布后追踪式的修补也是允许的。

2、投资讲究时机。为了尽量在产品中减少上述中的bug,1)在构想时充分讨论各种可能缺陷2)发展与测试应该并行发展。3)为迎合客户的时间需求,可以有针对性地取舍功能。

七、投资是长期的

1、团队的成长、成熟需要时间,生搬硬套大公司的开发模型与团队构成大多是南橘北枳。

 

团队模型:

在MSF团队模型中,每一个部分都是非常重要的,任何一个角色无法实现其目标都会危及整个项目。这也和微软内部的理念相契合,即:每个成员之间都是平等的。

 

这样的团队中,需要的是直言不讳,例如为了团队方案的争吵、因为产品质量而不赞同增加功能,每个人都参与设计规划、具体执行是指导思想,在对立中寻找共同利益,在冲突中达到平衡是团队的目标。

 

MSF过程模型

每一个项目都要经过一个生命周期,图示是MSF过程模型的生命周期简图,它吸收了瀑布模型基于里程碑的规划优势和渐进式交付的不断完善的长处。

 

         优势:里程碑式的规划:团队里用里程碑来检查工作和同步各个角色的进度。

                     渐进式交付的不断完善:利于尽快交付产品,获得内外反馈。

劣势:各个阶段并不是理想化的,但可以通过设置缓冲区,不需要强求一律,但可以通过统一整体步骤,从而调节好团队间的依赖关系。

评:这是一个内外兼顾的模型,既考虑了外部的客户因素,又考虑了内部的成员间相互依赖的关系。

第一周读书笔记《构建之法》(代码片段)

构建之法读书笔记#wmd-previewh1color:#0077bb  构建之法读书笔记沈三景PB15061249软件工程读书笔记 前言开学前两周,杂事颇多,没有充足的时间阅读《构建之法》,只能每天在睡前阅读约半小时,故只看了前三章。虽如此... 查看详情

构建之法——读书笔记

第8章需求分析8.1软件需求 寻找需求:1.获取和引导需求(Elicitation)        软件团队需要找到软件的利益相关者,了解和挖掘他们对软件的需求,引导他们表达出对软件的需求。 2.分析和定... 查看详情

《构建之法》第四&十七章读书笔记

  《构建之法》第四&十七章读书笔记一.        前言    再次阅读《构建之法》,愈发被其中生动有趣的举例吸引。作为一本给予软件工程学生的书籍,其不以枯燥的理论知... 查看详情

构建之法——读书笔记

第七章MSFWhatisMSF?——MicrosoftSolutionFramework(微软解决方案框架)即一个方法论,也就是微软推荐的软件开发方法。MSF基本原则:MSF没有像敏捷那样搞一个宣言,但是它也有一套思想框架—9条基本原则 1.推动信息共享与沟通(... 查看详情

《构建之法》第4.17章读书笔记

 《构建之法》第4.17章读书笔记第四章原文语句:      异常不能跨过DLL或进程的边界来传递信息,所以异常不是万能的。提出问题:      1.什么是DLL?DLL是来解决什么问题的?网上... 查看详情

构建之法——读书笔记

  《构建之法》第十&十一章主要讲述了在软件设计前期的需求分析问题上的方法和实践经验,分为“典型用户和场景”以及“软件设计与实现”。其中第十章大部分内容包含:用户的分类(典型用户可以包括以下内容... 查看详情

《构建之法》读书笔记

目录软件工程的阶段...1好的单元测试标准:...1代码复审...2结对编程...2软件开发流程...3敏捷流程   Scrum..3MSF.5需求分析...5典型用户和场景...6规格说明书(Spec)--包括功能说明书和技术说明书(设计文档)8用户体验...9软... 查看详情

构建之法——读书笔记

第五章5.1非团队和团队团队特点:1.有一致的集体目标,要一起完成这目标。       2.团队成员有各自的分工,互相依赖合作,共同完成任务。非团队特点:各自行动,独立把任务完成,有人不辞而别,... 查看详情

构建之法——读书笔记

第六章敏捷流程在软件工程的语境里,“敏捷流程”是一系列价值观和方法论的集合。敏捷开发的原则:        1.尽早并持续地交付有价值的软件以满足顾客需求。       &nbs... 查看详情

《构建之法》读书笔记

  第一节软件工程课上,杨老师力荐同学们务必要人手一本《构建之法》第二版。课上说到这本书无论是对学习软件工程学科的学生,还是教授软件工程课程的老师,或是从事软件开发行业的相关人员,都是一本令人受益... 查看详情

《构建之法》读书笔记01

  今天阅读了邹欣老师的《构建之法:现代软件工程》的第一章,也回想起了我之前对于软件和硬件的一些思考,在这里一并总结。  首先谈软件工程,在计算机技术刚刚发明的时候,跟其他的行业一样,肯定是没有工程这... 查看详情

读书笔记——《构建之法》

谢谢大家能来看我的博客,这是我第一次写博客,大概也会石沉大海吧。但我会逐渐成长,写出更优秀的博客。那么下面开启正文吧。  《构建之法》一书面向初级程序开发者,讲述个人开发、小组开发、团队开发中所要注意... 查看详情

《构建之法》读书笔记

     项目经理     介绍了产品经理——正确地做产品与项目经理——正确地做流程。以及微软的职位名称。微软产品团队三足鼎立的角色分配就是PM、开发、测试。PM负责除产品开发和测试之... 查看详情

《构建之法》读书笔记二

 这周读了《构建之法》的第二章。第二章主要讲到了个人技术和流程。 软件是由多人合作完成的,不同人员的工作相互有依赖关系。一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应... 查看详情

构建之法——读书笔记

本周粗略的过了一遍第12章。第12章用户体验其实,计算机软件的用户界面(UserInterface,UI)和用户体验(UsereXeperience,UX)是一个有着丰富内容的学术领域,软件工程师们在长期工作中也积累了很多相关的经验。 无论软件还... 查看详情

《构建之法》读书笔记

本周阅读第一章《概论》第一章《概论》旨在说明软件工程的概念。几个概念:软件=程序+软件工程软件工程可以定义为:把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程;软件工程包括一下领域:源代... 查看详情

《构建之法》读书笔记一

本周先看了《构建之法》的第一章。这一章介绍的理论和知识点有计算机科学的领域、软件的特性、软件工程、软件工程与计算机科学的关系,还向我们详细介绍了软件工程的定义与组成部分。其中有三个推论:程序=数据结构+... 查看详情

《构建之法》读书笔记

   在第四章的两人合作中,了解到代码的规范特别重要。“代码规范”可以分成两部分:代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。代码设计规范。牵涉到程序设计、模块之间的关系、设... 查看详情