项目

内容

这个作业属于哪个课程

软件工程 罗杰

这个作业的要求在哪里

技术规格说明书

我们在这个课程的目标是

熟悉软件开发整体流程,提升自身能力

这个作业在哪个具体方面帮助我们实现目标

确定技术规格,撰写说明书

一、概述

  • 我们团队的目标是实现一个拖拽式编程的网站,即通过推拽图形、连线来搭建神经网络模型,返回pytorch的模型代码。在确定需求和功能后,我们通过网上调研学习,并且研究学长们之前的项目后,决定采用bootstrap作为前端主要开发框架,Django作为后端服务器开发框架。由于首次版本我们的目的在于实现核心推拽功能,因此数据库暂时选用MYSQL。

二、前端技术

  • 基本框架采用bootstrap,优点在于:扩展性强、有丰富的插件和组件、前端处理简洁、拥有大量的现成UI组件
  • 对图形的拖拽使用的是jquery-ui和jsplumb
  • 使用jquery中基础的js函数与后端通信
    bootstrap能够更好地与现实的web开发项目结合,它不断适应web技术的发展,不断成熟。在大量的项目中,bootstrap被进行了充分的使用和测试,拥有完善的文档,兼容各种脚本插件,接受定制。bootstrap为用户提供了一套响应式优先的流式栅格系统,拥有完备的框架结构。在此考虑基础上,我们的项目适合使用bootstrap实现前端。

三、后端技术

  • 由于需要用pytorch实现模型代码,因此pytorch的文档理解和基本的模型理解是必要的。我们安排了组员去理解pytorch的原理,实现图形到代码的核心功能。
  • Django的功能较为完善,同时部分组员有过使用Django的经历,因此后端框架采用Django,其拥有强大的后台功能以及模板系统,能够更好的帮助我们实现核心功能。
  • 用户数据的存储数据库暂定为MYSQL。

四、UI模块

技术规格书 java 技术规格书怎么写_连线

  • 图中的红色边框的长方形是画布。左边一栏是基本的图形结构,根据功能分类,可以在图形中加入label。
  • 将图形拖拽进入画布后,出现的四个点可以和其他图形进行任意的连接。
  • 在画布内的图形可以再经过鼠标的拖拽改变位置,同时可以删除画布内不需要的图形。
  • 可以自由更改或删除画布内的连线。

五、与pytorch的交互对接

  • 在此只罗列出关键方法的名称和作用

关键方法

作用

jsplumb.getConnections()

获得界面中连线两端的图形的id

save()

统计各个连线两端的图形,返回一个数组,包括各个图形的数目

http请求

请求后端的api接口,获得后端的数据

gen_pytorch_inputs()

根据传入的数据,处理输入层

gen_pytorch_convolution()

根据传入的数据,处理卷积层

gen_pytorch_concat()

根据传入的数据,处理拼接层

gen_pytorch_reshape()

根据传入的数据,处理reshape层

gen_pytorch_softmax()

根据传入的数据,处理softmax层

gen_pytorch_pooling()

根据传入的数据,处理pooling层

gen_pytorch_dense()

根据传入的数据,处理全连接层

pytorch_inputs()

存储输入层的代码,返回给前端(其他层相似,不再赘述)

六、运行环境

  • 该项目的运行基本要求是网络环境,但对浏览器没有特定的要求。前端使用的Bootstrap拥有完备的框架结构,具有和谐的整体效果,无论是火狐、谷歌、IE浏览器都是支持的。

七、错误处理

  • 对错误进行分类处理,目前定义的错误类型有:

错误类型

错误原因

OutofboundaryException

越界错误(例如图形的数量越界)

StoreException

保存模型代码出现错误

WronginterException

输入错误(例如画布中有未连接图形)

PyException

生成错误的模型

八、耦合以及应对变化的灵活性

  • 将接口和方法封装成对应函数,保证了独立性和耦合性。我们使用的bootstrap和django都是扩展性较好的框架,对于后续其他功能的实现并没有什么负担,如果对已有的核心功能进行加强和更新,也不会对接口进行更改,pytorch实现的模型代码也不会有变动。因此,对变化的灵活性应当是较好的。