Integracija softverskih razvojnih okruženja sa on-line ... Dragana master rad final.pdf · Tehnike...

83
Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda Integration of software development environments with on-line code repositories MASTER RAD Predmetni nastavnik: Prof.dr. Ljubica Kazi Student: Dragana Ljubinković MIT 12/2017 Smer: Informacione tehnologije - master Zrenjanin, 2018. Univerzitet u Novom Sadu Tehnički fakultet “Mihajlo Pupin” Zrenjanin

Transcript of Integracija softverskih razvojnih okruženja sa on-line ... Dragana master rad final.pdf · Tehnike...

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

Integration of software development environments with on-line code repositories

MASTER RAD

Predmetni nastavnik: Prof.dr. Ljubica Kazi

Student:

Dragana Ljubinković MIT 12/2017

Smer: Informacione tehnologije - master

Zrenjanin, 2018.

Univerzitet u Novom Sadu Tehnički fakultet “Mihajlo Pupin”

Zrenjanin

Univerzitet u Novom Sadu

Tehnički fakultet „Mihajlo Pupin” Zrenjanin

Ključna dokumentacijska informacija

Redni broj: RBR

Identifikacioni broj: IBR

Tip dokumentacije: TD Monografska dokumentacija

Tip zapisa: TZ Tekstualni štampani dokument

Vrsta rada: (dipl.mag.dokt.): VR Master rad

Ime i prezime autora: AU Ljubinković Dragana

Mentor (titular, ime, prezime, zvanje): MN Doc. dr Ljubica Kazi

Naslov rada: NS

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

Jezik publikacije: JZ Srpski

Jezik izvoda: JI Srpski/Engleski

Zemlja publikovanja: ZP Republika Srbija

Uže geografsko područje: UGP Zrenjanin, Vojvodina

Godina: GO 2019.

Izdavač: IZ Autorski reprint

Mesto i adresa: MS

Tehnički fakultet “Mihajlo Pupin”, Đure Đakovića bb, Zrenjanin

Fizički opis rada: FO

Broj poglavlja 6/ Strana 70/ Slika 30/ Listinga 2/

Naučna oblast: OB Informacione tehnologije – master

Naučna disciplina: ND Distribuirani informacioni sistemi

Predmetna odrednica, ključne reči: PO

Biblioteka Tehničkog fakulteta „Mihajlo Pupin“ Zrenjanin

UDK Čuva se:

ČU Važna napomena:

VN

Izvod: IZ

U ovom radu teorijski je prikazan način rada online repozitorijuma koda. U odeljku stručnog istraživanja prikazane su opšte

osobine repozitorijuma koda, načini instalacije, zašto se koriste, kao i definicije srodnih termina koji se koriste. U praktičnom delu rada prikazani su konkretni primeri rada određenih repozitoijuma koda, način upotrebe i njihove glavne karakteristike. Posebno je analiziran aspekt integracije alata za razvoj softvera sa on-line repozitorijumima koda.

Datum prihvatanja teme od stran NN veća: DP

Datum odbrane: DO

Članovi komisije: ČK

Predsednik: Prof. dr Dragica Radosav Član: doc. dr Eleonora Brtka Mentor: Doc. dr Ljubica Kazi

University of Novi Sad

Technical Faculty “Mihajlo Pupin” Zrenjanin

Keyword documentation

Accession number: ANO

Identification number: INO

Document type: DT Monograph documentation

Type of record: TR Textual printed material

Contents code: CC M.Sc.Thesis

Author: AU Ljubinkovic Dragana

Menthor: MN

Doc. dr Ljubica Kazi, assistant professor

Title: TI

Integration of software development environments with on-line code repositories

Language of text: LT Serbian

Language of abstract: LA Serbian/English

Country of publication: CP Republic of Serbia

Locality of publication: LP Zrenjanin, Vojvodina

Publication year: PY 2019.

Publisher: PU Author’s reprint

Publication place: PP

Technical faculty „Mihalo Pupin“, Djure Djakovica bb, Zrenjanin

Physical description: PD

Chapters 6/ Pages 70/ Pictures 30/ Lists of code 2/

Scientific field: SF Computer Scicence – M.Sc.

Scientific discipline: SD Distributed information systems

Subject, keywords: SKW

UDC Holding data:

HD Library of Technical Faculty

„Mihajlo Pupin“ Zrenjanin Note:

N

Abstract: In this paper the theoretical way of working

AB the online code repository is presented. The section of the expert research shows the general properties of the code repository, the modes of installation, why they are used, and the definitions of related terms used. In the practical part of the paper, concrete examples of the work of certain code repositories, method of use and their main characteristics are presented. It has been particularly analyzed the aspect of integration of tools for software development with on-line code repositories.

Accepted on Scientific Board on: AS

Defended: DE

Thesis defend board: DB

President: Prof. dr Dragica Radosav Member: doc. dr Eleonora Brtka Menthor: Doc. dr Ljubica Kazi

SADRŽAJ: Apstrakt ...................................................................................................................................... 1

UVOD ........................................................................................................................................ 2

1. METODOLOŠKI OKVIR ISTRAŽIVANJA........................................................................ 3

1.1 Predmet i problem istraživanja ........................................................................................ 3

1.2 Vrsta istraživanja ............................................................................................................. 3

1.3 Cilj i zadaci istraživanja ................................................................................................... 3

1.4 Hipoteza i podhipoteze .................................................................................................... 3

1.5 Očekivani rezultati ........................................................................................................... 3

1.6 Metodološki postupak ...................................................................................................... 3

2. TEORIJSKO ISTRAŽIVANJE ............................................................................................. 4

2.1. Razvoj i održavanje aplikacija po zahtevu korisnika ...................................................... 4

2.2. Digitalni i softverski repozitorijumi................................................................................ 7

2.2.1. Pojam digitalnog repozitorijuma .............................................................................. 7

2.2.2. Izvorni kod i pojam repozitorijuma izvornog koda ................................................. 8

2.2.3. Strukturirani podaci u softverskim repozitorijumima .............................................. 8

2.2.4. Pretraga i organizacija softverskih repozitorijuma .................................................. 9

2.3. Interoperatibilnost podataka i aplikacija ....................................................................... 11

2.3.1. Interoperabilnost podataka ..................................................................................... 11

2.3.2. Formati podataka za razmenu ................................................................................ 11

2.3.3. Interoperabilnost aplikacija .................................................................................... 12

2.3.4. Integracija podataka ............................................................................................... 13

3. ANALIZA STRUČNIH REŠENJA U OBLASTI ........................................................... 17

3.1. Najčešće korišćeni online repozitorijumi programskog koda ....................................... 17

3.1.1. Najpopularniji programski jezici .......................................................................... 17

3.1.2. Najpopularnija sotfverska razvojna okruženja....................................................... 21

3.1.3. Izbor repozitorijuma za softverski projekat ........................................................... 22

3.1.4. Repozitorijumi za različite programske jezike .................................................. 24

3.1.5. Komparativna analiza najčešće korišćenih online repozitorijuma ..................... 25

3.2. Najčešće korišćeni formati za razmenu podataka i njihove karakteristike ................... 30

3.3. Integracija softverskih alata sa online repozitorijumima .......................................... 36

3.3.1. Integracija softverskih alata za Git .................................................................... 36

3.3.2. Tehnike integracije softverskih razvojnih okruzenja sa online repozitorijumima koda 37

4. GIT I REPOZITORIJUMI ................................................................................................... 40

4.1. Karakteristike Git .......................................................................................................... 40

4.2. Repozitorijumi koje koristi GIT ................................................................................ 45

4.2.1. GitHub................................................................................................................ 45

4.2.2. GitLab ................................................................................................................ 47

4.2.3. BitBucket ........................................................................................................... 49

4.2.4. SourceForge ....................................................................................................... 50

5. ANALIZA NAUČNIH REZULTATA U OBLASTI ...................................................... 53

6. EMPIRIJSKO ISTRAŽIVANJE ..................................................................................... 55

6.1. Metodološki elementi empirijskog istraživanja ............................................................ 55

6.2. Korišćenje online repozitorijuma nezavisno od softverskog razvojnog okruženja... 55

6.2.1. Postavljanje repozitorijuma na GitHub .............................................................. 59

6.2.2. Postavljanje repozitorijuma na BitBucket ......................................................... 62

6.2.3. Postavljanje repozitorijuma na GitLab .............................................................. 64

6.3. Korišćenje online repozitorijuma integrisano sa softverskim razvojnim okruženjem 67

6.4. Rezultati empirijskog istraživanja ............................................................................. 72

ZAKLJUČAK .......................................................................................................................... 73

LITERATURA ........................................................................................................................ 74

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

1 Dragana Ljubinković

Apstrakt

U ovom radu teorijski je prikazan način rada online repozitorijuma koda. U odeljku stručnog istraživanja prikazane su opšte osobine repozitorijuma koda, načini instalacije, zašto se koriste, kao i definicije srodnih termina koji se koriste. U praktičnom delu rada prikazani su konkretni primeri rada određenih repozitoijuma koda, način upotrebe i njihove glavne karakteristike. Posebno je analiziran aspekt integracije alata za razvoj softvera sa on-line repozitorijumima koda.

Abstract

In this paper the theoretical way of working the online code repository is presented. The section of the expert research shows the general properties of the code repository, the modes of installation, why they are used, and the definitions of related terms used. In the practical part of the paper, concrete examples of the work of certain code repositories, method of use and their main characteristics are presented. It has been particularly analyzed the aspect of integration of tools for software development with on-line code repositories.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

2 Dragana Ljubinković

UVOD

U ovom radu je opisan pojam repozitorijuma koda. Repozitorijum izvornog koda je arhiva datoteka u okviru veb hostinga u kojoj se čuva velika količina izvornog koda, bilo javno ili privatno. Često ih koriste softverski projekti otvorenog koda i drugi multi-developer projekti za arhiviranje programskog koda i praćenje različitih verzija. Oni pomažu programerima da organizovano šalju nove verzije koda. Često ove veb lokacije podržavaju kontrolu verzija, praćenje grešaka u progamskom kodu, upravljanje izdanjima, mailing liste i dokumentaciju zasnovanu na vikiju ... Ljudi koji pišu softver zadržavaju svoja autorska prava kada je njihov softver postavljen na bilo koji objekat za hosting koda.

Cilj ovog istraživanja je da se prikaže kako na lak i delotvoran način, upotrebom različitih programskih jezika, može da se koriste online repozitorijumi koda koji će čuvati i deliti sa drugim korisnicima sam kod, kao i mogućnost korišćenja i dograđivanja tuđeg koda što je korisno kod rada u grupama programera.

Princip rada online repozitorijuma koda je na neki način sličan društvenim mrežama gde korisnici mogu da razmenjuju podatke, mišljenja (iskustva) i ideje o kodu, ali i da doprinose poboljšanju koda jedni drugima. Svaki korisnik ima svoj nalog gde čuva podatke, odnosno repozitorijume kojima mogu (ili ne) da pristupe drugi korisnici.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

3 Dragana Ljubinković

1. METODOLOŠKI OKVIR ISTRAŽIVANJA

1.1 Predmet i problem istraživanja

Predmet istraživanja predstavljaju različite tehnologije razmene podataka između softverskih razvojnih alata; sinhronizacija između softverskog razvojnog alata i on-line repozitorijuma koda, kao i interoperabilnost kao koncept u integraciji alata koji se koriste u razvoju softvera. Problem istraživanja je integracija alata za razvoj softvera sa on-line repozitorijumima programskog koda.

1.2 Vrsta istraživanja

U ovom radu predmetu istraživanja se pristupa sa teorijskog i empirijskog aspekta. U okviru teorijskog pristupa, analiziraju se postojeća stručna rešenja i rezultati naučno istraživačkog rada. U empirijskom delu biće izvršena analiza postojećih stručnih rešenja i primenjenih tehnika, kao i implementacija softvera koji uključuju različite tehnike i tehnologije za razmenu podataka sa on-line repozitorijumima koda. Takođe, u empirijskom delu će biti prikazani rezultati eksperimentalnog korišćenja prototipa softvera kao i testiranje rada sa on-line repozitorijumima koda.

1.3 Cilj i zadaci istraživanja

Cilj istraživanja predstavlja teorijsko istraživanje tehnika i metoda problema interoperatibilnosti u razmeni podataka između alata koji se koriste u razvoju softvera, kao i primena na izrađenom prototipu softvera i mogućnosti koje pružaju on-line repozitorijumi koda.

1.4 Hipoteza i podhipoteze

Osnovna hipoteza:

Savremeni alati za razvoj softvera pružaju mogućnost integracije sa on-line repozitorijumima koda.

1.5 Očekivani rezultati

- Teorijsko istraživanje problema interoperabilnosti u razmeni podataka između alata koji se koriste u razvoju softvera

- Analiza postojećih stručnih rešenja i rezultata naučno istraživačkog rada u oblasti - Izrada prototipa softvera i empirijsko istraživanje mogućnosti koje pružaju on-line

repozitorijumi koda.

1.6 Metodološki postupak

1. Metodološko koncipiranje istraživanja 2. Teorijsko istraživanje osnovnih koncepata i metoda 3. Analiza rezultata naučno istraživačkog rada u oblasti 4. Analiza postojećih stručnih rešenja 5. Izrada prototipa softvera i testiranje rada sa on-line repozitorijumima koda 6. Dokumentovanje i analiza rezultata

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

4 Dragana Ljubinković

2. TEORIJSKO ISTRAŽIVANJE

Repozitorijum softvera je lokacija za skladištenje sa koje se softverski paketi ili izvorni kod mogu preuzeti na računar.

Mnogi proizvođači softvera i druge organizacije održavaju servere na Internetu za tu svrhu, bilo da su besplatni ili da plaćaju pretplatu. Repozitorijumi mogu biti isključivo za određene programe, kao što je CPAN za programski jezik Perl, ili za ceo operativni sistem. Operatori takvih repozitorijuma obično pružaju sistem upravljanja paketima, alate namenjene za pretraživanje, instalaciju i drugačije manipulisanje softverskim paketima iz repozitorijuma. Na primer, mnoge Linux distribucije koriste Advanced Packaging Tool (APT), i najčešće se nalaze u distribucijama zasnovanim na Debian ili su pronađene u distribucijama na temelju Red Hat. Postoje i višestruki nezavisni sistemi za upravljanje paketima, kao što je pacman, koji se koriste u Arch Linux i equo, koji se nalaze u Sabayon Linux.

Kako su repozitorijumi softvera dizajnirani tako da uključuju korisne pakete, glavni repozitorijumi su dizajnirani da budu bez virusa. Ako je računar konfigurisan da koristi digitalno potpisan repozitorijum od renomiranog proizvođača, a zajedno sa odgovarajućim sistemom dozvola, to značajno smanjuje pretnju malvera na ove sisteme. Kao neželjeni efekat, mnogi sistemi koji imaju ove mogućnosti ne zahtevaju softver protiv malvera kao što je antivirusni softver. Ideja je da legitimni korisnik treba da bude u stanju da se lako prijavljuje u bezbednom okruženju, pronalazi određeni softver ili kodne resurse i dobije ih u svrhu interakcije sa softverskim sistemom u celini.

Postoje i neke opšte dostupne opcije repozitorijuma softvera kao što su GitHub, BitBucket i SourceForge koje kompanije mogu izabrati prilikom kreiranja softverskog repozitorijuma za vlasničke proizvode ili proizvode otvorenog koda (open-source).

Prvi korak pri izboru repozitorijuma je da navedemo svoje zahteve. Sledeći korak je da odlučimo da li koristiti ugrađenu uslugu, institucionalno spremište ili ćemo sami upravljati infrastrukturom.

2.1. Razvoj i održavanje aplikacija po zahtevu korisnika

Custom Development (prilagodljivi razvoj baziran na zahtevima korisnika) je integralna funkcija svakog IT odeljenja preduzeća. Čak i pored toga što postoji niz dostupnih proizvoda za većinu IT funkcija, uvek postoji potreba za IT rešenjima po meri kako bi se zadovoljile potrebe preduzeća - bilo da se radi o integraciji 2 Enterprise rešenja, izgradnji rešenja za mobilnost preduzeća, ili jednostavna aplikacija Server-Client za Veb.

Custom Application Development može biti za Veb ili za desktop ili za mobilne telefone, ili za sve, koji pomažu preduzećima da dobiju vrednost za svoju investiciju.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

5 Dragana Ljubinković

Slika 3.Ecotech Development Process[3]

U nastavku će biti opisan primer firme Ecotech [3]. gde su izgrađena prilagođena IT rešenja poslovnim potrebama preduzeća, uz metodologiju razvoja koja podržava fleksibilne procese isporuke, koji pomažu preduzećima da odgovore na zahteve koji su jedinstveni za njihovo poslovanje na ekonomičniji način. Navedeni primer firme ima tim za programiranje iskusan u dizajnu i razvoju Custom IT rešenja koja kombinuju potrebe - za Vebom, za Desktop i za mobilne korisnike. Fokus je na izgradnji poslovnih rešenja, a ne samo na tehnološkom rešenju, čime se preciznije zadovoljavaju poslovne potrebe preduzeća. Ova firma realizuje rešenja prilagođena klijentima u preduzeću, pomažući im u ujedinjenju i usklađivanju protoka informacija preko preduzeća, bezbednije i bez napora, eliminišući redundantnost podataka i uz minimalne ručne intervencije. Proces razvoja u firmi Ecotech uključuje:

- Inicijacija projekta:

U ovoj prvoj fazi upravljanja projektom, preliminarni rad se obavlja kako bi se pojasnio problem ili prilika i kako bi izgledalo rešenje.

Sve zainteresovane strane (projektni akteri) se konsultuju i objašnjava se opseg projekta - šta se nalazi unutra i šta je van - kao i početni troškovi i vremenski rokovi.

Pripremljen je dokument o radnoj dokumentaciji, kao i pojedinosti o sledećem:

o Opseg rada detaljan opis rada, softver i hardver koji će se koristiti i tačna priroda posla.

o Lokacija posla gde bi lokacija posla koju treba obaviti bila drugačija od standardne lokacije. Ovo bi bilo primenjivo na SOW za rad koji se obavlja off-shore.

o Period izvođenja, početni i završni datum projekta, maksimalni sati za vremenski period, itd.

o Raspored rezultata Isporuke rokova za rezultate projekta. Ovo bi uključivalo datume završetka razvoja, KA testiranja, testiranja prihvatljivosti korisnika itd.

o Cenovnik: Procena cene projekta. o Sistemsko okruženje: specifikovani hardverski i softverski zahtevi.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

6 Dragana Ljubinković

- Planiranje i dizajn projekta:

U ovoj fazi se radi detaljno planiranje razvoja projekta.Navedene su sve glavne teme, kao i pod-teme, ako postoje.

Dizajnirane su HTML žice (proto stranice) veb aplikacije. Dokumentacija funkcionalne specifikacije se piše i daje klijentu radi boljeg razumevanja procesa. Kroz žičane ramove klijentu se predstavlja jasno razumevanje procesa i navigacije. U zavisnosti od povratne informacije klijenta, projekat napreduje u sledeću fazu, tj. U fazi razvoja.

- Razvoj projekta:

Projekat ulazi u fazu razvoja nakon faze planiranja i projektovanja. Za razvoj projekta koriste se svi zahtevi prikupljeni tokom inicijalne faze i proto stranice i dokumenti funkcionalne specifikacije.

- Testiranje projekta:

U ovoj fazi se generišu test slučajevi. Projekat je podvrgnut rigoroznom testiranju pre njegove stvarne implementacije. Nakon što je projekat uspešno testiran na funkcionalnost i željene rezultate, projekt se zatim implementira na strani klijenta.

- Održavanje projekta:

Ovo je poslednja faza nakon završetka projekta. U ovoj fazi problemi se rešavaju u sistemu koji se ne nalaze u toku životnog ciklusa razvoja, a oni koji nastaju nakon njegove praktične upotrebe. [3]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

7 Dragana Ljubinković

2.2. Digitalni i softverski repozitorijumi

2.2.1. Pojam digitalnog repozitorijuma

U informacionim tehnologijama, repozitorijum je centralno mesto u kojem se agregatni podaci čuvaju i održavaju na organizovan način, obično u skladištu računara. Termin vodi poreklo od latinske reči “repositoire”, što znači posuda ili komora u kojoj se stvari mogu staviti i to može značiti mesto na kojem se stvari prikupljaju. U zavisnosti od načina korišćenja termina, repozitorijum može biti direktno dostupno korisnicima ili može biti mesto iz kojeg se dobijaju određene baze podataka, datoteke ili dokumenti za dalje preseljenje ili distribuciju u mreži. Repozitorijum može biti sakupljanje podataka u neko pristupačno mesto skladištenja ili može takođe podrazumevati i određenu mogućnost selektivnog izvlačenja podataka. Srodni termini su skladište podataka (data warehouse) i rukovanje podacima (data mining).

Digitalni repozitorijum treba da služi za obezbeđivanje informacija unesenih i obezbeđenih koje se čuvaju, upravljaju i treba da su upotrebljive dugi niz godina...

Konzervacija digitalnih repozitorijuma sastoji se u redovnom testiranju datoteka i transformaciji, po potrebi, u čitljiviji i dostupan oblik.[1]

Spremišta često rade kao dva modela: “dark” i “open”. Svi materijali koji se čuvaju u spremištu treba da budu jedinstveni za identifikaciju.

Slika 1. Osnovni radni tok repozitorijuma [1]

Većina repozitorijuma je ispod površine:

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

8 Dragana Ljubinković

Slika 2. Komponente softvera repozitorijuma [1]

Pojam digitalnog repozitorijuma ne vezuje se samo za softversku podršku, već zahteva takođe i:

- Organizacionu obavezu, - Monitoring, - Finansijsku podršku, - Dugoročno planiranje, - Infrastrukturu.

2.2.2. Izvorni kod i pojam repozitorijuma izvornog koda

Izvorni kod je specifikacija ponašanja softverskog sistema. Repozitorijum izvornog koda se sastoji od više dokumenata ili datoteka napisanih na jednom ili više programskih jezika. Dokumenti izvornog koda se generalno grupišu u logičke entitete nazvane paketi ili moduli.

Dok izvorni kod sadrži strukturirane podatke (npr. Sintaksu, programsku semantiku, kontrolni tok), on takođe sadrži bogate nestruktuirane podatke, kolektivno poznate kao svoje jezičke podatke:

