Modularity
Määritelmä
Modularity (suom. modulaarisuus) on järjestelmän suunnittelu- ja rakenneperiaate, jossa monimutkainen kokonaisuus jaetaan selkeisiin, sisäisesti yhtenäisiin ja toisistaan rajattuihin osiin — moduuleihin. Kukin moduuli hoitaa oman osaamisalueensa ja on vuorovaikutuksessa muiden moduulien kanssa vain määriteltyjen rajapintojen kautta.
Modulaarisuus on yksi systeemiajattelun ja suunnitteluteorian keskeisimmistä periaatteista. Se on samanaikaisesti analyyttinen työkalu (monimutkaisen pilkkominen ymmärrettäviksi osiksi), synteettinen periaate (kokonaisuuden kokoaminen hallituista palasista) ja rakenteellinen ominaisuus (järjestelmän tapa järjestäytyä).
Modulaarinen järjestelmä täyttää tyypillisesti neljä ehtoa:
- Sisäinen koheesio — moduulin sisällä osat ovat tiiviisti yhteydessä toisiinsa.
- Ulkoinen eristys — moduulien välillä on selkeät rajapinnat, ja vuorovaikutus kulkee niiden kautta.
- Itsenäisyys — moduuli voidaan ymmärtää, testata ja korvata ilman, että koko järjestelmä on tunnettava.
- Uudelleenkäytettävyys — sama moduuli voi palvella useissa eri järjestelmissä.
"A modular system is one in which the components can be separated and recombined." — Herbert A. Simon
Modulaarisuus on läheistä sukua loose-couplingille ja dekompositiolle, mutta käsitteet eivät ole samoja. Modulaarisuus on rakenteellinen jako; dekompositio on toimenpide, jolla jako tehdään; loose coupling on vuorovaikutuksen laatu moduulien välillä. Modulaarinen järjestelmä on yleensä myös heikosti kytketty, mutta yhtäläisyys ei ole välttämätön.
Alkuperä
Modulaarisuuden juuret ovat syvällä inhimillisessä ajattelussa ja käsityössä. Antiikin kreikkalaiset jakoivat näytelmiä kohtauksiin ja kirjallisuutta lukuihin; keskiaikaiset käsityöläiset jakoivat tuotteen työvaiheisiin, joista kukin oli erikoistuneen ammattilaisen vastuulla.
Nykyaikaisen modulaarisuusteorian syntysanat lausui Herbert A. Simon artikkelissaan The Architecture of Complexity (1962). Simon esitti kuuluisan esimerkin kahdesta kellonrakentajista: toinen rakensi kelloja monoliittisesti, toinen modulaarisesti. Jälkimmäinen selvisi keskeytyksistä, koska keskeneräisen kellon osat pysyivät koossa — modulaarisuus on evolutiivinen etu.
1960-luvulta lähtien modulaarisuus levisi useille tieteenaloille:
- Ohjelmistotekniikassa modulaarinen ohjelmointi (Parnas, 1972) ja myöhemmin mikropalveluarkkitehtuuri.
- Biologiassa modulaarisuus näkyy geeniverkostoissa ja elinten rakenteessa (Wagner, Modularity in Development and Evolution, 2005).
- Tuotesuunnittelussa Ulrich (1995) ja Baldwin & Clark (Design Rules, 2000) analysoivat modulaarisia tuotearkkitehtuureja.
- Organisaatioteoriassa modulaariset organisaatiot (Hevner, Sanchez).
- Systeemiajattelussa modulaarisuus on resilienssin, robustisuuden ja kompleksisuuden hallinnan ydintyökalu.
2000-luvulla modulaarisuudesta on tullut myös taloustieteen käsite: modular product architectures mahdollistavat innovaation, erikoistumisen ja globaalien arvoketjujen synnyn (Baldwin & Clark 2000; Schilling 2000).
Yhteydet muihin käsitteisiin
- coupling — modulaarisuus säätelee kytkennän astetta.
- loose-coupling — modulaarinen järjestelmä on tyypillisesti heikosti kytketty.
- tight-coupling — modulaarisuuden vastavoima.
- decomposition — menetelmä, jolla modulaarisuus saavutetaan.
- hierarchy — modulaarisuus tuottaa usein hierarkkisia rakenteita.
- holon — moduuli voidaan nähdä holonina, joka on sekä kokonaisuus että osa.
- subsystem — moduuli on järjestelmän alisysteemi.
- suprasystem — moduuli on osa laajempaa suprasysteemiä.
- boundary — moduulien välinen raja on järjestelmän raja.
- abstraction — modulaarisuus vaatii abstraktiota rajapintojen määrittelyssä.
- resilience — modulaarisuus parantaa resilienssiä.
- robustness — modulaarinen järjestelmä sietää yksittäisten osien vikaantumista.
- complexity — modulaarisuus on keskeinen keino hallita kompleksisuutta.
- emergent-properties — modulaarisuus voi sekä tuottaa että rajoittaa emergenssiä.
Missä oppitunneissa käsitellään
Modulaarisuus esitellään [[../lessons/modularity.html|Modulaarisuus ja kytkentä]] -oppitunnilla, jossa sitä verrataan couplingiin, loose-couplingiin ja tight-couplingiin. Käsite toistuu [[../lessons/complex-adaptive-systems.html|kompleksisten adaptiivisten systeemien]], [[../lessons/software-architecture.html|ohjelmistoarkkitehtuurin]], [[../lessons/systems-biology.html|systeemibiologian]] ja [[../lessons/organizational-design.html|organisaatiosuunnittelun]] oppitunneilla.
Lähteet
- Simon, H. A. (1962). "The Architecture of Complexity." Proceedings of the American Philosophical Society 106(6).
- Parnas, D. L. (1972). "On the Criteria to Be Used in Decomposing Systems into Modules." Communications of the ACM 15(12).
- Ulrich, K. (1995). "The Role of Product Architecture in the Manufacturing Firm." Research Policy 24.
- Baldwin, C. Y. & Clark, K. B. (2000). Design Rules: The Power of Modularity. MIT Press.
- Wagner, G. P. & Mezey, J. (2005). Modularity in Development and Evolution. University of Chicago Press.
- Schilling, M. A. (2000). "Toward a General Modular Systems Theory and Its Application to Interfirm Product Modularity." Academy of Management Review 25(2).