小结

需求分析

用例图

类图

顺序图

活动图

状态图

构件图

部署图

案例:图书馆信息系统

内容提纲

案例介绍

理解需求

分析

设计

实现

案例介绍

本案例是一个图书馆信息系统,主要处理书和杂志的借阅和保存。

本案例研究的目的:

1、演示在一个完整的应用中如何使用UML,从分析到设计模型,到真正的代码和可运行的应用。

2、以Rational Rose为例说明用UML建模工具。

理解需求

1、图书馆将书和杂志借给读者,读者和书杂志一样必须在系统中注册。

2、图书馆负责购买图书,对于流行的书一般要多买基本,如果旧书或杂志过期了或很破烂则可以从图书馆中删除。

3、图书馆管理员是图书馆的雇员,负责与客户(借书者)打交道。他们的工作要得到系统的支持。

理解需求

4、借书者可以预定目前借不到的书或杂志,一旦预定的书被返还给图书馆或图书馆新购买书到达就立即通知预定者。

5、图书馆可以方便的产生、更新和删除系统中与数目、借书者、借书(loan)和预定的有关信息。

6、系统能够在所有流行的技术环境下运行(UNIX,Windows,OS/2等等)还应该有一个非常好的图形用户界面(GUI)

7、系统应该具有很好的可扩展性

分析

·分析就是描述系统的需求,通过定义系统中的关键域类来建立模型。

·分析的根本目的是在开发者和提出需求的人(用户/客户)之间建立一种理解和沟通的机制。因此,典型情况下,分析时开发人员同用户或客户一起来完成的。

·分析不受技术方案或细节的限制。在分析阶段开发人员不应该考虑代码或程序的问题,它是迈向真正理解需求和所要涉及的系统的第一步。

需求分析

·分析的第一步是定义用例,即描述图书馆系统的功能:确定系统的功能需求。

·用例分析主要涉及阅读和分析规格说明,和系统的潜在用户讨论。

·下面我们从角色和用例两个角度讨论。

角色

·角色

       图书馆中的角色为图书管理员和借书者。

       图书管理员是系统的用户而借书者是客户,虽然偶尔图书管理员或另一个图书馆也可能是一个借书者。

借书者的目的不是直接同系统交互,借书者的功能由图书管理员来实现。

用例

图书馆信息系统中的用例如下所示:

借出书目(Lend item)

返回书目(Return item)

预定(Make Reservation)

删除预定(Remove Reservation)

增加标题(Add Title)

更新或删除标题(Update or Remove Title)

增加书目(Add Item)

删除书目(Remove Item)

增加借书者(Add Borrower)

更新或删除借者书(Update or Remove Borrower)

用例“借出书目”的描述

·用例借出书目的描述如下:

1)用例借出书目的描述如下:

A、标记标题

B、标记可用的该标题下的书目

C、标记借书者

D、   图书馆借出标记的书目

E、 增加一条新的借书记录

2)如果借书者已经预定

A)标记借书者

B)标记标题

C)标记可用的该标题下的书目

D)   图书馆借出标记的书目

E) 增加一条新的借书记录

F) 删除预定记录

设计

·架构设计:

       在架构设计中,需要定义包(子系统)包间的相关性和基本的通信机制。一个很自然的要求是,得到清晰而简单的架构,即在架构中,相关性要尽可能少,双方相关性要尽可能的避免。

·详细设计:

       本部分将包的内容细化,即尽可能详细的描述每一个类,使得编程人员根据它们很容易地编码,UML中的动态模型被用来显示类的对象在指定的情况下如何动作。

架构设计

·一个好的设计架构是系统可扩展和可改变的基础。

·包关心的是某一指定功能域或技术域的处理。将应用逻辑(域类)和技术逻辑分开是很关键的,从而使得任何一个改变不至于对其他部分有太多的影响。

·在定义架构时需要描述的关键事情是:

       标识和建立包间相关性规则,使得包间不存在双方相关性(避免包紧耦合在一起);

       明确必须的标准库和发现要使用的库。

详细设计

·详细设计产生新的类图、状态图、序列图、协作图和活动图)。这些图与分析阶段中的图是一样的,但是在此处这些图的定义更详细,涉及更多的技术细节。

用户接口设计

基于用例的图书馆应用汇总的用户接口被分成四部分,每一部分在主窗口菜单中有一个独立的菜单包,如下所示:

功能(functions)系统中的基本功能窗口也就是说借书还书和预定

       信息(information)浏览系统中的信息窗口有关标题和借阅者的信息。

维护(Maintenance)维护系统的窗口也就是说增加更新删除标题借阅者和数目。

实现

·对于编码,从下列设计模型中的图获得规格说明:

——类说明(Class Specifications):每一个类的规格说明详细显示必须有的属性和操作

——类图(Class Diagrams):类图显示类的静态结构和类间的关系

——状态图:类的状态图显示类的所有可能到达的状态以及需要处理的状态转移(以及触发状态转移的操作)

——行为图(序列图协作图活动图):显示类中方法的实现以及其它对象如何使用类的对象

——用例图:当开发人员感到他正从细节中迷失时,可以通过改图来了解使用系统的结果。

小结

本节通过一个具体的例子来说明分析模型的产生,并将分析模型扩展和细化成设计模型,最终用Java来实现系统。