「业务架构」需求工程——捕获与分析(第二部分)

简介: 「业务架构」需求工程——捕获与分析(第二部分)


可行性研究结束后,我们进入下一个阶段;抽取和分析。

需求捕获和分析

它是一个与客户和最终用户交互的过程,以查明领域需求、系统应该提供什么服务以及其他约束。

领域需求反映了系统运行的环境,因此,当我们谈到应用领域时,我们指的是诸如列车运行、医疗记录、电子商务等环境。

它也可能涉及不同类型的股东;终端用户、管理人员、系统工程师、测试工程师、维护工程师等。

涉众是对需求有直接或间接影响的任何人。

需求抽取和分析有4个主要过程

我们通常从收集需求开始,这可以通过一般性的讨论或与涉众的访谈来完成,也可能涉及到一些图形符号。

然后,您将相关的需求组织成子组件并对它们进行优先级排序,最后,您通过删除任何可能从一些冲突中产生的不明确的需求来细化它们。

以下是需求捕获和分析的4个主要过程。


需求捕获和分析的过程

它表明这是一个迭代过程,每个活动都有反馈。过程周期从需求发现开始,到需求文档结束。当需求文档完成时,周期结束。

1. 发现需求

它是与涉众交互并从涉众那里收集需求的过程,这些涉众是关于所需要的系统和已存在的系统(如果存在的话)的。

这可以通过一些技巧来完成,比如面试、场景、原型等等,这些可以帮助股东了解这个系统将会是什么样的。

收集和理解需求是一个困难的过程

这是因为涉众可能不知道他们想要软件做什么,或者他们可能给出不现实的需求。

它们可能会给出不同的需求,这将导致需求之间的冲突,因此我们必须发现并解决这些冲突。

也可能有一些因素会影响利益相关者的决策,例如,公司的经理或大学的教授想要对管理系统有完全的控制权。

访谈

在访谈中,需求工程团队向涉众提出关于当前使用的系统和将要开发的系统的问题,因此他们可以从答案中收集需求。

问题分为两类:

  • 封闭式问题:预先定义的一组问题。
  • 开放式问题:没有预先定义的预期答案,更多的是一般性问题。它是用来探索不清楚的问题,以一种不那么结构化的方式。

在实践中,面试通常是两者的结合。通常,以开放式问题开始,然后使用封闭式问题来更具体地说明一些还不清楚的需求。

访谈有助于全面了解涉众需要什么,他们如何与新系统交互,以及他们在当前系统中面临的困难。

然而,面试对于理解领域需求并不是很有帮助。这有两个原因:

  • 领域需求可能使用特殊的领域术语来表达,软件工程师经常发现很难理解,并且很容易产生误解。
  • 有时候,涉众不会告诉你一些需求,因为他们认为这是非常基本的,不值得提及,或者他们发现很难解释,这在需求中是不被考虑的。

用例和场景

用例和场景是两种不同的技术,但是它们通常是一起使用的。

用例识别系统和它的用户甚至其他外部系统之间的交互(使用图形符号),而场景是一个或多个这些交互的文本描述。

用例包括一些符号来描述系统:


用例图符号和示例

  1. 参与者:与系统交互的人;人类或其他系统
  2. 交互(用例):它表示交互的名称(动词)。它被表示成一个指定的椭圆。
  3. 连接:连接参与者和交互之间的线。
  4. 包括关系:当一个交互被另一个交互调用时,它表示两个交互之间的连接。例如,将一个大型交互分解为几个交互。
  5. 排除关系:当您希望通过添加一个可选行为来扩展一个交互时,它表示两个交互之间的连接,但是您可以单独使用主交互而不需要扩展交互。

现在,我们将使用场景来描述每个用例中的交互。它们应该有一个格式,包括以下内容:

  1. 对初始情况的描述。
  2. 对事件流或与系统交互的描述
  3. 对异常的描述,或换句话说,可能出现什么问题,以及如何处理。
  4. 任何并行活动都应该提到
  5. 最终状态的描述。