• Komentari u obliku poruka i opisa programera i komentari tipa Javadoc. • Nazivi identifikatora, uključujući imena klasa, nazive metoda i imena lokalnih i

globalnih promenljivih. • Literarni nizovi pronađeni u komandama i funkcijama za štampanje.

Ovaj nestrukturirani deo izvornog koda, čak i bez strukturiranja, pokazao se kao pomoć u određivanju funkcionalnosti na visokom nivou izvornog koda.[2]

2.2.3. Strukturirani podaci u softverskim repozitorijumima

Strukturirani podaci zasnovani su na modelu podataka i imaju poznati oblik. Primeri strukturiranih podataka u softverskom repozitorijumu obuhvataju: analizu grananja izvornog koda, graf poziva, grafikone nasleđivanja, evidencije izvršavanja i tragove; metapodatke

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

9 Dragana Ljubinković

izveštavanja o greškama (npr. autor, težina, datum); izvorna kontrola baze podataka izvršnih metapodataka (npr. autor, datum, lista izmenjenih datoteka); i mailing liste i metapodatke dnevnika ćaskanja (npr. autor, datum, lista primaoca).

Ovi repozitorijumi sadrže širok spektar informacija o različitim aspektima razvoja softvera, od ljudske komunikacije do evolucije izvornog koda. [2]

2.2.4. Pretraga i organizacija softverskih repozitorijuma

Da bi se bavili veličinom i kompleksnošću velikih softverskih repozitorijuma, predloženo je nekoliko IR-baziranih (Information Retrieval) alata, posebno alata za organizovanje i pretraživanje takvih repozitorijuma.

MUDABlue je alat zasnovan na LSI (Latent Semantic Indexing) za organizovanje velikih kolekcija open source softvera u povezane grupe, nazvane softverske kategorije MUDABlue primenjuje LSI na nazive identifikatora pronađenih u svakom softverskom sistemu i izračunava uparenu sličnost između celih sistema. Studije pokazuju da MUDABlue može postići rezultate opoziva i preciznosti iznad 80%, u odnosu na ručno stvorene oznake sistema, koji su preskupi da bi se skali do veličine tipičnih softverskih repozitorija. LACT, alat zasnovan na LDA (Latent Dirichlet Allocation ), sličan MUDABlue, pokazao je da je uporediv sa MUDA Blue u preciznosti i opozivu.

Sourcerer je pretraživač popisivačkih skala zasnovan na LDA-u za analizu i pretraživanje velikog broja softverskih sistema. Sourcer koristi LDA i AuthorTopic model kako bi izvadio koncepte u izvornom kodu i doprinos programera u izvornom kodu, respektivno. Pokazalo se da sourcer korisno analizira sisteme i traži željenu funkcionalnost u drugim sistemima.

S3 je tehnika zasnovana na LSI-u za pretraživanje, selekciju i sintezu postojećih sistema. Ova tehnika je namenjena programerima koji žele da pronađu šifre koda iz online repozitorijuma koje odgovaraju trenutnim razvojnim potrebama. Tehnika gradi rečnik dostupnih API poziva i srodnih ključnih reči, baziranih na online dokumentaciji. Zatim programeri mogu da pretražuju ovaj rečnik da pronađu povezane delove koda. LSI se koristi u saradnji sa Apache Lucene-om kako bi pružio mogućnost pretraživanja.

LSI se koristi za otkrivanje klonova visokog nivoa metoda izvornog koda izračunavanjem semantičke sličnosti između parova metoda. Srodni rad koristi ICA za istu svrhu, tvrdeći da, pošto ICA (Independent Component Analysis) može identifikovati više različitih signala (tj. Tema) od LSI-a, onda će konceptualni prostor koji se koristi za analizu bliskosti dva metoda biti veća efikasnost.

Pored uspostavljanja veza za praćenje od zahteva do izvornog koda, istraživači su predložili mnoge tehnike za pomoć u upravljanju i korišćenju prirodnog jezika u dokumentima zahteva. Ove tehnike uključuju generisanje UML (Unified Modeling Language) modela iz zahteva, otkrivanje konflikata u aspektno orijentisanim zahtevima, identifikovanje aspekata u zahtevima , i procenu kvaliteta zahteva.

IR metode zahtevaju da se mnoge vrednosti parametara konfigurišu pre upotrebe. Predložene su razne metode (poluautomatsko podešavanje parametara za skupove podataka za softverski inženjering).

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

10 Dragana Ljubinković

Istraživači počinju da razmatraju kako forumi za diskusiju, kao i sajtovi za pitanja i odgovore mogu pomoći programerima. Na primer, novi alati uključuju pronalaženje relevantnih odgovora u formati, pronalaženje stručnjaka za određeno pitanje, analiziranje tema i trendova u Stack Overflow-u, i polu-automatsko izvlačenje FAK-a o izvornom kodu.

Metode koje uključuju e-poštu dobijaju više pažnje od istraživača. Na primer, jednostavnije IR metode su korišćene za povezivanje e-pošte sa njihovim subjektima sa izvornim kodom. U sličnom radu, više tehnike klasifikacije velike težine se koriste za izvlačenje izvornog koda iz e-pošte, što može biti korisan prvi korak za gore navedene metode povezivanja.[2]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

11 Dragana Ljubinković

2.3. Interoperatibilnost podataka i aplikacija

2.3.1. Interoperabilnost podataka

Sačuvani podaci su od suštinskog značaja za ljudsko spremište još od pronalaska glinenih pločica, ili možda čak i od primitivnih pećinskih slika. Svi sačuvani podaci zahtevaju definiciju trajnih reprezentacija za te podatke i odgovarajući interfejs za pristup i korišćenje tih podataka.

Da bi se postigla interoperabilnost podataka, uskladišteni podaci se transformišu iz jedne reprezentacije u drugu. Međutim, kao što je prevođenje ljudskih jezika, ovo rešenje je manje od konačnog.

Želimo da prevodilac bude dinamički dostupan. Želimo da prevodilac ne samo bukvalno transponuje, već i da zaključi ili zaključi semantiku. Želimo da prevodilac razume sve reprezentacije, uključujući nove varijante ili dijalekte kako se dodaju. Želimo da prevodilac radi u realnom vremenu (u hodu). I poslednje, ali naravno ne manje važno, želimo da sarađujemo sa prevodiocem u predstavljanju našeg izbora, a ne onog koji nam prevodilac nameće jer će podržati samo određene kombinacije reprezentacija.

Još jedna ljudska tendencija je da se stalno pokušava rešiti problem nadograđivanjem krajnje zastupljenosti trajnih podataka. Za problem interoperabilnosti podataka ova tendencija se manifestuje kao niz generacija tehnologije baze podataka sa odgovarajućim upornim reprezentacijama za sačuvane podatke. U teoriji, prevođenje svih potrebnih podataka u novu stalnu reprezentaciju zaista će rešiti problem interoperabilnosti podataka.

Praktičniji pristup, koji se pokušavao s vremena na vreme, nije da izmisli krajnju postojanu reprezentaciju u koju se svi uskladišteni podaci moraju transformisati, već krajnji interfejs kojim se manipulišu svim uskladištenim podacima. Nedavna pojava ovog pristupa je Microsoftov OLE-DB Univerzalni pristup podacima OLE97.

Ovaj pristup je takođe koristan jer povećava vrednost prevodioca. Prevođenje trajne reprezentacije u kanonsku reprezentaciju može učiniti krajnji interfejs dostupnim za te trajne podatke. Do ovog trenutka, međutim, svi pokušaji da se reši problem interoperabilnosti podataka korišćenjem krajnjeg interfejs pristupa su se našli u ograničenjima predloženog interfejsa, ili na ne-tehničkim ograničenjima ili karakteristikama predloženog interfejsa. [4]

2.3.2. Formati podataka za razmenu

U nekim domenama može postojati nekoliko desetina različitih šema izvora i ciljnih (vlasničkih formata podataka). "Razmena" ili "format razmene" je često razvijen za jedan domen, a onda su neophodne rutine (preslikavanja) napisane da (indirektno) transformišu / prevedu svaku i svaku izvornu šemu u svaku ciljnu šemu korišćenjem formata razmene kao srednji korak. Za to je potrebno mnogo manje posla od pisanja i otklanjanja grešaka na stotine različitih rutina koje bi bile potrebne za direktno prevođenje svake i svake izvorne šeme direktno u svaku ciljnu šemu.

Jezik / format za razmenu podataka (ili razmena) je jezik koji je nezavisan od domena i može se koristiti za podatke iz bilo koje vrste discipline. Oni su "evoluirali iz označavanja i orijentisani na ekran kako bi dodatno podržali kodiranje metapodataka koji opisuju strukturne atribute informacija.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

12 Dragana Ljubinković

Praksa je pokazala da su određeni tipovi formalnih jezika prikladniji za ovaj zadatak od drugih, jer je njihova specifikacija vođena formalnim procesom, a ne posebnim potrebama implementacije softvera. Na primer, XML je jezik za markiranje koji je dizajniran da omogući stvaranje dijalekata (definicija pod-jezika specifičnih za domen). Međutim, ne sadrži rečnike specifične za domen ili tipove činjenica. Korisna za pouzdanu razmenu podataka je dostupnost standardnih rečnika-taksonomija i biblioteka alata kao što su parseri, validatori šeme i alati za transformaciju.

2.3.3. Interoperabilnost aplikacija

Interoperabilnost je sposobnost različitih sistema i organizacija da rade zajedno (interoperabilno). Termin se često koristi u smislu tehničkog sistema, ili u širem smislu, uzimajući u obzir društvene, političke i organizacione faktore koji utiču na sistem i na performanse sistema.

Interoperabilnost je u početku definisana za IT sisteme ili usluge i omogućava samo razmenu informacija. Osnovna definicija interoperabilnosti je –

Interoperabilnost je osobina proizvoda ili sistema, čiji su interfejsi u potpunosti razumljivi, da rade sa drugim proizvodima ili sistemima, sadašnjim ili budućim, bez ograničenog pristupa ili implementacije. [3]

Ako su dva ili više sistema sposobna da komuniciraju i razmenjuju podatke, oni pokazuju sintaktičku interoperabilnost. Specifični formati podataka, komunikacioni protokoli i slično su fundamentalni. XML ili XL standardi su među alatima sintaktičke interoperabilnosti. To važi i za formate podataka nižeg nivoa, kao što su obezbeđivanje abecednih znakova u istoj varijaciji ASCII ili Unicode formatu (za engleski ili međunarodni tekst) u svim komunikacionim sistemima.

Pored sposobnosti dva ili više računarskih sistema za razmenu informacija, semantička interoperabilnost je mogućnost automatskog tumačenja informacija koje su razmenjene značajno i tačno kako bi se proizveli korisni rezultati kao što su definisani od strane krajnjih korisnika oba sistema. Da bi se postigla semantička interoperabilnost, obe strane moraju se odnositi na zajednički referentni model razmene informacija. Sadržaj zahteva za razmenu informacija je nedvosmisleno definisan: ono što se šalje je isto što i ono što se razume.

Sledeći faktori rizika su uključeni u interoperabilnost aplikacije: o Bezbednost o Performanse o Pouzdanost.

Uzimajući u obzir gore navedene faktore rizika, rizici interoperabilnosti aplikacije mogu se ublažiti praćenjem implementacije:

- Interoperabilnosti aplikacija pomoću razvoja Veb usluga / interfejsa - Interoperabilnosti aplikacije pomoću Windows servisa.

Interoperabilnost nudi sledeće prednosti:

- Preduzeća mogu da spoje aplikacije i sisteme širom preduzeća, bez obzira na dobavljače.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

13 Dragana Ljubinković

- Višestruki sistemi mogu biti povezani zajedno da bi podelili informacije u realnom vremenu, isporučujući informacije osetljive na vreme onima kojima je to potrebno.

- Različita rešenja kao rezultat spajanja ili preuzimanja mogu se brzo uključiti u rešenje informacionih tehnologija preduzeća. [3]

Ponovna upotreba starijih aplikacija često predstavlja značajan motivator za usvajanje distribuiranih okvira aplikacija, naročito brokera za posredovanje objekata, kao što je zajednička brokerska arhitektura zahteva (CORBA). Odeljenja za informacione tehnologije žele brzo sklapati nove aplikacije iz mešavine inkapsuliranih zastarelih komponenti i novih inžinjeriranih. ORB proizvođači ispunjavaju ovu potrebu s širokim spektrom povezivanja i enkapsulacijskih rešenja koja obezbeđuju mostove postojećim transakcionim aplikacijama. Pored toga, klijent ORB klijenta usluga komponente ne zna gde i kako se komponenta implementira. Ova transparentnost lokacije je važan mehanizam ponovnog korišćenja i migracije, jer zamena komponenti ne utiče na funkcionisanje sistema, sve dok se održavaju objavljeni interfejsi. Prema tome, objektna orijentacija se vidi kao sredstvo interoperacije.

2.3.4. Integracija podataka

Razmena podataka je proces uzimanja podataka strukturiranih pod izvornom šemom i pretvaranja u podatke strukturirane pod ciljnom šemom, tako da ciljni podaci predstavljaju tačan prikaz izvornih podataka. Razmena podataka omogućava razmenu podataka između različitih računarskih programa.

Integracija podataka je ključni izazov za napredak nauke u oblastima kao što su biologija, ekosistemi i upravljanje vodama, gde grupe naučnika samostalno prikupljaju podatke i pokušavaju da sarađuju jedni s drugima.Integracija podataka je izazov za vlade koje žele da njihove različite agencije budu bolje koordinirane. I na kraju, mash-up su sada popularna paradigma za vizualizaciju informacija na Vebu, a osnova svakog mash-up je potreba da se integriraju podaci iz više različitih izvora. [8]

Sličan je konceptu integracije podataka, osim što se podaci razmenjuju u stvarnosti (uz mogući gubitak sadržaja). Možda ne postoji način da se instanca transformiše pod svim ograničenjima. Nasuprot tome, mogu postojati brojni načini da se ta instanca transformiše (verovatno beskonačno mnogo), u kom slučaju se mora identifikovati i opravdati „najbolji“ izbor rešenja.

Ukratko, cilj sistema integracije podataka je da ponudi jedinstven pristup skupu autonomnih i heterogenih izvora podataka:

- Query (Upit): Većina sistema za integraciju podataka se fokusira na upite različitih izvora podataka. Međutim, ažuriranje izvora je svakako interesantno.

- Broj izvora: Integracija podataka je već izazov za mali broj izvora (manje od 10 i često čak 2!), Ali izazovi se pogoršavaju kada broj izvora raste. U krajnjoj liniji, treba da podržimo integraciju podataka na veb-nivou.

- Heterogenost: Tipičan scenario integracije podataka uključuje izvore podataka koji su razvijeni nezavisno jedan od drugog. Kao posledica toga, izvori podataka rade na različitim sistemima: neki od njih su baze podataka, ali drugi mogu biti sistemi za upravljanje sadržajem ili jednostavno fajlovi koji se nalaze u direktoriju. Izvori će imati različite šeme i reference na objekte, čak i kada modeliraju iste domene. Neki izvori mogu biti potpuno strukturirani (npr. Relacijske baze podataka), dok drugi mogu biti nestrukturirani ili polustrukturirani (npr. XML, tekst).

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

14 Dragana Ljubinković

- Autonomija: Izvori ne pripadaju nužno jednom administrativnom entitetu, pa čak i kada to čine, mogu ih voditi različite podorganizacije. Prema tome, ne možemo pretpostaviti da imamo potpuni pristup podacima u izvoru ili da možemo pristupiti podacima kad god to poželimo, i potrebno je posvetiti značajnu pažnju poštivanju privatnosti podataka kada je to prikladno. Osim toga, izvori mogu da promene svoje formate podataka i obrasce pristupa u bilo kom trenutku, bez obaveštavanja bilo koje centralne administrativne jedinice. [8]

Da bi se problem integracije podataka pristupio efikasno, važno je prvo ispitati razloge zbog kojih je teško. Razloge svrstamo u tri različite klase: razlozi sistema, logički razlozi i socijalni razlozi.

Sistemski izazovi koji se javljaju u integraciji podataka su sasvim očigledni i pojavljuju se veoma rano u procesu pokušaja izgradnje aplikacije za integraciju. U osnovi, izazov je omogućiti različitim sistemima da bez problema razgovaraju jedni s drugima. Čak i pod pretpostavkom da svi sistemi rade na istoj hardverskoj platformi, a svi izvori su sistemi relacionih baza podataka koji podržavaju SQL standard i ODBC/JDBC, problem već nije jednostavan. Na primer, dok je SQL standardni jezik upita za relacione baze podataka, postoje neke razlike u načinu na koji ga različiti proizvođači implementiraju i te razlike treba uskladiti.

Efikasno izvršavanje upita preko više sistema je još izazovnije. Obrada upita u distribuiranim bazama podataka (tj. Baza podataka gde su podaci podeljeni na više čvorova) već predstavlja težak problem. Memorija je u tome što u distribuiranim bazama podataka su podaci a priori distribuirani različitim čvorovima od strane jednog entiteta na organizovan i poznat način. U integraciji podataka suočeni smo sa već postojećom kolekcijom izvora, a organizacija podataka u izvorima je mnogo složenija i ne mora nužno biti poznata. Štaviše, mogućnosti svakog od izvora podataka u smislu moći obrade upita mogu biti veoma različite. Na primer, dok jedan izvor može biti potpuni SQL motor i zato može da prihvati veoma složene upite, drugi izvor može biti veb obrazac i stoga prihvata samo mali broj upita.

Drugi skup izazova ima veze sa načinom na koji su podaci logički organizovani u izvorima podataka. U većini slučajeva, strukturirani izvori podataka su organizovani prema šemi. U uobičajenom slučaju relacijskih baza podataka, šema specificira skup tabela, a za svaku tabelu ser atributa sa njihovim pridruženim tipovima podataka. U drugim modelima podataka šema je specifikovana oznakama, klasama i svojstvima.

Ljudska priroda je takva da ako dve osobe dobiju iste zahteve za aplikaciju baze podataka, oni će dizajnirati veoma različite šeme. Stoga, kada podaci dolaze iz više izvora, oni obično izgledaju veoma različito.

Poslednji set razloga nije toliko tehnički kao prethodni, ali su često toliko teški i lako mogu biti razlog zbog kojeg projekat integracije podataka ne uspe. Prvi izazov može biti pronalaženje određenog skupa podataka.

Čak i kada znamo gde su svi podaci, vlasnici podataka možda neće hteti sarađivati s naporima integracije. Kada vlasnici dolaze iz različitih kompanija ili univerziteta, postoje neki očigledni razlozi da se ne želi deliti, ali čak i unutar preduzeća, vlasnici često nerado dele podatke. U nekim slučajevima, razlog je taj što su njihovi podaci deo pažljivo podešene i kritične funkcije preduzeća. Dozvoljavanje dodatnih upita iz sistema integracije podataka može dovesti do prevelikog opterećenja njihovog sistema. U drugim slučajevima, razlog je taj

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

15 Dragana Ljubinković

što neki podaci mogu da vide samo određeni ljudi u preduzeću, a vlasnici podataka su zabrinuti (iz dobrog razloga!) da sistem integracije podataka neće moći da sprovede ova ograničenja. Konačno, u nekim slučajevima ljudi stvaraju fedove podataka - ovde, pristup podacima znači više moći unutar organizacije. Na primer, šef odeljenja prodaje možda neće želeti da podeli podatke o radu prodajnih predstavnika, jer može otkriti neke unutrašnje probleme.

Vredi napomenuti da u nekoliko okolnosti - na primer, one koje uključuju medicinske zapise ili sprovođenje zakona mogu postojati legitimni pravni razlozi zašto vlasnik podataka ne može da deli podatke.

Budući da se takve situacije pojavljuju, problem anonimiziranja podataka ostaje bitna tema u istraživanju informatike. Iako ne možemo da očekujemo da ćemo rešiti socijalne problem samo tehnologijom, tehnologija može pomoći vlasnicima podataka da iskoriste neke od prednosti integracije podataka, čime se obezbeđuju dodatni podsticaji za učešće. [8]

2.3.4.1. Obrada upita u sistemu integracije podataka Obrada upita u sistemu integracije podataka razlikuje se od tradicionalne obrade upita na dva glavna načina. Prvo, upit se mora preformuliasati iz posredovane šeme u šemu izvora. Drugo, izvršavanje upita može biti adaptivno u tome što se plan izvršenja upita može promeniti kako se izvršava upit.

Slika 4. Obrada upita [8]

Formulacija upita - korisnički upit se postavlja u smislu odnosa u posredovanoj šemi. Dakle, prvi korak koji sistem mora da uradi je da preformuliše upit u upite koji se odnose na šeme

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

16 Dragana Ljubinković

izvora podataka. Da bi to uradio, sistem koristi opise izvora. Rezultat reformulacije je skup upita koji se odnose na šeme izvora podataka i čija će kombinacija dati odgovor na originalni upit. Odnosi se na rezultat reformulacije kao logički plan upita.

Optimizacija upita - Sledeći korak u obradi upita je optimizacija upita, kao u tradicionalnim sistemima baza podataka. Optimizacija upita uzima kao ulazni logički plan upita i proizvodi fizički plan upita, koji specificira tačan redosled kojim se pristupa izvorima podataka, kada se kombinuju rezultati, koji se algoritmi koriste za obavljanje operacija na podacima, kao i količinu resursa dodeljenih svakoj operaciji. Sistem takođe mora da se nosi sa izazovima koji proističu iz distribuirane prirode sistema integracije podataka.

Izvršavanje upita - Konačno, mehanizam izvršavanja je odgovoran za stvarno izvršenje fizičkog plana upita. Pokretački mehanizam šalje upite pojedinačnim izvorima preko omotača i kombinuje rezultate kao što je navedeno u planu upita. U tome leži još jedna značajna razlika između sistema integracije podataka i tradicionalnog sistema baze podataka. Za razliku od tradicionalnog mehanizma za izvršavanje koji samo izvršava plan upita datog od strane optimizatora, mehanizam izvršenja sistema integracije podataka može odlučiti da od optimizatora traži da preispita svoj plan na osnovu praćenja napretka plana.

