敏捷建模:增强沟通和理解

我们都看过有关项目失败的统计信息[1],也可能亲自遭遇过失败。大多数软件项目都逃脱不了失败的命运。思考一下,我们会发现导致项目失败的方式有(显然这个列表并不详尽!):

\

技术上的:

\
  • 解决方案不能满足项目需求(可伸缩性、性能、可靠性、成本等)\
  • 由于一些技术难题,我们不停推迟最后期限(或者靠增加成本保证期限),直到项目发起人对项目失去信心并撤资\

工作方式上的:

\
  • 团队不理解提供的需求\
  • 提供的需求并不正确\

如果我们把这个问题抽象到一个高层次的视图,可以发现理解问题并形成解决方案是有困难的。
51e14223230a07857339d2dce36d2ff3.jpg

\

不过这个视图过于简化。从问题得出解决方案,我们不应该把这个过程看成是信息的单向流动,也绝不能把它看成是一次性、瀑布式的过程。这种做法我们先前都见过,它的进展并不顺利。

\

那来更新一下视图,我们发现问题和解决方案之间互有信息流,而且需要迭代。

\

c99139fa717d35adf259263128f2cd7f.jpg

\

现在的认知已经清楚一些了,不过它仍然很简单。让我们更进一层。我们都需要认识到,开发是一项团队活动。我们会有多个利益相关者,负责设计、开发、部署和运营的人也不少。

\

a1cbeaaf68a033f4c3f3dbfe5972b173.jpg

\

这样我们对这种情形有了更为真实的认识。不过值得思考的空间还是很大。虽然我们力求有一个本地协作的团队,但事实上我们的工作是分布式、网络化的。

\

9158eeaaa875edacd206966495ee9514.jpg

\

总结一下这个过程,会发现项目的成功受限于我们的如下能力:

\

1. 理解

\
  • a. 我们了解问题领域么?\
  • b. 我们是否通晓解决方案领域?\
  • c. 我们知不知道两个领域之间该怎样转换?\

2. 沟通

\
  • a. 利益相关者能不能把需求传递给确定解决方案的那些人?\
  • b. 确定解决方案的人在彼此沟通时能不能把解决方案的细节描述清楚?\
  • c. 确定解决方案的人能把挑战和替代方案准确地告诉利益相关者么?\

此外,还要认识到一个棘手的问题,就是我们需要处理地理和时间的问题(比如工作地点和时区)。

\

解决这些问题的方法有很多,它们也能增加项目成功的胜算。但我们应该从哪里开始呢?从敏捷的一些基本理念(宣言原则和部分常识)入手是个不错的主意。

\

831dc3b7716957ac6888c6e173abfb41.jpg

\

与其把钱砸在一堆工具上(我敢肯定这种投入非常可观!),并试图采用命令方式和全方位的流程,还不如让我们用不同的方法。让我们更重视人、沟通、互动,来应对变化、交付软件。怎么才能用这种方法给人们提供最好的支持呢?

\

一种常被忽视、低估或误解的关键技术是建模的使用——尤其是我们开始采用敏捷方法之后。在反对重量级的流程和以工具为中心的开发过程时,建模也受到了牵连。让我们花几分钟时间来澄清一下……

\

我们先统一一下对建模的定义。简单说来,建模是对现实的简化。就是这样,不过如此。它并不意味着要用特定的符号、工具和流程。我们只是想研究复杂的东西,让其中的一些部分易于理解。正如他们所说,有时候你是见木不见林。不必要的细节反而会让情况更加难以理解。最好还是隐藏那些不必要的细节,只专注于具体情况的重要方面。

\

如果对建模的定义达成一致了,那我们就深入一步,考虑下敏捷建模吧。利用敏捷建模,我们可以用一种敏捷的方法去借助模型进行理解和沟通。很抱歉在这里进行了循环定义,但这很容易让我们提出问题:“使用模型的时候,我们怎么采用敏捷方法?”

\

和一般的敏捷开发一样,我们用一套价值观、原则和实践来进行指导,以便尽可能地敏捷。敏捷建模方法的重点有:

