ฉันจะสร้างไดอะแกรม UML (โดยเฉพาะไดอะแกรมลำดับ) จากโค้ด Java ที่มีอยู่ได้อย่างไร
ฉันจะสร้างไดอะแกรม UML (โดยเฉพาะไดอะแกรมลำดับ) จากโค้ด Java ที่มีอยู่ได้อย่างไร
คำตอบ:
เป็นสิ่งที่ฉันใช้ ติดตั้งได้ง่ายจากที่เก็บ:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
และสร้างไดอะแกรม UML ที่ค่อนข้างดี:
ObjectAid UML Explorer นั้นแตกต่างจากเครื่องมือ UML อื่น ๆ มันใช้สัญกรณ์ UML เพื่อแสดงการแสดงกราฟิกของรหัสที่มีอยู่ที่ถูกต้องและทันสมัยเป็นตัวแก้ไขข้อความของคุณในขณะที่ใช้งานง่ายมาก คุณสมบัติที่เป็นเอกลักษณ์หลายอย่างทำให้เป็นไปได้:
- ซอร์สโค้ดและไลบรารีของคุณเป็นรุ่นที่แสดงขึ้นมา แต่จะไม่ถูกออกแบบวิศวกรรมย้อนกลับในรูปแบบที่แตกต่างกัน
- หากคุณอัปเดตโค้ดใน Eclipse ไดอะแกรมของคุณก็จะถูกอัพเดตเช่นกัน ไม่จำเป็นต้องกลับรหัสต้นฉบับของวิศวกร
- การ Refactoring ปรับปรุงไดอะแกรมของคุณรวมถึงซอร์สโค้ด เมื่อคุณเปลี่ยนชื่อฟิลด์หรือย้ายคลาสไดอะแกรมของคุณจะสะท้อนการเปลี่ยนแปลงโดยไม่ต้องซิงค์
- ไดอะแกรมทั้งหมดในเวิร์กสเปซ Eclipse ของคุณถูกอัพเดตด้วยการเปลี่ยนการเปลี่ยนแปลงตามความเหมาะสม หากจำเป็นพวกเขาจะถูกตรวจสอบจากระบบควบคุมเวอร์ชันของคุณ
- ไดอะแกรมถูกรวมเข้ากับ Eclipse IDE อย่างสมบูรณ์ คุณสามารถลากคลาส Java จากมุมมองอื่นไปยังไดอะแกรมและข้อมูลที่เกี่ยวข้องกับไดอะแกรมจะแสดงในมุมมองอื่น ๆ
An error occurred while installing the items session context was:(profile=epp.package.java, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]com.objectaid.uml 1.1.3, action=). Failed to prepare partial IU: [R]com.objectaid.uml 1.1.3.
แก้ไข: ถ้าคุณเป็นนักออกแบบแล้วPapyrusเป็นตัวเลือกที่ดีที่สุดของคุณมันสูงมากและเต็มไปด้วยฟีเจอร์ต่าง ๆ แต่ถ้าคุณแค่อยากจะร่างไดอะแกรม UML และการติดตั้งง่าย ๆObjectAid จะสวยและไม่ต้องใช้ปลั๊กอินใด ๆ เพิ่งติดตั้งผ่าน Eclipse-Java EE และใช้งานได้ดี!
อัพเดท 11 ตุลาคม 2556
โพสต์ต้นฉบับของฉันคือในเดือนมิถุนายน 2012 หลายสิ่งหลายอย่างได้เปลี่ยนเครื่องมือจำนวนมากได้เติบโตขึ้นและคนอื่นไม่ได้ เนื่องจากฉันจะกลับไปทำแบบจำลองและได้รับการตอบกลับไปยังโพสต์ฉันตัดสินใจที่จะติดตั้งต้นกกอีกครั้งและจะตรวจสอบวิธีการสร้างแบบจำลอง UML อื่น ๆ ที่เป็นไปได้อีกครั้ง การสร้าง UML (พร้อมคุณสมบัติการซิงโครไนซ์) มีความสำคัญมากสำหรับนักออกแบบซอฟต์แวร์ แต่สำหรับนักพัฒนาทั่วไป
ฉันหวังว่าต้นกกมีวิธีที่ตรงไปตรงมาในการย้อนกลับคลาสวิศวกรลงในแผนภาพคลาส UML และมันจะเจ๋งมากถ้าวิศวกรรมย้อนกลับนั้นมีคุณสมบัติการซิงโครไนซ์ แต่โครงการปาไพรัสที่เต็มไปด้วยคุณสมบัติ การกระทำที่คุณทำกับต้นกกอาจไม่ให้การตอบสนองใด ๆ และไม่มีอะไรเกิดขึ้น แต่นั่นอยู่นอกเหนือขอบเขตคำถามนี้
คำตอบ (11 ตุลาคม 2013)
เครื่องมือ
ขั้นตอน
คลิกขวาที่ MyProject_kdm.xmi -> Discovery -> Discoverer -> Discover UML model จากรหัส KDM อีกครั้งคุณจะได้รับกล่องโต้ตอบคุณสมบัติตั้ง propization ให้เป็น TRUE เพื่อสร้างไฟล์ชื่อ MyProject.uml
ย้าย MyProject.uml ที่สร้างขึ้นซึ่งสร้างขึ้นที่รูทไปยังโฟลเดอร์ UML Eclipse จะถามคุณหากคุณต้องการแทนที่คลิกใช่ สิ่งที่เราทำในที่นี้คือเราแทนที่โมเดลที่ว่างเปล่าด้วยโมเดลที่สร้างขึ้น
ALT + W -> แสดงมุมมอง -> papyrus -> model explorer
ในมุมมองนั้นคุณจะพบชั้นเรียนของคุณเหมือนในภาพ
ในมุมมองรูปแบบรูทคลิกขวา -> แผนภาพใหม่
จากนั้นเริ่มการจับคลาสไปยังไดอะแกรมจากมุมมอง
คุณสมบัติบางอย่าง
เพื่อแสดงองค์ประกอบคลาส (ตัวแปรฟังก์ชั่น ฯลฯ ) คลิกขวาที่คลาสใดก็ได้ -> ตัวกรอง -> แสดง / ซ่อนเนื้อหา Voila !!
คุณสามารถตั้งค่าสีที่เป็นมิตรเริ่มต้นจาก Window -> pereferences -> papyrus -> แผนภาพคลาส
การตั้งค่าที่สำคัญอย่างหนึ่งคือจัดเรียงเมื่อคุณปล่อยคลาสที่พวกเขาได้รับคลิ๊กขวาบนพื้นที่ว่างที่ไดอะแกรมของชั้นเรียนแล้วคลิกจัดเรียงทั้งหมด
ลูกศรในมุมมอง explorer ของโมเดลสามารถถูกคว้าไปยังไดอะแกรมเพื่อแสดงการวางนัยทั่วไปการทำให้เป็นจริงและอื่น ๆ
หลังจากนั้นการตั้งค่าทั้งหมดของคุณจะแสดงไดอะแกรมเช่น
การซิงโครไนซ์ไม่พร้อมใช้งานเท่าที่ฉันรู้ว่าคุณจะต้องนำเข้าคลาสใหม่ด้วยตนเอง
นั่นคือทั้งหมดและอย่าซื้อผลิตภัณฑ์เชิงพาณิชย์เว้นแต่ว่าคุณต้องการมันจริงๆกระดาษปาปิรัสนั้นยอดเยี่ยมและมีความซับซ้อนแทนการบริจาคหรือสิ่งของ
ข้อจำกัดความรับผิดชอบ: ฉันไม่มีความสัมพันธ์กับคนต้นกก แต่จริงๆแล้วฉันไม่ชอบต้นกกเลยจนกระทั่งฉันได้ทำการวิจัยมากมายและมีประสบการณ์ด้วยความอดทน และจะกลับไปที่โพสต์นี้อีกครั้งเมื่อฉันลองใช้เครื่องมือฟรีอื่น ๆ
codebase ของคุณคืออะไร Java หรือ C ++
eUML2 สำหรับ Java เป็น UML modeler ที่ออกแบบมาสำหรับ Java developper ใน Eclipse รุ่นฟรีสามารถใช้เพื่อการค้า รองรับคุณสมบัติดังต่อไปนี้:
- CVS และการสนับสนุนทีม
- ออกแบบมาสำหรับโครงการขนาดใหญ่ที่มีมุมมองหลายแบบและปรับแต่งได้
- สอดคล้องกับ Helios
- การซิงโครไนซ์รหัส / โมเดลเรียลไทม์
- UML2.1 เป็นไปตามมาตรฐานและการสนับสนุน OMG XMI
- การสนับสนุน JDK 1.4 และ 1.5
รุ่นเชิงพาณิชย์ให้:
วิศวกรรมย้อนกลับขั้นสูง
- เครื่องมือการวิเคราะห์การพึ่งพาที่แท้จริงที่มีประสิทธิภาพ
- โปรไฟล์ UML และ MDD
- เครื่องมือฐานข้อมูล
- รองรับเทมเพลตที่ปรับแต่งได้
ฉันเป็นหนึ่งในผู้เขียนดังนั้นคำตอบจึงสามารถมีอคติได้ มันเป็นโอเพนซอร์ส (Apache 2.0) แต่ปลั๊กอินไม่ฟรี คุณไม่ต้องจ่าย (ชัด) ถ้าคุณโคลนและสร้างมันในเครื่อง
บน Intellij IDEA, ZenUML สามารถสร้างไดอะแกรมลำดับจากโค้ด Java
ตรวจสอบได้ที่https://plugins.jetbrains.com/plugin/12437-zenuml-support
รหัสที่มา: https://github.com/ZenUml/jetbrains-zenuml
วิธีการเกี่ยวกับPlantUML ? มันไม่ได้สำหรับวิศวกรรมย้อนกลับ !!! สำหรับวิศวกรรมก่อนรหัส
ฉันพัฒนาปลั๊กอิน maven ที่สามารถทั้งคู่เรียกใช้จาก CLI เป็นเป้าหมายปลั๊กอินหรือนำเข้าเป็นการพึ่งพาและใช้ parser โดยทางโปรแกรม@see Main#main()
เพื่อรับแนวคิดเกี่ยวกับวิธีการ
มันแสดงผลรหัสPlantUML src ของแพคเกจที่ต้องการซ้ำซึ่งคุณสามารถแก้ไขได้ด้วยตนเองหากจำเป็น (หวังว่าคุณจะไม่ทำ) จากนั้นโดยการวางรหัสในหน้า plantUML หรือโดยการดาวน์โหลด jar ของโรงงานคุณสามารถแสดงแผนภาพ UML เป็นภาพ png
ลองใช้งานได้ที่นี่https://github.com/juanmf/Java2PlantUML
ผลงานใด ๆ เป็นมากกว่าการต้อนรับ มันมีชุดตัวกรองที่ปรับแต่งผลลัพธ์ แต่ฉันยังไม่ได้เปิดเผยสิ่งเหล่านี้ในปลั๊กอิน CLI params
เป็นสิ่งสำคัญที่จะต้องทราบว่าไม่ จำกัด เฉพาะไฟล์ * .java ของคุณ แต่สามารถแสดง UML diagrams src จากการพึ่งพา maven ของคุณได้เช่นกัน การเข้าใจไลบรารีที่คุณพึ่งพานั้นเป็นประโยชน์ มันตรวจสอบคลาสที่คอมไพล์ด้วยการสะท้อนจึงไม่จำเป็นต้องใช้แหล่งที่มา
เป็นคนแรกที่ติดดาวที่ GitHub: P
ฉันอยากจะแนะนำEclipseUML จาก Omondoสำหรับการใช้งานทั่วไปแม้ว่าฉันจะประสบปัญหาบางอย่างไม่กี่เดือนกลับมาด้วยโครงการเว็บของฉัน พวกเขามีรุ่นฟรีในจุดหนึ่งในเวลา แต่ที่คาดคะเนไม่ได้รับการส่งเสริมอีกต่อไป
หากคุณจริงๆกระตือรือร้นในแผนภาพลำดับวิศวกรรมย้อนกลับจากซอร์สโค้ดฉันอยากจะแนะนำjTracert
เท่าที่โครงการของ Eclipse นั้นเกี่ยวข้องกับเครื่องมือ Eclipse UML2โครงการอาจสนับสนุนวิศวกรรมย้อนกลับแม้ว่าฉันจะไม่เคยเห็นการใช้งานจริงในทางปฏิบัติ
โครงการMoDisco (Model Discovery) โครงการ Eclipse GMT ดูเหมือนจะชัดเจนในการบรรลุวัตถุประสงค์ของคุณ รายการเครื่องมือเฉพาะเทคโนโลยีที่จะเป็นสถานที่ที่ดีที่จะเริ่มต้นด้วย
คุณสามารถลองใช้ตัวดัดแปลง netbeans UML ได้ ฉันใช้มันเพื่อสร้าง javacode ที่ฉันใช้ในโครงการ eclipse ของฉัน คุณสามารถอิมพอร์ตโปรเจ็กต์ eclipse ใน netbeans และทำให้การตั้งค่า eclipse ซิงค์กับการตั้งค่าโปรเจ็กต์ netbeans
ฉันลองใช้ตัวดัดแปลง UML หลายตัวสำหรับ eclipse และไม่พอใจกับมัน พวกมันไม่เสถียรซับซ้อนหรือน่าเกลียดธรรมดา ;-)
ใช้ IntelliJ IDEA ในการสร้างคลาสแผนภาพเลือกแพ็คเกจและกดCtrl+ Alt+ U:
โดยค่าเริ่มต้นจะแสดงชื่อคลาสเท่านั้นและไม่ขึ้นต่อกันทั้งหมด หากต้องการเปลี่ยน: คลิกขวา -> แสดงหมวดหมู่ ... และแสดงการอ้างอิง:
วิธีสร้างไดอะแกรมการอ้างอิง (แผนภาพการปรับใช้ UML) และคุณใช้ maven go View -> เครื่องมือ Windows -> โครงการ Maven และกดCtrl+ Alt+ U:
นอกจากนี้ยังเป็นไปได้ที่จะสร้างไดอะแกรมอื่น ๆ เพิ่มเติม โปรดดูเอกสาร
คุณสามารถใช้การสร้างการประเมินผล 30 วันของ EclipseUML สำหรับ Eclipse 3.5: http://www.uml2.org/eclipse-java-galileo-SR2-win32_eclipseUML2.2_package_may2010.zip นี่ไม่ใช่รุ่น 3.6 ใหม่สวย แต่สวยและ ไม่ต้องการให้คุณซื้อเพื่อทำการทดสอบและวิศวกรรมย้อนกลับ
วิศวกรรมย้อนกลับ: http://www.forum-omondo.com/documentation_eclipseuml_2008/reverse/reverse/reverse_engineering_example.html
การสาธิตแฟลชสด: http://www.ejb3.org/reverse.swf
EclipseUML Omondo เป็นเครื่องมือที่ดีที่สุดในโลกสำหรับ Java ดูเหมือนว่าเฉพาะ eUML ที่จะแข่งขันกับมันในตลาดการซิงโครไนซ์สดนี้ แต่ eUML เพิ่มแท็กโมเดลในโค้ดซึ่งแย่มาก ๆ และไม่ต้องไปหาฉัน
ไกลโดยเครื่องมือที่ดีที่สุดฉันได้ใช้สำหรับงานด้านวิศวกรรมย้อนกลับและ Java สะดุดรอบ -> UML คือร่วมกันบอร์แลนด์ มันขึ้นอยู่กับ Eclipse (ไม่ใช่แค่ปลั๊กอินตัวเดียว) และใช้งานได้ดีจริงๆ
ฉันแนะนำ PlantUML เครื่องมือนี้มีประโยชน์มากและใช้งานง่าย PlantUML มีปลั๊กอินสำหรับ Netbeans ที่คุณสามารถสร้างแผนภาพ UML ได้จากโค้ด java ของคุณ
คุณสามารถติดตั้งปลั๊กอิน PlantUML ในเน็ตโดยวิธีนี้:
เมนู Netbeans -> เครื่องมือ -> ปลั๊กอิน
ตอนนี้เลือกปลั๊กอินที่พร้อมใช้งานแล้วค้นหา PlantUML แล้วติดตั้ง
สำหรับข้อมูลเพิ่มเติมไปที่เว็บไซต์: www.plantuml.com
ฉันสังเกตเห็นว่าปลั๊กอิน SequenceDiagram สำหรับ Intellij ก็เป็นตัวเลือกที่ดีเช่นกัน
เครื่องมือสร้างแบบจำลองอีกอย่างสำหรับ Java คือเว็บไซต์ของฉัน ( GitUML ) สร้างไดอะแกรม UML จากรหัส Java หรือ Python ที่เก็บไว้ในที่เก็บ GitHub
แนวคิดสำคัญอย่างหนึ่งของ GitUML คือการจัดการปัญหาอย่างใดอย่างหนึ่งกับ "เอกสาร": แผนภาพนั้นล้าสมัยอยู่เสมอ ด้วย GitUML ไดอะแกรมจะอัปเดตโดยอัตโนมัติเมื่อคุณกดรหัสโดยใช้ git
เรียกดูไดอะแกรม UML ชุมชนมีบางรูปแบบการออกแบบ Java ท่องไปกับที่เก็บ GitHub ยอดนิยมและเห็นภาพสถาปัตยกรรมและรูปแบบในนั้น
สร้างไดอะแกรมโดยใช้จุดและคลิก ไม่มีตัวแก้ไขการลากลากเพียงคลิกที่คลาสในแผนผังที่เก็บที่คุณต้องการให้เห็นภาพ:
เทคโนโลยีพื้นฐานคือ PlantUML ซึ่งหมายความว่าคุณสามารถปรับแต่งไดอะแกรมของคุณด้วยมาร์กอัป PlantUML เพิ่มเติม
มีเครื่องมือฟรีชื่อbinarydocซึ่งสามารถสร้างUML Sequence Diagram
หรือControl Flow Graph
( CFG
) จากbytecode
(แทนซอร์สโค้ด) ของวิธีการจาวา
นี่คือไดอะแกรมตัวอย่างbinarydoc ที่สร้างขึ้นสำหรับวิธีการ java java.net.AbstractPlainSocketImpl.getInputStream :
java.net.AbstractPlainSocketImpl.getInputStream
:java.net.AbstractPlainSocketImpl.getInputStream
: