Pakkanen Sovellustuotannon menetelmpilotti Komponenttien ja sovellusarkkitehtuurin mrittely Plug

  • Slides: 37
Download presentation
Pakkanen *** Sovellustuotannon menetelmäpilotti Komponenttien ja sovellusarkkitehtuurin määrittely Plug. IT-seminaari D-työpaja _____________________________ Annamari Riekkinen

Pakkanen *** Sovellustuotannon menetelmäpilotti Komponenttien ja sovellusarkkitehtuurin määrittely Plug. IT-seminaari D-työpaja _____________________________ Annamari Riekkinen ja Kirsi Karvinen Plug. IT Kuopion yliopisto / Tietotekniikkakeskus /HIS-tutkimusyksikkö

Esityksen sisältö Komponenttimäärittelyn rooli koko prosessissa Menetelmän esittely: käsitteitä ja prosessi Menetelmän läpikäynti: komponenttien

Esityksen sisältö Komponenttimäärittelyn rooli koko prosessissa Menetelmän esittely: käsitteitä ja prosessi Menetelmän läpikäynti: komponenttien tunnistus Menetelmän läpikäynti: komponenttien vuorovaikutus Menetelmän läpikäynti: komponenttien määrittely Miten onnistuttiin Miten tästä eteenpäin – yleisesti ja tästä hetkestä

Komponentti- ja arkkitehtuurimäärittely sovellusprosessissa Toimintaa tukeva vaatimusmäärittely Vaatimukset konkretisoituvat käyttöliittymätasolla (näyttökuvat) Määrittelyssä vaatimukset siirretään

Komponentti- ja arkkitehtuurimäärittely sovellusprosessissa Toimintaa tukeva vaatimusmäärittely Vaatimukset konkretisoituvat käyttöliittymätasolla (näyttökuvat) Määrittelyssä vaatimukset siirretään sovellukseen. Huolellinen määrittely: • suoraviivaistaa toteutusta • helpottaa ylläpitoa • parantaa käytettävyyttä

Vaikutteet menetelmän valintaan Ohjelmistotuotannon kaikki vaiheet ja näkökulmat perustuvat komponentteihin: Komponentti- ja palvelulähestymistavan näkökulma:

Vaikutteet menetelmän valintaan Ohjelmistotuotannon kaikki vaiheet ja näkökulmat perustuvat komponentteihin: Komponentti- ja palvelulähestymistavan näkökulma: sovellus määritellään joukkona komponentteja, jotka tarjoavat käyttäjilleen palveluja rajapintojensa (eli liittymiensä) kautta. komponenttien ja sovelluksen palvelupohjaista arkkitehtuuria tukeva määrittelymenetelmä. Helposti opittavissa oleva ja käyttöönotettava menetelmä. Tavoite: Miten menetelmän avulla saadaan kehitysprosessia tukevat tuotokset: arkkitehtuurimäärittely, komponenttimäärittelyt ja rajapintamäärittelyt.

Menetelmän esittely: käsitteitä Arkkitehtuuri koostuu komponenteista. Komponentti toteuttaa rajapinnan(t). Rajapinta koostuu operaatioista. Operaatioista muodostuu

Menetelmän esittely: käsitteitä Arkkitehtuuri koostuu komponenteista. Komponentti toteuttaa rajapinnan(t). Rajapinta koostuu operaatioista. Operaatioista muodostuu toiminnallisuus.

Menetelmän esittely: prosessi Käsitemalli Käyttötapauskuvaus Komponentit ja arkkitehtuuri Rajapintamäärittelyt

Menetelmän esittely: prosessi Käsitemalli Käyttötapauskuvaus Komponentit ja arkkitehtuuri Rajapintamäärittelyt

Komponenttien ja arkkitehtuurin määrittely Prosessin periaate: Komponenttien tunnistus: rakenteellinen perusta • komponenttiarkkitehtuuri • komponentit

Komponenttien ja arkkitehtuurin määrittely Prosessin periaate: Komponenttien tunnistus: rakenteellinen perusta • komponenttiarkkitehtuuri • komponentit ja rajapinnat • liittymät muihin järjestelmiin ja ympäristöön Komponenttien vuorovaikutuksen määrittely: toiminnallisuus ja tiedot (logiikka) • rajapintojen operaatiot • määrittelyjen tarkennukset Komponenttien määrittely: dokumentointi • komponenttiarkkitehtuurin viimeistely • komponentti- ja rajapintamäärittelyiden viimeistely

