urlname
type
Post
password
SyncToConfluence
category
业务技能
date
Mar 23, 2025
slug
cc53c9a6-d542-42d5-a377-cc3f9b9982e8
icon
Button
catalog
summary
tags
软件工程
学习笔记
需求分析
cover
Status
BusyTime
Status 1
status
Published
在需求阶段发现的问题,其修复成本仅是编码阶段的1/10。
常见软件需求风险
- 需求模糊性风险
- 需求变更风险
- 需求冲突风险
- 技术可行性风险
需求模糊性风险
- 定义:需求描述缺乏技术细节和量化指标
- 典型场景:
- 产品需求:实现图片的高效缓存
- 问题分析:未明确以下要素
- 缓存层级设计(内存+磁盘双缓存机制)
- 缓存淘汰策略(LRU/LFU的选择)
- 图片格式支持范围(是否包含WebP动图、HEIC格式)
- 后果评估:后期新增格式支持需重构缓存模块,造成开发返工,开发周期增加3-5人日
需求变更风险
- 典型场景:支付模块需求变更
- 初始需求:仅需集成支付宝SDK
- 迭代变更:新增微信支付、银联云闪付需求
- 架构冲击:
- 原有支付接口需支持多通道动态切换
- 安全键盘模块需适配不同支付协议
- 对账系统需处理多平台交易流水
- 兼容性解决方案:
- 成本分析:未采用策略模式的情况下,每次新增支付方式需修改核心代码,维护成本提升200%
需求冲突风险
- 模块间冲突案例:
- 需求A:消息推送模块要求使用Firebase Cloud Messaging(依赖GMS服务)
- 需求B:国内市场适配需求要求支持华为Push Kit(需移除GMS依赖)
- 技术矛盾点:
维度 | FCM方案 | 华为方案 |
依赖库 | com.google.firebase | com.huawei.hms |
推送到达率 | 国际设备95%+ | 国内华为设备98% |
包体积影响 | 增加2.3MB | 增加1.8MB |
兼容范围 | 需GMS服务支持 | 需华为移动服务 |
- 解决方案:
构建变体配置实现渠道分包
运行时动态加载推送服务
- 实施成效:双方案共存使安装包体积仅增加0.8MB,推送到达率提升至双端均超95%
技术可行性风险
- 定义:需求超出当前技术栈或设备能力
- 经典案例:
- 需求:在低端设备实现4K视频实时滤镜处理
- 技术矛盾:
- Mali-G51 GPU的渲染能力仅支持1080p@30fps
- OpenGL ES 3.0不支持部分高级着色器验证方法:
- 结果:测得单帧处理时间>33ms(无法满足30fps需求)
常见需求风险分析方法论
- 5W2H需求澄清法——针对需求模糊性风险
- 变更影响树分析——针对需求变更风险
- 模块依赖矩阵——针对需求冲突风险
- 快速原型验证法——针对技术可行性风险
5W2H需求澄清法——针对需求模糊性风险
维度 | 核心问题 | Android技术验证方法 | 专项检查点 |
Why | 需求的业务价值是什么?为何要采用Android特定方案? | 使用Android Vitals分析历史崩溃率 | 是否违反Google Play政策?是否适配Android设计规范(Material Design)? |
What | 需要实现哪些具体功能?技术边界如何界定? | 通过ADB命令验证设备能力: adb shell dumpsys package <package_name> | 是否涉及敏感权限?是否需要厂商特殊适配(如华为HMS)? |
Where | 功能部署在哪些组件?涉及哪些进程/线程? | 使用Android Studio Profiler检查组件生命周期 | 是否涉及跨进程通信?是否需要在特定设备(TV/Wear OS)上运行? |
When | 功能的触发时机和时效性要求? | 使用 AlarmManager或WorkManager验证定时任务可靠性 | 是否符合Doze模式限制?后台服务是否适配Android 12+限制? |
Who | 目标用户角色?需要哪些系统权限? | 通过 PackageManager.checkPermission验证权限授予状态 | 是否符合最小权限原则?是否需要动态权限申请(Runtime Permissions)? |
How | 具体技术实现方案?如何保证性能和稳定性? | 使用 StrictMode检测主线程违规操作 | 是否会引起ANR?内存占用是否超标(参考ActivityManager.MemoryInfo)? |
How Much | 性能指标要求(响应时间/内存/功耗)?资源消耗上限? | 通过 Battery Historian分析功耗 | 是否满足最低API Level要求?安装包体积增量是否在预算范围内? |
变更影响树分析——针对需求变更风险
- 案例:支付模块变更影响模型
- 需求变更:新增Apple Pay接入
- 影响分析树:
模块依赖矩阵——针对需求冲突风险
- 推送服务冲突分析
模块 | 依赖SDK | 最低API | 厂商限制 | 冲突等级 |
华为推送 | HMS Core 6.0 | 24 | 需要华为设备 | 高 |
FCM推送 | Firebase 32.0 | 21 | 需GMS服务 | 中 |
个推 | Getui 3.2 | 19 | 无 | 低 |
- 解决方案:
快速原型验证法——针对技术可行性风险
- AR导航模块可行性验证——四步验证流程:
- 设备能力检测:
- 性能基准测试:
- 功耗测试数据:
- 决策建议:在中低端设备上降级为2D导航模式
- Author:CoderWdd
- URL:https://www.wuinsights.top//article/cc53c9a6-d542-42d5-a377-cc3f9b9982e8
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts