你为ASP.NET应用程序创建哪些UML图?

9
我在一家中型公司担任高级开发人员,负责开发相当大的项目(至少一年以上)。这里的大部分架构师都认为创建UML图表并不能证明所需的时间(尽管我们总是为所有项目创建ERD和一些非正式流程图类型的图表)。
我想至少为我工作的项目创建UML图表。根据我的快速研究,有以下几种方法:
1. 用于创建逻辑模型 - 对象角色模型(ORM) 2. 用于创建物理模型 - 组件、类、序列、活动 3. 用于数据库模型 - ERD
问题:
1. 在你的公司,你会创建哪些UML图表? 2. MS Visio是否具备创建上述所有图表的功能? 3. UML图表是基于正在开发的应用程序的类型而选择的吗?

3
我猜回答“无”并不是很有帮助?虽然我怀疑大多数开发者会选择这个答案。 - anon
顺便说一下,我一直以为ORM是对象关系模型的缩写,直到我发现ORM也可以是对象角色建模。这些是同样的图表吗? - Nick
4个回答

7

#1 在贵公司中,您创建了哪些UML图示?

我们使用了由UML定义的整套图示。我们特别重视用例图、类图、时序图和状态机图。

#2 MS Visio是否具备创建上述所有图示的能力?

它有这个能力,但我们通常不使用Visio进行绘制,因为有许多工具更适合这项工作。就我个人而言,我喜欢那些可以快速创建图示的工具,而且没有太多繁琐的操作。那些强制要求严格遵守UML规范(或者更糟糕的是,工具供应商对规范的解释)的工具会让我感到很烦。其中一款我发现特别有用的工具是Pacestar的UML Diagrammer

#3 UML图示是否根据正在开发的应用程序类型进行选择?

UML可以用于描述任何应用程序的方面。然而,应用程序的性质将影响您选择使用的图示类型和数量。

这里的大多数架构师认为创建UML图示不能证明所花费的时间有价值

创建UML图示不需要花费太多时间。关键是为了满足您的需求,避免收益递减而开发“足够好”的模型。正如我上面所提到的,我把建模工作集中在捕捉系统的显著方面上,而不是严格遵守UML规范。此外,如果使用非UML图示(或仅仅用文本)可以更好地传达系统感兴趣的方面,我会毫不犹豫地使用它们来对系统进行建模。


当你告诉我哪些工具比Visio更适合UML时,我的意见会增加一分(因为我讨厌Visio!:) - 噢,我也讨厌Visual Paradigm。世界上有太多的仇恨了。我想现在关闭这个括号...) - cwap
我工具箱里至少有5个工具,因为它们中没有一个能满足我所有的需求。最常用的是Pacestar的UML Diagrammer,因为它简单易用且灵活性强。 - Brandon E Taylor
如果知道何时停止建模并开始创建,知道模型/计划的用途以及目标是满足用户需求的产品而不是一些图表,则应该给予+1(+10如果可以)。 - overslacked

