คุณใช้ UML อย่างเป็นทางการบ่อยแค่ไหน?


33

ฉันใช้ ad-hoc MUML (ภาษาการสร้างแบบจำลองการแต่งหน้า) เพื่อออกแบบและอธิบายระบบบ่อยครั้ง ดูเหมือนว่า UML และมีแนวโน้มที่จะเข้าใจได้ดี

อย่างไรก็ตามฉันมีอาจารย์หนึ่งหรือสองคนที่ใช้การใช้ UML อย่างเป็นทางการที่เข้มงวดและใกล้เคียงกับข้อมูลจำเพาะที่สุดเท่าที่จะเป็นไปได้ ฉันมักจะสงสัยว่า UML ที่เข้มงวดนั้นไม่ใช่เรื่องธรรมดาตามที่อ้าง ดังนั้น, 'การแข่งขัน - บ่อยแค่ไหนที่คุณวาดไดอะแกรมที่สมบูรณ์ซึ่งใช้การจบบรรทัดที่เหมาะสม, หลายหลาก, สัญลักษณ์ประเภทสมาชิก, ฯลฯ ?


9
เป็นคำถามที่ดีมาก ทัศนคติของอาจารย์ของคุณอาจเป็นอาการของการตัดการเชื่อมต่อในปัจจุบันระหว่างทักษะบางอย่างที่เรียนรู้จากวิทยาลัยและทักษะที่จำเป็นในโลก "ของจริง"
Paddyslacker

@Paddy เป้าหมายของการศึกษา (โดยเฉพาะอย่างยิ่งในสถานที่ที่ "อาจารย์" สอน) ไม่ใช้เฉพาะทักษะที่จำเป็นสำหรับโลกแห่งความจริง
P Shved

3
ตามหลักการแล้วคุณถูกต้อง @Pavel แต่ด้วยความเสี่ยงที่จะออกจากหัวข้อฉันต้องการชี้แจงประเด็นของฉัน ฉันไม่คิดว่าจะมีคนที่มีปริญญาในสาขาการบัญชีที่ไม่สามารถนับได้ แต่มีคนที่มีองศาวิทยาศาสตร์คอมพิวเตอร์ที่ไม่สามารถเขียนรหัสได้ มีคำถามมากมายเกี่ยวกับ Stack Overflow เกี่ยวกับเรื่องนี้ ไม่ว่าจะถูกหรือผิดมักจะมีการตัดการเชื่อมต่อระหว่างทักษะที่นายจ้างคาดหวังจากผู้สำเร็จการศึกษาและสิ่งที่ผู้สำเร็จการศึกษาออกจากวิทยาลัย
Paddyslacker

1
@paddy วิทยาการคอมพิวเตอร์! = วิศวกรรมซอฟต์แวร์ถึงแม้ว่าฉันเสียใจที่ CS จำนวนมากที่ไม่สามารถเขียนโค้ดได้ แต่การเขียนโปรแกรมไม่ได้เป็นจุดสนใจของวิทยาศาสตร์คอมพิวเตอร์
George Marian

5
@ George Marian: Myth การเขียนโปรแกรมและการพัฒนาซอฟต์แวร์สอนในหลักสูตร CS การพูดว่า "cs! = se" เป็นข้อแก้ตัวที่ไม่ได้สอนอะไร
Steven Evers

คำตอบ:


45

ไม่เคย

Heck ก็รับปีนับตั้งแต่ที่ฉันสร้างขึ้นล่าสุดใด ๆ UML แผนภูมิเส้นบนกระดานไวท์บอร์ดและเศษกระดาษไม่นับ

ในความเป็นจริงเราเพิ่งลบคำถาม UML ออกจากคำแนะนำที่เราใช้ระหว่างการสัมภาษณ์เพราะเราไม่มีใครสนใจคำตอบจริงๆ


+1 ฉันเห็นด้วยอย่างสมบูรณ์ ฉันรู้ว่าฉันอาจจะหลงตัวเองและลูกค้ารายต่อไปของฉันจะเรียกร้อง UML อย่างเป็นทางการในเอกสาร!
Paddyslacker

