010758002 ohjelmistotuotanto suunnittelu n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
010758002 Ohjelmistotuotanto - Suunnittelu PowerPoint Presentation
Download Presentation
010758002 Ohjelmistotuotanto - Suunnittelu

Loading in 2 Seconds...

play fullscreen
1 / 52

010758002 Ohjelmistotuotanto - Suunnittelu - PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on

010758002 Ohjelmistotuotanto - Suunnittelu. Kevät 2005 Jani Vaara LTY/Tite. Sisältö. Ohjelmistojen suunnittelusta Suunnittelun tavoitteet ja yleisiä periaatteita Arkkitehtuurisuunnittelusta Ohjelmistojen toteutusfilosofiasta Suunnittelun dokumentoinnista Uudelleenkäytöstä.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '010758002 Ohjelmistotuotanto - Suunnittelu' - jela


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
010758002 ohjelmistotuotanto suunnittelu
010758002 Ohjelmistotuotanto- Suunnittelu

Kevät 2005

Jani Vaara

LTY/Tite

sis lt
Sisältö
  • Ohjelmistojen suunnittelusta
  • Suunnittelun tavoitteet ja yleisiä periaatteita
  • Arkkitehtuurisuunnittelusta
  • Ohjelmistojen toteutusfilosofiasta
  • Suunnittelun dokumentoinnista
  • Uudelleenkäytöstä
yleist suunnittelusta
Yleistä suunnittelusta
  • Tarkoituksena muuntaa asiakkaan tarpeiden mukaan tehty määrittely tekniselle kielelle – järjestelmän toteutuksen kuvaukseksi
  • Vastaa kysymykseen: miten järjestelmä toteutetaan?
  • Jaetaan kahteen osaan:
    • arkkitehtuurisuunnittelu ja
    • moduulisuunnittelu
m rittelyst suunnitteluun
Määrittelystä suunnitteluun

Määrittely

Tuote asiakkaan

kannalta

Arkkitehtuurisuunnittelu

Jako moduuleiksi,

rajapintojen määrittely

Moduulisuunnittelu

Moduulien

suunnittelu

ja toteutus

m rittelyst toteutukseen 1 2
Määrittelystä toteutukseen 1/2

Määrittelystä suunnittelun kautta toteutukseen edetessä näkökulma muuttuu toteutustekniseksi.

Järjestelmää ositetaan kunnes jokainen osa on riittänän pieni kuvattavaksi ohjelmistotason välineillä.

m rittelyst toteutukseen 2 2
Määrittelystä toteutukseen 2/2
  • Arkkitehtuurisuunnittelussa järjestelmä jaetaan moduuleihin ja moduulien rajapinnat määritellään.
  • Moduulisuunnittelussa suunnitellaan kunkin moduulin sisäinen rakenne.
  • Tasoja voi olla useampia, tarkoituksen on hienontaa järjestelmä niin pieniin osiin, että osat voidaan antaa yksittäisten suunnittelijoiden tehtäväksi.
suunnittelu ohjelmistokehityksess
Suunnittelu ohjelmistokehityksessä

Esitutkimus

Asetetaan asiakasvaatimukset: mitä asiakas haluaa?

Miksi ohjelmisto tulisi tehdä?

Analysoidaan asiakasvaatimukset: mitä voidaan toteuttaa?

Johdetaan ohjelmistovaatimukset: mitä projektissa tehdään?

Määrittely

Suunnitellaan, kuinka määrittelyssä kuvatut vaatimukset

toteutetaan. (Arkkitehtuurisuunnittelu, moduulisuunnittelu)

Suunnittelu

Toteutetaan suunniteltu.

Toteutus

Integrointi: yhdistetään toteutetut osat niin, että niistä saadaan

yksi toimiva kokonaisuus.

Testaus: etsitään ohjelmiston virheitä ja korjataan ne.

Integrointi ja

testaus

Käyttöönotto: toimitaan ohjelmisto asiakkaalle

