Tehnički aspekti vođenja softverskog projekta I dio

 

S ovim predavanjem ulazimo u svijet razvoja programa i sustava, prema svim pravilima struke, koristeći najsuvremenije alate i tehnike koje će osigurati maksimalnu kvalitetu razvoja.

Ako želite saznati nešto više o razvoju programa i sustava, programer ste ili to tek želite postati, pridružite nam se na našim predavanjima i radionicama.

Naša predavanja i radionice otvoreni su za sve zainteresirane bez novčane naknade.

U prvom dijelu predavanja pričati ćemo o alatima koji će se koristiti za potrebe razvoja i praćenja svakog projekta. Svaki alat ćemo izdvojiti iz cjeline i obrazložiti zbog čega ćemo ga koristiti, kako će nam pomoći i na koji način ćemo koristiti takav alat.

 

Činjenice o Open Source projektima

  • Većina Open Source projekata su neuspješna.

  • 90% – 95% su napušteni projekti.

  • Menađment Open Source projekta je nešto novo i drugačije.

  • Motivi pristupa u Open Source projekt su različiti. Svaka dobra ideja počinje od osobnog problema (scratch your itch).

  • Čovjek mora imati osijećaj prisutnosti u projektu. Njegov utjecaj je direktno vezan njegovim doprinosom.

  •  

    Prvi koraci

  • Odabir “dobrog” imena za projekt.

  • Jasno i glasno izjaviti glavnu zadaću projekta.

  • Izjasniti da je projekt Open Source.

  • Lista podržanih (ili planiranih) funkcionalnosti.

  • Status razvoja projekta.

  • Screenshot primjeri ili primjeri izlaznih informacija iz aplikacije.

  • Mjesto sa kojeg korisnik može preuzeti samu aplikaciju.

  •  

    Prvi koraci …

     

  • Dokumentacija.

  • Pristup izvornom kodu.

  • Pristup issue tracker sustavu.

  • Komunikacijski kanali.
  •  

    Tehnička infrastruktura:

     

  • Version Control.

  • Bug Tracker.

  • Continuous Integration.

  • Code Review

  • Wiki.

  • Website.
  •  

    Alati:

  • Version Control

  • Bug Tracker

    • Bugzilla (http://www.bugzilla.org/)

    • <li dir="ltr">
        <p dir="ltr">
          MantisBT (<a href="http://www.mantisbt.org/">http://www.mantisbt.org/</a>)
        </p>
      </li>
      

  • Continuous Integration

    • Jenkins (http://jenkins-ci.org/)

    • <li dir="ltr">
        <p dir="ltr">
          CruiseControl (<a href="http://cruisecontrol.sourceforge.net/">http://cruisecontrol.sourceforge.net/</a>)
        </p>
      </li>
      

  • Code Review

    • Review Board (http://www.reviewboard.org/)

    • <li dir="ltr">
        <p dir="ltr">
          Gerrit (<a href="https://code.google.com/p/gerrit/">https://code.google.com/p/gerrit/</a>)
        </p>
      </li>
      

  •  

  • Wiki

  • Mailing List Manager

  • Forum Bulletin Board

    • phpBB (https://www.phpbb.com/)

    • <li dir="ltr">
        <p dir="ltr">
          Simple Machines Forum (http://www.simplemachines.org/)
        </p>
      </li>
      

  •  

     

    Third party hosting:

     

  • Bitbucket (https://bitbucket.org/)

  • GitHub (https://github.com/)

  • Google Code (https://code.google.com/)

  • SourceForge (http://sourceforge.net/)

  • CodePlex (http://www.codeplex.com/)

  •  

    Self hosting:

     

  • Trac (http://trac.edgewall.org/)

  • Redmine (http://www.redmine.org/)

  • The Bug Genie (http://www.thebuggenie.com/)

  • Indefero (http://www.indefero.net/)

  •  

    MediaWiki

     

  • Web aplikacija koja omogućava korisnicima dodavanje, promjenu i brisanje sadržaja pomoću web preglednika.

  • Poznavanje HTML i općenito programiranja nije potrebno.

  • Omogućuje revizioniranje promjena sadržaja.

  • Omogućuje dodavanje velikog broja raznih sadržaja i međusobnog linkanja.

  • Najviše se koristi za potrebe projektne dokumentacije i sabiranja znanja.

  •  

    Projekt koji koristi MediaWiki za svoje potrebe:

    http://en.wikipedia.org/

     

    Git | Version Control

     

  • Decentralizirano verzioniranje koda.

    • Verzioniranje omogućava “snimanje” stanja (revizioniranje) koda u nekoj točci u vremenu.

    • <li dir="ltr">
        <p dir="ltr">
          Decentralizirani sustav omogućava da svaki programer ima svoju bazu revizija na svom računalu.
        </p>
      </li>
      

  • Omogućava višekorisnički rad na kodu.

  • Mogućnost vraćanja stanja izvornog koda na bilo koju reviziju.

  • Mogućnost grananja (branching) koda.

  • Mogućnost obilježavanja (tagging) specifičnih točaka u vremenu.

  •  

    Projekt koji koristi Git za svoje potrebe:

    http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/

     

     

    Jenkins |Continuous Integration

  • Continuous Integration alat.

    • Sistemska integracija je proces spajanja različitih modula sustava i softvera fizički ili funkcionalno u jednu cjelinu.

    • <li dir="ltr">
        <p dir="ltr">
          Kontinuirana integracija smanjuje mogućnost pojave neslaganja i razlika između modula i povećava integritet cjelokupnog sustava.
        </p>
      </li>
      

  • Proces je zamišljen da se integracija vrši vrlo rano u razvoju i vrlo često.

  • Alat omogućava automatizirano izvršavanje proizvoljnih koraka prilikom svake integracije i generiranje raznih izvještaja.

  •  

    Projekt koji koristi Jenkins za svoje potrebe:

    https://ci.jenkins-ci.org/

     

     

    Gerrit | Code Review

     

     

  • Code review (pregled ili provjera koda) je proces u kojem je dio izvornog koda predan drugim stručnjacima na pregled s ciljem da se pronađu greške i loš dizajn prije nego li se taj dio koda integrira u sam projekt.

  • Pregled koda može dramatično pomoći u povećanju kvalitete samoga projekta.

  •  

    Projekt koji koristi Gerrit za svoje potrebe:

    https://android-review.googlesource.com

     

    Redmine |Overview

     

    Redmine |Activity

     

    Redmine | Roadmap

     

    Redmine | Issues

     

    Redmine | Issue details

    Projekt koji koristi Redmine za svoje potrebe: https://bugs.ruby-lang.org/

     

    Instalirani servisi na našj infrastrukturi

  • phpLDAPadmin
    https://www.opensource-osijek.org/phpldapadmin

  • phpMyAdmin
    https://www.opensource-osijek.org/phpmyadmin

  • WordPress
    https://www.opensource-osijek.org/wordpress

  • Redmine
    https://www.opensource-osijek.org/redmine

  • Jenkins
    https://www.opensource-osijek.org/jenkins

    • Gerrit

    https://www.opensource-osijek.org/gerrit

     

     

    Poznati citat Linus Torvaldsa

    “Hello everybody out there using minix –

     

    I’m doing a (free) operating system (just a hobby, won’t be big and

    professional like gnu) for 386(486) AT clones.  This has been brewing

    since april, and is starting to get ready.”

    26.08.1991.

     

     

    Reference

  • Producing Open Source Software: How to Run a Successful Free Software Project, Karl Fogel, 2010., http://producingoss.com/

  • Linus Torvalds Famous Qoute, https://groups.google.com/forum/?hl=en&fromgroups=#!topic/comp.os.minix/dlNtH7RRrGA%5B1-25-false%5D

  • The Cathedral and the Bazaar, Eric Steven Raymond, 2000, http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/

  •  

     

     

     

    Snimku predavanja možete pogledati na :

    http://www.youtube.com/watch?v=mq7NUbfq4cs

     

     

     

    Hrvoje Horvat avatar
    Hrvoje Horvat
    Hrvoje Horvat mrežni je i sistem inženjer s dugogodišnjim (18+ g.) iskustvom u razvoju, testiranju i implementaciji, od najmanjih do enterprise kategorije IT sustava. Njegova područja rada su od mrežnih protokola do mrežnih servisa, preko standardne mrežne opreme do specijaliziranih komponenti i sustava, preko raznih mrežnih elemenata i sustava za mrežnu pohranu i dijeljenje podataka te platformi za Virtualizaciju, do protokola i sustava za redundanciju te sustava visoke dostupnosti (HA).