2
ฉันคิดว่าตราบใดที่ทุกคนในห้องเข้าใจ UML อย่างเป็นทางการมันไม่สำคัญว่าคุณจะใช้สัญลักษณ์อะไร
ริชาร์ด

4
+1 เห็นด้วย ฉันจำไม่ได้ว่าครั้งสุดท้ายที่เราใช้ UML ใด ๆ ต้องการเวลามากเกินไปและผลตอบแทนน้อยเกินไปไม่มี ROI
วอลเตอร์

3
UML ดูเหมือนว่าจะลงเส้นทางเพื่อเป็นภาษาการเขียนโปรแกรมของตัวเอง (เพราะคุณสามารถสร้างรหัสเส็งเคร็งจากไดอะแกรมกับบางระบบ) คนที่ประกาศข่าวประเสริฐมักเป็นนักบินอวกาศของสถาปนิกที่ใช้เวลาทั้งด้านทฤษฎีและการประยุกต์ใช้น้อยมาก โดยส่วนตัวฉันควรเขียนโค้ดเพราะเร็วกว่าและน่าเบื่อน้อยลง
Evan Plaice

1
@Evan: ปัญหาปลายขึ้นเป็นว่าจำนวนของรายละเอียดที่จำเป็นสำหรับรูปแบบที่ถูกต้องมากพอที่จะจริงสร้างระบบที่ทำให้มันจะเข้าใกล้ความซับซ้อนของระบบเอง - การกระทำมันทำไม่ได้ แน่นอนว่ามีผู้คนเช่นนักบินอวกาศของคุณที่จะอาศัยอยู่ใน simulacrum ของพวกเขามากกว่าในโลกที่มันแสดงถึง
Shog9

14

ฉันใช้ UML เพียงพอ (ทั้งในรูปแบบของไดอะแกรมและเนื้อหาของข้อมูลในไดอะแกรม) เพื่อให้ได้จุดของฉันในการยอมให้ตัวเองหรือคนอื่นใช้ระบบหรือระบบย่อย และเหตุผลเดียวที่ฉันใช้ UML นั้นเป็นเพราะชุดสัญลักษณ์ที่เป็นที่รู้จักกันอย่างแพร่หลายซึ่งแต่ละคนหมายถึงบางสิ่งที่เฉพาะเจาะจงมากดังนั้นจึงไม่มีความกำกวมวิศวกรซอฟต์แวร์ใด ๆ ควรสามารถดูแผนภาพและเข้าใจสิ่งที่ฉันพยายามจะพูดเกี่ยวกับ ระบบ.


11

กระแทกแดกดัน UML ควรจะมีความยืดหยุ่น

ในโลกแห่งความเป็นจริงมันไม่ควรจะเป็นแบบฝึกหัดอวดดีในการทำมันอย่างถูกวิธี มันเกี่ยวกับการสื่อสารอย่างมีประสิทธิภาพและจัดทำเอกสารระบบ / กระบวนการ / ความคิด

เพื่อตอบคำถามของคุณฉันอยู่กับคนอื่น ฉันไม่เคยใช้ UML อย่างเป็นทางการเต็มรูปแบบ


6

ฉันใช้ UML อย่างสม่ำเสมอเป็นเวลาประมาณสี่ปีสำหรับผลิตภัณฑ์ที่สร้างโครงกระดูกโค้ดทั้งหมดจาก Rational Rose

ในช่วงห้าปีที่ผ่านมามี "กล่องและลูกศร" เป็นจำนวนมากที่ประดิษฐ์ขึ้นในจุดและมักจะเพียงพอที่จะได้รับความคิดทั่วไป แก้ไข UML อย่างเป็นทางการเพียงไม่กี่ครั้งในช่วงเวลานี้


จริงๆ??! ผู้คนใช้คุณลักษณะนี้จริงหรือ
ozz

2
"ใช้แล้ว" อดีตกาล.
FeatureCreep

4