1. Komponenttien tunnistusvaihe ICreate. User

1. Komponenttien tunnistusvaihe ICreate. User

Komponenttien tunnistusvaihe Miten käsitemallista ja käyttötapauskuvauksesta johdetaan alustavat rajapintamäärittelyt ja sovellusarkkitehtuuri? Toimintalogiikkarajapintojen tunnistus: 1.

Komponenttien tunnistusvaihe Miten käsitemallista ja käyttötapauskuvauksesta johdetaan alustavat rajapintamäärittelyt ja sovellusarkkitehtuuri? Toimintalogiikkarajapintojen tunnistus: 1. Luo käsitemallin pohjalta tietomalli: Kopioi käsitemalli ja siitä määrittele sen avulla tiedot, jotka sisältyvät tulevaan sovellukseen. Esim. 2. 3. - Henkilö: sovellukseen ei tallenneta henkilön tietoja, ainoastaan viittaus henkilösovelluksen henkilöön. - Asiakas: nimetään Käyttäjäksi 4. - Käyttäjätunnus: Käyttäjän ominaisuus (lisätään Käyttäjäluokkaan attribuutiksi) 5. - Palvelinkone ja käyttäjäryhmä: tiedot ylläpidetään sovelluksessa 6. - Muuta: normalisointi, toiminnan rajoitukset ja säännöt

Komponenttien tunnistusvaihe Käsitemallista Tietomalli

Komponenttien tunnistusvaihe Käsitemallista Tietomalli

Komponenttien tunnistusvaihe Toimintalogiikkarajapintojen tunnistus: 2. Tietomallista johdetaan toimintalogiikkarajapintojen vastuukaavio s. e. sovellukseen sisältyvät käsitteet

Komponenttien tunnistusvaihe Toimintalogiikkarajapintojen tunnistus: 2. Tietomallista johdetaan toimintalogiikkarajapintojen vastuukaavio s. e. sovellukseen sisältyvät käsitteet erotellaan ydinkäsitteiksi (core type): käyttäjä, palvelinkone, käyttäjäryhmä käsitteiksi (type), jotka täydentävät ydinkäsitteitä. Ydinkäsitteille nimetään toimintalogiikkarajapinnat. Muiden käsitteiden osalta päätetään, minka rajapinnan kautta niihin liittyvä tieto tallennetaan ja haetaan. Määritellään vastuu eri rajapintoihin sisältyvien käsitteiden välisen viitteen tallentamisesta.

Komponenttien tunnistusvaihe Tietomallista Vastuukaavio

Komponenttien tunnistusvaihe Tietomallista Vastuukaavio

Komponenttien tunnistusvaihe Järjestelmärajapintojen tunnistus (Cheesman): 3. Nimetään kukin käyttötapauskuvaus omaksi rajapinnakseen. Käyttötapauksittain käydään läpi

Komponenttien tunnistusvaihe Järjestelmärajapintojen tunnistus (Cheesman): 3. Nimetään kukin käyttötapauskuvaus omaksi rajapinnakseen. Käyttötapauksittain käydään läpi kuvausten askelet ja arvioidaan samalla liittyykö niihin toiminnallisuutta, joka on sovelluksen vastuulla alustavat operaatiomäärittelyt (tarkoitus kuvattuna).

Komponenttien tunnistusvaihe Järjestelmärajapintojen tunnistus (Pakkanen): 3. Nimeä kukin käyttötapauskuvaus omaksi rajapinnakseen. Käy käyttötapauksittain läpi

Komponenttien tunnistusvaihe Järjestelmärajapintojen tunnistus (Pakkanen): 3. Nimeä kukin käyttötapauskuvaus omaksi rajapinnakseen. Käy käyttötapauksittain läpi sovelluksen näyttökuvat ja arvioi samalla liittyykö niihin toiminnallisuutta, joka on sovelluksen vastuulla alustavat operaatiomäärittelyt (tarkoitus kuvattuna). Lisäksi näyttökuvissa voi olla mukana käyttötapauksessa tarvittavaa tietoa (tietosisältö), joten operaatioiden parametreja voidaan myös lisätä kuvauksiin. Esimerkki käyttöliittymä paperiprotona if (käyttäjätunnus =””) then get. Person. User. Details(in pid, out Person. Details, out. User. Details); generate. Username(in name: string);

