关键字:UML 业务建模 实例分析
对于大中型信息系统,很难直接进行需求分析设计,需要借助模型来分析设计系统,根据系统调研数据,建立起目标系统的逻辑模型。 在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它是整个过程中最为关键的一个过程。假如在需求分析时分析者们未能正确地认识到客户的需求的话,那么最后的软件实际上不可能达到客户的要求,或者导致需求的频繁变更,而软件无法在规定的时间里完工。 在需求分析阶段,要对经过可行性分析所确定的系统目标和功能作进一步的详细论述,确定系统“做什么?”的问题,最终建立起目标系统的逻辑模型。 首先是获得当前系统的物理模型。物理模型是对当前系统的真实写照,可能是一个由人工操作的过程,也可能是一个已有的但需要改进的计算机系统。首先是要对现行系统进行分析、理解,了解它的组织情况、数据流向、输入输出,资源利用情况等,在分析的基础上画出它的物理模型。然后抽象出当前系统的逻辑模型。 逻辑模型是在物理模型基础上,去掉一些次要的因素,建立起反映系统本质的逻辑模型。接下来建立目标系统的逻辑模型。通过分析目标系统与当前系统在逻辑上的区别,建立符合用户需求的目标系统的逻辑模型。最后补充目标系统的逻辑模型。对目标系统进行补充完善 ,将一些次要的因素补充进去,例如出错处理等。 UML(The Unified Modeling Language,即统一建模语言)是一种编制系统蓝图的标准化语言,可以对复杂的系统建立可视化的系统模型,目前已经被工业标准化组织OMG(Object Management Group)接受,一经推出便得到许多著名的计算机厂商如Microsoft、HP、IBM、Oracle等的支持,也在逐步开始应用到需求分析过程中。 在使用UML建立当前系统逻辑模型过程中,初学者通常会遇到一些问题: 1.什么时候真正需要业务模型?什么时候用例模型独立存在? 2.在进行精确的业务建模时能用哪些UML图形?如何知道是否用顺序图或者交互图? 3.业务模型如何涉及到其他模型(如领域模型,用例模型等等)呢?如何有机地组织这些模型? 本文将通过图书馆管理系统这个简单而典型的实例来进行一次UML需求分析实践之旅。 许多读者对图书馆图书管理工作比较熟悉,主要是围绕读者、图书和工作人员的借还书展开工作。我们先看看图书馆工作人员和部分读者的需求。 读者来图书馆借书,可能先查询书库的图书记录。查询可以按书名、作者、图书编号、关键字查询。查询有两种结果,如果查到则记下书号,交给工作人员,然后等候办理借书手续。如果该书已经被全部借出,则可做借书登记,等待有书时被通知。如果图书馆没有该书的记录,则做缺书登记。 办理借书手续时先要出示图书证,没有图书证则去申请图书证。如果借书数量超出规定,则提示“借书数量超限,不能继续借阅”。工作人员登记借阅人信息、借阅的图书信息、借出时间和应还书时间。系统自动修改书库的图书记录、读者库信息。 当一位读者还书时,工作人员根据图书证编号,找到读者的借书信息,查看是否超期,如果已经超期,则进行超期处罚。 如果图书有破损、丢失,则进行破损处罚。清除借阅记录,同时系统自动查看是否有等待借阅登记,如果有则发出通知,修改书库记录,该书设置为已预订状态,否则设置为可借状态。 图书采购人员进行图书采购时,要参考各类图书的库存数和借阅率,注意合理采购。如果有缺书登记则随时进行采购。正在采购的图书组成一个采购中书库。 采购到货后,进行验收,编号,同时加入图书库,修改采购中书库,并且查看订阅库,发出到书通知,并且已经修改书库的图书记录为已预订状态。 借书登记是当欲借的书被借空后,读者自愿选择的一种操作,它应该记录读者名和联系方式,一旦有这本书后可通知读者。 到书通知,当读者预订的书来到之后,按照读者给出的联系方式发出通知。 缺书登记是当读者需要的书库内查询没有记录时,将此信息转入缺货库,通知采购员采购。 图书注销,如果图书丢失或旧书淘汰,则将该书从书库中清除。 根据需求描述整理一张需求表: 需求分析时首先要识别出系统的参与者,在简单的图书馆管理系统中,可以划分出两种参与者:读者和管理员。当然,根据业务的复杂程度,参与者也可以进行细分,比如读者可以再分为学生读者、教师读者、校外读者,管理员根据业务和权限的不同可以再细分为库房管理员、借还书操作员、系统维护人员、图书馆管理人员等不同角色。在这里,为了简化处理,我们只列出了读者和管理员。对参与者描述如下: (1)读者 描述:读者可以借阅、预定、归还物理书刊,可以对书籍和个人信息进行查询,可以取消预定,可以提出办卡申请。 示例:持有借阅卡的任何人和组织。(2)管理员 描述:图书管理员对系统进行维护,包括读者信息的创建、修改、删除,书刊信息的维护,条目信息的维护,还有系统信息的维护。 示例:图书管理员。 通过识别的参与者,对需求进一步分析,将业务需求进行分解,获得每个参与者的使用用例。在本例中,我们可以得到以下用例: