中文介绍(高校版)

查看本文的最新版本:ZenUML的使用场景——高校

ZenUML是一款在软件、通信、电子相关的高校及教育机构和IT企业广泛使用的UML序列图画图工具。很多老师在课堂上使用ZenUML描述协议或者介绍UML的组件(Participant,Occurrance,Lifecycle等)。也有的老师使用ZenUML给学生布置序列图相关的作业,或者讲解对象建模的方法。截至目前已经有超过50,000人使用ZenUML创建序列图。

本文简单介绍ZenUML的三个典型应用场景。

建模

适用领域:软件、需求管理、流程分析

在软件开发过程中我们需要做不同的抽象层级上描述一个流程(Process)。这个流程通常表现为多个对象、实体、参与者之间的调用关系和交互。下图是一个RESTFul的GET API的实现。

值得注意的是,上面的序列图并不是以图片的形式保存在这个文档上面,而是以文本的形式存储的。这里我们称之为ZenUML的领域特定语言DSL。我们把生成的文本和对应的序列图做一个简单的对照。您会发现DSL用最简洁的文本完整的描述了序列图的内容,修改序列图也只需要修改DSL即可。

DSL序列图
BookController.getBook(id) {
  bookDto = BookService.getBook(id) {
    bookEntity = BookRepository.findOne(id)
    new BookConverter()
    bookDto = BookConverter.convert(bootEntity)
  }
}

描述协议

适用领域:通信、电子、计算机和软件

大部分的通信协议表现为通信的双方或者多方按照某个顺序发送和接收信息。下图是一个关于HTTPS客户端(通常为浏览器)与服务器交互的序列图。

DSL序列图
Client->Server: Client Hello
Server->Client: Server Hello
Client->CA: Validate server cert
CA->Client: Valid
Client->Server: Client Key Exchange
Client->Server: Change Cipher Spec
// If required
Server->CA: Validate client cert
CA->Server: Validate client cert

Client->Server: Client Finished
Client->Server: Change Cipher Spec

Server->Client: Change Cipher Spec
Server->Client: Server Finished

文档

适用领域:概要设计、详细设计文档,用户手册,技术教程等

序列图是软件工程和技术教程中不可或缺的部分,特别适用于描述一个时间序列上多个参与者时间的交互关系。下图是一个单例设计模式的序列图。



@Starter(Client)
theInstance = :Singleton.getInstance() {
  if (theInstance == null) {
    theInstance = new Singleton()
  }
}


如果您要查看更多关于我们的DSL设计请查看https://app.zenuml.com/help.html。你有任何问题请发送邮件至:support@zenuml.com。我们非常愿意回答您的问题。