MDA系统分析实战--图书馆管理系统
MDA系统分析实战--图书馆管理系统
本文通过MDA系统分析方法,对图书馆管理系统进行分析,简要叙述系统分析的一般过程。首先,简要介绍什么是MDA:MDA(Model-Driven Architecture)即模型驱动构架,是由OMG定义的一个软件开发框架,在MDA中软件开发过程是由软件系统的建模行为驱动的,详细的介绍可以参看OMG官方网站http://www.omg.org/mda。
MDA系统设计分为三个阶段:
- CIM(Computation Independent Model),关注系统环境即需求,不涉及系统内部的机构及运作细节。
- PIM(Platform Independent Model), 关注系统内部细节,不涉及实现系统的具体平台。
- PSM(Platform Independent Model),关注系统落实于特定具体平台的细节,如Spring、EJB2、.NET等。
其中,CIM、PIM为系统分析过程,PSM为系统设计过程,由于本次只作系统的分析,所以只涉及到CIM及PIM的过程。
在系统分析过程中,会产生各种模型图,依次为:
- CIM-1: 定义业务流程,产生业务用例图;
- CIM-2:分析业务流程,产生活动图;
- CIM-3:定义系统范围,产生系统用例图;
- PIM-1:分析系统流程,产生系统用例描述;
- PIM-2:分析业务规则,产生状态图;
- PIM-3:定义静态结构,产生类图;
- PIM-4:定义操作及方法,产生序列图(时序图/顺序图)。
接下来进入实际系统的分析过程。
系统需求分析:
图书馆管理系统是一套基于Web实现校园图书馆图书借阅、管理的软件。主体对象分为两部分:借阅者、图书馆管理员。其中,针对借阅者需要实现的基本功能模块为:权限查询、借阅史查询、欠款查询、书目查询、分类浏览、新书通报、馆际互借、预约图书、资料更新、修改密码;针对图书馆管理员需要实现的基本功能模块为:学生个人信息管理、借阅信息管理、权限管理、逾期管理、丢失图书管理、馆藏图书管理、购进新书。
下面分别就各个部分提出的需求进行描述:
一、借阅者:
- 权限查询:记录借阅者能够借阅的书目、期刊杂志、数据库等信息,以及允许借阅的最大数目和期限。
- 借阅史查询:记录借阅者所借阅图书信息,包括名称、索书号、作者、馆藏地点等信息,并且记录图书状态,包括借出、已归还两种状态、以及借出时间、应归还时间。
- 欠款查询:记录由于借阅者逾期未还产生的欠款信息。
- 书目查询:实现对馆藏图书的查询,可以通过名称、索书号、作者等信息进行查询,输出信息包括名称、索书号、作者、出版日期、图书摘要、分类信息、馆藏地点、借阅状态、价格、馆藏数量等信息。
- 分类浏览:可以根据图书分类进行浏览。
- 新书通报:记录图书馆新购图书。
- 馆际互借:可以预约不同校区图书馆图书。
- 预约图书:可以预约已借出图书,待书籍归还时发出通知,或者图书馆没有收录的图书,待购进之后发出通知。
- 资料更新:可以更改用户名、真实姓名、身份证号码、出生日期、联系方式、通讯地址、电子邮件、所属学院及专业等信息。
- 修改密码:可以修改登录密码。
二、管理员:
- 学生个人信息管理:记录所有学生信息,并且可以从学校数据库直接导入学生信息,并能够作适当的修改。
- 借阅信息管理:可以录入借出信息、归还信息,记录借出日期、应还日期以及实际归还日期。
- 权限管理:可以设置每个学生的借阅权限,如能够借阅的书目、期刊杂志、数据库等信息,以及允许借阅的最大数目和期限。
- 逾期管理:记录借阅逾期信息,欠款信息。
- 丢失图书管理:记录丢失图书信息,以及偿还方法,可以购买同一版本图书进行偿还,或者赔偿相应金额。
- 馆藏图书管理:记录所有馆藏图书信息,如书籍名称、索书号、作者、出版日期、图书摘要、分类信息、馆藏地点、借阅状态、价格、馆藏数量等信息;可以进行书目检索,并可以进行书籍信息修改,可以添加或删除书目信息。
- 购进新书:可以根据学生预约新书信息或者馆藏需要购进新书。
事件及事物列表:
事件列表和事物列表再系统设计分析的过程中起到至关重要的作用。事件列表是在对系统需求进行详尽的分析之后得出的未来系统将进行的一系列动作,在系统设计过程中,业务用例与系统用例将从事件表中进行抽取;而事物列表则是系统涉及到的实体对象,在后续分析类图和设计类图的分析中,各个实体类将从事物列表中抽取。
系统相关事件列表 | |||||
事件名称 | 触发器 | 来源 | 活动/用例 | 响应 | 目的地 |
1、用户查询权限信息 | 权限查询请求 | 学生 | 查询用户权限 | 返回用户权限信息 | 学生 |
2、用户查询借阅史信息 | 借阅史查询请求 | 学生 | 查询用户借阅史信息 | 返回用户借阅史信息 | 学生 |
3、用户查询欠款信息 | 欠款查询请求 | 学生 | 查询用户欠款信息 | 返回用户欠款信息 | 学生 |
4、用户进行书目查询 | 书目查询请求 | 学生 | 根据查询条件进行书目查询 | 返回图书信息 | 学生 |
5、用户进行分类浏览图书 | 分类浏览请求 | 学生 | 根据分类查询查询图书 | 返回分类查询结果 | 学生 |
6、用户查看到馆新书 | 新书通报请求 | 学生 | 查询到馆新书 | 返回到馆新书信息 | 学生 |
7、用户跨馆进行图书借阅 | 馆际借阅请求 | 学生 | 用户录入馆际借阅信息 | 产生馆际借阅信息 | 管理员 |
8、用户预约图书 | 用户预约请求 | 学生 | 用户录入需要预约的图书信息 | 产生预约信息 | 管理员 |
9、用户进行资料更新 | 资料更新请求 | 学生 | 用户录入需要修改的信息 | 修改相应数据库信息 | 数据库系统 |
10、用户进行修改密码 | 修改密码请求 | 学生 | 用户录入新密码 | 修改相应数据库信息 | 数据库系统 |
11、管理员录入学生信息 | 录入信息请求 | 管理员 | 管理员录入信息 | 向数据库插入信息 | 数据库系统 |
12、管理员删除学生信息 | 删除学生信息请求 | 管理员 | 录入需要删除的学生信息 | 向数据库删除学生信息 | 数据库系统 |
13、管理员修改学生信息 | 修改学生信息请求 | 管理员 | 录入需要的修改学生信息 | 修改数据库学生信息 | 数据库系统 |
14、管理员查询学生信息 | 查询学生信息请求 | 管理员 | 查询学生信息 | 返回查询学生信息 | 管理员 |
15、用户借书 | 用户借书请求 | 学生 | 进行用户借书处理 | 向数据库插入借阅信息 | 数据库系统 |
16、用户还书 | 用户还书请求 | 学生 | 进行用户还书处理 | 修改数据库图书借阅状态 | 数据库系统 |
17、管理员修改用户权限 | 修改权限请求 | 管理员 | 管理员修改用户权限 | 修改数据库用户权限信息 | 数据库系统 |
18、管理员查询逾期信息 | 查询逾期信息请求 | 管理员 | 查询逾期信息 | 返回逾期图书信息 | 管理员 |
19、管理员查丢失图书信息 | 查看丢失图书请求 | 管理员 | 查询丢失图书信息 | 返回丢失图书信息 | 管理员 |
20、管理员查询馆藏图书信息 | 查询馆藏图书请求 | 管理员 | 查询馆藏图书信息 | 返回馆藏图书信息 | 管理员 |
21、管理员增加馆藏信息 | 增加馆藏图书请求 | 管理员 | 录入新增图书信息 | 向数据库插入新增图书信息 | 数据库系统 |
22、管理员删除馆藏图书信息 | 删除馆藏图书请求 | 管理员 | 录入需要删除的图书信息 | 向数据库删除需要删除的图书信息 | 数据库系统 |
23、管理员修改馆藏图书信息 | 修改图书信息请求 | 管理员 | 录入需要修改的信息 | 修改数据库图书信息 | 数据库系统 |
24、管理员购进新书 | 购进新书请求 | 管理员 | 录入新书信息 | 向数据库插入新书信息 | 数据库系统 |
系统相关事物列表 |
|
事物名称 |
说明/属性 |
1、学生 | 包括姓名、ID、性别、年龄等属性 |
2、管理员 | 图书馆管理员 |
3、馆藏图书 | 记录馆藏图书信息,包括书名,索书号、作者、馆藏地点、借阅状态、价格、馆藏数量 |
4、权限 | 允许借阅的书目、期刊杂志、数据库等信息,以及允许借阅的最大数目和期限。 |
5、欠款 | 用户由于逾期未还产生的欠款信息 |
6、预约 | 用户进行图书预约的信息 |
7、借阅图书 | 用于储存用户借阅的图书信息,包括书名、索书号、作者、借出日期、应还日期、实还日期 |
8、逾期未还图书 | 用于记录用户逾期未还的图书信息,包括书籍信息、借出日期、应还日期、逾期日期 |
9、丢失图书 | 用户因丢失无法归还的图书信息 |
10、到馆新书 | 图书馆新购图书信息,包括书籍信息、购进日期、价格、商家信息 |
定义业务流程,产生业务用例图:
根据系统需求,结合事件列表中分析出的来源、对象、相应等相关信息,总结出未来系统需要满足基本功能,在分析业务用例图阶段,只需列出系统所需要实现的功能,不需要考虑系统如何实现该功能,业务用例图如下图所示。
分析业务流程,产生业务活动图:
从业务用例图中,抽取具体用例,绘制活动图,详细描述用例实现的过程与流程。
预约图书活动图:
借、还书活动图:
其它用例的活动图都比较简单,这里就不予画出了。
定义系统范围,产生系统用例图:
在业务用例图的基础上进行扩展,对各个用例进行详细的分析,绘制出更详细的系统用例图。
分析系统流程,产生系统用例描述:
用例描述即通过文字的形式将系统用例图中的用例进行详细的说明,下面以学生查询权限信息为例进行用例描述。
系统用例描述 |
|
系统用例名称 | 学生查询权限信息 |
用例简述 | 学生通过用户界面查询自己的借阅权限 |
用例图 | ![]() |
主要流程 |
1、 学生通过用户界面发起权限查询请求;
2、 系统根据学生的用户信息向数据库查询相应用户权限信息; 3、 数据库返回查询结果; 4、 系统将数据库返回结果返回到用户界面 |
定义静态结构,产生类图:
类图是描述类、接口及它们之间关系的模型图,显示系统中各个类的静态结构;类图中的类从事物图进行抽取,定义类的同时,添加必要的属性以及方法,并说明类之间的关系,下图为系统的设计类图。
定义操作及方法,产生序列图(时序图/顺序图):
时序图/顺序图用来描述对象之间传递信息的时间顺序,用来表示用例中的行为顺序,下面以学生预约图书用例为例画时序图,时序图如下。
分析业务规则,产生状态图:
每一个实体对象都有它自己唯一的状态图,状态图描述的是对象的内部逻辑,这些信息是对对象自身属性所执行的动作的描述,接下来就用借书、还书用例过程来对图书状态进行说明。
图书状态图:
总结:
至此,图书馆管理系统的分析过程就结束了,当然,其中每个类型的图形模型都只是画了一个,剩下的模型分析绘制的方法都是一致的,所以不一一赘述了。简而言之,在系统分析阶段,需要进行系统需求分析,列出事件列表以及事物列表,再进行图形模型的绘制,一共需要绘制的模型有:用例图、活动图、类图、序列图(时序图/顺序图)、状态图。完成了系统分析过程,就可以进行系统的详细设计了。
原创文章:引用请表明出处
MDA系统分析实战--图书馆管理系统的更多相关文章
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(二)数据库初始化、基本登录页面以及授权逻辑的建立
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- 图书馆管理系统 SRS文档
图书馆管理系统 SRS文档 编写人:魏晓 日期:2015年05月27日 1介绍 1.1编写目的 图书管理系统需求规格说明书是为了让系统的涉众就该系统的需求达成一致认可,明确该系统的需求,为后续的开发工 ...
- 图书馆管理系统SRS
1.任务概述 1.1目标 主要提供图书信息和读者基本信息的维护以及借阅等功能.本系统是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学.合理的规划,系统.高效的实施. 1 ...
- Microsoft-pubs(图书馆管理系统)-数据库设计
ylbtech-DatabaseDesgin:微软提供-pubs(图书馆管理系统)-数据库设计 1.A,数据库关系图 1.B,数据库设计脚本 -- ======================== ...
- Android应用源码图书馆管理系统带服务端数据库
本项目是一套基于安卓的图书馆管理系统,包括jsp服务端源码,安卓客户端源码和mysql数据库.代码比较简单,供学习anroid与j2ee交互.例如Sqlite的使用.安卓客户端与jsp的web服务端的 ...
- 图书馆管理系统(C语言)
/* 实现的功能 * @ 1. 录入图书的信息 * @ 2. 给定图书的编号,显示该图书的详细信息 * @ 3. 给定作者的姓名,可以显示该作者所有的书 * @ 4. 给定出版社,可以显示该出版社出版 ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(七) 学生信息增删
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(六)学生借阅/预约/查询书籍事务
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(五)外借/阅览图书信息的增删改查
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
随机推荐
- 转:三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
转:http://blog.csdn.net/liujun13579/article/details/7773945 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件 ...
- Android 窗口管理
一.概述 在Android系统中,从设计的角度来看,窗口管理系统是基于C/S模式的.整个窗口系统分为服务端和客户端两大部分,客户端负责请求创建窗口和使用窗口,服务端完成窗口的维护,窗口显示等. 在Cl ...
- bzoj1758
好题显然是分数规划,二分答案之后我们要找是否存在一条边数在[l,u]长度和为正的路径可以用树的分治来解决这个问题我们假设当前处理的是过点root的路径显然我们不好像之前男人八题里先算出所有答案,然后再 ...
- C# winform 导出导入Excel/Doc 完整实例教程[网上看到的]
还真没做过winform的导出导入,今天上网百度了一下.结果--- 所以还是我自己写个吧.之前做过web的,半搬半做就OK. 1添加引用:Aspose.Cells.dll(我们就叫工具包吧,可以从网上 ...
- android camera(一):camera模组CMM介绍
一.摄像头模组(CCM)介绍: 1.camera特写 摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件.先来张特写,各种样子的都有,不过我前一段 ...
- 在bootloader及IAP中使用zlib解压缩
原有的bootloader方案是在片内FLASH上面分成3块,bootloader区占一小块,然后剩下区域平分成两块,一块是运行区,一块是新固件临时存储区. 好在现在FLASH在系统成本中占的比例越来 ...
- 使用alloctor模板来实现string类
虽然以前做过更复杂的各种数据结构,不过那只是在看完c++prime7章后做的,没有考虑到类的拷贝体现出来是类值还是类指针,于是写了一些半成品类,不过那些主要是练数据结构,不想再改,于是就想办法模仿了下 ...
- SRM 442(1-250pt, 1-500pt)
DIV1 250pt 题意:将一个数表示成质因子相乘的形式,若乘式所含数字的个数为质数,则称A为underprime.比如12 = 2*2*3,则含3个数字,是underprime.求A, B之间un ...
- .net 码农转战 iOS - 初探
好久没写博客了,之前还打算把毕业设计中涉及到的两个算法拿出来说说(脸型分析 + 声音分析),博文都写了一半了,后来实在太忙了,那篇随笔也就沉在草稿列表中没动过. 我原先是专职 .net 开发的,在公司 ...
- Lattice Diamond安装
1.下载:到Lattice官网 http://www.latticesemi.com/ 注册一个lattice的账号后就可以去下载Diamond,登陆后如下图,根据自己系统情况选择对应的版本,我用的是 ...