Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije - Dokumentacija

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije - Dokumentacija - Presentation Transcript

    1. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Tehnička dokumentacija Verzija 1.0 Studentski tim: Nikola Brežnjak Robert Ivišić Tibor Pazman Vjekoslav Ratkajec Denis Ristić Neven Samac Željko Tepšić Nastavnik: Prof.dr.sc. Nikola Bogunović ©FER, 2008 FER 2 - Projekt Stranica 1 od 53
    2. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Sadržaj 1.  Uvod 3  2.  SMV kao web servis 5  2.1  Što je SMV (Symbolic Model Verifier)? 5  2.2  Web servisi i njihove platforme 7  3.  Opis razvijenog proizvoda 9  3.1  Odabir tehnologija za izradu web servisa 10  3.2  Pokretanje SMV-a preko PHP-a 13  3.3  Upravljanje pokrenutim procesima 19  3.4  Oblikovanje korisničkog sučelja 20  4.  Upute za korištenje 22  4.1  Instalacija operacijskog sustava Linux 23  4.2  Instalacija SMV 32  4.3  Instalacija Apache, PHP i MySQL 34  4.4  Instalacija i podešavanje distribuirane aplikacije 36  4.5  Korisničke upute 43  5.  Dodatak: Korisni alati za upravljanje projektom 46  5.1  Assembla – web servis za upravljanje projektom 47  5.2  Trac 51  5.3  Subversion (SVN) 52  6.  Literatura 53  7.  Korištena programska potpora 53  ©FER, 2008 FER 2 - Projekt Stranica 2 od 53
    3. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 1. Uvod „Model-checking“ je pojam pod kojim se podrazumijeva proces provjere da li je zadana struktura model opisan danim logičkim formulama. Koncept je općenit i može se primijeniti na sve vrste struktura. Najjednostavniji „model-checking“ problem je testiranje da li je zadana formula (napisana po definiranim logičkim pravilima) zadovoljena modelom odnosno strukturom koju smo dali na provjeru. Važan skup klasa „model-checking“-a razvijen je kako bi se pomoću algoritama moglo verificirati formalne sisteme. To je postignuto pomoću verifikacije struktura izvedenih prema hardverskim ili softverskim modelima (proizvodima) koji zadovoljavaju formalnu verifikaciju (najčešće su to formule pisane u logici koja dozvoljava vremenske konstante). Pioniri rada na verifikaciji modela pomoću takve logike su E.M. Clarke i E.A. Emerson 1982. te J.P. Queille i J. Sifakis 1982. Godine. „Model-checking“ se u najvećoj mjeri primjenjuje za hardverski dizajn. Za softverski dizajn verifikacija ne može biti u potpunosti algoritamska pa zbog toga upotreba nije u potpunosti smislena (može se dogoditi da se pogrešno dokaže valjanost/nevaljanost zadane funkcije i modela). Struktura je obično zadana kao opis izvornog koda, zadanog na industrijskom jeziku za opis hardvera ili jeziku za posebne upotrebe. Takav program odgovara automatu s konačnim brojem stanja, graf koji se sastoji od čvorova. Skup svojstava je dodijeljen svakom čvoru koji opisuju prijelaze i stanja. Čvorovi predstavljaju stanja sistema kojeg želimo provjeriti, modelirati. Poveznice tih čvorova predstavljaju moguće prijelaze koji mogu promijeniti i stanje cijelog automata. Formalno, problem se može postaviti ovako: zadano je željeno svojstvo, izraženo pomoću vremenske logike formulom p, strukturom M sa početnim stanjem s, odluči da li je M, s|=p . Ako je M završna struktura, kao što je slučaj s hardverom, „model-checking“ smanjuje upotrebu grafova. Model-checking alati: • Simbolički algoritmi predstavljaju graf implicitno koristeći formule u istaknutoj (korištenoj) logici. Upotreba BDD-a (Binary decision diagrams) je postala popularna 1992. Zbog rada Kena McMillana. • Ograničen „model-checking“ algoritam ima određen broj koraka k i provjerava da li ce se dogoditi pogreška u k ili manje koraka. Proces se može ponavljati sa sve većim brojem k dok se sve moguće greške ne provjere takvim iterativnim postupkom. ©FER, 2008 FER 2 - Projekt Stranica 3 od 53
    4. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 • Parcijalna redukcija poretka se koristi na eksplicitno prezentiranim grafovima kako bi se smanjio broj neovisnih prepletanja istovremenih konkurentnih procesa koji se trebaju uzeti u obzir. • Apstraktni pokušaji dokazivanja svojstava modela pojednostavljujući ga. Pojednostavljen sistem obično ne zadovoljava ista svojstva kao i originalni model pa je s toga nakon pojednostavljenja potrebno i usavršavanje novog modela. Primjer apstrakcije je kada u programu ignoriramo varijable koje nisu tipa boolean, a u obzir uzimamo samo varijable tipa boolean i proučavamo tok izvedbe programa. • CEGAR (Counter-example guided abstraction refinement) alat počinje sa grubom provjerom i iterativno ju profinjuje. Kada je pogreška pronađena alat ju obradi prema izvedivosti. Ako je pogreška izvediva dojavljuje se korisniku, ako nije, dokaz neizvedivosti se koristi za poboljšanje apstrakcije i provjera počinje ponovno. Danas postoji mnogo programskih implementacija alata za „model-checking“. Svaki alat ovisi o određenoj platformi na kojoj se pokreće. Upravo ta raznolikost može stvarati određene probleme kod korisnika. Problemi mogu nastati jer korisnici imaju instalirane određene platforme koje ne žele ili pak ne znaju promijeniti. Ukoliko korisnici i promijene svoje platforme opet postoje problemi jer neki korisnici nisu nikad koristili takve sustave, te je potrebno neko vrijeme da se priviknu i nauče koristiti takve sustave. Ovi svi problemi iziskuju dodatan napor i vrijeme da bi korisnik uspio u svojoj prvotnoj namjeri, a to je verificirati model. Rješenje koje bi riješilo spomenute probleme je takva aplikacija za „model checking“ za koju korisnik ne treba poznavati specifična obilježja platforme na kojoj se ona pokreće, takva aplikacija koja je uvijek dostupna sa bilo kojeg mjesta. Evolucijom informacijskih znanosti javila se potreba za kompleksnijom komunikacijom između klijenta i poslužitelja. Iz tog razloga nastaju Web usluge koje pružaju generičku, standardiziranu klijent-server paradigmu za pokretanje programa na poslužitelju. Najrašireniji način korištenja Web usluga je jednostavno pozivanje metoda na udaljenim računalima. ©FER, 2008 FER 2 - Projekt Stranica 4 od 53
    5. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 2. SMV kao web servis Kada smo se upoznali sa „model-checking“-om i uveli pojam web servisa, odnosno web usluge, u narednim poglavljima ćemo se baviti realizacijom specifičnog „model-checking“ alata u distribuiranu aplikaciju, odnosno pružanjem usluga formalne verifikacije preko Internet mreže. 2.1 Što je SMV (Symbolic Model Verifier)? SMV je sustav za simboličku provjeru modela. Program koji za nas provjerava da li za zadani model vrijedi M|=φ (M – Kripke struktura, φ – svojstvo izraženo u vremenskoj logici, CTL-u ) Slika 1 - Struktura SMV-a Kao ulaz sustava se prihvaća datoteka koja sadrži tekstualni opis programa (u SMV jeziku) koji predstavlja model sustava i dio koji je napisan u CTL logici koji predstavlja specifikaciju sustava. Kao izlaz SMV daje true ako je specifikacija zadovoljena za sva početna stanja modela. false u svim ostalim slučajevima i uz to i ispis koji pokazuje zašto navedeno svojstvo nije ispunjeno u modelu opisanom SMV programom. Algoritam za provjeru modela se temelji na simboličkom prikazu stanja i prijelaza pomoću BDD-a. SMV programi se sastoje od jednog ili više modula. Struktura tih modula je ista kao u programskim jezicima C, C++, Java gdje imamo jednu main funkciju, a ostale funkcije su potprogrami. Svaki modul se sastoji od deklaracije varijabli, dodjeljivanja vrijednosti varijablama te svojstava koja se žele provjeriti. ©FER, 2008 FER 2 - Projekt Stranica 5 od 53
    6. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Primjer datoteke napisane prema SMV pravilima može izgledati ovako: MODULE main VAR request: boolean; status: {ready,busy}; ASSIGN init(status):= ready; next(status):=case request: busy; 1: {ready,busy}; esac; SPEC AG(request -> AF status = busy) Objašnjenje primjera: Varijable: • request tipa boolean, pri čemu 1 standardno predstavlja TRUE, a 0 FALSE • status - enumerirana varijabla kao u npr. C# jeziku, ovdje je definirana tako da može poprimiti vrijednosti ready ili busy Inicijalna i sljedeća vrijednost varijable request nisu određene unutar programa, na taj način se modelira utjecaj okoline(odnosno varijabla request je određena okolinom) Varijabla status je parcijalno određena, inicijalno poprima vrijednost ready, ali postaje busy ako je request jednak true. Ako je request jednak false vrijednost varijable nije određena. Danas postoji nekoliko dostupnih SMV alata, među kojima su najznačajniji: • SMV (sveučilište Carnegie Mellon) – ne razvija se više • NuSMV – poboljšana verzija originalnog SMV-a. (ITC-IRST, sveučilište Carnegie Mellon, sveučilište Genoa sveučilište Trento) • Cadence SMV – temelji se na originalnom SMV-u (Cadence Berkeley Labs) Mi smo za potrebe ovog projekta odabrali SMV alat Carnegie Mellon-a, jer je alat besplatan, pruža dovoljno funkcionalnosti, te je službeni SMV alat na predmetu „Oblikovanje programske potpore“ na fakultetu Elektrotehnike i računarstva. ©FER, 2008 FER 2 - Projekt Stranica 6 od 53
    7. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 2.2 Web servisi i njihove platforme W3C (World Wide Web Consortium) definira web servis kao softverski sistem dizajniran da podrži interakciju između korisnika (računala) preko mreže. Ovakva definicija je općenita i odnosi se na mnogo sistema, ali uobičajeno se pojam web servisa odnosi na klijente i servere koji komuniciraju preko XML poruka koje prate SOAP standard. Specifikacije jezgre Specifikacije koje definiraju web servis su modularne, a kao rezultat toga nijedan dokument ne sadrži sve moguće varijacije. Kao rezultat toga ne postoji niti samostalna (jedna jedina specifikacija koja ne traži dopune), niti stabilan komplet specifikacija. Postoji nekoliko jezgrenih specifikacija koje su dopunjene ostalima u ovisnosti o izabranoj tehnologiji. To su : • SOAP (Simple Object Access Protokol): komunikacijski protokol, neovisan o platformi, baziran na XML-u koji se koristi za razmjenu informacije između aplikacije preko HTTP protokola. Razvijen je kako bi se omogućila jednostavna komunikaciju tekstualnim sadržajem preko HTTP komunikacijskog protokola koji je prilagođen upravo razmjeni tekstualnih sadržaja. Protokol je neovisan o programskom jeziku, platformi i jednostavno proširiv. • WSDL (Web Services Description Language): jezik baziran na XML-u koji omogućuje opis web servisa i sučelja za njihovo korištenje. Najčešće se koristi za serverski i klijentski kod, te za konfiguraciju. • UDDI (Universal Description Discovery and Integration): protokol koji omogućava pronalaženje meta-podataka o web servisima koji su potrebni kako bi ih aplikacije mogle naći u vrijeme korištenja (ili dizajniranja). PLATFORME: Web servis je u biti skup alata koji se mogu koristiti na razne načine. Tri najčešće korištena stila su RPC, SOA i REST. RPC – Remote procedure calls – RPC web servisi prezentiraju sučelja za raspodijeljene pozive funkcija ili metoda koja su poznata mnogim programerima. Operacija WSDL je baza RPC web servisa. Prvi alati za web servise bili su fokusirani na RPC te su zbog toga i bili najviše korišteni i podržani od strane programera. SOA – Service-oriented arhitecture - Web servisi mogu biti bazirani i na SOA konceptu gdje je glavna komunikacijska jedinica poruka, a ne operacija (proces). Ovaj stil se uobičajeno koristi za „message-oriented“ usluge. ©FER, 2008 FER 2 - Projekt Stranica 7 od 53
    8. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 REST - Representational state transfer - Stil programske arhitekture za distribuciju preko WWW-a. REST se striktno odnosi na skup mrežnih arhitektura izrađenih na principu dobrog definiranja i adresiranja resursa. ©FER, 2008 FER 2 - Projekt Stranica 8 od 53
    9. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 3. Opis razvijenog proizvoda Cilj ovog projekta je pružanje mrežne usluge formalne verifikacije. Takva usluga se stručno naziva web servis. Mi ćemo naš web servis temeljit na modelu klijent-poslužitelj. Izrada web servisa će se sastojat od postavljanja web poslužitelja i razvoja distribuirane aplikacije, koja će korištenjem već gotovog SMV alata ostvarivati mrežnu uslugu formalne verifikacije. Slika 2 - Use - case dijagram Standardan scenarij u procesu verifikacije je prikazan na slici 2. Korisnik dolazi na web stranicu za učitavanje datoteke na poslužitelj. Pokušava učitati datoteku. Ukoliko datoteka odgovara zahtjevima, sprema se na poslužitelj i korisnika se prebacuje na stranicu za pokretanje verifikacije. Ako su zadovoljeni zahtjevi za pokretanje verifikacije, odnosno ako nije pokrenut maksimalan broj procesa, pokreće se program za verifikaciju, te korisnik dobiva rezultate verifikacije. Korisnik cijeli proces može ponoviti. U narednim poglavljima biti će opisane samo ključne ideje i rješenja kod izgradnje web aplikacije za realizaciju mrežne usluge formalne verifikacije. U poglavlju 3.1 Odabir tehnologija za izradu web servisa biti će predstavljene tehnologije, obrasci i paradigme u programskom inženjerstvu koje omogućavaju izradu web aplikacije i ©FER, 2008 FER 2 - Projekt Stranica 9 od 53
    10. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 realizaciju web servisa. U poglavlju 3.2 Pokretanje SMV-a preko PHP-a biti će predstavljena osnovna ideja povezivanja web aplikacije napisane u PHP-u sa vanjskim programom poput SMV programskog alata za formalnu verifikaciju. Naglasak je na objektno orijentiranoj paradigmi. Opisi rješenja nekih najčešćih problema vezanih za upravljanje sa procesima koje je pokrenula web aplikacija su opisani u poglavlju 3.3 Upravljanje pokrenutim procesima. Poglavlje 3.4 Oblikovanje korisničkog sučelja opisuje korisničko sučelje, odnosno realizaciju učitavanja i provjere datoteka, pokretanje vanjskog programa i prikaz rezultata izvođenja. 3.1 Odabir tehnologija za izradu web servisa Naš rad na izradi ostvarenja mrežne usluge formalne verifikacije temeljit će se na GNU General Public License (GPL), odnosno na otvorenom kodu. Smisao ovakvog pristupa leži u činjenici da korištenjem jeftinih i moćnih programskih rješenja, koja su dostupna svima, u kombinaciji sa znanjem programskog inženjerstva, moguće je ostvariti vrlo kvalitetnu mrežnu uslugu. Za operacijski sustav odabran je Debian, distribucija Linuxa, koji se često nalazi u ulozi web poslužitelja. Više o instalaciji Debiana može se pronaći u poglavlju 4.1 Instalacija operacijskog sustava Linux. Isto tako, operacijski sustav Linux čini nativnu okolinu SMV programskom alatu. Za aplikaciju web poslužitelja odabran je Apache HTTP poslužitelj koji je jedan od najpoznatijih i najčešće korištenih HTTP poslužitelja na Linux/Unix sustavima. Apache podržava mnogo značajki. Mnoge od njih su implementirane i prevedene kao moduli koji nasljeđuju funkcionalnost jezgre. Ti su moduli najčešće server-side programski jezici (programski jezici koji se izvršavaju na poslužiteljskoj strani) poput PHP-a, obrasci za autentifikaciju itd. Apache se najviše koristi za prezentiranje statičkih i dinamičkih web stranica na WWW (World Wide Web). Distribuirana aplikacija temeljit će se na PHP (Hypertext Preprocessor) programskom jeziku. PHP je široko korišten skriptni jezik opće namjene, koji vrlo dobro odgovara WEB razvoju i može se vrlo lagano kombinirati sa HTML-om. PHP se najčešće pokreće na web poslužitelju, koji koristeći PHP kôd generira web stranice. Većina funkcija PHP-a je dizajnirano za Linux sustave. Za skladištenje i upravljanje podacima koristit ćemo MySQL relacijsku bazu podataka. Ta baza vrlo uspješno funkcionira u kombinaciji sa PHP-om. Za asinkronu komunikaciju klijent-poslužitelj i postizanje nekih dinamičnih elemenata HTML stranice koristit ćemo JavaScript skriptni jezik. JavaScript se najčešće koristi za client-side web razvoj. Za opis strukture tekstualno baziranih informacija koristit ćemo HTML jezik za opisivanje, u kombinaciji sa CSS-om za opis prezentacije dokumenta napisanih u HTML-u. ©FER, 2008 FER 2 - Projekt Stranica 10 od 53
    11. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Nakon navedenih svih tehnologija koje su nužne za ostvarenje mrežne usluge formalne verifikacije koristit ćemo već razvijene programske podrške napisane nad funkcijama PHP-a i JavaScripta. Takve programske podrške su poznate pod imenom framework. Framework je programska podrška koja implementira općenito rješenje za općeniti problem. Za JavaScript je korišten MooTools framework. MooTools je kompaktan, modularan, objektno orijentiran framework namijenjen učinkovitijem i browser kompatibilnom pisanju JavaScript koda . Framework za PHP koji smo koristili je CodeIgniter. CodeIgniter je moćan PHP framework koji je razvijen za PHP programere koji trebaju jednostavan i elegantan alat za stvaranje potpuno funkcionalnih web aplikacija. Omogućuje brzo stvaranje aplikacija pružajući bogate kolekcije knjižnica za često korištene zadatke, ali i jednostavno sučelje i logičnu strukturu za pristup tim knjižnicama. Temelji se na objektno orijentiranoj arhitekturi. Jedna velika prednost ovog frameworka je korištenje MVC (model-view-controller) obrasca. MVC je arhitekturalni obrazac (temelj na design obrascu) koji se koristi u programskom inženjerstvu. U kompleksnim računalnim aplikacijama koje korisniku prezentiraju veliku količinu podataka, programeri često žele razdvojiti podatke (model) i probleme korisničkih sučelja (view), tako da promjene vezane na korisničko sučelje nema utjecaja na upravljanje podacima, te da se podaci mogu prepoznati bez mijenjanja korisničkog sučelja. MVC rješava taj problem tako da razdvaja pristup podacima i poslovnu logiku od prezentacije podataka i korisničke interakcije, uvodeći posredničku komponentu kontroler (controller). • Model – Model obuhvaća specifičnu domensku reprezentaciju informacija s kojima aplikacija upravlja. Domenska logika daje značaj neobrađenim podacima (npr. računanje da li je danas nečiji rođendan itd.). Pod model spadaju mehanizmi komuniciranja sa sustavima stalne pohrane podataka (npr. baze podataka). • View – Prevodi model u oblik pogodan za interakciju, tipično element korisničkog sučelja. Za jedan model može postojati nekoliko pogleda, svaki sa određenom svrhom. • Controller – Obrađuje i odgovara na događanje (engl. events), tipično korisničke akcije koje mogu uzrokovati promjene na modelu. Kod web aplikacija, view je zapravo HTML stranica, controller je kôd koji prikuplja dinamičke podatke i generira sadržaj unutar HTML-a. Na kraju, model je predstavljen sa akutualnim sadržajem, obično spremljen u bazu podataka ili XML datoteke. Slika 3 prikazuje protok podataka u CodeIgniter-u. ©FER, 2008 FER 2 - Projekt Stranica 11 od 53
    12. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 3 - Protok podataka u CodeIgniter-u • index.php je prednji kontroler koji inicijalizira osnovne resurse potrebne za pokretanje CodeIgniter-a, • Router pregledava HTTP zahtjev da bi odredio što treba s njime napraviti. • Ako postoji cache datoteka, ona se direktno šalje Internet pregledniku, zaobilazeći pri tome normalno izvođenje sustava. • Sigurnost. Prije nego se učita aplikacijski kontroler, HTTP zahtjev i svi korisnički podaci koji su predani se filtriraju radi sigurnosti. • Kontroler učitava model, jezgrine knjižnice, te sve ostale resurse koji su potrebni za procesuiranje specifičnog zahtjeva. • Finalizirani view se generira i šalje se Internet pregledniku. Ako je međuspremnik (cache) uključen, view se prvo sprema u međuspremnik kako bi se naredni zahtjevi mogli poslužiti. ©FER, 2008 FER 2 - Projekt Stranica 12 od 53
    13. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Struktura direktorija CodeIgniter je sljedeća: Slika 4 - struktura direktorija CodeIgniter frameworka Najvažniji je direktorij application, odnosno njegov sadržaj. U direktoriju config nalaze se konfiguracijske datoteke kao što je datoteka za bazu podataka, te datoteka za općenite postavke CodeIgniter frameworka. Direktoriji controllers, models i views su namijenjeni za MVC. Direktorij libraries služi za spremanje knjižnica koje smo sami razvili. Direktorij hooks sadrži datoteke koje proširuju funkcionalnosti same jezgre CodeIgnitera bez potrebe za modificiranjem koda jezgre. Direktorij errors sadrži datoteke za prikaz i obradu grešaka. U nastavku ćemo se baviti rješavanjem konkretnog problema u izradi web aplikacije. Dodatne detalje vezane za korištenje frameworka nećemo objašnjavati, osim na mjestima gdje je to potrebno za razumijevanje određenog rješenja. 3.2 Pokretanje SMV-a preko PHP-a Jedan od glavnih problema u realizaciji mrežne usluge formalne verifikacije je povezivanje web aplikacije sa nekom vanjskom aplikacijom, konkretnije SMV aplikacijom, odnosno kako ostvariti međusobnu komunikaciju i upravljanje web aplikacije sa vanjskom aplikacijom. Pod pojmom vanjska aplikacija podrazumijevamo aplikaciju koja je instalirana na istom sustavu kao i web aplikacija. PHP posjeduje nekoliko funkcija za pokretanje vanjskih programa, te je za ovu aplikaciju ©FER, 2008 FER 2 - Projekt Stranica 13 od 53
    14. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 najbolja od njih exec() funkcija. Međutim, mi smo tu exec() funkciju zamotali u mnogo funkcijske snažnije i sigurnije klase. Pri dizajniranju takvih klasa koristili smo sljedeća načela: oblikuj konzervativno, povećaj razinu apstrakcije, oblikuj sustav tako da se omogući ponovna uporabivost njegovih dijelova, oblikuj za fleksibilnost, sadržajna međuovisnost, smanjenje međuovisnosti itd. Prva i osnovna klasa je ProgramCommon. ProgramCommon implementira sučelje za pokretanje nekih općenitih programa, s mogućnošću zadavanja dodatnih parametara. Ova klasa je namijenjena za Linux/Unix sustave. Opisat ćemo jedan najčešći scenarij korištenja ove klase, neće biti posebno objašnjene sve metode. Opis metoda je uredno dokumentiran u izvornome kodu korištenjem PHPdoc komentara. Pozivanjem konstruktora klase predaje se kao argument polje opcija koje mogu sadržavati stazu do ulazne i izlazne datoteke, čije se vrijednosti spremaju u privatnu varijablu opcije. Nakon stvaranja objekta potrebno je zadati stazu do vanjskog programa kojeg želimo pokrenuti. Moguće je dodavati parametre za vanjski program kojeg želimo pokrenuti. To je moguće na dva načina: zadavanjem svakog parametra posebno, ili predajom polja parametara. Nakon što smo to napravili možemo pozvati metodu za pokretanje vanjskog programa preko PHP-a, u dvije inačice: exec – PHP skripta čeka da se izvrši vanjski program i execInBackground – vanjski program se izvršava u pozadini a PHP skripta se dalje nastavlja izvoditi. Bilo kakvi rezultati koji su se generirali na standardnom izlazu spremaju se u privatnu varijablu izlaz, te se sadržaj može dobiti pozivom metode getIzlaz() (ovo samo vrijedi u slučaju izvođenje exec() funkcije). ©FER, 2008 FER 2 - Projekt Stranica 14 od 53
    15. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 5 - UML class diagram – ProgramCommon i specifične program klase ProgramCommon klasa nije namijenjena za čestu upotrebu u direktnom obliku, već joj je namjena da bude parent klasa specifičnim klasama vanjskih programa. Dakle da ostale specifične klase nasljeđuju općenita svojstva ProgramCommon klase. Primjerice, kao što su SMV i ps klase (Slika 5). Na prvi trenutak ćemo zanemariti imena klasa na slici 5, te će taj dio biti objašnjen u nastavku. Klasa SMV nasljeđuje osnovna svojstva ProgramCommon klase, te implementira specifične metode karakteristične za izvođenje SMV programskog alata. Tako metoda runSMV() postavlja određene parametre i pokreće SMV program, getResults() metoda obrađuje rezultate SMV programa za prezentaciju na web stranici, te na kraju metoda testSmvError() ispituje da li je došlo do kakve greške kod izvođenja SMV programa i ovisno o ishodu vraća odgovarajući statusni kod. ©FER, 2008 FER 2 - Projekt Stranica 15 od 53
    16. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Cijeli taj model Program klasa stavljamo na jednu višu apstraktnu razinu i definiramo novu klasu Program koja ima ulogu kolekcije, odnosno grupiranje više različitih implementacija slične funkcionalnosti. Naime, ako pogledamo sliku 5, vidjet ćemo da klase SMV i ps (naredba u Linuxu ps za ispis stanja pokrenutih procesa) su programi, koje za strukturno gledajući iste ulazne podatke daju iste izlazne podatke, no sam proces izvođenja tih programa je različit. Tako da kada želimo instancirati objekt tipa Program sa ugrađenom funkcionalnosti SMV programa, pozivamo metodu factory() klase Program, i kao argumente stavljamo ime željenog programa sa odgovarajućim opcijama. ©FER, 2008 FER 2 - Projekt Stranica 16 od 53
    17. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Još jedna vrlo važna stvar kod razvijanja bilo kakvih aplikacija je upravljanje iznimkama, i oporavak od tih iznimki. PHP od verzije 5 pruža dosta poznati mehanizam, koji je popularan i u drugim programskim jezicima, a to je try-catch. Princip je sljedeći, kada se dogodi iznimka mi ju trebamo uhvatiti. Isto tako je omogućeno stvaranje vlastitih iznimaka koje obavezno moraju naslijediti klasu Exception, na onim mjestima gdje je to potrebno. Tako su za potrebe upravljanja iznimkama u modelu Program stvorene dvije klase: klasa ProgramConst sadrži konstante kodova za određene pogreške i metodu koja za određeni kod pogreške vraća objašnjenje za korisnika o kakvoj pogrešci se radi, te klasa ProgramException koja za sve uhvaćene iznimke modela Program vraća odgovarajuću poruku koja točno određuje datoteku i liniju gdje se iznimka dogodila. Slika 6 - Upravljanje iznimkama ©FER, 2008 FER 2 - Projekt Stranica 17 od 53
    18. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 7 - Class diagram paketa program ©FER, 2008 FER 2 - Projekt Stranica 18 od 53
    19. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 3.3 Upravljanje pokrenutim procesima U prethodnom poglavlju opisali smo postupak kojim preko PHP-a možemo pokrenuti neki vanjski program. No što se događa ako na takav način pokrećemo na stotine zahtjevnih procesa? Postoji velika mogućnost da će se sustav srušiti zbog preopterećenja procesora i radne memorije. Tom problemu se mora doskočiti upravljanjem pokretanja procesa i upravljanjem već pokrenutih procesa. Problem upravljanja pokretanja procesa se vrlo lako rješava korištenjem mehanizama relacijske baze podataka, konkretno MySQL-a. Dovoljno je definirati jednu tablicu (smv_activeprocesses) koja će sadržavati zapis (activeProcesses) o broju pokrenutih procesa. U konfiguracijskoj datoteci naše web aplikacije se definira maksimalan broj pokrenutih procesa. Kada neki korisnik pokuša pokrenuti SMV proces, radi se SQL upit koji pokušava povećati za jedan sadržaj n-torke koja sadrži zapis o broju pokrenutih procesa, ali da bi se to obavilo u upitu je definiran uvjet koji provjerava da li je trenutni broj zapisan u bazi veći ili jednak maksimalno dozvoljenom broju. PHP kod dobiva rezultat tog izvođenja i u negativnom slučaju ne dozvoljava pokretanje SMV procesa, a u pozitivnom slučaju dozvoljava. Ovdje dolazimo do problema sinkronizacije, jer što se dešava kada nekoliko korisnika istovremeno šalje upite bazi? U tom slučaju sam mehanizam baze prihvaća onaj upit koji prvi stigne do baze. Na prvi pogled se ovo čini zadovoljavajuće, no to vrijedi samo za jedan upit. A što ako mi trebamo napraviti nekoliko upita , a da pri tome ne želimo da se sadržaj baze mijenja od strane nekih drugih procesa? U tom slučaju koriste se transakcijski mehanizmi. Ovdje je važno napomenuti da postoje nekoliko tipova tablica u MySQL-u, a InnoDB tip tablice podržava transakcije. Srećom, naš problem se može svesti na jedan upit te nam transakcijski mehanizmi nisu potrebni, te se naša tablica može koristiti i na onim MySQL sustavima koji ne podržavaju InnoDB. Upit je sljedećeg oblika: UPDATE smv_activeProcesses SET activeProcesses = activeProcesses+1 WHERE activeProcesses < maksimalno_dozvoljeni_broj_pokrenutih_procesa LIMIT 1 ; Problem sa upravljanjem već pokrenutih procesa riješili smo definiranjem Proces i Processes klasa. Proces klasa nije ništa drugo nego spremnik podataka o procesu kao što je ime procesa i njegov pid. Processes klasa je definirana kao klasa prilagođena CodeIgniter frameworku, te je njezina uloga dohvaćanje pokrenutih SMV procesa korištenjem klase ps iz paketa program (Slika 5) koja izvodi ps Linux naredbu sa specifičnim opcijama da bi dobila listu pokrenutih SMV procesa. Processes Klasa sadrži metode koje mogu ubiti pojedini proces, ili sve pokrenute SMV procese. Metoda checkElapsedTime provjerava da li je vrijeme izvođenja pokrenutih SMV procesa prekoračilo maksimalno dozvoljeno vrijeme, te ako takvi postoje onda ih se ubija. ©FER, 2008 FER 2 - Projekt Stranica 19 od 53
    20. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 8 - Upravljanje procesima Metoda checkDbProcesses() provjerava konzistentnost podataka u bazi o pokrenutim procesima, sa stvarnim stanjem. Ukoliko je u bazi prevelik broj, zapis se ispravlja u brojku koja je nastala izvođenjem ps naredbe. Kako izvođenje ovih metoda ovisi o pokretanju skripte, definirani su automatski poslovi (crontab) koji u određenom vremenskom intervalu pozivaju navedene metode. Ta funkcionalnost je specifična za Linux operacijske sustave, te je način konfiguriranja je objašnjen u poglavlju 4.4 Instalacija i podešavanje distribuirane aplikacije. 3.4 Oblikovanje korisničkog sučelja Samo oblikovanje korisničkog sučelja obuhvaća nekoliko faza, a one su: učitavanje SMV datoteke, provjera ispravnosti datoteke, verifikacija i prikaz rezultata (Slika 2). Svaki korisnik koji dođe na stranicu dobiva svoju sjednicu, odnosno identifikacijski broj sjednice. Upravo po toj sjednici moći ćemo razlikovati tog korisnika od ostalih korisnika na web stranici. Kada korisnik uspješno učita datoteku na poslužitelj stvara se direktorij s imenom jednakim identifikacijskom broju sjednice, te u njega sprema učitanu datoteku. Sve se sjednice bilježe u bazi podataka (tablica ci_sessions), da bi se kasnije, kada sjednice isteknu, na temelju tih podataka mogli obrisati svi direktoriji i njihovi sadržaji, radi održavanja sustava. U tu namjenu se koristi knjižnica DeleteFileFolder (Slika 9). Kod učitavanja datoteke potrebno je provjeriti da li je učitana datoteka ispravna SMV datoteka, te da li je općenito sustav u mogućnosti pohraniti takvu datoteku. U tu svrhu napravljena je knjižnica Fileupload (Slika 9) koja obavlja te provjere, te stvara pripadajuće strukture direktorija za pohranjivanje datoteke. ©FER, 2008 FER 2 - Projekt Stranica 20 od 53
    21. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 9 - Knjižnice Nakon učitavanja datoteke korisniku se prikazuje stranica sa tipkom za verifikaciju. Na toj stranici bi se trebao pokrenuti SMV proces koji će verificirati datoteku koju je korisnik učitao na poslužitelj. Međutim, ovdje je potrebno bilo prepoznati ponašanje PHP-a kada pokrene vanjski program. Mi smo kod pokretanja programa koristili metodu exec() iz klase ProgramCommon, kod koje PHP čeka da se obavi ta metoda (Slika 5). Dakle, PHP interpreter slijedno čita i izvodi naredbe, te kada dođe do mjesta gdje se poziva naša metoda čeka da se poziv te metode izvrši. U tom slučaju, može se dogoditi da izvođenje procesa vanjskog programa traje nekoliko sekundi i zbog toga će se generiranje web stranice obustaviti dok se navedena metoda ne izvede. Taj slučaj korisnika može zbuniti, jer on može pretpostaviti da je došlo do preopterećenja poslužitelja jer mu se stranica neko vrijeme ne prikazuje te odustati. Da bi se doskočilo tom problemu uvodimo AJAX (Asynchronous JavaScript and XML), korištenjem MooTools frameworka. Kada korisnik klikne na tipku za verificiranje, JavaScript kod, koji izvodi njegov Internet preglednik, uspostavlja asinkronu vezu sa poslužiteljem te pokreće PHP skriptu koja pak pokreće SMV programski alat. Veza traje toliko dugo dok se PHP skripta ne izvede do kraja. Kad se PHP skripta izvede do kraja, generira nekakav izlaz, koji JavaScript prikazuje na web dokumentu. Korisnik cijelo vrijeme nije svjestan što se zapravo događa. Na stranici mu se ispisuje obavijest da malo pričeka i za nekoliko sekundi dobiva traženi sadržaj. ©FER, 2008 FER 2 - Projekt Stranica 21 od 53
    22. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 4. Upute za korištenje U sljedećim podnaslovima ćemo govoriti o pripremi okruženja na kojem će se pokretati naša distribuirana aplikacija, odnosno SMV web servis za formalnu verifikaciju. To okruženje se sastoji od instalacije operacijskog sustava Linux, instalacije SMV programskog alata, instalacije web poslužitelja i pripadajuće baze podataka, instalacije distribuirane aplikacije, te uputa za podešavanje distribuirane aplikacije i uputa za korisnike. U tablici 1 su prikazane minimalne tehničke značajke sustava. Tabela 1 - Minimalne tehničke značajke sustava • 533 MHz 32-bit (x86) • 512 MB RAM • 20 GB tvrdi disk RAČUNALO • DVD-ROM • Ethernet kartica • Pristup Internetu OPERACIJSKI SUSTAV Linux, kernel verzije 2.6 HTTP POSLUŽITELJ Apache, verzije 2.0 PROGRAMSKI JEZIK PHP, verzije 5.0 BAZA PODATAKA MySQL verzije 5.0 • Omogućeno izvršavanje JavaScript-a • Opera, verzije 9.0 INTERNET PREGLEDNICI • Mozilla Firefox, verzije 2.0 • Internet Explorer, verzije 7.0 Jedan od važnih dijelova je ostvarenje sigurnosti, kao što je podizanje i podešavanje sigurnosnih stijena (engl. firewall) i sličnih mehanizama koji povećavaju sigurnost računalnog sustava. No međutim, zbog toga što je to vrlo veliko područje gdje bi nam trebalo mnogo vremena da opišemo postupak ostvarivanja takvih mehanizama taj dio smo izostavili iz ove dokumentacije. Sigurnosna ostvarenja koja su opisana u ovome dokumentu su ona najosnovnija, te se preporuča da kasnije poboljšate sigurnosne probleme koja se tiču računalnog sustava. Za distribuiranu aplikaciju se može smatrati da je ona sigurnosno prihvatljiva. ©FER, 2008 FER 2 - Projekt Stranica 22 od 53
    23. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 4.1 Instalacija operacijskog sustava Linux Za operacijski sustav Linux koristili smo distribuciju Debian, verzije 4.0. Naime, skoro svaka distribucija Linux operacijskog sustava bi mogla poslužiti, ali mi smo odabrali Debian distribuciju zbog toga što ima dobru podršku, veliki broj paketa koji dolaze uz nju, te zbog toga što je fleksibilna i lako nadogradiva. Navedena distribucija se može preuzeti sa adrese navedene u poglavlju 7. Korištena programska potpora. Postupak instalacije započinje pokretanjem instalacije DVD-a. Odmah na početku prikazat će se pozdravni ekran kao na slici 10 i tu treba pritisnuti tipku ENTER. Slika 10 - Pozdravni ekran instalacije Debian-a Slika 11 prikazuje odabir jezika koji će se koristiti tokom ove instalacije. Mi smo odabrali engleski, ali treba napomenuti da je ovo stvar osobnog izbora i ne utječe na krajnji ishod instalacije. ©FER, 2008 FER 2 - Projekt Stranica 23 od 53
    24. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 11 - Odabir jezika instalacije Nakon odabira jezika instalacije treba odabrati državu u kojoj se nalazimo. Budući da Hrvatske nema na prvom popisu koji generira instalacijski proces, kao što je prikazano na slici 12, odabrali smo opciju other, te smo nakon toga na drugom ekranu, koji je prikazan na Slika 13, odabrali opciju Croatia. < Slika 12 - Odabir opcije “other” kod odabira države ©FER, 2008 FER 2 - Projekt Stranica 24 od 53
    25. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 13 - Odabir opcije “Croatia” kod odabira države Slika 14 prikazuje odabir razmještaja (engl. layout) tipkovnice. Mi smo odabrali opciju American English, zbog navike na takav razmještaj, ali pritom treba napomenuti da je ovo stvar osobnog izbora, te da se također može po volji mijenjati i nakon instalacije u samom grafičkom sučelju operacijskog sustava. Slika 14 - Odabir razmještaja tipkovnice ©FER, 2008 FER 2 - Projekt Stranica 25 od 53
    26. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Na slici 15 je prikazan odabir ručnog podešavanja mreže. Naime, ovdje je moguće odabrati i opcije da se mreža sama podesi koristeći DHCP, ali budući da mi postavljamo poslužitelj koji će imati statičku IP adresu, odabiremo onu opciju pomoću koje ćemo sve podatke unijeti ručno. Slika 15 - Odabir ručnog podešavanja mreže Slika 16 prikazuje podešavanje IP adrese poslužitelja (161.53.65.27). Slika 16 - Podešavanje IP adrese poslužitelja ©FER, 2008 FER 2 - Projekt Stranica 26 od 53
    27. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 17 prikazuje podešavanje mrežne maske poslužitelja (255.255.255.0). Slika 17 - Podešavanje mrežne maske poslužitelja Slika 18 prikazuje podešavanje podrazumijevanog usmjernika (161.53.65.1). Slika 18 - Podešavanje podrazumijevanog usmjernika ©FER, 2008 FER 2 - Projekt Stranica 27 od 53
    28. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Na slici 19 je prikazano podešavanje DNS poslužitelja (161.53.65.13). Slika 19 - Podešavanje DNS poslužitelja Na slici 20 je prikazano podešavanje domene (bell.zemris.fer.hr), te je time završen proces podešavanja mreže. Slika 20 - Postavljanje domene poslužitelja ©FER, 2008 FER 2 - Projekt Stranica 28 od 53
    29. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Dolazimo do podešavanja particija i odabiremo opciju ručnog (engl. manual) podešavanja, kao što je prikazano na slici 21. Slika 21 - Podešavanje particija Nakon toga se odabere disk koji se želi particionirati i odabere se kreiranje nove particije na tom disku, kao što je prikazano na slici 22. Linux operacijski sustav zahtijeva postavljanje root (/) particije i swap particije koji se podese ovisno o veličini diska koji je na raspolaganju. Uobičajeno je da se swap particija postavlja dvostruko veća od memorije računala. Na kraju ovog postupka treba samo potvrditi da se promjene zapišu na disk i dobije se ekran sličan onome što prikazuje slika 23, ovisno o broju i veličini particija koje su kreirane. ©FER, 2008 FER 2 - Projekt Stranica 29 od 53
    30. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 22 - Kreiranje nove particije Slika 23 - Završetak particioniranja Slika 24 prikazuje postavljanje lozinke za superkorisnika (korisnik sa korisničkim imenom root u Linux operacijskim sustavima). ©FER, 2008 FER 2 - Projekt Stranica 30 od 53
    31. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Slika 24 - Postavljanje lozinke za superkorisnika Slika 25 prikazuje kreiranje „običnog“ korisnika (u našem slučaju je to korisnik pero) koji služi za obavljanje svih neadministrativnih poslova (to je politika sigurnosti u Linux operacijskim sustavima, ali dublje u to ovdje nećemo ulaziti). Slika 25 - Kreiranje \"običnog\" korisnika ©FER, 2008 FER 2 - Projekt Stranica 31 od 53
    32. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Za kraj je samo još potrebno odabrati skupinu paketa koji će se instalirati. Dakle, potrebno je sa popisa skupine paketa, kao što prikazuje slika 26, označiti one koje želimo instalirati. Mi smo uz opciju Standard system, koji je podrazumijevano odabrana, odabrali i opciju Desktop environment. Također treba odabrati developer pakete jer su oni potrebni kod instalacije programa SMV, ali o tome više u poglavlju 4.2 Instalacija SMV-a. Ukoliko se netko pita zašto nismo odabrali Web server opciju, to je zbog toga što smo koristili program Lampp koji je puno jednostavniji, a opisan je u poglavlju 4.3 Instalacija Apache, PHP i MySQL. Slika 26 - Odabir paketa programske podrške 4.2 Instalacija SMV U ovom dijelu biti će opisana standardna procedura za instalaciju SMV programskog alata za provjeru modela. SMV alat kojeg opisujemo je namijenjen isključivo za Linux/Unix okruženja. Moramo napomenuti da postoje i verzije tog alata za NT platforme no time se nećemo baviti jer nije u okviru našega projekta. U nastavku ćemo govoriti o postupcima instalacije tog alata isključivo za Debian 4.0 distribuciju operacijskog sustava Linux. Napomenut ćemo da navedeni postupci mogu funkcionirati i za neke druge Linux distribucije. Navedeni SMV alat može se preuzeti sa adrese navedene u poglavlju 7. Korištena programska potpora. Verzija programa SMV, čija će se instalacija objašnjavati je 2.5.4.3 . Prije početka same instalacije SMV programa, potrebno je osigurati da imate instaliran paket libc6-dev koji sadrži setjmp.h datoteku koja je nužna da bi se instalacija, tj. prevođenje uspješno obavilo. Isto tako nužno je imati instalirane programe lex i yacc. ©FER, 2008 FER 2 - Projekt Stranica 32 od 53
    33. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Pretpostavljamo da imate kompresiranu TAR datoteku u kojoj se nalazi SMV izvorni kod te da nam je radni direktorij onaj u kojem se kompresirana datoteka sa SMV-om nalazi. Datoteku je potrebno otpakirati. Datoteku ćemo otpakirati u sljedeći direktorij /usr/src. To se radi pomoću sljedeće naredbe. # tar –xzf smv.r2.5.4.3.tar.gz –C /usr/local/bin Sada je potrebno „izgraditi“, odnosno instalirati SMV program. Pretpostavljamo da se nalazimo u root direktoriju SMV-a (tamo gdje smo otpakirali SMV datoteke), tj. u direktoriju /usr/src/smv. To radimo sljedećom naredbom: # make … ISPIS make programa … Postoji mogućnost da se instalacija programa prekine zbog greške na mallocu. Navedena greška se javlja zbog redefinicije malloc-a u storage.h datoteci. Da bi riješili problem sa greškom potrebno je zakomentirati liniju char *malloc(); koja se nalazi u datoteci storage.h u SMV direktoriju. Ako je sve prošlo bez greške, imamo uspješno preveden SMV program. Sada ćemo taj program premjestiti u direktorij /usr/local/bin, iz razloga što se ručno prevedeni programi pod Linux operacijskim sustavima obično stavljaju u /usr/local direktorij, a no mi ćemo ga stavit u /usr/local/bin direktorij da bi smo mogli pokretati SMV program bez zadavanja potpune staze do mjesta gdje se on nalazi. Premještanje SMV programa se radi na sljedeći način: # mv smv /usr/local/bin Da bi instalacija bila potpuna, moramo spomenuti još jedan bitan faktor koji ne utječe izravno na sam rad naše web usluge, a to je da moramo premjestiti man stranice u odgovarajući direktorij. Pretpostavimo da se još uvijek nalazimo u /usr/src/smv direktoriju. Možemo primijetiti da se unutar tog direktorija nalazi datoteka naziva smv.1, a to je naša man datoteka. Ova jedinica u ekstenziji znači da ta man datoteka pripada sekciji 1 (pogledati man man stranice), odnosno da je moramo premjestiti u direktorij /usr/share/man/man1.To radimo na sljedeći način: # mv smv.1 /usr/share/man/man1 Nakon što smo premjestili SMV program i man datoteku možemo obrisati datoteke za instalaciju SMV programa. To radimo naredbom: # rm –rf /usr/src/smv ©FER, 2008 FER 2 - Projekt Stranica 33 od 53
    34. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Korištenje alata je vrlo jednostavno. U komandnoj liniji potrebno je navesti ime smv programa i datoteku sa modelom i specifikacijama. Primjerice: $ smv <ime_datoteke.smv> 4.3 Instalacija Apache, PHP i MySQL Program LAMPP omogućuje jednostavnu instalaciju Apache web poslužitelja, PHP poslužitelja, te MySQL baze podataka. Navedeni SMV alat može se preuzeti sa adrese navedene u poglavlju 7. Nakon toga se treba u Linux ljusci prijaviti kao superkorisnik i izvršiti sljedeću naredbu: # tar -xfz xampp-linux-1.6.5a.tar.gz -C /opt i to je sve, program je instaliran i nalazi se u direktoriju /opt/lampp. Prije nego li pokrenemo program potrebno je provjeriti da li će se kod podizanja Apache poslužitelja učitati modul mod_rewrite koji je potreban da bi SMV web servis uspješno radio. To ćemo napraviti tako da se u nekom uređivaču teksta otvori datoteka /opt/lampp/etc/httpd.conf. Nakon toga je potrebno pronaći sljedeću liniju: LoadModule rewrite_module modules/mod_rewrite.so Ukoliko se na početku te linije nalazi # znak, potrebno je taj znak obrisati, ako znaka nema to znači da će se modul učitati prilikom pokretanja Apache poslužitelja. Web poslužitelj se pokreće sa naredbom # /opt/lampp/lampp start i nakon toga se dobije ispis poput ovog: Starting XAMPP 1.6.5a... LAMPP: Starting Apache... LAMPP: Starting MySQL... LAMPP started. Također treba podesiti lozinke za pristup programu, a to se radi tako da se pokrene sljedeća naredba: # /opt/lampp/lampp security ©FER, 2008 FER 2 - Projekt Stranica 34 od 53
    35. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 i nakon toga se dobije ispis poput ovog: XAMPP: Quick security check... XAMPP: Your XAMPP pages are NOT secured by a password. XAMPP: Do you want to set a password? [yes] Ovdje je samo potrebno pritisnuti tipku ENTER, te nakon toga unijeti lozinku i ponoviti je još jednom, a ispis će biti sličan ovome: XAMPP: Password: XAMPP: Password (again): XAMPP: Password protection active. Please use 'lampp' as user name! Nakon toga se dobiva ispis da nije podešena lozinka za MySQL bazu podataka. Ispis je sličan ovome: XAMPP: MySQL is accessable via network. XAMPP: Normally that's not recommended. Do you want me to turn it off? [yes] XAMPP: The MySQL/phpMyAdmin user pma has no password set!!! XAMPP: Do you want to set a password? [yes] XAMPP: Password: XAMPP: Password (again): XAMPP: Setting new MySQL pma password. XAMPP: Setting phpMyAdmin's pma password to the new one. XAMPP: MySQL has no root passwort set!!! XAMPP: Do you want to set a password? [yes] XAMPP: Write the password somewhere down to make sure you won't forget it!!! XAMPP: Password: XAMPP: Password (again): XAMPP: Setting new MySQL root password. XAMPP: Setting phpMyAdmin's root password to the new one. Na kraju još treba podesiti lozinku za FTP. Ispis je sličan ovome: ©FER, 2008 FER 2 - Projekt Stranica 35 od 53
    36. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 XAMPP: The FTP password is still set to 'lampp'. XAMPP: Do you want to change the password? [yes] XAMPP: Password: XAMPP: Password (again): XAMPP: Reload ProFTPD... XAMPP: Done. Program se prekida sa naredbom # /opt/lampp/lampp stop Poželjno je da se program lampp pokreće prilikom pokretanja samog sustava, a to se radi na sljedeći način: 1. Odrediti koji je vaš podrazumijevani runlevel, sa naredbom # egrep :initdefault: /etc/inittab U najviše slučajeva to je broj 3 ili 5, ali u Debian distribuciji je to broj 2. 2. Otići u direktorij u kojem se podešavaju opcije za podrazumijevani runlevel, dakle u našem slučaju je to direktorij /etc/init.d/rc3.d 3. Otipkati sljedeće naredbe u Linux ljusci: # ln -s /opt/lampp/lampp S99lampp # ln -s /opt/lampp/lampp K01lampp Ovime završava instalacija i podešavanje web poslužitelja. 4.4 Instalacija i podešavanje distribuirane aplikacije Sada ćemo se baviti instalacijom i podešavanjem distribuirane aplikacije. Dalje u nastavku biti će objašnjen klasičan primjer instalacije i podešavanje distribuirane aplikacije za Apache, PHP i MySql okruženja temeljene na Linux operacijskim sustavima. Navedeni postupci će biti objašnjeni na temelju prethodne instalacije XAMPP-a. Nakon što su sve stvari, koje su potrebne da bi naša distribuirana aplikacija mogla funkcionirati, ©FER, 2008 FER 2 - Projekt Stranica 36 od 53
    37. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 instalirane, potrebno je instalirati i podesiti distribuiranu aplikaciju, odnosno SMV web servis za formalnu verifikaciju. Sam proces instalacije je automatiziran, barem što se tiče podešavanja i uvoza baze podataka, dok se podešavanje mora izvesti uređivanjem nekoliko konfiguracijskih datoteka. Korak 1. Ono što prvo moramo napraviti je stvoriti bazu podataka. U našem primjeru bazu podatka smo nazvali npi_smv. Stvaranje baze podataka se jednostavno obavlja preko web aplikacije phpmyadmin koja je sastavni dio XAMPP paketa. Korak 2. Sve datoteke naše distribuirane aplikacije se nalaze u datoteci npi_smv_1_1.tar.gz koja je priložena uz ovu dokumentaciju. Struktura direktorija i datoteka u kojima se nalaze instalacijske i konfiguracijske datoteke, te direktorij u koji korisnici učitavaju .smv datoteke je prikazana na slici 27. Slika 27- Struktura direktorija i datoteka za podešavanje distribuirane aplikacije ©FER, 2008 FER 2 - Projekt Stranica 37 od 53
    38. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Sadržaj datoteke npi_smv_1_1.tar.gz potrebno je odpakirati u htdocs direktorij (na nekim poslužiteljima taj direktorij se još naziva public_html). Htdocs direktorij je root direktorij koji vide korisnici koji pristupaju određenoj stranici i tu se nalaze datoteke za generiranje i prikaz web stranica. U našem konkretnom slučaju htdocs direktorij se nalazi u /opt/lampp/ direktoriju. Nakon odpakiravanja potrebno je dodijeliti dozvole smv_files direktoriju da bi se moglo vršiti učitavanje korisničkih datoteka, te logs direktoriju u koji se spremaju datoteke izvješća kada se pojavi greška u sustavu. Dozvole koje ćemo dodijeliti tim direktorijima su 0777. To radimo na sljedeći način: # chmod 077 /opt/lampp/htdocs/smv_files # chmod 077 /opt/lampp/htdocs/system/logs Korak 3. Sljedeći korak obuhvaća uređivanje konfiguracijskih datoteka koje su sastavni dio Codeigniter framework-a. Te konfiguracijske datoteke se nalaze u system/application/config direktoriju unutar htdocs direktorija. Prvo ćemo urediti database.php. Datoteka database.php sadrži neke standardne postavke vezane za upravljanje bazom podataka. Nakon što smo otvorili datoteku potrebno je obavezno promijeniti vrijednosti sljedećim varijablama: Tabela 2- Značenje pojedinih varijabli u database.php datoteci Deklaracije varijabli i vrijednosti Objašnjenja $db['default']['hostname']= Odnosi se na domenu ili ip adresu \"domena_ili_ip\"; poslužitelja na kojemu se vrti sustav MySQL baze podataka. Najčešće se na to mjesto piše localhost. $db['default']['username']= Korisničko ime korisnika za pristup bazi \"korisnicko_ime\"; podataka. $db['default']['password'] = \"lozinka\"; Lozinka korisnika za pristup bazi podataka. ©FER, 2008 FER 2 - Projekt Stranica 38 od 53
    39. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 $db['default']['database']= Ime baze podataka koja će se koristiti za \"ime_baze_podataka\"; SMV web servis. U našem primjeru to će biti npi_smv. ©FER, 2008 FER 2 - Projekt Stranica 39 od 53
    40. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Korak 4. Nakon uređivanja database.php datoteke potrebno je urediti config.php datoteku. Config.php datoteka sadrži standardne postavke vezane općenito za codeigniter framework te neke vezane konkretno za našu distribuiranu aplikaciju. Neke postavke je potrebno obavezno mijenjati i one su označene tamnije, a neke se opcionalno mogu mijenjati ovisno o potrebama sustava i one su svjetlije označene. Tabela 3 - Značenje pojedinih varijabli u config.php datoteci Deklaracije varijabli i vrijednosti Objašnjenja $config['base_url'] = Osnovni URL za distribuiranu aplikaciju sa 'http://bell.zemris.fer.hr'; pratećim slash znakom. Koristi se u aplikaciji za stvaranje hiperveza. Npr. http://bell.zemris.fer.hr/ $config['sess_expiration'] = 1200; Trajanje sjednice u ms. Osnovna vrijednost: 1200 $config['target_path'] = './smv_files'; Staza do direktorija u koji se spremaju učitane smv datoteke. Osnovna vrijednost: './smv_files' $config['allowed_types'] = array('.smv'); Ekstenzije datoteka koje su dozvoljene za upload. Moguće je upis više ekstenzija i to se piše u obliku array('.ext1', 'ext2', …, 'extN'); Osnovna vrijednost: array('.smv') $config['max_file_size'] = '9000'; Maksimalno dozvoljena veličina datoteke u oktetima. Osnovna vrijednost: 9000 $config['chmod'] = 0777; Dozvole na datoteke ili direktorije. ©FER, 2008 FER 2 - Projekt Stranica 40 od 53
    41. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 $config['input_filename'] = 'input.smv'; Ime datoteke koja se predaje na verifikaciju. Korisnikovo ime datoteke se mijenja u ono definirano ovom varijablom Osnovna vrijednost: 'input.smv'; $config['output_filename'] = 'output.txt'; Ime izlazne datoteke koja sadrži rezultate izvođenja verifikacije. Osnovna vrijednost: 'output.txt' $config['smv_max_active'] = 10; Maksimalno dozvoljeni broj istovremeno pokrenutih SMV procesa. Osnovna vrijednost: 10 $config['smv_max_time'] = \"00:05:00\"; Maksimalno dozvoljeno vrijeme izvođenja nekog SMV procesa. Format je zapisa sat : minute : sekunde Osnovna vrijednost: \"00:05:00\" Korak 5. Sljedeća na redu datoteka je smv.ini . Ona se nalazi u system/application/program /Program direktoriju unutar htdocs direktorija. Ta datoteka sadrži stazu do vanjskog programa SMV. Ovdje ćemo se samo osvrnuti na instalaciju SMV programa kojeg smo tako instalirali da u većini slučajeva nije potrebno navoditi cijelu stazu programa već samo ime programa. No međutim, PHP, odnosno u ovom slučaju naša distribuirana aplikacija, kod poziva vanjskog SMV programa koristi sh ljusku, te u tom slučaju program SMV nije unutar PATH varijable, te ćete vrlo vjerojatno u takvoj ljusci morat napisati cijelu stazu do tog programa, a ne samo ime. Dakle, potrebno je samo promijeniti vrijednost za programPath varijablu u toj datoteci. Konkretno za naš slučaj to izgleda ovako: programPath = \"/usr/local/bin/smv\" ©FER, 2008 FER 2 - Projekt Stranica 41 od 53
    42. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Korak 6. Ostao je još svega jedan korak do instalacije naše distribuirane aplikacije. Prije tog koraka potrebno je urediti datoteku .htaccess koja se nalazi u root-u, odnosno htdocs direktoriju. U toj datoteci potrebno je promijeniti posljednja dva retka, točnije umjesto osnovni_URL napisati osnovnu URL adresu našeg web servisa, istu onakvu kakvu smo upisivali u config.php datoteku. Ovaj postupak služi čisto radi ljepšeg URL-a i nekih sigurnosnih razloga i obavezno ga je napraviti na opisan način. RewriteRule ^$ http://osnovni_URL/smv-upload? [R=301,L] RewriteRule ^smv_files(/)?$ http://osnovni_URL/smv-upload [R=301] Korak 7. I konačno instalacija. Instalacija obuhvaća stvaranje odgovarajućih tablica za bazu podataka, te njihovo punjenje sadržajem. Instalacija se pokreće upisivanjem sljedeće web adrese: http://osnovni_URL/install/install.php Nakon što smo otvorili stranicu, te kad se instalacija uspješno obavila install direktorij se automatski briše radi sigurnosnih razloga. Nakon ovog postupka SMV web servis bi trebao raditi. Ako ipak neradi to znači da ste nešto krivo napravili, te trebate ponoviti navedene korake. Korak 8. Zadnji korak, koji nije nužan za rad samog servisa, ali je vrlo koristan radi održavanja stranice, je definiranje automatski pokretanih poslova u određeno vrijeme. Automatski poslovi obuhvaćaju: • Brisanje starih/isteklih korisničkih direktorija i datoteka • „ubijanje“ SMV procesa koji su prekoračili svoje vrijeme izvođenja • Provjeravanje da li je broj pokrenutih procesa u bazi u skladu sa stvarnim brojem Da bismo to napravili potrebno je urediti datoteku /etc/crontab te na kraj dodati sljedeći redak: */5 * *** root wget osnovni_URL/cron -O /dev/null > /dev/null ©FER, 2008 FER 2 - Projekt Stranica 42 od 53
    43. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Gdje je potrebno zamijeniti osnovni_URL s adresom web servisa ili umjesto toga napisati domenu localhost. Dio ispred root-a je zadano vrijeme izvršavanja. U ovom slučaju je zadano da se poslovi pokreću svakih 5 minuta. Za one koji žele drugačije definirati vremena izvođenja neka pogledaju man stranice za crontab. Ovime je završen postupak instalacije i podešavanja distribuirane aplikacije. 4.5 Korisničke upute U ovom dijelu će biti opisane upute korisnicima na koji način mogu koristiti SMV web servis za formalnu verifikaciju. Sve što korisnik mora imati od programske potpore je Internet preglednik (preporučaju se preglednici novije generacije, Internet Explorer 6 izbjegavati) te omogućeno izvođenje JavaScript koda. Odmah na početnoj stranici web servisa se nalazi forma za učitavanje SMV datoteke na poslužitelj. Cijeli postupak od učitavanja do verifikacije je dosta jednostavan. Sve što korisnik treba napraviti je kliknuti na tipku Browse ili Choose ovisno o kojoj se verziji Internet preglednika radi (Slika 28), te potom u izborniku odabrati stazu do SMV datoteke. Nakon odabrane staze, korisniku se pruža dodatna mogućnost odabira dodatnih parametara, odnosno opcija, koje će se koristiti prilikom pokretanja SMV verifikacije. Slika 28 - Forma za učitavanje SMV datotkea, te tipka sa opcijama. Odmah napominjemo da odabir opcija nije obavezan, te se preporuča da opcije koriste oni ©FER, 2008 FER 2 - Projekt Stranica 43 od 53
    44. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 korisnici koji su više upoznati sa SMV alatom ali i općenito sa SMV modeliranjem. Lista opcija otvara se klikom na tipku Opcije (Slika 28) koja se nalazi pri dnu stranice. Korisniku su ponuđene opcije sa pripadajućim objašnjenjima, te korisnik odabire te opcije stavljanjem kvačice u kučice koje stoje pored tih opcija (Slika 29). Slika 29 - Lista opcija za SMV verifikaciju Nakon pripremljene staze do SMV datoteke, te eventualnog odabira opcija korisnik mora kliknuti na tipku Učitaj. Ako je sve prošlo dobro, korisniku se prikaže stranica za verifikaciju, u slučaju greške (npr. kriva datoteka ili neka sistemska greška) ostat će na istoj stranici (Upload stranica) gdje će mu biti ispisano o kojoj se grešci radi (Slika 30). Slika 30 - Greška kod učitavanje datoteke na poslužitelj Pretpostavimo da je sve u redu prošlo, te se nalazimo na stranici za verifikaciju. Sve što korisnik treba napraviti je kliknuti na tipku Verifikacija. Nakon toga će se pojaviti ispis „Verifikacija u tijeku. Molimo pričekajte“, gdje se od korisnika traži da malo pričeka da se SMV model verificira. Nakon uspješno završene verifikacije na ekranu će korisniku biti prikazani rezultati za specifikacije koje je zadao u svojoj datoteci. Jedna napomena, moguće je da se prilikom verifikacije pojavi greška, ispis je istog formata kao na slici 30. Greška može biti uzrokovana stanjem da je pokrenut maksimalan broj procesa, te da sustav nije u mogućnosti obradit korisnikov zahtjev. Omjer pokrenutih i maksimalno dozvoljenih procesa nalazi se pri dnu stranice. Korisniku je isto tako ponuđena mogućnost pregledavanja svih rezultata verifikacije ©FER, 2008 FER 2 - Projekt Stranica 44 od 53
    45. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 koje je generirao SMV alat. Te rezultate korisnik može preuzeti klikom na link Preuzmite SMV rezultate verifikacije. Slika 31 - Rezultati verifikacije Nakon toga, korisnik se može vratiti na stranicu za učitavanje nove SMV datoteke klikom na link Povratak na početnu stranicu, te ponoviti proces verifikacije. Korisniku je na raspolaganju navigacija koja se nalazi u gornjem desnom kutu stranice. Pritiskom na tipku O projektu otvara se stranica koja prikazuje detalje o stvaranju projekta (npr. čemu stranica služi i tko je sve sudjelovao u izgradnji te stranice). Te standardna tipka Početna gdje se korisnika vrača na početnu stranicu, odnosno na stranicu za učitavanje SMV datoteke na poslužitelj. ©FER, 2008 FER 2 - Projekt Stranica 45 od 53
    46. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 5. Dodatak: Korisni alati za upravljanje projektom Projekt definiramo kao organizirani način rada za ostvarivanje jednokratno definiranog cilja. Pri izradi projekta, projektni pristup i organiziranost smanjuju vjerojatnost neuspjeha. Neke od značajki projektnog pristupa su • Uređivanje pogleda na problem, određivanje dosega projekta i puta do cilja • Razlaganje problema da bi se pojasnio cilj i omogućio izbor načina rada • Definirana i uređena metodologija omogućuje uredniji put prema cilju • Upravljanje vremenom i ostalim elementima rada omogućuje spoznaju o statusu i napretku Za uspješno dovršenje projekta važno je efikasno planiranje projekta, upravljanje projektom i nadzor nad projektom. Postoje web servisi pomoću kojih je moguće vrlo jednostavno vršiti te aktivnosti na mreži, tako da su dostupne svim članovima tima u svakom trenutku u skladu s njihovim ovlastima. Timovi pomoću web servisa mogu pojednostaviti razne aktivnosti važne u procesu planiranja i upravljanja projektom, na primjer: • kreiranje strukture razlaganja posla • definiranje aktivnosti • određivanje redoslijeda aktivnosti • određivanje odgovornosti za pojedine aktivnosti • određivanje trajanja aktivnosti • kontrolne točke (milestones) – točke za provjeru napredovanja projekta... Ti web servisi nude i dodatne pogodnosti, npr repozitorij inačica datoteka (CVS, Subversion), mogućnost učitavanja datoteka, mogućnost laganog praćenja promjena na raznim dijelovima projekta, i tako dalje. ©FER, 2008 FER 2 - Projekt Stranica 46 od 53
    47. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 5.1 Assembla – web servis za upravljanje projektom Sustav Assembla služi za distribuiranu izgradnju programske potpore i upravljanje projektima. Većina njegovih mogućnosti može se koristiti besplatno. Ovakav sistem znatno olakšava izgradnju softvera u situaciji kada se članovi tima ne nalaze na istoj fizičkoj lokaciji. U nastavku će biti pojašnjeno funkcioniranje sustava koji smo mi koristili pri izradi projekta. Slika 32 - Početna korisnička stranica na Assembli Kao što je vidljivo sa slike, Assembla pruža i mogućnost pronalaženja posla ili timova za projekte, no ovdje će biti opisane samo mogućnosti kojima smo se koristili. Najvažnija mogućnost je kreiranje radnog prostora projekta. Nakon kreiranja projekta, vlasnik projekta ima mogućnost pozivanja članova tima, te određivanja koje mogućnosti će biti dozvoljene kojem članu, te mogućnosti koje su javne - dostupne osobama koje nisu članovi projektnog tima. Moguće je dio projekta učiniti nevidljivim, dozvoliti samo čitanje, dozvoliti i pisanje, te je moguće članu tima dati mogućnost da administrira projekt. Također je moguće odrediti koji alati koje Assembla pruža će se koristiti u projektu. ©FER, 2008 FER 2 - Projekt Stranica 47 od 53
    48. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 1. Wiki Prva usluga koju Assembla pruža je kreiranje Wiki stranica za projekt (po uzoru na wikipedia.org). Moguće je dodavanje novih stranica i editiranje postojećih, pri čemu je omogućen i tekstualni i WYSIWYG pristup pomoću FckEditora. Mi smo na ovaj način prezentirali samo najosnovnije informacije o projektu na početnoj stranici, no ovaj sistem može se iskoristiti i za izradu kompletne on- line dokumentacije projekta. Slika 33 - Početna wiki stranica projekta 2. Flow Druga usluga koju smo koristili je praćenje toka projekta. Ovdje se mogu, kronološki sortirano, vidjeti poruke koje označavaju aktivnosti u vezi projekta - dodavanje novih zadataka od strane nekog korisnika ili zatvaranje izvršenih zadataka. Također je na raspolaganju RSS feed ovog dijela radnog prostora. Slika 34 - Praćenje toka projekta na Assembli Slika 35 - Praćenje toka projekta preko RSS feeda 3. Team Sljedeća mogućnost koju Assembla pruža je pregled informacija o članovima tima, kao što je ime, prezime, e-mail adresa, te informacije o zadnjem pristupu korisnika radnom prostoru projekta i o promjenama nad projektom koje je taj korisnik izvršio u posljednjih tjedan dana. 4. Files U ovom dijelu radnog prostora projekta nalazi se repozitorij datoteka. Moguće je pregledati datoteke Slika 36 - Neke informacije o članu tima koje se nalaze u njemu, te informacije o njima, kao ©FER, 2008 FER 2 - Projekt Stranica 48 od 53
    49. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 što su član tima koji je postavio datoteku, datum, te opis datoteke. Naravno, moguće je dodavati nove datoteke u repozitorij. 5. Alerts Ovaj dio radnog prostora omogućava praćenje svih promjena na projektu. Moguće je filtrirati vidljive promjene po vremenskom intervalu, te po dijelu radnog prostora u kojem su učinjene. Može se vidjeti datum, vrijeme, dio radnog prostora, autor, te naslov dijela projekta koji je promijenjen. Također, može se odabrati kada će Assembla korisnika e-mailom obavijestiti o učinjenoj promjeni. Slika 37 - Obavijesti o promjenama 6. Chat Web aplikacija koja omogućuje članovima tima komunikaciju preko interneta u stvarnom vremenu. Assembla čuva zapis razgovora te je moguće u svakom trenutku pročitati neki od starih razgovora. 7. Tickets Omogućava otvaranje ticketa za razne bugove, probleme, ideje, itd., te pregled i pretraživanje tih ticketa. Za pojedini ticket može se odrediti Slika 6.7. Chat opcija na koju komponentu projekta se odnosi, uz koju kontrolnu točku je vezan, koliki mu je prioritet, te koji član projekta je zadužen za njega. Slika 38 - Rad s ticketima ©FER, 2008 FER 2 - Projekt Stranica 49 od 53
    50. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 8. Milestones Ovaj alat omogućuje rad s kontrolnim točkama – točkama za provjeru napredovanja projekta. Za svaku kontrolnu točku može se odrediti datum do kojeg dio projekta vezan uz nju treba biti dovršen, član projekta koji je za to zadužen. Svakoj kontrolnoj točki moguće je dodijelit više zadataka (engl. tasks). Zadacima se dodaju opis zadatka, prioritet zadatka, tko je zadužen za taj zadatak. Članovi projekta mogu dodavati komentare vezane za zadatke. Slika 39 - Kontrolne točke Moguće je pregledavati sve kontrolne točke, one čiji zadaci su izvršeni, one čije zadatke treba tek izvršiti, te one s čijim izvršenjem se kasni. 9. Trac Trac je opisan u poglavlju 6.2. 10. Scrum Ovaj alat omogućuje pojedinim članovima tima da izvještavaju tim o tome što su napravili, što namjeravaju napraviti, te da li su naišli na neke probleme vezane uz projekt. Ovim alatom se također određuje vrijeme sastanaka članova tima. Slika 40 - Izvještaj o radu člana tima Ostali alati Assembla nudi još neke alate koje nismo koristili u sklopu projekta. To su: • Time – alat za dodavanje zadataka vezanih uz točno određeno vrijeme. • Mephisto – vođenje bloga vezanog uz projekt • Images – galerija u koju je moguće dodavati slike • Trac & Mercurial – korištenje Traca sa programskim paketom Mercurial umjesto Subversiona. ©FER, 2008 FER 2 - Projekt Stranica 50 od 53
    51. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 5.2 Trac Trac je web aplikacija za upravljanje projektima. Rađena je u programskom jeziku Python. ena Naglasak je na lakoći korištenja, te proširivosti kroz izradu dodataka ili direktnu modifikaciju izvornog koda. Glavne mogućnosti Traca su: Sistem ticketa Svaki bug, problem, sugestija ili zahtjev dobiva svoj ticket. U ticketu se navodi autor, inačica projekta na koju se odnosi, važnost i još razne druge informacije. Trac omogućava rad s ticketima, te pretraživanje po raznim kriterijima. Pregled napretka Trac omogućava niz raznih praktičnih metoda za praćenje promjena u projektu. Među njima su kontrolne točke, mapa napretka, kronološki red promjena. Postoji mogućnost pregleda promjena pomoću RSS feeda. Pregled repozitorija Trac pruža iskoristivo i praktično sučelje za pregled Subversion repozitorija, za isticanje dijelova koda i usporedbu inačica datoteka. Trac se pomoću dodataka može modificirati tako da koristi neki drugi sustav za kontrolu inačica. Slika 41 - Pristup Subversion repozitoriju pomoću Trac web sučelja ©FER, 2008 FER 2 - Projekt Stranica 51 od 53
    52. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 Kontrola korisnika Trac sadrži jednostavan sistem dozvola vezanih uz to koji korisnik smije čemu pristupiti. Uz navedene mogućnosti, Trac je proširiv pomoću dodataka (engl. pluginova). Wiki stranice Trac ima mogućnost izrade Wiki stranica u sklopu projekta, slično kao Assembla. 5.3 Subversion (SVN) Subversion je besplatni alat koji se koristi u sklopu Traca kao repozitorij koda i dokumentacije i za kontrolu inačica (naravno, može se koristiti i samostalno.) Subversion repozitorij, osim trenutnih inačica datoteka, pamti i sve promjene učinjene na datotekama. To omogućuje pregled svih promjena podataka i vraćanje starih inačica. Subversion funkcionira na principu poslužitelj – klijent. Na poslužitelju se nalazi repozitorij, te korisnik skida sadržaj repozitorija sa poslužitelja. Korisniku se standardno šalju najnovije inačice datoteka, no može zatražiti i starije inačice. Korisnik nakon učinjenih promjena šalje nove inačice datoteka poslužitelju, te se stvara nova inačica repozitorija sa tim promjenama ako nema konflikata. Jedan od glavnih zadataka Subversiona je da onemogući nesporazume između korisnika koji bi rezultirali time da jedan korisnik nesvjesno poništi promjene koje je drugi korisnik učinio. Ovo bi se dogodilo u slučaju da oba korisnika skinu repozitorij, promjene istu datoteku, i pošalju promijenjenu datoteku u repozitorij. Subversion detektira ove situacije i označava datoteku kao konflikt, te ne dozvoljava promjenu dok se konflikt ne razriješi. Najčešća struktura SVN repozitorija je takva da sadrži direktorije trunk, branches i tags. Direktorij trunk sadrži glavni projekt, te se mijenja kako se projekt mijenja. Direktorij branches služi za spremanje „grana“ projekta – istovremeni pokušaj održavanja više različitih inačica projekta. Direktorij tags služi za spremanje \"slika\" stanja projekta u određenom trenutku. Korišteni alati mogu se pronaći na u poglavlju 7. Korištena programska potpora. ©FER, 2008 FER 2 - Projekt Stranica 52 od 53
    53. Napredno programsko inženjerstvo: Mrežna usluga formalne verifikacije (SMV) Verzija: 1.0 Tehnička dokumentacija Datum: 18.12.2007 6. Literatura 1. Model Checking - Wikipedia URL: http://en.wikipedia.org/wiki/Model_checking 2. K. L. McMillan - The SMV system for SMV version 2.5.4 (SMV manual) URL: http://www.cs.cmu.edu/~modelcheck/smv.html 3. Web servis - Wikipedia URL: http://en.wikipedia.org/wiki/Web_service 4. Seminarski rad: Tehnologija web servisa (Vesna Jelčić, 2007.) URL: http://en.wikipedia.org/wiki/Web_service 5. CodeIgniter User Guide Version 1.5.4 URL: http://codeigniter.com/user_guide 6. Assembla FAQ URL: http://www.assembla.com/wiki/show/brakeoutdocs/FAQ 7. Trac FAQ URL: http://trac.edgewall.org/wiki 7. Korištena programska potpora 1. CodeIgniter – PHP framework URL: http://codeigniter.com/ 2. MooTools – JavaScript framework URL: http://mootools.net/ 3. ISO slika Debian 4.0 – distribucija operacijskog sustava Linux URL: http://cdimage.debian.org/debian-cd/4.0_r2/i386/iso-dvd/ 4. Program SMV za Unix/Linux platforme URL: http://www.cs.cmu.edu/~modelcheck/smv.html 5. Lampp web poslužitelj (Apache, PHP i MySql) URL: http://www.apachefriends.org/en/xampp-linux.html 6. Assembla – web servis za upravljanje projektima i izradu programske potpore URL: http://www.assembla.com 7. Trac – web servis za upravljanje projektima URL: http://www.edgewall.org 8. Subverison – aplikacija za kontrolu inačica URL: http://subversion.tigris.org ©FER, 2008 FER 2 - Projekt Stranica 53 od 53
    SlideShare Zeitgeist 2009

    + Željko TepšićŽeljko Tepšić Nominate

    custom

    658 views, 0 favs, 1 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 658
      • 657 on SlideShare
      • 1 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 7
    Most viewed embeds
    • 1 views on http://www.lmodules.com

    more

    All embeds
    • 1 views on http://www.lmodules.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories