# Understanding Composition in Software Development ![rw-book-cover](https://miro.medium.com/v2/da:true/resize:fit:1200/0*2px3-S5mOYJWlt1q) ## Metadata - Author: [[Hamida Meknassi]] - Full Title: Understanding Composition in Software Development - Category: #articles - Document Tags: [[dev]] [[dev/design-patterns]] - URL: https://medium.com/@hamida.meknassi/understanding-composition-in-software-development-74f84ab984ce - Archive: https://web-archive.alecodes.page/bookmarks?bf=1&search=&title=Understanding%20Composition%20in%20Software%20Development > [!tldr] > Composition is a software development principle that emphasizes building complex systems by combining smaller, independent components rather than using inheritance. This approach offers flexibility, reusability, and easier maintenance, making it a popular choice among developers. By favoring composition, developers can create more adaptable and manageable systems. ## Highlights At its core, composition is about constructing complex systems by piecing together smaller, distinct objects. In object-oriented programming lingo, we often describe it as a “has-a” relationship rather than the “is-a” relationship that comes with inheritance. [View Highlight](https://read.readwise.io/read/01j7jxtrsfs087rbx45dgh9skx)) Flexibility : As requirements change, it’s easier to swap or upgrade individual components without disrupting the entire system. Reusability : Crafted correctly, components can be used across various parts of a project or even in entirely different projects. Maintainability : Focused and modular components are easier to understand, test, debug, and enhance. Reduced Side Effect : Unlike inheritance, where modifying the base can have widespread consequences, composition limits the ripple effect of changes. [View Highlight](https://read.readwise.io/read/01j7jxvsqhk5j1bzjarjrwymhr)) When facing a complex problem, ask: - Which components make up this system? - How can I break this down into smaller, more manageable pieces? - Can I reuse existing components? [View Highlight](https://read.readwise.io/read/01j7jxxp9dp3sqncv2d9rewnqs))