「需求分析」业务架构师需求分析技术权威指南

简介: 「需求分析」业务架构师需求分析技术权威指南

需求分析,也称为需求工程,是定义用户对正在构建或修改的新软件的期望的过程。在软件工程中,它有时被一些松散的名称所引用,例如需求收集或需求捕获。需求分析包括那些为一个新的或改变的产品或项目确定需要或满足的条件的任务,考虑不同涉众的可能冲突的需求,分析、记录、验证和管理软件或系统需求。以下是在软件项目的早期阶段进行需求分析的目标:

  • 从什么到如何(From What to How):弥合系统需求工程和软件设计之间差距的软件工程任务。
  • 3个正交视图:为软件设计人员提供如下模型:系统信息(静态视图)函数(功能视图)行为(动态视图)
  • 软件架构:模型可以转换为数据、体系结构和组件级设计。
  • 迭代和增量过程:期望在分析期间做一点设计,在设计期间做一点分析。

需求是什么?

软件需求是用户解决问题或实现目标所需要的能力。换句话说,需求是系统或系统组件必须满足或拥有的软件能力,以满足合同、标准、规格说明或其他正式强加的文档。最终,我们想要实现的是在预算范围内及时开发出满足客户实际需求的高质量软件。

也许软件开发人员面临的最大挑战是与客户共享最终产品的远景。项目中的所有涉众——开发人员、终端用户、软件经理、客户经理——必须对产品将会是什么样子以及要做什么有一个共同的理解,否则当产品交付时,会有人感到惊讶。软件领域的意外几乎从来不是好消息。

因此,在指定软件产品的需求时,我们需要一些方法来准确地捕获、解释和表示客户的声音。

需求分析的活动

需求分析对系统或软件项目的成功或失败至关重要。需求应该被记录下来,可操作的,可测量的,可测试的,可跟踪的,与已识别的业务需求或机会相关的,并且被定义到足以用于系统设计的详细级别。从概念上讲,需求分析包括四种类型的活动:

  • 获取需求:与客户和用户沟通以确定他们的需求的任务。这有时也称为需求收集。
  • 分析需求:确定所陈述的需求是否不清楚、不完整、含糊或矛盾,然后解决这些问题。
  • 需求建模:需求可能以各种形式被记录,例如自然语言文档、用例、用户故事或过程规范。
  • 评审(review)和回顾(retrospective):团队成员对迭代中发生的事情进行反思,并确定下一步改进的行动。

需求分析是一项团队工作,需要硬件、软件和人的因素、工程专业知识以及与人打交道的技能的结合。以下是在需求分析中涉及到的主要活动:

  • 确定客户的需求。
  • 评估系统的可行性。
  • 进行经济和技术分析。
  • 分配功能到系统元素。
  • 制定时间表和约束条件。
  • 创建系统定义。

需求分析技术

需求分析帮助组织确定涉众的实际需求。同时,它使开发团队能够用他们能够理解的语言(如图表、模型、流程图)与涉众进行交流,而不是使用页面文本。

一旦收集了需求,我们就将需求记录在软件需求规范(SRS)文档、用例或用户故事中,与涉众共享以获得批准。该文档对于普通用户和开发人员来说都很容易理解。要求中的任何变更也要形成文件,并通过变更控制程序,并在批准后定稿。

业务需求vs软件需求

一个商业计划或项目需要各种各样的需求来帮助定义目标和建立将要进行的工作的范围。需求还提供了环境和客观的方法来度量进展和成功。一旦建立了业务需求,就可以定义和开发软件需求,以便将项目向前推进。

业务需求

业务需求与业务的目标、愿景和目标相关。它们还提供了需要通过特定活动或项目来解决的业务需求或问题的范围。例如,如果一个行业协会的目标是促进其成员提供的服务,那么项目的业务需求可能包括创建一个成员目录,以提高成员的认知度。良好的业务需求必须是:

  • 清晰的,通常在一个非常高的层次上定义。
  • 提供足够的信息和指导,以帮助确保项目满足确定的需求。
  • 理解组织的任务、目标或目标、特定的业务需求或正在处理的问题
  • 在开发业务需求之前,应该清楚地定义和理解。
  • 需求或问题可以与组织或业务有关,也可以集中于利益相关者群体,如客户、客户、供应商、员工或其他群体。

软件需求

软件需求分解满足业务需求或需求所需的步骤。业务需求描述了项目的“为什么”,而软件需求则描述了“是什么”。

