มาตรฐานสำหรับการสร้างแบบจำลองการใช้งานที่ทันสมัยก่อนการพัฒนาคืออะไร?


9

ฉันกำลังใช้งานแอปพลิเคชันระดับองค์กรครั้งแรกของฉันและฉันต้องการให้ทีมของฉันสร้างแบบจำลองแอปพลิเคชัน ASP.NET MVC C # ทั้งหมดก่อนที่เราจะแตะโค้ดหนึ่งบรรทัด

UPDATE: สิ่งนี้ไม่ได้มีวัตถุประสงค์เพื่อการอภิปรายเชิงปรัชญาเกี่ยวกับเวลาที่จะจัดทำเอกสาร / แบบจำลองแอปพลิเคชัน โปรดให้คำตอบสำหรับ "วิธี" กับเอกสาร / รุ่นเท่านั้น

ความจริงก็คือฉันเคยอ่านในแผนกนี้มาตลอดและฉันไม่เคยทำแบบจำลองแอปพลิเคชันมาก่อน วิธีมาตรฐานในการทำเช่นนี้คืออะไร? ควรใช้ไดอะแกรมชนิดใดและเอกสารประกอบจะเป็นอย่างไร ลิงก์ไปยังไดอะแกรมตัวอย่างและเอกสารประกอบได้รับการชื่นชม

เมื่อค้นหาฉันสามารถค้นหาสิ่งต่าง ๆ มากมายในเน็ต แต่ฉันต้องการดูว่ามีฉันทามติสมัยใหม่ในปัจจุบันเกี่ยวกับวิธีการทำสิ่งนี้หรือไม่

ขอบคุณล่วงหน้า!

คำชี้แจงการปิด

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

ลิงค์ที่มีประโยชน์อื่นที่ฉันค้นพบคือ: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519


6
คุณต้องการที่จะทำน้ำตก?
Etienne de Martel

1
@ เทียนน์น้ำตก? หากนั่นเป็นการอ้างอิงที่น่ารำคาญบางอย่างฉันก็ไม่เข้าใจ การวิจารณ์ / ข้อเสนอแนะที่สร้างสรรค์ได้รับการชื่นชม คุณจะเพิ่มความคิดเห็นของคุณเองเพื่อช่วยให้ฉันเข้าใจปัญหาได้

6
"ฉันต้องการให้ทีมของฉันสร้างแบบจำลองแอปพลิเคชัน ASP.NET MVC C # ทั้งหมดก่อนที่เราจะแตะโค้ดหนึ่งบรรทัด" เกลียดที่จะพูดแบบนี้ แต่คุณเกือบจะกระทำตัวเองที่จะล้มเหลวก่อนที่คุณจะเริ่มต้น ขอบเขตการใช้งานเต็มรูปแบบความต้องการของผู้ใช้การบำรุงรักษาจะไม่สามารถมองเห็นได้โดยสิ้นเชิงจนกว่าคุณจะเริ่มเขียนโค้ดจริง หากคุณยืนยันในการออกแบบที่ยิ่งใหญ่คุณจะต้องใช้เวลามากขึ้นในการปรับปรุงการออกแบบของคุณมากกว่าการเขียนแอปพลิเคชันของคุณ การออกแบบระดับสูงก็โอเคแต่การบันทึกแอพทั้งหมดหรือไม่ ไม่ได้อย่างแน่นอน.
Juliet

3
@Chevex: Waterfall เป็นวิธีการพัฒนาที่เกี่ยวข้องกับการออกแบบล่วงหน้ามากมาย ดูเหมือนว่าค่อนข้างเป็นที่ยอมรับในชุมชนการพัฒนาซอฟต์แวร์ว่าวิธีการพัฒนานี้ทำงานได้ไม่ดีเท่าที่ควร
quentin-starin

1
touche @Chevex, touche ... เดินออกไปอย่างเงียบ ๆ
mcgrailm

คำตอบ:


6

ฉันทามติที่ทันสมัยในปัจจุบัน

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

