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
功能的触发时机和时效性要求?
使用AlarmManagerWorkManager验证定时任务可靠性
是否符合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导航模块可行性验证——四步验证流程
  1. 设备能力检测
  1. 性能基准测试
  1. 功耗测试数据
  1. 决策建议:在中低端设备上降级为2D导航模式
 
设计模式——学习大纲软件工程——代码健壮性与可靠性
Loading...