例如,如果业务需求是创建一个贸易协会成员的一个目录,软件需求将概述谁有权访问的目录,有会员注册目录,谁会有数据的所有权,将使用什么车辆或车辆如一个网站或纸质目录,等等。

发现业务需求的技术

根据业务改进和软件开发过程,可以使用各种需求分析技术。下面列出了其中的一些技术。

使用BPMN或ArchiMate进行Gap分析

差距常被说成是“你现在的位置和你想要的位置之间的距离”。差距分析是基线和目标业务场景之间的比较过程。换句话说,差距分析是对企业当前在做什么以及未来想要去哪里的研究,是作为一种连接两者之间空间的手段。差距分析的目标是确定在优化性能方面的差距。这为企业提供了对潜在改进的洞察。它回答了一些问题,比如项目的当前状态是什么?我们想去哪里?等。

ArchiMate - Gap分析

ArchiMate是一种开放和独立的企业架构建模语言,支持以明确的方式描述、分析和可视化业务域内和跨业务域的架构。它是一个完美的建模工具,具有执行差距分析所需的符号。


BPMN -原有和将来的分析

原有流程

我们将要演示的示例是关于销售商品的在线商店的当前情况(原有流程)。该流程从销售代表收到客户的采购订单开始,然后检查库存水平。如果手头有足够的存货来满足订单的要求,销售代表将对其进行包装。这个过程结束于将它们连同发票一起发送。当库存不足时,销售代表将建议客户修改采购订单。


将来流程

假设我们的生意发展得很好,我们现在有一个仓库来存放我们的存货。因此,我们正在寻找改进现有流程的方法,以更好地分配新资源。此外,我们将在下面的将来流程图中展示一个对增强进行建模的示例。


业务动机模型

如果一个企业为其业务活动规定了某种方法,它应该能够说出该方法要达到的原因(why)和目的(what)。业务动机模型(BMM)是一种OMG建模符号,用于支持关于如何对不断变化的世界作出反应的业务决策。企业可以通过获取BMM建模工具来使用它,然后创建自己的BMM——用特定于企业的业务信息填充模型。主要有两个目的:

  • 获取关于对变化的反应的决策和做出决策的理由,目的是使它们可分享,增加清晰度,并通过经验学习来改进决策。
  • 参考决策的结果及其对运营业务的影响(例如,对业务流程和组织责任的变更),提供从影响者到运营变更的可追溯性。


End :定义一个企业想要成为什么样子——它想要进入的状态。

Means (意味者):——定义一个企业需要做什么来实现它的目标。

Influencer (影响者)——是企业决定可能影响它的东西。

Assessment (评估)——当影响者引起重大变化时,企业对其影响进行评估,识别风险和潜在回报。可能会有多个评估,可能来自不同的利益相关者。

客户旅程映射

客户旅程图是一项非常有用的技术,它可以帮助你理解是什么激发了你的客户——他们的需求是什么,他们的犹豫和担忧。尽管大多数组织相当擅长收集关于客户的数据,但仅凭数据无法传达客户所经历的挫折和体验。一个故事可以做到这一点,而商业中最好的讲故事工具之一就是客户旅程图。

客户旅程地图(Customer journey map)使用讲故事和视觉效果来说明客户在一段时间内与企业之间的关系。故事是从客户的角度讲述的,这提供了对客户整体体验的洞察。它帮助您的团队更好地理解和解决客户的需求和痛点,因为他们在体验您的产品或服务。换句话说,规划好客户之旅可以让你的企业有机会看到你的品牌如何首先吸引潜在客户,然后再通过整个销售过程的接触点。

最后,团队可以针对每个接触点提出改进或采取的行动。这些建议的行动可能是软件需求的潜在来源。


从业务需求中识别软件需求的技术

数据流图

数据流程图(DFD)可在SDLC(系统开发生命周期)内分析阶段的需求引出过程的早期设计,以界定项目范围。DFD通常用作创建系统概述的一个初步步骤,而不需要详细说明,稍后可以详细说明。

例如,如果需要在某个特定流程中显示更多细节,则该流程将在较低级别的DFD中分解为许多较小的流程。这样,内容图或上下文层次的DFD被标记为“0级DFD”,下一级分解被标记为“1级DFD”,下一级分解被标记为“2级DFD”,以此类推。


用例

UML用例图是未开发的新软件程序的系统/软件需求的主要形式。用例指定了预期的行为(什么),而不是使其发生的确切方法(如何发生)。用例一旦指定,就可以同时表示为文本和可视化表示(例如UML)。用例建模的一个关键概念是,它帮助我们从最终用户的角度设计系统。它是一种通过指定所有外部可见的系统行为来用用户的术语交流系统行为的有效技术。

  • 用例图通常很简单。它没有显示用例的细节。
  • 它只是总结了用例、参与者和系统之间的一些关系。
  • 它没有显示为实现每个用例的目标而执行的步骤的顺序。

