[I.2] 个人作业:软件案例分析
项目 | 内容 |
---|---|
这个作业属于哪个课程 | <2025年春季软件工程> |
这个作业的要求在哪里 | <[I.2] 个人作业:软件案例分析> |
我在这个课程的目标是 | 学习软件工程的理论,将理论与实际相结合,提升系统思维的能力 |
这个作业在哪个具体方面帮助我实现目标 | 通过对于其他成熟软件的分析,学习软件 |
软件评测
软件使用
1.软件选择
本次作业选择了一款由个人开发的开源音乐播放软件MusicPlayer2
,这是我个人经常使用的PC端的本地音乐播放器。
2.软件使用
MusicPlayer2
的功能十分强大,不仅有基本的音乐播放功能,还能自动为本地歌曲添加标签,封面和歌词等。MusicPlayer2
是一款集音乐播放、歌词显示、格式转换等众多功能于一身的音频播放软件。
- 音乐播放
这是MusicPlayer2
的最基础功能。播放界面的工具栏有多种功能,从左到右依次是循环模式,设置,音效设定,皮肤设置,音乐信息,查找歌曲,深浅色模式切换,段落重复,歌词翻译,以及桌面歌词。
- 桌面歌词
MusicPlayer2
也支持桌面歌词,可以通过桌面歌词直接控制歌曲的播放,也可以改变桌面歌词的皮肤。
- 下载歌词
MusicPlayer2
支持为本地的歌曲下载歌词,并且显示在播放器中。下载的歌词既可以是一个单独的歌词文件,也可以是内嵌到歌曲文件里。下载的歌词来自于网易云音乐。
- 下载标签
MusicPlayer2
支持为本地的歌曲下载标签信息,包括歌手,专辑,流派等信息,也可以通过此功能为歌曲添加封面图片。
- 统计功能
MusicPlayer2
支持统计功能,可以查看歌曲的播放时长和次数
- 外观设置
MusicPlayer2
支持外观的设置,包括简单的图标设置以及播放音乐时的标题栏设置。对于进阶玩家,MusicPlayer2
也支持自定义页面,只需要在文件目录下的skin文件夹里新建并且编写一个xml文件,就可以来配置用户界面。
3.软件分析
在初次使用软件时,需要先导入本地的歌曲,然后即可进行播放。用户可以下载歌词,添加标签,添加播放列表等,也可以自定义播放的界面。
对于有能力找到并下载歌曲文件玩家,MusicPlayer2
作为一个本地播放器,拥有的功能已经足以满足用户的需要。但是另一方面,MusicPlayer2
无法满足在线交流的需要,也没有用户社区(Github可能勉强算用户社区),无法看到歌曲的评论,无法第一时间听到最新的歌曲,不少功能都需要自己配置。MusicPlayer2
的基本功能已经足够优秀,但是默认的界面并不好看,需要自己修改,乃至于自己修改配置文件。
4.改进意见
目前的在线下载歌词功能是调用网易云音乐的api,对于某些歌曲来说会出现找不到歌词的情况,如果可能的话希望能增加一些其他源。软件的UI有一点不符合大众的审美,希望能进行更多的美化。
5.用户调研
我的采访对象为使用MusicPlayer2
至少两个月以上的朋友,她对于这款软件有着自己的看法。她使用过多种音乐软件,深知不同音乐软件的特点,因此选择她作为被采访的对象。
- 采访内容
6.评测结论
非常推荐。
MusicPlayer2
可以说是一个小而美的软件,在播放音乐这一功能上几乎做到了极致。
Bug 分析和提交
Bug1
测试环境
操作系统: Windows 11 23H2
软件版本: V2.77.1
具体情况描述
在切换到深色模式过程中,只有歌词界面会变成深色,而软件本身的状态栏和播放列表不会发生变化。
如图所示,此时为深色模式。
可复现性
必然发生
Bug分析
-
可能成因:在进行状态栏和播放列表的前端设计时,软件可能使用了模块化的设计,不同界面的主题管理是分开处理的。歌词界面的深色模式实现可能是独立的,而状态栏和播放列表的主题切换逻辑未被正确绑定或调用。
-
严重程度:★★✰✰✰
-
未修复原因:可能是不同模块的重新统一工作量比较大,开发者没有动力进行修改
Bug改进建议
开发者可以检查使用的UI框架文档,确保正确实现深色模式支持。
Bug 反馈
已经向开发者提供了反馈。
Bug2
测试环境
操作系统: Windows 11 23H2
软件版本: V2.77.1
具体情况描述
MusicPlayer2
预设了几种界面,切换到其中的test页面并且使用小窗口时,会发生按钮的重叠,当最大化以后,不会发生这样的问题。
如图所示,此时为正常窗口状态,歌词界面右上角的按钮会重叠。
Bug分析
-
可能成因:在前端设计时,可能是软件的各种组件使用了固定的布局方式,而没有根据窗口的变化而动态调整。
-
严重程度:★★★✰✰
-
未修复原因:可能是考虑到不同设备的适配性问题,不容易做到统一的组件样式
Bug改进建议
开发者可使用自适应布局管理器,确保按钮位置随窗口大小动态调整。
软件分析
工作量分析
12个月左右。
经过工具分析,此项目的代码共有20万行左右,使用C++编写。在敏捷开发的流程下,实现各个功能大概需要12个月。
软件质量分析
同类对比
MusicPlayer2
是一款比较小众的本地音乐播放软件,在这里和一款十分流行的在线音乐服务平台-网易云音乐进行对比。
特性 | MusicPlayer2 |
网易云音乐 |
---|---|---|
主要用途 | 本地音频播放、歌词显示、格式转换 | 在线音乐流媒体、社交互动、音乐下载 |
支持的音频格式 | 几乎所有常见格式(基于BASS库) | 广泛支持(在线格式为主,如MP3、FLAC等) |
在线流媒体 | 不支持 | 支持(核心功能) |
本地播放 | 支持(核心功能) | 支持(需下载后) |
歌词支持 | 支持显示、卡拉OK样式、在线下载 | 支持显示、同步、评论互动 |
界面自定义 | 主题颜色支持 | 支持主题、个性化推荐界面 |
频谱分析 | 支持 | 支持 |
音效设置 | 支持 | 支持(均衡器、音效增强) |
社交功能 | 无 | 支持评论、分享、关注用户 |
音乐库规模 | 依赖用户本地文件 | 超1亿首歌曲、34亿播放列表 |
下载功能 | 不适用(本地播放器) | 支持(部分需付费) |
轻量级 | 是(约3MB压缩,8-10MB解压) | 否(安装包较大,功能丰富) |
操作系统 | Windows(XP及以上) | Windows/Mac/Android/iOS |
便携性 | 默认便携(配置保存为INI文件) | 无(需安装或登录使用) |
格式转换 | 支持 | 不支持 |
开源性 | 是(GPL-3.0) | 否(商业软件) |
收费模式 | 免费 | 免费+付费订阅(增值服务) |
社区活跃度 | 较低(GitHub维护) | 高(8亿+注册用户,活跃社区) |
AI功能 | 无 | 支持(AI推荐、音乐创作工具如天音) |
以上借助了AI大模型的帮助。
改进建议
MusicPlayer2
的产品质量在本地音乐播放器的市场上可以说是数一数二,在Github上有相当良好的口碑。
对于开发者来说,由于MusicPlayer2
是由一个人开发的软件,所以更新频率会比较慢,几乎每隔一年才会有一次更新。这对于广大用户来说不是一个好消息。如果MusicPlayer2
能扩大一下开发者团队,显然会更好一点。
建议和规划
市场现状
目前喜欢听音乐的人越来越多,各家音乐播放器打起了价格战,版权战以吸引新的用户。实际上,现在的音乐播放器市场已经饱和,基本上形成了QQ音乐,网易云音乐,酷狗音乐三分天下的局面,这三家音乐软件为了留住老用户,吸引新用户,开始在软件的个性化下功夫,并且纷纷引入新功能,逐渐形成一个成熟的用户社区。
而本地音乐播放器则截然相反。流媒体音乐占据了89%以上的收入份额,成为市场核心。本地播放器用户数量难以统计,主要集中在对音质、离线播放有需求的用户群体,难以与流媒体竞争。
所以MusicPlayer2
真正的竞争对手是其他本地音乐播放软件,主要就是系统自带的音乐播放器。MusicPlayer2
相比起来显然拥有更多的功能。
市场与产品生态
MusicPlayer2
这样的本地播放器主要服务于注重音质、不依赖网络、或希望离线管理的用户。这些用户希望自己对于音乐有更高的控制权,不希望自己被数据追踪,所以更加偏爱本地播放器。
对于在线的的流媒体音乐播放器,由于版权问题,可能会出现“数字难民”群体,这为本地音乐播放器的生存提供了空间。
MusicPlayer2
的用户群体不存在专门的社区,而是主要集中在Github中,多为技术爱好者,会向开发者提供反馈,在Github中形成自己的社区。有时也能参与到软件的开发过程中。他们会向开发者提供捐赠,这也是开发者的收入来源之一。
产品规划
NABCD分析
- 需求(Need):用户需要更好看的界面,并且希望自定义软件的皮肤
- 解决(Approach):开发一款全新界面,并且支持用户修改皮肤
- 利益(Benefit):增加更多技术爱好者,吸引来自流媒体播放器的用户
- 竞争(Competitor):
MusicPlayer2
在本地播放的领域几乎不存在竞争,只需要继续深耕就好了 - 落地(Delivery):在Github上进行发布和部署
团队角色配置(6人)
角色 | 人数 | 职责 |
---|---|---|
UI/UX 设计师 | 1 | 负责界面设计、用户体验优化、视觉风格确定 |
前端开发 | 2 | 实现新界面设计,优化交互逻辑, |
后端开发 | 1 | 维护核心功能(音频播放),支持前端集成新界面 |
测试工程师 | 1 | 利用自动化工具功能测试、界面测试、性能测试,确保无 Bug 和崩溃 |
产品经理 | 1 | 需求管理、进度协调、用户反馈收集,兼顾流程管理) |
详细规划:
(以下部分使用大模型)
需求分析与界面设计
周次 | 任务 | 负责人 |
---|---|---|
第 1 周 | 通过Github收集用户反馈,定义界面改进需求 | 产品经理 |
研究竞品界面风格 | UI/UX 设计师 | |
第 2 周 | 设计初步界面草图,确定设计风格 | UI/UX 设计师 |
确定技术栈,明确现有框架是否支持新设计) | 前端开发+后端开发 | |
第 3 周 | 完成设计稿,包括主界面、设置页、播放器视图 | UI/UX 设计师 |
需求评审,确认设计与开发对接 | 全体 | |
第 4 周 | 设计可自定义主题方案 | UI/UX 设计师 |
开始前端基础准备,并且开始搭建新界面框架 | 前端开发 |
核心界面开发
周次 | 任务 | 负责人 |
---|---|---|
第 5 周 | 开发新主界面(播放器视图、歌曲列表) | 前端开发 |
检查后端接口兼容性 | 后端开发 | |
第 6 周 | 开发设置页面和主题切换功能 | 前端开发 |
初步测试主界面功能,检查有无bug | 测试工程师 | |
第 7 周 | 优化交互体验,优化动画效果、响应速度 | 前端开发 |
后端支持新界面数据加载 | 后端开发 | |
第 8 周 | 对主界面和设置页测试,收集内部反馈 | 测试工程师+产品经理 |
细节优化与扩展
周次 | 任务 | 负责人 |
---|---|---|
第 9 周 | 添加歌词视图次级界面 | 前端开发 |
设计至少 3 种风格的主题 | UI/UX 设计师 | |
第 10 周 | 实现主题切换逻辑和额外主题 | 前端开发 |
测试次级界面和主题切换 | 测试工程师 | |
第 11 周 | 优化性能,提高启动速度 | 前端开发+后端开发 |
用户体验测试 | 测试工程师+产品经理 | |
第 12 周 | 修复Bug,准备 Beta 版 | 全体 |
测试与发布
周次 | 任务 | 负责人 |
---|---|---|
第 13 周 | 发布 Beta 版至 GitHub,收集社区反馈 | 产品经理 |
全面测试 | 测试工程师 | |
第 14 周 | 根据 Beta 反馈修复 Bug,优化界面细节 | 前端开发+后端开发 |
更新文档和发布说明 | 产品经理 | |
第 15 周 | 进行最终测试,进行回归测试、压力测试 | 测试工程师 |
打包发布版本 | 前端开发+后端开发 | |
第 16 周 | 正式发布至 GitHub,进行新版本的宣传 | 产品经理 |
收集发布后反馈,规划后续迭代 | 全体 |