Ylläpito: ratkotaan asiakkaan ongelmia, korjataan virheitä,

muutetaan tarvittaessa ohjelmistoa uusia vaatimuksia vastaavaksi.

Käyttöönotto

ja ylläpito

ohjelmistosuunnittelun tavoitteet
Ohjelmistosuunnittelun tavoitteet
  • Suunnittelulle asetettava keskeinen tavoite on varsin usein asiakkaan kokema laatu.
  • Asiakkaan kokema laatu on usean osatekijän summa.
  • Osatekijät esimerkiksi:
    • Kustannukset
    • Tuotteen laatu
    • Tuotteen valmistuminen aikataulussa
periaatteista ja toteutusv lineist laatuun

Yleisiä periaatteita

yksinkertaisuus ja suoraviivaisuus

Laadun osatekijöitä

osittaminen ja lokaalisuus

tehokkuus

abstraktioiden hyödyntäminen

virheettömyys

toteutusfilosofia(t)

luotettavuus

käytettävyys

ylläpidettavyys

siirrettävyys

uudelleenkäytettävyys

ymmärrettävyys

muunnettavuus

toteutettavuus

testattavuus

toteutusvälineitä

moduulirakenne

abstraktit tietotyypit

asiakkaan kokema laatu

luokat

oikea tuote

oikeaan aikaan

oikeaan hintaan

Periaatteista ja toteutusvälineistä laatuun
suunnittelun laatutavoitteita
Suunnittelun laatutavoitteita
  • Suunnittelun laatutavoitteisiin vaikuttavia ohjelmiston ominaisuuksia on paljon (esim. luettavuus, tehokkuus, käytettävyys, uudelleenkäyttö, -käytettävyys, ylläpidettävyys, siirrettävyys...)
  • Usein nämä tavoitteet ovat keskenään ristiriitaisia ja eri tilanteissa eri tavoitteille annetaan eri arvoja.
  • Yleispätevien tavotteiden antaminen lähes mahdotonta.
arkkitehtuurisuunnittelu
Arkkitehtuurisuunnittelu
  • Järjestelmän tai komponentin arkkitehtuuri on rakenne tai järjestelmärakenne, joka käsittää ohjelmistokomponentit, näiden komponenttien ulkoisesti näkyvät ominaisuudet sekä niiden suhteet toisiinsa.
  • Arkkitehtuurisuunnittelu on pääasiassa osien välisten työnjaon ja rajapintojen suunnittelua.
arkkitehtuurisuunnittelu1
Arkkitehtuurisuunnittelu
  • Modulaarinen suunnittelu pyrkii minimoimaan yksittäiseen moduuliin sisälle tehtävän muutoksen vaikutukset muihin moduuleihin.
    • muutosten tekeminen helpottuu.
    • projektin osat voidaan toteuttaa toisistaan mahdollisimman riippumattomasti.
    • uudelleenkäytettävyys paranee.
arkkitehtuurisuunnittelu2
Arkkitehtuurisuunnittelu
  • Arkkitehtuurisuunnittelussa kiinnitetään järjestelmän arkkitehtuuriin kuuluvat valinnat
    • järjestelmän kerrokset
    • jako alijärjestelmiksi, komponenteiksi
    • korkean tason suunnittelumallit
    • arkkitehtuurityylit (asiakas-palvelin jne.)
    • ohjelmistojen sijoittelu laitteistoihin
    • prosessit ja niiden kommunikointi
    • tiedon talletusratkaisut
    • tietoturva
    • jne.
arkkitehtuurisuunnittelu3
Arkkitehtuurisuunnittelu
  • Arkkitehtuurisuunnittelussa tehdyt huonot ratkaisut kostautuvat myöhemmin korkeina toteutus- ja ylläpitokustannuksina.

-> Ohjelmistojen keskeisiksi laatutekijöiksi nousee ymmärrettävyys ja muunneltavuus.

  • Mikäli arkkitehtuurisuunnittelu on tehty hyvin, yksittäinen huono moduuli on tavallisesti helppo korvata paremmalla.
