项目展现$\alpha$

项目 内容
课程:北航-2020-春-软件工程 博客园班级博客
要求 强制转会与项目展现
咱们在这个课程的目标是 提高团队管理及合做能力,开发一项满意的工程项目
这个做业在哪一个具体方面帮助咱们实现目标 展现项目并总结

VisualPytorch发布域名+双服务器以下:
http://nag.visualpytorch.top/static/ (对应114.115.148.27)
http://visualpytorch.top/static/ (对应39.97.209.22)html

1、成员简介

我的介绍详见:团队介绍和采访前端

“假”相 姓名(博客园) 成员简介 角色定位
孙Y 管控项目进度、成员任务分配、贡献分计算、项目部署、会议组织、项目分享、博客撰写等多种任务。 PM/后端开发者/项目部署者/博客撰写者
钟RH 提出许多新颖的idea,推进前端部分进度。进行项目的部署并修复了不少bug。 前端负责人/项目部署者
吴F 查找了前端模板,实现了模型搭建模块的主要逻辑。 前端开发者
苏HX 实现了模型保存及帮助文档的前端逻辑。 前端开发者
陈CW 撰写了详细的帮助文档,设计了先后端对接的json接口,推进后端部分进度。 后端负责人/文档撰写者
许TL 4月中旬加入团队,在后端进行部分辅助工做。 后端开发者

2、软件工程

1. 团队概述

  • 团队项目的目标:提高团队合做能力,了解工程开发流程,开发一项满意的工程项目
  • 预期的典型用户: 学生,deep learning初学者
  • 预期的功能描述:继承了上一届的VisualPytorch,宏观架构基本一致。在上一届实现拖拽生成模型代码并提供打包下载、用户登陆、访问量统计的基础上,添加更多的网络层,支持封装、经典模型、模型共享等功能,让小白也能亲手实现图像分类、图像分割等功能。具体内容见:功能设计
  • 预期的用户数量:alpha阶段注册100人,生成模型数300个
  • 团队的产品如何知足了用户的需求:deep learning初学者因为对pytorch不够熟悉,不知道各个网络层以及全局数据的参数应该怎么选择,在看了帮助文档中对他所需参数的大体介绍后,配置出了本身的模型,并生成了代码,成功运行。

2. 过后回顾

  • 看到目标用户使用产品的过程和评价,见用户反馈&bugvue

  • 事先定义的目标达到了么:模型生成数(332)达到了,但注册人数(64)还差一点,可能有如下缘由:git

    • 项目还不足够吸引人:没有知足面向用户的需求,以前预约的封装功能尚未实现
    • 使用起来还不方便
    • 网站的安全机制,加载速度不尽人意
    • 宣传力度还不够
  • 团队的成员如何分工协做的?有什么经验教训?github

    分为前端和后端两部分,由PM进行协调工做。互相之间可能存在误解,由于需求不是很是明确。django

  • 团队是如何进行项目管理的?编程

    经过github平台每人一个功能分支。json

  • 团队如何平衡 时间/质量/资源 争取如期完成任务的?后端

    实际上并无彻底按照需求完成任务。因为时间不足,开发仅有两个星期,同时免费版Jsplumb不支持,网络层封装这一功能仍是没有实现,所以在此基础上的经典模型也不能实现。转而实现了扩展更多的静态参数(如损失函数、优化器等)模型保存api

3. 测试

  • 测试用例数目,代码覆盖率数目

    • 先后端结合:4个数据集对应的经典模型,从搭建到代码跑通获得正确率结果

    • 后端:使用Anaconda的coverage库进行后端覆盖率测试,19个样例(9个测试网络层,9个测试静态参数),整体覆盖率达到88%

  • 运行测试用例获得代码覆盖率的视频录像

    ScreenClip

4. 文档与规范

  • 代码规范在哪里?NAG小组代码规范

  • 齐全的文档在哪里?

  • 有些项目是在原来的基础上改进的,那么咱们团队的软件工程项目质量有什么样的提升?

    在前端设计与后端编译上有明显的提升。

    • 后端:新增了6类网络层,并对原有的网络层参数进行扩充。同时新增多种静态参数(如损失函数、优化器等)
    • 前端:对原有页面进行了改进设计,并新增了多个页面,根据后端新增内容添加模型建立页面内容。
    • 测试方面,原有项目仅对后端用户注册登陆模块进行了自动化测试,本项目则对后端一系列方法进行了自动化测试,大大提高了代码覆盖率。
  • 原来的项目有些代码混乱,没有注释,没有详细的文档,大家的项目是如何更好解决这个问题的?明年的同窗继续开发这个项目,会不会出现相似的抱怨?若是一个新学生在一台新机器上想编译并运行你的项目, 请问能顺利完成么?有什么样的文档能指导新学生?

    • 事实上原有项目留下了详细的接口设计文档,可是仍有大量的框架学习与代码阅读任务。
    • 先后端均学习Django/DjangoRestfulFrameWork,后端重点在于修改Json并根据Json输出对应代码,前端重点学习了JS/CSS/HTML/JQuery/Jsplumb等知识,经过修改Bootstrap模板解决了设计问题,经过与后端交流Json传输格式解决了新增网络问题。
    • 明年的同窗作增量开发时也会面临大量的框架学习与代码阅读任务,其对应的时间投入很难下降(即便咱们已经有了详细的先后端接口文档)。
    • 编译运行较为简单,根据ReadMe进行实现便可。