下面是上面用例示例的场景示例。


场景

用例和场景是引出需求的有效技术。但是,由于它们关注于与系统的交互,因此对于引出高级业务、非功能或领域需求来说,它们是无效的。

接下来的两个阶段是关于分析需求的:确定所陈述的需求是否清晰、完整、一致和明确,将相关的需求分组并将其组织成相关的组件,以及解决任何明显的冲突。

2. 需求分类和组织

组织系统的整体结构非常重要。

将相关需求放在一起,并将系统分解为相关需求的子组件。然后,我们定义这些组件之间的关系。

我们在这里所做的将帮助我们确定最合适的架构设计模式。

3.需求优先级划分和协商

我们之前解释了为什么引出和理解需求不是一个简单的过程。

其中一个原因是不同利益相关者的参与可能导致冲突。为什么?因为要让各方都满意是很难的,如果不是不可能的话。

该活动关注的是确定需求的优先级,并通过协商发现和解决需求冲突,直到您达到一些涉众可以妥协的情况。

我们不应该达到这样一种情况,即涉众因为没有考虑到他的需求而不被满足。

确定需求的优先级将帮助您稍后关注系统的基本特性和核心特性,这样您就可以满足用户的期望。它可以通过赋予每个功能的优先级来实现。因此,具有更高优先级的功能需要更多的关注和关注。

4. 需求规范

然后将需求记录下来。我们将在“需求工程—需求规格说明”中更详细地讨论需求规格说明( “Requirements Engineering — Requirements Specification”)。

相关文章
|
3月前
|
安全 数据处理 数据安全/隐私保护
C/S架构与B/S架构的适用场景分析
C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。
297 6
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
1月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
84 4
|
2月前
|
缓存 前端开发 JavaScript
前端的全栈之路Meteor篇(二):容器化开发环境下的meteor工程架构解析
本文详细介绍了使用Docker创建Meteor项目的准备工作与步骤,解析了容器化Meteor项目的目录结构,包括工程准备、环境配置、容器启动及项目架构分析。提供了最佳实践建议,适合初学者参考学习。项目代码已托管至GitCode,方便读者实践与交流。
|
2月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
145 1
|
7月前
|
存储 运维 关系型数据库
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
2024年最全ceph的功能组件和架构概述(2),Linux运维工程面试问题
|
3月前
|
负载均衡 数据库 开发工具
|
3月前
|
存储 监控 安全
SaaS业务架构:业务能力分析
【9月更文挑战第20天】在数字化时代,软件即服务(SaaS)模式逐渐成为企业软件解决方案的首选。SaaS 业务架构设计对于提供高效、可靠的服务至关重要。其核心业务能力包括:用户管理(注册登录、角色权限)、数据管理(存储备份、安全共享)、业务流程管理(设计定制、工作流自动化)、应用集成(第三方应用、移动应用)及客户服务(支持培训、反馈改进)。通过优化这些能力,可为企业提供更高效、可靠的 SaaS 服务。
71 11
|
4月前
|
安全 IDE Java
从0到1探索淘宝短视频流的架构再设计和工程重构
随着视频流业务的发展,业务的复杂性越来越高,视频流老工程在架构设计、代码质量、工程能力等方面的问题也逐渐凸显。本次重构是一次对大型业务工程进行架构再设计和重构的探索,本文是对这次探索的一次梳理与总结。
|
4月前
|
消息中间件 负载均衡 Kafka
Kafka 实现负载均衡与故障转移:深入分析 Kafka 的架构特点与实践
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理和流传输设计的高性能消息系统。其核心设计注重高吞吐量、低延迟与可扩展性,并具备出色的容错能力。Kafka采用分布式日志概念,通过数据分区及副本机制确保数据可靠性和持久性。系统包含Producer(消息生产者)、Consumer(消息消费者)和Broker(消息服务器)三大组件。Kafka利用独特的分区机制实现负载均衡,每个Topic可以被划分为多个分区,每个分区可以被复制到多个Broker上,确保数据的高可用性和可靠性。
105 2