คืออะไรบางอย่างที่เป็นข้อดีและข้อเสียทางกฎหมายสำหรับแต่ละโมเดลการพัฒนาในการพัฒนาระบบ
วิธีการดำเนินโครงการพัฒนาระบบมีวิธีการที่เฉพาะเจาะจง โดยปกติแล้ว เมื่อเราเรียนรู้เกี่ยวกับปัญหาทางกฎหมายที่เกี่ยวข้องกับการพัฒนาระบบจากหนังสือหรือแหล่งข้อมูลอื่น ๆ มักจะมีการสมมติว่าเราใช้วิธีการที่เรียกว่า “Waterfall Model” หรือ แบบจำลองน้ำตก ซึ่งเป็นวิธีการที่เก่าแก่ที่สุด แต่วิธีการหรือแบบจำลองที่ใช้ในการพัฒนาระบบไม่ได้จำกัดเฉพาะที่แบบจำลองน้ำตกเท่านั้น ตัวอย่างเช่น ในปัจจุบันมีการเลือกใช้วิธีการที่เรียกว่า “Agile Development Model” หรือ แบบจำลองการพัฒนาแบบอไจล์ มากขึ้น
ในบทความนี้ เราจะอธิบายและเปรียบเทียบระหว่างแบบจำลองน้ำตกและแบบจำลองการพัฒนาแบบอไจล์ โดยมุ่งเน้นที่การจัดการความเสี่ยงทางกฎหมายและการป้องกันความขัดแย้ง
คืออะไรคือโมเดลการพัฒนา
คืออะไรคือโมเดลวอเตอร์ฟอลล์
วิธีการที่ทั่วไปและคลาสสิกที่สุดในการพัฒนาระบบคือดังต่อไปนี้:
- การกำหนดความต้องการ: การสรุปฟังก์ชันที่ระบบที่จะสร้างควรมีและข้อกำหนดที่จำเป็น
- การออกแบบพื้นฐาน: การออกแบบหน้าจอและการเปลี่ยนหน้าจอ ฯลฯ โดยเฉพาะอย่างยิ่งจากมุมมองของผู้ใช้ที่จะควบคุมระบบ
- การออกแบบรายละเอียด: การเชื่อมโยงระหว่างไฟล์โปรแกรม ฯลฯ โดยเฉพาะอย่างยิ่งจากมุมมองของผู้พัฒนาระบบ
- การติดตั้งโปรแกรม: การเขียนโค้ดโปรแกรมตามแผนการออกแบบ
- การทดสอบ: การตรวจสอบว่าสิ่งที่ได้ตรงตามข้อกำหนดหรือไม่และขอให้ผู้ใช้ยืนยัน
วิธีการพัฒนาที่ดำเนินการไปในทิศทางลงมาจากต้นน้ำไปยังปลายน้ำโดยไม่มีการกลับมาทำซ้ำหรือการเปลี่ยนแปลงลำดับขั้นตอนเรียกว่า “โมเดลวอเตอร์ฟอลล์” การดำเนินการตามกระแสนี้ไม่จำเป็นต้องมีเพื่อสร้างระบบที่ทำงานได้ แต่ในการพัฒนาระบบที่มักจะเป็นโครงการที่ใช้จำนวนคนมากและใช้เวลานาน การวางแผนเป็นสิ่งที่สำคัญ ดังนั้น การแบ่งขั้นตอนการทำงาน การจัดการบทบาท และการชัดเจนขอบเขตความรับผิดชอบของผู้รับผิดชอบแต่ละคนเป็นสิ่งที่มักจะได้รับความสำคัญ
คืออะไรคือโมเดลการพัฒนาแบบอ agile
อย่างไรก็ตาม วิธีการดำเนินการพัฒนาไม่จำเป็นต้องเป็น “จากต้นน้ำไปยังปลายน้ำ” ในทุกครั้ง แน่นอนว่า การวางแผนและการประเมินเป็นสิ่งที่สำคัญในธุรกิจ แต่ในการสร้างสิ่งใหม่ ๆ หรือสร้างผลงาน การวางแผนที่สมบูรณ์แบบในความหมายที่แท้จริงนั้นอาจจะเป็นไปไม่ได้ตั้งแต่แรก ถ้าเราสนใจในประเด็นนี้ นอกจากการดำเนินการตามแผนที่ได้รับมาแล้ว การปรับแก้ในภายหลังและการเปลี่ยนแปลงข้อกำหนดที่ยืดหยุ่น การเพิ่มจำนวนการทดลองและผิดพลาด ฯลฯ ควรได้รับความสำคัญ วิธีการพัฒนาที่สะท้อนความคิดนี้เรียกว่า “โมเดลการพัฒนาแบบ agile” ในโมเดลการพัฒนาแบบ agile จะไม่ใช้เวลามากในการเตรียมแผนการละเอียดและเอกสารออกแบบ แต่จะทำโปรแกรมขนาดเล็ก ๆ แล้วทดสอบซ้ำ ๆ และทำให้โปรแกรมหรือระบบใหญ่ขึ้นเรื่อย ๆ ซึ่งเป็นสิ่งที่ทั่วไป
การเรียนรู้ปัญหาทางกฎหมายง่ายด้วยโมเดลวอเตอร์ฟอลล์
ก่อนที่เราจะเปรียบเทียบระหว่างโมเดลการพัฒนาทั้งสอง, ขอกล่าวถึงปัญหาทางกฎหมายที่เกี่ยวข้องกับแต่ละโมเดลการพัฒนา, และความง่ายในการเก็บข้อมูลและการเรียนรู้กฎหมายเป็นข้อพื้นฐาน.
หนังสืออ้างอิงส่วนใหญ่เขียนอยู่บนพื้นฐานของโมเดลวอเตอร์ฟอลล์
เมื่อคุณพยายามศึกษาปัญหาทางกฎหมายที่เกี่ยวข้องกับการพัฒนาระบบหรือความรู้ทางกฎหมาย, โมเดลวอเตอร์ฟอลล์มีข้อได้เปรียบในการเก็บข้อมูล. หนังสือกฎหมายที่พูดถึงการพัฒนาระบบส่วนใหญ่เขียนอยู่บนพื้นฐานของโมเดลวอเตอร์ฟอลล์. เนื่องจากการพัฒนาระบบแบบคลาสสิกและทั่วไปจะดำเนินการตามโมเดลวอเตอร์ฟอลล์, การพัฒนาแบบอ agile จึงมีการวางตำแหน่งเพียงเล็กน้อยและมักจะถูกนำเสนออย่างคร่าวๆ. ดังนั้น, ถ้าคุณต้องการข้อมูลจากหนังสือเกี่ยวกับปัญหาทางกฎหมายที่เกี่ยวข้องกับการพัฒนาระบบ, โมเดลวอเตอร์ฟอลล์จะทำให้การเรียนรู้ง่ายขึ้น.
โมเดลวอเตอร์ฟอลล์มีการสะสมคดีศาลมาก
นอกจากนี้, โมเดลวอเตอร์ฟอลล์เป็นวิธีการพัฒนาระบบแบบคลาสสิกและทั่วไป, ดังนั้นมีการสะสมคดีที่เกิดขึ้นจริงในอดีตมากมาย. ในการอภิปรายกฎหมาย, ความรู้เกี่ยวกับคดีศาลในอดีตเป็นสิ่งสำคัญเท่ากับข้อความของกฎหมาย. ในบางกรณีที่ไม่สามารถกำหนดได้ว่าเป็น “ขาว” หรือ “ดำ” จากการอ่านข้อความของกฎหมายเท่านั้น, คุณสามารถเติมเต็มเนื้อหาของกฎหมายโดยการได้รับความรู้จากคดีศาลในอดีต.
แม้ว่าจะไม่ได้ระบุไว้ในกฎหมายที่เขียนไว้ชัดเจน, การสะสมการตัดสินของศาลอาจจะถูกตั้งขึ้นเป็นมาตรฐานการตัดสินเหมือนกับข้อความของกฎหมาย. สิ่งเหล่านี้เรียกว่า “หลักการตามคดีศาล”. ในบริบทของการพัฒนาระบบหรืออื่น ๆ, ถ้ามีการสะสมหลักการตามคดีศาลอยู่แล้ว, แม้ว่าจะเป็นความขัดแย้งที่ไม่รู้จัก, การทำนายผลของความขัดแย้งสุดท้ายอาจจะง่ายขึ้น. โมเดลวอเตอร์ฟอลล์ที่ใช้ในการพัฒนาระบบมีข้อได้เปรียบในด้านนี้.
ข้อดีของแต่ละวิธีการพัฒนา
ด้วยเนื้อหาที่ได้กล่าวมาข้างต้น ต่อไปนี้เราจะจัดเรียงข้อดีและข้อเสียของแต่ละวิธีการพัฒนาโดยเปรียบเทียบกัน ในส่วนแรกจะเป็นการจัดเรียงข้อดีของโมเดลวอเตอร์ฟอลล์เป็นหลัก และยิ่งไปถึงส่วนล่าง ข้อดีของการพัฒนาแบบ Agile จะเป็นที่เข้าใจได้ง่ายขึ้น
การเปรียบเทียบในด้านการวางแผนและความสามารถในการมองเห็นภาพรวม
ในด้านของการวางแผนและความสามารถในการมองเห็นภาพรวม, สามารถกล่าวได้ว่าโมเดลวอเตอร์ฟอลล์มีความสามารถที่ดีกว่า ไม่ว่าระบบที่จะสร้างขึ้นจะมีขนาดใหญ่เพียงใด, แต่ละขั้นตอนในกระบวนการจะถูกแบ่งย่อยลงไปอย่างแน่นอน โดยการตั้งกำหนดเวลาสำหรับแต่ละขั้นตอน, ความคืบหน้าของงานสามารถจัดการได้อย่างมีระบบและมีแผนการ
ในทางกลับกัน, การพัฒนาแบบ Agile นั้นเป็นวิธีการที่ไม่ใช้ค่าใช้จ่ายหรือแรงงานมากมายในการวางแผนล่วงหน้าหรือการมองภาพรวมของระบบทั้งหมด, ดังนั้นจึงมีโอกาสที่จะกลายเป็นวิธีการที่เน้นไปที่การตอบสนองต่อสถานการณ์ที่เกิดขึ้น
การเปรียบเทียบความง่ายในการชัดเจนของบทบาทและขอบเขตความรับผิดชอบของแต่ละบุคคล
ในรูปแบบวอเตอร์ฟอลล์ (Waterfall Model) ขั้นตอนการทำงานจะถูกแบ่งออกเป็นส่วนย่อยๆ ทำให้สามารถทำให้บทบาทของสมาชิกในโปรเจคแต่ละคนชัดเจนได้ ซึ่งเป็นข้อได้เปรียบ
ในขณะที่การพัฒนาแบบอ agile ขั้นตอนการทำงานมักจะมีความคลุมเครือ ทำให้เมื่อเกิดปัญหาที่ไม่คาดคิด จะมีความคลุมเครือในเรื่องของผู้รับผิดชอบด้วย ซึ่งเป็นแนวโน้มที่เกิดขึ้นได้ง่าย
การเปรียบเทียบความง่ายในการพัฒนาขนาดใหญ่
โมเดลวอเตอร์ฟอลล์ที่เด่นเรื่องการวางแผนและการจัดบทบาท จะมีข้อได้เปรียบมากขึ้นเมื่อพัฒนาขนาดใหญ่ แม้ว่าจะต้องจัดการกับจำนวนคนที่มากขึ้น แต่ถ้าสามารถแบ่งขั้นตอนการทำงานออกเป็นส่วนย่อยๆ และส่งเสริมการแบ่งงาน ค่าใช้จ่ายในการปรับปรุงความสัมพันธ์ระหว่างบุคคลสามารถลดลงได้
ในทางกลับกัน โมเดลการพัฒนาแบบ Agile ถูกพิจารณาว่าไม่เหมาะสมกับการพัฒนาขนาดใหญ่ มันเป็นวิธีการที่เน้นความรวดเร็วในการเริ่มต้นมากกว่าการวางแผนและการจัดบทบาท ดังนั้น มันอาจจะยากที่จะนำมาใช้ในสถานการณ์ที่มีความกังวลเกี่ยวกับการเลื่อนของกำหนดการสุดท้าย
การเปรียบเทียบความรวดเร็วและประสิทธิภาพ
การพัฒนาแบบ Agile เริ่มต้นได้เร็วกว่า
ในด้านความรวดเร็วจากการที่ผู้ใช้มีความต้องการในฟังก์ชันใด ๆ จนถึงการที่ฟังก์ชันนั้นถูกสร้างขึ้นจริง ๆ การพัฒนาแบบ Agile มีความสามารถที่ดีกว่า นั่นเพราะในการพัฒนาแบบ Waterfall ปกติแล้วจะมีการแบ่งหน้าที่ระหว่างผู้รับผิดชอบในกระบวนการที่ต่าง ๆ ทำให้การสื่อสารภายในทีมงานมีความซับซ้อน และมีโอกาสที่จะเกิดปัญหาในการเปลี่ยนแปลงข้อกำหนดหลังจากที่โครงการเริ่มขึ้น
ในทางกลับกัน การพัฒนาแบบ Agile สามารถเริ่มต้นและดำเนินการได้ด้วยความรวดเร็วโดยไม่ต้องมีผู้ประสานงาน นี่คือข้อได้เปรียบที่สำคัญที่สุดของการพัฒนาแบบ Agile ที่ทำให้สามารถตอบสนองต่อการเปลี่ยนแปลงข้อกำหนดได้ง่าย แต่ถ้ายอมรับการเปลี่ยนแปลงข้อกำหนดและการพัฒนาเพิ่มเติมอย่างไม่มีข้อจำกัด โครงการอาจจะตกอยู่ในสถานการณ์ที่เสี่ยงต่อการล้มเหลว ดังนั้น การจัดการการเปลี่ยนแปลงในการพัฒนาแบบ Agile จึงเป็นสิ่งที่สำคัญสำหรับความสำเร็จของโครงการ สำหรับรายละเอียดเกี่ยวกับการจัดการการเปลี่ยนแปลง สามารถอ่านได้ในบทความด้านล่างนี้
https://monolith.law/corporate/howto-manage-change-in-system-development[ja]
การพัฒนาแบบ Waterfall มีโอกาสน้อยกว่าที่จะล้มเหลวระหว่างทาง
อย่างไรก็ตาม ในการเปรียบเทียบด้านความรวดเร็วและประสิทธิภาพ การพิจารณาในระยะเวลาที่ยาวนานก็เป็นสิ่งที่สำคัญ ถ้าพิจารณาเรื่องความเสี่ยงที่โครงการอาจจะล้มเหลวระหว่างทาง การพัฒนาแบบ Waterfall จะมีข้อได้เปรียบ ความเสี่ยงที่สูงสุดในการทำให้โครงการล้มเหลวคือการสื่อสารที่ไม่ดีระหว่างผู้ใช้และทีมพัฒนา การพัฒนาแบบ Waterfall ที่ทำให้สามารถแบ่งหน้าที่ระหว่างทั้งสองฝ่ายได้ชัดเจนจึงมีข้อได้เปรียบในด้านนี้
การพัฒนาแบบ Agile ทำให้การตรวจรับผลงานดำเนินไปได้ราบรื่น
อย่างไรก็ตาม ในด้านการทำให้การสนทนาในขั้นตอนการตรวจรับผลงานดำเนินไปได้ราบรื่น การพัฒนาแบบ Agile มีข้อได้เปรียบ เนื่องจากมีการแบ่งปันข้อมูลระหว่างผู้ใช้และทีมพัฒนาในระหว่างกระบวนการพัฒนา ทำให้สามารถลดความเสี่ยงที่จะเกิดความไม่เข้าใจร่วมกันเมื่อดูผลงานที่สร้างขึ้นในท้ายที่สุด สำหรับรายละเอียดเกี่ยวกับขั้นตอนการตรวจรับผลงานในการพัฒนาระบบและปัญหาทางกฎหมายที่เกี่ยวข้อง สามารถอ่านได้ในบทความด้านล่างนี้
https://monolith.law/corporate/estimated-inspection-of-system-development[ja]
สรุป
เมื่อเราเปรียบเทียบอย่างนี้ โดยรวมแล้ว รูปแบบวอเตอร์ฟอลล์เป็นรูปแบบที่ช่วยให้การจัดการเป็นไปอย่างละเอียดอ่อน ในขณะที่รูปแบบการพัฒนาแบบอ agile นั้นเน้นความรวดเร็วในการเริ่มต้นและการดำเนินการ คุณสามารถจัดเรียงได้ดังนี้ อย่างไรก็ตาม สำหรับปัญหาทางกฎหมายที่เกี่ยวข้องกับการพัฒนาระบบตามรูปแบบการพัฒนาแบบ agile นั้น ได้รับการอธิบายอย่างละเอียดในบทความด้านล่างนี้
https://monolith.law/corporate/legal-and-contract-issues-of-agile-development[ja]
การเลือกรูปแบบการพัฒนาที่เหมาะสมนั้น นอกจากจะต้องพิจารณาจากมุมมองของกฎหมายแล้ว ยังต้องพิจารณาจากขนาดของโปรเจค งบประมาณ และวัตถุประสงค์ ดังนั้น ควรตัดสินใจอย่างครอบคลุม
Category: IT
Tag: ITSystem Development