อย่างไรก็ตามฉันมีอาจารย์หนึ่งหรือสองคนที่ใช้การใช้ UML อย่างเป็นทางการที่เข้มงวดและใกล้เคียงกับข้อมูลจำเพาะที่สุดเท่าที่จะเป็นไปได้

ถามอาจารย์ของคุณว่าครั้งสุดท้ายที่เขาใช้วิธีการนี้ในระบบจริง อย่างจริงจัง.

ฉันพยายามที่จะเป็นทางการที่สุดเท่าที่จะเป็นไปได้เมื่อพูดถึง UML แต่เมื่อ / เมื่อเหมาะสมเท่านั้น ความคลั่งไคล้ทั้งสองด้านของสเปกตรัม (จากคนเลี้ยงวัวไปจนถึงเจ้าระเบียบแบบติดขัด) ล้มเหลวที่จะเข้าใจว่า

มีบริบทที่วิธีการที่เข้มงวดน้อยกว่า (เช่นที่คุณใช้เป็นการส่วนตัว) เป็นวิธีที่ดีที่สุดในการติดตาม ตัวอย่างที่ดีสำหรับระบบขนาดเล็กหรือการเปลี่ยนแปลงที่ความต้องการมีขนาดเล็กและไม่ได้กำหนดไว้อย่างสมบูรณ์ กลุ่มที่รับผิดชอบมีประสิทธิภาพและประสิทธิผล มันสำคัญกว่าที่จะเอามันออกไปให้สมบูรณ์กว่า จะทำซ้ำแล้วซ้ำอีกและข้อบกพร่องบางอย่างเป็นที่ยอมรับ

หรือบางทีคุณอยู่ในขั้นตอนที่คุณกำลังทำหน้าที่เป็นแขกรับเชิญและร่างภาพซึ่งตรงข้ามกับขั้นตอนการสร้างแบบจำลองอย่างเป็นทางการเต็มรูปแบบ นี่คือตัวอย่างที่จะนึกขึ้นมาได้

ในบางครั้งคุณต้องมีวิธี UML ที่เป็นทางการอย่างเข้มงวด ตัวอย่างเช่นคุณอาจถูกผูกมัดตามสัญญา คุณมีนักพัฒนาจำนวนมากในหลาย ๆ ทีม (อาจมีการเผยแพร่); ขอบเขตของโครงการอาจเป็นปี เป็นระบบที่มีขนาดใหญ่มาก (รวมถึงส่วนประกอบซอฟต์แวร์และฮาร์ดแวร์) ค่าใช้จ่ายของความล้มเหลวสูง ฯลฯ

ในเวลาอื่นคุณจะต้องใช้อย่างอื่นแทน / นอกเหนือจาก UML (แบบจำลองทางคณิตศาสตร์ที่เป็นทางการเช่นมุ้ง petri, CSP หรือตรรกะชั่วคราว) ตัวอย่างของสิ่งนี้คือระบบเรียลไทม์ระบบที่ความล้มเหลวเป็นภัยพิบัติ (อุปกรณ์การแพทย์) หรือ สถานที่ที่คุณผูกพันตามสัญญา (.ie. เช่นเดียวกับในยุโรปเมื่อพัฒนาระบบขนส่ง)

ทุกอย่างขึ้นอยู่กับสถานการณ์และสิ่งที่เราคาดหวังว่าจะได้รับจากแต่ละวิธี ศาสตราจารย์คนหนึ่งที่มีใจจดจ่ออยู่กับการปฏิบัติก็คือการเป็นคนตาบอดที่กระตือรือร้น โลกของวิศวกรรมไม่ใช่สีดำ - ขาวขาว, ขั้วคู่ที่ถูก / ผิด มันเป็นโลกของการแลกเปลี่ยนที่ชาญฉลาด

หากคุณฉลาดพอที่จะใช้แบบสบาย ๆ แบบไม่เป็นทางการในลักษณะที่มีประสิทธิภาพและเหมาะสมในการทำงานให้สำเร็จ ในทำนองเดียวกันคุณจะได้รับการคาดหวังให้จดจำเมื่อไม่ใช้วิธีการที่ไม่เป็นทางการและ / หรือเมื่อไม่ใช้งานอย่างเป็นทางการ

