第一篇:基于UML的功能设计
内蒙古工业大学信息工程学院
实 验 报 告
课程名称: UML2面向对象分析与设计 实验名称: 基于UML的功能设计 实验类型: 验证性□ 综合性□ 设计性□ 实验室名称: 班级: 学号: 姓名:
组别: 同组人:
成绩:
实验日期: 2014.5.21
内蒙古工业大学信息工程学院
报告类型: 实验报告√ 预习报告□
报告成绩: 指导教师审核(签名): 年 月 日
[实验名称]
基于UML的功能设计 [实验目的]
1、熟练使用Rational rose2003。
2、掌握组件图的绘制方法。
3、掌握布局图的绘制方法。
4、双向工程的实施过程。[实验环境] Rational rose2003,Windows 7。
[实验内容] 题目1:选课系统的组件图设计
描述:在选课系统中,包括MainProgram类(主程序)、People类、FormObject类、ControlObject类、Student类、Registrar类(管理员)、Course类和DataBase类。People类是Student类和Registrar类的基类,所以Student类和Registrar类依赖People类。FormObject类和ControlObject类都和Course类相关,FormObject类和ControlObject类依赖Course类,ControlObject类和DataBase类相关,ControlObject类依赖DataBase类。
完成:
1)绘制选课系统的组件图。题目2:选课系统的布局图的设计
描述:服务器使用了两台主机,一台作为数据库服务器,使用了Oracle服务器,另一台是同一局域网上的机器,作为HTTP服务器,上面运行了HTTP服务器进程以及业务逻辑,同时连接了打印机。而客户端则是在因特网上任意具有Web浏览功能的机器,客户端和HTTP服务器通过因特网连接,从HTTP服务器获取信息。完成: 1)绘制选课系统的布局图。题目3:选课系统的正向工程 描述:见题目1。
完成:
第1页
内蒙古工业大学信息工程学院
1)使用Rose的正向工程,为类People、Student和Registrar生成代码;
2)使用同样的方法,为其它类也生成代码。题目4:选课系统的逆向工程
描述:根据题目3正向工程执行的结果,在类Student的代码中增加一个TestOperation的空操作。完成:
1)使用Rose的逆向工程,为Student的代码建立同步模型。
[实验提示] 1)组件图的绘制
(1)打开组件图窗口
在浏览器窗口打开“Component View”文件夹-〉双击“Main”图标。(2)建立新组件
浏览器中右键单击“Component View”-〉“New”-〉“Component”建立了新组件;(3)修改组件属性
右键单击所建立的组件-〉“Open Specification”-〉在“General”选项卡中设置组件名称、组件版型和实现的语言。
在“Files”选项卡中-〉列表框中单击右键-〉“Insert File”,建立Main.java文件。(4)组件图中增加组件 将所建立的组件拖入组件图即可。
使用上面的方法建立组件,然后打开组件的属性框,选择“Realizes”选项卡,右键单击类名,选择“Assign”,可以建立类和组件之间的关系。
2)布局图的绘制
(1)打开布局图窗口
在浏览器中选择“Deployment View”并双击,打开了布局图窗口。
(2)增加处理器
在布局图窗口工具栏上选择“Processor”图标-〉放置到“布局图”窗口中。
第2页
(2)设置组件和类的关系
内蒙古工业大学信息工程学院
(3)设置处理器属性
右键单击新建的处理器-〉“Open Specification”-〉选择“Detail”选项卡-〉在“Processes”列表框中单击右键-〉“Insert”-〉设置处理器上运行的进程。
3)正向工程的实现
(1)一般性检查
“Tools”-〉“Check Model”,如果模型有问题,将在日志窗口中给出。
(2)发现访问问题
“Report”-〉“Show Access Violations”,在访问问题窗口中显示访问问题。
(3)语言独立检查
假设使用Java语言,“Tools”-〉“Java”-〉“Syntax Check”。
(4)生成代码
“Tools”-〉“Java”-〉“Genenate Codes”。
4)逆向工程的实现
“Tools”->“Java”-〉“Reverse Engineer Java…”。
[实验结果] 题目1:选课系统的组件图设计
选课系统组件图
题目2:选课系统的布局图的设计
第3页
内蒙古工业大学信息工程学院
选课系统布局图题目3:选课系统的正向工程 1)正向工程生成代码Registrar.java //Source file: D:xy Registrar.java
public class Registrar extends People {
/**
* @roseuid 51BFDB9802E9
*/
public Registrar()
{
} } 2)正向工程生成代码People.Java //Source file: D:xy People.java
public class People {
public MainProgram theMainProgram;
/**
* @roseuid 51BFD71203A3
*/
public People()
{
第4页
内蒙古工业大学信息工程学院
} } 3)正向工程生成代码Student.java //Source file: D:xy Studnet.java
public class Studnet extends People {
/**
* @roseuid 51BFD7570025
*/
public Studnet()
{
} } 4)正向工程生成代码ControlObject.java //Source file: D:xy ControlObject.java
public class ControlObject {
/**
* @roseuid 51BFDBA103D5
*/
public ControlObject()
{
} } 5)正向工程生成代码FormObject.java //Source file: D:xy FormObject.java
public class FormObject {
/**
* @roseuid 51BFDBA90119
*/
public FormObject()
{
} }
第5页
内蒙古工业大学信息工程学院
6)正向工程生成代码MainProgram.java //Source file: D:xy MainProgram.java
public class MainProgram {
public People thePeople;
public Course theCourse;
/**
* @roseuid 51BFD862029F
*/
public MainProgram()
{
} } 题目4:选课系统的逆向工程
Student类图
[实验心得] 通过本次实验,熟悉了如何使用rose绘制UML组件图与布局图,了解了组件图与布局图的作用,巩固了相关的课堂知识,加深了对其的认识。除此之外,还掌握了如何使用rose的正向工程和逆向工程,学会了通过rose快速生成代码的方法,极大的方便了以后的编程。同时也为以后的学习与工作打下了一定的基础。
第6页
第二篇:视频教学功能设计
功能设计 项目名称:视频会议 班级:软件101 组长:赵美婷
组内成员:王立芹、夏叶、王亚如、靳会 时间:2012年10月9日引言
1.1编写目的:
目前,作为新型技术的视频会议,已经成为开发和研究的热点。作为计算机专业的学生,也应该将视频会议的学习和研究列为课程设计内容。1.2背景说明:
视频会议也叫电视会议,经历了模拟电视会议和数字电视会议两个阶段。模拟会议电视是早期的会议电视,在70年代就有了这种通信业务。当时传送的是黑白图像,并且只限于在两个地点之间举行会议。尽管如此,电视会议还是要占用很宽的频带,费用很高,因此这种电视会议没有得到发展。视频会议进入中国初期,政府是视频会议市场的最大也是最主要的用户。近些年来,更多的行业用户开始意识到视频会议的重要性,视频设备用户数量不断增加,用户行业分布领域也越来越广泛,由最初的政府和电信部门,发展到公安、检察院、法院、银行、证券、保险、教育、税务等各个行业。和欧美国家相比,虽然中国的远程教育和远程医疗刚刚起步,视频会议系统在这两个领域的应用范围还不够广泛,但从发展的角度可以看到,最近两年,上述两个领域的应用正呈现出蓬勃发展的势头,未来将是快速发展的行业。目前,国内市场视频会议主要应用于下列行业:政府;金融、证券、银行;能源;交通、公安军队;外资企业及大型企业;医疗与教育行业。随着政府信息化的不断深入,以及各地电子政务的开展,各地党政专网的二期、三期扩建工程,今后几年中,对于视频会议需求最大的还将来自政府部门。由于资金和观念等因素的影响,视频会议在教育、医疗方面的应用并没有取得预期的效果,各厂商在这两个领域中的占有率都很有限。但由于视频会议在技术上有着明显的特点和优势,其应用价值必将会得到教育界、医学界的进一步承认。中小型企业应是今后着重关注的领域,这部分用户数量巨大,一般对于设备终端的要求较低,而且连接点数较少。这就要求厂商能够提供价格相对低廉的产品、全套的解决方案,以及高质量的售后服务,同时,由于这部分潜在用户数量巨大,因此厂商和代理商的市场推广力度应该进一步加强。技术实力差距不大的情况下,价格将成为竞争取胜的一个关键因素。目前国内厂商在设备的价格上具有很大的优势,厂商在推广时,应注意减轻产品价位偏高所带来的影响。总体设计
2.1需求规定
(1)能够实现音视频交互。
(2)有良好的带宽处理机制、有强大网速的适应能力。(3)支持多种网络环境,并且跨越各种不同的网络环境。(4)支持文档共享、电子白板、网页同步等多种文本交互手段。(5)支持屏幕广播、程序共享等多种协同办公的功能。(6)针对不同的用户群体、用户数量,有相对应的会议机制。(7)能同时支持多个会议通道,保障各会议通道的相对独立和信息安全性。
(8)能进行远程的web方式管理,组织会议和会议授权简单、方便。
(9)有较强的控制功能,能够把不遵守纪律的会议成员请出会议室。
(10)有丰富的辅助功能,保证在突发情况下视频会议能无干扰地正常进行。
(11)能实现无延迟的音视频传输、保证音视频的同步性。(12)能进行会议录制,把会议信息完全记录下来。
(13)有良好的扩展功能,支持服务器集群、分发式服务器和二级服务器。2.2运行环境
网络视频会议的进行,必须要有良好的硬件支持。NetMeeting对硬件要求如下: 1.声卡。最好采用全双工的声卡。
2.麦克风。连接在声卡上或内置在计算机中。在语音会议时,应对着麦克风说话。3.音箱或耳机。连接在声卡上或内置在计算机,可从其中听到对方的声音。4.网卡或调制解调器(Modem)。保证能够接入互联网。5.摄像头。让对方看到自己的图像。2.3基本设计概念和处理流程
一个网络视频系统主要由三大部分组成:一个会议控制中心;接入因特网的多个办公局域网;若干个通过有线或无线方式接入因特网或办公局域网的用户终端。
右图是一款商业化的网络视频系统——智星网络视频会议系统的实际组成图
2.4结构
一、音频的录制与播放问题
这一部分的开发相对简单。其一,这种功能的API从Windows 3.1开始就已经提供(winmm.lib+mmsystem.h);其二,如今借助于方便的因特网,我们完全可以搜到现成的包装类。在本文中,我们直接借用了提供了两个现成的RecordSound与PlaySound类。这两个类都派生于CWinThread类,用户可以“死搬硬套”地使用它们。下面代码展示了这两个类的使用,具体包装类定义请参考下载源码文件。
//创建并启动录音线程
record=new RecordSound(this);record->CreateThread();//创建并启动播放线程 play=new PlaySound1(this);play->CreateThread();//开始录制
record->PostThreadMessage(WM_RECORDSOUND_STARTRECORDING,0,0);//开始播放
play->PostThreadMessage(WM_PLAYSOUND_STARTPLAYING,0,0);//在音频录制期间,我们可以在RecordSound类的OnSoundData //回调函数中使用这些数据。在此,你可以放置你要发送到远程宿主的数据…… //播放接收自远程宿主的音频数据
play->PostThreadMessage(WM_PLAYSOUND_PLAYBLOCK,size,(LPARAM)data);//停止录制
record->PostThreadMessage(WM_RECORDSOUND_STOPRECORDING,0,0);//停止播放
play->PostThreadMessage(WM_PLAYSOUND_STOPPLAYING,0,0);//最后,停止录音线程
record->PostThreadMessage(WM_RECORDSOUND_ENDTHREAD,0,0);//停止播放线程
play->PostThreadMessage(WM_PLAYSOUND_ENDTHREAD,0,0);上面已经加了注释,使用方法一目了然。
二、视频捕获的问题
当前,在Windows平台下开发视频应用一般采用两种方案。一种是基于视频采集卡所附带的二次软件开发包SDK进行。此方式的优点:帮助资料齐全,直接套用现成的API,易于上手;但缺点也是明显的:硬件依赖性强,缺乏应有的灵活性,因此,不能充分满足开发通用的视频应用的需要。
另一种方案是基于微软公司的VFW(Video for Windows)进行。这个SDK为开发Windows平台下的视频应用程序提供也现成的软件工具包(一组API),开发人员可以通过它们很方便地实现视频捕获、视频编辑及视频播放功能,特别是可利用其中内置的回调函数开发出更为复杂的视频应用程序。因此,这种方案的优点是播放视频时不需要专用的硬件设备(大多数的视频采集卡驱动程序都支持VFW接口),应用灵活,可以满足视频应用程序开发的需要。值得庆幸的是,如今的Windows版本都内置安装了VFW相关组件,而VC++自4.0以来就支持VFW,从而大大简化了视频应用程序的开发。目前,基于PC的多媒体应用程序的视频部分,大都是利用VFW API开发的。
VFW以消息驱动方式实现对视频设备进行访问,便于开发者控制设备数据流的工作过程。简言之,这个框架主要包括VICAP.DLL、MSVIDEO.DLL、MCIAVI.DRV、AVIFILE.DLL、ICM、ACM等多个动态连接库,这些组件协同合作,共同完成视频的捕获、视频压缩及播放功能。有关这些模块的具体介绍见MSDN,在此略过。
(一)视频捕获
视频数据的实时采集,主要通过AVICAP模块中的消息、宏函数、结构以及回调函数来完成。视频捕获的大致过程如下:(1)建立捕获窗口
利用函数capCreateCaptureWindow()建立视频捕获窗口,它是所有捕获工作及设置的基础。其主要功能包括:①动态地同视频和音频输入器连接或断开;②设置视频捕获速率;③提供视频源、视频格式以及是否采用视频压缩的对话框;④设置视频采集的显示模式为Overlay或为Preview;⑤实时获取每一帧视频数据;⑥将一视频流和音频流捕获并保存到一个AVI文件中;⑦捕获某一帧数字视频数据,并将单帧图像以DIB格式保存;⑧指定捕获数据的文件名,并能将捕获的内容拷贝到另一文件。(2)登记回调函数
登记回调函数用来实现用户的一些特殊需要。在以一些实时监控系统或视频会议系统中,需要将数据流在写入磁盘以前就必须加以处理,达到实时功效。应用程序可用捕获窗来登记回调函数,以便及时处理以下情况:捕获窗状态改变、出错、使用视频或音频缓存、放弃控制权等,相应的回调函数分别为capStatusCallback(),capErrorCallback(),capVideoStreamCallback(),capWaveStreamCallback(),capYieldCallback()。(3)获取捕获窗口的缺省设置
通过宏capCaptureGetSetup(hWndCap,&m_Parms,sizeof(m_Parms))来完成。(4)设置捕获窗口的相关参数
通过宏capCaptureSetSetup(hWndCap,&m_Parms,sizeof(m_Parms))来完成。(5)连接捕获窗口与视频捕获卡
通过宏capDriveConnect(hWndCap,0)来完成。(6)获取采集设备的功能和状态
通过宏capDriverGetCaps(hWndCap,&m_CapDrvCap,sizeof(CAPDRIVERCAPS))来获取视频设备的能力,通过宏capGetStatus(hWndCap,&m_CapStatus,sizeof(m_CapStatus))来获取视频设备的状态。(7)设置捕获窗口显示模式
视频显示有Overlay(叠加)和Preview(预览)两种模式。在叠加模式下,捕获视频数据布展系统资源,显示速度快,视频采集格式为YUV格式,可通过capOverlay(hWndCap,TRUE)来设置;预览模式下要占用系统资源,视频由系统调用GDI函数在捕获窗显示,显示速度慢,它支持RGB视频格式。
(8)捕获图像到缓存或文件并作相应处理
若要对采集数据进行实时处理,则应利用回调机制,由capSetCallbackOnFrame(hWndCap,FrameCallbackProc)
完
成单
帧
视
频
采
集;
由capSetCallbackOnVideoStream(hWndCap,VideoCallbackProc)完成视频流采集。如果要保存采集数据,则可调用capCaptureSequence(hWnd);要指定文件名,可调用capFileSetCapture(hwnd,Filename)。(9)终止视频捕获断开与视频采集设备的连接
调用capCatureStop(hWndCap)停止采集,调用capDriverDisconnect(hWndCap),断开视频窗口与捕获驱动程序的连接。由于上面这些API密切相关,所以为了使用方便,我们干脆把它们打包到一个视频捕获类VideoCapture中。
下面的代码片断展示了这个类的使用思路: //创建视频捕获类的实例 vidcap=new VideoCapture();//当帧捕获完成时,下面这一句将用于调用主对话框类的显示函数 vidcap->SetDialog(this);//下一行完成初始化工作:连接到驱动程序;设置使用的视频格式等。//如果成功地连接到视频捕获设备返回TRUE。vidcap-> Initialize();//如果连接成功,那么,我们就可以得到与视频格式相关的BITMAPINFO //结构。后面将用之显示捕获的帧 this->m_bmpinfo=&vidcap->m_bmpinfo;//现在,你可以正式开始视频捕获了…… vidcap->StartCapture();//一旦捕获开始,捕获的帧将到达回调函数—VideoCapture类的OnCaptureVideo函数。//在此回调函数中,你可以调用显示函数实现帧显示(见下一节)//停止捕获
vidcap->StopCapture();//成功捕获后,释放视频捕获类 vidcap->Destroy();【注意】为了顺利编译和链接,你需要在类实现文件(VideoCapture.cpp)的前面加上如下语句:
#pragma comment(lib,“vfw32”)#pragma comment(lib,“winmm”)
(二)显示捕获的视频帧
对于显示捕获的视频帧方面(也就是显示图像的问题),显然存在多种方案。例如,我们可以使用SetDIBitsToDevice()方法实现直接显示捕获的视频帧。但是,这种方案速度非常慢,因为它是基于图形设备接口(GDI)的函数。相比之下,更好一些的方法是使用DrawDib API来绘制帧,因为这个函数可以直接写向视频内存,因此能够提供更好的性能。下面的代码片断展示了如何使用DrawDib函数显示捕获的视频帧: //初始化DIB以便绘制
HDRAWDIB hdib=::DrawDibOpen();//然后,使用适当的参数调用这个函数…… ::DrawDibBegin(hdib,...);//现在,已经作好准备—可以调用这个函数进行帧显示了 ::DrawDibDraw(hdib,...);//最后,结束帧绘制 ::DrawDibEnd(hdib);::DrawDibClose(hdib);其实,上面代码非常类似普通位图绘制过程。
三、选择适当的编码/解码库
在本文中,我们选用Roalt Aalmoes的开源的快速H.263编码器库。
(一)使用编码器代码示例 //初始化压缩器 CParam cparams;cparams.format = CPARAM_QCIF;InitH263Encoder(&cparams);//如果你需要从RGB24转换到YUV420格式,那么应该调用下面的函数 InitLookupTable();//创建回调函数
//OwnWriteFunction是编码期间返回编码数据时调用的全局函数 WriteByteFunction = OwnWriteFunction;//压缩数据必须使用YUV420格式 //在压缩之前调用下面这个方法
ConvertRGB2YUV(IMAGE_WIDTH,IMAGE_HEIGHT,data,yuv);//压缩帧……
cparams.format=CPARAM_QCIF;cparams.inter = CPARAM_INTRA;cparams.Q_intra = 8;cparams.data=yuv;//数据是YUV格式 CompressFrame(&cparams, &bits);//你可以从开始时你已经注册的回调函数中取得压缩的数据 //最后,终止编码器 // ExitH263Encoder();
(二)解码器编程
注意,原始的H.263编码器库以C方式进行编码,而且提供了其它更多的细节实现。在本文中,我们以C++重新进行了改写。下面是解码器的使用示例代码框架: //初始化解码器 InitH263Decoder();//解压帧……
//rgbdata必须足够大以便存储输出数据; //解码器以YUV420格式生成图像数据; //解码之后,把它再转换成RGB24格式…… DecompressFrame(data,size,rgbdata,buffersize);//最后一步,终止解码器 ExitH263Decoder();
四、运行应用程序
为了试验本文示例应用程序,应该把可执行文件复制到一个LAN中的两台不同的机器上;然后,分别运行之。从一台机器上选择“连接”菜单项,并在弹出对话框内输入另一台机器的名字或IP地址,最后点击“连接”按钮。此时,在另一台机器上应该弹出一个“接受/拒绝”的对话框窗口,点击“接受”按钮。之后,在第一台机器上将显示通知对话框。按“OK”即可开始你的视频会议(聊天……)了。
第三篇:图书馆网站网站功能设计
图书馆网站网站功能设计
用户分类
1.管理员 1).超级管理员平台设置: 数据库管理(备份、恢复)公告管理 底部栏目管理(关于我们、购物指南、配送方式、支付方式)添加管理员 学校管理: 添加学校、学院、班级 商品管理: 商品分类(2 级分类)商品添加 商品查询(可以按分类查询和修改商品的库存、价格等信息)缺货登记管理(商品添加应有图书名称、出版社、作者、ISBN,出版时间、版次等信息)(商品价格体系共有三个:进价、定价、小管家价。网站网页上显示的是小管家价 和定价,其中小管家价就是本网站的售价,因为网站名叫校园小管家,定价就是图 书的定价,进价就是图书的进货价,在网站后台添加,不显示在网页上,小管家价 与进价之间差价的 30%就是小管家的收益)
订单管理: 按日期,班级,姓名等查询订单信息和处理订单。会员管理: 普通会员管理(会员的删除、查看、锁定)(会员删除指的是会员毕业信息将被删除。会员锁定指的是租书规定时 期内未还的会员的账号将被锁定,将无法进行提交订单)小管家管理(设置小管家、解除小管家、提现申请处理)统计报表: 销售明细 租赁明细 可以按照日期、学校、学院、班级小管家、会员查询 2)管理员 学校管理: 添加学校、学院、班级 商品管理: 商品分类(2 级分类)商品添加 商品查询(可以按分类查询和修改商品的库存、价格等信息)缺货登记管理(商品添加应有图书名称、出版社、作者、ISBN,出版时间、版次等信息)(商品价格体系共有三个:进价、定价、小管家价。网站网页上显示的是小管家价 和定价,其中小管家价就是本网站的售价,因为网站名叫校园小管家,定价就是图 书的定价,进价就是图书的进货价,在网站后台添加,不显示在网页上,小管家价 与进价之间差价的 30%就是小管家的收益)
订单管理: 按日期,班级,姓名等查询订单信息和处理订单。会员管理: 普通会员管理(会员的删除、查看、锁定)(会员删除指的是会员毕业信息将被删除。会员锁定指的是租书规定时 期内未还的会员的账号将被锁定,将无法进行提交订单)小管家管理:(设置小管家、解除小管家、提现申请处理)统计报表: 销售明细 租赁明细 可以按照日期、学校、学院、班级小管家、会员查询 2.班级小管家 班级订单管理:可以对班级内成员下单情况进行查看。我的订单: 我的收益: 余额: 申请提现 缺货登记: 历史查询:会员可以在登陆之后查询自己的租书和买书的历史记录。普通用户: 我的订单: 申请成为班级小管家。缺货登记:
历史查询:会员可以在登陆之后查询自己的租书和买书的历史记录。所有用户和非用户均可查看全站图书全部信息。只有注册用户可下订单。非注册用户下单时会提示需要注册。
会员注册功能 注册邮箱(必填)创建密码(必填)真实姓名(必填)性别(必填)学校、学院、班级(必填)学历(必填)入学时间(必填)邮箱激活
男、女 管理员后台添加,会员选择 专科、本科、管理员后台添加,会员选择
历史查询功能 描述:会员可以在登陆之后查询自己的租书和买书的历史记录。购物车功能 描述:用户登陆后,可以在浏览图书时将图书进行加入购物车,购物车内图书永久存在,不会因为关闭浏览器而消失,用户可手动删除和修改数量。
图书查询
描述:搜索图书,搜索类别包括书名、作者、ISBN。
图书详情 描述:显示有关该图书所有已录入信息,包括租赁价格和新书价格。帮助功能 在网站底栏显示,类似当当网
分:关于我们、购物指南、配送方式、支付方式 帮助信息 具体内容后台添加即可 支付 描述:分为货到付款 和 供)。
支付宝(需自行于支付宝签约,并提供接口密码)(待提
货到付款情况描述: 用户提交订单(选择支付方式:货到付款)------用户订单情况同时提交到班级小管家 和管理员后台(订单状态显示为等待买家付款)-------网站发货到班级小管家(小管家可先 行垫付或早些收款支付给网站送货人员,小管家在班级订单上找到该用户订单,并点击已 收货和付款----送货人员返回把货款交与网站管理人员,并点击已付款,完成。完成单笔交 易。
第四篇:UML实验报告
一:需求分析
在我国十年前ATM(自动取款机)还是一个很新鲜的事物,现在在城市的大街小巷随处可见。我们在日常生活中也经常和ATM打交道。本章我们将以简化的ATM系统为例将前面几章中学到的用例图、类图、顺序图、状态图、活动图及协作图知识运用到此例中。二:银行ATM机系统UML建模设计 1.用例图
参与者“银行储户”和ATM机。简化后的ATM机仅有取款、存款及其余功能。其余功能不做详细说明。
银行储户在ATM机上完成取款、存款及其他业务。2.类图
整个银行系统包括了帐户库、银行储户库及ATM系统。
许多单个的帐户组成了帐户库。帐户具有帐户类型、帐户号、余额三个属性,均为private,其类型分别为char,int,double。六个操作分别为setType、getType、getAccountNumbe、setAccountNumbe、caculateBalance、getBalance,除caculateBalance为protected其余均为public。
setType设置帐户类型,返回类型为void,参数类型为char,输入帐户类型。getType获取帐户类型,返回类型为char,无参数。
setAccountNumbe设置帐户号,返回类型为void,参数类型为int,输入帐户号。getAccountNumbe获取帐户号,返回类型为int,无参数。
caculateBalance计算余额,返回类型为void,参数为double,第一个参数为输入存取款数额,第二个参数为存款余额,既为输入也为输出。getBalance获取帐户余额,返回类型为double,无参数。
许多银行储户组成了储户库。ATM系统包含了许多ATM机。银行储户及ATM机两个类包含哪些属性,哪些操作,它们的可见性及操作的返回类型、参数个数、参数类型从类图上都一目了然。更多的属性及操作都可以一一加上,使这个类图更详细更完整,从而使参与项目的每个成员都能无歧义的明了整个设计的类的结构。同样对于一个真正的银行系统,这个类图过于简单。比如帐户类型我们可以先定义一个abstract class,它包含一个帐户最基本的属性及操作。而有些操作先定义为abstract,如余额的计算。然后再继承这个abstract class,我们可以有saving account 和checking account等等。不同的帐户有不同的余额计算方法,我们可以加上具体的算法。对于不同的帐户可能还有一些它特有的操作,我们也可以加上,比如saving account在存款达到多少时可以享受机票打折的优惠。通过类图不仅可以使设计者明确的表达自己的设计意图,也能帮组自己整理思路,充实及优化自己的设计。
3.顺序图
描述顾客在ATM机上取款时信息的流动情况。以时间为顺序。因为是示例图,所以整个过程是没有出现任何故障时的流程,并且只画到了取款结束。通过这个图,我们可以看出消息是如何在系统中不同对象之间进行交互。
通过流程图我们可以很清楚地看到系统是如何工作的,系统各部分之间的信息及控制是如何发送的,整个流程是否合理。流程图对我们的设计起到了很好的帮助作用。注意在本图没有一个生命线终端有一个“X”,这是因为这个流程中还未遇到有对象生命结束。当有对象生命结束时需在对应的生命线终端画“X”,表明这个对象在这时被销毁。
首先银行储户将ATM卡插入读卡机,读卡机将信息传给客户管理,客户管理提出查询密码,显示部分将输入密码请求显示出来….银行储户读卡机显示输入设备客户管理点钞机事务管理1: 插入ATM卡2: 接受ATM卡3: 查询密码4: 显示输入密码请求5: 输入密码6: 密码传递7: 请求确认密码的合法性8: 确认密码的合法性9: 询问服务类别10: 显示输入服务类别请求11: 输入取款请求12: 取消请求13: 询问取款数额14: 显示输入数额请求15: 输入取款数额16: 传递取款数额17: 询问取款数额确认18: 显示确认数额请求19: 输入确认20: 传递确认信息21: 数额合法性确认请求22: 确认数额的合法性23: 计算储户余额24: 出钞请求25: 出钞26: 取钞27: 传递余额并询问是否需要其它服务28: 显示储户余额并显示其它服务
第五篇:UML实验报告[推荐]
UML实验报告
班 级:软件0841
姓 名:张文成 学 号:081842173
实验内容:
用例建模、分析建模、设计建模(1)、设计建模(2)
实验一:用例建模
[实验目的] 〃掌握客户需求分析的方法和步骤
〃了解以用例驱动的软件开发方法 〃识别并编写用例
〃掌握用Rose 进行用例建模的具体方法和步骤
[实验内容] 要求学生根据周围的实际情况,自选一个小型应用项目,分析业务需求,识别并编写用例、绘制用例图以理解系统需求。亦可采用教师指定的“企业综合信息管理系统”中的“进销存管理子系统”
[实验原理和步骤] 建模原理:
(1)需求获取。以任务和客户为中心,通过会议、面谈等手段对客户需求进行调研,获得系统目标、范围和功能要求的初步说明。(2)用例分析。确定用例,同时采用分层思想,对用例的层次级别进行划分(高层用例、子系统级、用户目标级)
(3)用例描述。分层绘制用例图,撰写用例的文字描述(采用单栏格式)。
步骤:
(1)需求获取。自选题目,与相关客户、领域专家等反复商讨,获得系统目标、范围和功能要求的初步说明。(也可采用教师指定的题目:“企业综合信息管理系统”中的“进销存管理子系统”,但要仔细研读“企业现状”、“系统目标、范围和功能要求”等文字说明)。(2)用例分析。确定系统范围和边界、确定参与者、确定用例。(3)用例描述。分层绘制用例图、描述用例。
画图原理:
采用Rose 软件进行用例建模必须建立在完好的系统用例分析基础之上.只有做好系统用例分析,系统用例建模才能这到预期的效果。步骤:
(1)分层绘制用例图,每层采用“包”进行管理。
(2)以“企业综合信息管理系统”-> “进销存管理”子系统-> “销售管理”-> “合同管理”->“收款单处理”为主线,完成附录2 中的操作过程(亦可选择“企业综合信息管理系统”-> “进销存管理”子系统-> “库存管理”-> “原材料出库”->“领料单处理”主线)
[ 实验结果]
实验2 分析建模
[ 实验目的](1)理解面向对象系统分析和对象类建模(概念建模)的概念(2)了解和掌握面向对象系统分析的方法和步骤(3)了解和掌握寻找待开发系统中类(概念)的方法和技巧(4)掌握使用ROSE 绘制概念模型的方法
[ 实验内容] 在用例分析的基础上,选择第一个迭代周期打算开发的用例,建立相关的概念模型。
[ 实验原理和步骤] 建模原理:
(1)使用概念目录列表(见下图)和非正式分析法(识别出问题域的文本描述中的名词短语,然后将其作为概念或属性的候选对象。)相结合的方法识别概念。因此,待开发用例的文字描述中,名词可能成为概念或属性的候选对象;表示行为的动词词组有可能成为事务型或过程型对象;形容词词组有可能对应抽象的名词型概念。
采用的技术基本上就是:ER 图+纯行为+OO 的聚合、泛化。(2)最终关联的数量介于“需要知道”型关联与【“需要知道”型关联+“需要理解”型(从通用关联列表中派生出 的,见下图)】之间。
步骤:
(1)识别关键用例作为第一个迭代周期的开发目标(一般是在用例图中被依赖得比较多的用例)。可以选“企业综合信息管理系统”-> “进销存管理”子系统-> “库存管理”-> “原材料出库”->“领料单处理”主线中的“领料单处理”用例;也可以选“企业综合信息管理系统”-> “进销存管理”子系统-> “销售管理”-> “合同管理”->“收款单处理”主线中的“增加销售合同”或“收款单处理”用例。(其实,选“库存管理”主线更合适;当然,如果要实现产销一体化,以销售订单指导生产和采购,并实现零库存目标,那么一切工作就以销售管理为中心。即便如此,首选“增加合同”用例也更为合适。)
(2)识别概念和重要属性。
(3)建立概念间的关联。
画图原理:
(1)可以采用“逻辑视图”下的类图描述概念模型,只不过每个类中只有类名和属性,没有方法。在概念建模 阶段也没有必要确定属性的类型和访问属性。
(2)概念间的关联可以采用一般关联(无方向实线),当然,对于聚合和泛化,应采用相应的连线(组合:实心菱形+实线;聚合:空心菱形+实线;泛化:空三角形+实线)
步骤:
(0)前提条件:第一个迭代周期可以选“企业综合信息管理系统”
-> “进销存管理”子系统-> “库存管理”->“原材料出库”->“领料单处理”主线中的“领料单处理”用例;也可以选“企业综合信息管理系统”->“进销存管理”子系统-> “销售管理”-> “合同管理”->“收款单处理”主线中的“增加销售合同”或“收款单处理”用例。做好与此用例相关的概念模型
(1)建立相关的概念模型的基础上,在“逻辑视图”下的类图中描述概念模型,可以直接在类图main 中绘制,也可采用类似用例图中用过的分包机制
(2)绘制概念和重要属性。(3)绘制概念间的关联。
[ 实验结果]
[ 实验总结] ① 对重点实验结果进行分析;
② 实验中的问题和提高:对自己的分析或设计进行评价,指出合理和不足之处,提出改进的方案。
③ 收获与体会:筛选概念的要点;区分概念与属性的要点;关联取舍的要点;画图时如何防止关联重名。
实验3 设计建模(1)
[ 实验日期]2011年5月20日 [ 实验目的](1)理解顺序图的基本概念
(2)了解和掌握软件工程中用例逻辑时序的分析方法(3)掌握使用ROSE 创建顺序图的方法
[ 实验内容] 在用例模型和概念模型的基础上,对首选的用例进行事件分解,识别出系统事件(系统操作),(并写出契约的后置条件);为每个系统事件画顺序图,为对象分配职责。
[ 实验原理和步骤] 原理:
(1)在系统顺序图中,所有的系统都被当成黑盒子看待,顺序图的重点是参与者发起的跨越系统边界的事件。
(2)系统事件是由某参与者发起的指向系统的输入事件。一个事件的发生能够触发一个响应操作的执行。
(3)请仔细研究下图,考察它是如何从左边的“购买商品”用例的文字描述中分解出3 个系统事件的。
(4)参照用例模型和概念模型,为每个系统操作估计后置条件。(实例创建、形成关联、属性修改)(5)按照设计模式为对象分配职责。
步骤:
(1)分析首选用例的文字描述,按事件进行分解,识别出系统事件。(下面以“企业综合信息管理系统”-> “进销存管理”子系统-> “销售管理”-> “合同管理”->“收款单处理”主线中的“收款单处理”用例为例)。
我们暂不考虑批处理。第一个核对,因为要将“货款金额填写到合同中”。后置条件显然有“销售合同”的属性修改。此合同显然已经存在,不需要创建,但需要根据合同编号find,然后形成关联。第二个核对需要根据合同明细到仓库的“存货明细”(概念模型中还没有)中去查。此核对发生前虽然敲了一下键盘,但随后并没有新的消息穿越系统边界,因此这仍然是同一个系统事件。先考虑成功场景,应该向库存系统发提货单(概念模型中还没有)就结束了。后续的削减库存(核销)、预警显然不是销售管理员的职权,并且真正的核销必须由仓库的发货人执行,才能保证货帐一致。并且“生产厂家”与“邮购公司”的运作方式不同,后者是自己的员工取货并邮寄,而前者还有可能是来人来车取货,这时仓库收到取货单后并不能立即自动处理(开发货单),必须等取货人到达才能处理。
根据题意,本项目应该是“生产厂家”模式。这又存在一个问题,如
果在开出提货单后不修改库存,可能影响并发用户和后续付款单的处理。所以有必要设计一个“临时存货明细”(概念模型中还没有)(不是真实的“存货明细”)供修改,何时按存货明细”进行刷新应该是库存管理系统的事(比如每天夜里刷新,但因为雨雪天气,取货 人迟迟不提货,是提货单作废(相当于退回销售系统,付款单变为未处理)还是就强行刷新(此时有冲突危险)?)失败场景。向“生产调度部门”发送“产品生产申请单”。如果是专门为此单进行生产,那么还应该有库存系统发来的“产品入库通知处理”用例来调用本用例进行发货。本题显然一概根据付款单运作,因此如果失败,就不处 理付款单,但按日期把它排在待处理付款单的前面。从前面的分析来看,就一个系统事件,我们就命名为“付款单处理(pb:付款单)”(2)为每个系统事件估计后置条件。(以上已做了部分分析)(3)按设计模式进行设计。
首先考虑控制者,领域控制者选参与者角色,即“销售人员”。为了避免使用FORM,窗口等表示层对象,我们人造一 个类”应用协调者”向控制者发送消息。
[ 实验结果]
① 对重点实验结果进行分析;
② 实验中的问题和提高:对自己的分析或设计进行评价,指出合理和不足之处,提出改进的方案。
③ 收获与体会:事件分解的要点;控制者选择的要点;绘制顺序图的要点。
[ 实验总结] ① 对重点实验结果进行分析;
② 实验中的问题和提高:对自己的分析或设计进行评价,指出合理和不足之处,提出改进的方案。
③ 收获与体会:事件分解的要点;控制者选择的要点;绘制顺序图的要点。
实验4 设计建模(2)
[ 实验日期] 2011年5月27日 [ 实验目的](1)理解面向对象类之间关联关系的概念(2)了解和掌握分析类之间的关联关系的方法
(3)了解和掌握待开发系统中类之间关联关系的分析方法(4)完善设计类图,掌握使用ROSE 对关联进行建模的过程
[ 实验内容] 根据设计建模(1)中的交互分析,进一步设计关联和对象可见性(补
上遗漏的关联),完善设计类图。
[ 实验原理和步骤] 建模原理:
(1)关联关系描绘了给定类的对象个体之间的语义连接,是类与类之间的连接。关联可以分为一般关联、聚合关 联、组合关联和依赖关联等。
(2)一般关联包括一对类的二元关联及多个类之间的多元关联。
(3)聚合(Aggregation)表示整体和部分之间较强的关联关系,聚合关系的多重性大于1,则称为共享聚合。
(4)组合(Composition)关系表示整体和部分之间有比聚合关系更强的关系,它们之间是一对一的关系,即同生死共存亡,组合关系不能共享。
(5)依赖关系是一种使用关系,表现为一个对象仅仅调用了另一个对象的服务。可以使用下列的指导方针列出暂时性的关系:
(1)存在两个或两个以上的类相互之间就可能有关联。(2)类的操怍(成员函数)的参数列表里出现其他类的对象。(3)一个类包含另一个类的对象(对象成员)。(4)根据一般常识可能会出现的关联。步骤:
(1)分析已建立的设计类图和交互图,进一步设计关联和
对象可见性(补上遗漏的关联)。(下面以“企业综合 信息管理系统”-> “进销存管理”子系统-> “销售管理”-> “合同管理”->“收款单处理”主线中 的“收款单处理”用例为例)。
在销售管理子系统中,定义的各个类之间一般都有关系发生。销售人员和客户(大客户)共同签署销售合同,销售合同中涉及到多种可以销售的产品,合同经公司经理审查并签字后该合同才能生效,付款单需要客户付款,销售人员签发催款单向客户催缴欠款,销售人员制定销售计划,销售人员要检查督促执行期合同按合同执行、履 约,履约后的合同转到履约合同数据库存档备查等等。例如:
(a)销售人员与客户:一般关联,多对多
(b)销售合同与合同明细,销售计划与计划明细:组合。(c)付款单与客户:依赖关系。《如果付款单类中有“统计付款金额(客户类客户对象)”操作的话,付款 单类就依赖客户类》(2)完善设计类图 画图原理:
(1)关联关系描绘了给定类的对象个体之间的语义连接,是类与类之间的连接。关联可以分为一般关联、聚合关 联、组合关联和依赖关联等。
(2)一般关联包括一对类的二元关联及多个类之间的多元关联。
(3)聚合(Aggregation)表示整体和部分之间较强的关联关系,聚合关系的多重性大于1,则称为共享聚合。
(4)组合(Composition)关系表示整体和部分之间有比聚合关系更强的关系,它们之间是一对一的关系,即同生死共存亡,组合关系不能共享。
(5)依赖关系是一种使用关系,表现为一个对象仅仅调用了另一个对象的服务。步骤:
(1)在关联和对象可见性分析的基础上,补充一般关联、组合,泛化、依赖
(a)一般关联关系要注意关联的命名以及哪个是role A 哪个是role B。
(b)一般关联选中role B detail 中的aggregate,就变成聚合;再选中by value 就变成组合。(c)依赖画虚线箭头。(2)完善设计类图
[实验结果] ① 对重点实验结果进行分析;
② 实验中的问题和提高:对自己的分析或设计进行评价,指出合理和不足之处,提出改进的方案。
③ 收获与体会:分析依赖关系的要点,绘制关联的要点。通过实验了解UML的建模的步骤和方法,了解用例图和类图等的画法,了解系统的分析和建模方法。增加动手和思维能力,使自己更加的了解软件系统前期开发的软件定义和分析方法。