(天津机电工艺学院,天津 300350)
假如你的项目组负责开发某款应用软件,事先将相关资料、程序员、工具配备齐全,随后你就开始紧锣密鼓的工作,表面看上去这符合一般事务的发展规律,实际上这是非常错误的行为。比如:在你制作的过程中甚至制作完毕,客户提出了新的改进意见,会不会导致你整个工程的作废?在这期间,你的项目所付出的代价太高了,时间最后没有转化成利益,这样的结果使我们不愿意看到的。如果我们预估了风险,在正式施工之前做了各种模型和预案,即使出现了意外情况,我们也能将风险降到最低。
如今在开发软件过程中,正式进入“实施”阶段前,广泛采用的方式就是系统分析技术。我们需经历需求分析、业务流程分析、架构设计、系统总体设计、详细设计等阶段,在每个阶段都会产生文档。而期间产生的文档,便成了日后编写程序的依据,我们依照文档中的软件设计“模型”,用一种我们所熟知的程序设计语言实现即可。“建模”是许多工程领域广泛采用的技术,我们建造房屋,生产汽车都能借助模型让用户得到未来实际物体的印象。在系统开发领域中,建模的过程实际上就是制作系统蓝图的过程。
UML(统一建模语言)就是一种满足上述要求的工具,由它便可轻松的描绘出系统的蓝图。它将一个复杂的问题简单化,可实现大型复杂系统各种软件成分描述的可视化,清晰的说明系统的结构和行为,指导我们描绘出系统的模型,并产生用于日后决策的文档。
使用UML来绘制模型,需要先从系统中分析出两个问题,它们分别是:事物以及事物之间的关系,然后根据规则导出图形,这三个内容具体划分如图1所示:
图1 UML的内容结构图
例如,在学生选课系统当中学生选课行为的Use Case模型如图2所示,该图只包含了最上层的Use Case模型,是系统某功能模块的高层抽象,在今后的开发实践中,我们会对问题进一步的进行分解,随之Use Case模型便会自上而下进行细化,描绘出更详细的Use Case模型。
图2 学生选课的模型图
使用UML作为工具,采用面向对象的方法对学生选课系统进行分析,从系统的主要功能为出发点,而后逐步进行细化设计。处理好一组类、接口和协作及它们之间的关系,随之建立类图。状态图用来描述一个指定对象的状态、事件和事件之间的活动。它用来描述系统的动态行为,大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为。一个状态图包括一系列的状态以及状态之间的转移。将已有的状态图特殊化,便形成了活动图。活动图在系统分析和设计的过程中使用比较频繁,它既可用来描述类的动态行为,也可以描述事件内部的工作过程。虽然活动图是由状态图演变而来,但是它们分别表示了不同的意义。
我们利用UML,举了简单的实例,对用于分析的图形工具做了简单地介绍。实际上我们在画图的同时就是逐步深入了解系统的过程,是对系统建模的过程。在UML中,图形工具有很多,但它们各自的出发点不同,也将服务于我们不同的分析目的。从应用的角度看,当采用面向对象技术设计系统时,首先是系统进行需求分,而后根据需求分析的结果导出系统的用例图、类图、配置图等静态模型,其目的是构造系统的结构。而后下一步我们要做的是导出系统的动态模型,其中包括状态图、活动图等。
实际上,从上面的分析我们可以看出,在一个软件项目的开发过程中,仅仅利用一种视图描述模型是不够充分的,应该采取多视角的方式逐步求精。例如:如果我们正在装修我们的新房,我们在正式装修前为这个新房绘制了一系列装修图纸,但是单一拿出任何一张图纸,完全不能说明新房的装修过程或者细节规划。如果我们要向深入了解,必须准备好它的平面房型图、立体成型图、电气规划图、水路改造图等等。然而,我们在独立绘制了装修所需要的各种图纸之后,还需要充分考虑施工时它们之间会产生的联系。比如:我们所绘制的电气规划图,完全要和新房的平面图相联系,合理布局;并且要保证不与新房的水路改造图相冲突。在系统分析与设计的过程中也是如此,为了清晰的描述系统的某个局部问题的结构,需要将各种视图有机的结合起来。利用系统架构图展示系统的整体结构、用例图展示系统当中操作者或其它模块与事件之间的联系、交互视图展示系统各部分之间以及系统与环境之间的联系、实体联系图展示了系统数据库的细节等等。一个大型的系统必定是复杂的,它不仅仅由各种功能模块或者各种部件组合而成的,它是在已经建立的各个部件基础上,根据一定的规则串联起来的,彼此相互依赖的构成一个整体。
在所有的软件项目开发过程中,都应该将建模工作放在首要位置。经统计表明,很多软件在开发过程中都很少采用系统的建模方式,甚至根本没有采用;而随着软件开发规模的减少,建模的方式也显得非正式起来。他们经常在纸张上勾勒一些草图或者用电脑记录一些过程,实际上,这种方式也是很正确的。他们认为,凡是有助于系统开发的行为都可以采用。即使非正规的模型不能精细的描述出系统的细节,但我们仍然可以从里面找到一些有价值的东西,也可以得到一些蓝图。然而,这些举动是十分不正式的,它没有一种标准的语言来描述、没有统一的格式,没有统一的规则。如果我们采用标准化的形式来说明,那么每个开发项目都能从中得到益处。建模可以帮助我们在系统开发的过程中,随时发现不合适的构造,项目规模越大,则产生这种情况的可能性就越大。
如今,建模这种技术已经深入到各个学科领域中了,如果我们脱离了建模技术,直接就装修了新房、制造了飞机和汽车,那么结果是很难预料的。在新房正式装修前,我们需要一定程度的建模,以便日后能够更好的施工;在正式拍摄电影前,我们写了剧本,剧本本身就可以理解为模型。在软件开发过程中,不成功的案例举不胜数,原因各不相同;但成功的案例是有着很多相似之处的,其中最关键的技术是采用了建模。
参考文献:
[1]吴建等.UML基础与ROSE建模案例[M].北京:人民邮电出版社,2004.
[2]陈承欢.管理信息系统基础与开发技术[M].北京:人民邮电出版社,2005.