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