[译]软件架构师其二:软件架构中的利益相关者

本文原文来自于Medium,Stakeholders in Software Architecture
原文发布于2017年11月4日。

作者Nikolay Ashanin
照片:

任何对此文感兴趣的读者请花费50美元/年或5美元/月的价格参加Medium会员计划,否则每月只能查看三篇文章。
一个月一餐盒饭钱,我觉得并不贵,你说呢?

以下为本人对文章的翻译。不对内容负责,也不对任何翻译错误负责,同时不包含任何图片内容,如需查看图片请付费查看原文链接,谢谢。
正文如下:


Article series
The Path to Becoming a Software Architect
Stakeholders in Software Architecture
Types of Software Architects
Quality attributes in Software Architecture. Part I
TBD Quality attributes in Software Architecture. Part II
Documentation in Software Architecture
Certificates in Software Architecture
Books in Software Architecture
TBD Software Architect. Design vs Architecture


谁是利益相关者

总有一个系统利益相关者比你知道的多; 而且已知的利益相关者至少还有一个你现在还不知道的需求。
Tom Gilb

代码本身,无论多么理想,都不值一分钱。重要的是此代码实现的业务功能。或者更确切地说,那些愿意为这种商业功能付费的人,因为它解决了他们的问题,或者只是用于娱乐。所有这些人,开发人员,架构师,管理人员不论在世界哪里工作,都被称为利益相关者。项目开发完全是关于利益相关者的。而开发者本身也身处其中。

利益相关者是指对满足其需求和期望的系统或其属性享有权利,分享,索赔或利益的个人或组织。

更简单地说,利益相关者的利益对项目有一些影响,因此应始终考虑他们的意见。如果你不这样做而忽略了一个关键的利益相关者,那么你可能会毁了整个项目,而且比在项目中出现开发错误要昂贵得多。利益相关者为系统提供机会和限制,并且是需求的来源。

一个有趣的观点是,在决策阶段之前通常没有人自称利益相关者。但是,一旦决定被设计,宣布或实施,受此决定影响的每个人都将表达他们的意见。为了保护项目免受潜在伤害,建议您首先明确该向谁提供答案以及为什么,然后才回答如何做。

利益相关者类型

通常是为谁创建项目?大部分情况下答案是最终用户。最终用户也是该项目的利益相关者。但是,它们可能不是关键因素。因此,在软件开发中,值得关注的不仅是最终用户,而是全部利益相关者。

编制一个完整的利益相关者类型列表是不可能的,因为对于不同的系统,它们可能会有很大的不同。

让我们强调以下利益相关者是最常见的。另外,让我们看看针对每个类别当我们忽略他们的兴趣时的后果:

参与项目并为此工作的人员

项目团队。想象一下,您已经开发出一个使用.NET技术堆栈的解决方案。但是有一个问题。您在公司中有20个可用的Java开发人员,没有人知道.NET。我想在你记住这个之后,没有必要解释为什么设计的解决方案是不合适的。这是最简单的例子。您需要了解团队,以了解他们熟悉哪些技术以及哪些技术不应仅仅因为它们的趋势而被使用。

管理团队。假设您在做出决定之前忘记向项目经理询问重要事项。但他们将帮你擦屁股并保证解决方案依照设计达到最终结果。此外,项目经理通常会获得更多信息,并且倾听他们的意见非常有用。

第三方公司。从集成到无法使用第三方解决方案的复杂性可能存在各种问题。

支持团队。在其生命周期的一个或多个阶段支持系统的组织或个人。假设一位架构师忘了设计支持系统。这就提出了一个问题,“这个系统的设计是闹着玩的吗,我们该如何支持它?”。

受项目影响且将使用其工件的人员,包括结果

客户。客户是关键利益相关者之一。如果您是架构师,那么只有一个问题。你怎么能忘记与为项目开发付钱的人讨论你的决定?我知道后果。事实上,这很容易。在我的实践中,有一个例子是创建了一个用于实时数据处理和同步的惊人技术解决方案。考虑到最新的技术趋势,这一决定是市场上最先进的决定之一。此外,它经过精心设计,经过完美测试,并向客户展示。然后事实证明,客户想要不同的东西。更确切地说,一个完全不同的解决方案。他们根本不需要超级同步。

职能部门的负责人和雇员。它们在实践中很少遇到,但它们是最苛刻的利益相关者之一。如果你忘了它们,那就准备好让吃土吧。例如,您正在设计影响两个部门的会计系统。每个部门都有一名负责人和15名员工。设计的系统进一步优化了其中一个部门的工作,并将使15人中的12人无事可干。与此同时,经理对权力非常贪婪,并且感到震惊的是,由于您开发的附加功能,他们将只有三名员工。因此,他们试图寻找系统中的缺陷,向项目中的所有关键人员发送大量电子邮件,并简单地停止配合,暗自希望删除此功能。

最终用户。所以,我们终于找到了他们。我希望他们总是对项目产生重要影响,但实际上并非如此。

未参与项目但由于其职位或活动可能会影响项目的人员

公司的高层管理人员。公司的利润,成功和地位以及项目的成功对他们来说非常重要。我们应该考虑到这一点。

公司的所有者。他们在只要听到“项目”和“风险”这两个词就会非常不安。在设计项目时尽量减少它们。

股东和债权人。公司的利润对这些利益相关者非常重要。而且,他们希望尽快得到它并保持稳定。你要是敢设计一个将在五年内完成的解决方案,就算你可以把引进迭代并明天开始赚钱,还是可能会让你失去你的职业生涯。

