目录
一、项目概况
1.1 项目背景
音乐是一门艺术,是由有组织的乐音来表达人们情感、反映人类现实生活情感的艺术。现代科技的发展使得人们可以利用网络随时随地的享受音乐,然而在当今互联网却很少有一个以音乐为媒介的社交平台。本开发团队想以“音乐+社交”的形式,开发一款集听歌、交友和讨论为一体的网上社区——“Violet”音乐社区。Violet多指紫罗兰,也可形容羞怯的人,本团队旨在通过此平台增强人们对音乐的交流,同时拉近人与人之间的距离。
1.2 相关文档及各阶段项目链接
界面原型demo:http://kealine.top/SE/demo/
正式版1.0:http://kealine.top/violet/
二、参与工作总结
2.1 工作概述
2.1.1 对团队贡献
在整个项目实现中,积极参与需求分析的讨论,能够及时发现当前模型存在的问题,并能够较好地与其他组员分析问题,提出解决问题的方法。为“Violet”音乐社区的最终完成出了一份力。
2.1.2 个人工作
在整个项目中,我负责前端的具体代码实现,设计api文档,以及前后端连接等工作,与组长配合比较默契。
2.2 具体工作介绍
2.2.1 参与确定项目的具体需求
确定了整个项目逻辑上分为音乐、社交两个方面,并以这两个大块为起点,划分出曲库、播放器、歌单、动态、圈子等附属需求。并设计了项目的用例图。
2.2.2 使用vue框架进行前端的具体代码编写
在项目demo的基础上,增加并完善了项目的其他模块。并延续了项目极简、"罗兰紫"的基调。在模块上具体负责了圈子、帖子、用户界面的编写。
2.2.2.1 圈子模块
圈子模块包含圈子列表界面、圈子主页(圈子帖子列表)。圈子列表是社区所有圈子的预览页面,我使用圆形的图像来代表每个圈子,刻意选择不使用过多的装饰,一目了然又不累赘。圈子主页是一个圈子的主页面。包含圈子的简要信息以及圈子中的所有帖子。每个帖子将会显示其热度(参与量)、标题、内容摘要、发起人等信息。用户也可以在该页面选择加入/退出该圈子。我采用项目主色调"罗兰紫",并将每个帖子的回复数标记在主页上,让热度清晰的呈现给用户。
2.2.2.2帖子模块
帖子模块包含帖子的预览界面,是帖子的详情页面,是本社区社交部分的核心区域之一.本页面包含在该帖子主题下,所有参与的用户的评论。在该页面,用户可以发表自己的看法,也可以为别人的精彩观点点赞。与圈子的设计基调相似,在帖子模块中也大量采用了"罗兰紫",并以"星号"取代一般的点赞符号,意在拉近陌生人之间的距离,星与星被点亮。
2.2.2.3用户模块
用户模块分为三个部分,分别为登录、注册以及用户界面。登陆以及注册界面,是一如既往的极简,且放大了本项目的logo,符合当代年轻人的审美。在用户和界面中,我将该用户的动态数、关注数、粉丝数放在最显眼的位置,用以体现本社区最重要的社交属性。接下来就是用户收藏的歌单项,可以通过此处访问用户的专属歌单。
2.2.3 前端特色
由于使用了vus.js作为前端框架。所以在项目设计上,在前端代码编写上,有意识的向着代码块复用的方向上前进。在项目原型完成后,我们前后一共封装了大概有10余个组件,用于相似代码块的复用,使前端代码极富有模块化,使原本的工程代码更加清晰、明了、优美。有利于再次的编写以及阅读。事实证明,这个决策是十分正确的。
2.2.4 制作api文档
前后端沟通的最重要的一环就是通过api来互相传递数据。所以约定出一个前后端编写时都认可的api数据传递格式(json)就格外重要。我将制作完成的接口文档,以云文档的形式,共享给组员,提高了大家的工作效率。
2.2.5前后端相连
由于我们小组以以前后端来划分工作量,且前端原先的demo是以静态网页的形式呈现的。所以我们采用post请求的方式,向后端请求数据。
三、项目总结
3.1 项目的起源
在讨论的初期,无意中提起关于陌生人社交的想法,于是在头脑风暴中逐渐产生了用音乐这种柔软的、私密的又不失力量的方式来连接相互不认识的人似乎是一种很好的选择。又由于我们组内成员本身对音乐的喜爱,就将这个想法保留了下来,并由它发散开,于是逐渐形成了“Violet”音乐社区的雏形。再者,目前市场上已经有了很多陌生人社交的软件如“默默”、“探探”等,但是我们认为,这些软件基于某种算法向用户推荐的指向性“潜在朋友”,是一种对传统交友的背叛,也有着一定的局限性。而我们的“Violet”音乐社区,则主打音乐社交,由音乐这种拥有能够深入人心的力量的东西作为媒介,来打开两个陌生人之间的心门,让人与人之间的被动相遇变成拥有灵魂共鸣的主动相遇。再者,“Violet”本意为紫罗兰,其花语为“羞怯的人”,这也包含这我们的深一层想法,即通过音乐这种温柔的方式,来使原本羞涩内向的人也能在社区中表达自己,发现自己闪光的一面。
3.2项目技术栈
- 整体采用B/S架构,并采用前后端分离技术。
- 前端采用Vue.js+ElementUI+axios(均为主流前端技术)
- 后端采用Flask+MySQL(轻量级Flask框架易上手,速度快而MySql数据库为大家所熟悉)
3.3项目收获
在思维方式上,通过对项目需求的分析,让我明白了不能想当然,要仔细分析自己的项目的需求边界,仔细界定需求的范围,不能急于上手。
在前端的开发中,系统学习了Vus.js的具体用法,以及cli脚手架的配置和应用,并学会熟练使用DEV_TOOL以及postman进行测试,以及定位错误点。在前后端连接阶段,也了解了Flask的基础操作与编写方式。总而言之,在本次项目的实现过程中,让我学到了很多,也提高了动手实践能力。
在团队合作上,让我明白了团队工作,最主要的是协调二字,要各司其职,要首先完成有相关性的任务,来确保整个项目的进度不为你的落后而落后。其中也要对他人负责的模块有一定的了解,才能更好地向伙伴们提出问题,并一起寻求解决方案,来提高整体地效率。
四、课程建议
对于软件工程这门课,朱勇老师首先通过《构建之法》来给我们构建对“软件工程”这一个复杂又抽象的概念的总体概览,我认为是非常高明,且有效的。有了一开始的对“软件工程”这个概念的全貌的总览,再辅之以实战,着实让我身为学生收益匪浅。尤其是在需求分析阶段,朱勇老师特意强调了需求分析的重要性,并且多次为我们组指点迷津,也常常让我恍然有悟。使我改变了轻分析,重实现的原本的错误认识(实则两者互辅,各有所重)。
在团队实战中,助教也起了很重要的作用,在每一次的小组例会中,助教总是能给予我们中肯又一针见血的建议,为我们整体作业的推进起了很大的作用。
建议的话,我个人觉得软件工程的最主要的需求分析这个模块,老师还可以讲的更细致一点,最好能够分享一些典型的例子(虽然老师的思维已经很发散了),让我们能够更清楚地认识到在需求分析中容易遇到的一些错误,以及一个好的需求分析对一个项目能起到的巨大的正向推动作用。还有就是希望能降低理论考试在总评中的比重。
来源:https://www.cnblogs.com/Archer-Luo/p/12014437.html