离线签名真伪鉴别系统的系统设计方案

离线签名真伪鉴别系统的系统设计方案

一、项目介绍

​ 本文是针对签名真伪鉴别系统中涉及的软件架构、接口设计、层次化结构、数据库设计的分析和总结,项目的设计方案主要是通过模块间的依赖视图、类间泛化视图及用例的时序图来描述。

​ 工程实践项目简介:项目主要是针对目前手写签名鉴别领域采用人为鉴别的方式存在准确率不高且效率低下等问题,设计了基于深度神经网络技术的离线手写签名鉴别系统,以达到快速鉴别真伪签名的同时,能够非常准确地鉴别出随机伪造的签名,比较准确的检测出高水平伪造签名的目的。系统集签名图片上传、签名鉴别、鉴别结果展示功能于一体,达到对签名进行高效鉴别的目的,实现自动化,智能化和节约化的设计目标。达到图片即时上传、系统自动检测、检测结果即时返回的最终目标。

二、系统架构风格

​ 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。大型网站架构中也采用分层结构,将网站软件系统分为应用层、服务层、数据层。通过分层,可以更好地将一个庞大的软件系统切分成不同的部分,便于分工合作开发和维护;各层之间具有一定的独立性,只要维持调用接口不变,各层可以根据具体问题独立演化发展而不需要其他层必须做出相应调整。

​ 本项目整体展示网站采用Django框架进行开发,Django框架遵循典型的的MVC 架构,Model(模型)代表一个存取数据的对象及其数据模型;View(视图)代表模型包含的数据的表达方式,一般表达为可视化的界面接口;Controller(控制器)作用于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图与模型分离开解耦合,方便人员分工合作进行系统的开发。

image-20201229184740249

​ 上图所示的基于MVC架构设计的系统中,用户通过在浏览器端访问前端页面,并在页面中向服务器端提交用户请求。该请求会提交到相应的Controller中,Controller调用Model层进行业务处理,Model层处理后再将处理后的结果层层返回到用户界面上。

​ 本系统采用的Django是一种遵循MVC开发模式的框架,其各层次之间数据流通方向如下图所示,其中models.py中定义的各种类代表数据模型(Model)、和数据库引擎交互、执行数据库数据的存取操作; templates文件夹中的各个模板文件代表视图(视图),负责数据内容的显示;urls.py中定义的各种url访问入口和views.py中定义的各种处理函数(称为Django视图函数)代表控制器(Controller),其中的urls.py可以根据用户输入的url请求,调用views.py中相应的函数与数据模型和视图交互,响应用户的请求。基于Django的Web应用开发活动由于主要集中在models.py、templates文件夹中的各模板文件以及views.py之内,因此Django的开发模式通常也称为MTV开发模式。

image-20201229211506321

Django框架处理请求的过程大致如下图所示:

  1. 浏览器发送请求(基本上是字节类型的字符串)到web服务器。

  2. web服务器(比如,Nginx)把这个请求转交到一个WSGI(比如,uWSGI),或者直接地文件系统能够取出一个文件(比如,一个CSS文件)。

  3. 不像web服务器那样,WSGI服务器可以直接运行Python应用。请求生成一个被称为environ的Ptyhon字典,而且,可以选择传递过去几个中间件的层,最终,达到Django应用。

  4. URLconf中含有属于应用的urls.py选择一个视图处理基于请求的URL的那个请求,这个请求就已经变成了HttpRequest——一个Python字典对象。

  5. 被选择的那个视图通常要做下面所列出的一件或者更多件事情:

    1. 通过模型与数据库对话。
    2. 使用模板渲染HTML或者任何格式化过的响应。
    3. 返回一个纯文本响应(不被显示的)。
    4. 抛出一个异常。
  6. HttpResponse对象离开Django后,被渲染为一个字符串。

  7. 在浏览器见到一个美化的,渲染后的web页面。

    img

三、接口设计风格

​ 系统在设计的时候,除了要考虑系统所采用的的架构外,系统各层次之间接口的设计也尤为重要,一个简洁清晰的接口往往能够在方便调用者使用的同时也利于后端开发人员理解并实现其具体功能。而一个好的接口设计往往能够对系统的各个层次进行解耦,从而便于系统的功能划分。

​ 本系统所设计的接口符合restful风格的API设计规范,即“动词+宾语”的结构组成的数据指令,主要涉及登录、注册、鉴别图片和对比图片等功能。

image-20201229220420723

四、系统概念原型视图

​ 分解是构建软件架构模型的关键步骤,常见的分解方法有:

