Metoda îndeplinește criteriul Componentei Modulare dacă furnizează dezvoltarea elementelor unui produs software interconectat în mod liber pentru a obține noi sisteme, poate într-un mediu diferit de cel pentru care aceste elemente au fost inițial dezvoltate.
Compoziția definește procesul care este invers al descompunerii: elementele produsului software sunt extrase din contextul pentru care au fost inițial intenționate să fie folosite din nou într-un context diferit.
Metoda de proiectare modulară facilitează acest proces prin crearea unor elemente independente ale produsului software suficient de independente de sarcina originală, ceea ce face posibilă o astfel de extracție.
Compoziția este direct legată de utilizarea repetată. Acest criteriu reflectă visul vechi - de a transforma procesul de proiectare a unui produs software într-o lucrare pe cuburi pliante, astfel încât să se construiască programe din elementele fabricate din fabrică.
· Exemplul 1: Biblioteci de subrutine. Bibliotecile de subrutine sunt create ca seturi de elemente care urmează să fie asamblate. O zonă în care sunt utilizate cu succes sunt calcule numerice bazate pe biblioteci pregătite cu grijă din subprograme pentru rezolvarea problemelor de algebră liniară, metoda elementului finit, ecuații diferențiale etc.
· Exemplul 2: Convențiile adoptate în limba de comandă Shell a sistemului de operare UNIX. Comenzile de bază ale sistemului UNIX funcționează pe fluxul de intrări de simboluri consecutive și produc un rezultat având aceeași structură standard. Potențialul pentru compoziție este susținut de operatorul | limba de comandă "Shell". Înregistrați A | B înseamnă compoziția programelor. Inițial, programul A începe, rezultatele sale ajung la intrarea în programul B, care își începe activitatea după finalizarea programului A. Un astfel de acord de sistem favorizează compoziția software-ului.
· Counterexample: Preprocesoare. O modalitate obișnuită de a extinde un limbaj de programare și uneori de a depăși neajunsurile sale este de a folosi un "preprocesor" care acceptă datele de intrare în sintaxa extinsă și le afișează într-o formă standard pentru această limbă. Proprocesoare tipice pentru primitive grafice Fortran și C, structuri de control extinse sau operații în baze de date. Cu toate acestea, de obicei, astfel de extensii nu sunt compatibile reciproc; care nu vă permite să combinați două astfel de preprocesoare și trebuie să alegeți între, de exemplu, o grafică sau o bază de date.
Compoziția nu depinde de descompunere. De fapt, aceste criterii se contrazic adesea. De exemplu, metoda de proiectare de sus în jos, care satisface, așa cum sa arătat deja, criteriul de descompunere, conduce de obicei la crearea unor astfel de module, care nu sunt ușor combinate cu module obținute din alte surse. Cu această descompunere, modulele sunt de obicei strâns legate de cerințele specifice care au dus la dezvoltarea lor și nu pot fi adaptate la alte condiții. Metoda de proiectare de sus în jos nu oferă recomandări privind dezvoltarea modulelor care să îndeplinească cerințele generale. Nu are mijloace de dezvoltare, nu permite să evite sau cel puțin să detecteze redundanța software a modulelor obținute în diferite părți ale ierarhiei.
Atât compozitarea cât și descompunerea fac parte din cerințele pentru o metodă modulară de proiectare. Există un amestec inevitabil de două abordări de proiectare: de sus în jos și de jos în sus. Rene Descartes a atras atenția asupra acestui principiu al complementarității cu aproape patru secole în urmă, așa cum se poate vedea din compararea celor două reguli ale raționamentului său. prezentată în epigrafa acestei prelegeri.