miercuri, noiembrie 07, 2007

Curs Java

Un curs introductiv de Java (fundamente + Web) prezentat timp de 2 zile celor de la Teamnet acum ceva mai mult de un an. Poate fi util pentru cei ce vor o introducere in limbaj si in tehnologii Web. Am uploadat PPT-urile folosite in prezentare. Am dat intamplator de ele pe HDD si am vrut sa testez cu ocazia asta slideshare.net. Chiar functioneaza bine (initial mi-a stricat putin PPT-urile la upload dar s-a rezolvat la urmatoarele incercari).





De asemenea proiectele demostrative continand exemple folosite in prezentari pot fi downlodate de aici (nu am mai sters binarele - clase si librarii). Sunt proiecte de IntelliJ IDEA (asa le-am facut atunci).

marți, noiembrie 06, 2007

UML Distilled

Zilele trecute am rasfoit din nou UML Distilled. Am surprins cateva idei pe care le prezint in continuare. Sunt legate mai putin de diagrame, mai mult de proces de dezvoltare si arhitecturi.

Pachete:
  • fisierele de configurare sparg dependintele statice de compilare intre pachete (aplicarea unui aspect, injectarea unei dependente)
  • dependentele induc modificari in mai multe locuri (defavorizeaza lucrul in izolare)
  • in Java principalul intrument de decompozitie este pachetul (a se vedea DOJO in JS, si pachetele de proceduri stocate si functii din Oracle)
  • dependentele intre pachete se preteaza a fi urmarite prin intermediul uneltelor (JDepend spre exemplu)
  • despre pattern-ul Facades (toate clasele dintr-un pachet sunt facute private si se creaza alte clase publice al caror rol este doar acele de a expune spre exterior servicii)

Metode de a obtine asincronism:
  • prin crearea unui nou thread - in mod normal threadul sursa si cel nou creat vor continua sa ruleze impreuna (vor lua coanta de microprocesor) (vor lua coanta de microprocesor)
  • comunicarea/trimiterea unui mesaj cu/unui thread (proces) care deja exista - cazul cozilor de mesaje care au asociati listeneri care pornesc in momentul generarii unui eveniment = primire de mesaj

Favorizarea compozitiei in defavoarea mostenirii:
  • in cazul unei mosteniri (la nivel de implementare sau specificatie) trebuie verificat ca generalizarea conceptuala se aplica altfel generalizarea nu este stabila la schimbari (adica a nu se folosi mostenirea pentru aspecte tehnologice: gen injectare de servicii de middleware)

Faza de elaborare:
  • aproximativ 1/2 din timp
  • poti porni planificarea dupa
  • riscuri (cerinte, tehnologii, skill-uri, politici)
  • se fac specificatii functionale (SRS)
  • se fac specificatiile tehnice (TSS)
  • se determina domain model (in paralel: model de date)
  • se face prototip vizual