软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
第9章 案例分析—图书馆管理系统
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
我们将通过一个具体的项目开发实例,简要介绍面向对象软件工程的一些基本机制
希望大家学习的同时注意对面向对象方法和统一软件过程的理解。
学习目的
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
需求工程--需求收集
需求获取是软件系统开发的起点。
通常我们可以通过会谈、集体讨论等有效的方式获取、理解用户需求。
最终采用文档—需求
文档的方式把所收集的需求文档化。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
需求收集
在图书管理系统需求规范文档中可能指出如下内容:
这是一个图书馆支持系统;
图书馆将图书和杂志借给借书者。借书者已经预先注册,图书和杂志也预先登记;
图书馆负责新书的采购。每一本图书都购进多本书。当旧书超期或破旧不堪时,从图书馆中处理掉。
图书管理员是图书馆的员工。他们的工作就是和读者打交道并在软件系统的支持下工作。
借阅人可以预定当前没有的图书和杂志。这样,当他所预定的图书和杂志归还回来或购进时,就
预定人。当预定了某书的借书者借阅了该书后,预定就取消。或者通过显式的取消过程强行取消预定。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
需求收集
图书馆能够容易地建立、修改和删除标
、借书者、借阅信息和预定信息。
系统能够运行在所有流行的技术环境中,包括Unix, Windows 和OS/2
系统容易扩展新功能。
这里我们暂时不必考虑预定的图书到达后通知预定人的功能,也不必检查借书过期的情况。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
用例建模
为了理解系统所要解决的业务问题,以便掌握用户需求,我们可以采用用例图进行需求建模。
用例图描述了外部用户所能观察到的系统功能。
它通过列出用例和角色,显示用例和角色的关系,从而给出了目标系统的功能。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
用例建模
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
用例文档的编写
应该为图书管理系统用例图中所有用例编写用例文档。
用例文档中应包括如下内容:
名称
描述
前置条件
后置条件
活动的基本过程;
在用例文档中还可添加一些可选内容,如参与者、状态、扩展点、被包含的用例、变更历史。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
用例文档
名称:Lend Item
描述:读者借阅图书馆中的书刊
前置条件:
借书者已经预先注册,图书和杂志也预先登记;
后置条件:
如果读者已经注册,且图书馆内读者所借书刊处于可借阅状态,则读者借得书刊,产生一条借阅记录。
活动的基本过程:
如果读者(借用人)没有保留:
书刊标题被识别;
书刊标题的一个可得的栏目(项)被识别;
读者(借用人)被识别;
图书馆借这个项(书刊);
新的借出被记录。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
用例文档
如果读者(借用人)有预定:
读者被识别;
书刊标题被识别;
书刊标题的一个可得的栏目(项)被识别;
图书馆借出相应的书(项);
新的借出被记录;
预定被删除。
需求工程阶段得到的用例图在许多教材中称之为本质用例即Essential Use Case--我们这里沿用这种称呼。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
确定构建内容--面向对象分析
分析过程的主要成果以及它们之间的联系如下:
需求工程关注理解用户和他们的使用,而分析关注于理解要构建的内容。
分析是一个迭代的过程!
用例图
顺序图
类图(分析)
活动图
用户界面原型
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
确定构建内容--面向对象分析
在分析阶段需要本质用例转化成系统用例。
系统用例图除了包含本质用例的基本内容外,还添加了更多目标系统高级实现决策。
系统用例的编写
系统用例编写非常简单—从本质用例开始,修改它们并反映使用顺序图、活动图、用户界面原型等模型捕获得信息。
依据RUP,软件开发过程的迭代性质,我们这里首先构建系统用例,然后使用顺序图可视化系统用例中部分用例的实现细节,最后适当调整系统用例。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
确定构建内容--面向对象分析
构
建
系
统
用
例:
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
确定构建内容--面向对象分析
使用顺序图可视化系统用例中部分用例的实现细节:
Lend Item
Return of Item
Make Reservation
Remove or Update Title
Add Title
Add Item
Remove Item
Add Browser
Remove or Update Borrower
Remove Reservation
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
确定构建内容--面向对象分析
用例Lend Item的实现细节—顺序图:
Lend item
Lend a reserved item
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
Lend item
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
Lend a reserved item
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
域分析
系统分析也详细地列出了域(系统中的关键类)。为了导出一个域分析,可以阅读规范文档(specifications)和用例,查找哪一些概念应该被系统处理
组织一个集体讨论,在用户及领域专家共同的参与下指出系统中必须处理的关键概念,以及它们之间的关系。
对象模型是面向对象分析和设计的支柱,它显示了系统的类,这些类之间的关系。
在分析阶段,对象模型表示概念模型,它是问题域抽象的扩展。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
域分析
图书馆系统中的域类如下:Borrower Information(如此命名是为了与用例图中的角色borrower 区分开来),title,book title, magazine title, item, reservation 和loan。这些类以及它们之间的关系记录在类图文档中,如下图所示:
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
有些类有状态图,用来显示这些类的对象可能具有的不同状态,以及触发他们的状态发生改变的事件。该例子中有状态图的类是item 和title 类。
Item类的状态图:
状态图
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
人机界面分析
当对顺序图建模时,必须提供窗体和对话框作为人机交互的界面。在本分析当中,只要知道借书、预定和还书需要窗体就可以了。在此,详细的界面不必考虑。
为了把系统中的窗体类和域类分开,所有的窗体类组织在一起放在GUI Package 包中。域类组织在一起放在Business Package 包中。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
人机界面分析
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
设计
设计阶段对分析模型进行扩展并将模型进一步细化,并考虑技术细节和限制条件。
设计的目的是指定一个可行的解决
,以便能很容易地转变成为编程代码。
设计阶段成果及其相互关系如下:
状态图
类图(设计)
协作图
持久模型
部署图
组件图
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
设计
设计可以分成两个子内容:
体系结构设计( Architecture Design)
一个从较高层次的进行的设计,用来定义包(子系统),描述包之间的依赖性及通信机制。
目的是要设计一个清晰简单的体系结构,具有很少的依赖性,而且尽可能避免双向依赖。
详细设计( Detailed Design)
--所有的类都详尽地进行描述,给编写代码的程序员一个清晰的规范说明。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
体系结构设计
本案例的包或叫子系统
User-Interface Package 包
类基于Java AWT 包,java AWT 一个用来书写用户界面应用程序的Java
库
该包和Business-objects Package 包协作
Business-objects Package 包包含那些实际存储数据的类
UI 包调用Business 对象的操作,对他们进行取出或插入数据操作。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
体系结构设计
本案例的包或叫子系统
Business-object Package
包括域类,这些域类(如borrower information,title,item,loan 等)来自于分析模型
设计阶段完整地定义了这些类的操作,并增加了一些其他细节来支持持续存储
Business-object 包与Database Package 进行协作
所有的Business-object 类必须继承Database Package 中的persistent 类。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
体系结构设计
Database Package。Database Package 向Business-object 包中的类提供服务,以便他们能够持续地存储。
在当前版本中,persistent 类将把它的子类的对象存储到文件系统的文件中。
Utility Package。Utility Package 包含了一些服务,用来被系统中其他包调用。当前,ObjId 类是该包中的唯一的类。用来被整个系统包括User-Interface,Business-Object 和Database package 使用。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
体系结构设计
目标系统所采用的体系结构如下:
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
详细设计
设计和分析阶段的变化:
系统的当前版本不要求检查书目是否按时归还,也不要求处理预定的次序。因此没有在loan 和reservation 类中设置日期属性。
除最长借阅期外,对杂志和书标题的处理方式是一样的
分析阶段的子类magazine title和book title 被认为在设计阶段是不必要的
在title 类中增加type 属性来指出该标题引用的是一本书还是一本杂志如果认为有必要的话,在将来的版本中这些简化都可以很容易地被取消。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
详细设计
设计模型中的动态模型放置在GUI 包中,因为所有和用户的交互都从用户界面开始。
顺序图由一系列的交互构成。在实现阶段(编码),考虑到具体情况,可能会有更多的交互。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
详细设计—Database Package
Database Package--应用程序必须有持续存储的对象
必须增加数据层来提供这样的服务
将对象以文件的形式保存在磁盘上
存储的细节被应用程序隐藏起来,只需调用诸如store(),update(),delete()和find()这样的公共操作即可
这些都是persistent 类的一部分,所有需要持续对象的类必须继承它。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
详细设计—Database Package
对类进行持续处理的一个重要因子就是ObjId 类。
它的对象用来引用系统中的任何持续对象(不管这个对象是在磁盘上还是已经被读进了应用程序之中)
ObjId 是Object Identity 的简写,它是一个广为应用的技术,用来有效地处理应用程序中的对象引用
通过使用object dentifiers,一个对象ID 能被传递到普通的persistent.getobject()操作中,进而该对象将被从持续的存储体中取出或存储
这些都是通过每个持续类的一个getobject 操作完成的
持续类同时也作一些检查或格式转换的操作
一个对象标识符也能作为一个参数很容易地在两个操作之间传递(例如,一个查找特定对象的查询窗口可以将它的查询结果通过object id 传递给另一个窗口)。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
详细设计—Database Package
ObjId 是一个系统中所有的包(User Interface , Business Object 和Database)都能使用的通用类,所以在设计阶段它被放置在Utility 包中,而不是放在Database 包中。
当前对persistent 类的实现还能改进。为此,定义persistent 类的接口,方便持续存储的改变。一些备选的方案可能是:将对象存储在一个关系数据库中或存储在面向对象的数据库中,或使用Java 1.1 所支持的持续对象来存储他们。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
人机界面设计
设计阶段的一个特定的活动是创建用户界面。
图书馆系统的用户界面基于用例,分为以下几部分,每一部分都在主窗体菜单上给出一个单独的菜单
Functions:实现系统基本功能的窗体,通过它可以实现借阅、归还和对图书的预定。
Information:查看系统信息的窗体,收集了借阅者和图书的信息。
Maintenance:维护系统的窗体,添加、修改和删除标题、借阅者和书目。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
人机界面设计
下图显示了一个User-Interface Package 中类图的例子。
包含了典型的AWT 事件句柄。按钮(button)、标签(label)和编辑(edit)等的属性没有显示。
每一个窗体都给出了系统的一个服务,并且映射一个最初的用例(尽管并非所有的用户界面都必须从用例中映射)。
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
图书馆管理系统人机界面
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
图书馆管理系统人机界面
软 件 工 程
东北电力大学优秀课程
第9章 案例分析—图书馆管理系统
图书馆管理系统人机界面