HyperSoft lähestymistapa: ohjelmistojen ylläpidon tukiesimerkki

© Jussi Koskinen, 2003-

Department of Computer Science and Information Systems

University of Jyväskylä

P.O. Box 35, 40351-Jyväskylä, Finland

http://www.cs.jyu.fi/~koskinen/hsses.htm, since February 28, 2003

Email: koskinen@cs.jyu.fi

Abstrakti

HyperSoft (Automated Hypertext Support for Software Maintenance) on eräs lähestymistapa ohjelmistojen ylläpitäjien tietotarpeiden tukeen. HyperSoft:ssa yhdistyvät automaattinen ohjelma-analyysi (tarvittavan tiedon tuottaminen) ja hypertekstitekniikat (tietojen esittäminen käyttäjille). HyperSoft:ia on kehitetty TEKES-projektina. Yritysyhteistyössä ovat olleet mukana Nokia, TietoEnator, ja Novo Group. HyperSoft:in käytön lähtökohtana ovat ylläpitäjän tietotarpeet. Käyttäjä spesifioi tarvitsemansa tiedon suoraan osoittamalla ohjelmatekstin komponentteja. Järjestelmä tuottaa automaattisesti ns. hakurakenteita, joita käytetään tiedonhaun tuessa. Hakurakenteet esitetään käyttäjille erilaisten tekstuaalisten-, hyperteksti-, rakenteisten- ja graafisten näkymien kautta. Tässä dokumentissa kuvataan järjestelmän perustoimintojen käyttöä.

 

1. Teoreettinen tausta

Työkalun tarkoituksena on ollut havainnollistaa hypertekstipohjaisten käänteistekniikkatyökalujen mahdollisuuksia tietokoneohjelmien ylläpidon ja ohjelmien ymmärtämisen tuessa ja mahdollistaa hypertekstiominaisuuksien systemaattinen empiirinen arviointi (Koskinen, 2002). Lähtökohtana lähestymistavalle on ollut se, että ohjelmateksti täyttää hyvin seuraavat, ns. hypertekstin muodostuksen kultaiset säännöt (Shneiderman, 1989).

·         Kyseessä on laaja informaatiokokoelma, joka voidaan organisoida lukuisiksi osiksi.

·         Osilla on keskinäisiä riippuvuuksia.

·         Käyttäjä tarvitsee vain pientä osaa kokonaisuudesta kerrallaan.

 

Lähestymistavan noudattamat periaatteet ovat seuraavat.

·         Ohjelmateksti esitetään käyttäjälle hypertekstinä (hyperteksti koostuu solmuista ja linkeistä) (Paakki ym., 1996).

·         Solmut vastaavat ohjelmanosia (ohjelmointikielen syntaktisia tyyppejä).

·         Linkit vastaavat ohjelmariippuvuuksia (esim. kutsu-, tietovirta-, kontrolliriippuvuuksia) (Paakki ym., 1997).

·         Kielioppiperusteisuus, ohjelmatekstin osituksen perustana on ohjelmointikielen kielioppi ja sen mukaiset sisäiset esitysmuodot, erityisesti jäsennyspuu.

·         Joustavuus, tavoitteena on ylläpitäjän tilannekohtaisten tietotarpeiden tyydyttäminen.

·         Muodostettava hyperteksti on väliaikaista (transient), vrt. Salminen & Watters (1992). Näin vältetään ohjelmamuutoksiin ja hypertekstirakenteiden ylläpitoon liittyvät ongelmat.

 

Järjestelmä perustuu ns. HyperSoft-malliin (Paakki ym., 1996), jossa erotetaan seuraavat neljä ylläpidon tuen tasoa.

·         Lähdekooditaso, ohjelmakoodin lineaarinen esitys ohjelmatiedostoissa.

·         Syntaktinen taso, jäsennyspuuesitys ja -operaatiot.

·         Hakurakennetaso, väliaikaiset hypertekstirakenteet ja vastaavat operaatiot.

·         Käyttöliittymätaso, ohjelmatekstin ja hypertekstin esitys käyttäjälle, hakurakennemääritykset, käyttäjän ja järjestelmän välinen vuorovaikutus.

2. HyperSoft -järjestelmä

