Laborator 3

Versionarea aplicatiilor software

Unelte si tehnologii pentru managementul proiectelor:

  • Versionarea aplicatiilor: SVN, Git, TortoiseSVN, Tortoise GIT
  • Standarde de codare
  • Unelte pentru crearea prezentarilor

Concepte:

  • Pert/CPM

Documentatie laborator

Versionarea aplicatiilor

Sistemele pentru contolul versiunii (Version Control Systems - VCS - sau Source Code Management - SCM) sunt aplicatii care permit lucrul colaborativ pe diverse fisiere, in special fisiere cod sursa. Sistemele pentru controlul versiunii sunt practic obligatorii in cadrul unui proiect cu dezvoltatori multipli. Astfel de sisteme retin istoricul modificarilor efectuate de fiecare dezvoltator si folosesc comenzi specializate care sa faciliteze transmiterea acestor modificari intre dezvoltatori.

Din punct de vedere al modului de implementare VCS pot fi clasificate:

  • Sisteme centralizate
    • CVS
    • SVN
  • Sisteme descentralizate
    • Git

In cadrul laboratoruli de MP vom utiliza Subversion care este un proiect Apache de versionare a aplicatiilor software de tip centralizat. Acesta este integrat cu Redmine, astfel incat din cadrul proiectului veti putea vizualiza fisierele sursa asociate proiectului stocat pe serverul Subversion.

Presupunand ca avem instalat un server SVN, pasii necesari pentru configurarea unui “repository” Subversion in care sa stocam un proiect sunt urmatorii:

1. Creare repository

Este creat si configurat directorul in care toate fisierele asociate proiectului, si care sunt sub controlul Subversion, vor fi stocate.

$ svnadmin create /path/to/repository 

2. Configurare repository

Fisierul principal de configurare este localizat in /path/to/repository/conf/svnserce.conf. In cadrul acestui fisier sunt setate mecansimele de autentificare si autorizare asociate proiectului. Variabilele anon-access si auth-access pot fi confgurate cu valorile none, read si write. Un exemplu de configurare posibila este urmatorul:

[general]
anon-access = read
auth-access = write
password-db = passwd

4. Configurarea utilizatorilor ce vor avea acces la repository.

Fisierul de configurare a utilizatorilor passwd se afla in acelasi director cu fisierul /path/to/repository/conf/svnserce.conf. Un exemplu de fisier de configurare a utilizatorilor este acesta:

[users]
developer1 = pass1
developer2 = pass2

Pentru ca schimbarile sa aiba efect serverul Subversion va trebui restartat.

5. Pasul final este cel de a importa in repository directorul proiectului.

$ svn import --username=developer1 --passowrd=pass1 /path/to/project/ file://localhost/path/to/repository/ -m "first imp
ort"

Detalii cu privire la toate comenzile Subversion gasiti aici.

Odata creat repository-ul si importat proiectul, clientii vor putea accesa proiectul si vor pune moddifica si adauga fisiere in cadrul acestuia, iar Subversion va gestiona acest proces.

Operatiile principale pe care un client le poate face sunt urmatoarele:

  • update - actualizarea copiei locale cu informațiile din repository; este, practic, vorba de sincronizarea informațiilor din repository cu cele din copia locală; ATENȚIE: acest pas trebuie obligatoriu realizat înainte de orice alte operații;
  • create - crearea unor surse noi; aceasta nu este o operație specifică Subversion; înseamnă interacțiunea cu sistemul de fișiere;
  • edit - editarea unui fișier (creat nou sau existent);
  • lock (pas opțional) - obținerea unui lock pe un anumit fișier pentru a împiedica editarea acestuia de un alt dezvoltator;
  • add - adăugarea unor noi surse pentru procesul de commit; această operație înseamnă doar marcarea unor fișiere pentru a fi comise în cadrul operației commit; orice modificare nu va fi comisă până când nu este adăugată în această listă de fișiere marcate;
  • commit - comiterea modificărilor locale (marcate folosind add) în repository pentru a fi utilizate de ceilalți dezvoltatori

Un tutorial care descrie comenzile de baza gasiti aici.

Standarde de codare