ต้องบอกว่าคุณต้องเล่นกับหูกับอาจารย์ ให้กระดูกแก่พวกเขาเพื่อให้เกรดแก่คุณและถ้านั่นหมายถึงการโค้งคำนับมนต์ของพวกเขาในที่สุดนั่นก็ดี คุณรู้ว่าอะไรที่เหมาะกับคุณและหวังว่าคุณจะรู้ว่าจะใช้อะไรและอย่างไรในโลกแห่งความเป็นจริง


3

เป็นส่วนหนึ่งของการวิจัยระดับปริญญาเอกของฉันฉันศึกษาว่านักออกแบบที่มีประสบการณ์ใช้ UML ในความร่วมมือด้านการออกแบบอย่างไร

สิ่งที่ฉันค้นพบคืออุปมาอุปมัยและสัญลักษณ์ UML นั้นถูกยืมมา แต่ก็มีการยึดติดกับความเข้มงวดของเครื่องมือน้อยมาก

ต่อมาบางรุ่นอาจถูกแปลงซ้ำเป็น UML ที่เข้มงวดมากขึ้นบ่อยครั้งเมื่อเครื่องมือ CASE ที่ต้องการมีส่วนร่วมเพื่อวัตถุประสงค์ในการสร้างรหัส

คำเตือนทั่วไปของการวิจัยเชิงวิชาการใช้แน่นอน :)

เชื่อมโยงไปยังกระดาษนามธรรมและกระดาษของตัวเอง (ถ้าคุณไม่สามารถเข้าถึง ACM)

นอกจากนั้นฉันขอแนะนำ "Agile Modeling" ของ Ambler


1

เราใช้ UML อย่างเป็นทางการสำหรับการสร้างรหัสของไฮเบอร์เนต ORM สิ่งอื่น ๆ ส่วนใหญ่เป็นทางการหรือกระดานไวท์บอร์ด เป็นสิ่งสำคัญสำหรับเราที่มีการสร้างรหัสเพราะการขาดพิธีการจะทำให้แตกสลาย


1

ขึ้นอยู่กับอุตสาหกรรมที่คุณเข้ามาหากคุณทำงานให้กับลูกค้าที่ต้องมีการตรวจสอบทางเทคนิคบ่อยครั้ง (เช่น PDR, CDR เป็นต้น) พวกเขาชอบมาตรฐานมากกว่าระบบ ad-hoc โดยเฉพาะงานภาครัฐ มันช่วยป้องกันการสื่อสารผิดพลาดและคำอธิบาย 15 นาทีแรกของสัญกรณ์ที่คุณคิดค้น

นอกจากนี้เพียงเพราะคุณกำลังใช้ UML ไม่ได้หมายความว่าคุณต้องจุดทุก ๆ i และข้ามทุก t ตามมาตรฐาน นั่นเป็นเพียงถ้าคุณต้องการที่จะทำการสร้างและประมวลผลรหัสอัตโนมัติ ฉันไม่รู้จักใครก็ตามที่ทำโครงการมากกว่า 1 ครั้ง

ในทางกลับกันถ้าคุณทำงานให้กับ บริษัท ของคุณกับทีมนักพัฒนาของคุณเองเท่านั้นผู้ที่ใส่ใจในสิ่งที่คุณใช้ แม้ว่าถ้าคุณเลือกเครื่องมือที่เหมาะสมก็สามารถประหยัดเวลาจริง

จากทั้งหมดที่กล่าวมาคุณจะพบว่ามันยากที่จะได้รับจากบางอุตสาหกรรมโดยไม่สามารถออกแบบโดยใช้ UML ได้ ในอุตสาหกรรมอื่น ๆ คุณจะไม่เห็นมัน