HyperSoft (v. 1.0) (Koskinen ym., 1997) on kokeellinen käänteistekniikkatyökalu, joka tukee ANSI C –kieltä (tietyin rajoittein) ja ESQL:ää. Tuetut käyttöjärjestelmät ovat MS Windows 3.01/95/NT/2000. Ohjelmiston perusosat ovat seuraavat, ks. Kuva 1.

·         Staattinen ohjelma-analysaattori (Analyzer).

·         Hypertekstirakenteiden tuottaja (Generator).

·         Käyttöliittymä (Interface).

·         Integroitu tekstieditori (ohjelmamuutosten tekoon) (PFE-Editor).

 

HyperSoft:in syötteenä toimivat tiettyyn käyttäjän määrittelemään projektiin kuuluvat lähdekieliset tiedostot, joille suoritetaan staattinen ohjelma-analyysi. Analyysin tulokset tallennetaan ohjelmatietokantaan (Program Database). Käyttäjät kommunikoivat järjestelmän kanssa sen edusta-osan (front-end) välityksellä. Taustaosa (back-end) (Koskinen, 1997) muodostaa tarvittavat tietorakenteet. Käyttäjät käynnistävät tilannekohtaisten tietotarpeidensa perusteella hypertekstihakurakenteiden muodostuksen. Muodostuksen tulokset esitetään käyttäjille erilaisten näkymien kautta.

Kuva 1. HyperSoft –järjestelmän yleisarkkitehtuuri (Koskinen, 2000, s. 29).

 

HyperSoft:in tukemia hakurakennetyyppejä ovat seuraavat.

·         Esiintymälistat (Occurrence list) muuttujille, funktioille ja käyttäjän määrittelemille tyypeille.

·         Kutsukaaviot (Call graphs) (eteen- ja taaksepäin suuntautuen) (ks. Kuvat 4, 5 ja 6).

·         Ohjelmaviipaleet (Program slices) (Weiser, 1982) (eteen- ja taaksepäin suuntautuvaan analyysiin perustuen).

 

HyperSoft:in tukemat näkymätyypit ovat seuraavat (näkymä on aina hakurakennekohtainen).

·         Normaali ohjelmatekstin lineaarinen esitys.

·         Hypertekstinäkymä, jossa hypertekstitoiminnallisuus on sulautettu ohjelmatekstiesitykseen (mahdollistavat oleellisten osien tutkimisen niiden välittömässä kontekstissa) (ks. Kuvat 4 ja 5).

·         Rakenteinen karttanäkymä (Structured map view) (näyttää hakurakenteen sisällön hierarkkisesti) (ks. Kuva 6, yläosa).

·        Graafinen funktio/moduuliriippuvuusnäkymä (Function dependency view) (tämän näkymän kautta nähdään myös aktiivisen moduulin kytkökset) (ks. Kuva 6, alaosa).

3. HyperSoft:in käyttö

HyperSoft:in (perusasennuksessa ja esim. Agoranet:ssä: c:\hsoft\hyper.exe) käyttö edellyttää seuraavat valmistelevat toimenpiteet.

·         Asetetaan ‘File/Project Manager/Project files’ -kohdasta esimerkkiprojektiksi esim. ‘hsoft example’.

·         Asetetaan ‘File/Project Manager/Include definition’ -kohdasta ensimmäinen osa polkumäärittelystä muotoon: ‘c:\hsoft\include;...’.

·         Asetetaan ‘File/Preferences/Font/Dependencies’ -kohtaan ‘Times New Roman 10 pts.(tms., jos oletusarvot eivät sovellu käytettävälle monitorille).

 

Järjestelmän varsinaiseen käyttöön liittyviä keskeisiä seikkoja ovat seuraavat.

·         Kerralla tutkittavat (ja analysoitavat) ohjelmatiedostot kuuluvat ns. projektiin (project), joka määritellään komennolla: ‘File/Project Manager’.

·         Aktiivisen projektin sisältö näkyy tiedostoluettelossa: ‘View/Project file’.

·         Projektille täytyy aina ensimmäisessä vaiheessa muodostaa ns. staattinen ohjelmatietokanta: ‘File/Analyze project’.