2.3.4.2. Razmena podataka u odnosu na integraciju podataka U tipičnom scenariju (virtualne) integracije podataka imamo jedan ili više lokalnih izvora, kao i globalnu šemu, i specifikaciju odnosa između lokalnih šema i globalne šeme, tj. Mapiranje. Podaci se nalaze na lokalnom nivou, ali korisnik želi upitati virtuelnu bazu podataka globalne šeme.

Dakle, sistem integracije se može posmatrati kao sistem za razmenu podataka: mi posmatramo sve lokalne izvore kao jedinstvenu bazu podataka lokalne (izvorne) šeme i, pod datim mapiranjem, želimo da upitamo bazu podataka globalne šeme (ciljne ). Štaviše, kako u oba slučaja cilj, ili globalna baza podataka šeme, nije jedinstvena, semantika odgovaranja na upit je obezbeđena određenim odgovorima.

Ključna razlika između razmene podataka i virtualne integracije podataka je u obradi podataka o ciljnim (globalnim šemama) i tipu podataka koji se koriste za odgovaranje na upit. U virtualnoj integraciji podataka ne materijalizujemo bazu podataka globalne šeme. Umesto toga, prepisujemo dati upit Q preko globalne šeme u upite preko izvora, tako da bi njihovi rezultati ili izračunali, ili približili na najbolji način, odgovor na upit Q. To jest, cilj nije materijalizovan, a koriste se izvorni podaci za odgovor na upit.

U razmeni podataka, s druge strane, mi ostvarujemo cilj. Naravno, može biti mnogo ciljnih instanci, ali mi odaberemo da materijaliziramo jednu od njih, a onda je koristimo za odgovaranje na upite Q. Možemo izabrati da pokrenemo isti upit Q, ili ga ponovo napišemo u drugi, ali radimo upite na materijalizovanoj meti. To jest, u razmeni podataka, cilj je materijalizovan, a to su materijalizovani ciljni podaci koji se koriste za odgovaranje na upit [9].

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

17 Dragana Ljubinković

3. ANALIZA STRUČNIH REŠENJA U OBLASTI

3.1. Najčešće korišćeni online repozitorijumi programskog koda

3.1.1. Najpopularniji programski jezici

Velika zainteresovanost za učenje novih programskih jezika od strane programera javlja se u odnosu na jezik Python, TypeScript sa podrškom za Microsoft i jezik za kreiranje Android aplikacija, Kotlin. Nalazi potiču iz ankete koju je sproveo HackerRank nad tržištem programera, koji je pitao 71.000 developera širom sveta o tome koje jezike danas poznaju i šta žele da nauče ove godine. Rezultati su objavljeni u izveštaju o razvojnim veštinama za 2019. godinu. [43]

Slika 5. Statistika programskih jezika koji su najviše traženi za učenje u 2019. godini [43]

Go, kreiran 2007. godine na Google-u, je vrhunski jezik za koji programeri kažu da žele da nauče 2019. godine, a slede ga Kotlin, Python i TypeScript. Ostali jezici koji su visoko na agendi programera za narednu godinu uključuju R, Swift i Scala.

Najkorišćeniji jezik u 2018. godini bio je JavaScript, koji je obuhvatio 73 % anketiranih programera. Preostalih 10 najtraženijih su Java, C, Python, C ++, PHP, C #, TypeScript, Pascal i Ruby.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

18 Dragana Ljubinković

Uprkos široko rasprostranjenom poznavanju JavaScript-a, koji se obično koristi za izradu veb aplikacija, HackerRankova ranija studija programera-studenata je otkrila da samo 42% u ovoj grupi poznaje jezik, verovatno zato što se često ne predaje u programima nastave računarskih nauka. Programeri stoga teže da ga nauče na poslu.

Dok JavaScript vodi HackerRankovu listu najboljih programskih jezika, Python je zauzeo prvo mesto u Tiobe indeksu za 2018. Za razliku od JavaScript-a, Python se široko uči na univerzitetima, a takođe je popularan i za mašinsko učenje, skriptovanje, veb programiranje i računarske nauke.

Upotreba Kotlina, alternativa Javi, takođe je skočila u poslednje dve godine nakon što je Google to učinio službeno podržanim jezikom za razvoj Android aplikacija. Microsoftov GitHub je otkrio da je to najbrže rastući jezik na sajtu hostinga koda. [43]

GitHub je jedan od najvećih repozitorijuma koda koji se danas koristi. Svake godine kreiraju izveštaj godine u pregledu, deleći statistike o svojoj programerskoj zajednici. Navodi se njihova metrika „Pull Reqests Opened“ kao još jedan pokazatelj popularnosti jezika.

Prema Tiobe Index za 2017. godinu, navodi se sledeća statistika najkorišćenijih programskih jezika:

Slika 6. Statistika popularnosti programskih jezika do decembra 2017. [42]

Grafikon iznad prikazuje 20 najpopularnijih programskih jezika do decembra 2017. godine. Tiobe Index radi kao tržišni udeo; procenat je iznos “tržišnog udela” koji drži jezik. Svi jezici u kombinaciji ukupno 100%.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

19 Dragana Ljubinković

Slika 7. Statistika najtraženijih programskih jezika pri zaposlenju [42]

Ovaj grafikon prikazuje najtraženije programske jezike pi zaposlenju prema Indeed.com. Uzeto je 50 najpopularnijih jezika iz Tiobe indeksa i prema pretrazi “(“ Language name ”) Developer”. Stavlja se naziv jezika u navodnike pri pretrazi kako bi rezultati bili tačniji.

Slika 8. Statistika programskih jezika koji se koriste na GitHub[42]

Na grafiku je prikazan top lista 15 najtraženijih pull request zahteva za programskim jezicima na GitHub online repozitorijumu koda. Ti zahtevi su pokazatelji količine koda koji se piše.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

20 Dragana Ljubinković

Prema OSS-Watch-u, „Pull request je način podnošenja doprinosa otvorenom razvojnom projektu.“ Javascript ima masivan trag na GitHub-u, s više od dvostrukog broja pull request od drugog vodećeg jezika. U 2017. godini, Python je prešao Javu kao drugi najpopularniji jezik sa pull request. [42]

Decenijama, Kompanija Tiobe (kompanija za kvalitet softvera) je generisala indeks najpopularnijih programskih jezika. Oni ažuriraju ovu listu mesečno, povlačeći podatke iz stotina izvora širom sveta.

Slika 9. Statistika sa Tiobe sajta za 2018. i 2019. godinu [44]1

Na poslednjem grafiku je prikaz statistike i pomeranja popularnosti programskih jezika u 2018. i 2019. godini koji su generisani na Tiobe sajtu.

1 Indeks TIOBE programske zajednice je indikator popularnosti programskih jezika. Indeks se ažurira jednom mesečno. Ocene se zasnivaju na broju stručnih inženjera širom sveta, kursevima i trećim licima. Popularni pretraživači kao što su Google, Bing, Jahoo !, Wikipedia, Amazon, YouTube i Baidu koriste se za izračunavanje rejtinga. Važno je napomenuti da se indeks TIOBE ne bavi najboljim programskim jezikom ili jezikom u kojem je napisana većina redova koda. https://www.tiobe.com/tiobe-index/

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

21 Dragana Ljubinković

3.1.2. Najpopularnija sotfverska razvojna okruženja

Integrisana razvojna okruženja, ili IDE (Integrated development environments), su softverske platforme koje programerima i developerima pružaju sveobuhvatan skup alata za razvoj softvera u jednom proizvodu. IDE su napravljeni da rade sa specifičnim aplikacionim platformama i uklanjaju prepreke uključene u životni ciklus razvoja softvera. IDE se koriste u razvojnim timovima za izgradnju novog softvera, aplikacija, veb stranica i servisa, i pomažu im pružanjem jednog alata sa svim mogućnostima i uklanjanjem potrebe za integracijama. IDE su za programiranje koda na određenoj platformi ili platformi, i imaju integrisane funkcije koje znaju kako platforma funkcioniše i kako da koriste funkcije platforme putem kompajliranja koda, koda za otklanjanje grešaka ili inteligentno kompletiranje koda.

Da bi se kvalifikovao za uključivanje u kategoriju Integrisane razvojne sredine, proizvod mora:

- Obezbediti mogućnosti programiranja kroz uređivač teksta ili GUI (grafički korisnički interfejs);

- Integracija sa najmanje jednom platformom bez posebnog dodatka; - Izlaganje interfejsa za programiranje aplikacija (API) i omogućavanje kompajliranja,

otklanjanja grešaka, kontrole verzija, predloga za kod specifične za platformu ili implementacije koda.

Sledi nekoliko IDE za programske jezike koji se najviše koriste.

Microsoft Visual Studio je integrisano razvojno okruženje (IDE) za razvoj aplikacija konzolnih i grafičkih korisničkih interfejsa zajedno sa Windows Forms ili WPF aplikacijama, veb sajtovima, veb aplikacijama i veb servisima.

Eclipse je poznat po Java integrisanom razvojnom okruženju (IDE), ali C / C ++ IDE i PHP IDE takođe. Može se lako kombinovati jezička podrška i druge funkcije u bilo kom od podrazumevanih paketa, a Eclipse Marketplace omogućava praktično neograničeno prilagođavanje i proširenje.

NetBeans IDE - Pametniji i brži način. Brzo i lako razviti desktop, mobilne i veb aplikacije sa Java, PHP, C / C ++ i još mnogo toga. NetBeans IDE je besplatan, otvorenog koda i ima svetsku zajednicu korisnika i programera.

Rider je punopravni, .NET IDE. Rider može otvarati, upravljati, graditi i ispravljati širok raspon .NET Framework, Mono i .NET Core baziranih rešenja, te pruža podršku za uređivanje većine jezika koji se koriste u .NET razvoju: C #, VB.NET, ASP.NET syntax, XAML , XML, JavaScript, TypeScript, JSON, HTML, CSS i SQL.

Visual Studio App Center isporučuje iOS, Android, Windows i macOS aplikacije brže i pouzdanije automatizacijom njihovih životnih ciklusa. Takođe povezuje repozitorijum i, u roku od nekoliko minuta, gradi u cloud, testira na hiljade stvarnih uređaja, distribuira u beta testere i prodavnice aplikacija, i prati realnu upotrebu sa podacima o padovima i analizi.

JetBrains IntelliJ IDEA je sposoban i ergonomski IDE za razvoj veba, preduzeća i mobilnih Java. On pruža podršku visoke klase i povećava produktivnost za razvoj preduzeća, mobilnih uređaja i veba u Java, Scala i Groovy, sa svim najnovijim tehnologijama i okvirima koji su podržani.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

22 Dragana Ljubinković

IBM Rational Application Developer za WebSphere software ubrzava razvoj, osiguranje kvaliteta i implementaciju Java, Java EE, Veb 2.0, mobilnih, portalnih i servisno orijentisanih arhitektura (SOA) aplikacija za distribuirane platforme i IBM Bluemix.

Slika 10. Statistika korišćenja IDE do 2019. godine

3.1.3. Izbor repozitorijuma za softverski projekat

Prvi korak pri izboru repozitorijuma je da se navedu zahtevi. Sledeći korak je da se odluči da li će se koristiti hostovana usluga, institucionalni repozitorijum ili ćemo sami upravljati infrastrukturom.

Usluge hostovanja se obično koriste kada softverski projekat radi sa saradnicima i izvršiocima koji se šire u više od jedne institucije. Neke od popularnijih javnih hostovanih usluga (prema broju hostovanih korisnika i projekata) su navedene u nastavku.

GitHub (Podržava: Git/SVN; osnovano: 2008; korisnici:24m; repozitoriji: 69m uključujući klonove/forks) - GitHub pruža okruženje koje je više fokusirano na razvojne programere (za razliku od onoga koje je fokusirano na projekat). Razvio je snažno praćenje u nauci (NumPy i SciPy su hostovani na GitHub), a počeo je da hostuje i podatke (i može se koristiti git-aneks za upravljanje veoma velikim datotekama). On ima dobru propusnost i politiku skladištenja podataka, tako da se prekomerna upotreba može smanjiti. On obezbeđuje plaćene organizacione račune koji uključuju privatna skladišta. Nudi besplatne srebrne planove koji nude privatne repozitorijume istraživačima i edukatorima.

BitBucket (Podržava: Git/Mercurial; osnovan: 2008; korisnici: 5m; >330k) BitBucket je domaćin Atlassian-a koji je poznat po svojim razvojnim proizvodima, JIRA i Confluence. Njegova jedinstvena prodajna tačka je da nudi neograničene privatne repozitorijume za do 5 korisnika, što može biti privlačno za istraživanje i izradu prototipova.

GitLab (Podržava: Git; osnovano: 2011; korisnici: 100k; >500k) GitLab je veb-bazirani Git menadžer sa wiki i funkcionalnošću tracker-a. Pored hosting projekata, često se instalira

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

23 Dragana Ljubinković

unutar institucije ili grupe da bi se obezbedilo lokalno spremište koje je odvojeno od gitlab.com.

SourceForge (Podržava: CVS/SVN/Git/Mercurial/Bazaar; osnovano: 1999; korisnici:>3.7m; >500k) SourceForge je bio najpoznatiji sajt za hosting softvera, ali je izgubio svoju krunu kao najveći od GitHub u maju 2011. godine. On obezbeđuje većinu funkcija koje se očekuju od repozitorijuma i pružaju usluge koje pomažu da se regrutuju novi programeri. Neki korisnici su otkrili da server može biti malo spor u vreme velike potražnje, a prvenstveno je podržan oglasima koji možda nisu prikladni za sve projekte. SourceForge ne dozvoljava pristup iz nekih zemalja, posebno Irana i Sirije.

Launchpad (Podržava: Bazaar, CVS/SVN/Git/Mercurial import samo; osnovano: 2004; korisnici: >3.9m; >40k) Launchpad je domaćin kompanije Canonical i navodi neke značajne projekte kao što su korisnici, kao što su Ubuntu i MySQL. On obezbeđuje sistem (Blueprints) za praćenje karakteristika i specifikacija i sistem za upravljanje izdanjem Soyuz.

Assembla (Podržava: SVN/Git; osnovano: 2005; korisnici: 800k; >500k)Assembla ima jake pozicije među manjim kompanijama i ima opsežne objekte za upravljanje projektima pored usluga razvoja softvera.

Savannah (Podržava: CVS/SVN/Git/Mercurial/Bazaar;osnovano: 2000; korisnici: >77k; >3k) Savannah je domaćin većine GNU softvera i nekih ne-GNU softvera. Savannah se fokusira na hosting za projekte slobodnog softvera. Da bi se osiguralo da je smešten samo slobodni softver, Savannah sprovodi veoma stroga hosting pravila, uključujući zabranu korišćenja neslobodnih formata (kao što je Macromedia Flash).

Opšte je mišljenje da gotovo svi repozitorijumi pružaju usluge za licencirane projekte otvorenog koda. Ovi sajtovi verovatno nisu pogodni ako imamo bazu zatvorenog koda ili mešoviti licencni proizvod. Pored toga, možda će se uočiti da je kvalitet usluge koja se dobija kompromis između stabilnosti kroz mnogo korisnika i depersonalizacije usluge.

Jedini izuzetak je Bitbucket koji omogućava hosting i privatnih i javnih repozitorijuma, čak i pod njihovim slobodnim planom. GitHub takođe podržava privatne repozitorijume pod njihovim plaćenim planovima i nudi besplatne srebrene planove nudeći privatne repozitorijume istraživačima i edukatorima.

Postoje i usluge za određenu veliku zajednicu. CCPForge obezbeđuje GForge bazirano spremište prvenstveno za kolaborativne računarske projekte (CCP).U ovom spremištu se nalaze projekti otvorenog i zatvorenog koda.Projekat mora uključivati značajan doprinos istraživačke grupe iz Ujedinjenog Kraljevstva i mora biti obavljanje javno financiranih naučnih istraživanja.Važno je napomenuti da, iako CCPForge ima višestruku rezervnu politiku, oni ne garantuju sigurno skladištenje podataka.

Mnoge organizacije imaju vlastite servise za kontrolu verzija, menadžere mailing-liste i usluge koje pružaju punu infrastrukturu sličnu kovačnici. Uopšteno, ove usluge su uglavnom korisne ako su provajderi i programeri projekta bazirani na organizaciji koja je domaćin servisa - iako institucionalni repozitorijumi obično mogu da rade sa nekoliko spoljnih saradnika.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

24 Dragana Ljubinković

Glavna prednost institucionalnog repozitorijuma je u tome što je lako razraditi ko može pomoći kada je potrebno nešto uraditi. S druge strane, ako je projekat dostigao istinski globalni nivo, možda nije prikladno da bude vezan za određenu instituciju.

Relativno je lako postaviti i pokrenuti vlastiti sistem kontrole revizije, kao što su CVS, SVN ili Git. Takođe je moguće pokrenuti sopstveno softversko spremište koristeći pakete kao što su Gitlab, Trac, GForge, Savane (koji pokreće SourceForge i Savannah), Codendi i LibreSource.

Pokretanje sopstvene infrastrukture zahteva određeno vreme za postavljanje i održavanje instalacije. Međutim, on daje najveću kontrolu nad repozitorijumom i njegovom prilagođavanju. Obično, postavljanje sopstvenog spremišta je vredno ako se već koriste druga infrastruktura za svoj projekat i očekuje da će u budućnosti biti domaćin još projekata.

Odabir repozitorijuma za softverski projekt nije sličan odabiru gde će se ugostiti veb-lokacija. Postoji mnogo opcija, od vođenja do samog plaćanja usluge. Opcija koja se odabere će zavisiti od okolnosti - naročito od funkcionalnosti koja je potrebna - količine napora potrebnog za upravljanje projektom, popularnosti usluge među zajednicom u kojoj se radi, kao i veličine i raznolikosti doprinosa projektu.

Najvažnija stvar koju treba imati na umu prilikom odabira repozitorijuma je da repozitorijum služi samo svojoj svrsi u sadašnjosti. Mora se redovno pregledati odredbe iz repozitorijuma u slučaju da u budućnosti treba da se migrira na drugu uslugu. [12]

3.1.4. Repozitorijumi za različite programske jezike

Kodni isečci su jedinice višestrukog korišćenja izvornog koda ili mašinskog koda koje se mogu ugraditi u velike programske module za implementaciju određene željene funkcionalnosti. Često, programeri koji rade na različitim projektima razvoja softvera osećaju potrebu da ponovo koriste određene delove koda. On-line “riznice” kodova omogućavaju programerima da sačuvaju i upravljaju isečcima koda sa jedne lokacije na jednostavan način. To im u pomaže da uštede puno vremena koje mogu koristiti da se fokusiraju na kodiranje ili druge produktivne zadatke. Sa porastom otvorenih izvora GIT repozitorijuma, otkrivanje isečaka koda postalo je izvodljivije i efikasnije. Sada, programeri mogu da doprinesu ili imaju koristi od velike količine spremišta otvorenog koda. Ove platforme ne samo da dozvoljavaju programerima da održavaju privatne biblioteke kodova, već im takođe omogućavaju da sarađuju sa drugima kroz nekoliko projekata razvoja softvera otvorenog koda.

Danas postoji čitav niz online platformi koje omogućavaju programerima da sačuvaju korisne fragmente koda u privatnim spremištima, kao i da dele delove koda sa drugima. Neka javna skladišta izvornog koda su evoluirala da bi postala neke od najtrendijih, otvorenih biblioteka i tehnologija. U nastavku teksta su dati primeri nekoliko najkorišćenijih online repozitorijuma koji podržavaju različite programske jezike.

Snipplr je popularna online platforma za organizovanje i čuvanje korisnih isečaka koda. Podržava niz programskih jezika, kao što su Python, JavaScript, C ++, Scala i još mnogo toga. Snipplr omogućava deljenje delova koda, kao i održavanje biblioteka koda. Ima preko 164829 registrovanih korisnika i delova koda 59128, što ga čini jednim od najpopularnijih repozitorijuma koda na vebu.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

25 Dragana Ljubinković

Snippets Mania je onlajn mesto za objavljivanje i deljenje isečaka koda. Na sajtu se nalaze korisni delovi koda za niz programskih jezika, kao što su Ruby, Java, C, C ++, PHP, JavaScript, ActionScript i još mnogo toga. Snippets Mania je pogodan za početnike, nove programere i napredne programere.

Snipt je napredna online usluga za skladištenje i deljenje isečaka koda. Uslugu koristi više od 22.000 programera širom planete i nadograđuje od 1 lakh + delova koda na 145 jezika. Snipt omogućava pojedincima da sačuvaju i dele privatne i javne delove koda putem ličnih računa. On takođe obezbeđuje poslovne mogućnosti za račune timova, omogućavajući članovima tima da objavljuju, uređuju i dele delove koda, kako privatne tako i javne. Štaviše, Snipt omogućava kreiranje i ugrađivanje blogova na Snipt ili privatnom domenu.

Snippet Repo je veb-bazirana sposobnost za skladištenje, organizovanje i deljenje isečaka koda. To je repozitorijum online kodova i zajednički upravljan, sa preko 2000 članova i 23,000+ delova koda. Snippet Repo sadrži delove koda za JavaScript, PHP, CSS, jQuery, Java, Python, Ajax i još mnogo toga. Platforma takođe nudi funkcije, kao što su upvote / downvote sistem, komentari i još mnogo toga.

PHP programeri imaju svoje sopstveni repozitorijum za PHP kodove koji se nazivaju PHP Snips. Sadrži neke od najkorisnijih i najnovijih kodnih isečaka za razne PHP razvojne projekte. Sajt sadrži PHP isečke koda za različite slučajeve upotrebe, uključujući proveru autentičnosti, bazu podataka, datum/vreme, nizove, stringove i drugo.

Uzimajući u obzir rastuću popularnost JavaScript-a, važno je da JavaScript programeri proveravaju ovaj repozitorijum koda koji je isključivo posvećen JavaScript-u. JS Snips je onlajn mesto za postavljanje i deljenje JavaScript kodnih isečaka i JavaScript dodataka za jQueri i Mootools.

Code Project je ogroman resursni sajt za projektante i programere. Platforma pruža funkciju socijalne saradnje koja omogućava članovima da se uključe u diskusije, ankete i preglede. Code Project takođe nudi niz online resursa za učenje u formi sekcije za pitanja i odgovore, informativne članke i savete. Osim toga, Code Project je također popularno mesto za čuvanje i deljenje isečaka koda koji zadovoljavaju Microsoftove jezike, kao što su C # i .NET. [30]

