软件功能模块的MVC实现.docx
- 文档编号:1912560
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:10
- 大小:57.93KB
软件功能模块的MVC实现.docx
《软件功能模块的MVC实现.docx》由会员分享,可在线阅读,更多相关《软件功能模块的MVC实现.docx(10页珍藏版)》请在冰豆网上搜索。
软件功能模块的MVC实现
一、软件模块MVC实现
1.1软件项目是由模块组成
1.1.1软件是由其模块组成
在软件开发中,最终需要生产出“软件”产品。
但开发出的“软件”是由功能“模块”组成。
根据定义,所谓的软件“模块(module)”是在程序设计中,为完成某一相对独立功能所需的一段程序或子程序;也可以指是某大型软件系统的一部分。
前面我们编写的“用户管理”,我们编写了用户信息的“列表查询”功能,那么“列表查询”是用户管理软件的一个功能模块。
如果我们对“用户”信息进行管理,还需要有:
“新增用户信息”、“修改用户信息”、“删除用户信息”操作。
那么,“新增用户信息”、“修改用户信息”、“删除用户信息”均是“用户管理”的模块,也称功能模块。
我们可以用软件功能模块结构图表示它们的关系。
例如,“用户信息管理”的模块组成由下图所示,该图不但表示了其功能模块的组成,而且表示了其模块结构的设计。
图1用户信息管理的功能“模块”组成结构
1.1.2软件项目开发是以模块为单位进行
我们在软件开发时,或者在编码时,不是无序地进行的,往往是以模块为单位进行的。
例如:
用户信息管理包括:
新增用户信息、修改用户信息、删除用户信息、查询用户信息等模块。
我们在程序编码时,就分别对它们一个一个进行。
【案例1-1】完整实现“用户信息管理”模块中新增、修改、删除、查询功能,并使它们在一个统一界面中操作
根据分析与设计,“用户信息管理”中有新增用户信息、修改用户信息、删除用户信息、查询用户信息子模块。
每一个模块有自己的操作界面、自己的访问数据库操作方法、还有自己的控制器,然后将它们通过主界面集成起来。
这样就完成了该案例要求的软件功能模块的开发。
在主界面上,对各个子模块的操作链接进行布局,用户操作后再返回到该主界面。
而每个模块分为界面、逻辑处理、控制器组成,分别由JSP、Javabean、Servlet实现。
1.1.3“用户信息管理”程序结构简介
在对软件进行设计时,如果以“程序”的观点进行组织与管理则程序会非常多、类型也不同,与应用业务的关系不紧密,所以管理起来非常困难。
但在开发软件时,要克服“以程序为单位”的编程思想,而要“以模块为单位”进行开发;即先划分模块,然后再将每个模块分解成不同的程序文件,则会比较有秩序。
例如:
用户信息管理包括:
新增用户信息、修改用户信息、删除用户信息、查询用户信息等模块,则程序文件以这些模块分为不同的类型。
用户信息管理本身是一个模块,而其又是由子“功能模块”组成,而各模块又是由多个程序文件组成。
而每个功能模块又是由:
界面、逻辑处理的Java类、
Servlet组成。
这三个部分分别表示:
视图、模型、控制。
视图表示:
用户看到的界面;模型表示:
业务数据和业务规则;而控制表示:
接受用户的输入并调用模型和视图去完成用户的需求。
现在,将一个软件“模块”,分解为:
视图、模型、控制器来分别编码,是一种广泛流行与应用的设计模式,即:
MVC设计模式(Model-View-Controller,Model-模型,View-视图,Controller-控制器)。
1.2基于MVC设计模式软件开发概述
1.2.1MVC设计模式概述
所谓的设计模式是一套被反复使用、成功的设计总结与提炼。
而MVC设计模式是将软件的代码分为M、V、C三层来实现的一种设计方案。
MVC全名是Model-View-Controller的缩写,分别表示:
M模型(Model)-V视图(View)-C控制器(Controller),它一种软件设计典范。
它采用业务逻辑和数据显示代码分离的方法,并将业务逻辑处理放到一个部件里面,而将界面、以及用户围绕数据的展开的操作单独被分离出来。
MVC类似于传统软件开发中模块的
输入、处理和输出功能,集成在一个图形化用户界面的结构中。
1.视图(View)
视图是用户看到并与之交互的界面。
对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括AdobeFlash和像XHTML、XML、WML等一些标识语言。
JSP作为动态网页常常充当Web应用的视图。
2.模型(Model)
模型表示业务数据和业务规则。
在MVC的三个部件中,模型拥有最多的处理任务。
例如它可能封装数据库连接、业务数据库处理这样的构件,这样一个模型能为多个视图提供数据。
由于应用于模型的代码只需写一次就可以被多个视图重用,所以能提高代码的重用性。
模型一般用JavaBean技术实现。
3.控制器(Controller)控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。
它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
1.2.2MVC设计模式的优缺点
作为一种设计模式,MVC即有很多好处,但也有一些缺点。
1.MVC的优点
MVC的优点表现在:
耦合性低、重用性高、可维护性高、有利软件工程化管理等。
2.MVC的缺点
由于MVC内部原理比较复杂,理解起来并不很容易。
所以,在使用MVC时需要精心的计划、需花费一定时间去思考。
所以,MVC有调试较困难、不利于中小型软件的开发、增加系统结构和实现的复杂性等缺点。
1.3软件项目功能模块分解与设计
以一个学生管理系统软件的开发为例,介绍软件功能模块的分解及实现。
1.3.1学生管理系统软件项目的开发
某高校需要通过“学生管理软件系统”对学生的相关信息进行计算机管理。
本章以该项目为引导案例,介绍软件的一个模块的MVC模式的开发。
围绕学生的信息有许多,包括:
学生基本信息、学生学习信息等。
而学生的学习信息与教师信息、课程信息相关联。
为了简单起见,我们暂时以上述信息的管理为主,介绍其功能的分解与实现。
我们简单地将该软件分解为如下几个模块:
1、学生信息管理
2、教师信息管理
3、课程信息管理
4、学生成绩管理
为了说明用Jsp+Servlet+JavaBean技术实现MVC方式的开发,我们以“学生信息管理”模块的实现为案例进行MVC实现介绍。
1.3.2功能模块分解
为了技术说明清楚,本项目实现的功能非常简单。
本软件分解为四大模块,分别对教师信息、学生信息、课程信息、成绩进行管理。
而学生信息只包括:
编号、姓名、性别、班级、年龄、成绩6个。
图2给出了该软件的模块结构的分解与设计。
图2学生管理软件模块设计结构图模块:
教师信息管理、学生信息管理、课程信息管理的实现技术基本相同,下面只以一个模块“学生信息管理”为例,介绍该模块基于MVC的实现。
【案例2】对“学生信息管理”模块进行MVC设计模式的程序编码与功能实现。
并对该功能的软件设计内容进行表示。
实现思路:
本案例技术上与要求同案例1,但是学生信息比较多,包括:
学号、姓名、性别、班级、成绩等。
其功能子模块可从图3中可以看出,即“学生信息管理”模块包括如下子模块:
1)学生信息显示,包括:
单个学生信息显示、学生信息列表显示两种
2)学生信息新增
3)学生信息修改
4)学生信息删除
1.4模块模型层的优化
上述案例2中模型层中所有的类均有一个共同点,即均是对学生信息的操作,最终落实到对同一数据库表student的操作;其次,创建数据库连接等数据处理代码相同,这些均可以放到一起共用,从而优化模型的处理程序。
可以不改变视图层的情况下,对模型层进行优化。
即通过一个Java类存放对数据库表的增加、删除、修改、查询操作的方法,并且这些方法中的逻辑处理代码不需作任何改变。
【案例3】优化学生管理模块,使其模型层的类均放在一个Java类程序文件中。
由于对“学生信息管理模块”代码这些程序代码有许多共同的特征,则将它们的方法合并到一个类中。
这个类取名StudentModel.java,用以存放对“学生信息管理”相关的各处理方法。
这样,就使得程序代码优化简洁,今后以此原则将不同的处理放到不同的模块处理模型中,整个程序结构比较合理。
、软件集成
2.1问题的提出
前面介绍了一个功能模块的MVC实现。
但是一个软件是由许多模块组成,这些模块在运行时可能互相交互,它们的关系有可能很复杂。
如果我们没有一个好的操作界面与组织模式,那么这个软件会很不好使用。
另外,当软件的各个模块开发好后,也需要将它们组装在一起形成一个整体,即完整的软件的实现。
这个工作就是软件的集成或称软件的组装。
软件的集成是软件开发的一个重要任务。
2.1.1软件项目的功能模块分解
模块化原则是软件设计的重要原则之一。
也就是说,在软件开发时一般要对软件进行模块化。
即在设计时,需先将软件分解成不同的模块,这些模块的功能能构成软件的整体功能。
然后在编码时对这些模块一个一个地实现,最后通过集成将它们组成这个完整软件。
模块化体现了将大事化小,然后各个击破的做事原则。
例如,高校学生管理系统不但包括学生信息,还包括教师信息、课程信息和学习成绩信息。
那么在该软件的开发时就需要将它们分解为不同的模块。
这些模块构成了学生管理系统(如图1所示)。
图1学生管理系统模块组成
图1中示意了一个软件的模块分解,分解后的模块还可以如此分解下去,直至程序员能理解如何做为止(见对学生信息管理的进一步分解)。
如此对要开发的软件进行模块分解,就是所谓的模块化。
软件模块化是软件设计阶段应做的事情。
2.1.2软件的模块集成
软件的模块化是为了将大问题变成小问题然后一个一个去实现这些小问题。
软件各功能模块的分解完成后,就可以对这些模块分别进行实现。
这些模块是相对独立的软件,在实现过程中可以单独进行编码与单元测试。
当这些模块编码完成并通过单元测试后,就可以放在一起运行。
这个过程就是所谓的软件集成。
由于在软件模块的开发过程中,只是局部功能的实现,它们在一起的相互操作没有运行过,只是在单元测试阶段模拟了互相调用的测试,所以当它们在一起的时候是否能按设计要求运行,也需要进行集成后的测试。
其实,最终软件是要通过集成完整软件的组装,完成软件的开发任务。
2.1.3软件集成相关技术工作
如果软件设计得好,集成时只要将软件的各个模块代码复制在一起,就完成了集成工作。
但是软件集成是这么简单吗?
软件模块在集成前,可能需要一些公共的软件部件先部署好,即各个模块的一些共性的部分就需要先实现并在系统中支持各模块的运行。
比如:
上述各模块可能均要对数据库进行操作,那么获取数据库连接的处理,就可抽象处理作为一个公共部件,先开发出来并部署好。
如果每个模块都有自己的数据库连接获取的处理代码,这样既增加了软件的冗余度,也不利于今后代码的阅读与维护。
所以,在软件集成前,需要定义与部署软件各模块运行的技术支持,包括运行互相调用的运行环境与底层的技术支持部件。
这些部件提供了各个模块的公共系统部件,各个业务功能模块在设计时在满足了这些公共部件的接口要求后,集成时只要复制业务处理模块的代码(公共部分的代码不需要复制),就完成了集成工作。
总结上述提到的技术工作,包括如下几点:
模块运行的公共系统环境部件公共的底层技术支撑部件
这些工作是在所谓的软件架构时进行考虑与设计的,所以又称为软件总体架构设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 功能模块 MVC 实现