项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 技术规格说明书
我们在这个课程的目标是 远程协同工作,采用最新技术开发软件
这个作业在哪个具体方面帮助我们实现目标 确定项目技术,制定技术规格

目前的最新版可以trace我们的石墨文档链接

技术栈

我们的任务有模式识别(OCR),数据云服务等多个技术需求,总体上采取了前后端分离的设计,应对可能产生的发布在多平台的场景.

后端框架

Django,考虑到手机用户的跨平台性,以及开发效率与成员的技术栈,我们选择了Django.

数据库

由于后端框架选择的是Django,经过初步调研,我们选择了适宜于与Django配套使用的Postgresql作为主数据库。在后续开发过程中,如有必要,我们可能会加入如MySQL之类的数据库作为辅助。

前端框架

可能会选择React或者是vue.js,这一块可以考量一些表格显示方面比较优秀的框架。

移动端开发

为了尽可能地与前端开发共享技术栈,降低开发难度,我们选择ReactNative作为移动端开发的框架

web引擎

如果有必要,可以选择使用nginx.

云环境

当前的云环境:学校的华为云环境

可能需要的云环境:

  1. 内容分发网络服务CDN: 用户资源相关
  2. 云Postgresql数据库

技术如何体现设计原则

抽象原则

  1. 底层数据抽象化

    • 把底层数据表单数据抽象化,原始图片(origin)和JSON格式的格式化数据(json)、以及Excel格式数据(excel)是这个表单数据的多个层次。
    • 考虑到可能一个用户有针对单一表单的OCR需求,和多个表单联合的OCR需求,我们要开发不同层次的接口应对不同粒度的需求
  2. 数据行为模块化
    • 考虑不同的行为,基于需求类型进行分类
    • 不同行为的需求划分在不同的区域内
    • 定义一些数据的预处理、后期处理操作

内聚与解耦合

采用前后端分离,采用Restful API就已经很好地体现了这一点。

信息隐藏和封装

我们认为信息隐藏需要做到:

  1. 前后端信息分离

  2. 用户无法直接访问与修改核心数据

我们应该通过接口与规格的约束,使得类和成员的可访问性最小。各种语言中提供了包、protect、private等等来限制访问权限,一些开源框架也有类似的作用。

目前,我们打算前后端通过Restful API进行交互,从而实现信息隐藏。

界面和实现分离

  1. 后端实现提供Restful API,前端通过访问特定的API完成相应的操作
  2. 前后端通过json进行交互,双方均可处理并具有可扩展性
  3. 前端进行同一化的视图层的管理, 易于更改. 不需要再去后端代码中分离.

错误处理

考虑到后端和前端的交互通过Restful API进行,我们选择使用HTTP状态码作为错误分类方式。

HTTP状态码 表述的含义
400 请求参数有误,调用存在语义错误
401 用户未登录,请求身份验证
403 权限不足
404 请求路径错误
405 请求方法错误
413 请求实体过大,超出服务器的处理能力。 如上传图片尺寸过大
500 服务器内部错误、后端遇到了无法处理或者未捕获的错误

除了HTTP状态码以外,我们还在Body中的json信息加入一项status_code,用于更详细地描述错误。

软件运行的一些相关性假设

  1. 用户提供的都是表格数据、对于非表格数据,可以后续做一些误识别处理
  2. 用户提供的可合并表格具有可合并性,不可合并的表格需要定义一下行为
  3. OCR后的数据不一定是完整的表格数据、需要支持用户对表格数据的快捷修改

如何灵活应对变化

  1. 后端处理相关的操作,将提供多个粒度的Restful API,将方便应对不同的应用需求
  2. 扁平化的设计策略,避免多个业务逻辑直接耦合

大量数据的处理能力

  1. 读写和数据库分离:考虑到我们这边的需求比较简单,很难产生疯狂的需求压力,我们会在测试后考虑是否需要做分离操作。
  2. 数据上云:
    • 前端资源可以考虑cdn分流静态资源、减轻服务器压力
    • 用户的数据将及时备份到远端数据库,便于用户在其他设备上访问数据

