宝鸡文理学院软件体系结构与案例分析实验报告
班级:2017级软件工程3班        姓名:刘 娜            学号:201796084054
实验题目
基于BS体系结构风格的图书管理系统
实验类型
设计型
实验地点
实验时间
实验教师
苏小会
实验技术人员
1、实验目的及要求
1、实验目的
设计并实现一个小型图书管理系统(以宝鸡文理学院图书馆的图书管理业务为例),完成 BS 风格的架构设计,掌握 BS 风格架构设计的过程和方法。
2、实验要求
(1)采用用例驱动的分析方法,分析需求的主要任务,识别系统中的参与者和用例,写出用例的文本,建立用例模型。
(2)根据1的结果,进一步建立领域模型(类图),完成静态模型的建立。
(3)结合某一种具体的框架(比如Java的JavaEE,Spring等)设计系统的架构,要求采用BS架构,用包图表达架构。
(4)根据1,2,3的结果设计各层包含的类,接口及其交互(类图,顺序图等),尽可能在设计中体现OO的设计原则,设计模式。
(5)完成图书管理系统的数据库设计。
2、实验内容
1、用户和管理员服务器端登陆账号
2、管理员能够录入图书信息,包括:图书编号、书名、ISBN、作者、出版社、出版日期、版次、定价、数量等;
3、管理员能够录入读者信息,包括:姓名、年龄、性别、借阅证号、身份证号、电话、押金、最大借书量、地址等;
4、管理员能够录入借阅信息,包括:读者、图书、借出时间、应还时间、借阅数量等;
5、管理员能够进行图书、图书类别、读者信息的修改、删除,能够进行分页浏览所有图书、图书类别和读者信息等;
6、管理员能够进行借书、还书、续借、搜索等操作;
7、管理员能够进行新书订购管理,对新书进行订购以及验收新书;
8、图书管理员作为借阅者的代理完成借阅图书,归还图书和查询借阅信息工作。 
、实验设计
1、设计思路
建立领域模型:
1) 从业务描述中提取名词;
2) 从提取出来的名词中总结业务实体,区分名词中的属性、角、实体、实例,形成问题域中操作实体的集合;
3) 从业务实体集合中抽象业务模型,建立问题域的概念;
4) 用UML提供的方法和图例进行领域模型设计、确定模型之间的关系。注:实体之间的关系,主要有泛化、依赖和关联,关联又分了一般关联、聚合、组合等
数据库设计:
1) 需求分析阶段:综合各个用户的应用需求
2) 概念设计阶段:形成独立于机器特点,独立于各个DBMS产品的概念模式(E-R图)
3) 逻辑设计阶段:首先将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View),形成数据的外模式
4) 物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
2、系统功能模块
针对用户对图书资源进行有效利用和管理的功能需求,用建模技术对图书管理资源采用面向对象的描述方式,在具体系统功能实现之前,建立起系统模型是很必要的,这里采用具有可视化、能够柔性实现分析、设计和开发系统的统一建模语言实现系统模型构建。同时,结合最流行的基于浏览器的数据管理模式,建议采用基于组件技术的 B/S(brower/server) 系统结构。
系统的功能模块如图 2-1所示:
2-1 系统功能模块
3、功能模块分析
通过对图2-1分析可知,针对图书馆管理系统,可以分为两大模块,一个小模块:分别为管理子系统,查询子系统两大模块,基础信息管理小模块。
(1)在管理子系统中:
新书购入处理模块:
只要是针对采购员在根据计划在外采购新书之后的处理,所以当采购员采购到新书后,系统根据原先计划采购的新书进行核查,如果符合计划预定,则将新书入库;否则退货;该模块主要是处理购入的新书是否符合要求;如图 3-1所示:
图3-1新书购入处理模块
处理学生借书模块:
该模块主要是处理学生借书业务,系统会根据学生文件对该学生进行查询,若不存在该生,则系统给出警告信息;若存在该学生,则系统根据单对该学生的欠款情况进行查询,如果欠款超过一定金额,则借书失败,否则接受借书,更新借书文件,在显示器上面显示借书成功;如图3-2所示:
图3-2处理学生借书模块
处理学生还书模块:
该模块主要是处理学生还书业务,在图书馆管理人员输入要还的图书字段时,系统会在借书文件中查该图书信息,之后对借书文件,学生文件中的该学生已借书数,图书目录文件进行更新;然后在借书文件中提取,根据图书的还书日期和借出日期对学生的欠款金额进行计算,如果没有超期,则欠款金额在原来的基础上加0,之后将结果显示出来;如图3-3所示:
3-3处理学生借书模块
(2)在查询子系统中,有两个查询内容:
学生信息查询:学生信息查询子模块主要是对学生信息的查询;如图3-4所示:
3-4学生信息查询
图书信息查询:图书信息查询子模块主要是对图书信息的查询;如图3-5所示
3-5图书信息查询
以上各个功能模块,是针对学生或者图书馆管理人员这两个不同的对象,查询子系统主要是让用户了解信息,所以不需要进行用户密码登陆,直接可以进行查询,而管理模块是涉及到图书馆内部的重要信息管理方面,所以必须要设置用户密码登陆和权限等等,以保数据的安全性和系统的安全性。
4、分析与建模
要开发一个软件系统,首先要对软件系统的需求进行分析,要做的工作是深入描述目标系统的功能和性能,确定软件设计的限制和软件同其他系统元素间的接口细节,定义软件的其他有效性需求。运用 UML(Unified Modelling Language :统一建模语言 ) 的目的可以捕捉系统的功能需求、分析,提取所开发系统领域的类以及描述它们之间合作概况,在完成系统的 OOA(Object-Oriented Analysis :面向对象分析 ) 在此基础上,对系统进行 OOD(Object-Oriented Design :面向对象设计 )。
1) 系统分析
UML 的用例图较详细和确切地描述了用户的功能需求,使系统功能与作用更加详细,奠定 UML 对系统建模的基础,这样,其他模型图的构造和发展依赖于用例图中所描述的内容,直至系统能够实现用例图中描述的功能。
采用用例图描述的图书管理主要包括三类用户:读者、图书管理员、系统管理员。其中,读者是多个,图书管理员是几个,系统管理员是一个。对于系统,读者可以查询自己的借阅情况、分门别类的查询图书和在规定期限内续借不能超过一次操作的情况下进行自行登录续借书等。图书管理员主要是日常操作以下几个工作环节:图书订购、新书验证、书目录入、图书登记、读者信息管理、借阅书登记、图书信息注销和读者信息注销等,而系统管理员统筹管理图书的系统相关事宜,比如权限维护、日志维护、增删用户和管理系统后台数据等。用例间关系、用户与用例关系及用例之间的关系如图4-1所示:
图4- 1图书管理用例分析图
2) 系统建模
系统静态建模
在用例分析基础上,根据需求可建立起系统的静态数据模型,即建立系统类图,以及相关的关系和方法。在面向对象分析中,一般只考虑与问题描述域和系统功能相关的对象。在对系统进行分析时,这里把系统的类对象抽象为图书管理、图书流通两方面。针到这两部分可以分化为以下相关类:图书类 (lib_Book) 、图目类 (lib_Category) 、订书类 (lib_Order) 、报表类 (lib_Form) 、读者类 (lib_Reader)  、流通书类 (lib_CirBook) 、部门类 (lib_Department) 、出版社类 (lib_Publish) 等。这些类之间我们可以用朴素的关联关系作一简要表达。如图4-2为图书管理静态类图,在图中每条有直接多重性关联的线上已标示出多重性,这为以后编程中提供了更好的关联参考价值,并为类在整个开发中的统一性奠定基础。
4-2图书管理静态类图
系统动态建模
在考查了系统某一时刻的对象及对象之间朴素关系的静态结构后,下面要关注的是在任何时刻对象及其关系改变的情况,这些情况可以用 UML 的动态模型进行形象化描述,可以 借助 UML 中的状态图来描述,在状态图中,把每时刻的系统状态抽象成状态和事件,然后组成一个网络,侧重于描述每一类对象的动态行为。它是对某一时刻中属性特征的概括,并且每种状态间存在着迁移,迁移则表示了这类对象在何时对系统内外发生的哪些事件作出何种响应。状态图设计一般是在对操作序列的顺序图细化的基础上表达。这里以借书的状态图为例,把上面的面向对象分析与设计、并对系统静态结构的把握后,建立起系统动态数据的逻辑视图,如图4-3所示,以此为点,可以建立起整个系统的状态流程分析
4-3 借书状态图
5、总体设计
1) 数据流程
顶层数据流如图5-1所示:
图 5-1 顶层数据流程
2) 数据结构设计
针对一般图书馆管理信息系统的需求 , 通过对图书馆管理工作过程的内容和数据流流程分析 , 设计如下面所示的数据项和数据结构:
a) 读者种类信息包括:种类编号、种类名称、借书数量、借书期限、有效期限、备注等。
b) 读者信息包括:读者编号、读者姓名、读者种类、读者种类、读者性别、读者班级或科室、办证日期。
c) 书籍类别信息包括:类别编号、关键词、备注。
d) 书籍信息包括:书籍编号、类别编号、书籍名称、作者姓名、出版社、关键词、登记日期、备注。
经过系统分析与设计后,就可以根据设计模型在具体的环境中实现系统,生成系统的源代码、可执行程序和相应的软件文档,建立一个可执行的系统。然后需要对系统进行测试和排错,保证系统符合预定的要求,获得一个无错的系统实现。测试的结果将确认所完成的系统可以真正使用。最后系统配置的任务是在真实的使用运行环境中配置、调试系统、解决系统正式使用前可能存在的任何问题。
3) 基于 B/S 模式的系统结构
在完成了系统的用例分析、模型化静态数据描述以及局部动态数据的状态控制后,基本上掌握了系统在进行逻辑数据处理的流程。而最终要成为一个系统管理体系,这就需要从总体上把握系统数据的获取、处理及存储。在基于 B/S 模式的软件开发中,其体系结构一般分为采用组件技术的三层,浏览器层、 Web 逻辑处理层和数据库管理层。这里系统的开发建议采用基于 Java 的面向对象开发技术,将设计的逻辑组件、数据访问组件运行在 JavaBean 和 COM+ 组合的运行环境,底层数据处理则采用数据管理安全性稳定性的数据库。不仅增强了系统访问数据的安全性,同时也可以处理后台数据库的并发、远程、跨平台访问。在数据库管理层也是通过 JavaBean 对象组件完成对后台数据库服务的访问,整个逻辑处理过程如图5-2所示。
5-2 系统逻辑图
系统架构
使用基于SSH框架的三层架构,SSH框架是指Struts+ Hibernate+ Spring三大开源框架技术,用SSH技术进行开发,能够提高开发效率,层次清晰。
Struts实现页面的设计和请求的跳转调用业务逻辑;Hibernate实现对数据的增删改查;Spring通过依赖注入控制对象的生成和事务的处理。
Struts对Model、View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,完成数据持久化的重任。SSH任务分工如图1-3-3所示:
图5-3 系统架构
6、系统部分截图
此图是图书管理系统的主页,该界面显示了本系统所具有的模块,有新闻栏、公告栏、好书推荐栏、借阅排行榜以及本系统的其他功能模块。(但由于时间有限,部分功能未实现)其主页模块如图6-1所示。
图6-1 主页模块
本次设计的是图书管理系统,主要分为前后两个部分首先是前台页面的展示,本图为图书管理系统的首页,由JSP编写。登陆模块如图6-2所示。
6-2 登陆模块
此图是用户进入图书管理系统的功能页面,该界面显示用户的个人信息,借阅历史、当前借阅与图书续借、图书收藏、修改密码、搜索图书等功能,图6-3学生登陆成功后显示页面:
图6-3 个人信息模块
    此图为其中修改密码功能模块,原用户名与密码符合便可修改否则修改失败,具体截图如6-4所示:
