项目总体报告

项目总体报告

iBird 项目地址 https://weparallelines.top

iBird 项目 GitHub 仓库 https://github.com/OUC-iBird

团队分工

  • 后端:刘阳
  • APP:任浩辰
  • 识别模型:蔡宇翔
  • 前端(边学边做):蔡宇翔、陈祺龙、方海祺

预期计划

  • APP 实现发布动态,拍照识别功能

  • 网页端实现上传识别,发布动态,查看动态,足迹和点赞功能

  • 部分 UI 稿子,后续针对一些问题做了修改

    参考 GitHub 仓库中的 网页端 UI 稿子

项目燃尽图

一张 SCRUM 会议照片

项目架构

我们后端采用Pytorch+BCNN 构建深度学习模型,用 Django+uwsgi 作为后端服务框架,采用 Nginx 做反向代理,数据库采用 MySQL,APP 前端使用 Android Dev,Web 前端使用 Vue。

测试

项目的最后,我们做了一些测试,包括模块功能的测试以及请了一些同学来体验。总体来说项目功能完整,达到了预期。但仍存在一些用户体验上的问题。

  • APP 端

    • 优点:软件使用流畅,功能完整,在测试中正确通过了所有无效样例和特殊使用情况,证明软件具有良好的健壮性。
    • 缺点:截取图片部分有部分错误,不影响最终结果。
  • 网页端

    • 优点:网页使用流畅,功能完整,用户能够快速入手使用,说明具有良好的易用性;在输入无效样例时能够给出相应提示并正确响应,说明具有良好的健壮性。
    • 缺点:部分浏览器有适配问题;裁剪图片时不能够自适应图片大小,需要手动调整。
  • 后端

    • 优点:在测试中能够正确拦截所有客户端的无效数据,并给出相应应答;功能完整
    • 缺点:没有实现 APP 端注册自动登录功能

问题

后端生成的 Cookie 自动设置 SameSite=Lax 导致无法完整获取 Cookie

解决方法也有很多,比如说 SameSite 设置为 None,由于跨域问题仅存在浏览器,部署到服务端又不存在跨域,也可关闭浏览器跨域的保护来方便开发。我采用的方法是第三种,前端代理,简单来说就是避开浏览器直接获取服务器数据,改用让 node 代理,服务器之间不存在跨域,自然就可以完整的获取到 Cookie 了。

由于我们的水平问题,对于每个页面都需要请求服务器当前用户是否登录了

解决导航登录验证频繁访问是否登录接口,我们采用了前端缓存的方法提高性能。以及裁剪图片的时候,如何将 Blob 格式转为 Img。

项目心得

方海祺

Vue 结合 Element UI 开发前端真的很便捷高效。从用户需求到功能实现,有效沟通很重要,可以减少盲目的无用工。最后我收获最大的是,小组成员们都很棒,每一次开会都能让我学到包括知识和精神方面的很多东西,感恩,希望能和更多像这样优秀的朋友们合作。

任浩辰

学习新版 androidx,加了很多新特性,对于主线程进行比较耗时的操作比如联网操作或者更新 ui 等都有更加严格的要求,还有权限请求也更严格了。还复习了一遍联网请求以及存 cookie 这一整套操作(以前没亲手写过所以比较生疏)。这一次开发运用了更多好看的控件,整体比以前更好看流畅(开发也更懒了),审美也比以前有提高,也很有成就感√

刘阳

总体来说,设想的功能都很好地完成了,啊这,真是太快乐了,写了两年的 Django 了,每一次写都有新的体会,但我觉得我写的 Django 越来越像 Spring Boot,尝试了许多新的写法,算是做到高内聚,低耦合。

蔡宇翔

说点掏心窝的话,Vue 真香,ElementUI 真香,谁用谁说好。如果你要问我,Vue组件生命周期是啥啊,axios 原理是啥啊,不知道......学艺不精啊,自己充其量算是个入门的前端萌新吧。深度学习就更是了,不过有看一些些论文,自己尝试做出修改,比拿来直接用好,希望自己作为计科专业能更加注重原理和个性化,而不是一味的复制粘贴。

陈祺龙