·         Staattinen analyysi sisältää ohjelman jäsentämisen,  jos virheitä esiintyy, ne täytyy korjata, samaan tapaan kuin ohjelmointikielten kääntäjien käytön tapauksessa, ennenkuin voidaan edetä.

·         Tilannekohtaisesti tarvittavien, HyperSoft:in muodostamien väliaikaisten, hypertekstihakurakenteiden generointipyynnöt ja niissä navigointi tapahtuu suorakäyttöperiaatteita noudattaen.

·         Yksittäinen hakurakenne muodostetaan osoittamalla tekstikohdistimella rakenteen alkukriteeriä ja valitsemalla tarvittava hakurakennetyyppi (‘Query’ -valikko).

·         Huomaa, että alkukriteerin täytyy olla laillisen tyyppinen ohjelmaosa ko. hakurakennetyypille (tarkka määrittely on annettu ohjetiedostossa: ‘c:\hsoft\help\hsoft.txt’).

·         Tiettyä hakurakennetta voidaan tarkastella halutun näkymän kautta: (‘View’ -valikko).

·         Hakurakenteita voidaan generoida useita istunnon aikana, hakurakenteet säilyvät istunnon ajan muistissa ja niitä voidaan noutaa etualalle (‘View/Select access structure’).

·         Rakenteen alkusolmuun (home node) päästään vastaavalla ikonilla tai F5:llä.

·         Navigointivalintojen peruutustoiminto (backtrack) on F6.

·         Historialista (käyttäjän valitsemat polut): Navigation/History list.

·         Linkkien graafinen esitys ohjelmatekstin päällä asetetaan seuraavasti ‘Navigation/Show all links’ (tämä näyttötapa on havainnollinen, mutta hidastaa näytön päivitystä, joten se kannattaa kytkeä päälle vain väliaikaisesti).

·         HyperSoft on integroitu PFE:hen (Programmer’s File Editor), ohjelmakoodimuutokset ajatellaan tehtävän integroidusti käyttäen rakenteista karttanäkymää: ‘View/Structured Map for Editor’.

·        Järjestelmän käyttöä on ohjeistettu ja sen toiminnallisuudet ja rajoitteet eritelty tiedostossa: ‘c:\hsoft\help\hsoft.txt’.

4. Tyypillinen ylläpitosessio

Tyypillistä käyttösessiota on havainnollistettu oheisissa kuvissa (Koskinen, 2000). Ensin muodostetaan staattinen ohjelmatietokanta aktiiviselle projektille (‘Project Files’ -ikkunassa näkyville lähdekielisille tiedostoille). Staattisen ohjelmatietokannan muodostaa DOS-ohjelma, joka näkyy erillisessä ikkunassa. Staattisen ohjelmatietokannan muodostus on valmis Kuvassa 2. Analyysin aikana mahdollisesti kohdatut jäsennysvirhetiedot tallentuvat lokitiedostoon. Kun analyysi on valmis ko. ikkunaan ilmestyy (Agoranet:ssä) viesti ’Press ENTER to continue…’, joka kuitataan ko. ikkunassa.

 

Kuva 2. Staattisen ohjelmatietokannan muodostus.

 

Näiden toimenpiteiden jälkeen voidaan spesifioida hakurakenteita, jotka HyperSoft:in on tarkoitus tuottaa. Kuvassa 3 on esitetty hakurakenteen spesifiointitapa, hakurakennetyyppinä on tässä kutsukaavio (Forward Calls) ja lähtökohtana C-kielisen asennuksen mukana tulevan esimerkkiohjelman pääohjelma (main). Tekstikohdistimen (välkkyvä, kapea pystypalkki) tulee olla lähtökohtana toimivan ohjelmarakenteen nimen päällä käynnistettäessä hakurakenteen muodostus. Hakurakennetyyppi siis valitaan Query-valikosta.

Kuva 3. Hakurakenteen spesifiointi.

 

