当前位置:   article > 正文

强大的自动建模工具——Enterprise Architect

enterprise architect

  在做软件开发的过程中,UML图是必备不可的。我们在设计自己的软件UML建模时,对自己要开发的模块、构件、体系结构都有一个基本的想法,可以比较容易地绘制出UML图。但是最近在对别人的开源项目做项目分析的时候,涉及到UML的绘制让我傻眼了,因为对于别人的项目,我们只能通过一行行读代码来了解其架构,要想绘制一个较高质量的UML图难度非常大,当时就在想要是能有自动绘制UMl图的工具就好了,没想到还真有,这就是今天要介绍的主角——Enterprise Architect。

1.概念

Enterprise Architect大多数用户简称EA ,是一个强大的辅助建模工具,广泛用于软件工程、业务过程管理、系统工程和其他需要复杂系统设计和分析的领域。它提供了一个综合的环境,支持从需求管理到系统设计的各种模型创建和文档编制。EA不同于普通的UML画图工具,(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,同时加上对10种编程语言的正反向工程,项目管理,文档生成,数据建模等方面。可以让系统开发中各个角色都获得最好的开发效率。

2.下载安装

链接:https://pan.baidu.com/s/1xQ2q-_cSt_DTI3zIDvxkFw
提取码:wq83

软件图标如下:

也可以参考链接下载:UML建模图文详解教程01——Enterprise Architect的安装与使用_enterprise architect uml建模-CSDN博客文章浏览阅读2.7k次。Enterprise Architect是一款高端的UML图设计器,可为用户提供强大的文档生成和报告工具以及完整的所见即所得模板编辑器。集成了高端功能,Enterprise Architect官方版提供了可靠且丰富的全周期建模工具,可以在各个领域中找到实际应用。Enterprise Architect旨在满足个人和大型组织的需求,并在用户友好的工作环境中提供了先进的UML建模功能。嵌入式代码编辑器可帮助您现场进行修改,构建,测试,调试和执行脚本,执行代码检查并使用模型驱动的架构(MDA)转换生成Junit类_enterprise architect uml建模https://blog.csdn.net/lfdfhl/article/details/134536376

3.绘制UML(构建类图为例)

安装好之后,我们进行一个尝试学习使用,看看效果如何。

(1)打开EA,点击左上角的图标新建项目。

(2)起一个项目名称,这里以test2为例

(3)在工程下新建一个包,点击Browser下的文件夹图标:

起一个名字后点击ok,然后会出现一个窗口。现在我们的包建好了,需要在包里添加视图,我们的类图和活动图等都是创建在视图上的。点击包右边的小图标添加视图:

(4)选择视图类型

由于我这里构建类图,就以类图为例

选择好模型之后,就可以手动绘制UML图了,在上方有工具栏,可以进行拖拽构建。

以上的功能其实Visio等工具也能实现,我们目的是解放双手,下面介绍下自动导入分析。

4.自动建模功能

我们的目的是能够使得工具代码就能分析出UML图,下面详细介绍下。

首先,我们还是和前面一样,新建一个model,如果我们想导入要分析的代码,按File -> Code -> Import Source Directary的顺序操作,如下图,结果发现到如不了,这是因为我们需要先确定要分析的模型。

我们鼠标右击Model,点击Add a Moder.....

Add操作之后便会发现中间出现了很多模板,包括顺序图,包图,部署图,用例图等等,此处我们选择类图,然后点击下方的Create按钮即可。

此时,我已经创建好了类图模型,按时这个类图只是一个模板,我们需要导入自己的代码让软件分析。

还是按之前的步骤,File -> Code -> Import Source Directary,

执行之后会弹出选项框,可以选择要导入文件的路径,格式,编程语言等,此处我用python文件做测试。

我导入了“新建文件夹”,这个文件夹下面只有一个py文件,代码放在这里。可以先根据代码预测类之间关系,然后看看EA软件的效果如何。。。

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Jun 13 10:45:46 2024
  4. @author: M Q
  5. """
  6. class Person:
  7. def __init__(self, name, age):
  8. self.name = name
  9. self.age = age
  10. def get_details(self):
  11. return f"Name: {self.name}, Age: {self.age}"
  12. class Customer(Person):
  13. def __init__(self, name, age, customer_id):
  14. super().__init__(name, age)
  15. self.customer_id = customer_id
  16. self.accounts = []
  17. def add_account(self, account):
  18. self.accounts.append(account)
  19. def get_accounts(self):
  20. return [account.get_account_info() for account in self.accounts]
  21. class Account:
  22. def __init__(self, account_number, balance=0.0):
  23. self.account_number = account_number
  24. self.balance = balance
  25. def deposit(self, amount):
  26. self.balance += amount
  27. def withdraw(self, amount):
  28. if amount <= self.balance:
  29. self.balance -= amount
  30. else:
  31. print("Insufficient funds")
  32. def get_account_info(self):
  33. return f"Account Number: {self.account_number}, Balance: {self.balance:.2f}"
  34. class SavingsAccount(Account):
  35. def __init__(self, account_number, balance=0.0, interest_rate=0.01):
  36. super().__init__(account_number, balance)
  37. self.interest_rate = interest_rate
  38. def apply_interest(self):
  39. self.balance += self.balance * self.interest_rate
  40. class Bank:
  41. def __init__(self, name):
  42. self.name = name
  43. self.customers = []
  44. def add_customer(self, customer):
  45. self.customers.append(customer)
  46. def get_customers(self):
  47. return [customer.get_details() for customer in self.customers]
  48. if __name__ == "__main__":
  49. # Create a bank
  50. bank = Bank("MyBank")
  51. # Create a customer
  52. customer1 = Customer("John Doe", 30, "C123")
  53. # Create accounts for the customer
  54. savings_account = SavingsAccount("SA001", 1000.0, 0.02)
  55. checking_account = Account("CA001", 500.0)
  56. # Add accounts to the customer
  57. customer1.add_account(savings_account)
  58. customer1.add_account(checking_account)
  59. # Add customer to the bank
  60. bank.add_customer(customer1)
  61. # Apply interest to the savings account
  62. savings_account.apply_interest()
  63. # Print customer details and their accounts
  64. print("Bank Customers:")
  65. for customer in bank.get_customers():
  66. print(customer)
  67. for account_info in customer1.get_accounts():
  68. print(account_info)

下面就是这段代码对应的类图,很清晰的描述出来了。

我在演化课上测试了Lesin/ob-reposyncer项目的src,其中一部分类图如下:

看起来还是有点恐怖的,如果要人手工绘制可能会有疏忽,工作量也非常大。但用EA就能很好的解决,我想这就是软件的作用以及它带给我们的便利之处,当然,我们对它的结果也是参考作用,取其精华,弃其糟粕!

我对EA的了解还很少,它的大部分功能还值得探索,我们要牢记那句话——工欲善其事,必先利其器!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/966153
推荐阅读
相关标签
  

闽ICP备14008679号