本文是针对签名真伪鉴别系统中涉及的软件架构、接口设计、层次化结构、数据库设计的分析和总结,项目的设计方案主要是通过模块间的依赖视图、类间泛化视图及用例的时序图来描述。
工程实践项目简介:项目主要是针对目前手写签名鉴别领域采用人为鉴别的方式存在准确率不高且效率低下等问题,设计了基于深度神经网络技术的离线手写签名鉴别系统,以达到快速鉴别真伪签名的同时,能够非常准确地鉴别出随机伪造的签名,比较准确的检测出高水平伪造签名的目的。系统集签名图片上传、签名鉴别、鉴别结果展示功能于一体,达到对签名进行高效鉴别的目的,实现自动化,智能化和节约化的设计目标。达到图片即时上传、系统自动检测、检测结果即时返回的最终目标。
分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。大型网站架构中也采用分层结构,将网站软件系统分为应用层、服务层、数据层。通过分层,可以更好地将一个庞大的软件系统切分成不同的部分,便于分工合作开发和维护;各层之间具有一定的独立性,只要维持调用接口不变,各层可以根据具体问题独立演化发展而不需要其他层必须做出相应调整。
本项目整体展示网站采用Django框架进行开发,Django框架遵循典型的的MVC架构,Model(模型)代表一个存取数据的对象及其数据模型;View(视图)代表模型包含的数据的表达方式,一般表达为可视化的界面接口;Controller(控制器)作用于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图与模型分离开解耦合,方便人员分工合作进行系统的开发。
上图所示的基于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开发模式。
Django框架处理请求的过程大致如下图所示:
系统在设计的时候,除了要考虑系统所采用的的架构外,系统各层次之间接口的设计也尤为重要,一个简洁清晰的接口往往能够在方便调用者使用的同时也利于后端开发人员理解并实现其具体功能。而一个好的接口设计往往能够对系统的各个层次进行解耦,从而便于系统的功能划分。
分解是构建软件架构模型的关键步骤,常见的分解方法有:
面向功能的分解方法,用例建模即是一种面向功能的分解方法;面向特征的分解方法,根据数量众多的某种系统显著特征在不同抽象层次上划分模块的方法;面向数据的分解方法,在业务领域建模中形成概念业务数据模型即应用了面向数据的分解方法;面向并发的分解方法,在一些系统中具有多种并发任务的特点,那么我们可以将系统分解到不同的并发任务中(进程或线程),并描述并发任务的时序交互过程;面向事件的分解方法,当系统中需要处理大量的事件,而且往往事件会触发复杂的状态转换关系,这时系统就要考虑面向事件的分解方法,并内在状态转换关系进行清晰的描述;面向对象的分解方法,是一种通用的分析设计范式,是基于系统中抽象的对象元素在不同抽象层次上分解的系统的方法。
在本项目中根据功能进行分解可以得到本项目的分解视图:
系统各层次间的依赖关系图为:
系统各个模块之间存在一般化和具体化之间的关系,这样的划分能够更加准确的描述各功能模块之间的抽象层次,从而便于软件系统的开发和维护。本系统中各个主要功能模块之间的泛化关系如下:
执行视图如可以通过流程图得以展现,流程图明显的展现了系统运行时的时序结构特点,从而对系统整体的业务逻辑有较为直观的体现。签名真伪鉴别系统完成手写签名真伪鉴别的执行视图为:
部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。本系统的部署视图如下:
实现视图是描述软件架构与源文件之间的映射关系,这样典型的实现视图就可以由软件项目的源文件目录树来呈现。系统的实现视图如下:
目录解释:
工作分配视图用于将系统的研发工作分解成几个可独立完成的工作任务,便于将工作任务分配给各个项目团队和成员。工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在项目团队和成员之间合理地分配和调整项目资源,甚至在项目计划阶段,工作分配视图对于进度规划、项目评估和经费预算都能起到有益的作用。
本项目组共有3个团队成员,工作分配视图如下:
1.用户
2.管理员
3.图片
4.模型
运行环境:本系统部署在服务端的Linux平台上,用户可以在本地计算机通过浏览器进行访问。数据库:本系统采用Django框架自带的sqlite数据库,该数据库在速度、安全性、可靠性上都是较好的选择。开发语言:Python具有简单性、动态性等特点,对于快速开发具有较大的优势。前端框架:Bootstrap后端框架:Django神经网络编程框架:PyTorch