Ick:
Je kunt software best samen laten werken zonder het te integreren. Als je de software modulair opbouwt en duidelijke interfaces definieert voor de communicatie tussen componenten, dan kunnen ze prima samenwerken.
Voorbeeld van hoe het wel moet: Windows clipboard.
Via het clipboard kan de gebruiker gegevens overbrengen van de ene willekeurige applicatie naar de andere. Het maakt niet uit of het software van MS is, van een ander bedrijf, zelfsgeschreven software, een Java applet van het web, het werkt altijd. Als het clipboard gemaakt was door integratie ipv modulaire opbouw, dan zou je alleen gegevens kunnen uitwisselen tussen programma's die specifiek ontworpen waren om met elkaar samen te werken.
Voorbeeld van hoe het niet moet:
Na het installeren van IE4 kreeg ik ineens een andere dialog box voor mijn dial-up connectie. Ik had mijn webbrowser ge-upgrade, maar MS vond dat het ook best mijn OS mocht aanpassen. Nou deed die nieuwe dial-up implementatie het gelukkig even goed als de oude, maar ik vind toch dat de IE4 install er met zijn vingers vanaf had moeten blijven. Stel dat Netscape in hun installatieprocedure stukken van Windows zou vervangen, daar zou MS helemaal niet blij mee zijn (en ik ook niet), maar eigenlijk is dat hetzelfde als wat ze zelf doen.
Het nadeel voor MS van modulaire opbouw ipv integratie:
- op de markt brengen duurt langer, want je moet goed nadenken over een goede interface en deze goed documenteren
- omdat de verbinding tussen de componenten wat losser is, zal er in sommige gevallen een hogere overhead zijn waardoor het net iets minder snel werkt
- concurrenten hebben profijt van een modulaire opbouw, omdat hun produkt er net zo goed gebruik van kan maken als dat van MS (sympathieke OS bouwers zien dit punt trouwens als voordeel ipv nadeel

)
Toch is er 1 gigantisch voordeel (ook voor MS) aan een modulaire opbouw: je kunt componenten afzonderlijk testen. Op die manier test je een kleinere hoeveelheid code die bovendien een kleinere functionaliteit implementeert. Ook hoeven minder programmeurs dingen te weten van elkaars code, ze hoeven alleen maar de interface te kennen.
Het lijkt misschien een subtiel onderscheid tussen integratie en modulair opbouwen, maar het is een wereld van verschil. Bij modulair opbouwen zijn er scherpe grenzen tussen de componenten en duidelijke interfaces voor de communicatie over die grenzen heen. Bij integratie heb je een grote ondoorzichtige massa van componenten die in elkaar overvloeiien.