ในทางตรงกันข้ามมีสงครามศักดิ์สิทธิ์เกิดขึ้นระหว่างคน "เปรียว" ที่พูดว่า "อย่าทำแบบจำลองอย่างเป็นทางการเขียนรหัสทำงานได้ดีกว่า" และ "BDUF" (ผู้ออกแบบขนาดใหญ่ด้านหน้า) คนที่กำลังคิดเครื่องมือเช่น " MDA "(สถาปัตยกรรมที่ขับเคลื่อนด้วยโมเดล) เป็นคำตอบ

คนอื่น (อีกครั้ง) ค้นพบการเขียนโปรแกรมตามโฟลว์สำหรับการออกแบบซอฟต์แวร์ที่ทันสมัยเป็นทางเลือกสำหรับ UML อ่านที่นี่และที่นี่เพื่อหาข้อมูลเพิ่มเติมเกี่ยวกับที่


Great Scott! นี่คือคำตอบที่ดีที่สุดสำหรับคำถามนี้ ภาพรวมคร่าวๆของการสร้างแบบจำลองที่ดีในอุตสาหกรรมและที่ตั้งของมัน ขอบคุณหมอ! +1.21 jiggawatts!

7

ฉันต้องการให้ทีมของฉันสร้างแบบจำลองแอปพลิเคชัน ASP.NET MVC C # ทั้งหมดก่อนที่เราจะแตะโค้ดหนึ่งบรรทัด

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

ความพยายามในการออกแบบแอพพลิเคชั่นทั้งหมดก่อนรหัสใด ๆ (โดยรวม แต่แอพที่ง่ายที่สุด) มักจะเป็นความเขลา

คุณเชื่อจริง ๆ หรือไม่ว่าคุณสามารถจัดเค้าร่างทุกชั้นและวิธีการและโครงสร้างข้อมูลโดยละเอียดล่วงหน้า?

ฉันแค่อยากรู้วิธีสร้างแบบจำลองที่ดี

สำหรับเครื่องมือจริงในการสร้างแบบจำลองฉันได้ลองใช้ไม่กี่ครั้งและมักจะกลับมาที่ Microsoft Visio

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

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

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

ควรใช้ไดอะแกรมชนิดใดและเอกสารประกอบจะเป็นอย่างไร

สิ่งที่ฉันทำในวันนี้ส่วนใหญ่เป็นแผนภาพปฏิสัมพันธ์ อีกครั้งฉันไม่ได้ทำแบบจำลองมาก - เพียงที่ฉันรู้สึกว่าการออกกำลังกายในการวาดรูปแบบจริงๆช่วยให้เข้าใจ


เราสามารถปรับการสร้างแบบจำลองของเราในขณะที่เราไป นั่นไม่ใช่ประเด็นฉันต้องการรู้วิธีแก้ปัญหาการสร้างแบบจำลองที่ดี

ดังนั้นคุณตั้งใจจะลองและทำให้โมเดลและโค้ดของคุณตรงกันอยู่เสมอ สิ่งนี้ไม่ได้ผลมากที่สุด พวกเขาจะแตกต่างอย่างหลีกเลี่ยงไม่ได้และความแตกต่างจะทำให้เกิดปัญหา รวมทั้งคุณจะต้องใช้เวลาจำนวนมากในการลอง
quentin-starin

โปรดอ่านคำถามที่อัปเดต

@Chevex: ฉันเพิ่มทุกอย่างที่ฉันสามารถทำได้เกี่ยวกับคำถามที่แก้ไขของคุณ
quentin-starin

@ คำถามประเด็นของฉันคือคุณกำลังตอบคำถามที่ฉันไม่ได้ตั้งใจจะถาม ดูหัวข้อ "อัพเดท" ของคำถาม

3

แผนภาพ UMLเป็นจุดเริ่มต้นที่ดีมีวิธีง่าย ๆ มากมายในการทำเช่นนี้กับซอฟต์แวร์ฟรีหรือจ่ายเงิน ตัวอย่างง่ายๆของเครื่องมือในการสร้าง UML คือภาพวาดของ Google docs แพ็คเกจขั้นสูงจะเป็น Visio หรือ OmniGraffle

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