监管机构。您设计的系统与某些标准和指南不符,然后您的解决方案被禁止进入AppStore?这不是一个好的解决方案。

此外,值得特别注意的是,利益相关者不仅可能对项目持积极态度,还可能有负面态度。因此,我们将考虑如何为特定项目定义利益相关者。

利益相关者管理理论

利益相关者管理理论首先由爱德华·弗里曼在《战略管理:利益相关者方法》一书中详述。它指出,理解和定义可以影响企业或特定项目的人群可以清晰地构建和优化管理流程。虽然这个过程与管理领域更相关,但我们不要忘记,我们不仅仅是编码员,也是架构师,这也适用于我们。在他的概念中,爱德华·弗里曼将利益相关者分析和管理过程分为六个阶段:

此处有图
图2.利益相关者分析过程

让我们更详细地看一下这些阶段。

确定所有利益相关者

由于利益相关者对项目有影响,因此在开始设计之前应严格识别和研究所有利益相关者。这可以由业务分析师或架构师完成。项目经理应在业务分析阶段,架构创建期间以及实施设计解决方案时使用有关利益相关者的信息。

不仅要确定利益相关者,而且要找到影响他们的方法,这一点非常重要,以便以后更容易就各种问题达成一致。

沟通是影响利益相关者的主要工具。它应该始终首先使用。特别是,它将让您确定他们以某种方式行事的动机。

要与利益相关者进行有效沟通,您需要了解他们。否则,就不可能有效地工作。

任何利益相关者分析都从识别项目的所有利益相关者开始。使用头脑风暴技术会很有用。以下问题有助于确定利益相关方:

  • 谁的行动可能导致无法实现项目目标?
  • 谁在开发这个项目中利益最大?
  • 之前有这样的项目吗?如果是这样,它成功了吗?
  • 所有部门都有必要参与这个项目吗?
  • 项目期间需要解决哪些问题?
  • 谁比其他人更了解这些数据,并且能够独立完成设计?

利益相关者分析要做到:

  • 确定可能影响项目的利益相关者的利益
  • 确定可能中断项目或降低项目成功率的潜在困难
  • 确定需要了解项目进展情况的关键人员
  • 确定需要参与项目各个阶段的人员群体
  • 评估整个项目的沟通方式,规则和原则
  • 规划行动,以减少利益相关者对项目进程的负面影响。

请记住,好的体系结构解决方案必须通过与利益相关者的多个工作阶段才能被认为是成功的。

根据OMG方法,我们可以通过对利益相关者考虑,涉及和满足方面区分六个项目状态:

  • 确认  - 确定利益相关者。
  • 代表  - 商定利益相关方的方法,并指定每组利益相关方的代表。
  • 参与  - 利益相关方团体的代表积极参与项目并履行其职责。
  • 达成协议  - 利益相关方代表均达成一致。
  • 对部署感到满意  - 实现了利益相关方代表的最低期望。
  • 使用满意  - 系统满足或超过利益相关者的最低期望。

在利益相关者的帮助下确定需求

确定利益相关者名单后,有必要了解他们的立场。他们的重要性和影响力使我们能够确定主要要求并排除不必要的要求。

为此,您可以使用以下利益相关者管理策略,该策略通常用于项目管理:

此处有图
图3.影响重要性图

利益相关者图是一个双轴图表,其中包含影响轴和重要性。

影响力是项目管理中的利益相关者权力。利益相关者的权力会影响项目投资的水平,参与项目预算,并对在项目期间就关键问题做出决策的人产生影响。

重要性是利益相关者对项目成果的贡献。它取决于满足需求,解决每个利益相关者的问题和满足利益会影响项目结果。例如,重要的是利益相关者的特殊知识或技能,以及项目成功所必须满足的需求。

该图分为四个象限,即利益相关者群体。不同象限应用不同的工作方法。

第一象限是高影响力,高重要性 - 良好的关系。有必要与这些利益相关者建立密切的工作关系,因为对他们来说,项目很重要,他们参与实施并积极影响过程和结果。

第二象限是高影响力,低重要性 - 监控。这些利益相关者有权实施该项目,但对此并不太感兴趣。由于这些因素的组合,它们可能成为风险源,因此需要进行仔细的监控和管理。

第三象限是低影响力,高重要性 - 保护。他们需要特别的举措来保护他们的利益,因为这个项目对他们来说非常重要,但是他们对实施的影响是微不足道的(或者他们没有可能影响)。

第四象限是低影响力,低重要性 - 低优先级。这组利益相关者参与其中并且相对感兴趣,但不太多。因此,从注意力分配的角度来看,这个群体的优先级较低。

应用您的利益相关者知识

当形成利益相关者列表时,绘制重要性影响图,创建需求列表并由关键利益相关者批准,您可以开始设计项目。此外,项目经理应与关键利益相关者合作,并在项目的整个生命周期中陪伴他们。项目经理必须确保在开发期间满足利益相关者的要求,并且在需求或利益相关者本身发生突然变化的情况下,经理应通知将响应这些变更的架构师。

重要的是要记住,如果架构师没有提出最优化的算法,这可能导致项目变得更加昂贵并产生不同的后果。如果架构师未能确定其中一个关键利益相关者,那么他的职业生涯可能就完蛋了。

推荐书籍

Stakeholder Theory: The State of the Art