3.1.5. Komparativna analiza najčešće korišćenih online repozitorijuma

Generalno govoreći, repozitorijumi izvornog koda su pravi poklon za one koji rade u velikim timovima. Pošto se veliki broj repozitorijuma kodova pojavljuje svaki dan, potrebno je razumeti koje su od njih najpouzdanije. Dakle, velika količina ovih domaćina korisnicima daje mnogo prostora za izbor. Ali ljudi se mogu zbuniti odabirom najboljeg.

Github, GitLab i Bitbucket su repozitorijumi kontrole verzije softvera. Oni dozvoljavaju programerima da proveravaju kod, a zatim vraćaju ažuriranja u oblak, obično koristeći Git ili Mercurial alate za naredbe. Takođe se mogu povezati sa velikim brojem aplikacija, kao što su NodeJS ili Zeppelin notebook računari, tako da se i kodovi čuvaju u oblaku. Razvojne prodavnice često se koristi Jenkins za povlačenje koda iz ovih repozitorijuma.

Postoje neki osnovni koncepti za učenje. Oni dozvoljavaju programerima da naprave posebnu granu (“fork”), kako bi napravili promene u softveru koji ne bi uticao na glavnu granu. Programer radi na kodu na svom laptopu. Softver vodi evidenciju o promenama u njihovom repozitorijumu lokacija koje se obavežu da ažuriraju lokalni repozitorijum. Zatim, ako žele

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

26 Dragana Ljubinković

da vrate te promene na glavnu granu, programer to može da uradi koristeći funkciju spajanja. Ko je odgovoran za glavnu granu, odobrava sve izmene.

GitHub sistem ima najveći broj korisnika, sa velikim projektima otvorenog koda koji tamo smeštaju svoj kod. Github je besplatan za javne repozitorijume, što znači da može da ih preuzme bilo koji korisnik (to se zove klon). Ovako projekti, kao što je Apache Spark, distribuiraju svoj kod (pored objavljivanja na Linux skladištima, itd.).

Bitbucket je dobar za male timove na budžetu. Za privatne repozitorijume je besplatan za do 5 korisnika. U osnovi je isti kao Github. Tako da se može zaključiti da pokušavaju da preuzmu deo tržišnog udela od Githuba tako što će delove Bitbucket-a učiniti besplatnim.

Gitlab prebacuje svoj fokus na devops prema sopstvenoj veb stranici. Generalno, GitLab pokazuje sposobnosti i moć otvorenog izvora sa beskrajnim kombinacijama koje je zajednica izmislila i opisala. [35]

Svaka odove tri platforme su jedan veliki univerzum kada se svodi na karakteristike i mogućnosti. Izrada detaljnog poređenja karakteristika je izvan opsega ovog rada. Ali ako posmatramo samo osnovne karakteristike, one pokazuju mnogo sličnosti:

- Pull request - Code review - Inline editing - Issue tracking - Markdown support - Two factor authentications

- Advanced permission management - Hosted static web pages - Feature rich API - Fork / Clone Repositories - Snippets - 3rd party integrations

GitHub, GitLab, Bitbucket imaju javne funkcije otkrivanja repozitorijuma i osim GitLab-a svaka nudi mogućnost lakog praćenja drugih korisnika.

Iako GitHub nije otvoreni izvor, on je i dalje rasadnik saradnje sa otvorenim kodom. Ima daleko najveći broj javnih i open source projekata i takođe opslužuje mnoge od najznačajnijih projekata. Sa ranim usvajanjem društvenih karakteristika i besplatnim hostovanjem javnih projekata, to je očigledno društveni čvor za profesionalne programere i sve ostale koji su zainteresovani za razvoj softvera. U sve više slučajeva regruti favorizuju kandidate sa aktivnim GitHub profilom.

Kada treba da se odluči koji sistem da se koristi, mogućnost uvoza i korišćenja prethodnih projekata je kritična. Bitbucket se u tom smislu izdvaja od ostalih tri jer je to jedini koji podržava Mercurial repozitorijume.

GitHub i Bitbucket podržavaju uvoz repozitorijuma na osnovu više različitih VCS-ova, GitLab s druge strane podržava samo Git. Git je najpopularniji VCS, ali prelazak na GitLab može biti komplikovan ako se trenutno koristi Mercurial ili SVN repozitorijumi. GitLab-ova funkcija za uvoz repozitorijuma eksplicitno je usmerena da pomogne korisnicima da migriraju sa drugih popularnijih platformi.

- GitHub podržava uvoz sa: Git, SVN, HG, TFS; - BitBucket podržava uvoz sa: Git, CodePlex, Google Code, HG, SourceForge, SVN. - GitLab podržava uvoz sa Git, a lako se prebacuje sa drugih servisa: GitHub,

Bitbucket, Google Code, Fogbugz. [34]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

27 Dragana Ljubinković

GitHub može biti prvo ime u hostingu open source repozitorijuma, ali kada su u pitanju privatni repo hosting servisi sa dodatnim karakteristikama namenjenim preduzećima, igra nije tako laka. Sva tri proizvođača baziraju svoje platforme na Git distribuiranom kontrolnom sistemu. Svaka nudi lokalno rešenje za hostovanje izveštaja unutar zaštitnog zida - GitHub Enterprise, GitLab i Bitbucket Server.

Sva 3 provajdera nude besplatan plan, ali kada posmatramo detalje imaju neke značajne razlike:

GitHub besplatni plan omogućava da se usluži neograničen broj javnih repozitorijuma sa mogućnošću kloniranja, račvanja i doprinosa njima. Nema ograničenja u korišćenju diska, međutim, projekti ne bi trebalo da pređu 1 GB i pojedinačne datoteke od 100 MB.

Bitbucket-ovi mali timovi planiraju da 5 članova sarađuje na neograničenom broju projekata. Repozitorijumi ovde imaju ograničenje veličine od 1 GB, kada se dođe do toga oni će korisnika obavestiti putem e-pošte, ali korisnikova sposobnost da se prebaci u repozitorijum biće suspendovana samo kada veličina repoa dosegne 2 GB.

GitLab plan u klaudu omogućava neograničenom broju korisnika da sarađuju na neograničenom broju javnih i privatnih projekata. Imaju ograničenje prostora od 10 GB po repozitrijumu, što je definitivno veoma velikodušna ponuda u odnosu na ono što nude druga 2 provajdera. [34]

GitHub, GitLab i Bitbucket verzije sa samo-hostovanjem obezbeđuju poboljšane karakteristike u poređenju sa njihovim suparnicima u klaudu.

Na sledećoj slici su prikazane kompanije koje koriste ova tri provajdera za svoje repozitorijume.

Slika 12. Kompanije koje koriste istraživane repozitorijume [36]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

28 Dragana Ljubinković

Prema korišćenosti, broju poslova i glasova, ova tri provajdera su ocenjena na sledeći način:

Slika 13. Ocene korisnika [36]

Na sledećoj tabeli su date uporedne karakteristike ova tri online repozitorijuma:

Karakteristike: GitHub BitBucket GitLab

Lansiranje GitHub je lansiran 2008. godine.

BitBucket je lansiran 2008. god.

GitLab je lansiran 2011. godine.

Cena

GitHub je besplatan za javne repozitorijume, a za privatne se plaća oko 7$ mesečno.

BitBucket je besplatan i može se koristiti neograničeno i za javne i za private repozitorijume do 1GB mesečno.

GitLab usluga je potpuno besplatna dok se ne pređe 10Gb u veličini repozitorijuma mesečno.

Osnovne opcije i karakteristike

koje pruža

Koristi grane kao delove projekta, pull request za pregled koda, integrisan tragač za greške, aplikacije za Windows i Mac, treći deo integracije, SVN integracija, SSL, dva faktora autentifikacije, GitHub Pages, GitHub Gists…

Koristi grane kao delove projekta, pull request za pregled koda, aplikacije za Windows i Mac, Spoon i JIRA integracije, podržava eksternu integraciju preko GitHub, Twitter, Facebook i Google…

Ima skoro sve opcije i karakteristike kao i GitHub, samo što su mu privatni repozitorijumi besplatni.

Događaji (events)

GitHub registruje promene kao izdavanje događaja. Mogu im se pristupiti za ceo projekat ili za određeno pitanje. Ovi događaji

GitLab ima specifične događaje na projektu koji uključuju događaje o pitanjima, ali i

Bitbucket ima takođe projektne događaje. Međutim, funkcija je ograničena jer je dostupno samo

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

29 Dragana Ljubinković

imaju tip koji ukazuje na vrstu promene koju događaj predstavlja, na primer, zatvorena, otvorena, dodeljena ili označena. Događaj sadrži i informacije o tome šta je promena, npr. koja je oznaka dodata u problem

druge događaje. Postoje događaji samo za otvaranje i zatvaranje pitanja. Neke druge promene, kao što su označavanje ili dodeljivanje, samo se spremaju kao komentari problema.

30 najnovijih. Njihov sadržaj je takođe prilično ograničen. Postoje događaji za kreiranje, komentarisanje i ažuriranje problema, ali događaj ažuriranja nema specifične informacije o tome šta je ažurirano i događaj kreiranja ne govori koji je problem kreiran.

Popularnost

GitHub je najveći host izvornog koda na svetu. Koristi ga više od 31 milion programera.

BitBucket koristi oko 5 miliona korisnika.

GitLab koristi oko 100 hiljada korisnika.

Tabela 3. Uporedne karakteristike GitHub, BitBucket i GitLab

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

30 Dragana Ljubinković

3.2. Najčešće korišćeni formati za razmenu podataka i njihove karakteristike

Sledi delimičan spisak popularnih generičkih jezika koji se koriste za razmenu podataka u više domena.

Tabela 1. Generički jezici za razmenu podataka

Bitne karakteristike formata za razmenu podataka date su prethodnom tabelom:

- Shemes - Da li je definicija jezika dostupna u obliku kompjuterske interpretacije. - Fleksibilnost - Da li jezik omogućava proširenje mogućnosti semantičkog izražavanja

bez modifikovanja šeme. - Semantička verifikacija - da li definicija jezika omogućava semantičku verifikaciju

ispravnosti izraza u jeziku. - Rečnik-taksonomija - da li jezik uključuje rečnik i taksonomiju (hijerarhiju podtipa-

supertipa) pojmova sa nasleđivanjem. - Sinonimi i homonimi - Da li jezik uključuje i podržava upotrebu sinonima i

homonima u izrazima. - Dijalektiranje - da li je definicija jezika dostupna na više prirodnih jezika ili

dijalekata. - Veb ili ISO standard - Organizacija koja je podržala jezik kao standard. - Transformacije - Da li jezik uključuje prevod na druge standard. - Lagana - Da li je dostupna i lagana verzija, uz punu verziju. - Čitljivo za čoveka - da li su izrazi u jeziku čitljivi za ljude (čitaju ih ljudi bez obuke). - Kompatibilnost - Koje druge alate je moguće koristiti ili ih je potrebno koristiti

prilikom upotrebe jezika.

Popularnost XML-a za razmenu podataka na World Wide Web-u ima nekoliko razloga. Pre svega, on je usko povezan sa već postojećim standardima SGML (Standard Generalized Markup Language) i Hipertext Markup Language (HTML), i kao takav parser napisan da podrži ova dva jezika može se lako proširiti i na podršku XML-u. Na primer, XHTML je definisan kao format koji je formalni XML, ali ispravno shvaćen od strane većine (ako ne i svih) HTML parsera.

YAML je jezik koji je dizajniran tako da bude lako čitljiv (i kao takav lako se može urediti bilo kojim standardnim uređivačem teksta). Njegov pojam često je sličan reStructuredText ili Wiki sintaksi, koji takođe pokušavaju da budu čitljivi i za ljude i za računare. YAML 1.2

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

31 Dragana Ljubinković

takođe uključuje skraćeni pojam koji je kompatibilan sa JSON, i kao takav svaki JSON dokument je takođe važeći YAML; ovo, međutim, ne stoji na drugi način.

REBOL je jezik koji je dizajniran tako da bude lako čitljiv i da ga je lako uređivati bilo kojim standardnim uređivačem teksta. Da bi se to postiglo, koristi jednostavnu sintaksu slobodne forme sa minimalnom interpunkcijom i bogatim skupom tipova podataka. REBOL tipovi podataka kao što su URL-ovi, e-poruke, vrednosti datuma i vremena, tuples, strings, tags, itd. poštuju zajedničke standarde. REBOL je dizajniran tako da mu nije potreban nikakav dodatni meta-jezik, koji je dizajniran na metacikularan način. Metacirkularnost jezika je razlog zašto je, na primer, parsekularni dijalekt koji se koristi (ne isključivo) za definicije i transformacije REBOL-ovih dijalekata sam po sebi i dijalekt REBOL-a. REBOL je korišćen kao izvor inspiracije za JSON.

Gellish English je formalizovani podskup prirodnog engleskog jezika, koji uključuje jednostavnu gramatiku i veliku proširivu englesku rečnik-taksonomiju koja definiše opštu i specifičnu terminologiju (termini za koncepte), dok su koncepti raspoređeni u hijerarhiji podtipa-supertipa (taksonomija), koja podržava nasleđivanje znanja i zahteva. Rečnik-taksonomija takođe uključuje standardizovane tipove činjenica (koji se nazivaju i relacioni tipovi).Termini i tipovi odnosa mogu se koristiti za kreiranje i tumačenje izraza činjenica, znanja, zahteva i drugih informacija. Gellish se može koristiti u kombinaciji sa SQL, RDF/XML, OWL i raznim drugim meta-jezicima. Gellish standard je kombinacija ISO 10303-221 (AP221) i ISO 15926.

Sistem za pronalaženje informacija treba da kreira i održava jednu ili više baza podataka. Informacije se mogu svrstati u tri velike kategorije:

1. faktualne informacije. 2. bibliografske ili tekstualne informacije 3. lične informacije, informacije o institucijama, projektima i sl.

Informacije se razmenjuju između brojnih korisnika i institucija i zato je izbor formata u kom se baza podataka kreira od ogromne važnosti. Postoji nekoliko formata za razmenu podataka. Većina ovih formata je razvijena da bi nosili bibliografske podatke, mada neki od njih mogu da prihvate i druge vrste podataka. Velika mogućnost izbora stvara dodatne probleme organizacijama prilikom izbora formata koji odgovara njihovim potrebama.

Bibliografiski zapis je skup logički organizovanih elemenata podataka koji predstavljaju bibliografski predmet, gde je bibliografski predmet svaki dokument, knjiga, publikacija ili drugi zapis ljudske komunikacije; svaka grupa dokumenata ili deo dokumenta koji se tretira kao celina.

Da bi se bibliografski zapisi mogli pretraživati, pronalaziti i razmenjivati između različitih organizacija potrebno je da postoji standardna forma. Ovo je osnovna svrha bibliografskih formata. Naravno, važno je praviti razliku između lokalnih formata i formata za razmenu.

Da bi se zapis mogao razmenjivati njegov format mora da sadrži sledeće tri komponente:

1. fizičku strukturu 2. označitelj sadržaja 3. sadržaj zapisa.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

32 Dragana Ljubinković

Standard ISO 2709 u strukturi zapisa umnogome je pojednostavio razmenu bibliografskih zapisa i dao veliki doprinos informatičkoj zajednici. Ovaj standard je razvijen za razmenu podataka na magnetnoj traci, ali je njegova logika primenjena i u razmeni podataka na drugim medijima (na Internetu, disketi, CD-u).

Druga komponenta se odnosi na kodove koji definišu različite elemente zapisa. Postoji nekoliko bibliografskih formata koji mogu da se koriste za kreiranje i razmenu bibliografskih zapisa: MARC – Machine-Readable Catalogue i drugi članovi njegove porodice, onda CCF – Common Communication Format, IDIN – International Development Information Network, MIBIS – Microcomputer-Based Bibliographic Information Systems i dr.

Treća komponenta, koja se odnosi na oblik i sadržaj elemenata podataka, razlikuje se zavisno od „kataloškog koda“ koji se koristi i načina na koji se elementi podataka po pravilu dele. Ovaj deo direktno zavisi od programa za pronalaženje informacija koji se koristi. Svaki sistem za pronalaženje bibliografskih podataka treba da prati neka kataloška pravila kako bi se obezbedila doslednost u prezentaciji informacija – kako na ekranu tako i u štampanom obliku.

Različite organizacije koriste različite formate i problem nastaje kada one požele da razmene podatke. Iako su ovi formati dosta slični, nisu identični i zapisi se ne mogu direktno prebaciti iz jednog formata u drugi.

Organizacije koje primaju zapise iz različitih agencija moraju da imaju odvojene računarske programe da bi mogle da prihvate svaku vrstu zapisa.

Da bi se prevazišao problem postojanja različitih formata za razmenu koji, zatim, zahtevaju postojanje različitih baza podataka koji rade u različitim programima razvijaju se integrisane baze podataka.

Jedan od osnovnih ciljeva u dizajniranju integrisanih baza podataka jeste da korisnik jednim upitom može da pronađe sve relevantne bibliografske zapise zajedno sa profilom projekata, institucija i informacionih sistema i lica na istom predmetu.

Mana ovakvih baza podataka jeste njihova veličina.

Postoji više načina integracije:

• Integracija različitih tipova zapisa u jednu bazu podataka. • Funkcionalna integracija – „rezultat“ jedne faze pretrage je „ulazni podatak“ za

narednu fazu. • Integracija mrežom (korišćenjem LAN i WAN mreža). • Korišćenjem aplikacija koje mogu da povezuju zapise iz više baza podatak uporedo. • Upotrebom dve ili više prethodno navedenih metoda.

Nelemajgan (Neelameghan) i njegovi saradnici su razvili integrisanu bazu podataka, koja sadrži i bibliografske i nebibliografske podatke.

Sistem koji su razvili naziva je ABNCD+ i radi na MicroCDS/ISIS programu.

ISO 2709 je međunarodni standard koji definiše zahteve za opšti mašinski format koji može da nosi svaku vrstu bibliografskog zapisa.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

33 Dragana Ljubinković

Ovaj standard ne definiše sadržaj samog zapisa, kao ni značenje dodeljeno etiketama, indikatorima ili identifikatorima, već daje generalnu strukturu kojom se mogu prenositi zapisi između između sistemu za obradu podataka.

Bibliografski zapis treba da sadrži sledeća polja fiksne i promenljive dužine:

• Oznaka zapisa (fiksne dužine) • Direktorijum (promenljive dužine) • Identifikator zapisa (promenljive dužine) • Rezervisana polja (promenljive dužine) • Polja za bibliografske podatke (promenljive dužine) • Separator polja • Terminator zapisa.

ISO standardizacija u oblasti formata za razmenu podataka definiše:

- Korišćenje propisanih stereotipova za UML pakete i elemente <<ApplicationSchema>>, <<Feature Type>>, <<DataType>>, <<Enumeration>>, <<CodeList>>

- Tačna struktura atributa UML elemenata (ime atributa, tip atributa, kardinalnost), Korišćenje različitih tipova atributa:

o CharacterString, Integer, Decimal, … (jednostavni tipovi) o Measure, Angle, Length, Area, Volume, … (fizikalni podaci) o GM_Object, GM_MultiSurface, … (GML geometrija) o UML modeli mogu da se preuzmu iz standarda ISO TC211