นอกจากนี้ฉันคิดว่าคุณจะพบความสัมพันธ์ระหว่างอุตสาหกรรมที่ต้องการการออกแบบที่เหมาะสมเพราะค่าใช้จ่ายในการแก้ไขมีค่าสูงเช่นเดียวกับผู้ใช้งาน UML จำนวนมาก เมื่อเทียบกับอุตสาหกรรมที่ค่าใช้จ่ายในการแก้ไขการออกแบบนั้นน้อยกว่าการเปลี่ยนแปลงเอกสาร / รหัสเนื่องจากเป็นสถานที่ที่อาจไม่เคยใช้ UML

เกี่ยวกับคำถามเดิม วิทยาลัยส่วนใหญ่มีแนวโน้มที่จะฝึกอบรมนักเรียนของพวกเขาสำหรับ บริษัท ที่รับสมัครนักเรียนบ่อยที่สุด หากอาจารย์ของคุณคิดว่า UML มีความสำคัญแล้วมันจะไม่แปลกใจเลยที่ธุรกิจหลายอย่างที่รับสมัครจากโรงเรียนของคุณใช้ UML ดังนั้นคุณควรเรียนรู้การใช้งาน


0

เมื่อฉันอ่านเกี่ยวกับ UML ฉันลองสิ่งนี้ในทุกปัญหาที่ฉันต้องแก้ในหลักสูตร C ++ ของฉัน โชคดีที่หนึ่งในตัวอย่างแรกที่ฉันพยายามคือการอธิบายรายการที่เชื่อมโยง
ใช้งานไม่ได้
ที่กล่าวว่าควบคู่ไปกับกระบวนการสร้างแบบจำลองที่ดี UML มีประโยชน์ เพียงเพราะมันเป็นมาตรฐานที่ดีขึ้นหรือแย่ลง
ฉันชอบที่จะเห็นภาษาคำอธิบายของการเขียนโปรแกรมเมตาแม่แบบ ฉันคิดว่ามันจะช่วยได้มากในการทำความเข้าใจสิ่งที่เกิดขึ้นใน <<<>>> - ประเทศ


0

UML นั้นเจ็บปวดถ้าคุณลองพัฒนา Model Driven ด้วย ฉันหมายถึงว่า UML เป็นสัญลักษณ์ทางกราฟิกที่มีประโยชน์มากเท่านั้นและทุกอย่างอื่นก็ไม่มีประโยชน์ ฉันไม่ได้ใช้ในการสร้างแบบจำลอง แต่ใช้ UML ทุกวันเพื่อสร้างโครงสร้างของโครงการของฉัน สิ่งที่ฉันทำคือการวาดไดอะแกรมพื้นฐาน usecase ที่ระดับความต้องการอย่างรวดเร็วจากนั้นสลับเป็นไดอะแกรมคลาสทันที ฉันเพิ่มความต้องการตรวจสอบย้อนกลับระหว่าง usecase และคลาสไดอะแกรม คลาสไดอะแกรมของฉันยังสร้างรหัสเนื่องจากมีการซิงโครไนซ์สด ไม่มีแท็กในรหัสทุกรุ่นจะถูกบันทึกในรูปแบบ UML ซึ่งถูกแมปกับโครงการ Java

ฉันสร้างโครงกระดูกของแอปพลิเคชันของฉันด้วยไดอะแกรมระดับน้อยแล้วสลับไปใช้รหัส เมื่อฉันเสร็จรหัสฉันผสานกับรูปแบบ เป็นชนิดของการวนซ้ำระหว่างโค้ดและโมเดลที่โค้ดรันโมเดล แผนภาพคลาสของฉันให้ระดับที่สูงขึ้นของนามธรรมและรหัสของฉันในขณะที่รหัสของฉันให้การใช้ตรรกะทางธุรกิจของฉัน (เช่นวิธีการ)

การสร้างแบบจำลอง UML ต้องการเวลาน้อยกว่า 10 นาทีต่อวันซึ่งทำเมื่อฉันต้องการเวลาในการคิดว่าฉันต้องพัฒนาอะไรและอย่างไร

