Suunnittelumallit ja kehykset

Suunnittelumallit

Suunnittelumalli (Design Pattern):
= tapa suunnitella ohjelmiston osa tietyn usein esiintyvän ongelman ratkaisemiseksi.

Suunnittelumalli koskee yleensä muutamia luokkia ja niiden välisiä suhteita. Ovat tavallisesti sovellusalueesta riippumattomia, mutta voi myös olla johonkin tiettyyn sovellusalueeseen liittyvä malli.

Suunnittelumallin soveltamistaso voi vaihdella aina detaljitason mallista kokonaisen arkkitehtuuritason kuvaamaan malliin. Soveltamisen tulisi aina lähteä tietyn ongelman identifioinnista, siis pelkästään se, että sovelluksessa on käytetty suunnittelumalleja, ei tee siitä välttämättä laadukasta.

Suunnittelumalli annetaan yleensä dokumenttina, joka voi sisältää esim. mallin tarkoituksen, mahdolliset sovelluskohteet, rakenteen (esim. UML), edut ja haitat, sovellusesimerkit.

Mallijärjestelmä (pattern language):
Kokoelma malleja, joiden avulla voidaan rakentaa kokonaisuus..

Antisuunnittelumallit (antipattern):
Epätoivottavat suunnitteluratkaisut. Auttavat virheellisen ratkaisumallin havaitsemista koodissa.

Pieni Oliokirja jakaa kolmeen ryhmään tarkoituksensa perusteella:

Kehykset

Ohjelmistokehys (framework):
= Kiinteästi toisiinsa liittyvien luokkien ja /tai rajapintojen kokoelmaa, joka toteuttaa tietyn ohjelmistoperheen perusarkkitehtuurin.

Kehyksen tarkoituksena on saavuttaa korkea uudelleenkäytön aste. Pyritään uudelleenkäyttämään kokonaisia sovellus- tai komponenttiperhettä yksittäisten luokkien tai rutiinien sijaan.

Kehyksestä saadaan yksittäinen sovellus tai komponentti erikoistamalla. Tätä varten kehyksellä on erikoistamisrajapinta, joka kertoo, mitkä osat kehyksessä ovat muunneltavia (muunneltavat osat kerrotaan yleensä dokumentoinnissa). Kehyksellä on tavallisesti myös palvelurajapinta.

Jos kehystyksen erikoisuus vastaa täydellistä sovellusta, niin tällöin puhutaan sovelluskehyksestä (application framework). Sovelluskehys on siis ohjelmisto, joka sisältää tietyn tyyppisten sovellusten perusratkaisut. Esimerkkinä sovelluskehyksistä on AWT.

Javassa erikoistaminen voidaan toteuttaa esim. periyttämisellä, rajapinnoilla tai Java 1.5:n uutena ominaisuutena: geneerisillä luokilla.

Kehyksillä ja suunnittelumalleilla on läheinen yhteys. Nimittäin monien suunnittelumallien päämääränä on lisätä ohjelmiston joustavuutta ja yleisyyttä. Siksi nämä suunnittelumallit ovat usein käyttökelpoisia ratkaisuja kehysarkkitehtuureissa. Esim. Tarkkailija.

Suunnittelumalleja on käytetty myös kehysten dokumentoimiseen – Ne selittävät miksi kehyksessä on käytetty tiettyjä suunnitteluratkaisuja.


Teksti otettu pääosin lähteestä

Koskimies: Pieni Oliokirja