当前位置: 首页 > news >正文

【论软件需求获取方法及其应用】

摘要

2023 年 3 月,我所在的公司承接了某油企智慧加油站平台的建设工作。该项目旨在帮助加油站提升运营效率、降低运营成本和提高销售额。我在该项目中担任系统架构设计师,负责整个项目的架构设计工作。
本文以该项目为例,详细论述软件需求获取技术在该项目中的具体应用。在该项目中,我们主要运用了用户访谈、现场观摩和原型化方法等技术来获取需求。首先,我们通过用户访谈获取初步的用户需求;然后通过现场观摩获取复杂业务流程的需求;最后通过原型化方法进一步跟客户验证与确认需求。通过以上方法的运用,我们准确地获取了系统的需求,为后续阶段工作的顺利开展提供了有利的支撑。
整个项目历时 10 个月开发完成,并于 2023 年 12 月正式交付并稳定运行至今,各项功能和性能指标均达到了客户要求,得到了客户和各级领导的一致好评。

项目背景

随着国内成品油零售行业竞争日益激烈,某油企为增强市场竞争力,决定建设一个智慧加油站平台,通过引入信息技术来优化运营管理,进一步提升加油站的管理水平和服务质量。我所在的单位成功中标该项目,并于 2023 年 3 月正式启动该项目的建设工作。我被任命为系统架构设计师,负责该项目的系统架构设计工作。
该项目的主要建设内容包括智慧支付、智慧营销、智慧运营等功能模块。其中智慧支付模块提供了对多种支付方式的支持,比如现金支付、油卡支付、微信支付、支付宝支付、云闪付支付、车牌付、人脸付、ETC 支付等,以确保顾客下单支付的便利性和安全性;智慧营销模块支持开展多种形式的营销活动,比如消费返券、趣味抽奖、积分任务、限时秒杀、充值优惠等,以提高顾客复购率;智慧运营模块涵盖了站务管理、运营数据统计分析等功能,以提高加油站运营效率。
该项目选用 Java 作为主要开发语言,采用基于 Spring Cloud Alibaba 的微服务架构进行构建。我们选择 MySQL 作为数据库,Doris 作为实时数仓,Redis 作为分布式缓存,RocketMQ 作为消息中间件,Flink 作为实时流式计算引擎,并最终在 Kubernetes 集群中部署运行。
考虑到该项目的复杂性,经过项目团队成员的充分讨论,我们一致决定采用用户访谈、现场观摩和原型化方法来获取该项目的需求。下文将详细论述这三种需求获取技术在该项目中的具体应用。

用户访谈

首先,我们通过用户访谈获取初步的用户需求。用户访谈的推进过程经历了以下三个阶段:准备阶段、访谈阶段和总结阶段。在准备阶段,我们确定了访谈对象,如企业决策者、加油站站长、加油站员工以及顾客,并根据访谈对象的特点分别制定了个性化的访谈计划,内容包括访谈时间、访谈对象、访谈目的以及访谈问题列表。对于企业决策者,访谈问题主要关注其对智慧加油站平台的期望与目标;对于加油站站长,访谈问题主要关注其在日常运营中所面临的挑战与困难;对于加油站员工,访谈问题主要关注其日常工作流程以及在工作中遇到的各种问题;对于顾客,访谈问题主要关注他们在消费过程中的便捷性和安全性体验。在访谈阶段,我们按照访谈计划逐一进行访谈,在访谈过程中,我们通过开放性问题引导访谈对象表达他们真实的需求和想法,并认真倾听访谈对象的反馈和建议,以便更好地了解他们的需求和期望。在访谈过程中,我们还注意记录访谈对象的回答和反馈,以便后续分析和整理。在总结阶段,我们对访谈结果进行了整理和分析,并为每个访谈对象整理了访谈备忘录。通过对访谈记录的整理和分析,我们得到了初步的用户需求。

现场观摩

然后,我们通过现场观摩获取复杂业务流程的需求。虽然之前的用户访谈为我们提供了一些用户需求的基础信息,但由于项目团队成员缺乏对相关领域知识的了解,对一些关键的业务流程如加油付款、员工交接班、营销活动等的理解仍然不够清晰。为了更直观地理解这些业务流程,在获得高层领导的支持和加油站站长的协助后,我们选择在加油低峰时段对这些业务流程进行了现场观摩。我们重点观察了员工和顾客的操作流程,比如顾客如何支付、领取优惠、使用优惠等,员工如何收款、交接班、核销优惠等。同时,我们也注意到了一些之前用户访谈中未能提及的细节和问题,例如,在加油付款的过程中,我们发现一些顾客对支付方式和优惠的选择存在困惑,他们不确定应该怎么选择才能享受最大的优惠。针对这个问题,我们提出了一个改进建议:自动选择最大的优惠,该建议得到了客户的认可和支持。通过现场观摩,我们直观、清晰地了解了这些业务流程,进一步地加深了我们对加油站运营的理解和认识。

