Trình tạo UML PHP [đã đóng]


110

Làm cách nào để tạo sơ đồ UML dựa trên các lớp hiện có trong PHP?


2
Tôi không làm việc với PHP nữa, vì vậy tôi không có mã để thực sự kiểm tra. Khi tôi đăng điều này, không có câu trả lời ban đầu nào là đủ, nhưng đã có rất nhiều thay đổi kể từ đó. Tôi đã làm việc với PHP 5.2 và bây giờ là PHP7.
Jeffrey04

Câu trả lời:


42

Ngoài ra còn có công cụ PHP UML có sẵn từ quả lê .

PHP_UML:

  • Có thể tạo tệp UML / XMI trong phiên bản 1.4 hoặc trong phiên bản 2.1 (chế độ xem logic, cấu phần và triển khai)
  • Có thể tạo tài liệu API ở định dạng HTML
  • Có thể tạo mã PHP (khung mã) từ một tệp XMI nhất định
  • Có thể chuyển đổi nội dung UML / XMI từ phiên bản 1.4 sang phiên bản 2.1

Cài đặt nó trên dòng lệnh thông qua:

$ pear install pear/php_uml

(Điều này đã từng xảy ra $ pear install pear/php_uml-alphanhưng gói này đã hoạt động ổn định.)

Tạo xmi của bạn:

$ phpuml -o project.xmi


2
đối với một số lý do, pear.com không như liên kết rằng nếu không có một gạch chéo: pear.php.net/package/PHP_UML
Stephen Fuhry

1
@Stephen, vâng, tôi cũng nhận thấy điều đó! Nếu bạn nhấp vào liên kết, nó sẽ cung cấp cho bạn 404, nhưng nếu bạn chọn thanh địa chỉ và nhấn enter, nó sẽ hoạt động.
nickf

1
Một vài năm sau, lệnh bây giờ là pear install PHP_UML-1.6.1(xem lê.php.net/package/PHP_UML/download/All hoặc lê.php.net/package/PHP_UML )
Ben

1
Đây phải là câu trả lời được chấp nhận. Công cụ là ngoạn mục.
Xofo

3
không hoạt động với php 7
DevWL

41

Tôi thực sự khuyên bạn nên dùng BOUML mà:

  • cực kỳ nhanh (công cụ UML nhanh nhất từng được tạo, kiểm tra điểm chuẩn ),
  • có hỗ trợ nhập và xuất PHP vững chắc (cũng hỗ trợ C ++, Java, Python)
  • là đa nền tảng (Linux, Windows, các hệ điều hành khác),
  • có đầy đủ tính năng, được phát triển chuyên sâu một cách ấn tượng (nhìn vào lịch sử phát triển , thật khó để tin rằng có thể có tiến độ nhanh như vậy).
  • hỗ trợ plugin, có kiến ​​trúc mô-đun (điều này cho phép người dùng đóng góp , có vẻ như cộng đồng BOUML đang hình thành)

Các điểm chuẩn trông thực sự ấn tượng. Tôi thích kiến ​​trúc doanh nghiệp nhưng nó không có hỗ trợ PHP. Tôi sẽ chuyển công cụ này vào, cảm ơn.
Paul Dragoonis

1
@ Paul Dragoonis Sparx Systems Enterprise Architect không có PHP hỗ trợ - và không phải là người tồi tệ nhất .
rìu.

5
Trang web của BOUML hiện nêu rõ: "THẬN TRỌNG: Do vi phạm giấy phép liên tục, các cuộc tấn công và lăng mạ từ những người của wikipedia [...], tôi đã quyết định ngừng hoạt động trên Bouml ngoại trừ việc sửa lỗi."
MPV

1
"[Ngày 18 tháng 12 năm 2011] Quá trình tải xuống bị tạm ngừng cho đến khi có thông báo mới" từ trang web chính thức của họ. http://bouml.free.fr/download.html - điều này là do tôi cần một phiên bản cho Win7. Tôi tưởng tượng nó có thể vẫn được cung cấp từ kho của Ubuntu - cần phải kiểm tra
Val Redchenko

4
Phiên bản 6.1 phát hành ngày 23 tháng 9 năm 2012 . Xuất hiện sự phát triển đã bắt đầu trở lại. Không thông báo về chậm lại, dừng lại, vv bouml.fr/historic.html
Andrew Ensley

24

phUML

