项目 内容
这个作业属于哪个课程 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. MacOS开启PPTP协议

    ​ 开启PPTP协议: Mac OS X 系统默认开启了完整性保护(System Intregrity Protection,SIP),所以即使是root帐户也无法修改系统目录中的文件.如果需要修改受 ...

  2. 全网唯一正常能用的centos7 安装mysql5.7.35 22 33 25

    CentOS7.4用yum安装并配置MySQL5.7   1.配置YUM源 下载MySQL源安装包 wget http://dev.mysql.com/get/mysql57-community-re ...

  3. 使用@EnableConfigurationProperties注册配置Bean时的命名规则

    Spring和Spring Boot开发中,常使用@ConfigurationProperties注解某个类,使其实例接受一组具有相同前缀的配置项. 可以使用@Component或Java Confi ...

  4. 进程代数CSP基础知识总结(Communicating sequencing process)

    进程代数(Process Algebra) Process Algebra 理论 提出者 理论名称 缩写 论文链接 简介 C. A. R. Hoare/Tony Hoare Communicating ...

  5. promise入门基本使用

    Promise入门详解和基本用法   异步调用 异步 JavaScript的执行环境是单线程. 所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任 ...

  6. 猪齿鱼 SaaS 版效能平台发布

    ​日前,猪齿鱼Choerodon全场景效能平台Saas版发布,提供体系化方法论和协作.测试.DevOps及容器工具,帮助企业拉通需求.设计.开发.部署.测试和运营流程,一站式提高管理效率和质量.从团队 ...

  7. 我爬取交通学博士付费的GIS资源,每年被动收入2w很简单?

    目录 1.背景介绍 2.技术路线 3.数据结果 4.数据分析 5.总结 6.后记 1.背景介绍 某周末闲来无事,顺手打开了CSDN,看到了一个人发布的收费GIS资源,售价是¥19.9,POI数据也有人 ...

  8. java中避免集合死链调用

    目录 1. 前言 2. 场景 3. 环境 3.1 开发环境准备 3.2 数据准备 3.2.1 Mysql数据库表及数据 3.2.2 redis库数据 4. 解决方式 5.完整代码 5.1Model 5 ...

  9. Windows 10 64位操作系统 下安装、配置、启动、登录、连接测试oracle 11g

    一.下载oracle安装包 1:详细下载安装版本可见官网:https://www.oracle.com/technetwork/database/enterprise-edition/download ...

  10. Appium调试分析方法

    在使用appium做自动化测试的时候,发现用例报错,如何排查原因? 查看appium日志 appium日志大概是分为以下部分 culr命令调试 在理解appium协议的基础上,可以直接用shell发送 ...