Hakuoperaation palauttamaa: sukunimi, etunimi, henkilötunnus, käyttäjätunnus (jos on) if else operaatioita

Hakuoperaation palauttamaa: sukunimi, etunimi, henkilötunnus, käyttäjätunnus (jos on) if else operaatioita

Komponenttien tunnistusvaihe Komponenttimäärittelyiden ja arkkitehtuurin luonti 4. Järjestelmäkomponentit: esimerkkitapauksessa yksi komponenttimäärittely käyttötapaukselle ”Luo käyttäjätunnus”

Komponenttien tunnistusvaihe Komponenttimäärittelyiden ja arkkitehtuurin luonti 4. Järjestelmäkomponentit: esimerkkitapauksessa yksi komponenttimäärittely käyttötapaukselle ”Luo käyttäjätunnus” (huomioi, että yksi komponenttimäärittely voi sisältää useita rajapintoja). Toimintalogiikkakomponentit: jokaiselle toimintalogiikkarajapinnalle luodaan oma komponenttimäärittely.

Komponenttien tunnistusvaihe Komponenttimäärittelyiden ja arkkitehtuurin luonti Komponenttimäärittelyt kootaan arkkitehtuuriksi miettimällä miten ne kommunikoivat keskenään.

Komponenttien tunnistusvaihe Komponenttimäärittelyiden ja arkkitehtuurin luonti Komponenttimäärittelyt kootaan arkkitehtuuriksi miettimällä miten ne kommunikoivat keskenään.

2. Komponenttien vuorovaikutus

2. Komponenttien vuorovaikutus

Komponenttien vuorovaikutus Miten alustavat määrittelyt täsmentyvät prosessin aikana. Toimintalogiikkatason rajapintaoperaatioiden tunnistus: 1. Luodaan rajapinta-

Komponenttien vuorovaikutus Miten alustavat määrittelyt täsmentyvät prosessin aikana. Toimintalogiikkatason rajapintaoperaatioiden tunnistus: 1. Luodaan rajapinta- ja komponenttimäärittelyt sekvenssikaavioon. 2. Käydään läpi kukin järjestelmärajapinnan tunnistettu operaatio yksi kerrallaan ja mietitään, miten vastuu tietojen käsittelystä jakautuu operaatioiksi toimintalogiikkatasolla. 3. Esimerkkinä operaatiokuvaus find. User(): Operaation tarkoitus on tarjota järjestelmän käyttäjälle lista henkilöistä, joista käyttäjä voi valita. Sen sijaan, että operaatio näyttäisi kaikki järjestelmään tallennetut henkilöt, käyttäjän on annettava hakuarvona merkkijono, joka ainakin osittain vastaa henkilön nimeä tai syntymäaikaa. Järjestelmä palauttaa vain niiden henkilöiden tiedot, jotka sopivat annettuun hakuarvoon.

Komponenttien vuorovaikutus Rajapintojen ja operaatioiden muokkaus: Edellisessä vaiheessa siis riittää, että tunnistetaan (eli nimetään)

Komponenttien vuorovaikutus Rajapintojen ja operaatioiden muokkaus: Edellisessä vaiheessa siis riittää, että tunnistetaan (eli nimetään) toimintalogiikkatason rajapintaoperaatiot, mutta jos järjestelmätason operaatioihin on määritelty parametrit, myös ne kannattaa lisätä samalla kertaa tai sitten se tehdään seuraavaksi: ”Käyttäjän on annettava hakuarvona merkkijono, joka ainakin osittain vastaa henkilön nimeä tai syntymäaikaa”. find. Person. User. By. Person. Data (in match: string) ”Järjestelmä palauttaa vain niiden henkilöiden tiedot, jotka sopivat annettuun hakuarvoon”. find. Person. User. By. Person. Data (in match: string) : Person. User[] (lähde: olemassa oleva järjestelmä, vastuukaavio, mutu (tuntuma), käyttöliittymäprotot ym. )