phUML là trình tạo sơ đồ lớp UML hoàn toàn tự động được viết bằng PHP, được cấp phép theo giấy phép BSD. Nó có khả năng phân tích cú pháp bất kỳ mã nguồn hướng đối tượng PHP5 nào và tạo biểu diễn hình ảnh thích hợp của cấu trúc oo dựa trên đặc tả UML.

Ví dụ về UML

./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png

Hướng dẫn từng bước một


yêu cầu SVN / subversion để tải xuống và không thực sự nói giấy phép của mã nguồn là gì, nhưng có vẻ tốt! yah tôi sẽ cẩn thận tại nhìn vào mã nguồn có hoàn toàn không có giấy phép vào nó và chỉ readme là trên trang web tôi nghĩ

Giấy phép được liên kết ngay trong thanh bên trang web của dự án, theo tác giả, Creative Commons: creativecommons.org/licenses/by-nc-sa/3.0
Anthony Hatzopoulos

đó là giấy phép cho nội dung của trang web, GIẤY PHÉP cho dự án phải được bao gồm với chính dự án.

3
Tôi đã gửi một email cho tác giả, Jakob và anh đáp lại bằng một bản cập nhật để kho với một rõ ràng và cắt 3 khoản bsd Giấy phép
Anthony Hatzopoulos

Tôi đã tải xuống cái này và làm cho nó hoạt động sau một chút mày mò. Nó thực sự khá tốt, ngoại trừ tôi không thể làm cho các hiệp hội hoạt động, nhưng tôi chắc chắn rằng tôi sẽ tìm ra nó. Đẹp, đơn giản. Không có GUI mặc dù, nhưng không phải là vấn đề lớn.
Impulss

19

phần mềm (Windows) tốt nhất mà tôi đã tìm thấy để làm PHP và UML là Sparx Systems Enterprise Architect . ngoài rất nhiều tính năng , nó hỗ trợ những điều sau cho PHP:

  • Kỹ sư đảo ngược PHP hướng đối tượng thành sơ đồ lớp UML
  • Tạo định nghĩa lớp PHP từ sơ đồ lớp UML
  • Đồng bộ hóa các thay đổi được thực hiện trong một lớp UML vào định nghĩa lớp PHP tương ứng
  • Đồng bộ hóa các thay đổi được thực hiện trong định nghĩa lớp PHP vào lớp UML tương ứng
  • Tạo biểu đồ trình tự UML để hiển thị những lớp PHP sử dụng và cách chúng được sử dụng
  • Tạo tài liệu chi tiết về mã PHP của bạn ở định dạng RTF và HTML tiêu chuẩn
  • Thực hiện kỹ thuật mã trên các mô hình để tạo các trang PHP cơ sở.

không miễn phí ($ 199), nhưng chắc chắn đáng tiền.


1
Wow, đó thực sự là một chương trình thực sự hữu ích và chuyên nghiệp, cảm ơn vì mẹo !! Tôi vừa thử tạo sơ đồ lớp UML bằng phương pháp thiết kế ngược của Sparx EA từ mã nguồn PHP, và nó hoạt động như một sự quyến rũ, tôi đã bị sốc vì cách này hoạt động tốt. : D Khi các dự án của chúng tôi ngày càng phát triển lớn hơn và chúng tôi tạo ra ngày càng nhiều đối tượng, càng ngày càng khó để theo dõi mã của chính chúng tôi, nhưng đó là một trợ giúp tuyệt vời trong đó, vì nó tạo ra các biểu đồ UML theo đúng cách (của tất nhiên, có thể ngoại lệ có thể xảy ra) SAU KHI chúng tôi hoàn thành mã. Điều này thậm chí còn giúp đơn giản hóa quan hệ giữa các đối tượng.
Sk8erPeter

@ax - Tôi là một người mới và tôi hơi lạc lõng trong danh sách các tính năng của họ (trong "so sánh các phiên bản"). Tên của tính năng cho phép tôi nhập mã PHP (hoặc liên kết đến các tệp PHP) và đổi lại nhận được một sơ đồ là gì? Đang cố gắng tìm ra phiên bản tôi có thể cần.
JDelage

7

Bạn đã thử Autodia chưa? Lần trước tôi đã thử nó không hoàn hảo, nhưng nó đủ tốt.


tôi đã cố gắng autodia nhưng bằng cách nào đó tôi không thể tạo ra sơ đồ lớp chính xác (php5)
Jeffrey04

7

Ngoài ra còn có php2xmi . Bạn phải làm một chút công việc thủ công, nhưng nó tạo ra tất cả các lớp, vì vậy tất cả những gì bạn phải làm là kéo chúng vào một sơ đồ lớp trong Umbrello .

