6.3. Moduláris programozás

iDevice ikon

Az eljárások egymásba ágyazottsága megnehezítette a program egymástól független - önállóan lefordítható - részekre való bontását, holott a nagyméretű rendszerek hatékony és gyors fejlesztése ezt megkövetelte volna. Ekkor alakult ki egy új irányzat, amely moduláris programozás néven vált ismertté. A moduláris programozás központi fogalma a rendszerben önálló egységként kezelhető modul, amely a szoftver fizikailag is külön kezelhető, különálló forrásprogramként tárolt, önállóan lefordítható és tesztelhető egysége. A teljes programot - ahogyan azt a korábbi fejezetben már láttuk - a linker állítja össze, a már korábban lefordított (tesztelt) modulok tárgykódjaiból.

A moduláris programozás óriási előnye - azon túl, hogy a fejlesztésben többen, egymással párhuzamosan dolgozhatnak - az, hogy egy szigorúan meghatározott illesztőn (interfészen) keresztül csatlakozik a környezetéhez, és ebből adódóan könnyen kicserélhető egy újabb változatra. A fejlesztő szigorúan meghatározhatja, hogy a program belső világából mennyit enged látni a csatlakozó felületen keresztül, tehát a moduláris programozás alkalmas az információ elrejtése elv gyakorlati megvalósítására.

A moduláris programozás gyakorlati alkalmazása sem volt teljesen problémamentes, nem volt könnyű ugyanis a döntés arról, hogy pontosan mi is kerüljön bele egy adott modulba, hogyan a legcélszerűbb a teljes rendszert részekre bontani. Egy új elkészült modul verzió - ahol esetleg az interfész is megváltozik - felhasználása sem egyértelmű, ha a programunk számos helyén használatban van. Különösen igaz ez, ha a modul az operációs rendszer része, amire nincs ráhatásunk. Az alapelvet nagyon könnyű volt megfogalmazni: ami a feladathoz szorosan hozzátartozik, az kerüljön egy modulba. Az alapelvből logikusan következett a gyakorlati, programbeli megvalósítás alapgondolata: a modul egy adatszerkezeten egy adott feldolgozási feladatot (egy funkciót) végezzen el. A szigorú elv betartása mellett azonban hamarosan ismét jelentkeztek a módszer korlátai: a modulok túlságosan kicsik lettek, és ha netán a modulban elrejtett adatszerkezetre a programban több helyen szükség volt, akkor az egész modult duplán (esetleg triplán) be kellett a programba illeszteni. A legnagyobb problémát azonban az okozta, amikor bizonyos adatszerkezeten nem egy, hanem többféle műveletet is el kellett végezni, azonnal sérült az „adatok elrejtése" elv, hiszen nem volt más lehetőség, mint az, hogy az adatszerkezetet más modulok számára is láthatóvá tegyük. A megoldást az úgynevezett „absztrakt adatstruktúrák" alkalmazása jelentette, ami a strukturált és a moduláris programozási módszerek ajánlásait ötvözte. A tervezés középpontjába az adatszerkezet került, és a modul tartalmazta az adott adatszerkezetre vonatkozó összes eljárást úgy, hogy a modul interfész felületén csak az eljárásokat tették láthatóvá. Ez a megoldás már a következő módszertan, az objektumorientált programozás irányába mutatott.