hyv arkkitehtuurisuunnittelu
Hyvä arkkitehtuurisuunnittelu...
  • parantaa osapuolten kommunikaatiota

Ohjelmistoarkkitehtuuri esittää yleistä korkean tason abstraktiota järjestelmästä ja lähes kaikki osapuolet voivat käyttää sitä yhteisen ymmärtämisen perustana, yksimielisyyden muodostamiseen ja keskinäiseen kommunikaatioon.

  • auttaa aikaisissa suunnittelupäätöksissä

Ohjelmiston arkkitehtuuri esittää ilmentymää järjestelmän suunnittelupäätöksistä ja nämä päätökset tulevat vaikuttamaan kehitystyöhön, käyttöönottoon ja ylläpitoon.

  • toimii siirrettävänä järjestelmän abstraktiona

Ohjelmiston arkkitehtuuri muodostaa suhteellisen pienen, selkeän mallin siitä miten järjestelmä on rakennettu ja miten sen komponentit toimivat yhdessä. Tälläinen malli on siirrettävissä järjestelmien välillä, se esittää suuren mittakaavan uudelleenkäyttöä.

arkkitehtuurisuunnittelun prosessisuosituksia
Arkkitehtuurisuunnittelun prosessisuosituksia
  • Arkkitehtuurin tulee olla yhden arkkitehdin tai nimetyn arkkitehdin vetäjän arkkitehtiryhmän suunnittelema.
  • Arkkitehdillä tulee olla selkeät ja priorisoidut järjestelmän tekniset vaatimukset, jotka arkkitehtuurin tulee täyttää.
  • Arkkitehtuurin tulee olla hyvin dokumentoitu käyttäen sellaisia sovittuja kuvaustapoja , joita kaikki osapuolet ymmärtävät.
arkkitehtuurisuunnittelun prosessisuosituksia1
Arkkitehtuurisuunnittelun prosessisuosituksia
  • Arkkitehtuuria tulee jatkuvasti kierrättää kaikilla osapuolilla, joiden tulee aktiivisesti osallistua arkkitehtuurin katselmointiin.
  • Arkkitehtuuria tulee analysoida sopivilla mitattavilla suureilla ja laadulliset ominaisuudet virallisesti katselmoida ennenkuin siihen on liian myöhäistä tehdä muutoksia.
arkkitehtuurisuunnittelun prosessisuosituksia2
Arkkitehtuurisuunnittelun prosessisuosituksia
  • Arkkitehtuurin tulee johtaa itsensä toteutukseen muodostamalla järjestelmästä ”luurankomallin”.
  • Arkkitehtuurin tulee määritellä erityinen (ja pieni) joukko resurssiongelmia suunnittelu ohjeistuksineen.
arkkitehtuurisuunnittelun rakenteelliset ohjeet
Arkkitehtuurisuunnittelun rakenteelliset ohjeet
  • Arkkitehtuurin tulee esitellä hyvin määritellyt moduulit, joiden toiminnalisuus ja rajapinnat on määritelty.
  • Moduulien tulee noudattaa riippumattomuutta, jotta niistä vastaavat toteutusryhmät voisivat toimia riittävän itsenäisesti.
  • Moduulien kapselointi takaa sen että koko järjestelmää ei tarvitse välttämättä muuttaa, jos jokin sen toimintaympäristössä muuttuu.
arkkitehtuurisuunnittelun rakenteelliset ohjeet1
Arkkitehtuurisuunnittelun rakenteelliset ohjeet
  • Arkkitehtuuri ei koskaan saisi olla riippuvainen tietyn kaupallisen tuotteen tai työkalun versiosta.
  • Moduulit, jotka tuottavat dataa tulee erottaa moduuleista, jotka käyttävät dataa.Tästä seuraa parempi muunneltavuus koska muutokset vaikuttavat yleensä joko datan tuottamiseen tai käyttöön.