图6-4 修改密码功能
四、总结
1. 个人体会
此次报告对图书管理系统采用面向对象的分析及设计方法,对系统进行了可视化的需要分析与系统设计。整个过程中,采用了UML技术。并对系统采用了基于B/S模式的三层体系解决方案,借助于Web浏览器,提供了更加快捷方便的图书管理流程,节省了管理人员和读者的大量时间,有利于信息处理效率的提高,大大减少了重复信息。同时,也简化工作人员对图书的管理及维护工作。另一方面,基于组件技术的系统结构具有很好的可伸展性和可扩展性,提高了系统的柔性与自适应性,有助于系统的二次开发。通过这次案例分析,不但加深了对软件体系结构这门课的认识,同时也对软件开发的一些前期工作及基本流程有了一个简单的认识。在此案例分析中,需要用Powerdesigner画一些直观图帮助理解,通过画图,锻炼了我们的想象能力与动手能力
2. 思考与提高 
问题:请简述 BS 与 CS 体系结构风格的优缺点?(附加了区别)
C/S体系结构风格
1)优点:
●能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快。
●操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。 
C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
●安全性能可以很容易保证,C/S一般面向相对固定的用户,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。
2)缺点:
●需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户体,不能够实现快速部署安装和配置。
●兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。
●开发、维护成本较高,需要具有一定专业水准的技术人员才能完成,发生一次升级,则所有客户端的程序都需要改变。。
●用户固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户,所以适用面窄,通常用于局域网中。
B/S体系结构风格
1)优点:
●分布性强,客户端零维护。只要有网络、浏览器,可以随时随地进行查询、浏览等业务处理。 
●业务扩展简单方便,通过增加网页即可增加服务器功能。 
●维护简单方便,只需要改变网页,即可实现所有用户的同步更新。 
●开发简单,共享性强。
2)缺点:
●个性化特点明显降低,无法实现具有个性化的功能要求。 
●在跨浏览器上,BS架构不尽如人意。
●客户端服务器端的交互是请求-响应模式,通常动态刷新页面,响应速度明显降低(Ajax可以一定程度上解决这个问题)。无法实现分页显示,给数据库访问造成较大的压力
●在速度和安全性上需要花费巨大的设计成本。
●功能弱化,难以实现传统模式下的特殊功能要求。
小结:CS响应速度快,安全性强,一般应用于局域网中,但是开发维护成本高;BS可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。所以有些单位日常办公应用BS,在实际生产中使用CS结构。
B/S 与 C/S 体系结构风格主要区别:
不同点
C/S
B/S
硬件环境
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
安全要求
C/S 一般面向相对固定的用户, 对信息安全的控制能力很强,一般高度机密的信息系统采用C/S 结构适宜。
可以通过B/S发布部分可公开信息B/S 建立在广域网之上, 对安全的控制能力相对弱,面向是不可知的用户
程序架构
  C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑。
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上。比C/S有更高  的要求。
软件重用
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好。
B/S 对的多重结构,要求构件相对独立的功能。
系统维护
C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级。升级难,很难再做一个全新的系统 。
 