Indiferent de limbajul de programare folosit, pentru facilitarea parcurgerii, intelegerii si imbunatatirii codului se recomanda folosirea unui set de reguli, incadrate de obicei, intr-un document (de obicei fisier text) de tip Coding Style sau Coding Standards. Exemple de astfel de documente sunt:

  • Linux Coding Style
  • GNU Coding Standards
  • Kernel Normal Form
  • PEP 8 – Style Guide for Python Code
  • pear Coding Standards
  • Code Conventions for the Java Programming Language

In general, conventiile de codare difera dar urmaresc aspecte comune:

  • indentarea codului
  • cod lizibil prin folosirea de spatii si linii libere
  • cod comentat si comentarii relevante
  • nume relevante pentru variabile
  • functii cu dimensiune umana (nu kilometrice)
  • consecventa stilului de codare

Unelte pentru crearea prezentarilor

Exista diferse produse specializate pentru crearea de prezentari. Probil una dintre cele mai utilizare aplicatii in acest scop este Microsoft PowerPoint ce face parte din suita Office.

Latex Beamer este un alt tool de creare a prezentarilor. Beamer este o componenta Latex.

Cateva reguli pentru realizarea prezentarilor gasiti aici.

Planificare utilizand Pert/CPM

Diagrama PERT(eng- Program Evaluation and Review Technique) este un instrument de management al proiectului, care a fost elaborat si folosit pentru prima oara de U.S. Navy in anii ’50, pentru a coordona programul submarinului atomic Polaris.O metodologie de management a proiectului similara, respectiv Metoda Drumului Critic (CPM-eng-« Critical Path Method), care a fost elaborata cam in aceeasi perioada, pentru sectorul privat, a devenit sinonima cu PERT. Aceasta este cauza pentru care sunt intalnite variatii de denumiri pentru acelasi instrument: PERT, CPM sau PERT\CPM.

Aceste tipuri de diagrame se folosesc pentru planificarea proiectelor complexe in care activitatile trebuie sa se realizeze intr-o succesiune logica, si acestea trebuie sa se incadreze in termene bine definite. Folosind aceste diagrame se poate calcula drumul critic in proiect, acesta fiind format din insiruirea activitatilor a caror intarziere (activitati critice) duce la intarzierea intregului program.

Diagrama PERT contine informatii despre sarcinile dintr-un proiect, perioadele de timp pe care se intind si dependentele dintre ele. Forma grafica este o retea de noduri conectate de linii directionale.

Documentatie laborator PERT

Exercitii

Exercitii PERT

Sa doreste realizarea unui sistem modern de informarea si rezervare de bilete de tren care sa ofere posibilitatea de accesare a functionalitatilor acestuia prin intermediul telefonelor mobile. Sa se identifice activitatile necesare pentru a implementa un astfel de sistem. Sa se estimeze duratele de executie ale activitatilor si sa se calculeze drumul critic in cadrul proiectului utilizand diagrama PERT.

Exercitii Subversion

Se va descarca ultima varianta a mediului de dezvoltare Eclipse de pe pagina oficiala. Se va cauta si se va instala in cadrul instantei Eclipse descarcate plug-in-ul ce implementeaza functionalitatile Subversion.

Se vor testa operatiile de check-out, add, commit, update. In acest scop se va utiliza serverul Subversion din laborator. Detalii cu privire la proiectul pe care se va lucra vor fi oferite in timpul orelor de laborator.

Exercitii standarde de codare

Studiati documentatia standardului de codare java.

Sa se modifice codul de mai jos pentru a respecta standardele de codare java.

//bad code example
public class senzor {
static final int max = 10;
//valuare curent senzor
int x;
senzor(int v){x=v;}
int preiavaloaresenzor(){return x;}
void seteazav(int a){x =a;}
void a()
	{System.out.println("Valoare curenta senzor="+x);
	}
public static void main(String[] args) 
{
senzor A = new senzor(3);
A.a();
A.seteazav(9);
}
}

Exercitii prezentare

Realizati o prezentare PowerPoint in care sa descrieti proiectul de licenta. Se va urmari atingerea urmatoarelor puncte in cadrul prezentarii: obiectivele lucrarii de licenta,concepte si notiuni teoretice, unelte si tehnologii folosite pentru implementare, arhitectura software/hardware, stadiul actual.

Proiect

In functie de limbajul de programare folosit pentru elaborarea lucrarii de licenta, sa se aleaga un standard de codare potrivit.

Sa se realizeze o estimare a duratei de executie a proiectului folosind diagrame Pert/CPM.