Komponenttien vuorovaikutus Rajapintojen ja operaatioiden muokkaus: Henkilö- ja käyttäjätiedot eri järjestelmissä, joten on mietittävä,

Komponenttien vuorovaikutus Rajapintojen ja operaatioiden muokkaus: Henkilö- ja käyttäjätiedot eri järjestelmissä, joten on mietittävä, miten tietojen haku jakautuu toimintalogiikkarajapinnoille: Henkilötietojen haku henkilötiedoista hakuparametrin perusteella ja osajoukon palautus tuntuu loogiselta vaihtoehdolta: find. Persons. By. Person. Data(in match: String) : Person. Details[] Käyttäjätiedoista haetaan ed. operaatiossa palautetuille henkilöille käyttäjätunnukset: find. Person. Users. By. Pid(in person. ID[]): User. Details[] Tietojen yhdistys järjestelmäkomponentissa ja palautus dialogitasolle.

Komponenttien vuorovaikutus

Komponenttien vuorovaikutus

Komponenttien vuorovaikutus: Inkrementaalinen suunnittelu: tavallisesti uusien operaatioiden ja käyttötapausten myötä vaatimukset operaatioiden parametreille muuttuvat

Komponenttien vuorovaikutus: Inkrementaalinen suunnittelu: tavallisesti uusien operaatioiden ja käyttötapausten myötä vaatimukset operaatioiden parametreille muuttuvat (esitellään uusia parametreja, rakenteisten tietotyyppien tietosisällöt lisääntyvät jne. ). On päätettävä tehdäänkö yleisiä, kaikille yhteisiä operaatio- ja tietotyyppimäärityksiä vai tehdäänkö samoihin tietoihin erilaisia näkymiä operaatioiden ja tietotyyppien avulla: Esimerkkinä operaatiot: find. Person. User. By. Lastname(in l. Namematch) find. Person. User. By. Birth. Date(in b. Datematch) find. Person. User. By. Personal. Data(in l. Namematch, in b. Datematch) find. Person. User(in l. Namematch, in b. Datematch, in user. Name)

Komponenttien vuorovaikutus: Inkrementaalinen suunnittelu Esimerkkinä tietotyypit: find. Person. Users. By. Pid(in person. ID[]): User.

Komponenttien vuorovaikutus: Inkrementaalinen suunnittelu Esimerkkinä tietotyypit: find. Person. Users. By. Pid(in person. ID[]): User. Details[] get. Person. User. Details(in person. ID): User. Details Pakkasessa: vain pieniä eroja kaikille yhteiset Vuorovaikutusta tutkimalla löydetään operaatioita ja niiden vastuita tietojen käsittelyssä. Muita suunnittelunäkökulmia ovat esimerkiksi kutsujen minimointi, sykliset riippuvuudet, operaatioiden ja rajapintojen normalisointi tai olemassa olevien suunnittelumallien käyttö. Hyvä suunnitteluperiaate on se, että pyritään tekemään yksi asia kerrallaan.

Komponenttien vuorovaikutus: Operaatioiden normalisointi Määrittelyiden muokkaus: Mitä enemmän operaatioita käsitellään, sitä enemmän voidaan tunnistaa

Komponenttien vuorovaikutus: Operaatioiden normalisointi Määrittelyiden muokkaus: Mitä enemmän operaatioita käsitellään, sitä enemmän voidaan tunnistaa yleisiä, eri toiminnoissa tarvittavia yhteisiä operaatioita, jotka voidaan sijoittaa rajapintoihin eri tavoin. Esim: find. Person. User. By. Person. Data (in match: string): Person. User[] 1. Uusi toiminnallisuus uusi rajapinta, jossa operaatio on myös mukana: ei normalisointia <<comp spec>> Username. Management. System Luo käyttäjätunnus ICreate. User IClose. Username Sulje käyttäjätunnus

Komponenttien vuorovaikutus: Operaatioiden normalisointi 2. Uusi toiminnallisuus yhteinen operaatio määritellään omaan rajapintaansa: Luo käyttäjätunnus