arkkitehtuurisuunnittelun rakenteelliset ohjeet2
Arkkitehtuurisuunnittelun rakenteelliset ohjeet
  • Rinnakkaisprosessi järjestelmissä arkkitehtuurin tulee esitellä hyvin määritellyt prosessit, jotka eivät välttämättä noudata moduulirakennetta.
  • Jokainen prosessi tulee suunnitella siten että sen osoitus jollekkin prosessorille voidaan vaihtaa jopa ajonaikaisesti.
  • Arkkitehtuurin tulee esitellä pieni joukko yksinkertaisia toimintamalleja. Järjestelmän tulee tehdä samat asiat joka paikassa samalla tavalla.
    • lisää ymmärrettävyyttä ja parantaa muunneltavuutta
    • käsitteellinen yhtenäisyys lisääntyy
miksi suunnittelu on vaikeaa
Miksi suunnittelu on vaikeaa?
  • Suunnittelun ratkaisut ja tietotekniikka muuttuvat nopeasti
    • Se mitä opetan tänään on 3 vuoden päästä vanhaa.
    • Tietokoneiden kapasiteetti laajenee kovaa vauhtia.
    • Käsiteltävät ongelmat muuttuvat koko ajan monimutkaisemmiksi.
arkkitehtuurisuunnittelun tavoitteet
Arkkitehtuurisuunnittelun tavoitteet
  • Suunnittelun tavoitteita:
    • selkeys ja ymmärrettävyys
    • tehokkuus
    • luotettavuus
    • ylläpidettävyys
    • uudelleenkäytettävyys ja siirrettävyys
  • Ratkaisut tavoitteiden saavuttamiseksi:
    • paikallisuus
    • hierarkkisuus
    • modulaarisuus
    • rajapintojen tiiviys
    • tiedon kätkeminen
viime k dess
Viime kädessä...
  • arkkitehtuurisuunnittelun tarkoitus on ihmiselle hankalan monimutkaisuuden hallinta.
  • Ohjelmistot ovat monimutkaisia

-> yksinkertaisesti toteutettavien osien toteuttaminen vaatii ohjelmistojen osittamista keskenään riippumattomiin moduuleihin.

suunnittelun yleisi periaatteita
Suunnittelun yleisiä periaatteita
  • yksinkertaisuus ja suoraviivaisuus
  • osittaminen ja lokaalisuus
  • abstraktioiden hyödyntäminen
  • yhdenmukainen toteutusfilosofia eli arkkitehtuurityyli
yksinkertaisuus ja suoraviivaisuus
Yksinkertaisuus ja suoraviivaisuus
  • On kaksi tapaa rakentaa ohjelmistoja
    • Suunnitteluratkaisut ovat niin suoraviivaisia ja ymmärrettäviä, että virheettömyys on ilmeistä
    • Suunnitteluratkaisut ovat niin mutkikkaita, että virheet eivät ole ilmeisiä
  • Kolme hyvää periaatetta:
    • KISS: Keep It Simple, Stupid
    • Design for errors
    • Design for change
  • Ja erityisesti reaaliaikajärjestelmissä
    • Design for testing
  • Ja ehkä se kaikkein tärkein periaate:
    • Say it once and only once
osittaminen
Osittaminen
  • rakenteellisen monimutkaisuuden hallinta
  • osittaminen rinnakkaisiin osiin
    • moduulit toteuttavat osan kokonaisuudesta
  • hierarkkinen osittaminen
    • alemman tason moduulit ”palvelevat” ylemmän tason moduuleita
lokaalisuus
Lokaalisuus
  • Osittamisen suunnittelua siten, että suunnittelu-päätökset kapseloidaan mahdollisimman hyvin osien sisään
  • Edut:
    • muutosten tekeminen helpottuu
    • ohjelmiston yksittäisten osien toteutus ja testaus erikseen
    • mahdollistaa osan irrottamisen kokonaisuudesta ja uudelleenkäytön toisessa yhteydessä
  • Moduulin sisäisen toteutuksen lokalisointi
