DreamApply tarkvara koodiaudit

Aruanne Eesti InIotehnoloogia Sihtasutuse lepingule nr. 4-2/12-04
Baltic IT Solutions OÜ
Koidu 122-2, 10139 Tallinn
Tel. ¹372 5650 2282
inIo¸bits.ee
www.bits.ee
Tallinn
2012
Sisukord
1. SISSEJUHATUS..............................................................................................................................3
2. METOODIKA..................................................................................................................................4
3. TARKVARA ARHITEKTUUR JA TEHNILINE DISAIN..............................................................7
4. LÄHTEKOODI KVALITEET.........................................................................................................9
4.1 Kommentaarid SVN-repositooriumis...................................................................................9
4.2 Kommentaarid lähtekoodis...................................................................................................9
4.3 TODO ja FIXME märgised kommentaarides ....................................................................10
4.4 Koodi stabiilsus ..................................................................................................................11
4.5 Vastavus kodeerimisstandardile..........................................................................................14
4.6 Kopeeritud kood .................................................................................................................15
5. DOKUMENTATSIOON................................................................................................................17
6. INSTALLEERITAVUS .................................................................................................................19
7. KOKKUVÕTE...............................................................................................................................20
LISAD................................................................................................................................................22
Lisa A. PHPLOC väljund..........................................................................................................22
Lisa B. PHP Code SniIIeri väljund...........................................................................................23
Lisa C. PHP Mess Detector väljund..........................................................................................24
Lisa D. Joeli Testi küsimustik...................................................................................................45
Kuupàev Autor Muudatused
12.03.2012 Zahhar Kirillov Esialgne versioon.
15.03.2012 Kärt Piirisild Keelekorrektuur.
21.03.2012 Zahhar Kirillov Lisatud viited allikatele p.3 ja p.5, täiendatud vormistus.
1. SISSEJUHATUS
Käesolev aruanne sisaldab Dream Group OÜ loodud ,DreamApplv' tarkvarapaketi lähtekoodi
ja selle dokumentatsiooni analüüsitulemusi. Tarkvara testimine viidi läbi perioodil 15.
veebruar 15. märts 2012 vastavalt lepingule nr 4-2/12-04 Eesti InIotehnoloogia Sihtasutuse
ja Baltic IT Solutions OÜ vahel. Tööde teostajaks on Zahhar Kirillov (MSc), Baltic IT
Solutions OÜ tegevjuht ja Eesti Ettevõtluskõrgkooli Mainor InIotehnoloogia õppetooli
tarkvaraarenduse lektor, kel on 10-aastane töökogemus spetsialistina tarkvaraarenduses, sh 8
aastat PHP-programmeerimiskeeles, millega on loodud ka uuritav rakendus.
Käesoleva analüüsi eesmärgiks on välja selgitada, kas tarkvara edasiarendamine on
jätkusuutlik ning kas lahenduse lähtekood võimaldab selle üleandmist edasiarendamiseks
kolmandatele isikutele. Eesmärgi saavutamiseks tuleb anda sõltumatu hinnang DreamApplv
tarkvara lähtekoodi kvaliteedile, st kontrollida, kuivõrd see vastab kaasaegseile parimaile
praktikaile tarkvaraarenduses. Analüüsi ülesandeks on hinnata ka tarkvara arhitektuuri ja
tehnilise disaini lahendust, dokumentatsiooni piisavust, selle hooldatavust vastavalt headele
tavadele ning testida tarkvara installeeritavust. Tulemuste objektiivsuse tagamiseks on töö
käigus kasutatud mitmeid automaatse lähtekoodi kontrollimise vahendeid, mille raportid on
välja toodud töö lisas. Saadud tulemuste baasil luuakse nõuete kogum jätkuarenduste
tellimiseks ning esitatakse üldine kokkuvõte ja soovitused.
Analüüsi sisendiks on audiitorile üle antud dokument pealkirjaga ,DreamApplv Developer
Docementation' ja tarkvara lähtekoodid SVN-koodihoidlas, mis muuhulgas sisaldavad ka
juhiseid rakenduse installeerimiseks ja seadistamiseks. Tellija varustas audiitori ka serveriga
(Ubuntu 10.04.4 LTS), mida on kasutatud tarkvara installeerimiseks ja testide käivitamiseks.
Koodi inspekteerimine viidi läbi audiitori tööjaamas (MacOS / NetBeans IDE).
Valminud aruanne on mõeldud kõigile ülalmainitud osapooltele aktiivseks arutamiseks,
olemasoleva rakenduse parimaks muutmiseks ning vajadusel võib olla ka sisendiks
edasiarenduse tellimiseks.
3
2. METOODIKA
Tellija püstitatud ülesande lahendamist võib iseloomustada kui mitteIunktsionaalset ,white-
box' testimist, mille Iookuses on vaid tarkvara lähtekoodi kvaliteet. Kõik muu rakenduse
turvalisus, jõudlus, kasutusmugavus, kokkusobivus jms jäi käesolevast uuringust välja.
Lähtudes Iaktist, et tegemist on küllaltki mahuka rakendusega, mille kompleksne analüüs oli
vaja teostada suhteliselt piiratud ressurssidega (üks audiitor ja 40 inimtundi tööaega ühe
kalendrikuu jooksul), kombineeriti kõigi eesmärkide saavutamiseks uuriva testimise
(exploratorv testing
1
) lähenemine ja sessioonipõhise testimise (session-based testing
2
) võtted.
Uuriva testimismeetodi valiku kasuks räägib ka asjaolu, et peamiseks sisendiks ongi tarkvara
lähtekood ise ning sellega ei kaasnenud põhjalikku dokumentatsiooni, va sissejuhatuses
mainitud ,Developer Documentation' Iail. Käesoleva analüüsi kontekstis tähendab uuriv
testimine, et audiitor teeb järeldusi ja ettepanekuid, seostades programmi lähtekoodi kehtivate
parimate praktikate, isikliku kogemuse ning olemasoleva dokumentatsiooniga. Kuna
lähtekoodi maht ei võimalda kontrollida kõiki koodiridu, teostab audiitor vaid teatud Iailide
pistelist kontrolli. Valimi moodustavad tähtsamad Iailid, mis kirjeldavad tarkvara arhitektuuri
ning määravad selle tehnilise disaini, lisaks ka need, mis sisaldavad olulist inIot rakenduse
äriloogika kohta, mõningad sisend- ja väljundIailid ning üksikud konIiguratsiooniIailid.
Eraldi võeti luubi alla need koodijupid, mis valiti välja automaatseid lähtekoodi kontrollimise
vahendeid kasutades. Mainitud automaatvahendite ülesanneteks on kindlaks teha, kas
lähtekood vastab selle vormistamise headele tavadele ning tuvastada kõikvõimalikud
kõrvalekalded valitud kodeerimisstandardist. Vastava tarkvara poolt probleemsena välja
selekteeritud koodijuppide suhtes teeb audiitor otsuse, kas antud vihje on õigustatud ja
avastatud puudus tõepoolest ohtlik tarkvara edasiarenduse jätkusuutlikkusele või mitte.
1 Bach, J (2003). "Exploratory Testing Explained" (http://www.satisIice.com/articles/et-article.pdI).
2 Kalman, S (2007). ,Session-Based testing Lite. Components oI Session-Based Test Management'
(http://www.quardev.com/content/whitepapers/SBTMLite¸samkalman.pdI ).
4
Antud testimise käigus kasutati nelja sellist vahendit:
1. PHP Depend
3
populaarne tööriist, mis võimaldab mõõta erinevaid tarkvara
kvaliteedinäitajaid, võrrelda neid teaduslike standarditega ning jõuda sel viisil
järeldusteni koodi kvaliteedi kohta. Samuti kogutakse selle tarkvara abil üldist
kvantitatiivset inIot lähtekoodi kohta. Kasutatud versioon 1.0.4 (uuend. 25.02.2012).
2. PHP CodeSniffer
4
üks vanimaist (esimene versioon ilmus PEAR repositooriumis
aastal 2006) vahendeist, mis valideerib koodi vastavust valitud standardile. Kasutatud
versioon 1.3.2 (uuend. 17.02.2012).
3. PHP Mess Detector
5
suhteliselt uus projekt (2010), mis samuti keskendub erinevate
kvaliteedimõõdikute arvutamisele, kuid Iokusseerub nende esitamisele
kasutajasõbralikul ja ka mittespetsialistile arusaadaval viisil. Kasutatud versioon 1.3.3
(uuend. 29.02.2012).
4. Sebastian Bergmann´i PHP Testing Toolbox
6
skriptide kogum, mis sisaldab
Copv/Paste Detector'i, Dead Code Detector'i, Lines of Code Counter'i jt
pistikprogramme.
Kogu testimine viidi läbi sessioonipõhiselt, mis tähendab, et ühe päeva jooksul keskendus
audiitor vaid ühele uuritavale aspektile, olgu selleks mõne ülalpool mainitud töörista
rakendamine ja selle abil inIo kogumine või siis käsitsi juhuslike Iailide sirvimine ja nende
sisu põhjal märkemete tegemine. Eraldiseisva sessioonina korraldati ka installeeritavuse
testimine, dokumentatsiooniga tutvumine, aruande koostamine jne. Sessiooni pikkuseks valiti
4 tundi ning ühel päeval korraldati vaid üks testimissessioon. Juhul, kui testimise eesmärk
saavutati varem, lõpetas audiitor selleks päevaks ka testimise ega alustanud uut sessiooni; kui
ühest sessioonist ei piisanud, korraldati samateemaline testimisessioon ka järgneval päeval.
Kogu tööaeg jagati 10 testimissessiooni vahel:
• dokumentatsioon 1 sessioon
• installeerimine 2 sessiooni
3 http://pdepend.org/
4 http://pear.php.net/package/PHP¸CodeSniIIer
5 http://phpmd.org/
6 https://github.com/sebastianbergmann/
5
• arhitektuur ja tehniline disain (sh juhuslikult valitud koodijuppide inspekteerimine) 1
sessioon
• tööriistade rakendamine, nende poolt valitud Iailide analüüs 4 sessiooni
• ettepanekute ja soovituste ettevalmistamine, tulemuste vormistamine 2 sessiooni
Järgnevad peatükid sisaldavad testimissessioonide käigus tehtud olulisemaid tähelepanekuid
ning aspekte, millele audiitor soovitab pöörata Tellija ja Arendaja kõrgendatud tähelepanu.
6

Sign up to vote on this title
UsefulNot useful