Làm cách nào để tạo sơ đồ UML dựa trên các lớp hiện có trong PHP?
Làm cách nào để tạo sơ đồ UML dựa trên các lớp hiện có trong PHP?
Câu trả lời:
Ngoài ra còn có công cụ PHP UML có sẵn từ quả lê .
PHP_UML:
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-alpha
nhưng gói này đã hoạt động ổn định.)
Tạo xmi của bạn:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(xem lê.php.net/package/PHP_UML/download/All hoặc lê.php.net/package/PHP_UML )
Tôi thực sự khuyên bạn nên dùng BOUML mà:
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.
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
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:
không miễn phí ($ 199), nhưng chắc chắn đáng tiền.
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.
Đâ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ì):
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 đó.
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 .
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.
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
Nhược điểm
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.
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.