用例图的标准形式是用统一建模语言定义的,如下面的用例图示例所示:


用户故事

用户故事是捕捉用户在工作中所做或需要做的事情的注释。每个用户故事都由一段用自然语言从用户的角度编写的简短描述组成。与传统的需求捕获不同,用户描述关注的是用户需要什么,而不是系统应该交付什么。这为进一步讨论解决方案和系统结果留下了空间,该系统能够真正适应客户的业务流程,解决他们的操作问题,最重要的是为组织增加价值。用户故事与其他敏捷软件开发技术和方法(如scrum和极限编程)很好地兼容。

用户故事与用例的相似性

如果我们考虑这两种方法的关键组成部分:

  • 用户故事包含用户角色、目标和验收标准。
  • 用例包含等价的元素:参与者、事件流和分别的post条件(一个详细的用例模板可能包含更多的其他元素)。

用户故事与用例的区别

  • 用户故事的细节可能不像用例那样被记录到相同的极端。
  • 用户故事故意省略了许多重要的细节。用户故事的目的是通过在scrum会议上提出问题来引出对话。
  • 为了更频繁地获得反馈而进行小的增量,而不是像用例中那样拥有更详细的预先需求规格说明。

相关文章
|
5天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
14天前
|
运维 持续交付 API
从零构建微服务架构:一次深度技术探索之旅####
【10月更文挑战第28天】 本文记录了作者在从零开始构建微服务架构过程中的深刻技术感悟,通过实战案例详细剖析了微服务设计、开发、部署及运维中的关键要点与挑战。文章首先概述了微服务架构的核心理念及其对企业IT架构转型的重要性,随后深入探讨了服务拆分策略、API网关选型、服务间通信协议选择、容器化部署(Docker+Kubernetes)、以及持续集成/持续部署(CI/CD)流程的设计与优化。最后,分享了在高并发场景下的性能调优经验与故障排查心得,旨在为读者提供一套可借鉴的微服务架构实施路径。 ####
53 3
|
24天前
|
边缘计算 Cloud Native 安全
构建灵活高效的下一代应用架构 随着企业数字化转型的加速,云原生技术正逐渐成为构建现代化应用程序的关键支柱。
随着企业数字化转型加速,云原生技术逐渐成为构建现代化应用的关键。本文探讨了云原生的核心概念(如容器化、微服务、DevOps)、主要应用场景(如金融、电商、IoT)及未来发展趋势(如无服务器计算、边缘计算、多云架构),并分析了面临的挑战,如架构复杂性和安全问题。云原生技术为企业提供了更灵活、高效的应用架构,助力数字化转型。
57 4
|
3天前
|
存储 分布式计算 关系型数据库
架构/技术框架调研
本文介绍了微服务间事务处理、调用、大数据处理、分库分表、大文本存储及数据缓存的最优解决方案。重点讨论了Seata、Dubbo、Hadoop生态系统、MyCat、ShardingSphere、对象存储服务和Redis等技术,提供了详细的原理、应用场景和优缺点分析。
|
1月前
|
Cloud Native 持续交付 开发者
探索云原生技术:构建高效、灵活的应用架构
【10月更文挑战第6天】 在当今数字化浪潮中,企业面临着日益复杂的业务需求和快速变化的市场环境。为了保持竞争力,他们需要构建高效、灵活且可扩展的应用程序架构。本文将探讨云原生技术如何帮助企业实现这一目标,并分析其核心概念与优势。通过深入剖析云原生技术的各个方面,我们将揭示其在现代应用开发和部署中的重要性,并提供一些实用的建议和最佳实践。
54 2
|
1月前
|
缓存 Java 数据库
后端技术探索:从基础架构到高效开发的实践之路
【10月更文挑战第7天】 在现代软件开发中,后端技术是支撑应用运行的核心。本文将探讨如何从后端的基础架构出发,通过一系列高效的开发实践,提升系统的性能与可靠性。我们将深入分析后端框架的选择、数据库设计、接口开发等关键领域,并提供实用的代码示例和优化策略,帮助开发者构建更稳定、高效的后端系统。通过这篇文章,读者将获得关于后端开发的全面理解和实践指导,从而更好地应对复杂项目需求。
69 0
|
5天前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
25 7
|
3天前
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
27 4
|
22天前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
4天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
18 3