ฉันจะสร้างแผนภาพ UML ตามคลาสที่มีอยู่ใน PHP ได้อย่างไร
ฉันจะสร้างแผนภาพ UML ตามคลาสที่มีอยู่ใน PHP ได้อย่างไร
คำตอบ:
นอกจากนี้ยังมีเครื่องมือ PHP UML ใช้ได้จากลูกแพร์
PHP_UML:
ติดตั้งบนบรรทัดคำสั่งผ่าน:
$ pear install pear/php_uml
(สิ่งนี้เคยเป็น$ pear install pear/php_uml-alpha
แต่แพ็กเกจก็เสถียรแล้ว)
สร้าง xmi ของคุณ:
$ phpuml -o project.xmi
pear install PHP_UML-1.6.1
(ดูที่pear.php.net/package/PHP_UML/download/Allหรือpear.php.net/package/PHP_UML )
ฉันขอแนะนำBOUMLซึ่ง:
phUML เป็นตัวสร้างไดอะแกรมคลาส UML อัตโนมัติที่เขียนด้วย PHP ซึ่งได้รับอนุญาตภายใต้ใบอนุญาต BSD สามารถแยกวิเคราะห์ซอร์สโค้ดเชิงวัตถุ PHP5 และสร้างการแสดงภาพที่เหมาะสมของโครงสร้าง oo ตามข้อกำหนด UML
./phuml -r /var/www/my_project -graphviz -createAssociations false -neato out.png
ที่ดีที่สุด (Windows) ซอฟต์แวร์ที่ฉันได้พบในการทำ PHP และ UML เป็นSparx ระบบ สถาปนิก Enterprise นอกจากคุณสมบัติมากมายแล้วยังรองรับPHP ต่อไปนี้ :
ไม่ฟรี (199 เหรียญ) แต่คุ้มค่ากับเงินที่เสียไป
คุณลองAutodia แล้วหรือยัง? ครั้งที่แล้วฉันลองแล้วมันยังไม่สมบูรณ์แบบ แต่ก็ดีพอ
นอกจากนี้ยังมีphp2xmi คุณต้องทำบิตของการทำงานด้วยตนเอง แต่จะสร้างชั้นเรียนทั้งหมดดังนั้นสิ่งที่คุณต้องทำคือการลากลง classdiagram ในUmbrello
มิฉะนั้นการสร้างแผนภาพโดยใช้การสะท้อนและกราฟวิซนั้นค่อนข้างง่าย ฉันมีข้อมูลโค้ดตรงนี้ซึ่งคุณสามารถใช้เป็นจุดเริ่มต้นได้
นี่คือวิธีที่ฉันทำ (จากโค้ดเป็นรูปวาด PDF โดยตรงโดยไม่ต้องวาดอะไรด้วยตนเอง):
นี่คือตัวอย่างของบรรทัดคำสั่งที่เหมาะสมสำหรับการใช้ fdp เพื่อแสดงไดอะแกรม PDF (สมมติว่าไฟล์ dot ที่สร้างโดยการประมวลผล argouml-graphviz XLST จะถูกบันทึกเป็น 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
คุณสามารถลองใช้PHP_UMLหรือphp2xmiแทน BOUML เพื่อทำส่วน "วิศวกรรมย้อนกลับ" ได้ ฉันยังไม่ได้ลองเลย
(ฉันใช้วลี "วิศวกรรมย้อนกลับ" เพราะดูเหมือนว่าคน UML จะใช้คำเหล่านั้นเมื่อพวกเขาหมายถึงการแยกข้อมูลคลาสและวิธีการออกจากซอร์สโค้ดฉันจะตีความคำเหล่านั้นเป็นการส่วนตัวว่าเป็นการดึงข้อมูลจากไฟล์ไบนารีที่ปฏิบัติการได้หรือจับข้อมูลดิบ สายข้อมูล)
หากคุณต้องการวาดแผนภาพคลาสด้วยมือ (แทนที่จะใช้คอมพิวเตอร์วาดภาพทั้งหมด) คุณสามารถใช้ BOUML หรือ ArgoUML สำหรับการวาดภาพ การใช้ข้อมูล "วิศวกรรมย้อนกลับ" ผ่าน BOUML จะช่วยในกรณีนั้น
หากคุณต้องการสร้าง UML อย่างง่ายดายจากคลาส PHP ที่มีอยู่คุณอาจต้องการพิจารณา PHPStorm 3.0 IDE มันทำงานได้ดีในการจำลองโค้ดที่มีอยู่ลงใน UML
มีลักษณะที่เป็นPHP พายุรายการคุณลักษณะ
คุณสามารถใช้ Visual Paradigm สำหรับ UML นี่อาจไม่ใช่ผลิตภัณฑ์ที่จ่ายเงินดีที่สุด (ราคา 699 เหรียญสหรัฐ) เป็นตัวเลือกหากใครอยากลอง สามารถสร้างคลาสไดอะแกรมจาก PHP และในทางกลับกันและไม่เพียง แต่ PHP เท่านั้นยังมีภาษามากมายให้คุณเลือกเช่น C #, C ++, Ruby, Java, VB.NET, Python, Objective C, Perl และอื่น ๆ นอกจากนี้ยังมี ทดลองใช้คุณสามารถตรวจสอบได้
ในทางทฤษฎีคุณสามารถใช้ PhpStorm เพื่อแสดงภาพชั้นเรียนของคุณโดยใช้ UML คนรุ่นนี้ไม่ได้ยอดเยี่ยมมากนัก แต่คุณสามารถ refactor สิ่งต่างๆได้อย่างมีประสิทธิภาพและอีกครั้งอย่างน้อยก็ดูตัวอย่างผู้ปกครองการนำไปใช้งานค่าคงที่คุณลักษณะวิธีการและการมองเห็นของพวกเขาในทางที่ดี
สถานการณ์
ฉันต้องการเห็นภาพการสื่อสารระหว่างส่วนประกอบที่มีอยู่แล้วกับเพื่อนร่วมงาน
กระบวนการโดยใช้ PHPStorm
https://blog.jetbrains.com/phpstorm/2017/09/uml-diagrams-in-phpstorm-2017-2/
ข้อดี
ข้อเสีย
ผลลัพธ์
อย่างไรก็ตามหลังจากทำงานหนักมาหลายชั่วโมงฉันก็สามารถสร้างกล่องที่ไม่เกี่ยวข้องได้เท่านั้นและต้องใช้โปรแกรมเพิ่มเติมเพื่อเชื่อมโยงความสัมพันธ์ เลวจริงๆ. แต่ฉันเชื่อว่าเมื่อพวกเขาทำให้มันทำงานได้อย่างถูกต้องมันจะเป็นคุณสมบัติที่ยอดเยี่ยมเพราะเมื่อโค้ดเปลี่ยนไปไดอะแกรมจะได้รับการอัปเดตโดยอัตโนมัติ!
ตอนนี้อย่าใช้ PhpStorm สำหรับไดอะแกรม UML
พูดตามตรงก่อนอื่นคุณไม่ควรสร้างโมเดล UML จากโค้ด แต่เป็นรหัสจากโมเดล UML;)
แม้ว่าคุณจะอยู่ในสถานการณ์ที่หายาก แต่เมื่อคุณต้องทำวิศวกรรมย้อนกลับนี้โดยทั่วไปแนะนำให้คุณทำด้วยมือหรืออย่างน้อยก็ทำให้ไดอะแกรมเป็นระเบียบเนื่องจาก UML ที่สร้างขึ้นโดยอัตโนมัติมีภาพที่ไม่ดีจริงๆ (= ข้อมูล) ให้ความสำคัญกับเวลาส่วนใหญ่
หากคุณต้องการสร้างไดอะแกรมอาจเป็นเรื่องดีที่จะถามตัวเองว่าทำไม? ใครคือกลุ่มเป้าหมายและเป้าหมายคืออะไร แผนภาพที่สร้างขึ้นโดยอัตโนมัติมีข้อเสนออะไรไม่มีรหัสอะไร
โดยพื้นฐานแล้วฉันยอมรับเพียงคำตอบเดียวสำหรับคำถามนั้น มันใหญ่เกินไปและไม่สามารถเข้าใจได้
ซึ่งเป็นเหตุผลในการเริ่มต้นด้วย UML ในตอนแรกซึ่งต่างจากการเริ่มเขียนโค้ด;) เรียกว่าการวิเคราะห์และกำลังลดลงเพราะทุก ๆ วินาทีในธุรกิจคิดว่ามันแพงเกินไปและไม่จำเป็นจริงๆ