Dobrica Pavlinušić's random unstructured stuff
FOI2006: Revision 1
^ Development metodologies in Web 2.0 timeframe

^^ Fakultetska znanja

* difference between bottom-up composition and top-down decomposition
* potreba za učenjem dovoljno teškog predmeta na fakultetima (LISP-olikog, FP) da potakne razmišljanje i filtrira studente
** nekima više paše znanstveni rad i teoretska čistoća a drugima praktični problemi
* ISO 9001 certifikacija ili kako system architect postaje poslovođa
* prednost studentata FOI-ja je razumijevanje sustava end-to-end
** papiri su dio IS-a
** komunikologija, organizacija, ekonomija, marketing

^^ Revival of 4GL-like tools for Web 2.0 world

* Service Oriented Architecture (SOA) - kockice od kojih se grade rješenja
** biblioteke (.so, .dll)
** komponente, moduli (Java .jar, CPAN za perl)
** servisi (SOAP, XML/RPC, REST)
* Not Invented Here (NIH) simptom polako umire (kao posjedica uspjeha kolaborativnog Web-a)
* napokon RAD (Rapid Application Development) alati za Web
** projekti od nekoliko dana, a ne mjeseci
** CRUD (Create/Read/Update/Delete)
** ORM (Object-Relational-Mappers)
** RDBMS vs Object Storage (XML?) vs full-text search

^^^ Frameworks

* Ruby on Rails
* Maypole, Catalyst, Jifty
* Strix?

^^^ Model View Controller (MVC) paradigma

^^^ Zašto su skriptni jezici različiti?

Weakly typed, nema kompajliranja, brži razvoj

* JavaScript (u browseru)
* php (server, nema podjele logika/prikaz, sličan asp-u)
* perl (server, cgi, više različitih MVC frameworka)
* python (izgled striktno zadan, odličan end-to-end jezik [client i server], jako dobar za početnike)
* ruby (potpuno OO, sličan JavaScript-u)

^^ FLOSS

Najveći izvor kvalitetnog gotovog koda - don't re-invent the weel

* Kultura
** Eric S. Raymond: scratch own itch
** Linus Torvalds: given enough eyeballs all bugs will be swallowed
* open source: katedral, bazar
* free software, GPL
* licence: BSD/GPL/OSI/dual-licensing/propriatory

^^^ Code re-use dileme

Način pisanja _upstream_ koda uvelike određuje njegovu jednostavnost integracije

* proceduralno
* Object Oriented
* Multiple Inheritance
* Mix-in
* closures

Koliko su aktivni _upstream_ developeri? Kako prihvaćaju promjene?

Raspoloživi kod često određuje platformu implementacije u FLOSS svijetu!

Svaki programer treba znati više alata da bi mogao odabrati najbolji:

* automatizacija - bash
* kernel modul - C
* web site - skriptni jezik
* GUI na klijentu - python, C#

Jezik mora biti dovoljno fleksibilan da može pratiti promjenjive zahtjeve.

^^ Principi za uspješan Web 2.0 projekt

Kako je Internet promjenio pogled na metodologije razvoja informacijskih sustava?

^^^ Kolaboracija korištenjem Interneta kao komunikacijskog medija

* atribucija (minimalni uvijet, motivacija)
* mailing liste
* wiki
* bug tracking (RT, Peregrine, SourceForge, trac)
* SCM (CVS, Subversion, git)

^^^ Diljenjenje znanja

* preduvijet za uspješan projekt
* physical proxymity (15m rule)
* follow the sun - distribuirani development timovi
* projektna organizacija
* product manager, project manager - razlike u pogledima i funkcijama na projektu

^^^ Dobra dokumentacija

* osnova za dobru komunikaciju i dijeljenje znanja
* razlika između programerske i korisničke dokumentacije

^^^ hackable/tweakable (mogućnost modifikacije)

* Proizlazi is osnovne motivacije _scratch own itch_
* poboljšava mogućnost, provećava broja contributora (povremenih) i developera

^^^ Testiranje

0 dokumentacija
0 testovi
0 pisanje koda

-> rezultat bolji API

^^ Buzzwords

* Web 2.0, beta (forever)
* REST, AJAX

^^ Pojednostavljenje produkcije i održavanja

IS-ovi se koriste mnogo duže nego što je planirano (Y2K, Cobol).

* KISS - anti NIH
* profit
* TCO

^ WWW - izvor informacija

* blogs
* SIG sites (www.perlmonks.org)
* www.itconversation.com
* podcasts

^ XP kolegij na FOI-ju

* Unit testing
* peer programming
* 20-30% programera
* 24.4.2006. 16-18 unutar kolegija programiranje