4
自90年代UML被发明以来,我一直在各大小公司使用它,用于各种目的。我使用UML有两个基本目的:作为“思维草稿”(有时候我不知道自己在想什么,直到看到自己画出来的东西;)和作为记录和沟通设计的方式。以下是我如何使用它以及我的一些经验法则。
当其他工具无法可视化/建模时,我使用UML。例如,如果您正在使用SQLServer数据库,则可以使用内置的设计图并将其打印并粘贴到文档中。这里不需要使用UML。
在思考设计问题时,我经常从全墙式白板开始,一旦设计确定下来,我就会转移到UML图表(或来回从监视器到墙壁移动)。
JavaScript和Ajax开发。工具和可视化支持较弱。我使用UML来思考和展示复杂JavaScript应用程序的高级设计。(如果您正在开发Java应用程序,则可以使用大多数Java IDE中内置的工具来可视化代码。另一方面,如果您正在开发JavaScript应用程序或拥有较差的工具,则这样做更加困难,因此UML可以填补空缺。)
面向Web的应用程序的信息架构和导航。我使用UML来显示Web页面、它们之间的关系以及Web页面上的信息组件。在任何类型的GUI中,也适用于屏幕(它曾被称为用户体验模型)。我在我的基于Web的应用程序中使用REST URL。因此,我注释我的页面对象以显示实际的REST URL。这样,当我布置页面时,我同时思考REST部分。根据我的经验,这是最有用但未被充分利用的一种图表类型,可能是因为它不是标准的。它捕捉了信息架构(您的领域模型作为页面/屏幕集合体验)和应用程序概念作为可导航视图集合的概念。通常,这个模型与最接近用户的应用程序领域模型或数据库模型之间存在不匹配。拥有这个模型可以填补问题。我曾经参与过项目,每个人都有他们要构建的应用程序模型:可用性专家、开发人员、数据库人员、企业架构师。但没有人有正确的模型,而用户体验模型则展现出他们所看不到的东西。
基于代码的模型。我使用Java并反向工程代码库,并创建图表来记录设计。然而,由于Java工具非常成熟,我很少需要反向工程只是为了理解代码。我使用的是价格便宜而且可以让您反向工程新代码并将其与基于旧代码的UML图表同步的Enterprise Architect。
我将所有不同的图表放在一个项目中,它展示了系统的总体设计作为一组视图。我还将我的UML项目导出到XML并存储在版本控制系统中。这些图表发布在Intranet上,并插入文档中。
组件图表从不使用。如果我想描述组件,我只需使用类图并用原型注释:页面、视图、表 - 以表示我所描述的对象类型。这使得事情对我来说变得简单。我大量使用原型。它们允许我基本上创建自己的图表类型,但仍然坚持使用大多数类图。
我很少使用序列和活动图表,但它们有时可以是不可或缺和强大的。在设计阶段使用序列图表时,您正在解决对象之间的交互。交互越复杂,您就越需要序列图表。(当序列图表过于复杂时,这个事实可能表明您需要简化设计。)我发现当我继承一个新项目并需要快速上手时,序列图表最有用。我发现它们可以让我在理解系统方面具有竞争优势。
最后,我倾向于偏物理模型。基于要编写的实际代码或实际系统的模型,但略微抽象并进行调整以进行通信。介于“架构宇航员”的空气抽象和基于复杂代码的模型之间,这些模型具有过多的细节,并且价值不如IDE的大纲视图。
总之,我使用UML进行思考和记录,并在需要更好的可视化和其他工具不足时进行设计和沟通。

  1. REST URL是什么?
  2. 哇,我从来不知道可以将UML转换为XML。那真是太棒了。
- Nick
简而言之,它们是有意义的、用户友好的URL,其中路径段描述了页面。StackOverflow使用它们。 - JimB

2

前言

我认为UML用例图对于绘制应用程序的整体用户和功能区域非常有帮助。这实际上是业务分析师的工作,但如果不存在业务分析师或者缺少这种详细级别,那么进行这种练习所需的时间很少,而且具有极大的价值,可以让您获得解决方案的全局视图。

序列图在ASP.NET开发中也非常有用。它使用例图中高级视图的组件易于分解并实现。

1.你们公司创建哪些UML图?

没有。在我目前工作的地方,业务分析师、开发团队等人员都不了解UML。然而,鉴于我们所做的开发类型:快速和中等规模的战术解决方案,实际上并没有太多的价值。

2.MS Visio是否能够创建以上所有的图表?

是的。请参考http://softwarestencils.com/uml/index.html

我建议您考虑使用一种允许UML -> 代码生成的工具http://www.visual-paradigm.com/

3.UML图表是否根据正在开发的应用程序类型而选择?

这是一个混合使用的过程。UML是一组可以按照用户需求进行使用的工具。不同的图表类型(行为、结构和交互)及其子类型有不同的目的。经过多年与UML打交道(自上世纪90年代末以来),我几乎只看到了类、用例和序列图的价值。除此之外,它只是语义超载,在我参与的项目中没有太多价值。


2

在对象模型图之后,我发现用例图是最有用的(use case)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接