abstraktioiden hy dynt minen
Abstraktioiden hyödyntäminen
  • Abstraktio
    • malli, joka kuvaa esittämästään asiasta oleellisen
  • Epäoleellinen voidaan jättää pois ja tarpeettomat yksityiskohdat koteloidaan (encapsulate) abstraktion sisälle
  • Informaation kätkeminen (information hiding)
  • Abstraktiosta näkyy käyttäjälle rajapinta (interface), sen sisään koteloitu toteutus on abstraktion käyttäjälle tuntematon -> ymmärrettävyys & muunneltavuus
  • Käyttötarkoituksina korkeamman tason abstraktion luominen alemman tason abstraktiosta, erilaisuuden kätkeminen, suunnitteluratkaisun piilottaminen
abstraktioiden vastineet
Abstraktioiden vastineet
  • Vastine ohjelmistoa ympäröivässä maailmassa, esimerkiksi ”auto” tai ”kissa”.
    • ominaisuudet ja toiminnot helppo määritellä.
  • Ei vastinetta todellisuudessa.
    • Usein toteutusta helpottavia peruskomponentteja, esim. merkkijonojen käsittely tai sanomajonot.
    • Määrittely usein työlästä ja vaatii usein useiden vaihtoehtojen kokeilua
toteutusfilosofia arkkitehtuurityyli
Toteutusfilosofia (arkkitehtuurityyli)
  • Yhdenmukaiset toteutusperiaatteet, joilla järjestelmän piirteet toteutetaan.
  • Toteutusfilosofia kiteyttää periaatteet ja rakenteet, joiden ajatellaan pysyvän muuttumattomana koko ohjelmiston elinkaaren ajan.
  • Arkkitehtuurisuunnittelu tuleekin ymmärtää laajemmin kuin pelkkinä moduuleina ja niiden välisinä yhteyksinä.
lis toteutusfilosofiasta
Lisää toteutusfilosofiasta
  • Antaa kehittäjälle mallin siitä, miten uusi ominaisuus toteutetaan järjestelmään.
  • Antaa ylläpitäjälle tietoa, minkä tapaista ratkaisua on etsittävä ja mihin muutokset on kohdistettava.
  • Hyvälle arkkitehtuurille on ominaista, että jos jotain asiaa ei tiedä, se on arvattavissa toteutusfilosofian perusteella.
  • Antaa yleisen mallin, jonka mukaan järjestelmän avainabstraktioita yhdistellään.
esimerkki k ytt j rjestelm n toteutusfilosofioista
Esimerkki käyttöjärjestelmän toteutusfilosofioista

proseduuriorientoitunut KJ

prosessiorientoitunut KJ

moduulien toteuttaminen
Moduulien toteuttaminen
  • Yksi moduuli kuvaa yhden abstraktion tai koostuu joukosta yhteenkuuluvia aliohjelmia
  • Useimmiten moduulijako vastaa ohjelman jakoa tiedostoiksi
  • Moduulien kuvauksessa rajapinnan kuvaus erotettava sisäisestä toteutuksesta
    • kieleen liittyvä esitystapa
    • sopimus toteutuskäytännöstä
rajapintojen suunnittelu ja dokumentointi
Rajapintojen suunnittelu ja dokumentointi
  • rajapinta: sopimus toteuttajan ja käyttäjän välillä
  • modulien sisäinen kiinteys mahdollisimman suuri  helpottaa ylläpitoa
    • loogisesti yhteenkuuluvat asiat samassa modulissa
  • modulien väliset kytkennät mahdollisimman pieniä  helpottaa ylläpitoa
    • modulien väliset riippuvuudet
    • rajapintojen kapeus ja löyhyys (välitetään vain ne tiedot, jotka on tarpeen)