5. 需求分析

  • 对于项目的目标用户是通常学生的项目, 大家如何找到学生作需求分析?他们给你什么样的反馈?

    在需求分析中,咱们以组内分析为主,不过也经过询问、调查等方式作了一些需求分析,好比将项目推广给同窗时,会收集他们对项目的反馈信息。例如,有同窗在使用后反映在项目生成的代码loss有点高,以及网站反应速度不够快的问题,咱们将在之后的版本中进行相应调整。

    ScreenClip

    除此以外,咱们的项目还提供了问题反馈界面,用户能够直接在项目中反馈相关问题,包括有关用户需求方面的问题。不过,目前还未收到有效的反馈信息。

    在接下来的版本中,咱们会结合现有项目,作更为深刻的需求分析。

  • 全部的项目都会收集到用户的数据,请问大家对这类数据作了什么样的分析,这些分析如何验证或推翻了原来的假设?这些数据如何帮助项目改进软件工程的质量?

    咱们的项目中,共搜集了历史访问量注册用户数生成模型数三个数据。

    咱们分析了访问量的状况,感受访问量并不如咱们的预期,多是因为咱们的宣传力度不够大,也多是因为对可视化神经网络模型的兴趣没那么高,也多是生成的代码性能不理想等其余缘由。注册用户数和生成模型数也是相似的结论。

3、项目进展

1. 团队项目的实际进展:

使用了工做记录代替燃尽图,由于其信息含量更大,更能反映小组成员的工做。

2. 发布的功能:

详见发布声明α

3. 在哪里发布了软件, 用户反馈的截屏

菜市场、同窗群、博客

4、团队成员在Alpha阶段的角色和具体贡献

1. 工做记录概览:

2. 互评

0:孙烨;1:钟瑞豪;2:吴凡;3:许天立;4:康洪基;5:陈从文;6:苏海翔

评分规则详见:团队贡献分分配规则

按照团队贡献分=300*(0.7*softmax(工做记录分+50)+0.3*互评分)获得如下结果:

名字 角色 工做记录分 互评分 团队贡献分
孙烨 PM 178 0.15976067589741974 67
钟瑞豪 前端Dev 130 0.15553176387411125 57
吴凡 前端Dev 69 0.15702927958866533 43
苏海翔 前端Test 101 0.1547674682579001 50
陈从文 后端Dev 98 0.15643689451435042 50
许天立 后端Test 0 0.12225508130759383 23

5、特点功能

所作软件最有特点的功能是什么,请着重介绍一下。活的用户如何从你的软件中获益的,请现场展现。见 VisualPytorch

页面 功能描述 页面展现
登陆界面 一、用户的注册功能
二、用户的登陆功能
ScreenClip
框架构建 一、个性化构建本身的框架
二、可以保存为本身的个性化构建
三、可以实现参数调整
ScreenClip
模型管理 一、模型的删除功能
二、模型的查看
三、导出代码
ScreenClip
代码生成 一、根据所选框架生成特定代码 ScreenClip
问题反馈 一、能够向后台反馈存在的bug
二、能够看到以前反馈问题的应答
ScreenClip
用户统计 一、统计网站ip的访问次数,记录用户使用人数 ScreenClip
关于咱们 一、罗列有制做团队的具体信息,能够发邮件进行询问 ScreenClip
帮助文档 一、动图展现操做方式 二、对模型参数的文档 ScreenClip

6、用户反馈&bug

咱们测试获得的bug详见:测试报告α

如下4个评价,在用户体验上反映出了不一样的bug:

1. 助教:

用户注册的时候是否会考虑到强校验呢?
试了一下,用户名长度、符号,密码长度、符号没有校验,没有邮箱验证。
安全性这方面,若是想攻击服务器的话,脚本批量发送POST请求会产生垃圾用户数据,量大可能会拖垮服务器。

这确实是咱们没有考虑到的bug。

