Vaatimusmäärittely Populous Helsinki 5.10.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Heli Borg Markus Heinonen Ville Luolajan-Mikkola Olli Orajärvi Asiakas Petteri Hintsanen Johtoryhmä Juha Taina Turjo Tuohiniemi Kotisivu http://www.cs.helsinki.fi/group/populous Versiohistoria Versio Päiväys Tehdyt muutokset 0.1 20.9.2004 Ensimmäinen versio 0.2 21.9.2004 Kommenttien pohjalta korjattu versio 0.3 27.9.2004 Uusi versio kommentoitavaksi. 1.0 29.9.2004 Asiakkaalle toimitettava 1.versio. 1.1 4.10.2004 Hyväksytty versio.
Sisältö i 1 Johdanto 1 1.1 Termit.................................... 1 1.2 Dokumentin rakenne............................ 2 2 Nykyinen järjestelmä 2 2.1 Tarkoitus.................................. 3 2.2 Rakenne................................... 3 2.2.1 genped............................... 3 2.2.2 chrom................................ 4 2.2.3 simco................................ 6 2.2.4 markertool............................. 7 2.3 Ongelmat.................................. 9 3 Käyttötapaukset 9 3.1 Sidosryhmät................................. 10 3.2 Tutkijan käyttötapaukset.......................... 10 3.3 Järjestelmän ylläpitäjän käyttötapaukset.................. 14 4 Vaatimukset 16 4.1 Toiminnalliset vaatimukset......................... 16 4.2 Laadulliset vaatimukset........................... 18 4.3 Rajoitteet suunnittelulle........................... 19 5 Toteutettava järjestelmä 20 5.1 Rakenne................................... 20 5.1.1 Populous-palvelinkomponentti................... 20 5.1.2 Populous-asiakaskomponentti................... 23 5.2 Käyttöliittymä................................ 23 5.3 Ulkoiset liittymät.............................. 23 6 Rajoitteet suunnittelulle ja toteutukselle 24 7 Vaatimusten toteutuminen 24 7.1 Validointi.................................. 24
7.2 Testaus................................... 24 7.3 Ylläpito................................... 25 ii
1 Johdanto 1 Populous on syksyn 2004 aikana Helsingin yliopiston Tietojenkäsittelytieteen laitoksella Ohjelmistotuotantoprojekti -kurssin puitteissa toteutettava projekti. Projektissa tuotetaan populaation kehityksen simulointiin käytettävän ohjelmiston osa. Projektin pohjana on HIIT -perustutkimusyksikössä käytössä oleva populaatiosimulaattori, joka koostuu neljästä osasta. Tässä projektissa korvataan käytössä olevan ohjelmiston kaksi ensimmäistä osaa tavoitteena prosessin suoraviivaistaminen. Lisäksi laaditaan käyttöliittymä ohjelmiston käytön helpottamiseksi. Simulointiprosessin lähtökohtana on tyypillisesti yksi populaatioisolaatti. Populaatio koostuu pienestä joukosta yksilöitä, joista populaatio kasvaa annettuun loppukokoon saakka. Simulaatio jäljittelee perusjoukon geenien periytymistä jälkeläisille ja sukupolvelta toiselle laajenemisprosessin kuluessa. Projekti toteutetaan syksyllä 2004 laaditun projektisuunnitelman mukaisesti. Tämä Populous -projektin määrittelydokumentti on tarkoitettu projektiryhmän ja asiakkaan väliseksi sopimukseksi ja se kattaa kokonaisuudessaan toteutettavan ohjelmistolle asetettavat toiminnalliset vaatimukset. Lisäksi dokumentissa määritellään mahdollisimman tarkasti ohjelmistoon kohdistuvat laadulliset vaatimukset. 1.1 Termit Dokumentissa käytetyt termit ja lyhenteet: Alipopulaatio: Populaatio voi jakautua useisiin populaatioisolaatteihin. Alipopulaatioiden välillä pariutumistodennäköisyys on pienempi kuin alipopulaation sisällä. Emäspari: Kromosomeissa sijaitsevat toisiaan vastaavat dna:n rakenneosat. (engl. basepair). Genotyyppi: Useiden markkereiden yhdistelmä. HIIT -perustutkimusyksikkö: Tietojenkäsittelytieteen laitoksen yhteydessä toimiva Helsingin yliopiston ja Teknillisen korkeakoulun yhteisen Helsinki Institute for Information Technology -tutkimuslaitoksen (HIIT) perustutkimusyksikkö (BRU).Yksikön keskeisiä tutkimusalueita ovat data-analyysi, adaptiivinen laskenta ja laskennallinen neurotiede. HUP: Kts. UNIX -signaalit. INT: Kts. UNIX -signaalit. Loppupopulaatio: Populaatiosimulaation lopussa olevan viimeisen sukupolven edustajat muodostavat loppupopulaation. Markkeri: Kromosomissa paikka, jossa esiintyy yksilöiden välistä vaihtelua.
Ncurses: Yleisesti käytössä oleva kirjasto tekstitilaisen terminaali-ikkunan sisällön ja toimintojen määrittelyyn. Tässä projektissa NCURSES:lla on tarkoitus toteuttaa yksinkertainen ikkunamainen käyttöliittymä, jolla voidaan suorittaa rinnakkaista ajoa lukuunottamatta samat käyttötapaukset kuin Javalla toteutettava käyttöliittymä. Perustajajäsen: Populaation ensimmäisen sukupolven edustaja, jonka perimästä simulaatio lähtee liikkeelle. Populaatio: Joukko saman lajin yksilöitä, jotka elävät samalla alueella. Populaatioisolaatti: Eristäytynyt populaatio, jossa ei geenivaihtoa ulkopuolelta. Rekombinaatio: Tekijäinvaihtojen määrästä riippuva jälkeläisen geeniperimä. Siirtolainen: Muualta populaatioon tuleva yksilö, jonka geeniperimä poikkeaa ko. populaatioisolaatin perimästä. SNP -mutaatio: Lajin sisäinen, nukleotidisekvenssin tietyssä kohdassa esiintyvä vaihtelu. Muutokset tapahtuvat ainoastaan yhdessä emäsparissa.(engl. SNP = Single Nucleotide Polymorphism). STR-markkerit: Lyhyellä peräkkäisellä kromosomijaksolla toistuvat markkerit. Vaihtelu muodostuu jakson toistojen lukumäärästä. (engl. STR = Short Tandem Repeat). Tekijäinvaihto: Kromosomien risteäminen jakautumisen yhteydessä. (engl. cross-over). TERM: Kts. UNIX -signaalit. UNIX-signaalit: Prosessien väliseen kommunikaatioon käytetty menetelmä, jolla prosessille voidaan antaa signaali. Signaalin tyyppejä ovat mm. INT, TERM ja HUP, joihin reagoiminen voidaan ohjelmassa säätää halutunlaiseksi. 2 1.2 Dokumentin rakenne Luvussa 2 selvitetään nykyisen populaatiosimulaattorijärjestelmän rakennetta ja toimintaa. Luku 3 sisältää kuvauksen järjestelmään liittyvistä sidosryhmistä ja näiden järjestelmän käytöstä käyttötapauksien avulla. Luvussa 4 on listattu projektin toiminnalliset ja laadulliset vaatimukset sekä toteutukselle asetetut rajoitteet. Luku 5 sisältää yksityiskohtaisen kuvauksen toteutettavasta järjestelmästä. Luvussa 6 on esitetty projektin suunnittelulle ja toteutukselle asetettavat rajoitteet. Luku 7 esittelee miten vaatimukset toteutuvat projektissa toteutettavassa järjestelmässä. 2 Nykyinen järjestelmä Tämä luku sisältää yleiskuvauksen HIIT:issä tällä hetkellä käytössä olevasta ohjelmistosta. Luvussa käydään läpi populaatiosimulaattorin käyttötarkoitus, rakenne ja siihen liitty-
vät ongelmat. Simulaattorin toiminnassa ilmenneet ongelmat ovat lähtökohtana Populousprojektille ja muodostavat yhdessä käyttötarkoituksen kanssa taustan, jota vasten projektin onnistumista voidaan arvioida. 3 2.1 Tarkoitus Erilaisten geenikartoitusmenetelmien ja genomin rakenteen selvittämiseen tarkoitettujen menetelmien testaamisessa simuloidut aineistot ovat välttämättömiä. Simuloinnin kohteena on tyypillisesti ns. populaatioisolaatti: populaatio koostuu alkutilanteessa pienestä joukosta perustajayksilöitä, jonka jälkeen populaatio kasvaa tietyn ajan määriteltyyn loppukokoon saakka. Simulaatiossa jäljitellään perustajajoukon geenien periytymistä laajenemisprosessin aikana. 2.2 Rakenne Nykyisellään populaatiosimulaattori koostuu neljästä erillisestä osasta, genped, chrom, simco ja markertool, sekä skripteistä, joilla niiden toiminta on yhdistetty. (Kts. Kuva 1, Populaatiosimulaattorin rakenne). Seuraavissa aliluvuissa kuvataan erilliset osat syötteineen ja tulosteineen. Kuva 1: Populaatiosimulaattorin rakenne. 2.2.1 genped Genpedin on simulointiprosessin ensimmäinen osa. Sen tarkoitus on luoda annettujen parametrien pohjalta sukupuu, jossa kromosomien rekombinoitumista ja mutatoitumista tullaan simuloimaan. Sukupolvet ovat diskreettejä, ts. pariutuminen tapahtuu aina sukupol-
ven sisällä. Nykyinen komponentti on kirjoitettu Python-ohjelmointikielellä ja on kooltaan suhteellisen pieni, 128 riviä kommentteineen. Syötteet: Tulosteet: Perustajasukupolven koko (kromosomeina) Viimeisen jälkeläissukupolven koko (kromosomeina) Sukupolvien lukumäärä Viimeisen lisäksi tulostettavat sukupolvet sukupuun tiedot tekstiriveinä Syöttö ja tulostustietojen rakenne: Sukupolvi Id Isä Äiti Sukupuoli Tulostus Lapsiluku 2 381 172 208 2-3 2 382 154 140 1-5 2 383 134 220 2-2 2 384 202 175 2-6 3 385 294 270 2-2 3 386 338 305 1-5 3 387 247 244 1-2 3 388 293 331 1-4 Taulukko 1: Genpedin tulosteformaatti Taulukon 1 selitys: Sukupolvi: Sukupolven indeksi, 0=perustajat Id: Yksilön tunnus Isä: Isän id Äiti: Äidin id Sukupuoli: Henkilön sukupuoli, 1=Isä, 2=Äiti Tulostus: +=sukupolvi otetaan mukaan chrom-tulostukseen, -=ei oteta Lapsiluku: Henkilön lapsien lukumäärä 4 2.2.2 chrom Simulointiketjun toinen komponentti on chrom. Chromin lisää genpedin luomaan sukupuuhun kromosomien rekombinoitumisen sukupolvelta toiselle. Chrom on kirjoitettu C- kielellä ja on kooltaan 1201 riviä kommentteineen. Syötteet:
5 Tulosteet: Genpedin tulostama sukupuu Miehen kromosomipituus Naisen kromosomipituus Debug-taso Satunnaislukugeneraattorin siemen Interferenssiparametrin arvo Seurantapisteet Seurantapistevapaa alue kromosomin päässä (0-0.5) Jälkeläis- ja perustajajoukko/väli, joiden yhteiset kromosomin osat halutaan määrittää. Vain lopussa elävien jälkeläisten tulostus Tulostuksen pakkaamineen lukukelvottomaan muotoon(tilan säästämiseksi) Sukupolvinumeroinnin sisältyminen tulosteeseen Vanhempien informaation poistaminen tulosteesta Suurin sallittu segmenttimäärä muistissa kerralla Sukupuussa esiintyvien yksilöiden kromosomien rekombinoituneet osat tekstiriveinä Syöttö ja tulostustietojen rakenne: Id Vastinkromosomiparin Loppupiste Pid Osan alkuperäkromosomi tunnus 38236 0 0.993273 41 0 38236 0 1.000000 61 0 38236 1 0.073426 61 1 38236 1 0.080309 61 0 38236 1 0.207230 82 1 38236 1 0.220853 75 0 38236 1 0.237446 61 1 Taulukon 2 selitys: Id: Yksilön tunnus Taulukko 2: Chromin tulosteformaatti
Vastinkromosomiparin tunnus: 0=isältä peritty kromosomi, 1=äidiltä peritty kromosomi Loppupiste: Kromosomiosan loppupiste, alkupiste on edellisen osan loppupiste Pid: Id perustajalle, jolta kromosomin osa on peräisin Osan alkuperäkromosomi: Perustajajäsenen kromosomi, josta osa on peräisin. 0=isä, 1=äiti 6 2.2.3 simco Simcon tehtävä on generoida markkerit perustajayksilöille. Se on kirjoitettu C-kielellä. Simcoa ei ole tarkoitus muokata projektin aikana. Syötteet: Tulosteet: STR -markereiden sijaintitiedosto Satunnaislukugeneraattorin siemen Efektiivinen populaatiokoko kromosomeina Otoksen koko Simuloidun sekvenssin pituus emäspareina SNP mutaatiotiheys Rekombinaatiotiheys Lista markkereiden sijainneista ja jakautumisesta Syöttö ja tulostustietojen rakenne: Markkeri Sijainti Ikä Pid SNP 92023.5941 40.445342 57 SNP 92533.4847 6.048516 88 171 5 SNP 103469.3370 0.759641 98 21 140 183 6 SNP 105877.0691 23.510698 36 SNP 117294.6889 2.360961 20 55 SNP 121778.9707 643.277666 125 174 123 135 8 191 114 SNP 128462.2186 7.420818 135 Taulukon 3 selitys: Markkeri: Markkerin tyyppi Taulukko 3: Simco:n tulostusformaatti
7 Sijainti: Markkerin sijainti Ikä: Mutaation (markkerin) ikä sukupolvina Pid: Kaikkien niiden perustajien id:t, joilla on mutaatio markkerin kohdalla 2.2.4 markertool Ketjun viimeinen osa on markertool, joka poimii populaatiosta otoksen ja luo lopullisen markkeridatan. Lisäksi on mahdollista määritellä tautimalli. Markertool vaatii, osittain toteutusteknisistä, mutta myös algoritmiteknisistä syistä, syötteekseen erilaisen, tiiviimmän chrom-tulosteen. Simulaatio-skripti hybridsim.sh muuntaa chrom-tulosteen tähän formaattiin. Chromin tulostetta muokataan seuraavasti: Markertool käsittelee kromosomeja [0; 1] väleinä. Henkilöiden tunnukset ovat kuitenkin erilaisia kuin chromissa: jokaisella yksilöllä on kaksi peräkkäistä tunnusta, jotka vastaavat henkilön vastinkromosomeja. Parillinen tunnus kuvaa isältä perittyä kromosomia ja pariton tunnus äidiltä perittyä. Täsmällisesti: jokaisen henkilön tunnukset ovat 2n,2n+1, jossa 2n vastaa isältä perittyä kromosomia ja 2n + 1 äidiltä perittyä. Tällä numeroinnilla on käytännössä yhdistetty chromin tulosteen kaksi ensimmäistä saraketta. Lisäksi tunnusten numerointi alkaa jokaisessa sukupolvessa uudelleen nollasta. Henkilöllä on siis yksikäsitteinen tunnus(pari) vain oman sukupolvensa joukossa. Muokattu tuloste on toisen sarakkeen mukaan järjestyksessä. Markertool on kirjoitettu C-kielellä ja sitä ei ole tarkoitus projektissa muuttaa. Asiakas Petteri Hintsanen on lupautunut muuttamaan markertoolia sen verran, että seuraavan kromosomiosan alkupisteeksi käy emäsparin kokonaislukuindeksi. Syötteet: Esiprosessoitu chromin tuloste toisen sarakkeen mukaan järjestyksessä Simco:n tuloste Markkerialueen alkukohta Markkerialueen loppukohta Esiintymistiheys mutaatiolle, joka valitaan tautimalliksi loppupopulaatiossa Kromosomipituus Markerikartan kirjoitus tiedostoon Generoitavien SNP markkerien lukumäärä Otoskoko yksilöinä Yleisyys Ilmenevyys(ehdollinen todennäköisyys ilmiasulle)
8 Tulosteet: Raportin kirjoitus tiedostoon Otoksen tyyppi( random, affected, case+healthy tai case+random ) Minimiesiintymistiheys alleeleille (alle rajan olevat karsitaan otoksesta) Vanhempien sukupolven koko(trio-asetus) Vanhempien sukupolven luku tiedostosta(trio-asetus) Sukupuun luku tiedostosta(trio-asetus) Sisarusten salliminen otokseen(trio-asetus) Raportti Markkerikartta Alleelikartta Syöttö ja tulostustietojen rakenne: Id Alkupiste Pid 8508 0.001143 156 9894 0.001143 156 11194 0.001148 140 11536 0.001148 140 11547 0.001148 140 14939 0.001148 140 17603 0.001148 140 19729 0.001148 140 19410 0.001164 142 13323 0.001165 36 Taulukko 4: Markertoolille esiprosessoitu chromin tuloste Taulukon 4 selitys: Id: Yksilön tunnus Alkupiste: Seuraavan kromosomin osan alkupiste Pid: Id perustajalle, jolta kromosomin osa on peräisin
9 Tunnus TU1 TU2 TU3 TU4 TU5 TU6 TU7 TU8 YL1 YL2 YL3 YL4 YL5 YL6 Käyttötapaus Syöttötietojen antaminen Tallennettujen syöttötietojen lataus Tulosteen uudelleenkäyttö syöttötiedostona Syöttötietojen muokkaaminen Syöttötietojen tallentaminen Syöttötietojen poistaminen Populaatiosimulaation käynnistäminen Populaatiosimulaation keskeyttäminen Asiakasohjelman konfigurointi Palvelimen käyttöoikeuksien hallinta Järjestelmän asentaminen Palvelimen käynnistäminen Palvelimen sammuttaminen Palvelimen uudelleen käynnistäminen 2.3 Ongelmat Taulukko 5: Tutkijan ja ylläpitäjän käyttötapaukset. Populaatioiden simulointi vaatii tietokoneelta paljon resursseja. Tyypillisesti simuloitavat populaatiot ovat suuria ja simulointia on ajettava sata kertaa tai jopa useammin satunnaisvaihteluiden minimoimiseksi. Nykyisellään yksi simulointiajo alusta loppuun kestää minuuteista kymmeniin minuutteihin riippuen konetehosta ja populaation koosta. Tämänhetkinen ohjelmisto on yhden ihmisen väitöskirjatyön päälle rakennettu ja muiden ihmisten useampaan kertaan muokkaama. Tämän seurauksena komponenttien välinen yhteistyö ei ole saumatonta vaan neljän erillisen osakomponentin toiminta on skriptattu yhteen siten, että parametrit luetaan erillisestä parametritiedostosta ja jokainen osakomponentti työskentelee aiemman vaiheen tiedostoon tallentaman lopputuloksen pohjalta. Lisäksi välissä on tehtävä esiprosessointia, koska chromin tuloste ei ole markertoolin ymmärtämässä muodossa. Tämä kaikki tekee ohjelmiston käytöstä työlästä ja hidasta. 3 Käyttötapaukset Tässä kappaleessa kuvataan järjestelmään liittyvät sidosryhmät (kts. Kuva 2) ja esitellään sidosryhmien käyttötapaukset. Seuraavassa taulukossa 5 on lueteltu kaikki populaatiosimulaattoriin liittyvät käyttötapaukset.
10 3.1 Sidosryhmät Populaatiosimulaattorin sidosryhmät on esitetty kuvassa 2. Sidosryhmiä on kaksi: tutkija ja ylläpitäjä. Tutkijan käyttötapaukset on merkitty lyhenteellä TU ja ylläpitäjän käyttötapaukset lyhenteellä YL. Lisäksi kummankin sidosryhmän käyttötapaukset on juoksevasti numeroitu (TU1-TU8 ja YL1-YL6). Kuva 2: Populaatiosimulaattorin sidosryhmät. Tutkija on populaatiosimulaattoria käyttävä, populaatiotutkimusta harjoittava henkilö. Tutkija antaa syötteenä järjestelmälle populaation luontiin tarvittavat lähtötiedot ja saa tulokseksi tiedon loppupopulaation perimästä. Järjestelmä simuloi populaation kehitystä annetusta lähtötilanteesta, kunnes loppupopulaatioon haluttu yksilömäärä on saavutettu. Loppupopulaatiosta voidaan havaita tietyn, alkuperäisestä populaatiosta peräisin olevan markkerin omaavien yksilöiden lukumäärä. Ylläpitäjä on populaatiosimulaattoria ylläpitävä henkilö. Ylläpitäjän tehtävänä on huolehtia järjestelmän asennuksesta ja toiminnasta halutussa käyttöympäristössä. Järjestelmän ylläpitäjänä voi toimia myös tutkija itse. 3.2 Tutkijan käyttötapaukset Käyttötapaukset on esitetty graafisesti kuvassa 3. Tässä luvussa käsitellään yksityiskohtaisesti tutkijaan liittyviä käyttötapauksia. Kukin käyttötapaus on kuvattu ja sen vaatimat syötteet ja sen antamat tulosteet on kuvattu. Toiminnossa mahdollisesti tapahtuvat poikkeukset on kirjattu. Kommenttiosassa on ko. käyttötapaukseen liittyviä huomioita.
11 Kuva 3: Käyttötapaukset. TU1. Syöttötietojen antaminen Kuvaus: Tutkija antaa järjestelmälle syöttötiedot käyttämänsä käyttöliittymän mukaisesti joko niille varattuihin kenttiin tai komentoriville. Syöttötietoja käytetään populaatiosimulaation lähtötietoina, joiden avulla simulaatioprosessi etenee. Syöte: Syöte koostuu seuraavista arvoista: 1. Toteutettavan järjestelmän tarvitsemat parametrit: perustajajäsenten lukumäärä loppupopulaation koko sukupolvien lukumäärä simulaation toistojen lukumäärä alipopulaatioiden määrä alipopulaatioiden koot siirtymistodennäköisyydet alipopulaatioiden välillä halutaanko pelkkä sukupuun muodostaminen sukupolvet, joiden yhteiset kromosomin osat halutaan määrittää 2. Simcon tarvitsemat parametrit:
12 STR -markereiden sijaintitiedosto (-S) populaation koko kromosomeina (-n) kromosomin pituus emäspareina (-l) SNP -mutaatioiden todennäköisyys/emäspari/sukupolvi (-u) rekombinaatiotodennäköisyys/emäspari/sukupolvi (-r) 3. Markertoolin tarvitsemat parametrit: tautimallin määrittävät parametrit (-d, -P, -r ) markkereihin liittyvät parametrit (-f, -m ) otoksiin liittyvät parametrit (-N, -s, -a) raportointia varten tarvittavat tiedot Markertoolille (-r, -M ) Tulos: Järjestelmän kaikki populaatiosimulaatioon tarvitsemat tiedot näkyvät niille varatuissa kentissä. Poikkeukset: Kaikkia tarvittavia tietoja ei ole annettu tai ne eivät ole sallituissa rajoissa. Loppupopulaatio on pienempi tai yhtä suuri kuin alkupopulaatio. Perustajajäseniä on alle kaksi. Kommentit: Syöttötietojen oikeellisuuus tarkistettava. TU2. Tallennettujen syöttötietojen lataus Kuvaus: Tutkija lataa syöttötiedot suoraan aiemmin tallennetusta tiedostosta. Tämä mahdollistaa saman simulaation toiston useampaan kertaan samoilla parametreilla. Syöte: Tiedoston nimi ja osoite. Tiedosto on tekstitiedosto, jossa populaatiosimulaattorin tarvitsemat syöteparametrit on annettu myöhemmin määriteltävän formaatin mukaisesti. Tulos: Annetut syöttötiedot näkyvät näytöllä, niille varatuissa kentissä tai komentorivillä, käyttöliittymästä riippuen. Poikkeukset: Annetun nimistä tiedostoa ei löydy tai se on sellaisessa muodossa, että sitä ei voi käyttää syöttötiedostona (ei tekstitiedosto tai väärä formaatti). Kommentit: Tiedoston muoto on määriteltävä tarkasti. TU3. Tulosteen uudelleenkäyttö syöttötiedostona Kuvaus: Tutkija käyttää populaatiosimulaattorin tulosteesta otettua otosta uuden simulaation pohjana. Syöte: Tulostiedoston nimi ja osoite sekä otoksen koko. Tiedosto on tekstitiedosto, jossa populaatiosimulaattorin tarvitsemat syöteparametrit on annettu myöhemmin määriteltävän formaatin mukaisesti.
13 Tulos: Annetut syöttötiedot näkyvät näytöllä,. Poikkeukset: Annetun nimistä tiedostoa ei löydy tai se ei ole populaatiosimulaattorin tulostiedosto. Kommentit: - TU4. Syöttötietojen muokkaaminen Kuvaus: Tutkija muokkaa antamiaan syöttötietoja muuttamalla niiden arvoja käyttöliittymän kentissä. Muokkauksella voidaan korjata virheellinen syöte tai muusta syystä vaihtaa syöttötietojen arvoja. Syöte: Minkä tahansa parametrin arvo. Osalla parametreista on annetut oletusarvot tai vaihteluvälit, joiden puitteissa muutos voidaan tehdä. Tulos: Muutetut tiedot näkyvät näytöllä, niille varatuissa kentissä. Poikkeukset: Kaikkia tarvittavia tietoja ei ole annettu tai ne eivät ole sallituissa rajoissa. Kommentit: - TU5. Syöttötietojen tallentaminen Kuvaus: Tutkija antaa syöttötiedot komentoriviltä tai käyttöliittymässä ja tallentaa antamansa syöttötiedot tiedostoon mahdollissta uudelleenkäyttöä tai myöhempää tarkastelua varten. Tallennettuja tietoja voi käyttää uudelleen lataamalla tallennetut syöttötiedot käyttötapauksen TU2 mukaisesti. Syöte: Tallennettavan syöttötiedoston nimi ja paikka, mihin tallennetaan. Tulos: Tiedosto, joka on populaatiosimulaattorin ymmärtämässä muodossa. Tiedosto sisältää tiedot syötetyistä parametreista uudelleen käyttöä varten. Poikkeukset: Saman niminen tiedosto on jo olemassa. Kommentit: - TU6. Populaatiosimulaation käynnistäminen Kuvaus: Tutkija käynnistää populaatiosimulaation annetuilla parametreilla. Parametrit on annettu suoraan käyttötapauksen TU1 mukaan tai tiedostosta käyttötapauksien TU2 tai TU3 mukaan. Syöte: Käynnistyspyyntö, jolloin järjestelmä kysyy halutun tiedostonnimen ja hakemiston, jonne tulokset tallennetaan. Tulos: Loppupopulaatiota kuvaava tekstitiedosto, jossa perustajajäseniltä perityt markkerit on merkitty. Tuloste soveltuu myös populaatiosimulaattorin syötteeksi. Tulostiedosto tallennetaan haluttuun hakemistoon.
14 Poikkeukset: Annetussa hakemistossa on jo saman niminen tiedosto. Kommentit: Mahdollisuus suorittaa ainoastaan sukupuun luonti siten, että tuloksena on haluttu määrä sukupolvia ja näiden perimät. TU7. Populaatiosimulaation keskeyttäminen Kuvaus: Tutkija keskeyttää simulaation, esimerkiksi huomatessaan virheen antamissaan syöttötiedoissa. Toiminto pysäyttää turhaan tehtävän työn. Syöte: Keskeytyspyyntö. Tulos: Käynnissä ollut operaatio välitulokssineen häviää. Mikäli koko prosessia sukupuun luominen mukaanlukien iteroidaan, säilytetään saadut tulokset. Tällöin myös iteraatiota on mahdollista jatkaa keskeytetyn operaation alusta eteenpäin. Poikkeukset: - Kommentit: - 3.3 Järjestelmän ylläpitäjän käyttötapaukset Tässä luvussa käsitellään järjestelmän ylläpitoon liittyviä käyttötapauksia. Käyttötapaukset on esitetty graafisesti kuvassa 3. YL1. Asiakasohjelman konfigurointi Kuvaus: Ylläpitäjä konfiguroi asiakasohjelman käyttökuntoon. Syöte: Palvelimien IP-osoitteet ja portit. Tulos: Asiakasohjelmalla voidaan ottaa yhteys järjestelmään. Poikkeukset: - Kommentit: - YL2. Palvelimen käyttöoikeuksien hallinta Kuvaus: Ylläpitäjä konfiguroi palvelimeen tiedot asiakkaista, joilla on pääsy palveluun. Syöte: Asiakasohjelmien IP-osoitteet ja portit. Tulos: Asiakasohjelmalla, jonka tiedot on konfiguroitu, voidaan ottaa yhteyttä palvelimeen. Poikkeukset: - Kommentit: -
15 YL3. Järjestelmän asentaminen Kuvaus: Ylläpitäjä asentaa järjestelmän käyttöympäristöön. Syöte: Toteutettu järjestelmä sekä palvelimen asetukset. Tulos: Populaatiosimulaattoria voidaan ajaa paikallisesti koneelta, johon paketti asennettiin, tai käynnistää palvelin etäajoa varten. Poikkeukset: - Kommentit: - YL4. Palvelimen käynnistäminen Kuvaus: Ylläpitäjä käynnistää järjestelmän tarvitseman palvelimen. Syöte: Palvelinohjelma käynnistetään komentoriviltä. Tulos: Asiakasohjelma voi lähettää palvelupyyntöjä käynnistettyyn palvelimeen. Poikkeukset: Mikäli hakemistosta, josta palvelinta yritetään ajaa, on jo käynnistetty palvelin, palautetaan tapahtuneesta virheilmoitus eikä uutta palvelinta käynnistetä. Kommentit: Käynnistyessään palvelin tallentaa PID-numeronsa tiedostoon populous.pid. Uutta palvelinta ei voida käynnistää samasta hakemistosta mikäli kyseinen tiedosto on olemassa. Mikäli palvelin on kaatunut, tiedosto voidaan poistaa. YL5. Palvelimen sammuttaminen Kuvaus: Ylläpitäjä sammuttaa palvelimen. Syöte: Palvelinohjelma ajetaan komentoriviltä parametrilla shutdown tai palvelinprosessille annetaan INT- tai TERM-signaali. Tulos: - Poikkeukset: Mahdollisesti käynnissä oleva ajo keskeytetään ja jonossa olleet palvelupyynnöt poistetaan. Palvelupyynnöt lähettäneille asiakkasohjelmille ilmoitetaan keskeytyksestä. Kommentit: Palvelinohjelmaa ajamalla tehtävä sammuttaminen edellyttää, että sitä ajetaan samasta hakemistosta kuin mistä palvelin on käynnistetty ja että siellä on käynnistyksessä luotu populous.pid-tiedosto. YL6. Palvelimen uudelleenkäynnistäminen Kuvaus: Ylläpitäjä käynnistää palvelimen uudelleen.
Syöte: Palvelinohjelma ajetaan komentoriviltä parametrilla restart tai palvelinprosessille annetaan HUP-signaali. Tulos: Asiakasohjelma voi lähettää palvelupyyntöjä käynnistettyyn palvelimeen. Mahdolliset käynnissä olleet ajot on keskeytetty. Poikkeukset: Palvelin käynnistetään mikäli se ei ole valmiiksi käynnissä. Kommentit: Palvelinohjelmaa ajamalla tehtävä uudelleenkäynnistäminen edellyttää, että sitä ajetaan samasta hakemistosta kuin mistä palvelin on käynnistetty ja että siellä on käynnistyksessä luotu populous.pid-tiedosto. 16 4 Vaatimukset Tässä luvussa kuvataan toteutettavaan järjestelmään ja sen komponentteihin kahdistuvat vaatimukset, jotka perustuvat asiakkaan esittämään aineistoon, käyttötapauksiin tai järjestelmän aiempiin suunnitteluratkaisuihin. Vaatimukset on kategorioitu toiminnallisiin (T1-T14), laadullisiin (L1-L8) ja rajoittaviin (R1-R5) ja ne on luetteloitu taulukossa 4. Vaatimuksiin on sovellettu seuraavaa prioriteettiasteikkoa: 1. Välttämätön 2. Toivottu, tehdään jos on aikaa 3. Ei tärkeä Projektissa toteutetaan kaikki luokan 1 vaatimukset. Suunnittelussa otetaan huomioon myös alemman prioriteetin vaatimukset, mutta ne toteutetaan vain jos aikataulu antaa siihen mahdollisuuden. 4.1 Toiminnalliset vaatimukset Toiminnalliset vaatimukset määrittävät, mitä palveluja ohjelmiston on tarjottava ja miten se reagoi syötteisiin. Toiminnalliset vaatimukset kuvaavat ne toiminnot, joita ohjelmiston avulla pitää pystyä suorittamaan. Vaatimuksen prioriteettiluokka on annettu suluissa kuvauksen jälkeen. Populaatiosimulaattorille asetetut toiminnalliset vaatimukset ovat seuraavat: T1. Simulaatioprosessin yhtenäistäminen: Genped ja chrom on yhdistettävä yhdeksi uudeksi komponentiksi, jotta simulointiprosessi yksinkertaistuisi.(1)
17 Tunnus Nimi Esittäjä Luokka T1 Simulaatioprosessin yhtenäistäminen asiakas 1 T2 Esiprosessoinnin poisto asiakas 1 T3 Komentorivikäyttöliittymä asiakas 1 T4 Graafinen käyttöliittymä asiakas 1 T5 Toteutus englanninkielinen asiakas 1 T6 Asiakasohjelman käyttöliittymä asiakas 2 T7 Alipopulaatiot asiakas 1 T8 Sukupuun tulostus asiakas 1 T9 Sukupuun uudelleenkäyttö asiakas 1 T10 Tuloste syötteeksi asiakas 2 T11 Vaihtoehtoinen sukupuun tulostus asiakas 3 T12 Rinnakkaistaminen asiakas 2 T13 Siirtolaiset asiakas 3 T14 Asennuspaketti asiakas 2 L1 Suorituskyky asiakas 1 L2 Virheettömyys ryhmä 1 L3 Käytettävyys asiakas 1 L4 Vakaus ryhmä 1 L5 Turvallisuus ryhmä 1 L6 Dokumentointi ryhmä 1 L7 Unix-yhteensopivuus ryhmä 2 L8 Muistitilan käyttö ryhmä 2 R1 Linux-ympäristö asiakas 1 R2 Markertool formaatti asiakas 1 R3 Ennalleen jäävät osat asiakas 1 R4 Rinnakkaistaminen tausta-ajona asiakas 2 R5 Kohtuullinen verkon käyttö ryhmä 2 R5 Laitteistojen erilaisuus ryhmä 2 Taulukko 6: Vaatimukset.
T2. Esiprosessoinnin poisto: Nykyisessä toteutuksessa olevasta esiprosessoinnista halutaan päästä eroon.(1) T3. Komentorivikäyttöliittymä: Uutta komponenttia, sekä kahta säilytettävää on pystyttävä ajamaan myös erillisinä komentoriviltä.(1) T4. Graafinen käyttöliittymä: Ohjelmistoon on tuotettava nykyistä komentorivipohjaista intuitiivisempi käyttöliittymä.(1) T5. Toteutus englanninkielinen: Järjestelmän toteutus, varsinkin käyttöliittymien, tulee olla englanninkielisiä ulkolaisia tutkijoita varten.(2) T6. Asiakasohjelman käyttöliittymä: Ohjelmiston asiakasohjelmaan toteutetaan graafinen käyttöliittymä.(2) T7. Alipopulaatiot: Järjestelmässä on oltava mahdollisuus määritellä alkupopulaatiosta mielivaltaisen kokoisia alipopulaatioita. Jokaisesta sukupolvesta jälkeläiset muuttavat toiseen alipopulaatioon annetulla todennäköisyydellä. Alipopulaatioiden sisällä jäsenet pariutuvat kuten normaalissa isossa populaatiossa.(1) T8. Sukupuu tulostus: Simulaatiossa käytetty sukupuu on voitava tulostaa.(1) T9. Sukupuun uudelleenkäyttö: Koska jotkut simulaatiot voivat olla todella suurikokoisia, ohjelman on annettava mahdollisuus käyttää kerran luotua sukupuuta useampaan simulointiin. Rinnakkaistamisessa mielletään yhteen sukupuuhun liittyvä käsittely iteraatioineen atomiseksi operaatioksi.(1) T10. Tuloste syötteeksi: Otosta ohjelman tuottaman sukupuun viimeisestä sukupolvesta on voitava käyttää uuden ohjelma-ajon perustajapopulaationa. (2) T11. Vaihtoehtoinen sukupuun tulostus: Ohjelmalle on kehitettävä vaihtoehtoinen, intuitiivisempi sukupuun tulostusformaatti.(3) T12. Rinnakkaistaminen: Ohjelman nopeuttamiseksi sitä on voitava ajaa rinnakkain useassa laitteistossa.(2) T13. Siirtolaiset: Populaation ulkopuolelta tulevia yksilöitä, jotka tuovat uutta geeniperimää.(3) T14. Asennuspaketti: Asentamisen helpottamiseksi ohjelmalla olisi hyvä olla asennuspaketti.(2) 18 4.2 Laadulliset vaatimukset Laadulliset vaatimukset asettavat reunaehtoja toiminnallisille vaatimuksille. Ne liittyvät seuraaviin tekijöihin: ohjelmiston nopeuteen tai suorituskykyyn, käytettävyyteen, tietoturvaan, muistin tai levytilan käyttöön. Vaatimuksen prioriteettiluokka on annettu suluissa kuvauksen jälkeen. Populaatiosimulaattorille asetetut laadulliset vaatimukset ovat seuraavat:
L1. Suorituskyky: Nykyinen ohjelmisto on suhteellisen hidas, koska siinä on monta erillistä osasta yhdistetty skriptin avulla. Ohjelman kokonaissuorituskyvyn on uuden järjestelmän myötä parannuttava.(1) L2. Virheettömyys: Toteutettvan järjestelmän on toimittava virheettömästi.(1) L3. Käytettävyys: Ohjelman käyttö on eri komponenttien erilaisuudesta johtuen jokseenkin monimutkaista. Toteutettavan järjestelmän tarkoituksena on helpottaa ohjelman käyttöä.(1) L4. Vakaus: Ohjelman pitää kyetä toipumaan mahdollisista virheistä siististi.(1) L5. Turvallisuus: Ohjelma ei saa vaarantaa laitoksen tietoturvaa.(1) L6. Dokumentointi: Lopputuote on dokumentoitava selkeästi, jotta järjestelmän käyttö on yksiselitteistä.(1) ja siihen mahdollisesti tehtävät muutokset on helppo toteuttaa.(1) L7. Unix-yhteensopivuus: Ohjelmisto toteutetaan C++ ISO standardin mukaisesti, jolla varmistetaan ohjelman käännettävyys Unix-alustoilla.(2) L8. Muistitilan käyttö: Muistitilan käyttöön kiinnitetään huomiota ohjelmistoa toteutettaessa.(2) 19 4.3 Rajoitteet suunnittelulle Suunnittelulle on asetettu seuraavanlaisia rajoitteita:(rajoitteen prioriteettiluokka on suluissa kuvauksen jälkeen.) R1. Linux-ympäristö: Ohjelman on toimittava laitoksen linux-ympäristössä.(1) R2. Markertool formaatti: Uuden ohjelmapalikan tulosteen on oltava markertoolin ymmärtämässä muodossa. Toisaalta myös markertoolin tulosteen on sovelluttava uuden ohjelman syötteeksi.(1) R3. Ennalleen jäävät osat: Simco ja markertool jäävät ennalleen, niihin ei tehdä muutoksia.(1) R4. Rinnakkaistaminen tausta-ajona: Jos rinnakkaistaminen ehditään toteuttaa, ohjelman tulee toimia muissa kuin varsinaisen käyttäjän koneessa matalaprioriteettisenä tausta-ajona.(2) R5. Kohtuullinen verkon käyttö: Jos ohjelmaa ajetaan verkon yli, verkossa liikkuvan datan määrä on pidettävä riittävän vähäisenä, jotta verkko ei mene tukkoon.(2) R6. Laitteistojen erilaisuus: Ohjelman on otettava huomioon, että joissain laitteistoissa muistin tai levytilan määrä voi olla vähäisempi ja reagoitava sellaisessa tilanteessa asianmukaisella tavalla.(2)
5 Toteutettava järjestelmä 20 Tässä luvussa kuvataan toteutettava järjestelmää. Järjestelmän liittyminen nykyiseen järjestelmään on esitetty kuvassa 4. 5.1 Rakenne Järjestelmän rakennetta on kuvattu kuvissa 4 ja 5. Seuraavissa aliluvuissa kuvataan tarkemmin kahta osakompomponenttia. Kuva 4: Toteutettava järjestelmä. 5.1.1 Populous-palvelinkomponentti Populous järjestelmän palvelinkomponentin tehtävänä on luoda sukupuu, lisätä siihen kromosomien rekombinaatiot ja suorittaa koko simulointiketju loppuun käyttäen alkuperäisiä simco- ja markertool-komponentteja. Se myös kokoaa tuloksena saadut tiedostot haluttuun hakemistoon. Palvelin ohjelmoidaan C++:lla.
21 Kuva 5: Populaatiosimulaattorin kokonaiskuva. Syötteet: Perustajasukupolven koko (kromosomeina) Viimeisen jälkeläissukupolven koko (kromosomeina) Sukupolvien lukumäärä Simulaation toistojen lukumäärä Alipopulaatioiden määrä Alipopulaatioiden koot Siirtymistodennäköisyydet alipopulaatioiden välillä Halutaanko pelkkä sukupuun muodostaminen
22 Tulosteet: Sukupolvet, joiden yhteiset kromosomin osat halutaan määrittää Hakemistopolku lopputulosten tallentamiseen Tiedostonimi parametrien tallennusta varten Chromin, simcon ja markertoolin parametrit kuten luvussa kaksi on kerrottu, seuraavilla rajoituksilla: 1. Päällekkäiset asetukset syötetään vain kerran ja käytetään samaa asetusta kaikissa sitä käyttävissä ohjelmakomponenteissa 2. Markkerialueen alku- ja loppukohta jätetään pois (markertool) 3. Trioja käytettäessä vanhempien sukupolvi ja sen koko haetaan automaattisesti (markertool) Sukupuu rekombinaatioineen markertoolin ymmärtämässä muodossa sukupuu uudessa formaatissa simcon ja markertoolin tulosteet Syöttö ja tulostustietojen rakenne: Id Alkupiste Pid 16973 10001 171 Taulukko 7: Populouksen tulosteformaatti markertoolille Taulukon 7 selitys: Id: Yksilön tunnus Alkupiste: Seuraavan kromosomin osan alkupiste(emäsparin indeksi) Pid: Id perustajalle, jolta kromosomin osa on peräisin Id Isän id Äidin id 252 138 171 Taulukon 8 selitys: Id: Yksilön tunnus Isän id: Yksilön isän tunnus Äidin id: Yksilön äidin tunnus Taulukko 8: Populouksen sukupuuformaatti
23 5.1.2 Populous-asiakaskomponentti Populous-asiakaskomponentin tehtävä on ohjata ohjelman rinnakkaista suoritusta ja koota ajojen tulokset eri koneilta haluttuun paikkaan. Asiakaskomponentti ohjelmoidaan Javalla. Syötteet: Tulosteet: Samat kuin palvelinkomponentilla Käytettävien laitteistojen IP-osoitteet. Näyttää käyttäjälle tietoa prosessien statuksesta ja tuloksesta. 5.2 Käyttöliittymä Kaikkiaan toteutetaan kolme erilaista käyttöliittymää. Palvelimeen tulee curses-pohjainen tekstikäyttöliittymä, Javalla toteutettavaan asiakasohjelmaan tulee graafinen Swing -käyttöliittymä ja näiden lisäksi palvelimeen sisällytetään mahdollisuus komentorivikäynnistykseen. Komentorivikäyttöliittymällä voidaan käyttää ohjelmiston palvelin- komponenttia suoraan komentoriviltä. Tällöin riittää yksi komento, joka ajaa koko simulaation läpi. Nykyisen järjestelmän tarvitsemia skriptejä ei tule tarvitsemaan. Ohjelmiston parametrit syötetään joko määrittelämällä ohjelman parametriksi syötetiedosto tai antamalla parametrit käsin. Asiakasohjelman tarkoituksena on ohjata ja hallita yhdessä tai useammassa palvelimessa ajettavia simulaatioita ja koota tulokset asiakasohjelman koneelle. Asiakasohjelma toteutetaan Javalla (alustariippumattomuus) Swing-käyttöliittymällä. Asiakasohjelmassa on kentät käytössä olevien palvelinten verkko-osoitteiden syöttämiseen. Käytettävät palvelimet valitaan graafisesti listasta, ja jokaiselle palvelimelle voidaan määritellä erikseen sille annettava simulaatioprosessi. Palvelimille välitetyt simulaation parametrit syötetään intuitiivisin valinta-, lista- ja vetovalikko-komponentein. Palvelinten simulaatioiden tilasta näytetään tietoa, sekä myös simulaatioiden valmistumisesta. Palvelimeen toteutetaan komentorivikäyttöliittymän lisäksi tekstipohjainen curses käyttöliittymä, joka pohjautuu teksti-kenttiin ja valintalistoihin. Curses-versio käyttöliittymästä mukailee asiakasohjelman käyttöliittymää, mutta ilman rinnakkaistamista. Käyttöliittymät kuvataan tarkemmin myöhemmin tehtävässä suunnitteludokumentissa. 5.3 Ulkoiset liittymät Toteutettavan sovelluksen tulostus toimii syötteenä nykyisen järjestelmän sovellukselle markertool. Uudessa järjestelmässä on myös voitava asettaa alkuarvot aikaisemman ajon tuloksesta, eli sovelluksen on ymmärrettävä myös markertool-sovelluksen tulostusmuoto.
6 Rajoitteet suunnittelulle ja toteutukselle 24 Toteutettavan ohjelman on toimittava tietojenkäsittelytieteen laitoksen linux-ympäristössä. Järjestelmä suunnitellaan nimenomaan tietojenkäsittelytieteen laitoksella toimivan HIIT -perustutkimusyksikön käyttöön, joten se suunnitellaan toimimaan laitoksen käyttöympäristössä. Uuden populous -komponentin tulosteen on oltava markertoolin ymmärtämässä muodossa, jotta näitä voidaan käyttää yhdessä. Toisaalta myös markertoolin tulosteen on sovelluttava uuden ohjelman syötteeksi. Tällä mahdollistetaan simulaation jatkaminen ottamalla tuloksesta uusi otos seuraavan ajon perustajajäseniksi. Simco ja markertool jäävät ennalleen, niihin ei tehdä muutoksia. Tarkoituksena on toteuttaa mahdollisimman yhtenäinen järjestelmä, jonka osana on uusi populous -ohjelma ja nykyisin käytössä olevasta järjestelmästä osat simco ja markertool, jotka on esitelty tämän dokumentin luvuissa 2.2.3. (simco) ja 2.2.4. (markertool). 7 Vaatimusten toteutuminen Luvussa käsitellään lyhyesti asiakkaan vaatimusten toteutuminen ohjelmistossa. 7.1 Validointi Vaatimukset on kartoitettu asiakastapaamisissa ja asiakkaan tuottaman aineiston pohjalta ja lueteltu tässä dokumentissa. Dokumentissa on kerrottu myös miten vaatimuksiin on tarkoitus vastata. Kartoituksen kattavuus varmistetaan hyväksyttämällä tämä määrittelydokumentti asiakkaalla. Vaatimusten toteutumista valmiissa ohjelmistossa valvotaan testausvaiheessa. 7.2 Testaus Ohjelmiston testaus jakaantuu kolmeen osaan: yksikkö-, integraatio- ja järjestelmätestaukseen. Yksikkötestaus aloitetaan toteutusvaiheessa, muut osiot suoritetaan toteutusvaiheen lopuksi ja sen jälkeen. Yksikkötestauksessa testataan yksittäiset komponentit niiden valmistumisen yhteydessä. Integraatiotestauksessa testataan yksikkötestattuja osien ja osajärjestelmien yhteentoimivuutta sekä rajapintoja. Järjestelmätestaus suoritetaan valmiilla ohjelmistolla, jonka kokonaistoiminta varmennetaan testi- ja käyttötapauksin. Testausproseduuri etenee alhaalta ylös rakentaen järjestelmää testatuiden osien ja alikokonaisuuksien päälle. Testaus määritellään yksityiskohtaisesti testaussuunnitelmassa.
25 7.3 Ylläpito Projektiryhmä ei vastaa työn luovutuksen ja asennuksen jälkeisestä ohjelmiston ylläpidosta. Järjestelmän mahdolliset tulevat ominaisuudet jäävät tulevien projektien huoleksi.