[no_code]OCR表格处理——技术规格说明书的更多相关文章

  1. [no_code]OCR表格处理——功能规格说明书

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 功能规格说明书 我们在这个课程的目标是 远程协同工作,采用最新技术开发软件 这个作业在哪个具体方面 ...

  2. (Alpha)Let's-技术文档(技术规格说明书)

    技术规格说明书 抽象 首先,对抽象原则的理解,“抽象”这一概念本身就很抽象.抽象体现的是一种概括能力.我们生活中遇到的很多客体,其在某些方面具备有一些相似甚至相同的性质,以这些特点而非事物本身来认识鉴 ...

  3. 【Alpha】技术规格说明书

    由于第1周已经写过技术规格说明书(设计文档),本周更新了上一版内容. Github地址:https://github.com/buaase/Phylab-Web/blob/master/docs/Ba ...

  4. [V1-Team] WEDO创意论坛技术规格说明书

    WEDO 创意论坛技术规格说明书 0x0 文档版本 版本号 说明 v1.0 初步确定技术路线 附Github仓库:WEDO 0x1 技术说明 1. 前端框架   在主流的前端框架中,我们调研了Vue. ...

  5. [软件工程基础]PhyLab 技术规格说明书

    由于暂不对后端有所改变,因此该部分技术规格说明书复用 Default 的技术规格说明书. 由于现阶段对于 Laravel 框架不熟悉,以及对于是否使用已有的轮子或者造轮子实现预想的功能还不清晰,因此暂 ...

  6. 【近取 key】技术规格说明书

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 技术规格说明书 我在这个课程的目标是 进一步提升工程化开发能力,积累团队协作经验,熟悉全栈开发流程 ...

  7. 【BUAA软工】技术规格说明书

    项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:技术规格说明书 技术规格说明书 宏观技术 后端 WEB服务器 WEB服务器选取的是Springboot,作为当下Java语言最主流的WE ...

  8. [no code][scrum meeting] Alpha 3

    项目 内容 会议时间 2020-04-07 会议主题 技术规格说明书review 会议时长 1h30min 参会人员 产品经理+后端技术组长(伦泽标)+OCR竞品调研成员(叶开辉)+架构文档负责(黎正 ...

  9. [no code][scrum meeting] Alpha 2

    项目 内容 会议时间 2020-04-07 会议主题 功能规格说明书review 会议时长 30min 参会人员 OCR组(肖思炀,赵涛)和产品经理 $( "#cnblogs_post_bo ...

随机推荐

  1. Linux - centos7.X 安裝 Python 3.7

    说明 全部操作都在 root 用户下执行 安装编译相关工具 yum -y groupinstall "Development tools" yum -y install zlib- ...

  2. 记一次《C语言踩内存》问题定位有感

    踩内存问题,个人认为算是比较容易出现但是有很难定位的问题,被踩者轻者功能瘫痪,重者一命呜呼,直接诱发死机.产生踩内存的的原因也比较多样,比较典型的有如下几种: 数组越界访问 字符串越界操作 直接操作野 ...

  3. Abp Vnext3 vue-admin-template(三获取用户信息)

    因为获取用户比较简单,只需要把用户名及头像地址赋值即可(也许理解错误,如果发现请告知谢谢), 首先将src\api\usr.js中的url请求地址改为以下代码 export function getI ...

  4. Java XXE漏洞典型场景分析

    本文首发于oppo安全应急响应中心: https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247485488&idx=1&am ...

  5. Java-SpringBoot整合SpringCloud

    SpringBoot整合SpringCloud 1. SpringCloud特点 SpringCloud专注于为典型的用例和扩展机制提供良好的开箱即用体验,以涵盖其他情况: 分布式/版本化配置 服务注 ...

  6. FastAPI(4)- get 请求 - 路径参数 Path Parameters

    什么是路径 假设一个 url 是: http://127.0.0.1:8080/items/abcd 那么路径 path 就是 /items/abcd 路径参数 就是将路径上的某一部分变成参数,可通过 ...

  7. 255 day03_List、Set、数据结构、Collections

    day03 [List.Set.数据结构.Collections] 主要内容 数据结构 List集合 Set集合 Collections 教学目标 [ ] 能够说出List集合特点 [ ] 能够说出常 ...

  8. 安卓使用讯飞sdk报错

    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.iflytek.cloud.SpeechSy ...

  9. [CSP-J2020] 优秀的拆分

    [CSP-J2020] 优秀的拆分 难度:普及- 题目描述 一般来说,一个正整数可以拆分成若干个正整数的和. 例如,1=1,10=1+2+3+4 等.对于正整数 n 的一种特定拆分,我们称它为&quo ...

  10. ECSHOP产品内容页新增上传功能

    第一步:在 admin\templates\goods_info.htm中 <span class="tab-back" id="article-tab" ...