VAATIMUSMÄÄRITTELY PROJEKTITYÖ Tik-76.115
SISÄLLYSLUETTELO Sisällysluettelo... 2 Versiohistoria... 3 1. JOHDANTO... 4 1.1 Algoritmi... 4 1.2 Graafi... 4 1.3 Nauty... 5 1.4 Mermaid... 5 2. YLEISKUVAUS... 6 3. TOIMINNOT ja VAATIMUKSET... 7 3.1 Painottamattomien graafien vaatimukset... 7 3.1.1 Painottamattoman maksimiklikin koko... 7 3.1.2 Yhden maksimiklikin laskeminen... 7 3.1.3 Kaikkien maksimiklikkien laskeminen... 7 3.1.4 Yhden klikin laskeminen kokoa S... 8 3.1.5 Kaikkien klikkien laskeminen kokoa S... 8 3.1.6 Yhden klikin laskeminen vähintään kokoa S... 8 3.1.7 Kaikkien klikkien laskeminen vähintään kokoa S... 8 3.1.8 Solmujen järjestäminen... 8 3.1.9 Ensisijaiset "olisi hienoa" -ominaisuudet... 8 3.1.9.1 Klikkien laskenta annetulla solmujen määrällä... 8 3.2 Painotettujen graafien vaatimukset... 9 3.2.1 Painotetun maksimiklikin koko... 9 3.2.2 Yhden maksimiklikin laskeminen... 9 3.2.3 Kaikkien maksimiklikkien laskeminen... 9 3.2.4 Yhden klikin laskeminen kokoa S... 9 3.2.5 Kaikkien klikkien laskeminen kokoa S... 9 3.2.6 Yhden klikin laskeminen vähintään kokoa S... 9 3.2.7 Kaikkien klikkien laskeminen vähintään kokoa S... 9 3.2.8 Eri syöteformaattien lukeminen... 9 3.2.9 Solmujen järjestäminen... 10 4. MUUT OMINAISUUDET... 10 4.1 Tehokkuus ja käytettävyys... 10 4.2 Kieli ja kieliasu... 10 4.3 Siirrettävyys... 10 4.4 Käyttökirja... 10 4.5 Testaaminen... 10 4.6 Jatkokehitys... 10 Liite: Use Case kuva... 11
VERSIOHISTORIA Versio Päivämäärä Laatija Kuvaus 1.0-2 22.10.2000 Dufva Proposal 1.1-0 21.11.2000 Dufva First draft 1.1-2 12.12.2000 Dufva Second draft 1.1-3 01.04.2001 Dufva Third draft 1.1-4 19.04.2001 Dufva Fourth draft 1.2 20.04.2001 Dufva Edited according to comments received from Patric Östergård and Harri Haanpää
VAATIMUSMÄÄRITTELY 4 (11) 1. JOHDANTO Tässä dokumentissa kuvataan ohjelman asiakkaan vaatimuksia. Dokumentti koostuu johdannosta, jonka alaotsikoissa on kerrottu termeistä, jotka saattavat olla ennestään vieraita. Yleiskuvauksessa on mainittu toteutustyökalut, liittymät muihin ohjelmiin ja käyttöympäristön. Toiminnot luvussa kuvataan järjestelmältä vaadittavat ominaisuudet yleisellä tasolla. Neljännessä luvussa mainitaan muista ohjelman ominaisuuksista kuten suorituskykytoiveista ja käytettävyydestä. Liitteenä on Mermaid -ohjelmalla muodostettu UML -kuvaus ohjelman vaatimuksista. Se että käytetäänkö UML -kuvausta toiminnallisessa määrittelyssä on epävarmaa, koska vaatimukset ovat tyypiltään sellaisia, ettei UML anna toiminnalliseen määrittelyyn suurta informatiivista hyötyä. Tavoitteena -ohjelmassa on muodostaa algoritmille toimiva ympäristö, jolloin algoritmin käyttö helpottuu ja algoritmille voidaan luoda uusia käyttötapoja. Ohjelmasta on olemassa jo alustava prototyyppi, jossa on jo jotain ominaisuuksia painavimman klikin löytämiseksi. Sen voi ladata osoitteesta: http://www.tcs.hut.fi/ ~ pat/wclique.html 1.1 Algoritmi Algoritmi jonka ympärille ohjelma rakennetaan on julkinen ja algoritmin toimintaa on kuvattu Internetissä seuraavissa dokumenteissa: "A Fast Algorithm for the Maximum Clique Problem" http://www.tcs.hut.fi/ ~ pat/paper1.ps "A New Algorithm for the Maximum-Weight Clique Problem" http://www.tcs.hut.fi/ ~ pat/paper2.ps Algoritmilla voidaan ratkaista olemassa olevasta graafista asioita joista ollaan kiinnostuneita. Luvussa 1.2 on lyhyt selvitys siitä mikä on graafi. Algoritmi on muodostettu pseudokielellä ja yksi projektin kohteista on muuttaa se C -kielellä toimivaksi. 1.2 Graafi Useissa yhteyksissä tarkastellaan joukkoa solmuja tai tiloja, joista joko on tai ei ole mahdollista siirtyä välittömästi toinen toisiinsa. Tyypillisiä esimerkkejä tällaisista ovat kartta, johon on merkitty kaupunkeja, sekä näiden väliset suorat liikenneyhteydet, tietokoneohjelman kulkua kuvaava vuokaavio ja sukupuut. Graafi, eli verkko G = ( V, E ) muodostuu äärellisistä joukoista V ja E, joista V on ns. solmujen joukko (solmuista
VAATIMUSMÄÄRITTELY 5 (11) käytetään myös joissain yhteyksissä nimityksiä kärki tai piste), ja E on sivujen joukko (käytössä myös nimitykset kaari ja haara). Jotta edellinen lause hiukan selkenisi niin Kuva 1 on esitetty kaksi graafia. A-graafi on painottamaton (unweighted) ja b-graafi on painotettu (weighted), jossa solmun paino on sulkujen sisällä. Klikki tarkoittaa yhteyttä usean solmun välillä. ohjelma ei ota kantaa, kuten Nauty ohjelma, siihen onko graafi suunnattu vai suuntaamaton. A-kohdassa maksimiklikin koko on kuusi, b-kohdan graafin maksimiklikin koko on 26. 1 1(1) 2 3 2(8) 3(2) 4 5 4(6) 5(4) 6 Graafi a 6(5) Graafi b Kuva 1. Kaksi graafia. 1.3 Nauty Nauty on C kielellä tehty ohjelma jolla voidaan muodostaa automorfisia ryhmiä sekä graafeille että suunnatuille graafeille. Se myös pystyy muodostamaan kanonisia nimiöintejä. Nauty on vapaasti tieteellisissä tarkoituksissa käytettävä ohjelma jonka ohjelmakoodi on julkinen. Nauty ohjelma voidaan ladata osoitteesta: http://cs.anu.edu.au:80/people/bdm/nauty/ 1.4 Mermaid Mermaid on Nokialla käytetty ohjelma jolla voidaan luoda UML kuvaus ohjelmalle (ks. liitteenä oleva Mermaidilla tehty UML kuvaus vaatimuksista). Ideana on että esim. yhtä vaatimus soikiota klikattaessa, päästään tarkempiin määrittelyihin, jotka kuuluisivat toiminnalliseen määrittelyyn.
VAATIMUSMÄÄRITTELY 6 (11) 2. YLEISKUVAUS Projektityön aihe on ohjelma, josta tulee tieteellisessä käytössä vapaasti käytettävä, eli lähdekoodi on julkinen. Ohjelmatyö tehdään Patric Östergårdille, jonka toimittamassa PostScript dokumentissa:, Patric Östergård, September 28, 2000 on määritelty toivomuksia ohjelmasta. Projektityön koodi tehdään Ansi-C muodossa jolloin se on käyttöjärjestelmästä riippumaton. Ohjelmaa käytetään pääasiassa Unix/Linux käyttöjärjestelmässä jolloin pääosin ohjelman testaus tehdään Nokian tietokoneissa, joissa on Linux käyttöjärjestelmä. Tarvittaessa TKK:n Tietojenkäsittelyteorianlaboratorio on myös käytettävissä. Lopuksi pyritään varmistamaan ohjelman toiminta myös Windows pohjaisissa käyttöjärjestelmissä. Syöte jota en annetaan tulee olla ascii- tai binäärimuotoista, komentoriviparametrit ovat asciita. Tuloste jota sta saadaan on asciimuotoista. Kuva 2 on esitetty syöte- ja tulosteformaatit esimerkkigraafista. 4(3) Esimerkkigraafi 1(1) 2(8) 6(6) 8(5) 3(2) 7(4) 5(3) Syöteformaatti (Dimacsin ascii) c input_jd_w c weighted graph p clq 8 20 e 1 2 e 1 3 e 1 6 e 1 7 e 1 8 e 2 3 e 2 4 e 2 5 e 2 6 e 2 7 e 2 8 e 3 5 e 3 6 e 3 7 e 3 8 e 5 6 e 5 7 e 6 7 e 6 8 e 7 8 n 1 1 n 2 8 n 3 2 n 4 3 n 5 3 n 6 6 n 7 4 n 8 5 c input_jd_uw c unweighted graph p clq 8 20 e 1 2 e 1 3 e 1 6 e 1 7 e 1 8 e 2 3 e 2 4 e 2 5 e 2 6 e 2 7 e 2 8 e 3 5 e 3 6 e 3 7 e 3 8 e 5 6 e 5 7 e 6 7 e 6 8 e 7 8 n 1 1 n 2 1 n 3 1 n 4 1 n 5 1 n 6 1 n 7 1 n 8 1 Tulosteformaatti 3 5 6 7 3 6 7 8 2 3 5 6 2 3 5 7 2 3 6 7 2 3 6 8 2 3 7 8 2 5 6 7 2 6 7 8 1 2 3 6 1 2 3 7 1 2 3 8 1 2 6 7 1 2 6 8 1 2 7 8 1 3 6 7 1 3 6 8 1 3 7 8 1 6 7 8 Kuva 2. n syöte- ja tuloste formaatit. Projektityön päätarkoitus ei ole kehittää itse algoritmia. Jos kuitenkin algoritmi tarvitsee pientä "viilaamista", algoritmin muodostamisessa pseudokielestä syntyy ongelmia tai algoritmi tarvitsee jatkokehitystä, niin yhteyshenkilönä asiakkaan puolelta toimii Harri Haanpää.
VAATIMUSMÄÄRITTELY 7 (11) 3. TOIMINNOT JA VAATIMUKSET Ensisijainen päämäärä tässä projektissa on muodostaa toimiva käyttöympäristö algoritmille, jota voidaan kutsua toisesta C kielellä tehdystä ohjelmasta komennolla wclique. Tämä tapahtuu tuottamalla aliohjelmakirjasto, jolla voidaan etsiä klikkejä graafeista. Toissijainen tarkoitus on tuottaa aliohjelmakirjastoon perustuva komentoriviltä ajettava ohjelma, joka ratkoo samoja ongelmia. Ohjelman tulee toimia Unix/Linux käyttöjärjestelmässä yhdessä Nauty ohjelman kanssa ilman ongelmia. Alla on esimerkki C kielen rutiini, eli kuinka ohjelmaa voidaan kutsua. #include "wclique.h"... main() {... /* define graph */... wclique(...); /* process results */... } n tulee ainakin sisältää ensisijaiset vaatimukset, jotka käsittelevät painottamattomia ja painotettuja graafeja (kappaleet 3.1.1-3.1.7 ja 3.2.1-3.2.7). Kuvassa 1 on esitetty mitä tarkoitetaan painotetulla ja painottamattomalla graafilla. 3.1 Painottamattomien graafien vaatimukset 3.1.1 Painottamattoman maksimiklikin koko Haluttaessa tietää graafin ominaisuuksista maksimiklikin koko, ohjelman tulee hakea se. tulostaa vastauksena solmujen määrän. 3.1.2 Yhden maksimiklikin laskeminen -ohjelman tulee laskea pyydettäessä yksi maksimiklikki. 3.1.3 Kaikkien maksimiklikkien laskeminen -ohjelman tulee laskea pyydettäessä kaikki maksimiklikit.
VAATIMUSMÄÄRITTELY 8 (11) 3.1.4 Yhden klikin laskeminen kokoa S n tulee hakea yhden luokkaa S olevan klikin solmupisteet. 3.1.5 Kaikkien klikkien laskeminen kokoa S n tulee hakea kaikkien niiden klikkien solmupisteet, jotka ovat kooltaan luokkaa S. 3.1.6 Yhden klikin laskeminen vähintään kokoa S n tulee hakea solmupisteet yhdestä klikistä joka on vähintään luokkaa S. 3.1.7 Kaikkien klikkien laskeminen vähintään kokoa S n tulee hakea kaikkien niiden klikkien solmupisteet, jotka ovat kooltaan vähintään luokkaa S. Kohdissa 3.1.1-3.1.7 mainituista kaikkien klikkien laskemisesta: Jos halutaan vain yksi tietynlainen klikki, ohjelma tulostaa sen. Jos pyydetään ohjelmaa hakemaan kaikki tiettyä tyyppiä olevat klikit ei tällainen lähestymistapa välttämättä ole mahdollinen (niitä voi olla miljoonittain). Silloin ohjelma kutsuu jokaisen löydetyn klikin kohdalla funktion. Tämän funktion nimi on wclique- rutiinin parametreina ja käyttäjä luo itse kyseisen funktion. Vrt. qsort() lajittelurutiini C-kielessä missä funktio, joka vertaa kahta alkiota, on annettu parametrina. 3.1.8 Solmujen järjestäminen n pitää pystyä järjestämään uudelleen graafin solmut. 3.1.9 Ensisijaiset "olisi hienoa" -ominaisuudet 3.1.9.1 Klikkien laskenta annetulla solmujen määrällä n tulisi laskea yksi tai kaikki klikit annetulla solmujen määrällä, tietyin määrävälein, esimerkiksi: 0-1000: 2 solmua 1001-1939: 3 solmua Tämä vaatimus on ns. "Olisi hienoa" -ominaisuus ja ei kuulu ehdottomasti vaadittuihin ohjelman ominaisuuksiin.
VAATIMUSMÄÄRITTELY 9 (11) 3.2 Painotettujen graafien vaatimukset 3.2.1 Painotetun maksimiklikin koko Haluttaessa tietää graafin ominaisuuksista maksimiklikin koko, ohjelman tulee hakea se. Tulosteena palauttaa maksimiklikin painoarvon. 3.2.2 Yhden maksimiklikin laskeminen -ohjelman tulee laskea pyydettäessä yksi maksimiklikki. 3.2.3 Kaikkien maksimiklikkien laskeminen -ohjelman tulee laskea pyydettäessä kaikki maksimiklikit. 3.2.4 Yhden klikin laskeminen kokoa S n tulee hakea yhden luokkaa S olevan klikin solmupisteet. 3.2.5 Kaikkien klikkien laskeminen kokoa S n tulee hakea kaikkien niiden klikkien solmupisteet, jotka ovat kooltaan luokkaa S. 3.2.6 Yhden klikin laskeminen vähintään kokoa S n tulee hakea niiden kaikkien klikkien määrä, jotka ovat kooltaan luokkaa S tai enemmän. 3.2.7 Kaikkien klikkien laskeminen vähintään kokoa S n tulee hakea kaikkien niiden klikkien solmupisteet, jotka ovat kooltaan vähintään luokkaa S. 3.2.8 Eri syöteformaattien lukeminen Ohjelman tulee pystyä lukemaan dimacsin ascii ja binaari syöteformaatteja. Syöte ja tulostetiedoston ulkoasu on esitetty kuvassa 2. Tarkempaa tietoa syötteen sisällöstä saa osoitteesta: http://www.tcs.hut.fi/ ~ pat/wclique.html
VAATIMUSMÄÄRITTELY 10 (11) 3.2.9 Solmujen järjestäminen n pitää pystyä järjestämään uudelleen graafin solmut. 4. MUUT OMINAISUUDET 4.1 Tehokkuus ja käytettävyys Vaatimus n tehokkuus ominaisuuksista on, että ohjelma toimii vähintään yhtä nopeasti kuin Patric Östergårdin n protoversio. Ohjelman käytettävyys tulisi olla samalla tasolla kuin Brendan McKayn Nauty ohjelmassa. 4.2 Kieli ja kieliasu Ohjelmakoodin kommentointi tehdään englanniksi mahdollisimman selkeästi jotta jatkokehitys olisi helppoa ja koodi ymmärrettävää. 4.3 Siirrettävyys Tuotteen on oltava arkkitehtuuri riippumaton ja vaivattomasti käännettävissä ANSI C yhteensopivalla kääntäjällä erilaisissa Unix-koneissa ja mielellään myös Windows-koneissa. 4.4 Käyttökirja Käyttökirja toimitetaan englannin kielellä LaTex formaatissa. Käyttökäsikirjassa on selkeästi ja kattavasti dokumentoitava, miten tuotetta käytetään aliohjelmakirjastona ja miten sitä käytetään komentoriviltä. 4.5 Testaaminen Tuote tulee testata huolellisesti. Testaus tulee suorittaa tieteellisesti oikealla tavalla, jotta tulokset ovat luotettavia. 4.6 Jatkokehitys Tehdyt ratkaisut on dokumentoitava niin hyvin että jatkokehittelijä voi pelkän dokumentaation perusteella suunnitella, miten toteuttaa haluamansa muutokset.
VAATIMUSMÄÄRITTELY 11 (11) LIITE: USE CASE KUVA Use case kuva ohjelman vaatimuksista.