zoukankan      html  css  js  c++  java
  • 《构建之法——现代软件工程》读书笔记(二)

    1.实战中的软件工程——MSF的原则,MSF团队模型和开发模式,CargoCult。

      MSF是什么呢?在前面的章节中讲了很多方法论和宣言,但这里介绍的是微软的一个宣言(Microsoft Solution Framework),MSF有着九个基本原则:推动信息共享与沟通;为共同的远景而工作;充分授权和信任;各司其职,对项目共同负责;交付增量的价值;保持敏捷,预期和适应变化;投资质量;学习所有的经验;与顾客合作。下面对这些原则依次进行了介绍和理解。首先是推动共享与沟通。就是所有信息都保留且公开,也就是把所有的信息都共享,都用来沟通。这个原则的好处是能够让整个项目的开发流程更加的具备合理性和逻辑性。这样在管理这个项目时就更加简单了。第二点,为共同的远景而工作。其实就是大家一个团队的,力要往一处使,不能说每个人各做各的,到最后谁也好不了。要明白整个项目其实就是每个人的合作组成的。也就是统一思想,上下一条心。第三点,充分授权和信任。这一点的关键是授权。也就是每个成员都要有自己的授权,他们在有权在职权范围内完成任务。这个原则其实际是MSF模式的核心之一,团队之间要平等协作,并且各个成员之间得到充分的授权。这样的话,每个人都会负担起自己应该负担的责任,并且有足够的权利去做好自己分内的任务。第四点,各司其职,对项目共同负责。这点其实和第三点有着一些相似之处,每个人肯定都有自己分内的任务和分配的责任。每个人都要对自己负责的这部分内容负责,并且有去做好他的义务。当这部分出问题的时候也要做好对其负责的准备。第五点,重视商业价值,提供渐进的价值。我们虽然是搞技术的,但我们同时也是一个商业实体,需要赚钱。要重视这个项目的商业价值,知道了有谁会为这个付钱,才有可能真正的做好这些。第六点,保持敏捷,预期和适应变化。软件工程中,无时无刻不充满着变化。唯一不变的是变化。客户不可能第一时间明确自己的需求,我们要对各种变化做好一定的预期。这也就是所谓的敏捷,对所有事情要保持敏捷的思维,能够应付好变化。第七点,投资质量。质量,是软件工程中一个很重要的命题。在软件工程中,如果没有质量,一切都是白搭。这方面我们就要下好定义,明确什么是软件的质量,明确每个成员都必须为质量保障负责。第八点,学习所有的经验。这一点其实和第一点有着很大的关系。只有我们把所有信息都保留下来了,才能够对所有的经验做一个汇总,才能够做到学习所有的经验。学习过去经验的基础上,不要让过去的经验妨碍解决现在的问题,让思路局限在过去上。最后,与顾客合作。在软件开发的过程中,要时刻保持与顾客之间的交流,对于顾客提出的需求和要求进行灵活的更改软件的功能等。这样才能把软件真正的做好了。

      之后,又讲述了MSF团队模型和MSF过程模型,其实就是这个模式的抽象化形象。那么在实战中,我们能用得到吗?不用着急。任何一种模式都有一个发展的过程。我们要在这个过程中不断完善自己的软件工程开发模式,并逐渐向其靠拢。

    2.需求分析——软件需求的类型,如何获取用户需求,竞争性需求分析的框架NABCD等等。

      软件需求有很多,那么该如何找到这些需求呢?作者提出了以下步骤:获取和引导需求,分析和定义需求,验证需求,在软件的生命周期中管理需求。在分析需求之前,要先理解什么是软件产品的利益相关者,谁才是真正我们应该服务的对象。要明确这点,才可能分析好需求。获取需求,可以通过用户调研的方式来获得。这方面有很多种的方法,如焦点小组,深入面谈,卡片分类,用户调查问卷等等。通过这些方法,就能大致获取用户的需求。但我们在生产软件的时候,都知道,一定有竞技。作者提出了一个竞技性需求分析的框架。通过NABCD来分析自己和其他公司之间的利与弊。在这之后,通过功能的定位和优先级,知道自己产品的定位,在哪方面可以赶超对手等等。在分析好需求后,可能就会想要开工。但计划和估计是有出入的。我们提高自己的估计能力,就能对整体的项目流程进行一个极大的优化。最后,将每个任务细分成一堆小任务,对其进行分而治之。把每个模块都分离出来,把每个部分都做好即可。

    3.项目经理——团队角色分工,项目经理的由来和要求等等。

      PM,是(Product Manager、Project Manager、Program Manager)的简称,其中最后一个更像是前两者的组合,也正是我们要讨论的那个PM。关于这个PM的来历,作者做了一个简单的介绍。这是微软的一种职位名称,来自于微软一个员工的贡献。那么PM要做些什么呢?作者指出,PM要做开发和测试之外的所有事情。PM本质上是和大家平等的。PM主要是给团队指明方向,保持团队的平衡。要成为一个PM,需要多方面的能力,如观察,快速学习能力,分析管理能力,一定的专业能力等等。之后,作者又指出如何进行高效的团队讨论。在团队讨论的时候,首先要理清事实,然后要表达感情和直觉,乐观的分析+

    创意,悲观的分析+创意。如此循环往之,才能把会议真正的开好。PM同时也要做好项目中的风险管理。在项目开发的时候,肯定有着来自多方的风险。做好了风险管理,整个团队才能更加棒的运行。

    4.典型用户和场景——典型用户和场景、软件功能说明书和技术说明书、功能驱动的设计等。

      在开发一个软件的时候,我们的用户有很多种。那么怎么知道哪种用户是我们需要为其服务的呢?不可能说做好每个用户的功能。那样不仅累而且无用。这就引入了典型用户的概念。典型用户的存在可以让项目的开发更加具有针对性。那么如何定义一个典型用户呢?首先我们可以在项目经理的带领下整理出几种典型用户,之后再根据实际考查和了解去除一些无用的典型用户。这就确定了典型用户。在确定后,我们还得确定每一个典型用户的目标。他想使用这个软件做什么呢?我们可以使用模拟场景的方式来做到这点。有了场景,就开始把任务进行细分,并开始实现。同时,用例也是一种很好的分析用户的方式。用例通过各种基本元素和方法来做好各种定义。在我们写软件的时候,需要有指导书。也就是规格说明书,这通常有两类——软件功能说明书和软件技术说明书。功能说明书一般由PM来制定,从用户的角度做好描述。写好功能说明书,只有通过不断的实践才能够真正的写好。技术说明书通常是软件开发者书写的,里面体现了很多软件开发的基本原则。那么如何把用户的需求变成团队成员可以直接操作的开发工作呢?功能驱动的设计是一种针对这个的方法论之一。通过这个步骤,就能够将需求分析转换成具体的任务和功能实现,再下发到具体实现中去。

  • 相关阅读:
    js的深拷贝特别注意this的深拷贝
    快速的熟悉一个angular的项目从run看起
    关于angular路由中的#
    AngularJS的Provider, Value, Constant, Service, Factory, Decorator的区别与详解
    css页面缩放
    jquery自定义window事件
    js自定义事件
    git分支
    webpack知识小结--require.context方法
    Vue 创建组件的两种方法
  • 原文地址:https://www.cnblogs.com/wushenjiang/p/12246308.html
Copyright © 2011-2022 走看看