前端JS中对长度是有限制的,比较宽松。后端对应部分直接继承本来项目的代码,未作修改。邮箱验证后续版本会经过django相关插件实现,提高安全性。

2. 昂神:

建议把静态资源整合整合,如今资源请求太多了加载贼慢
还有有条件的话建议挂上cdn
以及感受还算来得及的话,js部分能够整合整合逻辑,更来得及一点的话,能够干脆换上vue

在1核1G的服务器上挂载的静态资源太多,现已将gif及图片改为外连接的形式,缓解资源请求压力。后续考虑其余缓解方式。

3. 同窗A:

不支持经典模型的导出,搭建一个模型对于一个新手来讲仍是太麻烦
建议设置一些典型的样例,否则根本不知道该怎样操做

原本在\(\alpha\) 阶段应该实现经典模型功能的。实际上后端json已经基本实现了。但无奈卡在了前端工具上,\(\beta\)阶段会实现这一功能。

4. 同窗B:

大家的项目对于我来讲没有什么吸引力,感受拖来拖去尚未手写来得方便
建议添加一些新功能,好比reference,实时查看大家代码的效果

这位同窗说的的确很正确,咱们的项目对于多数人来讲没有什么吸引力,不多会有人直接用咱们的网站去写代码。后续添加reference功能,上传训练好的模型在线推理。

7、总结&计划

1. 每人总结

总结 在Alpha阶段学到了什么 对软件工程的教育、课程的批评建议
孙烨 对于这一庞大的工程进行分解,合理分工,协做完成。在讨论和会议中锻炼本身组织和管理能力。
了解了如何作一个PM协调小组成员,清晰了项目从设计到发布维护的全过程。
老实说,课程设计的不是很人性化,让我想起上学期的无线网络系统:老师觉得咱们会了一切,却根本不能理解做为刚入门学生进行工程化项目的曲折之路,可是又一边Push进度,提出不少强制要求。
实际上痛苦事后才会有收获,被软工折磨的日日夜夜,成长和收获也是成正比的。
钟瑞豪 系统了解了先后端的各类框架/服务器部署相关知识,加强了与同组同窗的合做。
系统了解了软件工程的相关知识并进行了实践
与其余老师的平行班级相比,分数基本一致,任务量感受不在一个数量级。
吴凡 沟通的重要性 但愿博客少一点
苏海翔 学到了django等模型框架(本身还稍微看了一点其余的框架,好比vue什么的),还有jsplumb这样的插件,掌握了如何快速套用前端模板的方法,同时对前端debug的方法更加熟悉。对于不一样功能,不一样样式的前端代码,都能快速读懂并进行须要的操做。 关于软件工程的教育,我以为单靠项目+博客的形式,不足以使学生充分学习和体验工程化方法的每一个步骤。
我的项目和结对项目的难度有点大,时间也比较紧,自由度也比较低,感受不像是软件工程课的做业,而是编程课的做业。虽然在代码质量与代码测试方面学习到不少东西,但感受仍是应该选择一些需求比较模糊,而开发难度不是特别大的项目做为软工项目的题目。
另外,虽然课程上并无明确的限制,但不管是从给定的题目来看,仍是从各组最终选定的项目来看,项目的主题大多偏向于学习性质(特别是计算机学习),不少项目均把学生做为典型用户,有些项目的应用场景被限制在校园范围内。虽然这样的选择也有本身的道理,但考虑软件应用的普遍性,适当打开思惟,拓宽选题思路也何尝不可。
陈从文 pytorch神经网络概念知识,django的使用以及先后端交互和DEBUG的基本流程
了解了团队分工和软件开发的大体流程。
能够更多点实践知识少点理论知识,同时让助教参与到项目开发中。
许天立 软件开发的技能不少是我以前从没接触过的。好比说咱们此次用的django这个框架,我在这以前就历来没用过,也没接触过任何一种框架。而现有的框架那么多,更新换代那么快,也不能说精通全部的框架,这个时候,学习能力很重要,alpha阶段,我最大的收获可能就是自学的能力

2. Beta阶段大致计划

在接下来的版本中,咱们会更多地花时间去支持更多模型的搭建、丰富产品内容、提高用户体验。

包括\(\alpha\)阶段但愿实现而还没有实现的:

  • 支持网络封装成基本模块
  • 经典模型(如U-Net, ResNet, AlexNet, VGG-16等)

已经实现还能够进一步改进的:

  • 更精美的可视化
  • 帮助文档的撰写

以及须要在将来实现的:

  • 模型的本地部署与在线运行
  • 集成tensorboard可视化
  • 模型分享与交流
  • 模型参数分析与可视化

\(\beta\)阶段,咱们会继续努力,争取完成以上预约的目标,提供一个尽量实现的最好的产品

相关文章
相关标签/搜索