\
  1. 敏捷建模遵循敏捷宣言和原则。正因为如此,敏捷建模可以是一种实践,你可以把它添加到你的敏捷工具箱里。\
  2. 模型能用来沟通和理解。\
  3. 我们力争用简单的工具创建简单的模型。拥抱简单。\
  4. 我们知道需求是变化的,因此我们在创建模型的时候要拥抱变化。\
  5. 我们的重点是交付软件,而不是交付模型。模型能带来价值的时候,我们就使用它们。如果模型没有价值、不能加速软件的交付,那我们就不创建它们。
    69b5f8892c4dd1cd3dc6c2119d943d2c.jpg\
  6. 我们只保留需要的模型。如果模型完成了它的使命,我们就可以把它扔掉。这能让我们轻装上阵,而不会陷入繁忙的工作。\
  7. 我们使用多种模型。我们使用模型时会考虑不同的角度和抽象层次,还有不同的读者。对于我们创建出来的所有模型,我们都知道它的读者是谁、要达成什么目标。要是我们还没理解目标,我们就不会创建模型。\
  8. 根据具体情况、读者和目标的不同,我们会结合着用非正式和正式的模型。比如说,一个模型可以由多个简单形状组成,用来说明系统的隐喻,也可以用UML的类图。\

总结

\

我们创建软件解决方案时,建模有助于我们进行沟通和理解。因为在交付软件解决方案的时候,沟通和理解是最关键的两个环节,所以不应该忽略建模这一有价值的工具。

\

消除对建模的误解吧,把它融汇到你的敏捷工作当中。敏捷建模遵循敏捷价值观和原则,应该成为敏捷工具箱里的实践之一。敏捷建模成为工具箱的一员后,会提高项目成功的胜算!

\

在这个系列的第二部分,让我们一起更深入地研究一下敏捷建模的价值观、原则和实践吧。

\

资源

\

AgileModeling.com:Scott Ambler创建、维护的敏捷建模主页,里面的资源又好又详细。

\

敏捷建模的要点: 这个工作坊主要提供敏捷建模的基本技能。

\

规范敏捷交付(Disciplined Agile Delivery):提供敏捷交付规范方法的社区网站。

\

关于作者

\

Lee Ackerman是The Emphasys Group的产品副总裁和CTO。Lee多年来主要调查、评估新理念,设计、开发解决方案,其他人做这些事情的时候他也会伸出援手。他目前的工作重点是帮助一些组织,让他们借助自动化、重用和敏捷最佳实践去提升交付软件的能力。

\

[1]《IT项目:超支400%,却只实现了25%的收益》:这篇新闻研究了IT项目风险和一些失败相关的惊人数据。

\

查看英文原文:Agile Modeling: Enhancing Communication and Understanding

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个题目需要我们进行数学建模,分析出部门沟通不畅对公司网络的影响,以及如何重新整合公司网络。 首先,我们可以将公司网络看作一个图,其中每个节点表示一个部门,每条边表示部门之间的联系。部门之间的联系可以通过邮件、电话、会议等方式进行沟通,我们可以将每种沟通方式的效率用一个权值来表示。例如,邮件的效率可能比电话低,电话的效率可能比会议低。 接下来,我们可以定义一个函数来衡量网络的整体效率,该函数应该考虑到各个部门之间的联系以及沟通方式的效率。我们可以根据实际情况来确定函数的具体形式和权值。 然后,我们需要对部门之间的联系进行分析,找出沟通不畅的原因,例如,某些部门之间的联系不够紧密,或者某些部门之间的沟通方式不够高效。我们可以通过数据分析和问卷调查等方式来获得这些信息。 最后,我们可以利用数学建模的方法,对公司网络进行重新整合。具体来说,我们可以采取以下措施:优化部门之间的联系,提高沟通效率,改进沟通方式,加强部门之间的合作等。这些措施的具体实施方式需要根据实际情况进行调整。 综上所述,通过数学建模的方法,我们可以分析部门沟通不畅对公司网络的影响,并且提出相应的改进措施,从而实现公司网络的重新整合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值