本科实验报告
课程名称: 系统分析与设计
实验项目: 《网上书店系统》
实验地点:
专业班级: 学号:20110
学生姓名:
指导教师:
20##年月 日
实验一 用例图
一、 实验目的
初步掌握UML用例图的创建方法及其用例的描述。
二、实验要求
1.结合工具StartUML,熟悉UML用例图的模型元素。
2.使用StartUML工具建模网上书店系统的用例图。
三、实验主要设备:台式或笔记本计算机
四、实验内容:
根据下面给出的网上书店问题陈述,分析该系统总体需求,建模网上书店系统的用例图并提供一个主要用例的事件流文档。
网上书店陈述:
书店经理:我们原本是一个传统的实体书店,顾客要买书都是亲自到书店里来的,这样挺不方便。面且随着书店销售图书种类和数量的增加以及顾客的增长,尤其是大量顾客到书店选购图书,使得书店场地不足,工作人员也很忙碌。其实,还有一点就是,有不少人进入书店后并不买书,只是查找一些资料。有的甚至会在这呆上很长的时间直到把书免费看完。这种行为,工作人员一般是不阻止的,结果最后这些被看过的书会因为有阅读过的痕迹而影响销售。而且现在电子商务已经发展起来了,所以我们想到借助网络,让顾客通过网上书店购买图书。这样我们书店可以省掉大量的场地维护和工作人员成本支出,同时计算机可以方便的检索图书信息,让顾客可以足不出户以更优惠的价格买到需要的书。
系统分析员:能谈谈您对网上书店的要求吗?
书店经理:网上书店要能实现对外和对内的功能,对外是顾客能在网上书店订购图书,提交订单。对内,书店工作人员能够通过网上书店及时的看到这些订单,并进行处理。为了把书送到顾客手里,我们已经联系了快递公司,初步达成协议,由他们往返场客和书店之间把图书送到顾客手里。书店管理员受理订单后,就会通知快递公司送货。当然,书店的图书上架和下架也应该由网上书店完成了。
工作人员甲:实体店中,图书是按照不同种类放置的,方便顾客挑选。网上书店的图书也应该能够按照这种模式分类显示。这样,图书的信息和种类要由网上书店设置和管理。已有种类的新书或新种类的图书上架,网上书店能够保存这些信息。如果信息输入错误,能够进行修改。
工作人员乙:另外书店会搞一些促销,推出一些特价图书。以前这些特价书的信息,都是我们根据促销活动整理出来,贴在书店的醒目位置。促销活动过后,特价图书会恢复原来的价格。希望网上书店也能够管理这些特价图书。
系统分析员:能谈谈平时买书的经过吗?
顾客甲:一般都是先在书店里看看图书的简要介绍,或者先找找看有没有自己需要的书,有时是没有目标的寻找,有时直奔一类图书而去。找到我想买的书或者觉得看的书不错,就会去柜台结帐。
工作人员丙:不过有时在结帐的时候,顾客会突然改变主意,不买一些书或者又回去挑选图书了。
顾客甲:有时好像是这样的。要是网上书店在结帐前能方便管理我所选购的图书就好了,这样通过计算机直接操作,就不用跑来跑去了。
系统分析员:可以使用虚拟的购物车。
工作人员丙:对,这样在用户确认购买前可自行管理选购的图书,决定要不要购买还有的购买的数量。
系统分析员:顾客先使用虚拟的购物车选购管理图书,然后提交订单给书店处理,是这样吧。
书店经理:没错,就这样办。另外最好顾客能够留下自己的信息,方便以后的购买。
顾客:你们可以实行会员制啊。就像我们在网上逛论坛一样,会员才能发言,普通游客只能看。这样我们平时就在网上书店查查资料什么的,只在购买图书的时候才使用会员身份。
书店经理:嗯,这样不仅可以保留你们的信息,也可以保留购买记录。
系统分析员:会员提交购买订单后,书店打算如何收取或者说用户怎么付款?
书店经理:我们可以接受货到付款,顾客也可以使用网上银行、汇款等方式付款。
顾客:这样我们就方便多了。对了那是不是付款前,我还多了一次“反悔”的机会啊。
书店经理:在我们书店没有受理订单之前,你们可以取消交易。不过受理后就不行了。
……
通过几次这样的访谈(限于篇幅,在此并未列出所有访谈内容),可以获得网上书店的需求信息,确定系统范围。网上书店是实现对实体书店内部图书商品和顾客购买图书的综合管理系统。
1. 用例图:
2.用例事件流
1.借阅书刊。
1.1前置条件
若是会员则登陆,不是则不用登陆。若是管理员另外入口登陆。
1.2后置评论
登陆成功,会员才能发言,普通游客只能看。购买图书的时候才使用会员身份。
1.3扩充点
1.4事件流
1.4.1基流
当借阅者从图书馆借阅书刊时,用例启动。
选择借书,执行分支流 s-1:借阅书刊
选择取消订单,执行分支流 s-2:退订
借阅者管理选购图书,执行分支流 s-3:虚拟购物车
1.4.2分支流
s-1:
(1)提供书刊种类、借阅者信息。
(2)确认书刊是否售完。
(3)更新书库
s-2:
(1)系统处理,通知工作人员。
s-3:
(1)管理购物车,决定要不要购买还有的购买的数量。
2.付款
2.1前置条件
选择用什么方式支付。
2.2后置条件
是否付款更改系统状态。
2.3事件流
2.3.1 基流
选择付款方式
(1)网上支付,则执行s-1
(2)货到付款,则执行s-2
2.3.2 分支流
s-1:
(1)系统与银行联系,进行付款。
s-2:
(2)系统记录,并等到货到,收到快递公司收款通知后进行更改。
五、分析与讨论
1.建模用例图的步骤、方法?
1. 开始 2.工具栏调整 3.增加参与者 4.增加用例
5.建立参与者之间的关系 6.建立用例之间的关系
2.如何识别系统的参与者?
⑴ 谁将使用该系统的主要功能;
⑵ 谁将需要该系统的支持以完成其工作;
⑶ 谁将需要安装、维护、管理该系统,以及保持该系统处于工作状态;
⑷ 系统需要处理哪些硬件设备
⑸ 与该系统发生交互的是什么系统
⑹ 谁或什么系统对本系统产生的结果感兴趣
3. 应该如何划分用例,应注意哪些问题?
参与者的执行动作是用例。
应避免重复。
4..心得
更加了解了UML的用例图的要点,和细节。对starUML使用也不够熟练。
实验二 类图
一、 实验目的
了解类图的基本用法;初步掌握UML类图的创建及其方法。
二、实验要求
1、结合工具StartUML,熟悉UML类图的模型元素。
2、建模网上书店类图。
三、实验主要设备:台式或笔记本计算机
四、实验内容:
创建类图的步骤如下:
(1)使用名词识别法识别类。
(2)建模类与类之间的关系。
(3)为类图中的关联关系添加合适的角色名。
(4)为已被封装到类中的独立功能建模类。
(5)为类图中的类添加必要的特性和操作。
(6)迭代并细化该模型
1.类:
五、分析与讨论
1. 如何使用文本分析技术从问题陈述中识别对象和类?
类描述了一类对象的属性和行为。定义其含义及互相关系,抽象出来类。
实例被用来模拟现实世界中存在、具体的原型东西。
2. 心得
结合工具StartUML,更加熟悉UML类图的模型元素。更熟练的STARUML软件。
实验三 顺序图及通信图
一、 实验目的
初步掌握UML顺序图的建模及其思想。
二、实验要求
1、结合工具StartUML和Rose,熟悉UML顺序图的模型元素。
2、建模网上书店交互图。
三、实验主要设备:台式或笔记本计算机
四、实验内容:
1. 给出网上书店的一个用例的顺序图,例如,书店管理员登录顺序图、会员添加图书到购物车顺序图或其他用例的顺序图。
2. 把以上顺序图转换为通信图。
五、分析与讨论
1. 如何从用例图建模顺序图?
用例图通过角色来描述系统中的信息,是从系统外部来观察系统中的功能,也就是说角色将使用该系统的哪些功能
顺序图它具体描述用例实例之间的交互情况,反映用例实例间消息传递的先后顺序
通过两者之间关系可以转换过来。
2. 顺序图和通信图的比较?
顺序图基于时间,按时间顺序显示出现的任务;而通信图显示任务和信息(对象)的交互方式。在通信中,时间以编码形式显示,很难选取。
3. 心得
更加了解了例图建模顺序图,和顺序图和通信图的比较。
实验四 活动图、状态图、组件及部署图
一、实验目的
1. 了解活动图、状态图、组件及部署图的基本用法;
2. 初步掌握活动图、状态图、组件及部署图建模方法。
二、实验要求
1、结合工具StartUML,熟悉UML活动图、状态图、组件及部署图的基本模型元素。
2、建模网上书店的活动图、状态图、组件及部署图。
三、实验主要设备:台式或笔记本计算机
四、实验内容:
用户活动图 用户状态图
五、分析与讨论
1. 什么情况下适合引入状态图进行建模?
描述了多哥队相间的交互作用。模拟系统的动态方面,事件驱动对象的行为。
2. 心得
更加了解了状态机图的作用,和活动图、状态图、组件及部署图的基本用法。
第二篇:UML建模实验报告
面向对象建模方法与技术综合实验报告
题 目:在线选课系统的UML建模
班 级:信息081班
学 号: 3080702138
姓 名: 程显
指导教师: 修 宇
UML建模实验报告
一、用例图
(一) 本次目的
1) 熟悉用例图的基本功能和使用方法。
2) 掌握如何使用建模工具绘制用例图方法。
(二) 要求请完成如下任务:
1) 使用Rational rose 画出选课系统的用例图。
2) 同时对主要功能用例进行详细说明。
选课系统用例图如下图所示:
图1
二、 活动图
(一) 本次目的
1)熟悉活动图的基本功能和使用方法。
2)掌握如何使用建模工具绘制活动图方法。
(二) 要求请完成如下任务
用活动图来描述系统中已知用例的业务过程
1) 使用活动图对选课用例或相关用例进行描述。
2) 使用活动图对建立选修课程目录表用例进行描述。
活动图如下图所示:
图2
三、类图
(一) 本次目的
1) 理解类的基本概念;
2) 掌握如何从需求分析中抽象出类的方法及关系;
3) 掌握在Rational Rose中绘制类的操作方法。
(二) 要求请完成如下任务
通过这用例图和活动图我们可以初步了解系统的业务处理流程。现在需要对系统进行静态建模,这就需要从系统的用例图、活动图去寻找和发现重要概念和对象,定义类及关系,使用ROSE创建类图。请完成如下任务:
1) 寻找和抽象出选课用例或相关功能中的类,并进行简要说明。
2) 确定类之间的继承关系已经创建类之间的继承关系,。
3) 请根据教材中示例部分在Rational Rose中绘制类间的关联关系。
类图如下图所示:
图3
四、序列图及协作图
完成了选课系统的需求分析,并从业务对象中抽象出了类。现在需要对前面所给出的用例进行实现,而用例的实现主要由交互图来指定和描述系统的动态特性。
(一) 本次目的
1) 理解顺序图的基本概念;
2) 理解协作图的基本概念;
3) 掌握在Rational Rose中绘制交互图的操作方法。
(二) 要求请完成如下任务
1) 阅读用例建模得到的用例文档说明和用例图。
2) 根据事件流,确定对象,对选课功能中的主要用例进行动态建模。
3) 根据分析设计情况,进一步发现类,细化各类之间的关系,确定主要类的属性和职责。
Add Course 序列图如下所示:
图4
Delete Course 序列图如下所示:
图5
Modify Course 序列图如下所示:
图6
Query Course 序列图如下所示:
图7
Registrar Login 序列图如下所示:
图8
Select Course序列图如下所示:
图9
Select Course 协作图如下所示:
图10
五、状态图
(一) 本次目的
1) 理解什么状态和状态图;
2) 学会使用UML绘制状态图
(二) 要求请完成如下任务
1)考察课程类对象的状态变化情况并分析,定义状态及迁移及条件,对课程类对象进行状态建模。
2)考虑选课系统的业务流程,对系统进行状态建模,帮助设计人员对系统业务的进一步理解。
状态图如下所示:
图11
六、构建图和部署图
(一) 本次目的
1) 理解组件图的基本概念
2) 理解组件图的应用:逻辑部署
3) 理解部署图的基本概念
4) 理解部署图的应用:物理部署
5) 掌握组件图和部署图绘制的方法
(二) 要求请完成如下任务
参照实验辅导教材,画出选课系统构件图及部署图并进行文字说明。
构建图如下所示:
图12
部署图如下所示:
图13
七、双向工程
(一) 本次目的
1) 理解双向工程的概念
2) 使用Rose进行完成模型的代码生成
(二) 要求请完成如下任务
现在,选课系统的分析和设计工作已经基本完成,即将进入编码阶段。为了加快编码进度,可以利用建模工具执行正向工程,将系统中的模型转换成指定语言类型的代码框架,现要求您使用Rose工具将设计的模型通过正向工程生成代码框架。按照使用Rose工具生成代码的6步基本步骤可以顺利的完成代码框架的生成工作。
(1)检查模型,
(2)创建组件
(3)将类映射到组件
(4)设置代码生成属性
(5)选择类,组件和包
(6)生成代码
粘贴得到的主要代码
生成代码如下:
//People.java
public class People {
private String name;
private int age;
public People() {
}
}
//Student.java
public class Student extends People {
private int StudentID;
public FormObject theFormObject;
public Student() {
}
public int getStudentID() {
return StudentID;
}
}
//DataBase.java
public class DataBase {
private String dbpath;
public DataBase() {
}
public boolean QueryCourse(int CourseID) {
return true;
}
public Boolean AddCourse(Course Course) {
return true;
}
public Boolean DeleteCourse(int CourseId) {
return true;
}
public void QueryAllCourse() {
}
public Boolean querYAssociation(int CourseID, int StudentID) {
return true;
}
public Boolean AddAssociation(int CourseID, int StudentID) {
return true;
}
public void QuerySelectedCourse() {
}
public String QueryPasswd(int regID, String Regname) {
return null;
}
}
//Registrar,java
public class Registrar extends People {
private int regID;
public FormObject theFormObject;
public Registrar() {
}
private void GetRegistRarInfo() {
}
}
//Course.java
public class Course {
private String name;
private String classroom;
private int CourseID;
private String teacher;
private int Students;
private String firstLessondate;
private int maxStudent;
public Course() {
}
public void Create(String Coursename, int CourseID, String ClassRoom,
String Teacher) {
}
public void getCourseInfo() {
}
public void DestroyCourse() {
}
}
//ControlObject.java
public class ControlObject {
public DataBase theDataBase;
public FormObject theFormObject;
public Course theCourse[];
public ControlObject() {
}
public boolean VerifyCourse(Course course) {
return false;
}
public boolean CanAdd() {
return false;
}
public boolean CanModify() {
return false;
}
public boolean QueryCourseByID(int courseID) {
return false;
}
public void ConfirmDelete() {
}
public void GetAllCourse() {
}
public boolean queryAssociation(int CourseId, int StudentID) {
return false;
}
public boolean CanSelect() {
return false;
}
public void QueryCoursseList(int StudentID) {
}
public boolean VerifyRegistrar(int regID, String regname) {
return false;
}
public Boolean CheckPasswd() {
return false;
}
}
//FormObject.java
public class FormObject {
public ControlObject theControlObject;
public Course theCourse;
public FormObject() {
}
private void GetCourseInfo() {
}
private void ShowSuccessInfo(String strinfo) {
}
public int GetCourseID() {
return 0;
}
private void ShowConfirmPage(String strInfo) {
}
private void ConfirmDelete() {
}
private void SelectCommand() {
}
private void DisplayCourseList(Course[] courseList) {
}
private void DisplayCourseList() {
}
private void QuerySelectedCourse(int StudentID) {
}
}
实验小结
本学期的实验到此也告一段落了。一学期的实验主要完成“在线选课系统的UML建模”,现已圆满完成。在学习课本知识的同时,结合实验指导书,边学习新知识边进行实际操作。对书本上的知识有了更全面的掌握。在建模过程中遇到了一些问题,通过询问老师、同学和上网查找资料,得到了比较满意的解决。在这次课程设计实验中,关于UML的概念以前比较模糊的地方,在实际操作中,变得更加清楚了。对Rational Rose的UML功能运用的更加熟练。使我对UML建模的思想有了更进一步的了解,在以后得学习中,还将不断的学习UML的理论知识。