Muutettu 23.2.1998
Antti Koivisto
Hytky (Helsingin yliopiston tietojärjestelmien kehitysympäristö) on Tietojenkäsittelytieteen laitoksella käytössä oleva ohjelmistotuotannon apuvälineitä sisältävä ohjelmistokokonaisuus, joka on ensisijaisesti tarkoitettu ohjelmistotuotannon menetelmien opetuksen tueksi. Hytky-kokonaisuuteen sisältyvät MS-DOS-ympäristössä toimivat ohjelmat, joilla tuotetaan mm. tietovuokaavioita ja käsitemalleja. Tämän lisäksi käsitemalleja voidaan muokata edelleen relaatiotietokannan määrittelyiksi. Hytkyyn kuuluu myös relaatiotietokantojen visualisoija, joka muodostaa graafisen kaavioesityksen lukemistaan SQL-tietokannanmäärittelylauseista.
Kehitettävä relaatiotietokantojen visualisoija vastaa toiminnoiltaan pääosin Hytkyn visualisoijaa. Hytky on toteutettu DOS-ympäristöön, eikä se kaikin osin toimi kovin hyvin moderneissa tietokoneissa. Ongelmia on esimerkiksi hiiren käsittelyssä. Hytkyn tuottamat kaaviot ovat joissain tilanteissa puuttellisia. Se ei myöskään osaa lukea kannanpäivityslauseita. Näistä Hytkyä vaivaavista ongelmista ja rajoitteista päästään kehitettävän järjestelmän myötä eroon.
Tarkoituksena on tuottaa graafisessa ympäristössä toimiva Hytkyn visualisoijan kaltainen järjestelmä. Kehitettävässä järjestelmässä pyritään ottamaan huomioon ja korjaamaan Hytkyssä olevat puutteet.
Kehitettävä järjestelmä esittää SQL-kielellä määritellyt taulut ja niiden väliset suhteet graafisessa muodossa. Järjestelmään luetuista SQL-lauseista jäsennetään kannan kuvaus, joka esitetään kaaviokuvana. Kaavion taulut sijoitellaan automaattisesti, mutta käyttäjä voi muokata halutessaan kuvaesitystä. Kustakin kaaviokuvan taulusta esitetään kaikki attribuutit ja avainsarakkeet, viiteavaimet esitetään taulujen välisinä viivoina. Kuvaesitys voidaan tallentaa levylle, ja se voidaan myös tulostaa.
Järjestelmä tulkitsee sekä SQL 92 -standardin [ISO92] että ainakin Oraclen murteen mukaisia relaatiotietokannan määrityslauseita.
Kaavioiden automaattinen sijoittelu toteutaan käyttäen STT-algoritmia [Kär92] tai vastaavaa. Sijoittelu toteutetaan siten, että se ottaa huomioon taulujen koon ja mahdolliset muut vaikuttavat tekijät. Sijoitteluarlgoritmi pyritään pitämään erossa muusta ohjelmakoodista siten, että sen uudelleenkäyttö muissa sovelluksissa onnistuu helposti.
Järjestelmä toimii Java 1.1 -yhteensopivassa virtuaalikoneessa. Ensisijainen kohdeympäristö on Win32-versio JDK 1.1.5:stä, mutta ohjelman tulee toimia kaikissa ympäristöissä, joille riittäväntasoinen virtuaalikone on saatavilla. Järjestelmää ei ole tarkoitettu käytettäväksi WWW-selaimesta käsin, se toimii itsenäisenä sovelluksena.
Kehitettävän järjestelmän käyttäjät ovat pääasiassa opiskelijoita, joten järjestelmää käytetään ainakin Informaatiojärjestelmien harjoitustyön yhteydessä. Periaatteessa järjestelmää voi käyttää kuka tahansa, joka tarvitsee kuvan tietokannan taulujen välisistä suhteista.
Tässä luvussa esitellään ohjelman toiminta käyttötapausten avulla. Käyttötapaukset on jaettu editorin käyttötapauksiin, joissa esitellään kaavioiden muokkaukseen liittyvät toiminnot, tiedosto-operaatioihin, joissa esitellään tiedostojen käsittely oheistoimintoineen, ja tulostukseen, jossa esitellään tulostusalueen valintaan ja tulostuksen käynnistämiseen liittyvät toiminnot.
Kaavioeditorissa katsellaan ja muokataan valitussa ikkunassa olevaa relaatiotietokantakaaviota. Editorissa voi olla useita ikkunoita auki samanaikaisesti. Sama kaavio voi näkyä useassa ikkunassa.
Visualisoitavan tietokannan tauluille muodostetaan graafinen esitys. Käyttäjä voi järjestellä taulut näytölle haluamallaan tavalla.
Valinta tapahtuu siirtämällä kohdistin valittavan taulun päälle ja painamalla hiiren valintanäppäintä.
Uuden taulun valinta purkaa edellisen valinnan. Kun osoitetaan kohtaa, jossa ei ole valittavaa taulua, edellinen valinta purkautuu.
Uusia tauluja voidaan lisätä valintaan poistamatta aiemmin valittuja tauluja tekemällä uuden valinta CTRL-näppäin pohjassa.
Joukko tauluja voidaan valita kerralla lassotoiminnolla.
Valintajoukkoon liitetään kaikki kaavion taulut.
Valintajoukossa olevat taulut siirrettään uuteen paikkaan näytöllä.
Taulusta esitetään sarakkeiden nimet, pituudet ja tietotyypit omassa ikkunassaan.
Viiteviivat ovat taulujen välisten viiteavainyhteyksien graafisia esityksiä.
Viiteviivaan lisätään käännepiste.
Viiteviivasta poistetaan käännepiste.
Käännepiste siirretään uuteen paikkaan näytöllä. Viivat, jotka kytkeytyvät siirrettävään käännepisteeseen, seuraavat mukana.
Viiteviivasta poistetaan kaikki käännepisteet.
Ikkuna-ala keskitetään käyttäjän valitseman taulun ympärille.
Näkymä ikkunassa olevaan kaavioon siirretään lähemmäksi tai kauemmaksi. Kun näkymää siirretään kauemmaksi, näkyy kaaviosta suurempi osa kerrallaan.
Näkymä keskitetään valittujen taulujen kohdalle.
Taulu haetaan näkymään nimen perusteella. Haussa voidaan käyttää jokerimerkkejä.
Peruuttaa edellisen käyttäjän suorittaman toimenpiteen. Seuraavat undo-komennot peruuttavat aikaisempia toimenpiteitä.
Edeltävällä undo:lla peruutettu toimenpide palautetaan. Seuraavat redo-komennot palauttavat aikaisempiin undo-komentoihin liittyviä toimenpiteitä. Redo voidaan suorittaa vain undo- tai redo-komentojen jälkeen.
Järjestelmä käsittelee neljän tyyppisiä tiedostoja: omaa sisäistä tallennusformaattiaan (luku/kirjoitus), SQL-lausetiedostoja (luku/mahdollisesti kirjoitus), kuvatiedostoja (kirjoitus) ja HTML-avustustiedostoja (luku).
Avataan uusi piirtoalue. Kaavionmäärityslauseet luetaan käyttäjän valitsemasta SQL- komentotiedostosta. Järjetelmä muodostaa SQL-lauseiden graafisen esityksen ja sijoittelee kaaviokuvan kohteet automaattisesti. Virheellisen tiedoston latauksessa vialliset kohdat voidaan ohittaa, jotta varsinaiset määrityslauseet saataisiin ladatuksi. Virheistä annetaan ilmoitus käyttäjälle.
Käyttäjä valitsee kaaviotiedoston, josta kaavio ladataan. Kaavio piirretään näytölle päällimmäiseksi avautuvaan uuteen ikkunaan.
Jos kaavioon on tehty muutoksia viimeisimmän tallennuksen jälkeen, varmistetaan käyttäjältä haluaako hän tallentaa muutokset ennen kaavion sulkemista.
Jos kaaviolla ei ole vielä tiedostonimeä, toiminta on sama kuin käyttötapauksessa Kaavion tallennus nimellä. Muuten kaavio tallennetaan sillä tiedostonimellä, millä sitä viimeksi käsiteltiin. Tallennus tapahtuu käyttäen ohjelman omaa tiedostoformaattia.
Kaavio tallennetaan käyttäjän nimeämään tiedostoon käyttäen ohjelman omaa tiedostoformaattia.
Kaavionmäärityslauseet luetaan käyttäjän valitsemasta SQL- komentotiedostosta. Uudet tiedot lisätään valittuun kaavioon. Lisätyt tiedot näkyvät kaaviossa erivärisenä, kunnes käyttäjä itse koskee niihin. Epäyhteensopivan tiedoston latauksessa vialliset kohdat voidaan ohittaa, jotta varsinaiset määrityslauseet saataisiin ladatuksi.
Valittu kaavio tallennetaan käyttäjän nimeämään tiedostoon jossain sopivassa yleisessä kuvamuodossa.
Valitusta kaaviosta tallennetaan SQL-92 -standardin [ISO92] mukaiset relaatioiden luontikomennot tiedostoon.
Käyttäjä saa selattavakseen järjestelmän käyttöohjeen.
Ohjelman toimintaa lopetettaessa järjestelmä tallentaa tarvittaessa avoimena olevan kaaviokuvan.
Relaatiokaavio tai relaatiokaavion osa voidaan tulostaa paperille.
Käyttäjä valitsee laitteen, jolle kaavio tulostetaan.
Käyttäjä voi valita arkin koon sekä pysty- tai vaakasuunnan tulostettaville arkeille.
Ennen tulostusta näytölle ilmestyy ikkuna, josta käyttäjä näkee, millaisena kaavio on tulostumassa valitulle paperikoolle.
Jos tulostettava kaavio on suurempi kuin paperikoko, ikkuna on jaettu useammaksi ruuduksi, joista nähdään, kuinka monelle arkille kaavio on tulostumassa, ja miten taulut sijoittuvat arkeille.
Ikkunasta voidaan valita tulostettavaksi joko koko kaavio tai vain jokin tietty kaavion osa. Kaaviota on tarvittaessa mahdollista suurentaa tai pienentää.
Käyttäjä käynnistää tulostustyön aseteltuaan kaavion taulut sopivasti. Kaaviokuva tulostuu valitulle tulostuslaitteelle.
Tässä luvussa kuvataan järjestelmän liittymät ulkomaailmaan.
Järjestelmään toteutetaan ajanmukainen graafinen käyttöliittymä. Käyttöliittymä kehitetään käyttäen JFC 1.1-luokkakirjastoa (Swing).
Käyttöliittymä on englanninkielinen.
Käyttäjä muodostaa SQL-kannankuvauslauseista relaatiokaavion valitsemalla SQL-lauseet sisältävän ulkopuolisen tiedoston ja saa näytölle relaatiokaavion.
Käyttäjä lukee erillisestä tiedostosta olemassa olevaan kaavioon lisää kannanpäivityslauseita, jolloin näytöllä näkyvä kaavio päivittyy.
Käyttäjä tarkastelee olemassaolevaa kaaviota. Käyttäjä hakee haluamansa taulun taulun haku nimellä -toiminnolla ja sen jälkeen keskittää ikkunassa näkyvän alueen siten, että haettu taulu on työalueen keskellä. Käyttäjä siirtää tauluja tarkoituksenmukaiseen paikkaan ja siirtää myös viiteviivoja, jotta kaavio säilyy selkeänä. Viiteviivoja siirtäessään käyttäjä joutuu lisäämään niihin käännepisteitä tai suoristamaan viiteviivaa.
Nähdäkseen kerralla koko kaavion käyttäjä loitontaa työalueella olevaa kaaviota niin, että koko relaatiokaavio mahtuu ikkunaan.
Käyttäjä tulostaa relaatiokaavion tai sen osan. Käyttäjä valitsee haluamansa alueen kaaviosta tulostamista varten.
Käyttäjä tallentaa kaavion, jotta sitä voitaisiin tarkastella myöhemminkin tarvitsematta generoida sitä uudelleen SQL-lauseista.
Käyttäjä tallentaa kaavion kuvamuotoiseksi esim. tekstinkäsittelyohjelmaan siirtämistä varten.
Kaavion tarkastelun jälkeen käyttäjä sulkee valitun kaavioikkunan.
Käyttäjän poistuessa järjestelmästä avoimena olevat kaaviot tallennetaan tarvittaessa.
Kuva piirtoalueesta.
Kuva tauludialogista.
Kaavio tulostetaan Javan tulostuspalveluita käyttäen. Tulostukselta vaadittavia toimintoja ovat printterin valinta, paperiarkin koon ja orientaation valinta, sekä tulostustyön käynnistäminen.
Syötteenä on SQL-lauseita sisältävä ASCII-tekstitiedosto, jonka lauseista järjestelmä käsittelee vain kannankuvauslauseet. SQL-standardin mukaisten päivityslauseiden lisäksi järjestelmä ymmärtää myös ainakin Oraclen murreominaisuuksia.
Järjestelmän tulosteet ovat kaaviokuvia.
Tässä luvussa kuvataan järjestelmän tietosisältö sekä esitetään tiedon sisäinen esitystapa alustavana luokkakaaviona.
Järjestelmä lukee tietokannan muodostavia SQL-lauseita ja muodostaa jäsentäjää käyttäen kantaa kuvaavan sisäisen esityksen. Sisäisessä esityksessä käytettävät luokat:
Lisäksi järjestelmä ylläpitää käyttäjälle näytettävään graafiseen esitykseen liittyvää informaatiota. Järjestelmä sisältää automaattisen sijoittelijan, joka luo alustavan graafisen esityksen tietokannalle. Esitys ylläpidetään seuraavien luokkien avulla:
Järjestelmän alustava luokkakaavio, joka kuvaa keskeisimpien luokkien väliset suhteet. Kaaviossa on käytetty UML-tekniikkaa.
Ohjelman tulee toimia sujuvasti Intel Pentium prosessorilla tai vastaavalla varustetussa tietokoneessa. Sujuva toiminta tarkoittaa, ettei kuvaa muokattaessa esiinny häiritsevää välkkymistä tai viiveitä. Samoin kuvan muodostaminen ei saa kestää kohtuuttoman kauan. (tavoite vähintään 10 taulua/s pienillä kaavioilla)
Samanaikaisesti voidaan pitää useita erillisiä ikkunoita, joissa kussakin on erillinen relaatiokaavio.
Ohjelma opastaa tarvittaessa käyttäjää sekä estää häntä tekemästä virheellisiä toimintoja. Kumoa-Palauta -toiminoilla käyttäjä voi perua tekemänsä kuvanmuokkauksen tai palauttaa tekemänsä perumisen.
Projektissa tuotettavat dokumentit tallennetaan HTML-muodossa käyttäen yhteistä mallia. Lähdekoodit kirjoitetaan yhteisen tyylioppaan mukaisesti. Dokumentit ja lähdekoodit tallennetaan projektin kotihakemistoon, josta ne ovat tarvittaessa helposti saatavissa. Dokumentit sijaitsevat hakemistossa /home/group/jasso/public_html ja lähdekoodit hakemistossa /home/group/jasso/k98/src.
Tuote testataan ja testitulokset raportoidaan käyttötapauksittain. Testituloksissa on käyttötapausten toimivuuden lisäksi osoitettava, että suorituskykyvaatimukset toteutuvat.
Asiakas toimittaa testiaineistoksi mm. yli sata taulua sisältävän relaatiokannan sekä Tietojenkäsittelytieteen laitoksen kirjastojärjestelmän tietokannan. Pääosin testaus tehdään kuitenkin pienemmillä aineistoilla.
Lähdekoodissa käytetään Java 1.1:ssä määriteltyjä ominaisuuksia. Lähdekoodi kommentoidaan siten, että siitä voidaan generoida javadoc-dokumentaatio.
Järjestelmän avustustoiminnon näyttämät ohjeet ovat tallennettu HTML-muodossa.
Järjestelmään luettava syöteaineisto noudattelee SQL-standardia [ISO92], mutta järjestelmän on kyettävä tunnistamaan myös ainakin Oraclen murretta.
Järjestelmän toteutuksessa ei pyritä yhteensopivuuteen vanhan Hytky:n visualisoijan kanssa.
Järjestelmä on ympäristöriippumaton, kunhan Java 1.1:stä on olemassa standardinmukainen toteutus ympäristölle.
Laitteistorajoitukset muodostuvat eri ympäristöjen Java-toteutusten mahdollisesti aiheuttamista rajoituksista. Nämä eivät ole projektiryhmän hallittavissa.