การเขียนโปรแกรมแบบแยกส่วนเป็นวิธีการในการออกแบบซอฟต์แวร์โดยแยกส่วนประกอบของโปรแกรมซอฟต์แวร์ขนาดใหญ่ออกเป็นชิ้นส่วนที่จัดการได้ ชิ้นส่วนเหล่านั้นหรือ "โมดูล" สามารถพัฒนาทดสอบและขัดเกลาได้อย่างอิสระ เป็นกระบวนการที่โดยทั่วไปจะช่วยลดระยะเวลาในการพัฒนาและหลีกเลี่ยงการทำซ้ำรหัส
การระบุ commonalities ภายในซอฟต์แวร์เป็นรากฐานของการเขียนโปรแกรมแบบแยกส่วน โดยการจัดกลุ่มวัตถุและกระบวนการเข้าด้วยกันและทำให้แน่ใจว่าแต่ละโมดูลผลลัพธ์ทำงานได้ดีการทำงานที่เหมาะสมของระบบทั้งหมดจะได้รับการปรับปรุง นั่นคือถ้าโมดูลทำงานได้ดีในแง่ของสิ่งที่โมดูลนั้นทำอยู่พวกเขาจะทำงานได้ดีขึ้นเมื่อรวมกัน
การพึ่งพาอาศัยกันน้อยที่สุดระหว่างโมดูลนั้นเป็นคุณสมบัติที่สำคัญอีกอย่างหนึ่งของการออกแบบโปรแกรมแบบแยกส่วน การพึ่งพาน้อยที่สุดหมายความว่าสามารถมีความสัมพันธ์จำนวนมากระหว่างวัตถุ ภายใน โมดูลและความสัมพันธ์ระหว่างวัตถุในโมดูล แยกต่างหาก เพื่อประเมินระดับการพึ่งพาภายในโปรแกรมผู้พัฒนาซอฟต์แวร์ใช้กระบวนการวัดที่เรียกว่าการแต่งงานกัน การเชื่อมต่อบางอย่างเป็นสิ่งจำเป็นเพื่อให้โมดูลทำงานร่วมกันเพื่อให้บรรลุเป้าหมายของโปรแกรมซอฟต์แวร์โดยรวม แต่เพื่อลดความเป็นไปได้ของข้อผิดพลาด
การซ่อนข้อมูล แต่อีกด้านหนึ่งมักใช้ในการเขียนโปรแกรมแบบแยกส่วนนอกจากนี้ยังช่วยปรับปรุงสิ่งต่าง ๆ และลดข้อผิดพลาดและความซ้ำซ้อน โดยพื้นฐานแล้วฟีเจอร์นี้จะ จำกัด จำนวนข้อมูลที่ให้ไว้เฉพาะในส่วนที่จำเป็นเท่านั้น เพิ่มเติมแม้ว่าอาจเกี่ยวข้อง แต่ข้อมูลจะไม่ถูกส่งต่อไปยังผู้ใช้ซอฟต์แวร์หรือโมดูลโปรแกรมที่ร้องขอข้อมูลจากโมดูลอื่นภายในโปรแกรม
การเขียนโปรแกรมแบบแยกส่วนมักจะใช้ไลบรารีโค้ดที่คอมไพล์แล้วหนึ่งชุดซึ่งมีความสอดคล้องในการเข้ารหัสหรือการเขียนโปรแกรมของแต่ละโมดูล หากโปรแกรมประกอบด้วยโมดูล A, โมดูล B และโมดูล C โมดูลเหล่านั้นทั้งหมดจะเรียกใช้รหัสแหล่งเดียวที่สามารถนำมาใช้ซ้ำได้ในโมดูลทั้งหมด การขาดการทำซ้ำสำหรับแต่ละโมดูลทั้งเพิ่มประสิทธิภาพของระบบและลดความเป็นไปได้ของข้อผิดพลาดของมนุษย์ในการเขียนโปรแกรม
แนวคิดของการแบ่งในการเขียนโปรแกรมแบบแยกส่วนทำให้แต่ละโมดูลและสิ่งที่ประกอบด้วยมันเป็นอิสระจากกัน แต่แต่ละโมดูลจะขึ้นอยู่กับรหัสฐานเดียวกัน ความพิเศษเฉพาะระหว่างโมดูลช่วยให้นักพัฒนาซอฟต์แวร์สามารถแทนที่หรืออัปเกรดซอฟต์แวร์แต่ละชิ้นในเวลาเดียวกัน การใช้วิธีการแยกส่วนผู้พัฒนาสามารถโหลดส่วนที่ต้องการของโปรแกรมได้ตามต้องการ ความสามารถในการเพิ่มหรือเปลี่ยนแปลงซอฟต์แวร์ได้อย่างง่ายดายโดยไม่จำเป็นต้องแก้ไขโปรแกรมพื้นฐานช่วยให้นักพัฒนาสามารถปล่อยแอพพลิเคชั่นซอฟต์แวร์หลายเวอร์ชันที่มีองค์ประกอบที่ปรับแต่งได้


