基于工程实践的软件系统设计

 一 工程实践介绍

  我的工程实践题目是MIP,即医学图像处理,目的是设计一种基于深度学习的通用病灶识别系统,该系统可以通过检测用户的输入,来得到具有对图像病灶处标注的最终图像;通常病人做好一系列临床上的检查后,医生需要人为的看片子,然后根据自身的知识和经验 来对病人的疾病情况做出判断,是比较耗时耗力的,如果可以把重点病灶标出,并给出相应的判断是否患病,将可以大大减少医生的诊断时间,可以提升较大的工作效率。

 

二 系统架构设计方案

 

  该工程实践系统架构主要分为两部分,一部分是训练模型,得到拟合程度较好的模型;第二部分就是将项目部署到服务器上,利用后端前端等技术使其呈现给用户,让用户更方便的使用该系统。总的来说类似于BS结构,B/S架构最大的优点是总体拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能 实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用,比较适合该项目使用。

  模型方面主要采用VGG16为骨干网络的fast-Rcnn,而网站开发采用Django框架进行前后端开发,而Django采用的是MVC模型,所以本工程实践的设计模式是MVC模式,具体图像如下。

 

 

 

  MVC即Model(模型) + View(视图) + Controller(控制器)。

  Model 是指模型表示业务规则,被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

  在本项目中的模型就是指我们利用深度学习算法得到的最终的网络模型:

        1 对用户输入的数据进行处理,得到信息

        2 将数据提供给视图。

        3 与数据库进行存取等操作。

  View是指用户看到并与之交互的界面。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。本项目是由html等元素组成的网页界面。

  Controller是指控制器,它接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

  由于我们现在还处于训练模型的阶段,对于API接口只是有了大概的设计,只涉及最主要的API接口且忽略了具体的参数。用户登入系统的时候,被提供的是登录接口 login();用户想要调用模型进行图像处理需要调用提供的process_image()接口;用户如果想得到最终的图像结果可以使用提供的get_image()接口;如果用户想要获得以往用户的结果,可以使用提供的get_history_res()接口。以上只是最重要最常用的接口。

 三 系统架构模型描述

 

  软件架构模型是通过一组关键视图来描述的,同一个软件架构,由于选取的视角不同可以得到不同的视图,常用的视图有分解视图,依赖视图,泛化视图,执行视图,实现视图,部署视图以及工作任务分配视图,下面通过不同的角度获得该项目的几种不同的视图。  

 

  1 分解视图

  分解视图是描述软件架构模型的关键视图,简单的说就是将系统按功能分解,形成几个子系统或者其他部分,每个子系统又包括了各自的功能。本系统中可以分解为登录系统,模型系统,数据库系统,查询系统。

  

 

 

 

 

  2 依赖视图

 

  依赖视图展示的是软件模块之间的依赖关系。

 

  本系统中,最终结果依赖于模型的处理,模型的处理依赖于图像的预处理,图像的预处理依赖于输入等等关系,依赖视图如下:

 

  

 

 

 

 

  3 执行视图

 

  执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体,如果有相似的执行实体,那么把他们合并成一个。

 

  基于本系统的执行视图如下:

 

  

 

 

  4 实现视图

 

   实现视图是描述软件架构与源文件之间的映射关系,一般通过目录和源文件的命名来对应软件架构中的包,类等静态结构单元。

  

 

 

  log是登录系统,model是模型系统,program_data和results分别代表处理前的数据和处理后的数据,query代表查询系统,下面的py文件主要是模型系统里面的代码,其他系统的功能尚且没有完善。

 

 

 

  5 工作分配视图

 

  工作分配视图将系统分解成可独立完成的工作任务,以便分配给各项目团队和成员,工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于各个项目团队和成员之间合理的分配和利用资源。

  本系统的工作分配视图如下

  

 

 

 

 

  四 数据库表设计

 

   

  

 

   

  

 

 

  五  软件系统运行环境和技术选型说明

  开发环境:python 3.6, Django 2.0.1, TensorFlow 2.0

  数据库:MySQL.8.0.21

  IDE : Pycharm

  技术选型: 模型采用VGG16为主干网络的fast-rcnn网络,加入了RoI用来提升网络性能;网站采用Django框架设计。

  

  六 系统概念原型的核心机制

  主要是两部分,一部分模型的训练;另一部分是模型的部署并设计使用的网站;前者采用数据集进行训练,得到一个模型以后,再通过调整参数获得最优模型,然后将其部署到服务器中;后者利用Django框架,利用BS架构使得用户即可通过web页面便可使用服务器上的模型为其提供功能。得到的处理后的数据将其存储到数据库中,以便下次用户查找和使用。

  七 小结

  通过这几次课程,学会了进行软件系统分析和设计,并将其实际运用在了自己的工程实践项目上,受益匪浅;做任何一个项目前最好都要有一定的规划,并且严格按照规划的步骤执行,不能想到一出是一出,可以达到事半功倍的效果。如何拥有在项目开发前设计好整个项目的流程,项目系统的结构的技能还需要在以后的码农生涯中逐渐养成与提高。

 

posted @ 2020-12-29 19:07  游忍  阅读(279)  评论(0)    收藏  举报