suunnittelun eteneminen
Suunnittelun eteneminen
  • Tehtäviä:
    • Mietitään ratkaisun yleiset periaatteet (toteutusfilosofia, arkkitehtuurityyli)
    • Suunnitellaan modulirakenne
    • Määritellään, mitä tietoa modulit sisältävät
    • Suunnitellaan modulien rajapinnat
    • Määritellään modulien näkyvyys: mitä muita moduleja moduli tarvitsee toiminnassaan
    • Testataan ratkaisua tutkimalla millaisia kutsusekvenssejä ohjelman toiminnot aiheuttavat modulien sisällä (esim. SA menetelmän tapahtumalistana, UML käyttötapauksina)
    • Suunnitellaan modulien sisäinen toteutus
    • Varmistetaan kriittisimpien toteutusratkaisujen toimivuus esimerkiksi prototyypillä
    • Suunnittelun dokumentointi

Iteroiden ja rinnakkain

teknisen m rittelyn sis lt runko
Teknisen määrittelyn sisältörunko

Lähde:

standardista

IEEE1016 vapaasti

mukailtu

suunnitteluesimerkki
Suunnitteluesimerkki
  • Ohjelmisto muodostaa tekstitiedostosta hakusanaston
  • Hakusanasto sisältää dokumentissa esiintyneet sanat aakkosjärjestyksessä
  • Jokaisesta sanasta tulostetaan sen esiintymisrivit tiedostossa
  • Hakusanasto on muotoa:

akku 4

akussa 5,10

alku 1,7

...

slide43

Tapahtuma-

sekvenssikaavio

sanaston

muodostamisesta

esimerkkiohjelman modulien n kyvyys
Esimerkkiohjelman modulien näkyvyys

Hakusanasto

Tiedosto

Sanasto

Sana

UML-komponenttikaavio

case v lineet
CASE-välineet
  • edustavälineet (upper-CASE, front-end)
    • määrittely ja suunnitteluvaiheiden apuvälineet
  • taustavälineet(lower-CASE, back-end)
    • toteutusvaiheen apuvälineet, esim. kääntäjät, sovelluskehittimet
  • IPSE (Integrated Project Support Environment)
    • kaikki ohjelmistoprojektiin liittyvät työkalut integroitu yhtenäiseksi työvälineeksi
uudelleenk ytett vyys ja uudelleenk ytt
Uudelleenkäytettävyys ja uudelleenkäyttö
  • 60 – 80% kaikesta tehtävästä ohjelmistosta on tehty jo aikaisemmin, osa siitä jopa samassa organisaatiossa
  • yleiskäyttöiset komponentit
    • käyttöliittymäkirjastot, matematiikkakirjastot, tietorakennekirjastot
  • sovellusaluekohtaiset komponentit
    • esim. televerkon hallintaan liittyvät
  • sovelluskohtaiset komponentit
    • sovelluksen oma käyttöliittymäkirjasto
  • sovelluskehykset (frameworks)
    • joukko toisiinsa liittyviä komponentteja
slide49

Uudelleen-

käyttö

tuotanto-

prosessissa

uudelleenk yt n edut
Uudelleenkäytön edut
  • Tuottavuus kasvaa koska ohjelmaa ei tarvitse tehdä kokonaan uudelleen.
  • Monesti koeteltu komponentti on todennäköisesti virheetön.
  • Uudelleen käytetettävillä käyttölittymillä saadaan käyttöliittymän eri osat yhdenkumaiseksi sekä ulkonäön että toiminnan osalta.
uudelleenk yt n ongelmia
Uudelleenkäytön ongelmia
  • Komponenttikirjaston luomisen ja ylläpitämisen vaatima työmäärä
  • Komponenttien etsiminen
  • Dokumentoinnin puutteellisuus
  • Haluttomuus käyttää muiden tekemiä komponentteja
  • Komponentti voi olla liian yleisäyttöinen.
uudelleenk yt n ongelmia1
Uudelleenkäytön ongelmia
  • Yleiskäyttöinen komponetti saattaa olla hidas ja kuluttaa liikaa muistia.
  • Uudelleenkäytettävät komponentit eivät synnyt projektityön sivutuotteina, vaan ne vaativat erityispanostusta ja myös erityisosaamista