算是在前端的第一个比较认真的项目,不想划水就在大部分时间学习教程,文档与菜菜子代码。画网页好难所以主要写前端逻辑(Vue 天下第一)与对接的前端部分。对前端本身有了一个完全全新的认识,抠了十几个小时的前后端通信原理也算学到了点实用的东西。希望自己能在这一道路上精进自己,在以后开发出更加高效优质的项目。

项目预览

登陆页

首页

全部动态页

识别页

个人中心页

发布动态页

地图页

附加题

刘阳

对之后上这门课的同学,或者对于开学初的你,有什么建议和告诫

建议嘛,就是一定要尽快做,不要拖延,越往后杂七杂八的事情越多,留给做软工项目的时间就可能不是很充足。建议之后上这门课的同学,一定要正视自己的能力,并不一是别人做什么,你就一定要做什么,他们的功能并不一定符合你们的需求,也可能不是力所能及的。请不要学我们组做那么多东西,我们能做是因为我们很早就接触了网站开发,对这方面比较熟悉,基本上是”信手拈来“(除了前端)。

对于作业或者课程安排有什么样的建议

作业感觉一周两次有点多了,一周一次比较好,一般来说一周也就能干一方面的事情,学不了太多的东西。
建议是小组个数少一点,安排比较大的项目,能够让每个人都认真的投入到软件开发的过程中,能有更多的合作机会。对于人工智能这一方面,感觉可有可无,如果光是识别直接 copy 别人的代码就行了,也不需要进行深入的研究,并且这一部分我觉得绝大部分人都没有接触过,从零开始学起比较困难。

自己对未来的期许

希望自己能够多学点东西吧,自我感觉良好,其实还是个菜鸡(不,我想躺着)。


蔡宇翔

对之后上这门课的同学,或者对于开学初的你,有什么建议和告诫

好好干啊,以后就没有这么轻松愉快的项目合作了。

对于作业或者课程安排有什么样的建议

建议项目检查新增公开处刑环节,分组再少一些。作业加一条每次 SCRUM 会议后小组总结写一个学到的新技术。

自己对未来的期许

卷王(梦里),就上个好研究生就行了,能学自己想学的(CV),闲暇的时候搞搞操作系统(接着做梦)


任浩辰

对之后上课的同学建议

课设技术和合作都肥肠重要!一群有经验的队友合作起来真的是舒服极了,当然这次APP前端是我一个人做,也不存在什么合作上的问题,不过网页前端以及后端大家都按部就班氛围很融洽,最终的成果才会这么出色,这都是大家一起努力的结果。在开发过程中尽量领会一些迭代开发等等的精髓,活学活用嘛。

对课程建议

一周开两次会略微有些多,可以适度减少一点;感觉这次加入的图像识别/人工智能这部分其实不是很有必要,一方面因为大部分模型代码都不会自己写,另一方面因为有很多同学都是第一次接触开发,前后端连接都没有接触过,完成基本功能就已经很困难了。

期许

目前的开发状况:“哇这个好牛B,怎么实现的研究下”;三分钟后:“算了能用就行”。
希望自己以后能更加勤快,少用点轮子,自己学点原理(瘫)。


方海祺

对之后上这门课的同学,或者对于开学初的你,有什么建议和告诫?

建议先弄清楚这门课的开课目的,先大致了解自己在这门课中能学习些什么,以及自己有什么预期收获,因为是小组合作,一开始找到自己的优势与定位,做好充足的学习准备,对项目的帮助会更大,自己也会学得更多更踏实,也大大避免盲目学习,做无用功。然后要珍惜与组内成员交流合作的机会,看看别人在做些什么,发现自己与别人的差距在哪里,应该如何提升自己,这个蛮重要的。

对于作业或者课程安排有什么样的建议?

感觉大体挺好的,就是会议的次数多了点,建议一周一次就好。

自己对未来的期许?

不断学习,不断强大。


陈祺龙

对之后上这门课的同学,或者对于开学初的你,有什么建议和告诫?

多学习,多思考,多合作交流,多问问大佬,总之如果划水就跟这门课的理论知识一样(不是)收获不到任何东西。

对于作业或者课程安排有什么样的建议?

把大作业整个周期提前两三周比较好,方便期末复习(当然开学初确实因为有着各种各样的问题让项目安排延误了)

自己对未来的期许?

希望以后能得以学到各种有用的知识,成为大佬(大概)

posted @ 2021-01-12 20:19  chmod000  阅读(28)  评论(0编辑  收藏