软件系统设计方案------基于脱机/离线手写中文签名的智能检索系统

参考文件: https://gitee.com/mengning997/se/raw/master/ppt/软件科学基础概论.pptx

一、项目概述

  本项目基于ResNet 18 深度学习算法,搭建深度学习网络,实现一个签名检测系统,用户可在Web端根据输入的签名,从签名数据库中根据每个签名的相似度得到所有正确签。本系统包括签名图片上传,签名检索识别,输出结果功能,达到了从文件中检索出指定签名并根据相似度排序的目的,实现了自动化,智能化的设计目标。

二、项目架构设计

  项目完成之后,将会布置到服务器上,采用B/S架构设计,指游览器通过请求和应答的方式访问或者调用服务代码。在开发项目的时候,采用MVC三层架构。MVC是三个单词的首字母缩写,它们是 Model(模型)、View(视图)和 Controller(控制)。这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。
  1)最上面的一层,是直接面向最终用户的"视图层"(View)。View(视图)代表模型包含的数据的表达方式,一般表达为可视化的界面接口。它是提供给用户的操作界面,是程序的外壳。
  2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。Model(模型)代表一个存取数据的对象及其数据模型。
  3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。Controller(控制器)作用于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图与模型分离开解耦合。
  这三层是紧密联系在一起的,但又是互相独立的,每一层内部的变化不影响其他层。每一层都对外提供接口(Interface),供上面一层调用。这样一来,软件就可以实现模块化,修改外观或者变更数据都不用修改其他层,大大方便了维护和升级。
  基于MVC 模式的特点,本项目采用MVC架构进行软件开发,采用MVC架构可以使得项目前后端分离,前端只需要进行数据展示,而业务逻辑处理则由后端负责,这样减少了项目实现的复杂度。

三、API接口

接口地址 说明
index() 项目主页函数接口
login(username, password) 用户登录函数接口
register() 用户注册函数接口
logout() 用户退出系统函数接口
upload_pic(file_url) 用户上传图片函数接口
predict(file) 对待检测签名查找,并且返回相关签名所在位置函数接口
download(file) 选择相应的文件进行下载函数接口
model(model) 管理员对模型进行管理函数接口
user_management(username) 管理员对用户进行管理函数接口

四、软件系统概念原型

1、分解视图
  分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,一般分解视图呈现为较为明晰的分解结构(breakdown structure)特点。分解视图用软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。前述分解方法中已经明确呈现出了分解视图的特征。
分解视图

2、依赖视图
  依赖视图展现了软件模块之间的依赖关系。比如一个软件模块A调用了另一个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果一个软件模块依赖另一个软件模块产生的数据,那么这两个软件模块也具有一定的依赖关系。依赖视图在项目计划中有比较典型的应用。比如它能帮助我们找到没有依赖关系的软件模块或子系统,以便独立开发和测试,同时进一步根据依赖关系确定开发和测试软件模块的先后次序。依赖视图在项目的变更和维护中也很有价值,比如它能有效帮助我们理清一个软件模块的变更对其他软件模块带来影响范围。
依赖视图

3、泛化视图
  泛化视图展现了软件模块之间的一般化或具体化的关系,典型的例子就是面向对象分析和设计方法中类之间的继承关系。值得注意的是,采用对象组合替代继承关系,并不会改变类之间的泛化特征。因此泛化是指软件模块之间的一般化或具体化的关系,不能局限于继承概念的应用。而且泛化视图有助于描述软件的抽象层次,从而便于软件的扩展和维护。比如通过对象组合或继承很容易形成新的软件模块与原有的软件架构兼容。
泛化视图

4、执行视图
  执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件,都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把他们合并成一个。执行实体可以最终分解到软件的基本元素和软件的基本结构,因而与软件代码具有比较直接的映射关系。在设计与实现过程中,我们一般将执行视图转换为伪代码之后,再进一步转换为实现代码。
执行视图

5、实现视图
  实现视图是描述软件架构与源文件之间的映射关系。比如软件架构的静态结构以包图或设计类图的方式来描述,但是这些包和类都是在哪些目录的哪些源文件中具体实现的呢?一般我们通过目录和源文件的命名来对应软件架构中的包、类等静态结构单元,这样典型的实现视图就可以由软件项目的源文件目录树来呈现。
本项目还没有全部搭建完成,已完成的部分如下图所示:
实现视图

五、数据库设计

数据库设计

1、客户

序号 字段 字段类型 字段描述
1 user_id String 用户ID
2 user_name String 用户姓名
3 password String 用户密码
4 email String 用户邮箱
5 telephone String 用户电话

2、管理员

序号 字段 字段类型 字段描述
1 admin_id string 管理员ID
2 admin_name string 管理员姓名
3 password string 管理员密码

3、图片

序号 字段 字段类型 字段描述
1 image_id string 图片ID
2 image_name string 图片名
3 image image 图片

4、模型

序号 字段 字段类型 字段描述
1 model_id string 模型ID
2 model_version float 模型版本

六、软件系统运行环境和技术选型

  本项目前端页面采用目前较流行的前端页面框架VUE,后台服务器端基于python语言进行开发,核心部分采用Pytorch框架,数据库采用MySql,软件开发工具使用的是 PyCharm、Navicat。

七、系统概念原型的核心工作机制

1、概念与概念原型
  概念的定义即人对能代表某种事物或发展过程的特点及意义所形成的思维结论。因此我们可以得出概念原型的定义,其是一种虚拟的、理想化的软件产品形式,更加直观的来说,概念原型等于数据模型加上用例。而通过前文的分析我们可以总结出本项目的概念原型,同时对此概念模型的工作过程进行分析。

  概念原型是一种虚拟的、理想化的软件产品形式
  概念原型 = 用例 + 数据模型

2、概念模型的工作流程
  整个概念模型的工作过程为:在该项目中,用户首先需要登录本系统,如果未注册,那么则首先需要注册。在登录系统之后,用户可以上传待检测的文件以及指定人的签名,等待系统检索运行,等待一段时间后,即可通过系统自动找出所有类似于该签名的信息,用户即可点击下载按钮,下载检索信息,查看在该文档中,类似签名的情况以及分布位置。对于管理员来说:管理员可以对用户的信息进行管理,查看、删除已经注册的用户。其次,管理员可以对模型进行管理,当模型升级之后,管理员可以更换最新的模型,以给得用户最好的体验感。

posted @ 2020-12-30 13:11  i_simple  阅读(349)  评论(0)    收藏  举报