在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它是整个过程中最为关键的一个过程。假如在需求分析时分析者们未能正确地认识到客户的需求的话,那么最后的软件实际上不可能达到客户的要求,或者导致需求的频繁变更,而软件无法在规定的时间里完工。
在需求分析阶段,要对经过可行性分析所确定的系统目标和功能作进一步的详细论述,确定系统“做什么?”的问题,最终建立起目标系统的逻辑模型。
首先是获得当前系统的物理模型。物理模型是对当前系统的真实写照,可能是一个由人工操作的过程,也可能是一个已有的但需要改进的计算机系统。首先是要对现行系统进行分析、理解,了解它的组织情况、数据流向、输入输出,资源利用情况等,在分析的基础上画出它的物理模型。然后抽象出当前系统的逻辑模型。
逻辑模型是在物理模型基础上,去掉一些次要的因素,建立起反映系统本质的逻辑模型。接下来建立目标系统的逻辑模型。通过分析目标系统与当前系统在逻辑上的区别,建立符合用户需求的目标系统的逻辑模型。最后补充目标系统的逻辑模型。对目标系统进行补充完善 ,将一些次要的因素补充进去,例如出错处理等。
UML(The Unified Modeling Language,即统一建模语言)是一种编制系统蓝图的标准化语言,可以对复杂的系统建立可视化的系统模型,目前已经被工业标准化组织OMG(Object Management Group)接受,一经推出便得到许多著名的计算机厂商如Microsoft、HP、IBM、Oracle等的支持,也在逐步开始应用到需求分析过程中。
在使用UML建立当前系统逻辑模型过程中,初学者通常会遇到一些问题:
1.什么时候真正需要业务模型?什么时候用例模型独立存在?
2.在进行精确的业务建模时能用哪些UML图形?如何知道是否用顺序图或者交互图?
3.业务模型如何涉及到其他模型(如领域模型,用例模型等等)呢?如何有机地组织这些模型?
本文将通过图书馆管理系统这个简单而典型的实例来进行一次UML需求分析实践之旅。
许多读者对图书馆图书管理工作比较熟悉,主要是围绕读者、图书和工作人员的借还书展开工作。我们先看看图书馆工作人员和部分读者的需求。
读者来图书馆借书,可能先查询书库的图书记录。查询可以按书名、作者、图书编号、关键字查询。查询有两种结果,如果查到则记下书号,交给工作人员,然后等候办理借书手续。如果该书已经被全部借出,则可做借书登记,等待有书时被通知。如果图书馆没有该书的记录,则做缺书登记。