(http://www.isotc211.org/) - Dodeljivanje imena za sve „navodljive“ asocijacije - Specifikacija specijalnih komandnih/kontrolnih parametara ("Tagged Values") za

UML pakete, elemente, atribute i asocijacije

Slika 11. Primer bibliografskog zapisa prema ISO 2709 [5]

Format za razmenu pruža mogućnost:

- razmene sadržaja planova namene zemljišta bez gubitka informacija,

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

34 Dragana Ljubinković

- između različitih IT sistema, stavljanje na raspolaganje preko standardizovanih download ili web feature servisa (WFS),

- Skladištenje u datotekama, i - prebacivanje u INSPIRE format podataka "Planned Land Use" (INSPIRE PLU).

Osim toga postoje standardi/standardizovane tehnologije za automatsko izvođenje šeme baze podataka iz formata za razmenu koji je predstavljen kao XML šema.

CSV (Vrednosti odvojene zarezom) - Vrsta dokumenata u jednostavnom otvorenom formatu za prikaz podataka u formatu tabele, u kolonama odvojenim zarezima (ili zarezom, gde je zarez decimalna tačka) i redovi sa prelomima linija. Polja koja imaju zarez, prelom reda ili dvostruki citat moraju biti u dvostrukim navodnicima. On ne ukazuje na određeni skup znakova, niti na to kako se bajtovi nalaze, niti na format za prelom reda. Proširenja koja se koriste su .csv i .tkt.

DOC (Microsoft Office Word) - Zatvoreni format za prenos formatiranih ili neformatiranih tekstova. Sadrži tekstove, slike, grafiku i linkove.Verzija iz 2007. godine radi sa novim formatom, dock, koji je napredniji i komprimuje dokument više.

JSON (Notacija JavaScript objekata) - Lagan format za razmenu podataka, jednostavan za razumevanje i nudi jednostavnost mašinama u generisanju i interpretaciji. Zasnovan na podskupu JavaScript programskog jezika, pogodan za programiranje od strane klijenta.

KML-KMZ (Lock Eye Tagging Language) - XML gramatika i format datoteke za kreiranje modela i skladištenje geografskih funkcija kao što su tačke, linije, slike, poligoni i modeli koji će biti prikazani uglavnom u aplikacijama mapa. Koristi se za deljenje mesta i informacija između aplikacija. To je standard Open Geospatial Consortium-a i može se koristiti kroz Google Earth. KML datoteke se distribuiraju komprimovane kao KMZ datoteke.

PDF (Portable Document Format) - Dokument univerzalnog prenosivog formata koji održava izgled dokumenta bez obzira na operativni sistem koji se koristi (multiplatform). Uključuje bilo koju kombinaciju teksta, multimedije i hiperteksta, a može se i šifrovati sadržaj i da se digitalno potpiše. To je ISO standard, od 2008. godine, za dokumente elektronskih dokumenata za dugoročno čuvanje. To je specifikacija koja se može kreirati, vizualizovati ili modifikovati sa slobodnim softverskim alatima. Ovaj format je prvobitno bio vlasnički (do 2008).

RDF-XML (Infrastruktura za opis resursa) - Model za prikazivanje veb resursa u izrazima sa oblikom subjekt-predikat-objekt. Subjekt je resurs koji je opisan, predikat je svojstvo na kojem treba da se uspostavi resurs i objekat je vrednost svojstva sa kojim je relacija uspostavljena. Kombinacija RDF-a sa drugim alatima omogućava da se stranice dodaju značenju i jedna je od bitnih tehnologija za semantički veb. Da bi bila interpretirana, predstavljena je u XML formatu.

SHP (ESRI) - Shapefile je vlasnički format prostornih podataka koji je standard za razmenu geografskih informacija između geografskih informacionih sistema (GIS). To je vektorski format digitalnog skladištenja u kome se čuvaju lokacije geografskih elemenata i atributi koji su sa njima povezani, ali bez kapaciteta za skladištenje topoloških informacija. Generiše ga nekoliko datoteka, minimum 03 i ima 03 tipa ekstenzija: .shp, .shk i .dbf

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

35 Dragana Ljubinković

SPARQL (Simple Protocol and RDF Query Language) - Standardizovani jezik za upit RDF podataka, normalizovan od strane W3C. To je zvanična preporuka W3C-a od januara 2008. godine za razvoj semantičkog veba.

Web servisi API (Application programming interface) - To su interfejsi za programiranje aplikacija ili veb API-ji kojima se pristupa putem HTTP-a i pokreću se na udaljenom sistemu hostinga za tražene usluge. Veb servisi su softverski sistemi dizajnirani da podrže interoperabilnu interakciju mašina-mašina preko mreže. On ima interfejs opisan u formatu koji može da obradi mašina, a drugi sistemi u interakciji sa veb servisom na način koji je opisan njegovim opisom korišćenjem SOAP poruka, prenosi se preko HTTP-a sa XML serijalizacijom u vezi sa drugim standardima vezanim za veb.

XLS (Microsoft Office Excel) - Sadrži redove i kolone ćelija i svaka može da sadrži podatke, koji mogu biti reči, brojevi ili formule koje imaju podatke i rešavaju jednačine dinamički. XLS tabele takođe mogu da sadrže tabele i grafikone koji prikazuju sve izabrane sekcije ili podatke.

XML (Extensible Labeling Language) - To je jednostavan, ali strog metajezik koji je razvio W3C. Ona razvija osnovnu ulogu u razmeni raznovrsnih podataka. XML je format koji omogućava interpretaciju podataka kroz nekoliko aplikacija. To je pojednostavljenje i prilagođavanje SGML-a i omogućava definisanje gramatike određenih jezika. Zapravo, XML je način da se definišu jezici za različite potrebe. [7]

Tabela 2. Programski jezici i repozitorijumi [11]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

36 Dragana Ljubinković

3.3. Integracija softverskih alata sa online repozitorijumima

3.3.1. Integracija softverskih alata za Git

Visual Studio

Počevši sa Visual Studio 2013 Update 1, Visual Studio korisnici imaju Git klijent izgrađen direktno u njihov IDE. Visual Studio je već duže vreme imao funkcije integracije izvorne kontrole, ali su bile orijentisane ka centralizovanim sistemima za zaključavanje datoteka, a Git nije odgovarao ovom procesu. Podrška za Git Visual Studio 2013 je odvojena od ove starije funkcije, a rezultat je mnogo bolje uklapanje između Studio i Git.

Visual Studio pamti sve projekte koje se otvore i koji su kontrolisani Git-om i dostupni su na listi na dnu. Ako ne vidi ona koja treba, klikne se na vezu "Dodaj" i unese se putanja do radnog direktorijuma. Dvostrukim klikom na neki od lokalnih Git repozitorijuma doći će se do prikaza Home, koji izgleda kao "Home" prikaz za Git repozitorijum u Visual Studio-u. Ovo je čvorište za izvođenje Git akcija; kada se piše kod, verovatno će se provoditi većina vremena u prikazu "Promene", ali kada dođe vreme da se sruše izmene koje su napravili suigrači, upotrebiće se "Unsinced Commits" i "Branches" pogledi.

Visual Studio sada ima dobar korisnički interfejs za Git. Uključuje linearni prikaz istorije, diff pregledač, daljinske komande i mnoge druge mogućnosti.

Eclipse

Eclipse se isporučuje sa pluginom koji se zove Egit, koji obezbeđuje prilično kompletan interfejs za Git operacije. Pristup je moguć prelaskom na Git Perspective (Prozor> Otvori perspektivu> Ostalo…, a zatim se izabere "Git").

EGit dolazi sa mnogo velikom dokumentacijom, koja se može pronaći tako što se klikne na Help> Help Contents i izabere se čvor "EGit Documentation" iz sadržaja.

Bash

Git se isporučuje sa dodatcima za nekoliko školjki, ali to nije podrazumevano uključeno.

Prvo, morate da dobijete kopiju datoteke contrib/completion/git-completion.bash iz izvornog koda Git-a. Kopirajte ga negdje pri ruci, kao što je kućni repozitorijum, i dodati ga u svoj .bashrc:

. ~/git-completion.bash

Kada se to završi, promeni se direktorijum u git repozitorijum i upiše se:

$ git chec<tab>

… I Bash će se automatski dovršiti da bi se izvršio checkout. Ovo funkcioniše sa svim pod-komandama Git-a, parametrima komandne linije i udaljenim i ref imenima gde je to prikladno.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

37 Dragana Ljubinković

\w znači štampanje trenutnog radnog direktorijuma, \$ odštampa $ deo prompta, i __git_ps1 " (%s)" poziva funkciju koju obezbeđuje git-prompt.sh sa argumentom formatiranja.

3.3.2. Tehnike integracije softverskih razvojnih okruzenja sa online repozitorijumima koda

Koncepti i tehnologije u oblaku pružaju vredan supstrat za podršku okruženjima za razvoj softvera “u oblaku, za oblak” jer oni lako mogu pružiti obilan skup računarskih resursa za razvoj i testiranje koda, kao i repozitorijume kodova koji podržavaju saradnju razvojnih inženjera, ključnu vožnju produktivnost softvera.

Tradicionalni razvoj softvera koristi alatku, uključujući uređivač teksta, kompajler i eventualno program za otklanjanje grešaka i analizator performansi. Da bi se ubrzao razvoj softvera, ovaj prilično nepovezani lanac alata ugrađen je u Integralno razvojno okruženje (IDE). Kako bi se dodatno smanjilo vreme za tržišne troškove i razvojne troškove, softverski inženjeri snažno postiču ponovnu upotrebu postojećih softverskih komponenti kako bi stvorili nove usluge. Usvajanje modela za razvoj softvera, zasnovano na postojećim komponentama (razvoj aplikacija baziranih na komponentam), inherentno podržava visoku prilagodljivost i skalabilnost i omogućava brži način izgradnje aplikacija, jer se programeri fokusiraju na osnovne funkcionalne komponente kako bi kreirali nove, viši nivo usluga. Posebno za neiskusne i iskusne programere, sposobnost razvijanja novih aplikacija kroz sintezu komponenti je od najveće važnosti.

Da bi se izgradilo uspešno okruženje za programiranje u oblaku, prednosti i funkcionalnost tradicionalnih, desktop-baziranih IDE-a moraju se održavati i proširiti dodatnim mogućnostima i prednostima. Moćni uređivači koda sa bogatim skupom funkcionalnosti (npr. Isticanje, automatsko popunjavanje itd.) Ugrađeni su u veb pregledače. Kompilacija i izvršenje testiranja se vrše na cloud infrastrukturama, au nekoliko slučajeva implementaciju mogu podržavati i cloud servisi. Jasne prednosti IDE-a zasnovanog na oblaku uključuju:

(a) pristup veoma širokom skupu programskih alata koje održava provajder, čime se programer oslobađa tereta postavljanja, konfigurisanja i nadogradnje njihovih programskih okruženja,

(b) sposobnost razvoja softvera bez upotrebe moćnih lokalnih računara, pošto se često kompjuterski intenzivni zadaci kompilacije i testiranja izvode na daljinu u oblaku, i

(c) jednostavan način za ponovnu upotrebu koda koji su razvili drugi softverski inženjeri koji dele isto cloud okruženje.

Međutim, okruženje za razvoj aplikacija u oblaku treba da ide mnogo dalje od moćnog alata za implementaciju, debagovanje i testiranje koda. Da bi veliki softverski projekti bili održivi i profitabilni, značajnu pažnju treba posvetiti fazi pre implementacije, dizajniranju sa inkorporiranjem odgovarajućih alata za modeliranje i zadacima nakon implementacije, uključujući dokumentaciju i održavanje. Takve funkcije se retko ugrađuju u okruženja za razvoj aplikacija u oblaku u celini, što ih čini da zaostaju za svojim kolegama zasnovanim na desktopu. S druge strane, kašnjenje u mreži može biti i ograničavajući faktor posebno za male poslove, dok su pitanja sigurnosti i privatnosti svakako važna za vrednu intelektualnu svojinu kao što je slučaj kod softverskog koda.

Postoje tri osnovna modela prema kojima pružaoci usluga u oblaku nude svoje usluge: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) i Software-as-a-Service

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

38 Dragana Ljubinković

(SaaS). IaaS je model u kome pružalac usluga u oblaku nudi fizičku infrastrukturu ili češće virtuelne mašine (VM) klijentima / potrošačima. Klijenti moraju da instaliraju svoj operativni sistem, biblioteke i aplikacije, dok su oni odgovorni za upravljanje sistemom. U PaaS modelu, cloud provajderi nude kompjutersku platformu, a klijent koristi specijalizovane alate koje nudi provajder u oblaku za određenu platformu, kako bi izgradio svoj vlastiti okvir ili aplikaciju na vrhu te platforme. Klijent je odgovoran samo za razvijeni okvir / aplikaciju, dok cloud provajder održava osnovnu platformu. Konačno, u SaaS modelu, provajder nudi daljinski pristup aplikaciji i / ili bazi podataka specifičnoj za određeni domen, koju je već izgradio provajder. Klijent obično nije svestan osnovne platforme koja pokreće aplikaciju i / ili bazu podataka.

Uslužno orijentisana arhitektura (SOA) je uspostavljena kao de facto standardna arhitektura za veb aplikacije. SOA omogućava spajanje distribuiranih sistema ili implementaciju novih poslovnih usluga korištenjem postojećih usluga u određenom redosledu, nakon poslovnog procesa. SOA je u suštini zbir komunikacionih usluga. Ova komunikacija može uključivati jednostavnu razmenu poruka između dve usluge ili koordinaciju višestrukih usluga za implementaciju jedne nove aktivnosti. SOA je nezavisan od programskog jezika koji se koristi ili operativnog sistema. SOA se bazira na tri osnovne tehnologije: jeziku za opisivanje veb servisa nazvanim VSDL (Veb Services Description Language), protokol koji omogućava razmenu poruka XML nazvan SOAP i protokol koji omogućava objavljivanje i otkrivanje usluge nazvane UDDI (Univerzalni opis, otkrivanje i integracija). Ono što SOA model čini izuzetno korisnim je mogućnost otkrivanja usluga koje odgovaraju potrebama aplikacije, mogućnost pregovaranja o uslovima korišćenja i pristupačnosti sa bilo koje lokacije u bilo kom trenutku.

Veb servisi predstavljaju moderan način razvoja aplikacija, posebno kada je potreban udaljeni pristup distribuiranim funkcijama. Veb servis je tehnologija koja aplikacijama omogućava komunikaciju nezavisno od platforme ili programskog jezika. Veb servis je softverski interfejs koji opisuje skup funkcija koje se mogu pristupiti iz mreže koristeći XML poruke. Veb servisi koriste XML za opisivanje podataka i operacija na tim podacima. Grupa interaktivnih servisa definiše novu veb uslugu.

Cloud se brzo proširio i na tržištu je dostupno dosta platformi za razvoj Cloud softvera, kao i Cloud programerskih okruženja. U zavisnosti od njihovih operacija, ove platforme se mogu kategorizovati na sledeći način: (1) okruženja za programiranje, (2) repozitorijumi, (3) modeliranje, kompoziciju, (4) obradu, dokumentaciju, upravljanje i (5) alate za orkestraciju. Moderno programsko okruženje treba da sadrži alate koji pomažu timu da ispuni sve faze životnog ciklusa razvoja softvera. Oni mogu uključivati alate za modeliranje u fazi analize, IDE-ove za kodiranje u fazi projektovanja / izgradnje, alate za dokumentaciju, module za orkestraciju i upravljanje za fazu implementacije i nadgledanja, kao i repozitorijum za kontrolu verzija tokom svih faza.

Okruženja za programiranje u oblaku su online veb-bazirane aplikacije dizajnirane da ponude razvojne mogućnosti programerima. Obično se sastoje od editora izvornog koda, broja kompajlera ili tumača u zavisnosti od programskog jezika, debagera i pregledača projekata / rešenja za upravljanje nezavisnim podkomponentama. Osim podrazumevanih karakteristika i zbog velike konkurencije, programska okruženja su evoluirala tako da uključuju: veze sa repozitorijumima koda, mogućnosti saradnje za deljenje koda, VM za trenutnu implementaciju aplikacija, pa čak i alate za nadzor.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

39 Dragana Ljubinković

Cloud repozitorijumi su veb-hosting objekti koji koriste prednosti dobro poznatih sistema za kontrolu verzija kao što su Git (GIT) (Lavrance i Jung 2013), Subverzija (SUBVERSION) i Mercurial (MERCURIAL). Pored toga, oni često podržavaju usluge i alate, uključujući praćenje bagova, upravljanje izdanjima, mailing liste i viki dokumentaciju.

SourceForge (SF) je bio jedan od prvih koji je ponudio repozitorijum izvornog koda koji povezuje saradnike i pomaže da se projekti razvijaju, preuzimaju, pregledavaju i objavljuju. Takođe je bio jedan od prvih koji je ovu uslugu besplatno ponudio projektima otvorenog koda.

Osim sistema za kontrolu verzija koji koriste, cloud repozitorijumi se razlikuju po stepenu integracije sa softverom treće strane, kao što su saradnja, upravljanje projektima ili praćenje problema. Bitbucket (BITBUCKET) iz Atlassiana, na primer, nudi integraciju sa JIRA, Jenkins i Bamboo Continuous Integration serverima, kao i servis za obaveštavanje i chat. CloudForge (CLOUDFORGE) od CollabNet-a se integriše sa TeamForge za saradnju, JIRA i Basecamp za upravljanje projektima. GitLab (GITLAB) nudi, osim JIRA povezivanja i finu integraciju upravljanja radnim procesima.

GitLab i GitHub su najveća open source zajednica i industrijski standardne verzije za kontrolu i objavljivanje platformi za veb programere. GitHub je usluga hostinga Git repozitorijuma koja nudi integrisano praćenje problema, vikije i alate za omogućavanje kolaborativnog pregleda koda i poboljšanja. Jedinstvene funkcije GitLab-a uključuju LDAP i autentifikaciju korisnika u dva faktora.

U pogledu integracije, vizuelna paradigma podržava inženjerstvo koda za razne platforme (Eclipse, Netbeans, Intellij.Net) i programske jezike (C ++, JAVA, C). Takođe nudi i cloud repozitorijum koji se zove VPository i poboljšava saradnju sa nekim podrazumevanim alatima kao što su deljenje dijagrama i postavljanje komentara. U GenMyModel dijagramima se može izvesti u više formata (jpg, xmi, svg, pdf) i uvesti drugim softverom. S druge strane, Creately je fokusiran na integraciju, jer daje dodatke za druge platforme kao što su Jira, Confluence, FogBugz, Google Apps i Google store. Može da izvozi dijagrame u pdf ili SVG formatu, ali može da uvozi i Microsoft Visio datoteke. Gliffy je ponudio REST API za programere koji žele ugraditi dijagrame unutar svojih veb aplikacija, koristeći PHP i JAVA biblioteke. Međutim, od početka 2015. API se ne ažurira i neće biti podržan.

Neki od gore pomenutih alata nude mogućnosti za saradnju među članovima tima koji su u stanju da podele svoje dijagrame, pregledaju promene u realnom vremenu, pa čak i razgovaraju sa svojim kolegama sa GenMyModelom i Creately su na vrhu u ovoj kategoriji. [39]

GitHub nudi skup kukica (automatski izvršenih skripti) koje se pokreću nakon svakog commit-a u repozitorijum, što olakšava praćenje osnovnih principa kontinuirane integracije. GitHub veb kuke dozvoljavaju platformama trećih strana da pristupe i komuniciraju sa GitHub repozitorijumom i na taj način automatizuju zadatke nakon obrade. Kontinuiranu integraciju može postići Travis CI, hostovana kontinuirana integraciona platforma koja je besplatna za sve open-source projekte.Travis CI gradi i testira izvorni kod koristeći mnoštvo opcija kao što su različite platforme i verzije tumača. Pored toga, nudi obaveštenja koja omogućavaju timu i saradnicima da znaju da li nove promene funkcionišu i da spreče uvođenje grešaka u kodu (na primer, prilikom spajanja zahteva za povlačenjem), čineći spremište uvek spremnim za upotrebu.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

40 Dragana Ljubinković

4. GIT I REPOZITORIJUMI

4.1. Karakteristike Git

Pre petnaest godina, zajednica Linux kernela se suočila sa zastrašujućim izazovom: oni više nisu mogli da koriste svoj BitKeeper sistem kontrole revizije (Source Control Management - SCMs). Linus Torvalds, tvorac Linuxa, uzeo je izazov u svoje ruke i nestao tokom vikenda kako bi se pojavio naredne nedelje sa Git-om. Danas se Git koristi za hiljade projekata i uveo je novi nivo društvenog kodiranja među programerima.

Git je, pre svega, sistem kontrole verzija (VCS -Version Control System) i otvoreni je izvor. Postoje dva tipa (VCS). Jedan je sistem za kontrolu distribuirane verzije (DVCS - DistributedVersion Control System), a drugi je centralizovani sistem za kontrolu verzija (CVCS -CentralizedVersionControlSystem). Postoji mnogo sistema za kontrolu verzija, na primer, CVS, SVN, Mercurial, Fossil itd. Git je primer sistema za kontrolu distribuirane verzije (DVCS), koji prati svaku modifikaciju izvršenu kodom tokom vremena i omogućava ako želite da se vratite nazad i poništite te promene. Git će omogućiti da se vrati na prethodni status projekta ili da se vidi njegova evoluciju od stvaranja projekta. Git se naziva i upravljanje izvornim kodom (SCM - Source Code Management).

Kao i kod većine drugih distribuiranih sistema za kontrolu verzija, i za razliku od većine sistema klijent-server, svaki Git direktorijum na svakom računaru je potpuni repozitorijum sa kompletnom istorijom i punim mogućnostima praćenja verzija, nezavisno od pristupa mreži ili centralnog servera.

Git je besplatan i open-source softver distribuiran pod uslovima GNU General Public License verzije 2.

Git-ova funkcija koja se zaista izdvaja od gotovo svih drugih SCM-a je njen model grananja. Git dozvoljava i ohrabruje da imate više lokalnih grana koje mogu biti potpuno nezavisne jedna od druge. Kreiranje, spajanje i brisanje tih linija razvoja traje nekoliko sekundi.

To znači da se može raditi:

- Prebacivanje konteksta bez trenja (Frictionless Context Switching). Napravite ogranak da biste isprobali ideju, urezali nekoliko puta, vratili se na mesto odakle ste razgranili, primenili zakrpu, vratili se na mesto gde eksperimentišete i spojili ga.

- Šifre zasnovane na ulogama (Role-Based Codelines). Imajte granu koja uvek sadrži samo ono što ide u produkciju, drugu u koju spajate rad za testiranje, i nekoliko manjih za svakodnevni rad.

- Rad zasnovan na funkcijama (Feature Based Workflow). Kreirajte nove grane za svaku novu funkciju na kojoj radite tako da možete bez problema da se prebacujete između njih, a zatim izbrišite svaku granu kada se ta osobina spoji u vašu glavnu liniju.

- Disposable Experimentation. Napravite granu da eksperimentišete, shvatite da neće funkcionisati, i samo je obrišite - napustite posao - a da je niko drugi nije video (čak i ako ste u međuvremenu gurnuli druge ogranke). [19]

Zbog Git-ove distribuirane prirode i izvanrednog sistema grananja, gotovo beskonačan broj radnih tokova može se implementirati relativno lako.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

41 Dragana Ljubinković

Centralizovani radni proces je veoma čest, naročito od ljudi koji prelaze iz centralizovanog sistema. Git neće dozvoliti da se push-uje (poslali izmene na repozitorijum) ako je neko push-ovao od poslednjeg puta kada se izvršio pull (preuzeti sve izmene na lokalu), tako da centralizovani model gde su svi programeri push-ovali na isti server radi sasvim dobro.

Slika 14. Podverzija deljenog radnog procesa [19]

Uobičajeni Git radni proces uključuje menadžera integracije - jednu osobu koja se obavezuje na 'blagoslovljeno' spremište. Određeni broj programera zatim klonira iz tog spremišta, gura svoje nezavisne repozitorijume i traži od integratora da povuče njihove promene. Ovo je tip razvojnog modela koji se često može videti kod open source ili GitHub repozitorijuma.

Slika 15. Integracioni menadžer radnog procesa [19]

Za masovnije projekte, razvojni proces kao što je Linux kernel je često efikasan. U ovom modelu, neki ljudi ('poručnici') su zaduženi za određeni podsistem projekta i spajaju se u svim promenama koje se odnose na taj podsistem. Drugi integrator ("diktator") može izvući promene samo od svojih poručnika, a zatim staviti u "blagoslovljen" repozitorijum da svi onda ponovo kloniraju.

Slika 16. Diktator i poručnik radni proces [19]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

42 Dragana Ljubinković

Projekat Git je član projekta konservancije za slobodu softvera ("Conservancy"). Zaštita ima prava na Marke u ime Git projekta u skladu sa svojom neprofitnom humanitarnom misijom.

Većini operacija u Git-u su potrebne samo lokalne datoteke i resursi za rad - obično nema informacija iz drugog računara u mreži. Pošto imamo čitavu istoriju projekta na lokalnom disku, većina operacija izgleda gotovo trenutno.

