Visual Basic -sovelluskehitin Helsinki 30.10.2000 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Visual Basic sovelluskehitin Seminaari: Ohjelmistotuotantovälineet Tietojenkäsittelytieteen laitos Helsingin yliopisto 30.10.2000, 8 sivua Microsoft Visual Basic on Basic-kieleen perustuva sovelluskehitin, joka helppokäyttöisyytensä ansiosta on saavuttanut laajan käyttäjäkunnan. Ohjelmistoa käytetään sekä pienien prototyyppien laadintaan että laajojen monen käyttäjän sovellusten kehittämiseen. Tässä seminaarialustuksessa tarkastellaan joitakin Visual Basicin ominaisuuksia sekä sovelluskehittimen erilaisia käyttömahdollisuuksia. Lisäksi tuodaan esille joitakin Visual Basicin puutteita ja heikkouksia. Avainsanat: Visual Basic, Microsoft, COM, sovelluskehitin
Sisällys 1 JOHDANTO... 1 2 KEHITYSYMPÄRISTÖ... 1 2.1 TYÖPÖYTÄ... 2 2.2 KOODIN GENEROINTI... 3 2.3 VIRHEENJÄLJITYS... 4 3 SOVELLUSALUEET... 4 3.1 KÄYTTÖLIITTYMÄSUUNNITTELU... 5 3.2 TIETOKANTASOVELLUKSET... 5 3.3 WWW-PALVELINSOVELLUKSET... 6 4 PUUTTEET... 7 5 YHTEENVETO... 7 VIITTEET... 8
1 Johdanto Visual Basic on osa Microsoft Visual Studio kokonaisuutta, joka sisältää valikoiman ohjelmistotuotantoon tarkoitettuja ohjelmia. Basic-kieleen pohjautuva Visual Basic on Rapid Application Development eli RAD sovelluskehitin, joka nopeuttaa mm. prototyyppiohjelmien laatimista ja käyttöliittymäsuunnittelua. Visual Basic ei kuitenkaan ole prototyyppityökalu, vaan sovelluskehitin, joka kykenee tuottamaan niin tavallisia ohjelmia, ActiveX-komponentteja kuin wwwsovelluksiakin. Lisäksi markkinoilla on Visual Basic johdannaisia kieliä, kuten VBscript ja Visual Basic for Application. Komponenttipohjaista ohjelmointitapaa hyödyntävä Visual Basic tukee myös oliopohjaista suunnittelu- ja toteutusmallia, mutta täydellinen oliokieli se ei kuitenkaan esimerkiksi Delphin Object Pascaliin tai Javaan verrattuna ole. Visual Basicista puuttuvia olio-ominaisuuksia on mm. luokkien periytyminen. Toisaalta komponenttien hyödyntämisessä Visual Basic antaa mahdollisuuden käyttää millä tahansa ohjelmointikielellä toteutettuja Component Object Model eli COMrajapintaa tukevia komponentteja [MS00a]. Tavallisesta Basicista (ja Javasta) poiketen Visual Basic ei ole tulkattava kieli, vaan sillä tuotetut ohjelmat käännetään natiivikoodiksi aivan, kuten esimerkiksi Delphillä tai C:llä laaditut sovelluksetkin. Toisaalta huonona puolena voidaan pitää esimerkiksi Delphiin verrattaessa sovellusten vaatimia suurikokoisia ajonaikaisia kirjastoja, jotka on asennettava ohjelman yhteydessä. 2 Kehitysympäristö Visual Basicin kehitysympäristö, Integrated Development Environment (IDE), sisältää lukuisia toimintoja, jotka nopeuttavat sekä koodin kirjoittamista että generointia. Valmiiksi sisäänrakennettujen toimintojen, kuten komponenttipaletin, projektitiedostojen hallintaan tarkoitetun hierarkiaikkunan sekä komponenttien ominaisuuksia näyttävän ikkunan lisäksi ympäristöön voidaan tuoda myös erikseen varta vasten laadittuja lisäosia (add-in). 1
2.1 Työpöytä Visual Basic työpöytä koostuu erilaisista toimintopaleteista ja -ikkunoista. Kuvassa 1 on nimetty ja eritelty eräitä tärkeimpiä toimintoja. Projektihierarkia avustaa eri projektiin liittyvien tiedostojen ryhmittelyssä ja käsittelyssä. Hierarkia mahdollistaa myös useamman projektin yhdistämisen projektiryhmäksi. Käyttöliittymä- ja muiden komponenttien, kuten tietokantayhteyksien ominaisuudet voidaan asettaa kohdalleen erillisen työkaluikkunan kautta. Ominaisuuksia on mahdollista asettaa ja tarkistaa myös ajonaikaisesti ohjelmakoodissa. Komponenttipaletti Projektihierarkia Komponentin ominaisuudet Käyttöliittymän muokkaus Editori Kuva 1. Visual Basic työpöytä Ohjelmakoodin muokkaukseen käytettävä editori sisältää tuottavuutta parantavia toimintoja, joista hyödyllisimpiä ovat koodin täydentäminen ja automaattiset opasteet. Ohjelmoijan ei tarvitse muistaa metodin tarkkaa nimeä, vaan täydennystoiminto osaa listata eri luokkien sisältämät metodit ja attribuutit rivin alkuosan perusteella. Esimerkki täydennyksestä näytetään kuvassa 2. Kuva 2. Esimerkki ohjelmakoodin täydennyksestä 2
Automaattiset opasteet nopeuttavat ohjelmointia esittämällä funktioiden tarvitsemat parametrit sitä mukaa, kun niitä tarvitaan. Kuva 3 sisältää esimerkin automaattisista opasteista. 2.2 Koodin generointi Kuva 3. Opasteet helpottavat muistamista. Class Builder Utility on Visual Basicin mukana tuleva add-in lisäosa, joka nopeuttaa oliopohjaista ohjelmointia. Ohjelmoijan tarvitsee vain nimetä tarvittavat luokat, niiden attribuutit ja metodit sekä asettaa näiden tietotyypit, minkä jälkeen Class Builder -lisäosa generoi projektiin tarvittavat luokkatiedostot ja metodien rungot. Kuvassa 4 näkyy Class Builder toiminnon luokkahierarkia ja taustalla clskurssi-luokkaan generoitua koodia. Kuva 4. Class Builder Utility. Class Builder Utilityn lisäksi koodia voidaan generoida esimerkiksi VB Data Object Wizard työkalulla, joka tuottaa tietokantaan sidottuja luokkia. Näiden lisäksi Visual Basicin projektimallit (templates) sisältävät myös wizardtoimintoihin perustuvia malleja. 3
2.3 Virheenjäljitys Visual Basicin virheenjäljitysominaisuudet tukevat perinteistä white-boxmenetelmää. Ohjelmaa voidaan suorittaa rivi riviltä, tai sinne voidaan asettaa pysähtymiskohtia (breakpoint). Pysähtymiskohtiin voidaan myös asettaa ehtolauseita, jolloin esimerkiksi silmukan sisällä ei ole pakko pysähtyä jokaisella suorituskerralla. Pysähtymiskohtien lisäksi ohjelman suoritus on mahdollista pysäyttää käsin ja jatkaa sen suoritusta myöhemmin uudelleen. Virheenjäljitystä tukee myös mahdollisuus tarkkailla ohjelman muuttujien tilaa suoritusaikana. Muuttujien arvoja on myös mahdollista muokata kesken suorituksen. Erittäin tehokas keino virheenjäljityksessä onkin yhdistää muuttujien arvojen muokkaaminen ja mahdollisuus palata ohjelman suorituksessa taaksepäin halutulle riville ja suorittaa koodi jälleen siitä eteenpäin. Kuvassa 5 on esimerkkiohjelma, jossa on asetettu pysähtymiskohta if-lauseen kohdalle. Pysähtymiskohdassa voidaan tarkistaa, mikä on i:n arvo. Ohjelman suoritus voidaan tämän jälkeen siirtää eteen- tai taaksepäin haluttuun kohtaan hiirellä osoittamalla. Tarvittaessa myös ohjelmakoodia voidaan rajoitetusti muokata kesken suorituksen. Kuva 5. Ohjelman suoritusta on mahdollista seurata merkintöjen avulla. 3 Sovellusalueet Matalan oppimiskynnyksen ja erilaisten muunnelmiensa ansiosta Visual Basic on levittäytynyt laajalle alueelle Windows-sovellusten maailmassa. Markkinointimateriaalien mukaan Visual Basic soveltuu niin ohjelmointia 4
aloittelevalle käyttäjälle kuin ammattilaisellekin, ja sovellusalueet vaihtelevat pienistä yhden käyttäjän sovelluksista laajoihin monen käyttäjän järjestelmiin [MS00b]. Seuraavissa luvuissa tarkastellaan Visual Basicin käyttöä ja soveltuvuutta käyttöliittymäsuunnitteluun, tietokantasovellusten laatimiseen ja WWW-palvelinsovelluksissa. 3.1 Käyttöliittymäsuunnittelu Käyttöliittymäsuunnittelu edellyttää usein prototyyppisovellusten laatimista ja siten erityisiä työkaluja, jotta prototyyppien toteutus ei vaatisi kohtuuttomasti aikaa. Eräs ratkaisutapa kiireen torjumiseksi on hyödyntää RADsovelluskehittimiä, joiden avulla käyttöliittymä syntyy yleensä nopeasti ja pienellä määrällä itse kirjoitettua ohjelmakoodia. Sovelluskehittimien nopeus perustuu valmiskomponenttien hyödyntämiseen ja tehokkaaseen käyttöliittymään. Standardisovellusten laatiminen nopeutuu, kun kalenteri, editoitava tekstikenttä tai napit saadaan valmiista valikoimasta. Menetelmä ei kuitenkaan palvele käyttöliittymäsuunnittelun tarpeita. Hyvä käyttöliittymä edellyttää käyttäjän tarpeiden huomioimista tilannekohtaisesti, eivätkä valmiista muotista tulevat peruskomponentit monestikaan ole riittävän laadukkaita tai räätälöitäviä, jotta niitä voitaisiin hyödyntää käyttöliittymäratkaisujen mallintamisessa. 3.2 Tietokantasovellukset Tietokantasovellusten määrä kasvaa jatkuvasti erilaisissa käyttötarkoituksissa. Tietokantojen hyödyntämisestä onkin pyritty tekemään helppoa useissa sovelluskehittimissä [Inp00, MS00c], eikä Visual Basic ole poikkeus. Lähes kaikki Visual Basicin peruskomponentit sisältävät mahdollisuuden liittää ne suoraan tietokannasta saatavaan dataan. Tietokantojen hyödyntämistä tuetaan myös erillisellä luvussa 2.2 esitellyllä VB 6 Data Object Wizard työkalulla sekä Visual Basiciin kuuluvalla Visual Data Manager laajennoksella. Laajennusten lisäksi Visual Basic tukee ja hyödyntää Microsoftin ActiveX Data Objects eli ADO-tietokantaohjelmointimallia [MS00d]. Kuvassa 6 esitetään ADOoliomallin rakenne. Tietokantasovelluksiin Visual Basic siis soveltuu hyvin. 5
Kuva 6. ADO-oliomallin rakenne [MS00e] 3.3 WWW-palvelinsovellukset WWW-palvelujen joukko laajenee huimaavaa vauhtia. Sivujen sisältöä on ylläpidettävä jatkuvasti, ja sivuston dynaamisuus on yhä useammin eräs perusvaatimuksista palvelua suunniteltaessa. Visual Basicin soveltuvuus websovellusten kehittämisessä perustuu COM-rajapintaan. Sovelluskehittimellä voidaan luoda itsenäisiä ActiveX-kirjastoja, jotka sijoitetaan WWW-palvelimelle. Kirjaston tarjoamia palveluja hyödynnetään luomalla siitä ilmentymiä, ja käyttämällä tarjolla olevia metodeja. Toinen vaihtoehto on luoda erillisiä WebClass-sovelluksia, jolloin kaikki palvelimelta käyttäjälle päin näkyvä syöte generoidaan Visual Basic sovelluksessa. COM-rajapintaan perustuvia ActiveX-kirjastoja hyödynnettäessä ohjelmointikielenä toimii Visual Basicia rajoitetumpi VBscript-kieli. VBscriptpohjaisia sivuja suoritetaan WWW-palvelimella, ja ne voivat sisältää sekä HTMLosuuksia että suoritettavaa skriptikieltä. Skriptien avulla on mahdollista luoda ilmentymiä Visual Basicilla kirjoitetuista ActiveX-kirjastoista, jolloin päästään hyödyntämään niihin rakennettuja tietokantayhteyksiä tai muita ominaisuuksia. VBscript:llä toteutettuja sivuja kutsutaan Active Server Pages eli ASP-sivuiksi. Vastaava tekniikka Java-pohjaisena on nimeltään Java Server Pages eli JSPtekniikka. 6
4 Puutteet Pitkästä ominaisuuslistasta huolimatta Visual Basic sisältää myös joukon heikkouksia ja puutteita, jotka hankaloittavat sen hyödyntämistä. Windows- ja Microsoft-sidonnaisuus ovat ehdottomasti eräs huonoista puolista. Laadittujen sovellusten siirtäminen toiseen käyttöympäristöön on käytännössä mahdotonta, mikä aiheuttaa rajoitteita, mikäli laite- tai käyttöjärjestelmäalustaa myöhemmin haluttaisiin jostakin syystä vaihtaa. Ohjelmointikielenä Visual Basic on kehittynyt alkuperäisestä Basicista, mutta kantaa edelleen vanhoja vaikutteita mukanaan. Virheiden käsittely on hankalaa ja perustuu edelleen goto-rakenteiden käytölle, mikä johtaa tietyissä tilanteissa vaikeaselkoiseen ohjelmakoodiin. Virheenkäsittelyn lisäksi puutteita löytyy olioohjelmoinnissa, josta puuttuu mm. luokkien aito periytyminen. Visual Basicilla laadittujen ohjelmien asennus tuottaa myös vaikeuksia, sillä 20 kilotavun kokoinen ohjelma vaatii mukaansa pahimmillaan usean megatavun verran erilaisia ajonaikaisia kirjastoja. Palvelinympäristössä ajonaikaiset kirjastot taas saattavat aiheuttaa ongelmia, sillä niiden versionhallintaa ei ole toteutettu riittävän tehokkaasti. Komponenttipohjainen ohjelmointitapa kärsii myös siitä, että Visual Basic ei toistaiseksi anna yhtä laajoja mahdollisuuksia omien komponenttien laatimiselle kuin esimerkiksi Visual Studio pakettiin kuuluva Visual C++. 5 Yhteenveto Visual Basic on keskitasoa helppokäyttöisempi ja käyttäjäystävällisempi sovelluskehitin, joka soveltuu yllättävän moneen käyttötarkoitukseen. Puutteista huolimatta Visual Basic on hyvä sovelluskehitin, jonka käyttö todennäköisesti tulevaisuudessa kasvaa entisestään. Paras tae Visual Basicin suosiolle todennäköisesti onkin valmiskomponenttien valtava määrä, ja yhteensopivuus myös muiden COM-rajapintaa tukevien ohjelmointivälineiden kanssa. 7
Viitteet Inp00 MS00a MS00b MS00c MS00d MS00e Inprise Borland Delphi - High Productivity for the Internet, http://www.inprise.com/delphi/productinfo/description.html, [30.10.2000] Microsoft COM Technologies, http://www.microsoft.com/com/default.asp, [29.10.2000] Microsoft Visual Basic datasheet, http://msdn.microsoft.com/vbasic/prodinfo/datasheet/default.asp, [29.10.2000] Microsoft Visual C++ datasheet, http://msdn.microsoft.com/visualc/prodinfo/datasheet/default.asp, [30.10.2000] Microsoft Universal Data Access ADO, http://www.microsoft.com/data/ado/default.htm, [30.10.2000] Microsoft ADO programming model, http://www.microsoft.com/data/ado/prodinfo/progmod.htm, [30.10.2000] 8