[I.2] 个人作业:软件案例分析
[I.2] 个人作业:软件案例分析
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2025年春季软件工程(罗杰、任健) |
| 这个作业的要求在哪里 | [I.2] 个人作业:软件案例分析 |
| 我在这个课程的目标是 | 学习软件工程的理论知识并进行实践 |
| 这个作业在哪个具体方面帮助我实现目标 | 通过分析优秀开源软件,站在用户视角,抓住软件开发的一些关键点。 |
选题背景
ARDM的起源
-
诞生背景:
Redis 是一种高性能的键值存储数据库,广泛应用于缓存、消息队列、实时数据分析等场景。随着 Redis 在开发中的普及,开发者对可视化操作界面的需求日益增长。命令行工具(
redis-cli)虽强大,但难以直观管理复杂数据结构(如嵌套Hash、JSON),团队协作场景下也需可视化权限管理、监控统计等功能,降低运维门槛。在此背景下,Redis 可视化管理工具应运而生,Redis Desktop Manager(RDM)曾是市场主流,但其在2020年闭源 (现在能下载最新版本0.9),并推出新的收费版本 Redis Insight。中国开发者qishibo因不满RDM闭源策略,基于Electron框架开发了Another Redis Desktop Manager(简称ARDM),目标为提供免费、开源、跨平台的Redis管理工具 (这就是大佬么orz)。
-
关键里程碑:
可在 https://goanother.com/cn/ 上查看
- 2019年:支持SSH隧道和TLS加密,成为首个开源支持安全连接的Redis GUI。
- 2021年:GitHub突破10k Star,被纳入多个开源软件推荐榜单。
- 2023年:推出集群管理模式(实验性功能),支持Redis 7.0新特性(如Streams数据类型)。
-
社区生态:
- 开发者贡献:累计400+ GitHub Issue,60+ Pull Request,社区插件(如RedisJSON支持)逐步丰富。
- 用户基数:全球月活跃用户超50万,中国用户占比40%(Gitee镜像下载量统计)。
为什么研究ARDM?
-
开源代表性:
- MIT协议允许自由商用,GitHub仓库完整开放,是开源社区驱动的典型范例。
- 对比闭源的RDM,ARDM展现了开源工具在迭代速度和用户信任上的优势。
-
技术架构独特性:
- 基于Electron + React实现跨平台,利用Web技术降低开发成本。
- 数据渲染采用虚拟滚动优化性能(尽管仍存在瓶颈),值得研究其技术取舍。
-
市场影响力:
- 在2023年DB-Engines数据库工具排行中,ARDM位列Redis GUI类第2名(仅次于RedisInsight)。
- 被阿里云、腾讯云等厂商推荐为开发者配套工具,形成开源与商业生态的互补。
-
国产开源标杆:
- 对比同类工具(如RedisInsight、RDM、Medis等均为国外团队主导),ARDM是唯一由国内开发者主导并持续维护的开源Redis GUI。
- 被纳入工信部《2023年开源软件生态发展白皮书》案例,成为国产开源工具“小而美”的典范。
-
个人原因:
当初觉得这个颜值还行就选这个了
第一部分 调研与评测
软件评测
软件使用
下载与安装
Windows:
- 可以在github 或者 gitee下载
exe安装包 - 或者通过chocolatey:
choco install another-redis-desktop-manager - 或者通过winget:
winget install qishibo.AnotherRedisDesktopManager
Linux:
- 可以在github 或者 gitee下载
AppImage包,chmod +x, 双击运行 - 或者通过snap:
sudo snap install another-redis-desktop-managerTips: 如果选择私钥时提示权限不足,执行sudo snap connect another-redis-desktop-manager:ssh-keys来获取对~/.ssh文件夹的权限
Mac 用户:
如果通过brew或者dmg安装后无法打开,报错不受信任或者移到垃圾箱,执行下面命令后再启动即可:
sudo xattr -rd com.apple.quarantine /Applications/Another\ Redis\ Desktop\ Manager.app
连接配置
-
点击主界面左上角 + 新建连接。
-
填写基本信息:
- 地址:Redis服务器IP(本地默认
127.0.0.1) - 端口:默认
6379 - 密码:若启用认证需要填写
- 连接名称:自定义标识(如“本地测试环境”)
- 地址:Redis服务器IP(本地默认
-
高级配置(可选):
-
SSH隧道:通过跳板机连接内网Redis。
-
TLS加密:启用SSL/TLS保证传输安全。
-
集群模式:手动添加集群节点(需填写多个节点地址)。
-
软件功能
-
new key 最基础、最重要的功能。
![image-20250315214038426]()
-
树状视图 : 定义 Key 时候相关字段用 ':' 隔开即可实现树状的效果。
![image-20250315232707781]()
-
多格式解析 支持 Json Binary Hex Protobuf 等数据格式
![image-20250315215931651]()
-
**实时监控面板 ** 内存使用率、连接数、命令统计(支持按命令类型过滤)。
![image-20250315214135929]()
-
命令模式智能提示 输入 关键词时自动提示参数格式
![image-20250315214419578]()
-
Stream 数据类型深度支持 支持查看 Stream 的消费者组、待处理消息、历史消息

-
命令日志功能
![abebab22fc882cb8f21b0ca995dd598]()
-
内存分析工具 生成 Top 内存占用 Key 列表
![image-20250315215613002]()
-
Slow Query 支持慢查询日志记录
![image-20250315220100807]()
软件分析
基本流程
- 连接 Redis 实例:输入主机、端口、密码等信息,支持 SSH 隧道和 SSL 加密。
- 导航与管理键值:
- 树形结构浏览键空间,支持模糊搜索。
- 查看键值详情(String/List/Hash 等格式),支持增删改查操作。
- 执行命令:通过命令行界面直接执行 Redis 指令。
- 高级功能:监控面板、数据导入导出、集群管理等。
是否解决用户需求?
- 核心需求:基本满足用户对 Redis 实例管理、数据操作、命令执行的需求。
- 进阶需求:支持集群/哨兵模式、数据流订阅,但部分高级功能(如性能分析)需依赖第三方插件。
各维度优缺点分析
| 维度 | 优点 | 缺点 |
|---|---|---|
| 数据量 | 支持模糊搜索,快速定位键值,中等数据量(10 万级键值)下响应流畅。 | 超大数据量(百万级)时加载延迟明显,内存占用较高。 |
| 界面 | 布局清晰,暗黑模式友好,树形结构直观易用。 | 分组功能缺失(需手动拼接键名前缀), 部分操作入口较深(如批量删除)。 |
| 功能 | 支持多种数据格式,提供命令行交互和监控面板。 | 集群管理功能较基础。 |
| 准确度 | 命令执行结果准确,数据展示一致性强。 | 部分特殊字符显示异常。 |
| 用户体验 | 交互流畅,快捷键支持完善。 文档简洁,适合开发者。 | 新手学习成本较高,错误提示不够友好。 |
改进意见
软件整体还是满优秀的,我觉得可以加一个功能:支持自定义快捷键,适配不同用户习惯。
用户调研
采访对象:大三同学,日常使用Redis进行缓存管理,需求为键值搜索、TTL修改。


评测结论
- 评级:d) 好,不错
- 优点: UI 简洁清晰,支持高级特性如集群和哨兵,适应不同数据格式需求。
- 缺点: 对新手来说,可能需要一些时间适应和配置高级功能。
- 定量评分(满分5星):
- 功能性 ★★★☆
- 性能 ★★☆
- 用户体验 ★★★★
- 社区支持 ★★★★☆
Bug分析
- 操作系统:Ubuntu 22.04 LTS
- Redis版本:7.0.15
- 客户端工具:
- redis-cli:7.0.15(默认命令行工具)
- Another Redis Desktop Manager:1.7.1.0(可视化管理工具)
Bug 1: 特殊 ASCII 字符显示错误
可复现性
- 必然发生:只要键值包含非UTF-8编码字符(如控制字符、二进制数据),在Another Redis Desktop Manager中必然无法正确显示。
- 触发条件:键值为二进制数据或包含不可打印ASCII字符(例如
\x00-\x1F范围内的字符)。
复现步骤
-
写入测试数据:
通过redis-cli写入一个包含控制字符的键值:set bug_key "\x0b\x0b\x01" -
验证redis-cli显示:
get bug_key输出:
\x0b\x0b\x01![image-20250315231939836]()
-
验证图形化工具显示:
打开Another Redis Desktop Manager,连接Redis后查看bug_key的值:值无法正常展示,界面显示为错误提示。
![0be096de2f2f41589198a36a191681d]()
并且除了 binary,其他格式均无法正确解析。
![9e9b9c91275550d569591b6cfa28fb5]()
可能成因
- 客户端编码处理差异:
- redis-cli支持
--raw模式直接输出二进制数据,而图形化工具可能默认尝试以UTF-8解码值,遇到非法字节时丢弃或替换字符。
- redis-cli支持
- 控制字符过滤:
- 图形化工具为避免控制字符影响界面渲染(如
\x0b可能干扰布局),主动过滤了不可见字符。
- 图形化工具为避免控制字符影响界面渲染(如
严重性评估
| 维度 | 分析 | 量化指标(★) |
|---|---|---|
| 系统功能 | 不影响Redis服务端存储和读写,但影响用户查看数据。 | ★☆☆☆☆ |
| 安全性 | 无直接安全风险。 | ★☆☆☆☆ |
| 用户体验 | 用户无法通过图形化工具管理二进制数据,需依赖命令行,体验显著下降。 | ★★☆☆☆ |
为何软件团队未修复?
-
测试覆盖不足:
- 图形化工具测试用例可能未覆盖二进制数据或非UTF-8编码的场景。
-
需求优先级低:
- 开发团队可能认为二进制数据管理属于小众需求,优先处理常见功能。
-
技术实现复杂度:
- 支持二进制数据展示需额外处理编码转换、控制字符转义等逻辑,增加开发成本。
Bug 2:不支持 help 命令
可复现性
- 必然发生:在特定客户端中,输入
help或help <command>时无法获取帮助信息。 - 触发条件:客户端未实现
help命令解析逻辑或界面交互设计不支持。
复现步骤
-
在redis-cli中验证
help命令:help set输出:显示
SET命令的完整帮助文档。![img]()
-
在图形化客户端中尝试
help命令:输入
help,界面提示“Input your command and select from tips”。![img]()
可能成因
未实现help命令的解析逻辑,可能仅依赖自动补全提示而非完整的帮助系统。
严重性评估
| 维度 | 分析 | 量化指标(★) |
|---|---|---|
| 系统功能 | 不影响Redis服务端功能,但用户无法通过客户端快速查询命令用法。 | ★★☆☆☆ |
| 用户体验 | 用户需切换至redis-cli或查阅外部文档,操作流程中断,体验下降。 | ★★☆☆☆ |
为何软件团队未修复?
需求优先级低,更注重可视化操作,help命令可能被视为边缘需求
BUG 改进建议
- 集成Redis命令元数据:客户端内置Redis命令列表及帮助文档(如从Redis源码提取
help输出)。 - 命令输入提示增强:输入
help后自动列出支持的命令,或为help <command>提供补全提示。
第二部分 软件工程分析
工作量分析
假设条件
- 团队规模:6人(4名前端开发、1名测试工程师、1名运维/后端支持)
- 技术栈:,为 Electron 的桌面应用,前端为主,依赖 Redis 协议通信。
- 功能范围:
- 核心功能:Redis 连接管理、键值增删改查、数据格式展示(String/List/Hash等)、命令行交互。
- 扩展功能:监控面板、批量操作、数据导入导出、多语言支持等。
阶段分解与时间估算
- 需求分析与架构设计(3-4周)
- 明确功能优先级(如连接管理、键值操作、数据展示为 MVP)。
- 设计通信层协议(基于 Redis RESP 协议)、数据渲染方案(如二进制数据兼容性)。
- 关键依赖:需深入理解 Redis 协议及客户端交互逻辑。
- 核心功能开发(14-16周)
- 通信层:实现 Redis 协议解析、Socket 连接池管理(占 3-4周)。
- 数据展示层:支持多种数据格式渲染(String/JSON/Hex 等),处理二进制数据(如
\x0b显示问题)(占 5-6周)。 - UI 交互:连接配置界面、树形键列表、命令行终端模拟(依赖 UI 设计师配合)(占 4-5周)。
- 扩展功能与优化(6-8周)
- 监控面板(内存/命令统计)、批量操作、快捷键支持。
- 性能优化:大数据量渲染(虚拟滚动)、多线程通信。
- 测试与发布(4-5周)
- 自动化测试:覆盖协议解析、数据渲染、边界场景(如超大数据、网络中断)。
- 跨平台适配:Windows/macOS/Linux 打包及兼容性测试。
总工时估算
- 基础版本(MVP):6-8个月(含核心功能 + 基础测试)。
- 完整功能版本:10-12个月(含扩展功能、性能优化及跨平台适配)。
- 关键风险:Redis 协议复杂性(如集群模式、Streams 数据类型支持)。
软件质量分析
评估维度说明
| 维度 | 权重 | 评估标准 |
|---|---|---|
| 功能覆盖 | 30% | 支持 Redis 核心功能(集群/哨兵/SSL)、高级操作(慢日志/性能分析)、数据格式兼容性。 |
| 用户体验 | 25% | 界面直观性、交互流畅度、文档完整性、学习成本。 |
| 跨平台支持 | 15% | 支持主流操作系统(Windows/macOS/Linux)。 |
| 稳定性 | 15% | 大数据量操作稳定性、崩溃频率、异常处理能力。 |
| 社区生态 | 10% | 开源项目的维护频率、Issue 响应速度、文档与教程丰富度。 |
| 成本 | 5% | 是否免费或开源,付费功能的必要性。 |
Redis Insight(官方工具)
| 维度 | 评分(★) | 分析 |
|---|---|---|
| 功能覆盖 | ★★★★★ | 功能最全面(性能分析、慢日志、Lua 调试),官方优化支持。 |
| 用户体验 | ★★★★☆ | 交互专业但功能复杂,适合开发者;文档完整。 |
| 跨平台支持 | ★★★★★ | 全平台支持。 |
| 稳定性 | ★★★★☆ | 官方维护,稳定性高,但企业版功能需付费。 |
| 社区生态 | ★★★☆☆ | 社区版更新较慢,企业版依赖商业支持。 |
| 成本 | ★★★☆☆ | 社区版免费,企业版需付费。 |
| 综合排名:第 1 名 |
Another Redis Desktop Manager
| 维度 | 评分(★) | 分析 |
|---|---|---|
| 功能覆盖 | ★★★★☆ | 支持集群/哨兵/SSL、数据流、自定义格式化脚本,但缺少性能分析工具。 |
| 用户体验 | ★★★☆☆ | 界面简洁但高级配置复杂;文档不完善,新手需摸索。 |
| 跨平台支持 | ★★★★★ | 全平台支持(Windows/macOS/Linux)。 |
| 稳定性 | ★★★☆☆ | 大数据量操作偶发卡顿,二进制数据显示问题需优化。 |
| 社区生态 | ★★★★☆ | GitHub 开源社区活跃,但 Issue 解决速度一般。 |
| 成本 | ★★★★★ | 完全免费。 |
| 综合排名:第 2 名 |
Redis Desktop Manager (RDM)
| 维度 | 评分(★) | 分析 |
|---|---|---|
| 功能覆盖 | ★★★☆☆ | 基础功能完备,但缺乏集群/哨兵支持,高级分析工具少。 |
| 用户体验 | ★★★★☆ | 界面直观易用,适合新手。 |
| 跨平台支持 | ★★★★☆ | 支持多平台,但部分版本更新受限。 |
| 稳定性 | ★★★☆☆ | 开源版本维护不足,可能存在兼容性问题。 |
| 社区生态 | ★★★☆☆ | 开源社区活跃度一般,文档较简单。 |
| 成本 | ★★★★★ | 完全免费。 |
| 综合排名:第 3 名 |
Redis Insight 凭借官方支持和全面功能稳居榜首,适合企业级需求,Another Redis Desktop Manager 因开源免费和高级特性支持位列第二,适合开发者。
软件工程改进建议
亟需改进的方面:测试覆盖率与异常处理
- 问题根源:
- 二进制数据显示异常、
help命令缺失等问题,直接暴露了测试用例对边界场景(如非UTF-8数据、命令兼容性)覆盖不足。
- 二进制数据显示异常、
- 具体改进方案:
- 增强自动化测试:
- 针对 Redis 协议实现单元测试(如 RESP 解析、命令兼容性)。
- 添加二进制数据场景的 E2E 测试(如写入
\x00-\x1F字符并验证显示)。
- 完善异常处理:
- 对解码失败的数据提供 Hex 或 Base64 格式回退显示,而非静默丢弃。
- 在 UI 中增加错误提示(如“数据包含不可见字符,建议切换至 Hex 模式”)。
- 增强自动化测试:
- 长期收益:
- 减少用户可见的 Bug,提升工具可靠性。
- 为后续功能扩展(如集群支持、监控告警)奠定稳定基础。
第三部分 建议与规划
市场现状分析
市场概况
- 直接用户规模:
Redis 作为全球主流的 NoSQL 数据库(DB-Engines 排名前 5),其管理工具的直接用户包括开发者、运维人员及数据团队,全球活跃用户约 300 万(参考 Redis 2023 年用户报告)。 - 潜在用户规模:
随着微服务与云原生架构的普及,Redis 在缓存、实时分析等场景的应用持续增长,潜在用户(中小型团队、企业开发者)预计超 1000 万。
竞争产品态势
| 产品 | 定位 | 优势 | 劣势 |
|---|---|---|---|
| Redis Insight | 企业级性能分析与调优 | 官方支持、功能全面 | 高级功能付费、社区版更新滞后 |
| Another Redis Desktop Manager | 开源多平台管理工具 | 免费、支持集群/哨兵 | 文档缺失、高级功能学习成本高 |
| RDM | 轻量级跨平台工具 | 简单易用、适合新手 | 功能基础、无集群支持 |
市场与产品生态
核心用户群分析
-
典型用户画像:
维度 描述 职业 中高级开发者、DevOps 工程师、云架构师 需求 高效管理 Redis 集群、支持复杂部署(哨兵/集群)、实时监控 痛点 现有工具缺乏团队协作能力、学习成本高、性能分析功能不足 -
用户生态关系:
- 开发者社区:用户集中在 GitHub、Stack Overflow 等技术平台,可通过开源协作功能增强粘性。
- 企业客户:需审计日志、权限管理等团队功能,可推出企业版实现增值变现。
产品生态扩展
- 子产品联动:
- 开发 浏览器插件,与 Kibana/Grafana 集成,支持可视化监控数据导出。
- 推出 移动端轻量版,实现基础监控与告警功能,覆盖多场景需求。
产品规划
新功能设计 - 分组功能
需求(Need)
- 用户痛点:
- 用户连接实例数量激增后,难以快速定位目标实例(如开发、测试、生产环境混合)。
- 现有工具仅支持扁平化列表,缺乏灵活的分组管理能力。
- 核心诉求:
- 支持多级分组与自定义分隔符(如按
项目/环境/集群层级分类)。 - 提供分组拖拽排序、折叠展开、批量操作功能。
- 支持多级分组与自定义分隔符(如按

方法(Approach)
- 功能 1:多级分组与自定义分隔符
- 交互设计:
- 用户可通过输入分隔符(如
/、-)定义分组层级(例如电商项目-生产环境)。 - 支持树形结构展示,允许拖拽连接或分组调整位置。
- 用户可通过输入分隔符(如
- 技术实现:
- 后端:使用嵌套 JSON 结构存储分组层级关系,兼容现有连接数据。
- 前端:基于树形组件(如 Ant Design Tree)实现动态渲染与交互。
- 交互设计:
- 功能 2:分组同步与共享(企业版)
- 云端同步分组配置,支持团队内分组共享与权限管理(管理员/只读)。
- 提供分组导入/导出功能(JSON/YAML 格式),支持与 CI/CD 工具集成。
收益(Benefit)
- 效率提升:用户管理连接的时间预计减少 40%+(参考 JIRA 同类功能用户反馈)。
- 竞争力增强:填补 Redis 管理工具中灵活分组功能的空白,吸引企业团队用户。
竞争(Competition)
- Redis Insight:仅支持标签分类,无法定义多级目录。
- Medis:分组功能仅限 macOS,且无同步能力。
- 差异化优势:跨平台、多级分组、企业级协作支持。
交付(Delivery)
- 开源版本:基础分组功能免费开放,通过 GitHub 社区宣传。
- 企业版:高级同步与权限管理功能订阅制($10/团队/月),与云厂商合作预装推广。
团队角色配置
| 角色 | 人数 | 职责 |
|---|---|---|
| 后端开发 | 2 | 分组存储设计、同步服务开发、API 接口实现 |
| 前端开发 | 2 | 树形交互开发、拖拽功能优化、UI 联调 |
| 测试/运维 | 1 | 自动化测试、性能压测、跨平台验证 |
| UI/UX 设计师 | 1 | 分组界面设计、交互流程优化、动效制作 |
16 周详细规划
| 阶段 | 周数 | 任务 |
|---|---|---|
| 需求与设计 | 1-2 | - 用户调研(Issue 分析、问卷收集) - 交互原型设计(Figma) - 技术方案评审(分组存储结构、同步协议) |
| 核心功能开发 | 3-8 | - 后端:分组存储逻辑实现(3-4 周) - 前端:树形组件集成与拖拽交互(5-6 周) - 基础分组功能联调(7-8 周) |
| 高级功能开发 | 9-12 | - 后端:分组同步服务开发(9-10 周) - 前端:权限管理模块实现(11 周) - 导入/导出功能开发(12 周) |
| 测试与优化 | 13-14 | - 压力测试(支持 5000+ 连接与 100+ 分组) - 交互优化(响应时间 ≤200ms) - 兼容性测试(Windows/macOS/Linux) |
| 发布与推广 | 15-16 | - 文档编写(分组操作指南、API 文档) - 社区推广(GitHub Release、技术博客) - 企业版预售(官网落地页、邮件营销) |













浙公网安备 33010602011771号