B/S 由构件组成,方面构件个别的更换,实现系统的无缝升级。系统维护开销减到最小。用户从网上自己下载安装就可以实现升级。
处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关。应该都是相同的系统。 
B/S 建立在广域网上, 面向不同的用户, 分散地域, 这是C/S无法作到的。 与操作系统平台关系最小。
处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关。应该都是相同的系统。 
B/S 建立在广域网上, 面向不同的用户, 分散地域, 这是C/S无法作到的。 与操作系统平台关系最小。
B/S 与 C/S 体系结构风格在两层、三层、多层主要区别及优缺点:
javabean是干嘛的
C/S
B/S
二层
二层C/S结构是单一服务器且以局域网为中心的。
优点:交互简单
缺点:由于是单一服务器,数据和功能都放在同一个服务器中,安全性差;
两层B/S结构实现了功能的分布,但还不均衡。为了减轻客户端的负担
优点:只遵循浏览器的HTTP通信协议即可,无客户端开发成本,所有逻辑代码都在服务端开发,移植性好
三层
三层C/S结构是分两类服务器(数据库服务器和应用服务器)和用户。
优点:数据和功能分开,分别放入数据库服务器和应用服务器中,这样对数据加一层保护,安全性更高。移植性好
缺点:开发客户端成本高,维护性差
界面层,业务逻辑层,数据访问层.
界面层是直接与用户进行交互的.
业务逻辑层是定义一些处理业务逻辑的方法.
数据访问层主要负责对数据库的CRUD操作.
优点:(1)分布性(2)扩展性
(3)易维护(4)共享性
缺点:(1)个性化欠缺(2)跨平台受限(3)成本较高(4)响应速度较低
多层
多层结构的应用程序把业务逻辑独立出来,组成一层或多层。形成客户层界面、中间业务处理层(可由多层组成)和后端数据服务层
优点:(1)可伸缩性好。(2)网络效率高。(3)可管理性强。。(4)可重用性好。(5)安全性较好
缺点:(1)初始开发周期延长。(2)开发的复杂性增加。(3)、对系统的设计、规划要求更高。
四、教师评语
成绩:                                     教师签名:
                                            期:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。