原型化方法

最后,我们通过原型化方法进一步跟客户验证和确认需求。通过用户访谈和现场观摩,我们已经获取到了基本的用户需求。但是为了确保我们与客户对需求的理解完全一致,我们决定采用原型化方法来进一步验证和确认需求。首先,我们根据之前收集的信息和需求,设计了一个初步的原型,并邀请了一些典型的用户来试用原型,同时观察他们的操作过程和反馈。通过原型测试,我们发现了一些之前未能注意到的问题和细节,例如一些用户在加油过程中遇到了操作上的困难,他们不知道应该如何选择油品和数量。针对这个问题,我们优化了原型。此外,我们还发现了一些用户对优惠活动存在误解,他们不清楚优惠的具体规则和条件。针对这个问题,我们在原型中增加了一些说明和引导,帮助用户更好地理解优惠活动。在原型测试结束后,我们根据用户的反馈和建议,对原型进行了多次修改和优化,最终,我们得到了一个符合用户需求、操作流畅、用户友好的原型。通过原型化方法,我们不仅进一步了解了客户的需求和细节,还提高了该系统的可用性和用户体验。

总结与感悟

通过微服务架构的应用,我们有效提高了系统的可扩展性和可维护性。最终,经过 10 个月的研发,该项目于 2023 年 12 月完成并交付上线,至今运行稳定,各项功能和性能指标均达到客户要求,得到了客户和各级领导的一致好评。虽然项目取得了成功,但我们也看到了一些不足之处,其中需求频繁变更导致项目团队经常加班是比较突出的问题。针对这个问题,我们采取了以下两个措施:一是规范需求变更流程,提升变更成本,以避免过度的需求变更;二是通过灵活的配置和架构设计,低成本响应需求变更。
通过该项目的开发,我在系统分析与设计方面积累了不少宝贵的经验,为我后续的工作提供了很大的帮助。这也激励着我不断学习,不断丰富自己的知识体系,为将来能够应对更复杂的工作做好准备。

来源

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis的watch机制详解
  • JavaSE:3、运算符
  • 关于easyadmin权限配置
  • 在被摩根士丹利列为AI领域首选股后,你现在应该买入ARM股票吗?
  • Linux 删除 当前下的 mysql-8.0.31 空文件夹
  • 一条SQL实现GPT大模型【完全看不懂】
  • Rust使用Actix-web和SeaORM库开发WebAPI通过Swagger UI查看接口文档
  • CORS跨域详解
  • 复变函数论重大错误:将无穷多各异平面误为同一面
  • socket远程命令通信简单实现
  • 《Nginx 负载均衡详解》
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • pandas中loc和iloc的区别
  • 【排序算法】之基数排序
  • kafka原理剖析及实战演练
  • 【React系列】如何构建React应用程序
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Akka系列(七):Actor持久化之Akka persistence
  • co模块的前端实现
  • HTTP请求重发
  • Java,console输出实时的转向GUI textbox
  • PaddlePaddle-GitHub的正确打开姿势
  • React16时代,该用什么姿势写 React ?
  • Ruby 2.x 源代码分析:扩展 概述
  • TCP拥塞控制
  • 安卓应用性能调试和优化经验分享
  • 如何编写一个可升级的智能合约
  • 移动端解决方案学习记录
  • 用Canvas画一棵二叉树
  • 终端用户监控:真实用户监控还是模拟监控?
  • Android开发者必备:推荐一款助力开发的开源APP
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​数据链路层——流量控制可靠传输机制 ​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • $.proxy和$.extend
  • (+4)2.2UML建模图
  • (2022 CVPR) Unbiased Teacher v2
  • (4)logging(日志模块)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (四)事件系统
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)WLAN定义和基本架构转
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)ObjectiveC 深浅拷贝学习
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .net core 的缓存方案
  • .NET Framework .NET Core与 .NET 的区别
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET8使用VS2022打包Docker镜像