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

     ดังนั้นการออกแบบโปรแกรมที่มีการทำงานร่วมกันอย่างสูง (high cohesion) มีความสำคัญมากขึ้นในการทำให้โปรแกรมของเรามีภาพรวม (abstraction) ที่ดีและทำให้การออกแบบของเรามีความชัดเจนในการกำหนดเมธอดและฟิลด์ที่เกี่ยวข้องไว้ด้วยกันโดยไม่ถูกแทรกแซงจากโปรแกรมอื่นที่ไม่เกี่ยวข้อง 

     การทำงานร่วมกันสามารถแบ่งออกได้หลายชนิด เช่น (1) Functional cohesion : เกิดขึ้นเมื่อองค์ประกอบภายในคลาสทำงานร่วมกันโดยดำเนินการฟังก์ชันเดียวที่กำหนดไว้ (2) Sequential cohesion : เกิดขึ้นเมื่อองค์ประกอบภายในคลาสทำงานร่วมกันตามชุดของการดำเนินการตามลำดับที่กำหนด (3) Communicational cohesion : เกิดขึ้นเมื่อองค์ประกอบภายในคลาสทำงานร่วมกันโดยดำเนินการกับข้อมูลเดียวกัน แต่ไม่จำเป็นต้องดำเนินการด้วยฟังก์ชันเดียวกัน (4) Procedural cohesion : เกิดขึ้นเมื่อองค์ประกอบภายในคลาสทำงานร่วมกันโดยดำเนินการตามลำดับของการดำเนินการกับข้อมูลเดียวกัน (5) Temporal cohesion : เกิดขึ้นเมื่อองค์ประกอบภายในคลาสทำงานร่วมกันโดยดำเนินการพร้อมกันหรือระหว่างขั้นตอนการประมวลผลเดียวกัน ทั้งที่

ฟังก์ชั่นไม่เกี่ยวกัน (6) Logical cohesion : เป็นการทำงานร่วมกันเชิงตรรกะเกิดขึ้นเมื่อส่วนต่าง ๆ ของฟังก์ชันถูกรวมเข้าด้วยกันเพราะมีส่วนร่วมในงานเดียวกันแม้ว่าเจตนาจะต่างกันก็ตาม (7) Coincidental cohesion : เป็นรูปแบบที่ไม่ดีเพราะฟังก์ชั่นที่ไม่เกี่ยวข้องกันถูกจัดกลุ่มเข้าด้วยกัน ไม่มีการทำงานร่วมกันโดยสิ้นเชิง ทำให้ยากต่อการทำความเข้าใจเพราะประกอบไปด้วยวัตถุประสงค์ที่แตกต่างกัน นำกลับมาใช้ได้ยาก การแก้ไขปรัปรุงสามารถนำไปสู่การกระจายข้อผิดพลาดไปในโปรแกรม