Komponenttien vuorovaikutus: Operaatioiden normalisointi 2. Uusi toiminnallisuus yhteinen operaatio määritellään omaan rajapintaansa: Luo käyttäjätunnus Sulje käyttäjätunnus find. Person. User. By. Person. Data (in match: string): Person. User[] <<comp spec>> Username. Management. System IFind. User ICreate. User IClose. Username

Komponenttien vuorovaikutus: Operaatioiden normalisointi 3. Uusi toiminnallisuus operaatiot ryhmitellään rajapinnoiksi esimerkiksi käyttöoikeuksien perusteella: Luo

Komponenttien vuorovaikutus: Operaatioiden normalisointi 3. Uusi toiminnallisuus operaatiot ryhmitellään rajapinnoiksi esimerkiksi käyttöoikeuksien perusteella: Luo käyttäjätunnus <<comp spec>> Username. Management. System Sulje käyttäjätunnus IFind. User IGet. User. Data ISet. User. Data

3. Komponenttien määrittely

3. Komponenttien määrittely

Komponenttien määrittely Rajapintojen dokumentointi: Rajapintatietomallien luonti ja rajapintamääritysten kokoaminen. Toimintalogiikkarajapintojen vastuukaavio kopioidaan jokaiselle rajapinnalle

Komponenttien määrittely Rajapintojen dokumentointi: Rajapintatietomallien luonti ja rajapintamääritysten kokoaminen. Toimintalogiikkarajapintojen vastuukaavio kopioidaan jokaiselle rajapinnalle erikseen. Vastuukaavio sisältää valmiiksi kaikki järjestelmään kuuluvat tietotyypit, joten kunkin rajapinnan tietomalli tulee sisältämään ainakin osajoukon vastuukaavion tietotyypeistä. Kunkin rajapinnan osalta käydään läpi operaatiomäärittelyihin sisältyvät rakenteiset ja ei-rakenteiset tietotyypit ja muokataan niiden perusteella tietomallin tietotyyppien attribuutteja – lähinnä poistetaan tarpeettomat attribuutit. Tietomalli laajennetaan rajapintamäärittelyksi siten, että kuvauksen rajapintaan lisätään tunnistetut operaatiot ja operaatiosijoitukset (parametrit ja paluuarvot) sekä operaatioiden rakenteiset tietotyypit.

Komponenttien määrittely Esimerkki: ICreate. User-järjestelmärajapinta Vastuukaavio

Komponenttien määrittely Esimerkki: ICreate. User-järjestelmärajapinta Vastuukaavio

Komponenttien määrittely ICreate. User-rajapintaoperaatioiden tietotyypit: Datatypes

Komponenttien määrittely ICreate. User-rajapintaoperaatioiden tietotyypit: Datatypes

Komponenttien määrittely Operaatioiden esi- ja jälkiehtojen määrittely Esi- ja jälkiehtojen avulla määritellään operaation käyttäytyminen

Komponenttien määrittely Operaatioiden esi- ja jälkiehtojen määrittely Esi- ja jälkiehtojen avulla määritellään operaation käyttäytyminen ja operaatiosuorituksen mahdollisesti aiheuttama tilamuutos. Esiehto: ehto, jonka on oltava voimassa ennen kuin operaatiota voidaan suorittaa, esim. hakuparametri ”match” ei saa olla tyhjä ( muutoin virheilmoitus). Jälkiehto: komponentin tila tai muu ehto, joka on voimassa kun operaatio on suoritettu (mikäli esiehto on ollut tosi). Alku- ja loppuehtojen määrittely voidaan siirtää toteuksen yhteyteen.

Komponenttien määrittely Rajapintojen välisten rajoitusten määrittely Toiminta asettaa sovellukselle sääntöjä ja rajoituksia. Kuvataan esimerkiksi

Komponenttien määrittely Rajapintojen välisten rajoitusten määrittely Toiminta asettaa sovellukselle sääntöjä ja rajoituksia. Kuvataan esimerkiksi • käsitteiden välisten yhteyksien lukumääräsuhteena (multiplicity) • attribuutteina Kaikkea ei voida kuvata graafisesti, vaan osa esitetään kuvauksissa invariantteina eli ehtoina, jotka ovat aina voimassa. Rajoitusten määrittelyssä tärkeä on miettiä sijoitus. Esimerkkinä ehto ”Henkilön tiedot täytyy olla henkilötietojärjestelmässä ennen kuin tunnusta voidaan luoda”. Jos sääntö sijoitetaan toimintalogiikkatasolle, se on voimassa kaikissa järjestelmissä, jotka käyttävät tätä henkilörajapintaa. Sen sijaan jos sääntö sijoitetaan järjestelmätasolle, rajoitus on voimassa vain tuotettavassa sovelluksessa.