Nếu không, việc tạo một sơ đồ bằng cách sử dụng phản xạ và graphviz, khá đơn giản. Tôi có một đoạn mã ở đây , mà bạn có thể sử dụng làm điểm bắt đầu.


7

Đây là cách tôi đã làm điều đó (trực tiếp từ mã sang bản vẽ PDF mà không cần vẽ thủ công bất kỳ thứ gì):

  1. Sử dụng BOUML cho "mã PHP thiết kế ngược" [sic] để trích xuất mô hình lớp (BOUML có sẵn từ kho lưu trữ "vũ trụ" của Ubuntu). Tôi thực sự đề xuất BOUML cho bước này vì nó thực sự nhanh so với nhiều chương trình khác mà tôi đã thử. Ngoài ra, có vẻ như BOUML dường như trích xuất mô hình một cách chính xác (đối với các phần mà BOUML thậm chí cố gắng giải nén).
  2. Sử dụng BOUML để xuất mô hình dưới dạng tệp XMI 1.4
  3. Sử dụng ArgoUML để nhập tệp XMI đã nói (bạn có thể sử dụng phiên bản khởi động web cho bước này)
  4. Xuất XMI từ ArgoUML (Tôi không biết đầu ra là phiên bản / biến thể XMI nào nhưng nó không giống với kết quả đầu ra từ BOUML. Argouml-graphviz không thể xử lý tệp XMI trực tiếp từ BOUML).
  5. Sử dụng argouml-graphviz để chuyển đổi tệp XMI đã xuất ArgoUML sang định dạng dấu chấm (bạn có thể cần sử dụng saxon thay vì xsltproc để hoạt động do sử dụng XSLT2)
  6. Sử dụng dấu chấm hoặc fdp hoặc sfdp để hiển thị sơ đồ lớp.

Dưới đây là một ví dụ về dòng lệnh phù hợp để sử dụng fdp để xuất sơ đồ PDF (giả sử rằng tệp chấm được tạo bởi quá trình xử lý argouml-graphviz XLST được lưu dưới dạng xmi-model.dot):

fdp -Tpdf -Gmaxiter=1000 -Gmindist=0.5 -Gpackmode=node \
  -Eweight=0.05 -Elen=1.0 -Eminlen=1.0 -Gsplines=true \
  -Goverlap=false xmi-model.dot -oxmi-model.pdf

Thay vào đó, bạn có thể thử PHP_UML hoặc php2xmi thay vì BOUML để thực hiện phần "thiết kế ngược". Tôi vẫn chưa thử điều đó.

(Tôi đang sử dụng cụm từ "thiết kế ngược" vì có vẻ như mọi người UML đang sử dụng những từ đó khi họ có nghĩa là trích xuất thông tin lớp và phương thức từ mã nguồn . Cá nhân tôi sẽ giải thích những từ đó là trích xuất thông tin từ tệp nhị phân thực thi hoặc được chụp thô dữ liệu dây.)

Nếu bạn thích vẽ sơ đồ lớp bằng tay (thay vì sử dụng máy tính để vẽ tất cả), bạn có thể sử dụng BOUML hoặc ArgoUML để vẽ. Sử dụng dữ liệu "được thiết kế ngược" qua BOUML sẽ hữu ích trong trường hợp đó.


5

Nếu bạn đang muốn tạo UML dễ dàng từ các Lớp PHP hiện có của mình, bạn có thể muốn xem xét PHPStorm 3.0 IDE. Nó thực hiện tốt công việc sao chép mã hiện có vào UML.

Hãy xem danh sách tính năng của PHP Storm .


2
Không hình dung phụ thuộc, chỉ kế thừa.
Basil Musa

1

Bạn có thể sử dụng Visual Paradigm cho UML. Đây có thể không phải là sản phẩm trả phí tốt nhất (đó là US $ 699), chỉ là một lựa chọn nếu ai đó muốn dùng thử. Nó có thể tạo sơ đồ lớp từ PHP và ngược lại, và không chỉ PHP, có rất nhiều ngôn ngữ bạn có thể chọn như C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl, v.v. Ngoài ra còn có một dùng thử bạn có thể kiểm tra.


1

Về lý thuyết, bạn có thể sử dụng PhpStorm để trực quan hóa các lớp của mình bằng UML. Thế hệ này không thực sự tuyệt vời nhưng bạn có thể cấu trúc lại nội dung một cách hiệu quả và một lần nữa, ít nhất là xem trước cha mẹ, triển khai, hằng số, thuộc tính, phương thức và khả năng hiển thị của chúng theo một cách tốt đẹp.