Kuvassa 4 on esitetty hakurakenteen muodostus ja hakurakenne valmiina. Hakurakenteen muodostushistoria näkyy ‘Debug Messages’ –ikkunassa (joka saadaan näkyville ALT+TAB:lla). Hakurakenteeseen kuuluvat ohjelmanosat (nodes, anchors) on korostettu näytöillä käänteisesti. Järjestelmä käyttää värejä (jotka eivät näy mustavalkokuvissa) osoittamaan lähteekö tietystä solmusta linkkejä. Tummansinisistä solmuista lähtee linkkejä, joita voidaan seurata naksauttamalla hiiren kohdistimella ko. solmua. Jos tietystä solmusta lähtee useita linkkejä, valitsee käyttäjä linkin HyperSoft:in putkahdusikkunassa esittämästä listasta (Target node list). Ko. lista voidaan myös ns. jäädyttää näytölle naksauttamalla sen vasenta ylänurkkaa. Tämä mahdollistaa vaihtoehtoisten riippuvuuspolkujen systemaattisen läpikäynnin.

 

 

Kuva 4. Hakurakenteen muodostus.

 

Kuvassa 5 on esitetty muodostetun hakurakenteen käyttöä epälineaarisessa selauksessa, linkit on tässä havainnollistettu graafisesti nuolina, kyseessä ovat em. kutsusuhteet.

 

Kuva 5. Hakurakenteen käyttö.

 

Graafiset näkymät ovat tärkeitä hypertekstiesitystavan täydentäjiä. Kuvassa 6 on esitetty näistä kaksi tärkeintä HyperSoft:ssa tuettua muotoa. Ylhäällä: rakenteinen karttanäkymä (Structured Map View) ja siihen integroitu hypertekstinäkymä, alhaalla: osa muodostetusta funktioriippuvuusnäkymästä (Function Dependency). Rakenteisen karttanäkymän vasemmanpuoleinen osa näyttää aktiivisen hakurakenteen sisältämien solmujen jakauman ohjelmassa: moduuli-, proseduuri- ja käskytasoilla. Tasoja voidaan sulkea ja avata keltaisista +/- ikoneista. Oikeanpuoleinen osa näkymästä on synkronoitu vasemmanpuoleisen kanssa. Funktioriippuvuusnäkymän sisältämät graafiset komponentit on linkitetty vastaaviin kohtiin ohjelmatekstissä. Järjestelmää on kuvattu myös mm. teknisessä raportissa Koskinen (1997) ja väitöskirjassa Koskinen (2000).

 

 

Kuva 6. Rakenteinen karttanäkymä (yllä) ja funktioriippuvuusnäkymä (alla).

Lähteet

Koskinen, J. (1997). “HyperSoft: Backend Components. Computer Science and Information Systems Reports, Technical Report TR-17. Univ. of Jyväskylä. Febr. 1997. 122 p.

Koskinen, J. (2000). ”Automated Transient Hypertext Support for Software Maintenance“ (Diss.). Jyväskylä Studies in Computing 4. Univ. of Jyväskylä. April 2000. 250 p.

Koskinen, J. (2002). “Experimental evaluation of hypertext access structures”. Journal of Software Maintenance and Evolution: Research and Practice 14 (2), 83-108. 2002.

Koskinen, J., Nieminen, M. & Suominen, T. (1997). HyperSoft system (v. 1.0). Organization: Department of Computer Science and Information Systems, University of Jyväskylä, Jyväskylä, Finland. Available at <URL: http://www.cs.jyu.fi/~koskinen/hypersys.htm>. Description: an experimental hypertext-based reverse engineering tool supporting ANSI-C and ESQL. Accessed: June 14, 2000.

Paakki, J., Koskinen, J. & Salminen, A. (1997). “From relational program dependencies to hypertextual access structures”. Nordic Journal of Computing 4 (1), 3-36. 1997.

Paakki, J., Salminen, A. & Koskinen, J., (1996). “Automated hypertext support for software maintenance”. The Computer Journal 39 (7), 577-597.

Salminen, A. & Watters, C. (1992). “A two-level structure for textual databases to support hypertext access”. Journal of the American Society for Information Sciences 43 (6), 432-447.

Shneiderman, B. (1989). “Reflections on authoring, editing, and managing hypertext”. Barret, E. (Ed.) The Society of Text, 115-131. MIT Press.

Weiser, M. (1982). “Programmers use slices when debugging”. Communications of the ACM 25 (7), 446-452.

 

Updated: October 24, 2008 by Jussi Koskinen.