Na primer, da bi se pregledala istorija projekta, Git ne mora da odlazi na server da bi dobio istoriju i prikaže je - jednostavno ga čita direktno iz lokalne baze podataka. To znači da se vidi istorija projekta skoro odmah. Ako želite da vidite promene koje su uvedene između trenutne verzije datoteke i datoteke pre mesec dana, Git može da pregleda datoteku pre mesec dana i da napravi lokalni izračun razlike, umesto da zahteva od udaljenog servera da to učini. ilise može povući stara verzija datoteke sa udaljenog servera da bi se to uradilo lokalno.

To takođe znači da ne može mnogo da se uradi ako nema mreže ili ste isključeni iz VPN-a. Ako uđete u avion ili voz i želite malo da radite, možete se srećno posvetiti dok ne dođete do mrežne veze za upload. Ako se vratite kući i ne možete ispravno da funkcionišete, možete i dalje raditi. U mnogim drugim sistemima to je ili nemoguće ili teško. Na primer, u programu Perforce ne možete mnogo da uradite kada niste povezani sa serverom; u Subverziji i CVS2-u možete uređivati datoteke, ali ne možete urezati izmene u vašu bazu podataka (jer je baza podataka izvan mreže). Ovo se možda ne čini kao ogroman posao, ali možda ćete se iznenaditi kakva je velika razlika.

Sve u Git-u se proverava pre nego što se sačuva i onda se na njega poziva ta kontrolna suma. To znači da je nemoguće promeniti sadržaj bilo koje datoteke ili direktorijuma bez da Git sazna za to. Ova funkcionalnost je ugrađena u Git na najnižim nivoima i sastavni je deo njene filozofije. Ne mogu se izgubiti informacije u tranzitu ili dobiti korupcija datoteke bez da je Git u mogućnosti da je otkrije.

Mehanizam koji Git koristi za ovu proveru se naziva SHA-1 hash. Ovo je niz od 40 karaktera koji se sastoji od heksadecimalnih znakova (0–9 i a – f) i izračunava se na osnovu sadržaja datoteke ili strukture direktorijuma u Git-u. SHA-1 hash izgleda ovako:

Kada se radi u Git-u, skoro sve akcije koje se izvršavaju samo dodaju podatke u Git bazu podataka. Teško je naterati sistem da uradi nešto što nije izvodljivoili da ga na bilo koji način obriše. Kao i sa bilo kojim VCS3-om, mogu da izgube ili upropaste promene koje još nisu izvršene, ali nakon što se urezuje snimak u Git, veoma je teško izgubiti, posebno ako se redovno prebacuje baza podataka u drugi repozitorijum.

Git ima tri glavna stanja u kojima se datoteke mogu nalaziti: posvećena, modifikovana i postavljena:

- Committed – posvećeno znači da su podaci sigurno sačuvani u lokalnoj bazi podataka.

- Izmenjeno znači da se promenila datoteka, ali se još nije izvršila u bazi podataka. - Postavljanje znači da se označila izmenjena datoteka u njenoj trenutnoj verziji da bi se

prešlona sledeću snimku urezivanja. 2Concurrent Versions System 3Version control systems

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

43 Dragana Ljubinković

Sve što se radi preko Git može se transponovati na neki od online repozitorijuma. Potrebno je napraviti nalog na određenom repozitorijumu (npr. BitBucket) zatim napraviti direktorijum pa kucati naredbe u Git-u kao što je prikazano na slici 8.

Obično datoteke prolaze kroz sledeće faze pre nego što se stavi pod kontrolu vida sa Git-om:

- Radni direktorijum (Untracked) - Ovo je mesto gde se vrše sve izmene i modifikacije. Ipak, to nije deo kontrole Gitove verzije. Dakle, da bi datoteke bile deo Git kontrole verzije koristimo naredbu #git add ili #git add . (tačka ovde može značiti samo bilo šta).

- Staging (Staged)- sada su sve datoteke dodane Git-ovoj kontroli verzija i prati ih Git. Ipak, promene još nisu izvršene. Dakle, za urezivanje promena koristimo #git commit -m “commit message”.

- Committed- sve promene su sada izvršene.

Slika 17. Listing koda za slanje podataka preko Git-a na repozitorijum [23]

Redom prema listingu koda datog na slici, ove naredbe služe za:

- Konfiguraciju na Git (git config), - Kreiranje direktorijuma na lokalu preko Git-a (mkdir), - Kretanje po direktorijumima na lokalu (cd), - Inicijalizacija napravljenog direktorijuma na Git (git init), - Dodavanje direktorijuma u stage (git add), - Komitovanje, prebacivanje svih fajlova u istoriju sa određenom porukom za taj deo

posla (git commit –m „poruka“), - Podešavanje određenog online repozitorijuma na koji se šalju podaci (git remote), - Prebacivanje direktorijuma na online repozitorijum (git push).

Git je privukao iskusne programere zahvaljujući robusnim, jakim i pouzdanim funkcijama. Njegova neverovatno brza sposobnost grananja transformisala je deo koda iz nišnog alata za Linux Kernel programere u mainstream distribuirani sistem za verziju. Kao i kod najboljih alata, Git-use može biti teško pristupiti jer ima mnogo komandi, podkomandi i opcija koje lako zbunjuju nove korisnike. [24]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

44 Dragana Ljubinković

Iako se može ručno raditi i menjati direktorijumi, Git ima brojne prednosti koje ručno ne mogu da se odrade:

- Mogućnost poništavanja promena - Ako se napravi greška, može se vratiti na prethodnu tačku u vremenu da bi se oporavila verziju rada.

- Potpuna istorija svih promena - Ako ikada poželimo da vidimo kako je projekat izgledao dan, nedelju, mesec ili godinu pre, možemo proveriti prethodnu verziju projekta da bismo videli tačno kakvo je stanje datoteka onda bilo.

- Dokumentacija o tome zašto su napravljene promene - Često je teško zapamtiti zašto je došlo do promene. Sa porukama o urezivanju u Git-u, lako je dokumentovati za buduću referencu zašto pravite promene.

- Sigurnost da se nešto promeni - Pošto je lako vratiti prethodnu verziju projekta, može se imati povjerljivost bilo kakve promene koje želite. Ako ne uspeju, uvek se može vratiti na raniju verziju rada.

- Više tokova istorije – Mogu se kreirati različite grane istorije da bi se eksperimentisalosa različitim promenama sadržaja ili da bi se samostalno izgradile različite funkcije. Tada se mogu ponovo spojiti u istoriju glavnog projekta (glavna grana) kada se završi, ili ih obrisati ako na kraju ne rade.

Radeći u timu, dobija se još širi spektar pogodnosti kada se koristi Git da bi se pratile promene. Neke od ključnih prednosti Git-a u radu sa timom su:

- Mogućnost rešavanja konflikta - Uz Git, više ljudi može raditi na istoj datoteci u isto vreme. Obično će Git moći automatski da objedini izmene. Ako ne može, pokazat će šta su konflikti i olakšat će da se reše.

- Nezavisni tokovi istorije - Različiti ljudi na projektu mogu da rade na različitim granama, što omogućava da se samostalno radi na odvojenim funkcijama, a zatim da se spoje funkcije kada se završe. [25]

Tabela 4. Broj poseta i projekata na pojedinim online repozitorijumima

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

45 Dragana Ljubinković

4.2. Repozitorijumi koje koristi GIT

4.2.1. GitHub

Sa preko 10 miliona git repozitorijuma, GitHub postaje jedan od najvažnijih izvora artefakata softvera na Internetu. Istraživači počinju da prikupljaju informacije sačuvane u dnevnicima događaja GitHub-a, pokušavajući da shvate kako njegovi korisnici koriste sajt da bi sarađivali na softveru. Međutim, do sada nije bilo studija koje opisuju kvalitet i osobine podataka dostupnih od strane GitHub-a. Dokumentuju se rezultati empirijske studije koja ima za cilj razumevanje karakteristika spremišta u GitHubu i načina na koji korisnici koriste prednosti GitHub-ovih glavnih funkcja - naime, obveze, zahevi za povlačenjem i pitanja. Ovi rezultati pokazuju da, iako je GitHub bogat izvor podataka o razvoju softvera, rudarstvo GitHub za istraživačke svrhe treba uzeti u obzir različite potencijalne opasnosti. Prikazaće se, na primer, da je većina projekata lična i neaktivna; da se GitHub koristi i za besplatnočuvanje i kao uslugu veb hostinga; i da se skoro 40% svih zahteva za povlačenjem ne pojavljuju kao spojeni, iako su bili. Pruža se skup preporuka za istraživače softverskog inženjeringa o tome kako pristupiti podacima u GitHubu.

GitHub menja način na koji softver dobija. Koncipiran prvobitno kao način da se programerima olakša doprinos projektima otvorenog koda, GitHub ubrzano postaje zadana platforma za razvoj softvera. Više od običnog alata za skladištenje izvornog koda, GitHub nudi niz moćnih alata za specifikaciju, diskusiju i pregled softvera.

Iako se GitHub i dalje primarno koristi za saradnju na razvoju softvera, to je takođe odličan način za tim da sarađuje na širokom spektru projekata. Od izrade knjiga i distribucije modela za 3D štampanje do izrade zakona, kad god imate tim ljudi koji sarađuju na prikupljanju dokumenata, trebalo bi da razmislite o korišćenju GitHub-a za upravljanje procesom.

GitHub je veb sajt na koji se može otpremiti kopija Git repozitorijuma. Omogućava mnogo lakšu saradnju sa drugim ljudima na projektu. To čini tako što pruža centralizovanu lokaciju za deljenje repozitorijuma, interfejs zasnovan na vebu da bi ga pregledao, i funkcije kao što su forking, zahtevi za povlačenje, pitanja iz vikija, koji vam omogućavaju da odredite, diskutujete i pregledate izmene u svom timu efikasnije. [25]

GitHub je kolaborativni kod hosting sajt izgrađen na vrhu git verzije sistema kontrole. GitHub je predstavio “fork & pull” model u kome programeri kreiraju sopstvenu kopiju spremišta i podnose zahtev za povlačenje kada žele da održavalac projekta povuče njihove promene u glavnu granu. Pored hostinga koda, kolaborativnog pregleda koda i integrisanog praćenja problema, GitHub ima integrisane društvene funkcije.

Korisnici se mogu pretplatiti na informacije "gledanjem" projekata i "praćenja" korisnika, što dovodi do informacija o tim projektima i korisnicima od interesa. Korisnici takođe imaju profile koji mogu biti popunjeni identifikacionim informacijama i sadržati njihove nedavne aktivnosti unutar sajta.

Sa više od 10,6 miliona repozitorijuma koji su hostovani od januara 2014. Godine [13], GitHub je bio najveći sajt za hosting kodova na svetu. Njegova popularnost, integrisane društvene karakteristike i dostupnost metapodataka putem pristupačnog API-ja učinili su GitHub veoma atraktivnim za istraživače softverskog inženjerstva.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

46 Dragana Ljubinković

Tadašnja postojeća istraživanja su bila kvalitativna i kvantitativna. Kvalitativne studije su se fokusirale na način na koji programeri upotrebljavaju društvene funkcije GitHub-a za formiranje utisaka i donošenje zaključaka o aktivnostima drugih developera i projekata kako bi procenili uspeh, performanse i moguće mogućnosti saradnje. Kvantitativne studije su imale za cilj da sistematski arhiviraju javno dostupne podatke GitHub-a i koriste ih za istraživanje praksi razvoja i mrežne strukture u GitHub okruženju.

Mnogi projekti hostovani na GitHub-u su javni, tako da svako ko ima internet vezu može da vidi aktivnost unutar tih projekata. Dostupna aktivnost uključuje radnje oko problema, povlačenje zahteva i izvršavanje, uključujući komentare i informacije o pretplati. Velika količina javnih podataka na GitHub-u omogućava istraživačima da lako izvlače podatke o projektu, a razni alati i skupovi podataka stvoreni su kako bi pomogli istraživačima u tom cilju.

Usluge veb hostinga, kao što je GitHub, ranije su zanimale istraživače softverskog inženjeringa. Brojnost i javna dostupnost podataka pojednostavljuje neke od pitanja prikupljanja i obrade podataka. Međutim, praktične poteškoće su još uvijek prisutne i potencijalno mogu izmijeniti zaključke izvučene iz podataka.

SourceForge je drugi sajt za hosting koda; on je dostigao vrhunac popularnosti pre GitHub-ovog široko prihvaćenog usvajanja. Projekti hostovani na SourceForge-u su često bili napušteni, a njihovi podaci su često bili kontaminirani podacima koji su uvezeni iz prethodnih sistema. Takođe su otkrili da informacije često nedostaju zbog podataka o projektu koji su bili smešteni izvan SourceForge prostora.

Slično tome, ne treba da se svi SourceForge podaci smatraju savršenim: imena kategorija se često menjaju u SourceForge-u, a projekti se stalno pokreću i postaju neaktivni. Poredeći svoje podatke sa podacima FLOSSMole2, informacije o neaktivnim i nepristupačnim projektima uopšte nisu nedostajale. Primećeno je da je samo 1% SourceForge projekata zaista aktivno kao što su pokazali neka istraživanja. Predložen je oprez u korišćenju SourceForge podataka i savetuje se da istraživačka zajednica izvrši procenu kvaliteta podataka preuzetih sa portala kao što je SourceForge. Shodno tome, predstavljaju se nalaze koji ističu potencijalne rizike za istraživače da imaju na umu kada izvlače zaključke iz GitHub podataka.

Istraživanja softverskog inženjeringa takođe su istakla predrasude u skupovima podataka o ispravkama grešaka (bagova). Ove pristrasnosti mogu ugroziti validnost i generalizaciju studija korišćenjem ovih skupova podataka. Istraživači se često oslanjaju na veze između grešaka i izvršenja u zapisnicima, ali povezane greške predstavljaju samo deo ukupne populacije fiksnih grešaka.

Uvođenje socijalnih karakteristika u sajt za hosting kodova je izazvalo posebnu pažnju istraživača. Nekoliko kvalitativnih studija intervjuisalo je korisnike GitHub-a kako bi bolje razumeli kako se koriste te socijalne karakteristike. Nalazi pokazuju da korisnici GitHub-a formiraju utiske i izvlače zaključke o aktivnostima i potencijalima drugih developera i projekata. Korisnici zatim internalizuju te zaključke da bi odlučili koga i šta da prate, ili gde da slede. Transparentnost koju stvaraju ove društvene karakteristike takođe izgleda da omogućava timovima da održavaju svest o aktivnostima svojih članova i koriste ih u cilju organizovanja njihovog rada. Istraživanja su pokazivala da li veća vidljivost akcija programera koje omogućavaju društvene funkcije GitHub-a utiče na ponašanje testiranja razvojnih programera. [13]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

47 Dragana Ljubinković

Dodatna istraživanja proširila su se i izvan društvenih karakteristika GitHub-a.Thung i ostali[14] izgradili su društvene mreže programera uključenih u 100.000 GitHub projekata kako bi pokazali društvenu strukturu GitHub ekosistema.Takhteiev i ostali [15] su pregledali geografske lokacije GitHub programera tako što su ispitali informacije o lokaciji koje su objavljene u GitHub profilima. Gousios i ostali [16] su ispitali kako funkcionišu zahtevi za povlačenjem na GitHubu. Otkrili su da model povlačenja zahteva nudi brzi zaokret, povećane mogućnosti za angažman zajednice i smanjenje vremena za uključivanje doprinosa. Oni su pokazali da relativno mali broj faktora utiče i na odluku o spajanju zahteva za povlačenjem i na vreme za njegovu obradu. Oni su takođe kvalitativno ispitali razloge odbijanja zahteva za povlačenje i utvrdili da su tehnički samo mala manjina.

Merenje odnosa između dizajna platforme, učešća i performansi u softveru otvorenog koda (OSS) predstavlja brojne izazove za istraživače, jer svaki faktor utiče na druge. GitHub, repozitorijum za hosting kodova zasnovano na Git sistemu kontrole verzija, čini nivo učešća na OSS projektima lako vidljivim. Razumevanje kako ova povećana svest o učešću utiče na strukturu virtuelnih softverskih organizacija koje koriste GitHub će osvetliti odnos između dizajna platforme, učešća i mera performansi.

GitHub omogućava korisnicima da postavljaju javni repozitorijum koji svako može da raširi i koristi za sopstveni kod iili da napravi izmene koje mogu doprineti kao zahtev za povlačenje. Zahtevi povlačenja su način na koji se kod jednog developera javno šalje u GitHub repozitorijum. „fork “ je klon ili kopija repozitorijuma. Fork se pravi iz dva glavna razloga: prvo, da se koristi kod na neki derivativni način; i drugo, kao prethodnik doprinosu izvornom projektu kroz zahtev za povlačenjem, koji se zatim može spojiti sa onima koji imaju pristup. Sve ove aktivnosti se objavljuju u otvorenom, vidljivom prenosu na GitHubu, a sadržaj i diskusija vezana za pitanja, obaveze i zahteve za povlačenjem su takođe javni. Korisnici GitHub-a mogu primati upozorenja (putem desktop klijenata i e-pošte) o promenama koda, zahtevima za povlačenje, komentarima, problemima itd.za bilo koji javni projekat. [17]

GitHub je primer radnog prostora zasnovanog na znanju. Ovaj sajt integriše niz društvenih funkcija koje čine jedinstvene informacije o korisnicima i njihovim aktivnostima vidljivim unutar i preko projekata otvorenog softvera.

GitHub obezbeđuje set alata za „socijalno kodiranje“ koji su izgrađeni oko Git sistema za kontrolu verzija i uključuje društvenu funkcionalnost koja čini identitet i aktivnosti razvojnog programera vidljivim drugim korisnicima. GitHub sajt je jedinstven po tome što čini korisničke identitete, interne artefakte projekata i akcije na njima javno vidljivima širom zajednice.[18]

4.2.2. GitLab

GitLab je samostalni sistem za upravljanje kodom. Prvi put je objavljen u oktobru 2011. godine i od tada se ažurira svakog dvadeset i drugog dana u mesecu. Objavljen je pod licencom MIT-a.

Nekada je bio hostovan na GitHub-u, ali od januara 2014, njegov glavni izvor hostinga je gitlab.com. Fork GitLab-a, koji je hostovan na GitHub-u, ostaje aktivan kao izvor gde se mogu praviti problemi i spajati zahtevi.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

48 Dragana Ljubinković

GitLab je osnovao Dmitri Zaporozhets 2013.godine. GitLab-u radi puno radno vreme od 2013. godine. Projekat se sastoji od dve glavne grupe: s jedne strane, osnovnog tima otvorenog koda, a sa druge strane, tima GitLab B.V.

Pored neverovatnog alata za upravljanje projektima za Git projekte, postoji i sistem GitLab Continuous Integration (CI); ovo je Cl sistem koji se visoko integriše sa GitLabom.

Ljudi iz GitLab-a su napravili Omnibus paket za glavne Linux distribucije (Ubuntu, Debian i Centos). Ovi paketi su jednostavan način za instaliranje GitLab instalacije, pošto imaju sve zavisnosti paketa koje su zajedno sa njima. [26]

Ovaj alat za upravljanje Git repozitorijumom je prilično sličan GitHubu u smislu korišćenja i osećaja. Softver nudi korisne funkcije kao što su recenzije koda, praćenje vremena, praćenje problema, integrisani viki projekti, kontinuirana integracija, automatsko testiranje i isporuka koda.[20]

Prema istraživanju GitLab iz 2016.godine, 98% programera koristi open source alate, a 92% programera preferira Git kao svoj kontrolni jezik za verzije. Uprkos dostupnosti drugih jezika za kontrolu verzija, kao što su Mercurial (Hg) i Subversion (SVN), širenje Git-a se nastavlja, uglavnom zbog evangelizacionih GitHub korisnika i napora kompanije na brendiranje. U stvari, GitHub drži mesto 38 na Moz's Top 500 listi. [21]

Zašto koristiti GitLab?

- Najbolja GitHub alternativa - Licenciranje otvorenog koda - Neograničen, privatni, besplatni repozitorijum - Čist i intuitivan korisnički interfejs

GitLab je prva pojedinačna aplikacija za ceo životni ciklus DevOps-a. Od planiranja do monitoringa GitLab pokriva svaku fazu i dodatno omogućava upravljanje i osiguravanje preko faza. Samo GitLab omogućava Concurrent DevOps, otključavanje organizacija od ograničenja alatnog lanca. GitLab pruža neuporedivu vidljivost, viši nivo efikasnosti i sveobuhvatno upravljanje. Ovo čini životni ciklus softvera 200% bržim, radikalno poboljšavajući brzinu poslovanja.

GitLab pomaže timovima da upravljaju i optimizuju njihov životni ciklus isporuke softvera sa metrikama i uvidom u tok struje kako bi pojednostavili i povećali brzinu isporuke.

GitLab omogućava planiranje i upravljanje portfolijom kroz epove, grupe (programe) i prekretnice za organizaciju i praćenje napretka. Bez obzira na metodologiju od Waterfalla do DevOps-a, GitLabov jednostavan i fleksibilan pristup planiranju zadovoljava potrebe malih timova za velika preduzeća. GitLab pomaže timovima da organizuju, planiraju, usklađuju i prate rad na projektima kako bi osigurali da timovi rade na pravim stvarima u pravo vreme i održavaju kraj do kraja vidljivost i sledivost problema kroz životni ciklus isporuke od ideje do proizvodnje.

GitLab pomaže timovima da dizajniraju, razvijaju i bezbedno upravljaju kodnim i projektnim podacima iz jednog distribuiranog sistema kontrole verzije da bi omogućili brzu iteraciju i isporuku poslovne vrednosti. GitLab repozitorijumi pružaju skalabilan, jedini izvor istine za

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

49 Dragana Ljubinković

saradnju na projektima i kodovima koji timovima omogućavaju da budu produktivni bez narušavanja njihovih radnih tokova.

GitLab je veb-bazirani DevOps alat za životni ciklus koji pruža Git-spremištu pružajući viki, problem-praćenje i CI/CD pipeline mogućnosti, koristeći open-source licencu, razvijenu od strane GitLab Inc. Softver je kreirao Dmitriy Zaporozhets i Valery Sizov, a koristi ga nekoliko velikih tehnoloških kompanija, uključujući IBM, Soni, Istraživački centar Julich, NASA, Alibaba, Invincea, O'Reilly Media, Leibniz-Rechenzentrum (LRZ), CERN, Evropska XFEL, GNOME Foundation, Boeing, Autodata i SpaceX.