Tình hình

Tôi muốn hình dung một giao tiếp giữa các thành phần đã tồn tại với đồng nghiệp.

Xử lý bằng PHPStorm

https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/

Ưu điểm

  • Giao diện người dùng đẹp, sơ đồ cuối cùng.
  • Có thể cấu trúc lại mã từ một sơ đồ.
  • Có thể thêm ghi chú.
  • Biểu đồ lớp tượng trưng cho các thuộc tính private / public, các hàm tạo, các phương thức một cách độc đáo.

Nhược điểm

  • Không hỗ trợ PHP 7.
  • Đau đớn khi sử dụng. Không thể thay đổi kích thước các hộp đã tạo.
  • Khi thêm một quan hệ mới, những quan hệ trước đó sẽ bị mất ngẫu nhiên: O wtf?
  • Khởi động lại PhpStorm sẽ phá hủy các sơ đồ
  • Thay đổi suy nghĩ của tôi, không thể sử dụng quan hệ

Kết quả

Dù sao, sau một số giờ làm việc mệt mỏi, tôi chỉ có thể tạo ra các hộp không liên quan và phải sử dụng chương trình bổ sung để liên kết các mối quan hệ. Thực sự tồi tệ. Nhưng tôi tin rằng một khi họ làm cho nó hoạt động bình thường, nó sẽ là một tính năng tuyệt vời vì khi mã thay đổi, các sơ đồ sẽ tự động được cập nhật!

Hiện tại, không sử dụng PhpStorm cho sơ đồ UML.


Tôi cho rằng điều này là mới (:
Jeffrey04.

Chính xác. Hiện tại tôi cũng đang ở trong tình trạng tương tự. Tôi đã phát triển một phần phức tạp của hệ thống và tôi muốn hình dung nó cho đồng nghiệp của mình. Tôi đã thử một số công cụ nhưng chúng thật tồi tệ và xấu xí :) Tôi sẽ làm điều đó với PHPStorm và cập nhật câu trả lời của tôi về cách nó trông như thế nào và nó thực sự mạnh mẽ như thế nào. Tôi sẽ cho bạn biết kết quả hôm nay @ Jeffrey04
Lukas Lukac.

không sao, tôi không làm PHP trong một thời gian khá thực
Jeffrey04

0

Thành thật mà nói, trước hết bạn không nên tạo mô hình UML từ mã, mà là mã từ mô hình UML;).

Ngay cả khi bạn ở trong một trường hợp hiếm hoi, khi bạn cần thực hiện kỹ thuật đảo ngược này, bạn thường nên làm điều đó bằng tay hoặc ít nhất là thu gọn các sơ đồ, vì UML được tạo tự động có hình ảnh rất kém (= thông tin) giá trị hầu hết thời gian.

Nếu bạn chỉ cần tạo các sơ đồ, có lẽ là một điều tốt để tự hỏi chính xác lý do tại sao? Đối tượng dự định là ai và mục tiêu là gì? Sơ đồ được tạo tự động cung cấp những gì, mã nào không?

Về cơ bản, tôi chỉ chấp nhận một câu trả lời cho câu hỏi đó. Nó chỉ trở nên quá lớn và không thể hiểu được.

Đó một lần nữa là lý do để bắt đầu với UML ngay từ đầu, thay vì bắt đầu viết mã;) Nó được gọi là phân tích và nó đang giảm dần, bởi vì mọi người thứ hai trong kinh doanh đều nghĩ rằng nó hơi quá đắt và không thực sự cần thiết.


7
Đúng, nhưng cuộc sống phức tạp hơn một số nguyên tắc, bạn nên sử dụng một cách khôn ngoan. Bạn có thể cần phải so sánh mã thực tế với sơ đồ UML ban đầu hoặc phân tích một số mã hoặc một số mã được triển khai mà không có sơ đồ UML.
DAH

3
Không đồng ý. Giá trị lớn thu được từ việc hình dung một cơ sở mã / mô-đun với một sơ đồ. Mã giống như chỉ đường, nhưng với quá nhiều chỉ đường, đôi khi người ta có thể thấy một bản đồ hữu ích.
Basil Musa

1
Hầu hết các chương trình vẽ UML có một giao diện người dùng xấu rằng nó nhanh hơn để viết mã và tạo ra các sơ đồ UML tự động, ngay cả khi bạn rồi vứt bỏ mã mà bạn sử dụng để tạo ra các sơ đồ ...
Mikko Rantalainen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.