Ingineria Programarii

Regulament laborator

1. Prezenta este obligatorie la toate laboratoarele. Recuperarile se pot face cu alte grupe numai cu acceptul indrumatorului de laborator.

2. Fiecare absenta nemotivata la un laborator se traduce prin 0,5 puncte in minus din nota finala.

3. Fiecare student trebuie sa pregateasca cate 3 referate din lista de subiecte de mai jos, cate un referat din fiecare grupa (procese, testare & QA, DP). Referatele vor fi de aproximativ 4 pagini, ele trebuie sa trateze o tema punctuala. Lipsa unui referat se traduce printr-un punct in minus din nota finala.

4. Nota finala se obtine ca medie aritmetica dintre nota de la laborator, nota pe cele 3 referate si nota de la examen.

5. Pentru prezentarea la examen este necesara promovarea atat a laboratorului, cat si a referatelor, cu o nota de minim 5.

6. Continutul referatelor va fi verificat la examen, pentru a determina daca este scris de fiecare student in parte. Daca o persoana nu cunoaste continutul referatelor facute de el se considera ca nu a promovat la nota pentru referate, deci nu are dreptul de a participa la examen.

7. Cele 3 referate vor fi predate in saptamanile a 4-a, a 8-a si a 12-a din anul universitar curent. Nota pe cele 3 referate se va realiza ca media aritmetica a notelor obtinute la fiecare referat in parte.

8. In cadrul fiecarui laborator veti primi o nota. La final se va face o medie a acestor note si veti obtine nota pe activitate - nota la laborator se calculeaza ca media dintre nota pe activitate si nota de la testul final care va fi anuntat cu cel putin o saptamana inainte de a fi programat.

9. Pe parcursul laboratorului vom folosi limbajul Java. Este insa admisa folosirea, in rezolvarea temelor, a limbajului C++, de catre cine doreste.

10. Toate temele, fie rezolvate la laborator, fie rezolvata acasa, vor fi trimise prin email indrumatorului de laborator (la email: ciprianpungila@yahoo.com), pana cel tarziu la laboratorul urmator (maxim o saptamana). Toate temele vor fi verificate! Plagiatul duce automat la anularea laboratoarelor pentru toti studentii implicati si notarea lor cu 1.

11. Fiecare tema se noteaza cu note de la 1-10 daca este rezolvata la laborator. Daca tema este rezolvata acasa, nota maxima care se poate obtine este 8 (cu exceptia laboratorului 1, unde nota maxima este 9), iar daca se rezolva si punctele bonus se poate obtine si nota 10.


Subiecte pentru referate:

1. Antipatterns
2. Refactoring
3. Patterns GRASP
4. GUI Design Patterns
5. Database Patterns
6. Concurrency Patterns

7. CMM (Capability Maturity Model)
8. PSP (Personal Software Process)
9. TSP (Team Software Process)
10. Extreme Programming
11. Procese de dezvoltare agile
12. RUP (Rational Unified Process)
13. Project Management
14. Etica profesiei de programator

15. Quality Assurance
16. Metrici pentru aprecierea (calitatii) codului
17. Testing
18. Unit Testing
19. Functional Testing
20. Automatic Testing


Laborator 1

Implementati in limbajul Java un program care simuleaza gestiunea unui magazin electronic. Managerul unui departament informatic din cadrul unei companii doreste sa pastreze informatii despre clientii companiei folosind un program scris de voi. Veti implementa o clasa ManageCustomers care ofera utilizatorului posibilitatea de a adauga, sterge sau afisa lista de clienti din baza de date, prin intermediul unui meniu.

Un client este reprezentat de o clasa Customer care contine informatii despre numele clientului, adresa de email a acestuia si numarul cartii de credit a acestuia, deci ManageCustomers va fi o colectie de obiecte de tip Customer, caracterizate prin elementele enumerate mai sus. Veti obtine comportamentul clasei ManageCustomers aplicand delegarea asupra unei clase generale Vector, List sau HashTable.

+ extra 1p: Incercati sa realizati o functie pentru validarea adresei de email a clientului. O adresa de email este de forma litera_sau_cifra@numedomeniu[.extensie] (ex. de adresa de email valida: johnfoe2007@myfoe.com.tw; ex. de adresa de email invalida: john-foe@myfoe.com).

+ extra 2p: Incercati sa realizati o functie care asigura o criptare minimala a numarului cartii de credit a clientului, folosind un algoritm cunoscut de voi, impreuna cu o functie pentru decriptare.