Kod je prvobitno pisan u Ruby-ju, a neki su kasnije prerađeni u Go-u, u početku kao rešenje za upravljanje izvornim kodom za saradnju sa njegovim timom na razvoju softvera. Kasnije se razvilo u integrisano rešenje koje pokriva životni ciklus razvoja softvera, a zatim u ceo životni ciklus DevOps-a. Trenutni tehnološki stog uključuje Go, Ruby on Rails i Vue.js.

On prati razvojni model otvorenog jezgra gde je osnovna funkcionalnost izdata pod licencom otvorenog koda (MIT), dok je dodatna funkcionalnost pod licencom vlasnika.

GitLab pomaže timovima za isporuku da u potpunosti prihvate neprekidnu integraciju da bi automatizovali gradnje, integraciju i verifikaciju svog koda. GitLab-ove vodeće CI mogućnosti omogućavaju automatizirano testiranje, Static Analisis Securiti Testing, Dinamic Analisis Securiti testiranje i analizu kvalitete koda kako bi pružili brzu povratnu informaciju programerima i testerima o kvalitetu njihovog koda. Sa cevovodima koji omogućavaju istovremeno testiranje i paralelno izvršavanje, timovi brzo dobijaju uvid o svakom urezivanju, dozvoljavajući im da brže isporuče kod većeg kvaliteta. [22]

4.2.3. BitBucket

BitBucket je još jedna popularna alternativa GitHub-u koja nudi neograničen broj privatnih i javnih spremišta za najviše pet članova. Ima impresivne funkcije kao što su pretraživanje koda, BitBucket pipelines, zahtevi za povlačenje, smart mirroring, praćenje problema, fleksibilni modeli primene, IP adrese dopuštenja i dozvole podružnice za zaštitu rada.

Budući da BitBucket pripada Atlassian softverskoj porodici, omogućava integraciju drugih Atlassian alata za upravljanje projektima kao što su Jira, Bamboo, HipChat i Confluence. Još jedna značajna karakteristika ove alternative GitHub je da omogućava korisnicima da gurnu svoje datoteke koristeći bilo koju Git klijent ili Git komandnu liniju. U zavisnosti od bezbednosnih potreba, BitBucket se može postaviti na cloud, data centar preduzeća ili lokalni server.

Bitbucket je popularan sistem hostinga kod istih ljudi koji su izgradili JIRA. Sa oko tri miliona korisnika, može imati manju korisničku bazu od Gitlub-a, ali za male timove ima dve vrlo velike prednosti: besplatne privatne repozitorijume i per. kontrola pristupa grani. Pored ovih karakteristika, generalno je Bitbucket intuitivan, a njegova dokumentacija sveobuhvatna.

Podrazumevane opcije za Bitbucket repozitorijume imaju interesantne implikacije u poređenju sa GitHubovim. U zavisnosti od tačke gledišta, mogu se smatrati "diskretnim" ili "antisocijalnim". Po podrazumevanoj vrednosti, Bitbucket pretpostavlja da je repozitorijum koje treba da se kreira privatni repozitorijum i da fork repozitorijuma takođe treba da budu privatni. Ovo je suprotno od onoga što GitHub bira (javni repozitorijum i javne forks). Tamo gde je GitHub napravio termin "socijalno kodiranje", Bitbucket ima sasvim drugačiji pristup,

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

50 Dragana Ljubinković

ali to nije samo suprotno od društvenog. Drugim rečima, to ne znači da je Bitbucket antisocijalan. Umesto toga, podrazumevano bira diskreciju.

Dok privatni i javni projekti mogu imati sličnosti u komandama koje koristite za premeštanje koda s jednog mesta na drugo, oni često imaju vrlo različit politički osećaj prema njima kada su svi koji su uključeni u projekt tamo po pozivu. Projekti otvorenog koda imaju tendenciju da prate kontrole pristupa celog repozitorijuma. Veoma mali broj održavalaca može da ažurira bilo koji deo koda. Konvencije o tome kako je kod prihvaćen u projekat će varirati, naravno, ali generalno postoji podnesak, neka vrsta perioda pregleda, i onda se kod usvaja u glavni repozitorijum za projekat.

Privatni projekti, s druge strane, imaju tendenciju da imaju vrlo specifične zahteve upravljanja. Ponekad su ovi zahtevi navedeni od strane regulatornog tela, kao što je usklađenost sa industrijom platnih kartica (PCI) za one koji se bave finansijskim transakcijama, ili propisima za one koji grade biomedicinske uređaje. U nekim slučajevima, ovi propisi imaju stroge zahteve oko revizije i prihvatanja doprinosa u bazi koda.

Trenutno, Bitbucket nudi mnogo finiju kontrolu pristupa od GitHub-a. Na skupu podataka mogu sesprečiti pojedinciili grupe pojedinaca da prelaze na određene grane i čitave repozitorijume. [27]

Zašto koristiti BitBucket?

- Najbolja GitHub alternativa za lične i naučne projekte - Podrška za Git Large File Storage (LFS) za razvoj igara - Poboljšana sigurnost - Ponude GitHub uvoznika za premeštanje projekata.[20]

Sličan je GitHub-u, koji primarno koristi Git.BitBucket je tradicionalno plasirao svoje usluge profesionalnim programerima koji imaju privatni softverski kod, pogotovo nakon što ga je kupio Atlassian 2010.godine. BitBucket ima 3 modela za implementaciju: Cloud, Bitbucket Server i Data Center.

Bitbucket nudi besplatan hosting javnih i privatnih Git skladišta.

Bitbucket omogućava neograničeno javno i privatno spremište. Broj učesnika u besplatnom privatnom spremištu trenutno je ograničen na 5 saradnika, tj. ako imate više od 5 programera kojima je potreban pristup privatnom spremištu, morate platiti BitBucketu.

Za kreiranje repozitorijuma potrebno je da se kreira korisnički nalog preko veb interfejsa Bitbucket-a. Nakon kreiranja ovog naloga mogu se kreirati novi repozitorijumi putem veb interfejsa.

4.2.4. SourceForge

SourceForge je veb-bazirana usluga koja programerima nudi centraliziranu online lokaciju za kontrolu i upravljanje slobodnim i otvorenim izvorima softvera. On obezbeđuje repozitorijum izvornog koda, praćenje bug-ova, preslikavanje preuzimanja za balansiranje opterećenja, viki za dokumentaciju, mailing liste programera i korisnika, forume za korisničku podršku, recenzije i ocene korisnika, izveštaj o vestima, mikro-blog za objavljivanje projekta i druge funkcije.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

51 Dragana Ljubinković

SourceForge je veb-baziran repozitorijum izvornog koda. Deluje kao centralizovana lokacija za besplatne softverske projekte otvorenog koda. On bio prvi koji je ovu uslugu besplatno ponudio projektima otvorenog koda. Projektanti imaju pristup centralizovanom skladištenju i alatima za upravljanje projektima, iako je najpoznatiji po pružanju sistema kontrole revizije kao što su CVS, SVN, Bazaar, Git i Mercurial. Glavne karakteristike (između ostalih) uključuju viki projekta, metrike i analize, pristup MySQL bazi podataka i jedinstvene URL-ove poddomena.

Veliki broj korisnika na SourceForge.net izlaže istaknute projekte raznim programerima i mogu kreirati pozitivnu povratnu petlju. Kako se aktivnost projekta povećava, SourceForge.net-ov interni sistem rangiranja čini ga vidljivijim drugim programerima kroz SourceForge direktorijum i Enterprise Directory. S obzirom na to da mnogi projekti otvorenog koda ne uspeju zbog nedostatka podrške razvojnim programerima, izloženost tako velikoj zajednici programera može stalno da udahne novi život u projekat.

SourceForge je bio prisutan duže vreme u poređenju sa drugim repozitorijumima online koda i uslužio je preko 3,7 miliona registrovanih korisnika. Ovaj besplatni Git repozitorijum je hostovan na Apache Allura i stvara potpuno drugačiju strukturu projekta. Za razliku od drugih sajtova za kontrolu verzija, SourceForge omogućava da se hostuju i statičke i dinamičke stranice.

Na ovoj platformi korisnici mogu slobodno da izaberu Git, Subverziju ili Mercurial kao svoj omiljeni sistem kontrole verzija. Kao i druge veb stranice, SourceForge nudi i alate za uvoz njihovih odabranih ili celih GitHub repozitorijume u postojeće projekte. Tu je i popularan direktorijum koji povezuje milione korisnika sa nekoliko projekata otvorenog koda.

Zašto koristiti SourceForge?

- Široko je poznat za organizovanje projekata otvorenog koda - Podržava neograničen broj pojedinačnih projekata - Forumi, blogovi i mailing liste. [20]

SourceForge je Open Source zajednica resursa posvećena pomaganju open source projektima da budu što uspešniji. Napreduju u saradnji sa zajednicom kako bi pomogli da se napravi premijerni resurs za razvoj i distribuciju softvera otvorenog koda.

Sa alatima koje pružaju, programeri na SourceForge kreiraju moćan softver u preko 500.000 projekata; hostuju milione registrovanih korisnika. Popularni direktorijum povezuje više od 33 miliona korisnika mesečno sa svim open source projektima i opslužuje više od 4 miliona preuzimanja dnevno.

IT stručnjaci dolaze u SourceForge da razvijaju, preuzimaju, pregledavaju i objavljuju softver otvorenog koda. SourceForge je najveća i najpouzdanija destinacija za otkrivanje i razvoj softvera otvorenog koda na vebu. [28]

U 2013. godini, SourceForge je iskusio problem popularnosti i kao rezultat je uključio gumbe za oglašavanje na veb stranicama projekta, što je korisnike zbunilo i smanjilo njegovu upotrebljivost. Kao odgovor na to, mnogi programeri su uklonili opciju preuzimanja sa sajta svog projekta. U to vreme, SourceForge je imao 3 miliona registrovanih korisnika, dok je GitHub imao oko 2,5 miliona korisnika početkom 2013. godine, dostigavši 3 miliona korisnika u aprilu 2013. i skoro 5 miliona (sa 10 miliona spremišta) u decembru. Osim toga,

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

52 Dragana Ljubinković

ekstrahovani podaci iz Alexa.com pokazuju rastuću popularnost GitHub-a u poslednjih nekoliko godina, jer SourceForge nastavlja da opada. Štaviše, GitHub obezbeđuje brzinu pristupa za oko 64% veću od SourceForge-a (1.117s i 2.155 s). Danas, GitHub je među prvih sto najposećenijih Veb lokacija.

Jedan od razloga za široku upotrebu SourceForge-a u akademskim studijama je dostupnost besplatnih baza podataka za istraživanje, kao što su: FLOSSmole, sa Siracuse University (danas prekinut) i SourceForge Research Data Archive (SRDA) sa Univerziteta Notre Dame. Ova baza podataka već godinama podupire instance podataka iz SourceForge-a u akademske svrhe. Napravljeni su neki pokušaji da se GitHub učini dostupnim za velike baze podataka koje uključuju projekte kao što su GHTorrent i GitHub Archive. [29]

Po rangu popularnosti u svetu na osnovu poređenja različitih sajtova, od sledeće navedenih online repozitorijuma, najviše je rangiran GitHub sa 49. mestom, zatimSourceForge sa 350. mestom, BitBucket sa 790. mestom, i na kraju GitLab sa 1,584. mestom.4

4 Preuzeto sa sajta: https://www.alexa.com/siteinfo

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

53 Dragana Ljubinković

5. ANALIZA NAUČNIH REZULTATA U OBLASTI

Uspeh open source projekata u velikoj meri zavisi od aktivnog učešća zajednice u svim fazama, uključujući planiranje, razvoj, održavanje i dokumentaciju. Učesnici često sarađuju pomoću jednog ili više zajedničkih repozitorijuma softvera za čuvanje i upravljanje izvornim kodom, dokumentacijom i izveštajima o greškama.

Većina projekata ohrabruje sve korisnike da podnesu izveštaj o grešci kada uoče neočekivano ponašanje, a mnogi projekti čak održavaju svoju dokumentaciju kao javne vikije. Međutim, pristup pisanju izvornog koda projekta je gotovo uvek strogo kontrolisan. Izabrani skup programera, koji se često nazivaju osnovnim obveznicima, imaju mogućnost da naprave izmene u bazi kodova projekta, a sva druga učešća u zajednici se traže preko različitih medija kao što su zakrpe (patch) ili zahtevi za povlačenje (pull request). U stvari, kontinuirano podnošenje visokokvalitetnih zakrpa je važan uslov da se spoljni saradnik promoviše do nivoa glavnog izvršioca.

Decentralizovani sistemi za kontrolu verzija, kao što je Git, dozvoljavaju korisnicima da kloniraju čitave repozitorijume, dajući svakom korisniku pristup pisanju sopstvenih lokalnih klonova, i na taj način olakšavaju upravljanje učešćem vođenim od strane zajednice.

U Git-u, urezivanje (commit) je jednostavno skup izmena (delta) koje se primenjuju na neko stanje sistema, koje se naziva roditeljski ulog (i). Ovo omogućava veoma laku implementaciju grananja i spajanja. Još jedna implikacija takve arhitekture je da se obaveze napravljene na jednom repozitorijumu mogu bez problema preneti u drugi repozitorijum sve dok postoji zajednička baza (roditelji) između dva repozitorijuma. Programeri mogu da guraju obaveze u udaljeni repozitorijum, ako imaju pristup za pisanje, ili traže od održavaoca udaljenog repozitorijuma da povuku svoj commit.

GitHub, je jedna od veb-hosting usluga baziranih na Git-u. Platforma omogućava korisnicima da iskoriste decentralizovane funkcije Git-a dok održavaju centralno hostovano kanoničko spremište i pružaju druge karakteristike kao što je integrisani sistem za upravljanje problemima.

Karakteristika GitHub-a je fork i pull model, koji implementira pomenuti mehanizam za besprekornu razmenu commit-a preko klonova istog projekta. Svi korisnici, bez obzira na to da li imaju pristup pisanju projekta, mogu da podignu svoje repozitorijume jednim klikom, kao da kreiraju laganu granu.

Fork je klon repozitorijuma koji je u potpunosti u vlasništvu takvih korisnika i oni mogu modifikovati njegov kod i čak dodati druge korisnike kako bi zajednički proširili bazu kodova.Ako programeri žele da doprinesu ovim proširenjima nazad u originalni projekat, oni mogu otvoriti zahtev za povlačenje, koji se implementira jednostavno kao stavka u programu za praćenje problema. [41]

GitHub je popularna socijalna platforma za deljenje koda koja koristi Git distribuirani sistem kontrole verzija (DVCS). Ona podstiče otvoreni radni proces u kojem saradnici mogu učestvovati na više načina, kao što su doprinos diskusijama o greškama i karakteristikama, ili pravljenje izmena u projektu i omogućavanje drugim saradnicima da pregledaju i prihvate rad. Milioni ljudi koriste GitHub za saradnju, i iako je prvobitno dizajniran za razvoj softvera, nedavno je usvojen u različitim domenima. [38]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

54 Dragana Ljubinković

Samostalna rešenja kao što su GitLab, Bitbucket i GitHub nude osnovne opcije za upravljanje korisničkim pravima, kao što su čitanje, pisanje, postavljanje, dodavanje novih članova tima i dodavanje oznaka. Međutim, čak i sa ovim rešenjima, visok nivo upravljanja korisnicima, tj. ograničavanje uređivanja određenog broja ili tipa klasa, svojstava ili instanci ne može se postići pomoću Git-a. [37]

Open Source Software hosting platforme integrišu dobra rešenja za upravljanje. Platforme kao što su GitHub, SourceForge, Launchpad, Bitbucket i Gitlab omogućavaju kreiranje više timova i dodeljivanje svake dozvole za pristup repozitorijumu. Na taj način, umesto dodeljivanja dozvola svakom pojedinačnom članu, kreiranje timova sa različitom dozvolom i zatim pozivanje članova u tim timovima je dostupan pristup upravljanju. Vlasnik projekta može kreirati neograničen broj timova, imenovati ih i dodeliti im određene dozvole pristupa.

Pored toga, sav posao, uključujući pitanja i zahteve za povlačenjem, mora biti organizovan na odgovarajući način. Malo platformi su ponudile mogućnosti upravljanja projektima koje su omogućile programerima da upravljaju svojim radom u repozitorijumu. Na primer, GitHub nudi alatku za upravljanje projektima. Ovi alati dozvoljavaju programerima da kreiraju kolone koje predstavljaju faze kao što je TODO, u toku ili urađene. Ove faze su prilagodljive, a zahtev za izdavanje i povlačenje može se prevući i ispustiti direktno u te faze koristeći interfejs Kanban stila. [40]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

55 Dragana Ljubinković

6. EMPIRIJSKO ISTRAŽIVANJE

6.1. Metodološki elementi empirijskog istraživanja

U ovom delu rada će biti prikazano kako izgledaju i kako se koriste različiti repozitorijumi koda za istu programsku aplikaciju. Empirijsko istraživanje će biti sprovedeno na 2 načina:

1. Biće prikazan način rada sa tri repozitorijuma: GitHub, BitBucket i GitLab. Treba prikazati opšte karakteristike samih provajdera koji se najčešće koriste, njihove sličnosti i razlike, prednosti i nedostaci. Za posredovanje se koristi Git koji je prethodno instaliran na računaru i preko koga kopiramo datoteke na online repozitorijum. Biće prikazan korak po korak kako se preko Git-a konfigurišu podaci i kako se, sa malom razlikom, kopiraju prvo u jedan, zatim drugi pa treći online repozitorijum koji su prethodno napravljeni i opisani u ova tri provajdera.

2. Isti postupak će biti urađen koristeći Git putem opcija koje su integrisane u Visual Studio softverski alat.

6.2. Korišćenje online repozitorijuma nezavisno od softverskog razvojnog okruženja

U ovom primeru je korišćen projekat sa fajlovima za izradu sajta i slikama. Nakon što su izrađene osnove sajta, sledi korak prebacivanje lokalnog repozitorijuma na online repozitorijume. Što se tiče sajta koji se koristi za demonstraciju rada sa online repozitorijumima, napravljen je u HTML i CSS. Sajt sadrži samo neke osnovne sadržaje, meni listu, i slično.

Slika 18. Izgled sajta korišćenog za projekat

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

56 Dragana Ljubinković

Kod je dat u Notepad++ listing:

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

57 Dragana Ljubinković

Slika 19. Listing koda u HTML

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

58 Dragana Ljubinković

Slika 20. Listing CSS koda za projekat Online repozitorijumi omogućavaju da, osim čuvanja podataka, drugi korisnici mogu da rade na samom kodu postavljenog projekta, da dodaju izmene, dopune, ili da pomažu u rešavanju problema korisnika. Zatim, korisnik može da izabere čije rešenje mu odgovara pa da ga pripoji svom kodu zbog boljih rezultata samog projekta. I u ovom slučaju, postavljen je i sam kod i CSS i HTML za ovaj projekat da bi se bolje videle mogućnosti rada sa online repozitorijumima. Osim ova dva koda na slikama iznad, u fajlu su i slike koje su korišćene, a ceo fajl je prebačen na online repozitorijume preko Git-a.

Na samom početku, pre razmene podatka preko repozitorijuma, prvo treba instalirati Git lokalno na računaru i preko njega podesiti svoje kredencijale sa kodom kao na slici 8. Napravljen je projekat u kome je inicijalizovan Git.

Za Git se može pronaći instalacija na google na https://git-scm.com/downloads i izabrati operativni sistem na koji se skida aplikacija. Za ovaj rad je korišćen Git za 32 bitnu verziju Windows OS. Aplikacija se instalira zatim sa računara, a potom se može koristiti i bez konekcije na internet mrežu. Aplikacija je Git Bash i pre početka bilo koje transakcije se mora inicijalizovati.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

59 Dragana Ljubinković

Slika 21. Git status

6.2.1. Postavljanje repozitorijuma na GitHub

GitHub ima veoma intuitivan, informativan i poznat korisničkiUI (User Interface). Ako se odluči da se instalira GitHub, sa instalacijom neće biti problema. Ima LDAP integraciju, Jira integraciju i ima veliki broj drugih karakteristika koje kompanije značajno vrednuju. Takođe, postoji nekoliko stvari koje Github ne treba.

Pre svega, treba se napraviti nalog na Git online provajderu na kome se radi, u ovom slučaju je to GitHub. Da bi se projekat postavio na GitHub, mora se napraviti repozitorijum u kojem će se prebaciti projekat.

Slika 22. Kreiranje repozitorijuma na GitHub [31]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

60 Dragana Ljubinković

Nakon što se kreira repozitorijum, otvoriće se radni prostor u kome nam GitHub daje instrukcije kako da podesimo lokalni repozitorijum da upućuje na online repozitorijum.

Slika 23. Radni prozor GitHub [31]

Kada se isprate uputstva i ukucaju se date naredbe za postavku online repozitorijuma i prebacivanje projekta, dobije se drugačija radna površina.

Slika 24. Postavljen repozitorijum sa projektom na GitHub [31]

Kao što se na slici 24. vidi, GitHub pruža mnoštvo opcija za manipulisanje datim repozitorijumom. Omogućava mnogo lakšu saradnju sa drugim ljudima na projektu. To čini tako što pruža centralizovanu lokaciju za deljenje repozitorijuma, interfejs zasnovan na vebu

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

61 Dragana Ljubinković

da bi ga pregledao, i funkcije kao što su forking, zahtevi za povlačenje, pitanja iz vikija, koji omogućavaju da se odrede, diskutuje i pregledaju izmene u timu efikasnije.

Na vrhu korporativnih karakteristika ima Gists (način deljenja isečaka koda), mogućnost modifikovanja datoteka direktno iz pregledača (što je veoma korisno ako se prave beleške na sastanku), radi sa skoro svim cloud provajderom i ima moćnu pretragu. Takođe pruža sopstveno Viki i praćenje problema.

Slika 25. Izgled profila na GitHub [31]

Kao na društvenim mrežama, i preko GitHub možemo podešavati izgled profila i povezivati se sa drugim korisnicima.

Na GitHub postoji Search polje gde se mogu vršiti pretrage u svojim repozitorijumima, ili pretraga na osnovu neke ključne reči u celom GitHub bez obzira koji je korisnik u pitanju.

Slika 26. Pretraga u GitHub [31]

