在这里,需要解释一下所谓的“三层”结构模型:用户界面层、事务规则层和数据层。三层结构是对客户/服务器结构的扩展,在客户/服务器模型把用户界面和数据存贮与处理分离的基础上,三层结构把事务规则独立成为一层。为什么呢?大家知道,在一个系统中,最容易发生变化的是系统的界面,其次是系统的处理逻辑、规则和功能,最稳定的是系统中的数据。如果我们把处理逻辑放在客户端,那么对处理逻辑的任何一点修改都要对每个客户进行修改;反过来,对用户界面的改动也可能会影响到处理逻辑。如果我们把处理逻辑放在服务器一端呢?势必会影响到数据的稳定性。所以,把处理逻辑单独分为一层,可以使系统的结构更加清晰、可扩展性、稳定性更强,为以后的扩充和维护带来了极大的好处。现在很多公司都出品自己的专门用于中间的事务规则层的所谓“应用服务器”,包括NetScape的Application Server、Microsoft的Transaction Server等等。随着Internet和WWW的发展和“瘦客户”的流行,用户界面逐渐向浏览器上靠拢,而应用服务器和Web服务器的结合也日渐紧密,这些发展对进一步降低成本,增强系统的扩充性、可配置性、可管理性等等都起到了很大作用。
面向对象软件工程的一个很大的好处就是在分析和设计之间没有什么明显的区别,更不会有传统软件工程中在分析和设计之间的语义上的鸿沟。在分析进行到一定程度时,把具体实现环境的因素考虑进来,就自然过渡到了设计阶段。由于我们的小例子使用文件系统存贮ToDo表的信息,所以我们需要一个CFile类来封装文件系统的功能和操作。
至此,我们的小例子的静态结构分析和设计已经有了初步的成果。接下来,可以根据这些成果分析和设计系统的动态结构。这包括细化和修改Use Case的描述,比如把类的操作和对象之间的消息相对应、充填参数等等,还有为比较复杂的类设计状态图等工作。因为这个例子比较简单,没有什么比较复杂的类,所以没有必要设计状态图,只需要细化一下Use Case的顺序图就可以了。
这些分析和设计的工作经常是相互影响和促进的。你常常会在分析动态结构的时候,发现漏掉了一个类、一个属性,或者需要加上一个操作;而随着对静态结构的进一步深入刻画,对类之间的关联、消息传递的设计也会不断发生变化。所以我们要不断的对设计方案进行深化和细化,直到达到一个稳定的状态,这时我们就可以考虑系统的实现了。
实现模型
在逻辑模型建立之后,我们可以建立实现模型。
在实现模型中,我们定义一些组成软件系统的部件,比如DLL库啦,EXE文件啦,Java Applet啦,ActiveX Control啦,Web页面啦等等。定义这些部件和它们之间的关系,对代码的自动生成、软件系统的配置、测试管理、软件的打包发行等等都有很大的好处。
对于我们这个小例子,只有一个部件——最终的EXE文件ToDoList。
在ROSE中的Component View包中,我们创建这个部件。然后可以将各个类拖动到这个部件上,这表示这些类最终是用这个部件实现的。
做完了所有这些活,我们就可以自动生成代码了!ROSE可以自动生成C++、Java、CORBA IDL、Visual Basic、Visual C++、Oracle Schema等等不同语言和系统的代码,并且可以进行“双向工程”——模型和代码之间的双向转换,大大减轻了代码书写的工作。可是代码生成内容很多,已经不是我们这个简单的教程所能包容的了。只有等以后有时间在作个专题吧。很期待吧?呵呵,那就请你多支持我喽!
文章来源于领测软件测试网 https://www.ltesting.net/