基于音乐推荐系统的需求分析和概念原型
一 项目简介
本题为工程实践自主选题,主要是实现一个具有推荐功能的音乐系统,初步打算通过提取音乐中的特征值进行聚类,生成音乐库,并采取协同过滤的方法记录用户的音乐爱好,向用户推荐个性化的音乐服务。因为项目目前还在不断进行,所以本次作业还有一些不足之处,会随着项目的不断完善逐渐完整。
二 系统用例图
1. 用例图的含义
由参与者、用例以及他们之间的关系构成的用于描述系统功能的动态视图称为用例图。
2. 用例图的作用
用例图是需求分析的产物,主要作用是描述参与者和用例之间的关系,帮助开发人员可视化的了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领域专家能够以可视化的方式对问题进行探讨,减少了交流上的障碍,便于对问题达成共识。
3. 用例规约
-
简要说明:对用例作用和目的简要描述
-
事件流:包括基本流和备选流
-
用例场景:就是用例的实例
-
特殊需求:指的是一个用例的非功能性需求和设计约束
-
前置条件、后置条件
4. 系统用例图
根据以上描述,本系统的用例图如下:

-
歌曲基本信息,包括歌曲的名称,存放地址,专辑名称,歌手信息
-
音乐 DNA 信息,记录歌曲的特征
-
歌手信息,包括年龄,性别,国家等
-
专辑信息,包括发行者,发行公司
-
歌曲相似度,记录一首歌曲与同类型的歌曲
-
热门歌曲,根据统计发现的热门歌曲
三 业务类图
在需求分析中遇到的各种业务概念经过抽象后就是类,如何画出类图,必须能够识别出类。
在 UML 图中,用矩形框表示类图,类图包含:类的名称、类的属性、类的方法(动作),例如:

1. 类的属性有三种类型:
-
公有属性,可以直接在类外访问
-
私有属性,只能在类中访问,其子类和类外都不能访问
-
保护属性,只可以在类及其子类中访问
例如,在本系统中,歌曲类主要属性包含:名称,DNA,如下图:

2. 类与类之间的关系
-
关联,在类图中用一条直线连接关联的两个类,直线两端可以是 n - m 的关系
-
依赖,是关联的强化关系
-
继承,继承是面向对象的一大特点
-
聚合,强调整体与部分之间的关系,部分可以脱离整体存在
-
组合,与聚合不同之处在于组合中的部件不能脱离整体存在

四 数据模型
1. song 表
| 列名 | 类型 | 长度 | 是否为空 | 注释 |
| id | int | 20 | 否 | 歌曲 id |
| name | varchar | 255 | 否 | 歌曲名 |
| artlist_name | varchar | 255 | 否 | 演唱者 |
| album_name | varchar | 255 | 是 | 专辑名称 |
| author | varchar | 255 | 否 | 作者 |
2. song_similar 表
| 列名 | 类型 | 长度 | 是否为空 | 注释 |
| id | int | 20 | 否 | id |
| song_id | int | 20 | 否 | 歌曲 id |
| similar_song_id | int | 20 | 否 | 相似歌曲 id |
| ilike | int | 10 | 否 | 点赞数 |
| ihate | int | 10 | 否 | 点踩数 |
| ilisten | int | 10 | 否 | 播放数量 |
3. album 表
| 列名 | 类型 | 长度 | 是否为空 | 注释 |
| id | int | 20 | 否 | id |
| name | char | 255 | 否 | 专辑名称 |
| cover | int | 255 | 否 | 艺术家 id |
| artlist_id | char | 20 | 否 | 艺术家名称 |
4. topic_song 表
| 列名 | 类型 | 长度 | 是否为空 | 注释 |
| id | int | 20 | 否 | id |
| topic_id | int | 20 | 否 | 主题 id |
| song_id | int | 20 | 否 | 歌曲 id |
| description | char | 255 | 是 | 描述 |
| song_play_count | int | 20 | 否 | 播放量 |
五 概念原型
-
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。
-
概念原型是一种虚拟的、理想化的软件产品形式。
-
概念原型=用例+数据模型
根据以上描述,可以得出个性化音乐推荐系统的概念原型:
-
用例图是管理员用例图
-
数据模型分为歌曲、相似歌曲、专辑、歌曲主题等以及他们之间的关系
-
工作过程:用户登录系统之后,通过浏览相关歌曲或在开始页面添加歌曲口味,系统根据用户浏览痕迹(包括歌曲播放量、对歌曲的点赞、点踩、歌曲的评论等)推荐相关的音乐。
-
管理员主要是对歌曲和用户进行增删改查等操作。
六 总结
在学习本节课之前,无论是做课程设计也好,做一些练手的小项目也好,都是上来直接开始写代码或者去查资料,没有能够明白先做什么是重要的,通过课程的学习,以及配合工程实践项目的练习,理论联系实际,我相信,这对以后的项目开发会有很大的帮助,可以帮助我少走弯路,首先要站在足够高的角度去思考问题,总揽全局才能够避免很多后期的改动,本次作业只是一个开始,还需要以后勤加练习,多动手才会有更大的收获。
参考资料:
1. https://blog.csdn.net/cug_heshun2013/article/details/51158861
浙公网安备 33010602011771号