Introduction: Ohjelmistokehityksen elinkaaren suunnitteluvaiheen tarkoituksena on tuottaa ratkaisu SRS-asiakirjassa (Software Requirement Specification) esitettyyn ongelmaan. Suunnitteluvaiheen tuloksena syntyy ohjelmistosuunnitteludokumentti (Sofware Design Document, SDD).
Suunnittelu on periaatteessa kaksiosainen iteratiivinen prosessi. Ensimmäinen osa on konseptisuunnittelu, joka kertoo asiakkaalle, mitä järjestelmä tekee. Toinen osa on tekninen suunnittelu, jonka avulla järjestelmän rakentajat ymmärtävät todelliset laitteistot ja ohjelmistot, joita tarvitaan asiakkaan ongelman ratkaisemiseksi.
Järjestelmän konseptisuunnittelu:
- Kirjoitetaan yksinkertaisella kielellä eli asiakkaan ymmärrettävällä kielellä.
- Kerrotaan yksityiskohtaisesti järjestelmän ominaisuuksista.
- Kuvaillaan järjestelmän toiminnallisuus.
- Se on riippumaton toteutuksesta.
- Liittyy vaatimusasiakirjaan.
JÄRJESTELMÄN TEKNINEN SUUNNITTELU:
- Laitteistokomponentti ja suunnittelu.
- Ohjelmistokomponentin toiminnallisuus ja hierarkia.
- Ohjelmistoarkkitehtuuri
- Verkkoarkkitehtuuri
- Datan rakenne ja tietovirta.
- Järjestelmän I/O-komponentti.
- Käyttöliittymän näyttäminen.
Modularisointi: Modularisointi on prosessi, jossa ohjelmistojärjestelmä jaetaan useisiin itsenäisiin moduuleihin, joissa kukin moduuli toimii itsenäisesti. Modularisoinnilla on monia etuja ohjelmistotekniikassa. Osa niistä on esitetty alla:
- Järjestelmä on helppo ymmärtää.
- Järjestelmän ylläpito on helppoa.
- Moduulia voidaan käyttää useita kertoja tarpeidensa mukaan. Sitä ei tarvitse kirjoittaa uudestaan ja uudestaan.
Kytkentä: Kytkentä on moduulien keskinäisen riippuvuuden asteen mitta. Hyvässä ohjelmistossa on vähän kytkentää.
Kytkennän tyypit:
- Datakytkentä: Jos moduulien välinen riippuvuus perustuu siihen, että ne kommunikoivat välittämällä vain dataa, moduulien sanotaan olevan datakytkettyjä. Datakytkennässä komponentit ovat toisistaan riippumattomia ja kommunikoivat datan välityksellä. Moduulien kommunikaatio ei sisällä tramppidataa. Esimerkki-asiakaslaskutusjärjestelmä.
- Leimakytkentä Leimakytkennässä koko tietorakenne välitetään moduulilta toiselle moduulille. Siksi siihen sisältyy tramp-tietoa. Se voi olla tarpeen tehokkuusnäkökohtien vuoksi – tämän valinnan on tehnyt oivaltava suunnittelija, ei laiska ohjelmoija.
- Ohjauskytkentä: Jos moduulit kommunikoivat välittämällä ohjaustietoa, niiden sanotaan olevan ohjauskytkettyjä. Se voi olla huono, jos parametrit osoittavat täysin erilaista käyttäytymistä ja hyvä, jos parametrit mahdollistavat faktoroinnin ja toiminnallisuuden uudelleenkäytön. Esimerkki- lajittelufunktio, joka ottaa argumenttina vertailufunktion.
- Ulkoinen kytkentä: Ulkoisessa kytkennässä moduulit ovat riippuvaisia muista moduuleista, jotka ovat ulkoisia kehitettävälle ohjelmistolle tai tietyntyyppiselle laitteistolle. Esim- protokolla, ulkoinen tiedosto, laiteformaatti jne.
- Yhteinen kytkentä: Moduuleilla on yhteisiä tietoja, kuten globaaleja tietorakenteita.Globaalien tietojen muutokset merkitsevät jäljittämistä kaikkiin moduuleihin, jotka käyttävät kyseisiä tietoja, jotta muutoksen vaikutus voidaan arvioida. Sen haittoja ovat esimerkiksi moduulien uudelleenkäytön vaikeus, heikentynyt kyky kontrolloida datan käyttöä ja heikentynyt ylläpidettävyys.
- Sisällöllinen kytkentä: Sisältökytkennässä yksi moduuli voi muuttaa toisen moduulin tietoja tai ohjausvirta siirtyy yhdestä moduulista toiseen moduuliin. Tämä on kytkennän pahin muoto ja sitä tulisi välttää.
Koheesio: Koheesio on mittari, jolla mitataan, missä määrin moduulin elementit ovat toiminnallisesti yhteydessä toisiinsa. Se on se, missä määrin kaikki yhden tehtävän suorittamiseen suunnatut elementit sisältyvät komponenttiin. Pohjimmiltaan koheesio on sisäinen liima, joka pitää moduulin kasassa. Hyvässä ohjelmistosuunnittelussa on korkea koheesio.
Koheesion tyypit:
- Toiminnallinen koheesio: Jokainen yksittäisen laskennan kannalta olennainen elementti sisältyy komponenttiin. Toiminnallinen koheesio suorittaa tehtävän ja toiminnot. Se on ideaalitilanne.
- Sekventiaalinen koheesio: Elementti tuottaa jotakin dataa, josta tulee syötettä toiselle elementille, eli tiedonkulku osien välillä. Se esiintyy luonnollisesti funktionaalisissa ohjelmointikielissä.
- Kommunikatiivinen koheesio: Kaksi elementtiä toimii samoilla syötetiedoilla tai vaikuttaa samoihin lähtötietoihin. Esimerkki – päivittää tietueen tietokantaan ja lähettää sen tulostimelle.
- Proseduraalinen koheesio: Proseduraalisen koheesion elementit varmistavat suoritusjärjestyksen. Toiminnot ovat edelleen heikosti sidoksissa toisiinsa, eivätkä ne todennäköisesti ole uudelleenkäytettävissä. Esim- laske opiskelijan keskiarvo, tulosta opiskelijarekisteriote, laske kumulatiivinen keskiarvo, tulosta kumulatiivinen keskiarvo.
- Ajallinen koheesio: Elementit liittyvät toisiinsa ajallisesti. Ajallisella koheesiolla liitetty moduuli kaikki tehtävät on suoritettava samassa ajassa. Tämä koheesio sisältää koodin, jolla kaikki järjestelmän osat alustetaan. Paljon erilaisia toimintoja tapahtuu, kaikki init-aikana.
- Looginen koheesio: Elementit liittyvät toisiinsa loogisesti eivätkä toiminnallisesti. Esim- Komponentti lukee syötteitä nauhalta, levyltä ja verkosta. Kaikki näiden toimintojen koodi on samassa komponentissa. Toiminnot liittyvät toisiinsa, mutta toiminnot ovat merkittävästi erilaisia.
- Sattumanvarainen yhteenkuuluvuus: Elementit eivät liity toisiinsa(eivät liity toisiinsa). Elementeillä ei ole muuta käsitteellistä suhdetta kuin sijainti lähdekoodissa. Se on satunnainen ja huonoin koheesion muoto. Esim- tulosta seuraava rivi ja käännä merkkijonon merkit yhden komponentin sisällä.
Attention reader! Älä lopeta oppimista nyt. Ota haltuun kaikki tärkeät CS-teorian käsitteet SDE-haastatteluja varten CS-teoriakurssilla opiskelijaystävälliseen hintaan ja tule teollisuusvalmiiksi.