U brojnim opcijama koje nudi GitHub, postoje Pull request koji predstavljaju zahteve drugih korisnika da se menja kod u glavnom repozitorijumu. Da bi neko mogao da pošalje pull request, on prvo mora da forkuje glavni repozitorijum, odnosno napravi kopiju celog trenutnog repozitorijuma i postavlja ga kod korisnika koji je forkovao. Taj korisnik sada može da vrši željene promene, i ako je zadovoljan sa onim što je uradio, može da pošalje pull request. Nakon što to uradi, vlasnik glavnog repozitorijuma će dobiti obaveštenje o tome. Vlasnik može da traži promene u skladu sa svojim zahtevima. Zatim, ako se vlasniku dopadne kod, može ga spojiti sa izvornim kodom. Na slici je prikazano kako izgleda nečiji

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

62 Dragana Ljubinković

nalog sa pull request-ovima (otvoreni na kojima može trenutno da se radi i zatvoreni na kojima se više ne radi).

Slika 27. Pull requests [31]

Kada se klikne na logo GitHub, pristupi se obaveštenjima, slično kao na društvenim mrežama, gde su prikazani pratioci ili drugi korisnici koji se prate, lajkovi i slične opcije.

Većina opcija koje GitHub nudi su veoma pristupačne na radnoj površini i lako se pronalaze i koriste, čak i za početnike koji se tek priključuju GitHub zajednici.

6.2.2. Postavljanje repozitorijuma na BitBucket

Bitbucket je veb hosting usluga za izvorne kodove i razvojne projekte koji koriste ili Mercurial ili Git sisteme kontrole revizije u vlasništvu Atlassiana. Uz Bitbucket se može birati između komercijalnog plana i besplatnog računa.

Treba se napraviti nalog na Git online provajderu BitBucket. Da bi se projekat postavio na BitBucket, mora se napraviti repozitorijum u kojem će se prebaciti projekat.

Slika 28. Kreiranje repozitorijuma na BitBucket [32]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

63 Dragana Ljubinković

Nakon što se kreira repozitorijum, otvoriće se radni prostor u kome nam BitBucket daje instrukcije kako da se podesi lokalni repozitorijum da upućuje na online repozitorijum. Instrukcije su iste kao i na GitHub, samo se mora obratiti pažnja da se umesto origin kuca npr bitbucket da bi ga Git prepoznao kao novi, a takođe se menja i URL adresa za BitBucket.

Slika 29. Radni prozor BitBucket [32]

Kada se isprate uputstva i ukucaju se date naredbe za postavku online repozitorijuma i prebacivanje projekta, dobije se drugačija radna površina.

Slika 30. Postavljen repozitorijum sa projektom na BitBucket [32]

Kao što se na slici 30 vidi, BitBucket pruža nekoliko opcija za manipulisanje datim repozitorijumom. Ima impresivne funkcije kao što su pretraživanje koda, BitBucket pipelines, zahtevi za povlačenje, praćenje problema…

Kao i preko GitHub možemo podešavati izgled profila i povezivati se sa drugim korisnicima i na BitBucket. Profil izgleda kao na sledećoj slici:

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

64 Dragana Ljubinković

Slika 31. Profil BitBucket [32]

Kao što se iz priloženih slika može videti, na GitHub postoji više opcija i radni prostor je pregledniji, lakši i pristupačniji za snalaženje. Kao početnik, korisnik mora da se snalazi na razne načine kako bi pronašao neke opcije koje se vrlo jednostavno mogu pronaći na GitHub… Na primer, za opciju pretraživanja u BitBucketu, ne može se na jednostavan i brz način pronaći neki repozitorijum drugog korisnika. Da bi se pretraživali javni repozitorijumi koji nisu povezane sa nijednim nalozima kojima korisnik ima pristup, treba se ići do tog repozitorijuma i pretražiti tamo. Postoji nekoliko opcija za postizanje sličnog rezultata:

- Prva stranica pregleda (https://bitbucket.org/dashboard/overwiev) popuniće repozitorijume koje se dodaju i kojima se pristupi vremenom.

- Stranica za istraživanje (https://bitbucket.org/repo/all) napravljena je u svrhu traženja novih repozitorijuma.

- Google pretraga može pomoći. Oni su na kraju javni repozitorijumi i kao takvi su indeksirani u Google-u. Dodavanjem niza "site: https://bitbucket.org" pretraživanju, moći će se pronaći javni repozitorijumi. (ovo važi samo za javne).

6.2.3. Postavljanje repozitorijuma na GitLab

GitLab ima manje-više iste karakteristike kao GitHub, a njegov korisnički interfejs je veliki kao i onaj iz GitHub-a. Izgleda skoro isto, tako da prelazak sa GitHub na GitLab neće biti problem za korisnika.

Treba se napraviti nalog na Git online provajderu BitBucket. Da bi se projekat postavio na BitBucket, mora se napraviti repozitorijum u kojem će se prebaciti projekat. Od opcija koje su ponuđene, izabere se prva – Create a project. Zatim, kao i na ostalim provajderima se napravi projekat, repozitorijum:

Slika 32. Kreiranje projekta/repozitorijuma na GitLab [33]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

65 Dragana Ljubinković

Kao što vidimo, u GitLab imamo malo više opcija pri kreiranju repozitorijuma nego na prethodna dva provajdera. Izabran je osnovni prazan projekat u kome će se kasnije prebaciti podaci.

Nakon što se kreira repozitorijum, otvoriće se radni prostor u kome nam GitLab daje instrukcije kako da se podesi lokalni repozitorijum da upućuje na online repozitorijum. Instrukcije su iste kao i do sada, samo se mora obratiti pažnja da se umesto origin kuca nprgitlab da bi ga Git prepoznao kao novi, a takođe se menja i URL adresa za GitLab. Kada se isprate uputstva i ukucaju se date naredbe za postavku online repozitorijuma i prebacivanje projekta, dobije se sledeća radna površina.

Kao i na prethodna dva provajdera, i ovde će se iščtati svi fajlovi koji su kopirani sa lokalnog repozitorijuma. Radna površina je sličnija GitHub-ovoj nego radnoj površini BitBucket. I ovde se takođe mogu videti razne opcije kao što većina provajdera nudi.

Slika 33. Radna površina sa repozitorijumom na GitLab [33]

Što se tiče opcije pretrage, kada se klikne na opciju search, pretraživaće samo unutar repozitorijuma, ali postoji opcija da se izabere bilo koji drugi repozitorijum na GitLabu da se na njemu vrši pretraga. Sa strane postoje opcije za grupu i projekat kao na slici:

Slika 34. Pretraga na GitLab [33]

Za razliku od prethodna dva provajedra, GitLab nudi opciju za editovanje fajlova na webu koja je naprednija u odnosu na prethodne. Opcija se zove Web IDE.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

66 Dragana Ljubinković

Slika 35. Web IDE na GitLab[33]

Kao i preko GitHub i BitBucket, možemo podešavati izgled profila i povezivati se sa drugim korisnicima i na GitLab. Profil izgleda kao na sledećoj slici 23.

Slika 36. Profil na GitLab [33]

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

67 Dragana Ljubinković

6.3. Korišćenje online repozitorijuma integrisano sa softverskim razvojnim okruženjem

Osim nezavisnog rada, Git se može koristiti u okviru integrisanog alata za razvoj softvera, u ovom slučaju primenom Visual Studio. U novijim verzijama ovog alata, Git ekstenzija može da se doda već pri samom instaliranju ovog softverskog alata. Dovoljno je samo odabrati da pri kreiranju projekta želimo da uključimo Git. Budući da je ovaj primer rađen već nezavisno pa su repozitorijumi već online, Visual Studio sam prepoznaje to i prikazuje na ekranu kada otvorimo dati fajl.

Na sledećoj slici je dato kako izgleda kada se otvori prikaz listing koda index.html u Visual Studio softverskom alatu.

Slika 37. Visual Studio prikaz ekrana

Osim Git-a, da bi se kod mogao prebaciti na online repozitorijume, trebaju biti uvezeni i pozivi na te repozitorijume. U ovom slučaju su to GitHub, GitLab i BitBucket.

Na slici 38. je prikazan kako izgleda desni navigacioni meni kada se uloguje na GitHub.

Kada se otvori projekat i fajl na kome se radi, na dnu ekrana sa desne strane se nalaze dva navigaciona prikaza: Solution Explorer i Team Explorer.

U prvom Solution Explorer je prikazana datoteka sa svim podacima i kodom, a u Team Explorer je prikazan online repozitorijum na GitHub gde može da se menjaju podaci i kod na jednostavniji način putem Git-a, bez pisanja komandi već samo klikom na određeno dugme. Navigacija je kao na GitHub online i sve se menja preko toga. Mogu se povući zahtevi i menjati kod. Git je ovde automatski integrisan pa ne moraju preko zasebne aplikacije za Git da se transferuju podaci.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

68 Dragana Ljubinković

Slika 38. Navigacioni meni: Solution Explorer i Team Explorer

Na primer, ako treba da se izmeni neki deo koda, klikne se na Changes, izmeni se kod pa se zahteva da se upiše Commit komentar da bi se prebacilo u istoriju razvijanja koda. Zatim se klikne na Sync pa se time prebaci na online repozitorijum (u ovom slučaju GitHub).

Slika 38. Promene koda i varijacije commit opcije

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

69 Dragana Ljubinković

Ostale komande su kao kad se radi online na sajtu, samo što sve radi preko Visual Studio alata. Osim GitHub-a, može se takođe online instalirati ekstenzija za GitLab i BitBucket preko alata Extensions >> Manage Extensions:

Slika 39. Ekstenzije

Zatim se dobije sledeći prozor gde je, između ostalog, i GitHub preuzet, i gde će se izabrati pretraga pa pronaći repozitorijumi. Izabere se opcija Online >> Visual Studio Marketplace i u polju Search se kucaju željeni repozitorijumi:

Slika 40. Pretraga ekstenzija

Nakon toga se zaberu GitLab i BitBucket pa se download-uju.

Slika 41. GitLab

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

70 Dragana Ljubinković

Slika 42. BitBucket

Zatim se preuzmu obe ekstenzije pa se restartuje (ponovo pokrene) Visual Studio. Pri ponovnom pokretanju se pojavi sledeći ekran:

Slika 43. Potvrda instaliranih ekstenzija

Klikne se na Modify i potvrdi, pa se pri pokretanju projekta sa desne strane u Team Explorer pojavi sleedći prikaz gde se može izabrati repozitorijum koji je potreban:

Slika 44. Prikaz Team Explorer

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

71 Dragana Ljubinković

Na svakom od ovih repozitorijuma se treba ulogovati da bi se moglo koristiti i upravljati, a sve može preko Visual Studio softverskog alata. Tako na primer, može se klonirati repozitorijum koji je online na ofline server, odnosno na računar da bi se odatle mogle vršiti izmene i dopune, a takođe, mogu se i kreirati novi repozitorijumi gde će se ubacivati novi projekti.

Slika 45. Kreiranje novog repozitorijuma preko Visual Studio softverskog alata na GitLab

Slika 46. Kreiranje novog repozitorijuma preko Visual Studio softverskog alata na GitHub

Slika 47. Kreiranje novog repozitorijuma preko Visual Studio softverskog alata na BitBucket

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

72 Dragana Ljubinković

6.4. Rezultati empirijskog istraživanja

Na osnovu empirijskog istraživanja realizovanog u ovom radu, kao i na osnovu teorijske analize iz ovog rada, mogu se uočiti neke bitne karakteristike tri najčešće korišćena on-line repozitorijuma.

Karakteristike: GitHub BitBucket GitLab

Jednostavnost pri korišćenju

GitHub je intuitivni, informatički i lak za upotrebu UI klijent. Sve opcije su pregledne i jednostavno se koriste. Može mu se pristupiti preko desktop aplikacije, preko veb interfejsa ili preko komandnog terminal.

Slično kao i GitHub, osigurava klijente za sve operacije. Malo opcija ima za razliku od GitHuba, pa je teže snaći se. Može mu se pristupiti na iste načine kao i GitHub.

GitLab je nastao kao podvrsta GitHuba pa su mu opcije i sam izgled slični kao kod GitHub. Pristupa mu se preko desktop aplikacije, preko veb interfejsa ili preko komandnog terminala.

Komunikacija sa drugim korisnicima

GitHub omogućava korisnicima da dele kod, fragmente teksta ili bilo koju informaciju s drugim programerima. Drugi korisnici se mogu lako pronaći kao i njihovi repozitorijumi.

Kod BitBucketa se ne može lako pristupiti na repozitorijume kod drugih korisnika, to mora na poseban način, nema regularne opcije.

GitLab je sličan kao GitHub tako da omogućava deljenje koda sa drugim korisnicima, ali nema direktne opcije za to.

Pretraga repozitorijuma

GitHub omogućava brzo i lako snalaženje i pronalaženje repozitorijuma ili delova koda od bilo kog drugog javnog korisnika.

BitBucket omogućava pretragu u okviru korisnikovog repozitorijuma, a ostali javni korisnici se ne mogu pronaći preko pretrage repozitorijuma već na drugi način.

GitLab kao i GitHub omogućava lako i brzo snalaženje u pretrazi i pronalaženje koda kod drugih korisnika.

Tabela 5. Rezultati istraživanja

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

73 Dragana Ljubinković

ZAKLJUČAK

Danas su usluge upravljanja repozitorijumima ključne komponente razvoja kolaborativnog softvera. Oni omogućuju programerima da upravljaju promenama izvornog koda i povezanih datoteka, kreiraju i održavaju više verzija na jednom centralnom mestu. Postoje brojne koristi od njihovog korišćenja, čak i ako se radi u malom timu ili ste vojska jednog čoveka. Korišćenje usluga upravljanja repozitorijumima omogućava timovima da se brže kreću i očuvaju efikasnost dok se povećavaju.

Postoje mnogi hostovi repozitorijuma izvornog koda koji su dostupni online, od široko korišćenih GitHub i Bitbucket do manje poznatih, ali korisnih repo hostova koji zadovoljavaju specifične potrebe. Svaka se obraća različitim korisnicima i njihovim specifičnim projektima: open source projekti, multi-developer projekti i drugi. Iako ima mnogo različitih hostova koji semogu izabrati, problem leži u određivanju savršenog hosta izvornog koda za potrebe korisnika. Neki hostovi imaju karakteristike koje drugi nemaju.

U ovom radu su detaljnije prikazani hostovi GitHub, BitBucket i Git Lab. Prikazane su njihove karakteristike, raznolikost opcija, radne površine i prenos repozitorijuma preko Git-a.

Prvi, metodološki deo rada ukratko objašnjava o predmetu i problemu istraživanja, kao i hipotezu celokupnog rada.

Drugi deo rada, teorijsko istraživanje, prikazuje osnovne pojmove repozitorijuma, interoperatibilnost podataka, integracija podataka i druge osnovne pojmove na kojima se temelji ceo rad.

U trećem delu rada, analizi stručnih rešenja u oblasti, prikazana je analiza nekoliko stručnih rešenja u oblasti online repozitorijuma, programski jeici koji se najčešće koriste, razvojna okruženja softvera, izbor repozitorijuma za različite programske jezike, kao i integracije softverskih alata i razvojnih okruženja za Git i za online repozitorijume. Osim toga, izvršena je komparativna analiza najčešće korišćenih repozitorijuma koji koriste Git.

U četvrtom delu rada, prikazani su Git i online repozitorijumi koji koriste Git. Konačno, u petom delu je prikazano empirijsko istraživanje gde su prikazana tri najpoznatija online repozitorijuma na principu Gita, njihove karakteristike i konkretno kako se ponašaju na primeru. Primer prvo prikazuje kako se Git koristi nezavisno od bilo kog softvera i kako prebacuje preko posebne aplikacije podatke na repozitorijum, a zatim prikazuje kako sve to može da se radi na lakši način, integrisano putem softverskog alata, u ovom slučaju preko Visual Studio 2019. Na kraju ovog dela su dati rezultati empirijskog dela.

Hipoteza da savremeni alati za razvoj softvera nude mogućnosti integracije sa online repozitorijumima je potvrđena. Potvrda hipoteze zasnovana je na teorijskoj analizi karakteristika najčešće korišćenih alata za razvoj programskog koda (za najčešće korišćene programske jezike) i njihovu povezanost sa online repozitorijumima. Empirijski su analizirane karakteristike tri online repozitorijuma i mogućnosti njihovog korišćenja, a takođe je i hipoteza i empirijski potvrđena na primeru razvojnog okruženja Visual Studio NET da postoji integrisana podrška povezivanju sa on-line repozitorijumom programskog koda.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

74 Dragana Ljubinković

LITERATURA

[1] A. Brin, Understanding what it means to be a repository online – unpacking the definition and requirements of a ”digital repository”, Digital Antiquity, tDAR

[2] T. Mens, A. Serebrenik, A. Cleve, Evolving Software Systems, Springer Science & Business Media, 2014.

[3] https://ecotechitsolutions.com/enterprises-2/application-interoperability/

[4] M. Higgs, B. Cottman, Solving the Data Inter-operability Problem Using a Universal Data Access Broker, I-Kinetics, Inc.

[5] Z. Janković, Bibliografski formati, Napredne metode u pronalaženju informacija.

[6] J. Bener, Modeli podataka i formati za razemenu podataka o nameni zemljišta – opšti uvod, INSTITUT ZA PRIMENJENU INFORMATIKU, KIT – Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft,

[7] http://www.para-agua.net/en/explorar/herramientas/sistemas-redes-informacion/p3-publicaciones/tipo-de-formato/formatos-de-intercambio-de-datos

[8] A. Doan, A. Halevy, Z. Ives, Principles of Data Integration,Morgan Kaufmann, Elsevier,2012.

[9]M. Arenas, P. Barceló,L. Libkin, F. Murlak, Foundations of Data Exchange, Cambridge University Press,2014.

[10] F.C. Billingsley, General Data Interchange Language, ISPRS Archives, 1988.

[11] https://stackoverflow.com/questions/1693529/list-of-top-repositories-by-programming-language

[12] https://software.ac.uk/choosing-repository-your-software-project

[13] E. Kalliamvakou, G. Gousios, K. Blincoe, L. Singer, D. M. German, D. Damian, The Promises and Perils of Mining GitHub, MSR 2014Proceedings of the 11th Working Conference on Mining Software Repositories, Hyderabad, India, 2014.

[14] F. Thung, T. Bissyande, D. Lo, L. Jiang.Network structure of social coding in github, In 17th European Conference on Software Maintenance and Reengineering (CSMR), 2013.

[15] Y. Takhteyev, A. Hilts, Investigating the geography of open source software through github, http://takhteyev.org/papers/ Takhteyev-Hilts-2010.pdf, 2010.

[16] G. Gousios, M. Pinzger, A. van Deursen. An exploration of the pull-based software development model, In ICSE ’14: Proc. of the 36th Int. Conf. on Software Engineering, 2014.

[17] N. McDonald,S. Goggins,Performance and participation in open source software on github, CHI 2013: Changing Perspectives, Paris, France, 2013.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

75 Dragana Ljubinković

[18] L. Dabbish, C. Stuart, J. Tsay, J. Herbsleb, Social coding in GitHub: transparency and collaboration in an open software repository,Proceedings of the ACM 2012 conference on Computer Supported Cooperative Work, ACM, 2012.

[19] https://git-scm.com/about/branching-and-merging

[20] https://fossbytes.com/best-github-alternative-code-hosting/

[21] https://technologyadvice.com/blog/information-technology/github-alternatives/

[22] https://about.gitlab.com/stages-devops-lifecycle/

[23] L. Vogel, Distributed Version Control with Git: Mastering the Git command line - Third Edition, 2014

[24] F. Santracoce, Git Essentials: Create, merge, and distribute code with Git, the most powerful and flexible versioning system available, Packt Publishing Ltd, 2017.

[25] B. Beer, Introducing GitHub: A Non-Technical Guide, O'Reilly Media, 2018.

[26] J. van Baarsen, GitLab Cookbook, Packt Publishing Ltd, 2014.

[27] E. Jane Hogbin Westby,Git for Teams: A User-Centered Approach to Creating Efficient Workflows in Git, "O'Reilly Media, Inc.",2015.

[28] https://sourceforge.net/about

[29]O. Gervasi, B. Murgante, S. Misra, A. M.. Rocha, C. Torre, D. Taniar, B. Apduhan, E. Stankova, S. Wang, Computational Science and Its Applications – ICCSA 2016: 16th International Conference, Beijing, China, Proceedings, Part5, 2016.

[30] https://codecondo.com/10-popular-online-repositories-for-saving-code-snippets/

[31]https://github.com

[32] https://bitbucket.org

[33] https://gitlab.com

[34] https://medium.com/flow-ci/github-vs-bitbucket-vs-gitlab-vs-coding-7cf2b43888a1

[35] https://altabel.wordpress.com/2018/06/28/gitlab-vs-github-vs-bitbucket-what-to-choose/

[36] https://stackshare.io/stackups/bitbucket-vs-github-vs-gitlab

[37] L. Halilaj, I. Grangel-González, G. Coskun, S. Auer, Git4Voc: Git-Based Versioning for Collaborative Vocabulary Development, Published in: 2016 IEEE Tenth International Conference on Semantic Computing (ICSC), 2016.

[38]J. Feliciano, M.A. Storey, A. Zagalsky, Student Experiences Using GitHub in Software Engineering Courses: A Case Study, Published in: 2016 IEEE/ACM 38th IEEE International Conference on Software Engineering Companion, 2016.

Integracija softverskih razvojnih okruženja sa on-line repozitorijumima programskog koda

76 Dragana Ljubinković

[39] G. Fylaktopoulos, G. Goumas, M. Skolarikis, A. Sotiropoulos, I. Maglogiannis, “An overview of platforms for cloud based development”, Journal List, Springerplus, PMC4715041, 2016.

[40] G. Alamer, S. Alyahya, Open Source Software Hosting Platforms: A Collaborative Perspective’s Review, Information Systems Department, College of Computer & Information Sciences, King Saud University, Riyadh, Saudi Arabia, 2017.

[41] R. Padhye, S. Mani, V.S. Sinha, A Study of External Community Contribution to Open-Source Projects on GitHub, published in: MSR 2014 Proceedings of the 11th Working Conference on Mining Software Repositories, 2014.

[42] https://stackify.com/popular-programming-languages-2018/

[43] https://www.zdnet.com/article/top-programming-languages-to-learn-in-2019-developers-name-their-favorites/

[44] https://www.g2.com/categories/integrated-development-environment-ide