Komponenttien määrittely Teknisen suunnittelun näkökulmia: • Parametrien välitys (tyyppi, laatu (in, out, inout, return)

Komponenttien määrittely Teknisen suunnittelun näkökulmia: • Parametrien välitys (tyyppi, laatu (in, out, inout, return) ja viittaussäännöt) • Virheiden- ja poikkeustenkäsittelymekanismit (filosofia) • Rajapintojen periytyvyys ja rajapintatuki • Rajapintojen ominaisuudet (properties) • Ilmentyminen (olioiden, objects) luontimekanismit • Tapahtumien aiheuttaminen/aikaansaaminen • Toimitettavan komponentin rakeisuus tehdään toteutuksen suunnittelun yhteydessä.

Komponenttien määrittely Määrittelyjen kokoaminen komponenttien ja sovellusten toteuttajille Komponenttiarkkitehtuurikuvaus: toteuttaja tunnistaa tarvittavat komponentit sekä

Komponenttien määrittely Määrittelyjen kokoaminen komponenttien ja sovellusten toteuttajille Komponenttiarkkitehtuurikuvaus: toteuttaja tunnistaa tarvittavat komponentit sekä niiden väliset suhteet ja riippuvuudet. Sekvenssikaavio(t): vuorovaikutus, toteuttaja tietää, mitä komponentin on tehtävä kun se vastaanottaa operaatiokutsun. Rajapintamäärittely(t): 1. operaatiomäärittely (operaatiot parametreineen ja paluuarvoineen, esi- ja jälkiehdot, invariantit): operaatioiden käyttäytyminen ja vastuut tietojen välityksessä. 2. tietomalli: rajapinnan vastuut tietojen tallennuksessa ja hakemisessa. 3. rakenteiset tietotyypit: operaatioissa välitettävä tieto.

Menetelmän arviointia Menetelmän sudenkuoppa: suunnitellaan liian tarkasti paperilla kannattaa muistaa: Määrittelyvaiheen tulokset ovat vasta

Menetelmän arviointia Menetelmän sudenkuoppa: suunnitellaan liian tarkasti paperilla kannattaa muistaa: Määrittelyvaiheen tulokset ovat vasta määrittelyjä, joita joudutaan todennäköisesti tarkentamaan vielä seuraavassa vaiheessa, kun suunnittelun tulokset sijoitetaan toteutusarkkitehtuuriin ja toteutustekniikoihin ja sitä kautta siirrytään varsinaiseen toteutukseen. Suhteellisen helposti käyttöönotettavissa ja etenee suoraviivaisesti: - käsitemallin pohjalta alustava arkkitehtuuri sekä toimintalogiikarajapinnat - käyttötapausten pohjalta järjestelmärajapinnat ja vuorovaikutuksen määrittely Rakenne ja toiminnallisuus Rajapintojen välisen vuorovaikutuksen määrittelyyn kehittämisideoita: apuna käyttöliittymäkuvaus, kuvautapana UML-sekvenssikaavio suoraviivaistaa työvaihetta.

Miten jatketaan Kevään aikana: Menetelmän analysointi suhteessa koko sovelluskehitysprosessiin: tehtävien keskinäisten suhteiden sijoittuminen, esimerkiksi:

Miten jatketaan Kevään aikana: Menetelmän analysointi suhteessa koko sovelluskehitysprosessiin: tehtävien keskinäisten suhteiden sijoittuminen, esimerkiksi: testaus tietokantasuunnittelu käyttöliittymäsuunnittelu ja toteutus. Menetelmäkuvaus: ”keittokirjaresepti” menetelmän soveltamisesta sovelluskehitysprojektissa. Seuraavaksi: Suunnitelmien sijoitus toteutustekniikoihin ja tekniset ratkaisut demon avulla. Kiitos!