UML ยอดเยี่ยมยอดเยี่ยมและมีประโยชน์จริงๆ แต่การพัฒนาแบบจำลองนั้นไม่มีประโยชน์ !!


ฉันไม่เห็นด้วยที่ MDD ไม่มีประโยชน์ ฉันทำงานในสองโครงการที่ประสบความสำเร็จ ต้องใช้บริบทการทำงานบางอย่างเพื่อให้ทำงานได้ เรายังไม่รู้เกี่ยวกับวิศวกรรมซอฟต์แวร์ที่จะนำไปใช้อย่างมีประสิทธิภาพในทุกสถานการณ์
luis.espinal

0

ถ้าฉันกำลังบันทึกระบบที่เรานำมาใช้ฉันก็ลองวางมันลงด้วย UML อย่างเป็นทางการ แต่เวลาที่เหลือฉันใช้เท่าที่จำเป็นเพื่อทำความเข้าใจ ฉันพบว่าตัวเองใช้ DFD มากกว่า UML เนื่องจากดูเหมือนว่าจะเหมาะสำหรับระบบที่เราออกแบบเมื่อเร็ว ๆ นี้


0

ฉันเพิ่งหลุดจากวิทยาลัยระดับท็อปของฉัน (อย่างน้อยก็ชั่วคราว) เนื่องจากการยืนยันอย่างเข้มงวดของพวกเขาในกิจกรรมการสร้างแบบจำลองภาพที่ใช้เวลามากเกินไปการใช้งานฟอรั่มเหลือเกินทักษะที่อ่อนนุ่มซ้ำซ้อน ต่อส่วนต่อประสานกับผู้ใช้จะดีพอที่ความคิดที่ว่าการมีหนี้สินอย่างลึกซึ้งจะทำให้ใครอยากทำลายสิ่งต่าง ๆ ด้วยความหงุดหงิดที่สุด

ฉันต้องเลือกระหว่างการเรียนรู้สิ่งที่ฉันเห็นงานระดับเริ่มต้นและระดับจูเนียร์เรียกร้องและสิ่งที่ห่วง CES ตั้งสำหรับการรับรอง ABET ของมหาวิทยาลัยซึ่งทำให้ผู้มีอำนาจตัดสินใจที่จะเล่นเป็นใบ้เมื่อมีปัญหาจ้องมองด้วยเวลา จำกัด และความคาดหวังที่ไม่สมจริง การประเมิน PERT จะเปิดเผย มหาวิทยาลัยไม่ได้ฝึกในสิ่งที่สอน

ในความคิดของฉันกระบวนการแบบครบวงจรมีข้อดีมากมาย แต่การฝึกฝนทั้งหมดของการสร้างภาพวัตถุสิ่งที่เคยเป็นภาษาการสร้างแบบจำลองนั้นค่อนข้างไร้สาระ เอกสารที่ได้รับการปรับปรุงซ้ำแล้วซ้ำอีกซึ่งมีรายการแบบ seriate เช่นอาจสร้างด้วย Word, เวิร์กโฟลว์, Evernote, OpenOffice หรือชื่อตัวประมวลผลคำมีความสามารถในการจัดทำเอกสารสิ่งที่ต้องการโดย Unified Process อย่างสมบูรณ์ บางสิ่งบางอย่างที่ธรรมดาเจนนี้สามารถทำงานได้อย่างง่ายดายโดยผู้ใช้หลายคนควบคุมเวอร์ชันและหากเลือกเครื่องมือที่เหมาะสมที่จะทำมันทีมจะสามารถทำงานได้ในเวลาเดียวกัน สิ่งนี้ทำได้ง่ายกว่าเมื่อ UML ดูเหมือนเป็นโหมดที่จำเป็นในการรวมกลุ่มพยุหะ


โพสต์นี้ค่อนข้างอ่านยาก (ผนังข้อความ) คุณจะช่วยแก้ไขมันให้เป็นรูปร่างที่ดีขึ้นได้ไหม
ริ้น

1
ใช่. กำแพงข้อความ ยุติธรรมพอสมควร
JLG
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.