​ • 面向功能的分解方法,用例建模即是一种面向功能的分解方法;
​ • 面向特征的分解方法,根据数量众多的某种系统显著特征在不同抽象层次上划分模块的方法;
​ • 面向数据的分解方法,在业务领域建模中形成概念业务数据模型即应用了面向数据的分解方法;
​ • 面向并发的分解方法,在一些系统中具有多种并发任务的特点,那么我们可以将系统分解到不同的并发任务中(进程或线程),并描述并发任务的时序交互过程;
​ • 面向事件的分解方法,当系统中需要处理大量的事件,而且往往事件会触发复杂的状态转换关系,这时系统就要考虑面向事件的分解方法,并内在状态转换关系进行清晰的描述;
​ • 面向对象的分解方法,是一种通用的分析设计范式,是基于系统中抽象的对象元素在不同抽象层次上分解的系统的方法。

​ 在本项目中根据功能进行分解可以得到本项目的分解视图:

image-20201230002139107

​ 系统各层次间的依赖关系图为:

image-20201230010401998

​ 系统各个模块之间存在一般化和具体化之间的关系,这样的划分能够更加准确的描述各功能模块之间的抽象层次,从而便于软件系统的开发和维护。本系统中各个主要功能模块之间的泛化关系如下:

image-20201230013520775

​ 执行视图如可以通过流程图得以展现,流程图明显的展现了系统运行时的时序结构特点,从而对系统整体的业务逻辑有较为直观的体现。签名真伪鉴别系统完成手写签名真伪鉴别的执行视图为:

image-20201230011126999

​ 部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。本系统的部署视图如下:

image-20201230015506964

​ 实现视图是描述软件架构与源文件之间的映射关系,这样典型的实现视图就可以由软件项目的源文件目录树来呈现。系统的实现视图如下:

目录解释:

目录 用途
login 存放处理业务逻辑的相关源码
media 存放CSS、JavaScript和网页图片等网站静态数据
model 存放神经网络模型源码及其权重文件
signature 存放项目的url映射文件等配置信息
templates 存放用于网站前端展示的html文件信息
venv Django框架所依赖的相关库文件和包

​ 工作分配视图用于将系统的研发工作分解成几个可独立完成的工作任务,便于将工作任务分配给各个项目团队和成员。工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在项目团队和成员之间合理地分配和调整项目资源,甚至在项目计划阶段,工作分配视图对于进度规划、项目评估和经费预算都能起到有益的作用。

本项目组共有3个团队成员,工作分配视图如下:

五、核心数据库设计

​ 在签名真伪鉴别系统中,主要有4类实体,用户类存储的是已注册在该系统上的用户基本信息,管理员类是用户类的子类,继承了用户类的属性和方法。图片类记录每一张图片的格式,文件名和上传者信息,且用户和图片之间存在一对多的联系,一位用户可以上传多张图片,而一张图片只能属于一位用户。模型类记录的是网络模型的输入格式、创建时间等基本信息。这四类实体对应于数据库表的设计如下:

1.用户

序号 字段名 数据类型 描述
1 userName String 用户名称
2 userId String 账号
3 password String 用户密码
4 sex String 性别
5 phone String 联系电话
6 email String 注册邮箱
7 registerDate Date 注册日期

2.管理员

序号 字段名 数据类型 描述
1 userName String 用户名称
2 userId String 账号
3 password String 用户密码
4 sex String 性别
5 phone String 联系电话
6 email String 注册邮箱
7 registerDate Date 注册日期
8 privileges String[] 管理权限

3.图片

序号 字段名 数据类型 描述
1 fileName String 文件名称
2 fileType String 文件格式
3 uploaderID String 上传者账号
4 uploadTime Time 上传时间

4.模型

序号 字段名 数据类型 描述
1 inputSize String 图片输入格式
2 modelVersion String 模型版本
3 uploadDate Date 创建时间
4 owner Administrator 所属用户

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

运行环境:本系统部署在服务端的Linux平台上,用户可以在本地计算机通过浏览器进行访问。
数据库:本系统采用Django框架自带的sqlite数据库,该数据库在速度、安全性、可靠性上都是较好的选择。
开发语言:Python具有简单性、动态性等特点,对于快速开发具有较大的优势。
前端框架:Bootstrap
后端框架:Django
神经网络编程框架:PyTorch

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

​ 在该项目中,普通用户登录系统进行签名真伪鉴别的工作流程可以描述为:用户登录系统,选择签名真伪鉴别选项,跳转到相应页面后点击上传图片按钮,选择要上传的图片,等待图片上传完成。系统提示上传完成后自动完成真伪鉴别并将鉴别结果返回用户界面,用户可以点击下载按钮将检测结果保存到本地计算机上。

​ 管理员角色拥有比普通用户更大的权限,可以实现对用户信息的管理。对用户信息进行管理的工作流程可以描述为:当管理员登录系统后,点击用户信息管理按钮,系统将列出所有的用户信息,管理员对数据进行相应的操作后可以选择将修改后的数据保存到系统中,当管理员完成对系统信息的管理后则可以选择退出系统或继续修改用户信息等操作。

posted @ 2020-12-30 11:43  Coulson123  阅读(277)  评论(0编辑  收藏  举报