VisualAge for Java-sovelluskehitin Ohjelmistotuotantovälineet seminaari Tero Katajanheimo Helsingin yliopisto Tietojenkäsittelytieteen laitos 28.09.2000 Helsinki
VisualAge for Java VisualAge for Java-sovelluskehitin tarjoaa apua ohjelmistojen kehitykseen visuaalisilla työvälineillä, tyylikkäällä integroidulla ohjelmankehitysympäristöllä ja tukemalla tiimityöskentelyä oliosuuntautuneessa ohjelmoinnissa. Tässä seminaariesityksessä luodaan yleiskatsaus IBM:n VisualAge for Javan Enterprise versioon 3.02 sekä käsitellään joitakin version 3.5 ominaisuuksia.
Sisällys 1 Johdanto...1 1.1 Oliopohjainen teknologia ja iteratiivinen kehitys...1 2 Integroitu ohjelmankehitysympäristö...1 2.1 Työpöytä (workbench)...2 2.2 Työalue ja tietovarasto...2 2.3 Palakirja (Scrapbook)...3 2.4 Ohjelmointivirheiden poistaminen (Debugging)...3 2.5 Viedä ohjelmasta ja tuoda ohjelmaan (Export and Import)...4 3 Visual Composition Editor...5 3.1 Komponentin rajapinta...6 3.2 Komponenttien väliset yhteydet...6 3.3 Data Access Bean...6 3.4 Koodin generointi...7 4 Palvelinsuuntautunut ohjelmointi...7 4.1 JSP/Servlet kehitysympäristö...8 4.2 Servlet smartguide...8 4.3 Enterprise javabeans-kehitysympäristö...8 5 Liittymät muihin työkaluihin...9 6 Yhteenveto...9 Viitteet...10
1 Johdanto VisualAge for Javan työvälineet muodostavat toimivan kehitysympäristön. Käyttäjä ei huomaa rajaa välineiden välillä vaan ne toimivat sulavasti yhteen ja auttavat käyttäjää kehittämään oliosuuntautunutta Java-koodia. Sovelluskehittimessä käytetään moniikkunointimallia. Tämä antaa ohjelmoijalle maksimivapauden luoda omanlaisensa työalueen, vaikka se voi myös nopeasti johtaa visuaaliseen sekasotkuun. VisualAge sisältää työvälineinä myös velhot (smartguides) auttamaan työskentelyä sekä virheiden poistajan, joka antaa käyttäjän asettaa keskeytyskohdat, sisältäen myös ehdolliset keskeytyskohdat, ja sallii käyttäjän tarkastella ja muutella dataa ohjelman ollessa ohjelmankorjauksessa. VisualAge:n integroitu ohjelmankehitysympäristö (integrated development environment) on suhteellisen samanlainen kuin kilpailijoidenkin esim. Borland:n jbuilder ja Symantec:n Visual Café. 1.1 Oliopohjainen teknologia ja iteratiivinen kehitys Iteratiivinen ohjelmistokehitys vähentää riskejä kehitysprosessissa. Tämä lähestymistapa ei ole suinkaan uusi, mutta sopii hyvin yhteen VisualAge:n oliopohjaisuuden kanssa. Tuotteiden toimittaminen aikataulun mukaisesti on tärkeää ohjelmistoyrityksille. Vielä tärkeämpää on, että myydyt ohjelmistot myös toimisivat oikein. Ohjelmistokehitysprosessin on pystyttävä vastaamaan muutoksiin, eli sen on oltava joustava. Perinteinen vesiputous-malli jäädyttää vaatimukset kehityskulun alkuvaiheissa johtaen usein tuotteisiin, jotka eivät vastaa loppukäyttäjän tarpeita. VisualAge tukee iteratiivista mallia. Siinä sovelluskehityksessä edetään vaiheittain ottaen huomioon muuttuvien vaatimusten aiheuttamat toimenpiteet. Näin voidaan varmentaa sovelluksen käytettävyys ja toiminnallisuus mahdollisimman aikaisessa vaiheessa. Kehitysprosessin tavoitteena on tietenkin loppukäyttäjien vaatimukset täyttävä ohjelmisto. VisualAge:ssa ohjelmoijan ei tarvitse enää puuttua tiedostojen hallintaan ja varmuuskopiointiin. Kun ohjelmaelementit luodaan, ne tallentuvat automaattisesti tietovarastoon (repository) ja ovat siis myös saatavilla työtilassa. Kun työtila sisältää vain ohjelmaelementin yhden edition, niin tietovarasto sisältää kaikki editiot. 2 Integroitu ohjelmankehitysympäristö VisualAge on integroitu visuaalinen ympäristö, joka tukee täydellisesti Java-ohjelman kehitysprosessia. Ohjelmoija voi käyttää VisualAge:n visuaalisia ohjelmointipiirteitä 1
kehittääkseen nopeasti Java-appletteja, jotka ajetaan web-selaimissa tai erillisinä javasovelluksena. Kehittäjä voi myös mm. - ajaa Java-ohjelmia - ajaa Java-koodin osia ennen niiden sisällyttämistä luokkaan - korjata ohjelmia virheettömäksi - rakentaa, muuttaa ja käyttää papuja (beans) - viedä ja tuoda Javan lähde- ja binäärikoodia tiedostojärjestelmien välillä. 2.1 Työpöytä (workbench) Työpöytä on pohjimmiltaan muistikirja, jossa on monia välilehtiä, jotka sisältävät eri toiminnallisuuksia. Käyttäjän työ pidetään työtilassa aina kun käyttäjä sulkee sovelluskehittimen. Työtila muistaa jokaisen ikkunan, jotka käyttäjä oli avannut sekä myös kaikkien projektien sisällön. Kuva 1: Työpöytä. 2.2 Työalue ja tietovarasto Työskenneltäessä integroidussa kehitysympäristössä käyttäjä lukee ja tallentaa työnsä omaan työalueeseensa. Työalueen informaatio on tallessa tietovarastossa. Tietovarasto sisältää lisäksi myös valmiita paketteja, jotka voidaan ladata työtilaan, mutta parempi suorituskyky saadaan poistamalla aina luokat, joita ei tarvita työtilassa, koska ne löytyvät kuitenkin tietovarastosta. Kaikki toiminta VisualAge:ssa tapahtuu yksittäisessä työalueessa. Se sisältää Javaohjelmien lähdekoodit, jotka ovat kehittäjällä tällä hetkellä työn alla. Työalue sisältää myös kaikki paketit, luokat ja rajapinnat (interface), jotka löytyvät standardeista Javaluokka kirjastoista sekä muista kirjastoista, joita kehittäjän luokat tarvitsevat. 2
Kehittäjän on mahdollisuus luoda versioita luokista, paketeista ja projekteista. Tyypillisesti ohjelmoija työstää avointa editiota kunnes on tyytyväinen tiettyihin koodin osiin, jolloin hän tekee siitä version muidenkin kehittäjien saataville. Ohjelmoija voi myös vaivatta palata edelliseen versioon, jos hän huomaa uudet korjaukset tarpeettomiksi. Integroitu kehitysympäristö tarjoaa myös vertaustyökalun, jolla voi verrata esim. miten jokin metodi on muuttunut edellisistä versioista. Kuva 2: Tietovaraston sisältöä. 2.3 Palakirja (Scrapbook) Palakirja käsittää yhden tai useampia sivuja, jotka jokainen voi sisältää koodia. Sivut voi tallentaa tekstitiedostoina ja näin ollen ladata uudelleen. Tämä sallii ohjelmoijan kehittää käytännöllisiä kappalekirjastoja, joita voidaan jakaa muiden kesken ja käyttää uudelleen. Ohjelman kehityksessä ohjelmoija voi yksinkertaisesti ajaa palveluluokan instansseja palakirjan eri välilehdillä. Testiskenaariona voitaisiin vaikka ajatella, että jokaista sivua ajetaan rinnakkaisesti eri säikeessä (thread). Käyttämällä ohjelmointivirheiden poistoohjelmaa ohjelmoija voi seurata suorituksen läpimenoa ja selvittää näin mahdollisia vuorovaikutuksen tuomia ongelmia. Ilman sovelluskehittimen tätä kykyä ohjelmoijan täytyisi käynnistää monia fyysisiä virtuaalikoneita ja poistaa ohjelman virheet ajettaessa niitä yhteenkuuluvasti, joka olisi huomattavasti vaikeampi tehtävä [CLR]. 2.4 Ohjelmointivirheiden poistaminen (Debugging) Virheiden poiston tuki on kriittinen toiminto missä tahansa kehitysympäristössä. Hyvä virheiden poistaja ei vaan auta kehittäjää poistamaan virheitä ohjelmasta, vaan se voi myös auttaa ymmärtämään ohjelman käyttäytymistä. VisualAge:ssa ohjelmointivirheiden poistajaa voidaan käyttää seuraavilla tavoilla 3
- kehittäjä voi lisätä keskeytyskohdan (breakpoint) koodissa, joka aiheuttaa virheiden poistajan aktivoitumisen ajoaikana kun koodissa saavutaan keskeytyskohtaan - virheiden poistaja saadaan aktivoitumaan kun kutsutaan sopimatonta metodia tai kun kiinniottamaton poikkeus tapahtuu - virheiden poistajaa voidaan kutsua ohjelmallisesti - kehittäjä voi interaktiivisesti avata virheiden poistoikkunan ja lisätä siihen säikeen Yksittäisiä säikeitä voidaan valita tutkittavaksi, jolloin nähdään lista säikeen sisältävistä metodeista ja paikallisista muuttujista. Tutkittaessa metodin lähdekielistä koodia kehittäjä voi muokata ja tallentaa koodin, joka aiheuttaa automaattisesti metodin käännöksen linkityksen ajettavaan ohjelmaan. Jokin paikallinen muuttuja tai jonkin arvon palauttava kokonaisuus voidaan myös valita tutkittavaksi erilliseen tarkasteluikkunaan (inspector window). Kehittäjä voi edetä koodissa askel kerrallaan, jatkaa koodin suorittamista tai tuhota koko säikeen. Kuva 3: Ohjelmankorjausohjelma. 2.5 Viedä ohjelmasta ja tuoda ohjelmaan (Export and Import) Käyttäjä voi tallentaa Java-koodia työtilasta.java,.class ja.jar tiedostoina sekä tuoda myös näitä tiedostoja työtilaan, jotka on luotu jollakin toisella välineellä. Käyttäjällä on siten mahdollisuus siirrellä paketteja, luokkia, rajapintoja ja Java-papuja jar-tiedostoissa. VisualAge mahdollistaa myös pakettien ja projektien tuonnin ja viennin tietovarasto- 4
formaatissa. Tietovarastoformaatti on tietovaraston alijoukko, jota voidaan käyttää vaihtamaan projekteja ja paketteja toisten kehittäjien kanssa. 3 Visual Composition Editor VisualAge:n visuaalisen sommittelu editorin komponenttityyppejä ovat mm. - Visuaalinen osa (Visual part) muodostaa sovelluksen käyttäjälle näkyvän osan. Näkyviin osiin kuuluvat mm. ikkunat, painikkeet ja tekstikentät - Piilo-osat (Nonvisual parts) eivät näy käyttäjälle ajon aikana. Tyypillinen piilo-osa on jokin toiminto, tieto tai yhteys toiseen osaan tai Java-koodiin kuvaava viiva. VisualAge ei vain tarjoa käyttäjä rajapinnan visuaalisia elementtejä vaan myös antaa kyvyn käyttäjälle ohjelmoida visuaalisesti Java-appletin tai sovelluksen käyttäytymisen. Käytettävinä on näkyvät yhteydet sekä visuaalisten että piiloelementtien välillä. Yhteyksiin on myös mahdollisuus sisällyttää logiikkaa. Käyttäjä voi myös lisätä eivisuaalisia Javabeans-komponentteja työalustalle, joilla on myös visuaalinen esitys ja niitä voi käyttää hyväkseen kuten visuaalisiakin komponentteja. Kuva 4: Visual Composition editor 5
3.1 Komponentin rajapinta Komponentin rajapinta määrittelee millä tavoin se voi olla vuorovaikutuksessa muiden osien kanssa. Rajapinnalla on seuraavat ominaisuudet - Ominaisuudet (Properties) ovat tietoja, jotka näkyvät myös muille osille. Ne voivat esittää mitä tahansa osan loogista toimintoa, kuten esim. tilin saldoa tai painikkeen tekstiä. - Tapahtumat (Events) toimivat signaaleina, jotka ilmaisevat jotain tapahtuneen. Tapahtuma voi olla esimerkiksi ikkunan avaaminen tai attribuutin arvon muuttuminen. - Toiminnot (Actions) käsitetään operaatioiksi, joita osa voi suorittaa. Toiminnot voi käynnistää muista osista muodostamalla yhteyksiä osien välille. 3.2 Komponenttien väliset yhteydet Visual Composition- editori käyttää pohjanaan Javabeans-komponenttimallia. Editori näyttää jokaisen komponentin ominaisuudet, mitkä kehittäjä lisää alustalle. Visuaalinen ohjelmointi toteuttaa yhteyksien kautta tehdyt komponenteille määritellyn käyttäytymisen. Kaikki yhteydet tehdään seuraavien papujen piirteiden kesken properties, events ja methods. Yhteyksien erilaiset tyypit tarjoavat erilaisia käyttäytymisiä. Esim. event-to-action - yhteyttä saatetaan käyttää kutsuttaessa toisen pavun metodia kun painiketta painetaan käyttöliittymästä. Property-to-property -yhteys sallii tiedon kulun helposti visuaalisen ja piilo-osan välillä. Yhteysmallin etu on myös kyky muuttaa ja käsitellä taitavasti yhteyksiä. Samasta lähdekomponentista on mahdollista olla useita yhteyksiä. Yhteyksiä on helppo muuttaa tai poistaa sekä yhteyksiä voidaan myös käyttää siirtämään parametrejä ja poikkeuksia toisille yhteyksille tai palauttamaan tulos. 3.3 Data Access Bean Data Access- rakentaja tarjoaa integroidut välineet käsittelemään sekä yksinkertaisen että monimutkaisen pääsyn relaatiotietokantoihin. Generoitu data access bean sisältää koodin sekä sopivan jdbc-yhteyden. Velho avustaa kehittäjää tekemään yhteyden tietokantaan sekä muodostamaan kyselyt tietokannan tauluihin. 6
Kuva 5: SQL Assist Smartguide. 3.4 Koodin generointi VisualAge sisältää useita velhoja (smartguides), jotka tarjoavat opastusta ja auttavat käyttäjää suorittamaan osatehtäviä. Ne korvaavat tavanomaiset dialogit, jotka tarjoavat vähän selityksiä ja rajoituksia kuinka tehtävä pitäisi tehdä. Velhot on suunniteltu johtamaan käyttäjä jokaisen tuetun tehtävän loppuun asti. Velho siis auttaa käyttäjiä automaattisesti luomaan tai generoimaan objekteja, joiden koodi täyttää tietyt vaatimukset ja käyttäjän on edelleen helppoa muuttaa koodi haluamakseen. Kun Java-appletti suunnitellaan visuaalisesti, niin velho luo automaattisesti tietyn appletin ja avaa sen luokkaikkunaan, jossa käyttäjä voi aloittaa välittömästi sekä lisäämään visuaalisia elementtejä applettiin että luodaan yhteyksiä visuaalisten ja ei-visuaalisten komponenttien välille. 4 Palvelinsuuntautunut ohjelmointi Palvelinsuuntautunut ohjelmointi on tuloksena ohjelmistoteollisuuden muutoksesta siirtyä ohjelmistokomponenttikehitykseen. Enterprise Javabeans (EJB) on malli uudelleen käytettäville Java-palvelinkomponenteille. Komponentit ovat esitoteutettuja ohjelman osia, joita yhdistelemällä ja konfiguroimalla voidaan rakentaa erilaisia sovelluksia. EJBarkkitehtuurissa kehittäjän ei välttämättä tarvitse tietää muiden komponenttien tarkkaa, matalan tason toimintaa, koska niihin päästään käsiksi suoraan rajapintojen kautta. Useiden eri tuotekehittäjien on myös mahdollista valmistaa työkaluja, jotka kommunikoivat keskenään ajonaikaisesti EJB-arkkitehtuurissa määrättyjen sopimusten mukaan. EJB-komponentteja on siis mahdollista käyttää useilla erilaisilla alustoilla ilman 7
koodin muokkausta tai uudelleen kääntämistä [MAH]. Tässä luvussa esitellään VisualAge:n (versio 3.5) tarjoamia työvälineitä tähän tarkoitukseen. 4.1 JSP/Servlet kehitysympäristö Kehitysympäristö sallii ohjelmoijan kehittämään, ajamaan ja testaamaan JSP-sivuja ja servletteja. VisualAge sisältää seuraavat välineet auttamaan käyttäjää JSP-kehityksessä - JSP Execution Monitor - Persistent Name Server - WebSphere Test Environment Servlet Engine - DataSource objects Kaikki nämä välineet ovat WebSphere Test Environment Control Center:n osia, jotka antavat mahdollisuuden käyttäjälle käynnistää, pysäyttää ja konfiguroida WebSphere Test Environment:n palveluja. 4.2 Servlet smartguide Servlet-velho tarjoaa mahdollisuuden servletin ja siihen liittyvän Internet lähdetiedoston (HTML ja JSP-sivut) muodostamiseen. Käyttäjä voi myös käyttää velhoa tuomaan Javapavun ja sen jälkeen generoimaan HTML, JSP ja servlet-konfigurointitiedostot pavusta. 4.3 Enterprise javabeans-kehitysympäristö EJB-kehitysympäristö käsittää monia työvälineitä, jotka voi voidaan luokitella seuraaviin ryhmiin - työvälineet papujen luontiin ja liittämiseen muihin komponentteihin - työvälineen generoimaan tyngät (stub) EJB-palvelimelle - Enterprise-papujen testausvälineet ennen kuin ne siirretään palvelimelle Kaikki EJB-kehitysympäristön työvälineet ovat käytettävissä työpöydän EJBvälilehdellä. Täällä sijaitsevat ohjelmoijan EJB-ryhmät ja yksilölliset Enterprise-papujen ja se on siis paikka, missä ohjelmoija tekee melkein kaiken EJB-kehityksen [DOC]. 8
Kuva 6: EJB-välilehti. 5 Liittymät muihin työkaluihin Palvelinpuolen Java-sovellukset voidaan nopeasti julkistaa WebSphere Studioon, missä web-kehittäjä voi edelleen muokata web-sivuja. VisualAge sisältää myös sillan Rational Rose:n välillä. VisualAge:ssa (versio 3.5) erityinen hallintojärjestelmä sallii kehittäjän tallentamaan toisten välineiden kehitystuotokset VisualAge:n lähdehallintajärjestelmän sisään. VisualAge tarjoaa myös liittymän ulkoisiin järjestelmiin kuten Rational ClearCase, IBM Team Connection ja Mercant PVCS kanssa. 6 Yhteenveto Tässä paperissa on pyritty tuomaan esille VisualAge for Java (version 3.02)- sovelluskehittimestä löytyviä toiminnallisuuksia sekä avartamaan vähän joitakin versiossa 3.5 olevia uusia palvelinsuuntautunutta ohjelmointia tukevia asioita. Lisätietoja VisuAge:sta löytyy internetistä IBM:n sivuilta esimerkiksi http://www.software.ibm.com/ad/vajava, josta voi myös ladata kokeiluversion sekä monia aiheeseen liittyviä dokumentteja omalle koneelleen. 9
Viitteet [CLR] L. A. Chamberland, S. F. Lymer and A. G. Ryman, IBM VisualAge for Java, IBM Systems Journal vol. 37, No 3 - Java Technology [DOC] http://www7.software.ibm.com/vad.nsf/data/document4293. [27.9.2000] [MAH] Vlada Matena & Mark Hapner March 21 1998, Sun Microsystems Enterprise Javabeans specification Version 1.0. 10