项目 内容
这个作业属于哪个课程 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. Python习题集(十二)

    每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 请写一个函数fin ...

  2. Linux proc文件系统小记

    序言: 当linux系统存在多个网口时(也可以是一个网口配置两个IP),每个网口配置不同的IP地址,并且分别连接到不同的电脑上,电脑分别配置与相连的网口统一网段的IP且将电脑网关设置为linux的网口 ...

  3. MySQL实战45讲(06--10)-笔记

    目录 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍? 全局锁 表级锁 小结 07 | 行锁功过:怎么减少行锁对性能的影响? 死锁和死锁检测 08 | 事务到底是隔离的还是不隔离的? &quo ...

  4. 解决git bash闪退问题 报openssl错误

    问题描述:今天安装git之后发现Git Bash工具闪退. 于是试了各种办法之后,最后终于解决. 背景描述:git 下载地址:https://git-scm.com/download/win 下载成功 ...

  5. 反转链表middle

    eg: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出:[1,4,3,2,5]相关解法:图解: /** * Definition for singly-li ...

  6. STM32,下载HAL库写的代码后J-Link识别不到芯片,必须要按住复位才能下载?

    问题描述:最近在学STM32的HAL库,据说可以统一STM32江湖,前途无量.最近一段时间参照STM32CubeMX和原子的资料自己学着建了两个HAL库的工程模板,F4的还好说,F1的出现了一个玄学问 ...

  7. 简单学习PHP中的层次性能分析器

    在 PHP 中,我们需要进行调试的时候,一般都会使用 memory_get_usage() 看下内存的使用情况.但如果想看当前的脚本 CPU 的占用情况就没有什么现成的函数了.不过,PHP 也为我们提 ...

  8. 关于config配置问题

    RabbitMq程序需要配置 <runtime>    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1&q ...

  9. windows10 安装配置 jmeter 自动化接口测试 邮件报告

    1.安装依赖包:JDK(版本:jdk-7u17-windows-x64) 双击即可安装,注意:jdk不要安装中文路径下,jdk和jre安装在同一路径下 1.1:配置jdk环境变量 (1)JAVA_HO ...

  10. JMeter主要元件

    配置元件 http cookie管理器 http信息头管理器 http请求默认值 统一管理 快速切换测试环境 http cache管理器 静态资源 监听器元件 查看结果树 分析查看某个请求的详情 请求 ...