ฉันเคยได้ยินเกี่ยวกับ UML มีคำแนะนำสำหรับสถานที่ในการเริ่มต้นหรือไม่? เครื่องมือที่ดีที่คุณแนะนำ?

@Chevex - เพิ่งค้นหา google ได้อย่างรวดเร็วและพบสิ่งนี้: agilemodeling.com/artifacts/classDiagram.htmดูเหมือนว่าจะเป็นจุดเริ่มต้นที่ดี
Brett

@qes - ขึ้นอยู่กับว่าเขามีเวลา / ผลประโยชน์ / การลงทุนมากน้อยเพียงใดในการก้าวไปตามเส้นทางนี้มันอาจเป็นทั้งประสบการณ์การเรียนรู้ที่ดีและอาจช่วยให้เขาเข้าใจบางส่วนของรหัสก่อนที่เขาจะเขียน แค่ UML ง่าย ๆ ) ... แต่ฉันเห็นด้วยเขาน่าจะมีเวลาเพียงพอและมีความสนใจส่วนตัวในการทำสิ่งนี้
Brett

@ โปรดอ่านคำถามที่อัปเดตแล้ว

2
@Chevex - คุณอาจต้องการเริ่มต้นด้วยการอ่านบางอย่างกับชนิดไดอะแกรมและสิ่งที่พวกเขาตั้งใจจะสื่อสาร UML เป็นภาษาการสร้างแบบจำลองซึ่งสามารถอธิบายได้อย่างชัดเจน แต่ก็มีความแตกต่างมากมาย UML โดยสรุปช่วยฉันได้ไม่มาก ( oreilly.com/catalog/9781565924482 ) ที่ถูกกล่าวว่าคุณมักจะได้รับโดยชุดรุ่นเต็มแผนภาพที่ตัดลง ตราบใดที่ผู้คนสร้างไดอะแกรมและผู้คนที่อ่านไดอะแกรมก็เห็นด้วยกับสิ่งที่พวกเขาหมายถึง

2

ตามที่ @Brett แนะนำไว้แผนภาพ UML นั้นดีที่สุด ด้วย UML มันเป็นสิ่งที่ดีที่จะมีคลาสไดอะแกรมและไดอะแกรมเวิร์กโฟลว์ ทั้งสองนี้จะครอบคลุมความต้องการการออกแบบส่วนใหญ่

ด้วยไดอะแกรมคลาสคุณสามารถสร้างแบบจำลองสมาชิกของแต่ละเอนทิตี้ระดับความปลอดภัยเป็นต้น

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


ขอบคุณสำหรับคำตอบนี้ แนะนำเครื่องมือที่มีประโยชน์หรือไม่ visual studio รองรับ UML ในทางใดทางหนึ่งหรือไม่?

Visual studio ให้ความช่วยเหลือในการทำแผนภาพคลาส มันไม่ดีสำหรับเวิร์กโฟลว์ เครื่องมือที่มีเหตุผลเป็นสิ่งที่ดีที่สุดสำหรับการออกแบบ / การสร้างแบบจำลอง UML ผู้สร้างแบบจำลองซอฟต์แวร์ที่มีเหตุผลเป็นสิ่งที่ฉันคุ้นเคย ฉันเคยได้ยินว่า Rational Rose เป็นอีกหนึ่งเครื่องมือที่ยอดเยี่ยม

2

ในขณะที่ฉันเชื่อมั่นอย่างยิ่งในการสร้างภาพวาดสถาปัตยกรรมขั้นพื้นฐานบางอย่างก่อนที่จะเขียนรหัสฉันคิดว่าการวาดรายละเอียดของแอปทั้งหมดนั้นใช้งานได้มากเกินไป

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

ความคิดที่ดีคือการวาดบางส่วนจากมุมมองอื่น ๆ แทนที่จะวาดทุกอย่างฉันมักชอบฟังก์ชั่นหนึ่งอย่างของระบบแล้วเห็นภาพเป็น:

  • ใช้แผนภาพกรณี (UML)
  • แผนภูมิการไหลหรือ UML Swim-lane (ระดับสูงมาก)
  • ภาพรวมองค์ประกอบทางสถาปัตยกรรม

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

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