Informatica
Dezvoltarea sistemelor soft: principii si activitatiDEZVOLTAREA SISTEMELOR SOFT: PRINCIPII SI ACTIVITATI Cuprins: 1. Procese soft Dezvoltarea sistemelor soft: principii si activitati 3. Modelarea proceselor si sistemelor soft 4. Limbajul unificat de modelare (UML) 5. Colectarea, analiza si specificarea cerintelor 6. Modelarea in analiza 7. Proiectarea: concepte si modele 8. Proiectarea arhitecturii si claselor: principii 9. Proiectarea arhitecturii, datelor si prelucrarilor 10. Proiectarea componentelor 11. Proiectarea interfetei cu utilizatorul 1 Testarea softului: etape si metode 13. Instalarea si intretinerea 14. Planificarea proiectelor soft 1. Problem solving si dezvoltarea de soft: asemanari si deosebiri 1.1. Problem solving 1. Problem solving in contextul ingineriei soft 1.3. Principii generale ale dezvoltarii de soft Comunicarea: principii si sarcini generice 1. Principiile comunicarii Sarcini generice ale comunicarii 3. Planificarea: principii si sarcini generice 3.1. Principiile planificarii 3. Proiect realist: intrebari 3.3. Sarcini generice ale planificarii 4. Modelarea in analiza: principii si sarcini generice 4.1. Principii de modelare in analiza 4. Sarcini generice ale analizei 5. Modelarea in proiectare: principii si sarcini generice 5.1. Principii de modelare in proiectare 5. Principiile modelarii agile 5.3. Sarcinile generice ale proiectarii 6. Constructia: principii si sarcini generice 6.1. Principii si concepte de codificare 6. Sarcinile generice ale codificarii 6.3. Testarea: terminologie 6.4. Testarea: fundamente 6.5. Principiile testarii 6.6. Sarcini generice ale testarii 7. Exploatarea: principii si sarcini generice 7.1. Principiile distribuirii/instalarii 7. Sarcini generice ale distribuirii/instalarii 1. Asemanari si deosebiri intre problem solving si dezvoltarea de soft 1.1. Problem solving (Polya, G., How to Solve It, Princeton University Press, 1945) Pasii rezolvarii problemelor 1. Intelegerea problemei (comunicare si analiza) Gandirea unei solutii (modelare si proiectare) 3. Rezolvarea efectiva (generare de cod) 4. Examinarea acuratetii rezultatului, proba (testarea si asigurarea calitatii), punerea in opera 1. Problem solving in contextul ingineriei soft 1. Intelegerea problemei (comunicare si analiza)
Gandirea unei solutii (modelare si proiectare)
3. Rezolvarea efectiva (generare de cod)
4. Examinarea acuratetii rezultatului, proba (testarea si asigurarea calitatii), folosirea
1.3. Principii generale ale dezvoltarii de soft (Pressman) The Reason It All Exists: Motivul existentei: sa fie de folos utilizatorilor KISS (Keep It Simple, Stupid!): Proiectul trebuie sa fie cat mai simplu posibil, dar nu simplist Maintain the Vision: Viziunea clara este esentiala pentru succesul unui proiect soft What You Produce, Others Will Consume: La specificare, proiectare si implementare trebuie sa se tina intotdeauna cont ca altcineva (utilizatorii) trebuie sa inteleaga si sa foloseasca sistemul soft Be Open to the Future: sistemul trebuie sa fie pregatit sa incorporeze schimbari, anticipate sau nu Plan Ahead for Reuse: se reduce costul si se creste valoarea atat pentru componentele reutilizabile, cat si pentru sistemele in care acestea sunt incorporate. Think! Gandeste inainte de a actiona. Comunicarea: principii si sarcini generice 1. Principiile comunicarii 1. Invata sa asculti pe altii Pregateste-te inainte de comunicarea cu ceilalti (intelegerea domeniului, problemei, vocabularului, agenda intalnirii) 3. Comunicare are nevoie de sprijin si coordonare 4. Comunicarea directa este cea mai buna 5. Ia notite si documenteaza deciziile luate 6. Colaborarea si consensul apar cand cunostintele colective ale membrilor echipei se combina pentru a descrie produsul sau functiile si caracteristicile sistemului 7. Pastreaza obiectul discutiilor, fara divagatii inutile 8. Daca este ceva neclar, deseneaza o imagine 9. (a) La acord cu partenerii, continua cu altceva (b) La dezacord cu partenerii, continua cu altceva (c) Daca o caracteristica sau functie nu este clara pe moment, continua cu altceva 10. Negocierea nu este nici concurs, nici joc. Cel mai bine este atunci cand ambele parti castiga. Sarcini generice ale comunicarii 1. Identificarea clientului principal si a tuturor celor interesati (stakeholders) Intalnirea cu clientul principal pentru a raspunde la intrebari 'generale' ce definesc
3. Scrierea unui document de o pagina cu enuntul domeniului proiectului, susceptibil la revizuire 4. Revizuirea enuntului cu toti cei interesati si modificarea lui dupa necesitati 5. Colaborarea cu clientul/utilizatorii pentru a defini
6. Elaborarea unei descrieri scrise (o multime de liste) a scenariilor, iesirilor/intrarilor, caracteristicilor/functiilor si riscurilor 7. Rafinarea scenariilor, iesirilor/intrarilor, caracteristicilor/functiilor si riscurilor, cu ajutorul clientului 8. Atribuirea de prioritati (stabilite de client) la fiecare scenariu utilizator, caracteristica, functie si comportament
9. Revizuirea tuturor informatiilor colectate in timpul activitatii de comunicare cu clientul si ceilalti interesati si modificarea lor dupa nevoie 10. Pregatirea pentru activitatea de planificare 3.1. Principiile planificarii 1. Trebuie inteles domeniului proiectului Clientul trebuie implicat in planificare 3. Planificarea este o activitate iterativa 4. Estimarile se efectueaza numai pe baza a ceea ce se cunoaste 5. La definirea planului trebuie luate in considerare riscurile 6. Planificarea trebuie sa dea dovada de realism 7. Granularitatea planului se ajusteaza pe masura ce planificarea avanseaza Granularitate: caracterizeaza nivelul de detaliere Plan cu granularitate fina (fine granularity plan): ofera o detaliere semnificativa a sarcinilor de lucru pe o perioada de timp mica (incremente mici); apar frecvent actiuni de urmarire si control Plan cu granularitate mare (coarse granularity plan): ofera sarcini de lucru mai generale planificate pe perioade mai mari de timp Pe masura ce timpul proiectului este mai departat de data curenta, nivelul de granularitate creste de la fina la mare (sarcinile de lucru curente sunt prezentate detaliat, pe cand cele mai indepartate sunt prezentate mai succint) 8. Trebuie sa se defineasca modul in care se intentioneaza sa se asigure calitatea softului produs 9. Trebuie sa se defineasca modul in care se intentioneaza sa se gestioneze schimbarea 10. Realizarea planului trebuie urmarita si trebuie efectuate ajustarile necesare 3. Proiect realist: intrebari 1. De ce se realizeaza sistemul? motivele fiecarui stakeholder. se justifica eforturile de personal, timp si bani? Ce se va realiza? (functionalitatea de incorporat, si, prin deducere, sarcinile necesare pentru finalizarea incorporarii functionalitatii) 3. Cand se va termina? (workflow, timeline pentru sarcinile esentiale si identificarea bornelor cerute de client) 4. Cine raspunde de o anumita functie (definirea rolului si responsabilitatilor fiecarui membru al echipei de dezvoltare) 5. Unde sunt localizati in organizatie (nu toate rolurile si responsabilitatile apartin echipei de dezvoltare. Clientii, utilizatorii, ceilalti stakeholders au si ei responsabilitati) 6. Cum se vor indeplini sarcinile din punct de vedere tehnic si managerial (dupa stabilirea product scope, trebuie definita o strategie de management si tehnica pentru proiect) 7. Care este necesarul din fiecare resursa (se realizeaza estimari pe baza raspunsurilor la intrebarile anterioare). 3.3. Sarcini generice ale planificarii 1. Reevaluarea domeniului proiectului (project scope) Evaluarea riscurilor 3. Dezvoltarea si/sau rafinarea scenariilor utilizator (user scenarios) 4. Extragerea functiilor si caracteristicilor din scenarii 5. Definirea functiilor si caracteristicilor tehnice care formeaza infrastructura soft 6. Gruparea functiilor si caracteristicilor (scenariilor) dupa prioritatile clientilor 7. Crearea unui plan de proiect de granularitate mare (de ansamblu)
8. Crearea unui plan de proiect de granularitate mica (de detaliu) pentru iteratia curenta
9. Urmarirea permanenta a progreselor realizate
4. Modelarea in analiza: principii si sarcini generice 4.1. Principii de modelare in analiza 1. Trebuie reprezentat si inteles domeniul informatiei pentru problema data Trebuie definite functiile pe care trebuie sa le realizeze sistemul soft 3. Trebuie reprezentat comportamentul sistemului soft (ca reactie la evenimente externe) 4. Trebuie stratificate ierarhic modelele care reprezinta informatia, functiile si comportamentul 5. Sarcina analizei este sa permita trecerea de la informatia esentiala la detaliile de implementare 4. Sarcini generice ale analizei 1. Revizuirea cerintelor problemei (business requirements), caracteristicilor/nevoilor utilizatorilor finali, iesirilor tangibile, constrangerilor specifice si a altor cerinte tehnice care au fost identificate pe parcursul activitatilor de comunicare si planificare Extinderea si detalierea scenariilor utilizator (user scenarios)
3. Modelarea domeniului informatiei
4. Modelarea functionalitatii
5. Modelarea comportamentului
6. Analiza si modelarea interfetei cu utilizatorul
7. Revizuirea tuturor modelelor dpdv al completitudinii, consistentei si omisiunilor 5. Modelarea in proiectare: principii si sarcini generice 5.1. Principii de modelare in proiectare 1. Proiectul trebuie sa se regaseasca in modelul de analiza Proiectul incepe cu definirea arhitecturii sistemului soft 3. Proiectarea datelor este la fel de importanta ca si proiectarea functiilor 4. Interfetele (interne si externe) trebuie proiectate cu multa atentie 5. Proiectul interfetei cu utilizatorul trebuie sa corespunda nevoilor utilizatorilor finali 6. Fiecare componenta soft proiectata trebuie sa fie unitara, sa aiba coeziune 7. Componentele soft trebuie sa fie cuplate slab intre ele si cu mediul extern 8. Reprezentarile de proiectare (modelele) trebuie sa fie usor de inteles 9. Proiectul se dezvolta iterativ; la fiecare iteratie, proiectul trebuie sa fie cat mai simplu, dar nu simplist 5. Principiile modelarii agile www.agilemodeling.com 1. Scopul principal al echipei de dezvoltare este sa produca sisteme soft, nu modele NU se creeaza mai multe modele decat este nevoie 3. Trebuie produs cel mai simplu model care descrie problema sau softul 4. Modelele trebuie construite astfel incat sa se poata modifica usor 5. Fiecare model creat trebuie sa aiba un scop explicit (si precizat) 6. Modelele dezvoltate trebuie adaptate la sistemul existent 7. Modelele construite trebuie sa fie utile, nu perfecte (arta cu tendinta, nu arta pentru arta) 8. Sintaxa modelului nu este esentiala. Important este sa se inteleaga continutul; reprezentarea este pe planul doi. 9. Daca intuitia va spune ca un model nu este corect (potrivit), chiar daca el pare in regula pe hartie, atunci probabil ca exista cu adevarat motive de ingrijorare 10. Reactia utilizatorilor trebuie obtinuta cat mai repede posibil. 5.3. Sarcini generice ale proiectarii 1. Selectarea unui stil (sablon) arhitectural adecvat pentru sistemul soft, plecand de la modelul de analiza Descompunerea modelului de analiza in subsisteme si incadrarea acestora in arhitectura propusa
3. Proiectarea interfetei cu utilizatorul
4. Proiectarea componentelor soft: Pentru fiecare componenta se realizeaza
5. Realizarea unui model de instalare/exploatare (deployment) 6. Constructia: principii si sarcini generice 6.1. Principii si concepte de codificare inainte de scrierea primei linii de cod, programatorul trebuie 1. sa inteleaga problema de rezolvat sa inteleaga principiile si conceptele de baza ale proiectului 3. sa cunoasca limbajul de programare in care se face implementarea si mediul de exploatare 4. sa aleaga un mediu de programare adecvat, cu instrumente care sa usureze codificarea si testarea 5. sa creeze un set de teste unitare care sa se aplice imediat ce s-a incheiat codificarea componentei la scrierea codului, programatorul trebuie 1. sa descrie algoritmii folosind constructii structurate sa aleaga structurile de date adecvate proiectului 3. sa inteleaga arhitectura sistemului soft si sa creeze interfete consistente cu aceasta 4. sa foloseasca conditii cat mai simple 5. sa creeze cicluri imbricate usor de testat 6. sa foloseasca identificatori sugestivi si sa respecte standardele de codificare adaptate de echipa 7. sa documenteze codul scris 8. sa aranjeze sugestiv codul in pagina (indentare, linii de spatiu) in scopul cresterii gradului de intelegere dupa terminarea primului pas de codificare, programatorul trebuie 1. sa inspecteze codul scris sa efectueze teste unitare si sa corecteze erorile descoperite 3. sa restructureze codul 6. Sarcini generice pentru codificare 1. Construirea infrastructurii arhitecturale
Pentru fiecare componenta soft Construirea componentei
3. Testarea unitara: repeta pasii de mai jos pana cand nu mai exista erori
4. Integrarea componentei in infrastructura arhitecturala 6.3. Testarea: terminologie (Pressman, www.softwaredevelopment.ca/bugs.shtml)
6.4. Testarea: obiective si fundamente
6.5. Principiile testarii 1. Toate testele trebuie sa se regaseasca in (sa provina din) cerintele clientilor Testele trebuie planificate cu mult inainte de inceperea testarii 3. Principiul Pareto este aplicabil la testarea softului (principiul Pareto este principiul 80-20: 80% din toate erorile descoperite la testare se refera la 20% dintre componentele sistemului soft supus testarii. 4. Testarea trebuie sa progreseze gradat: se incepe cu testarea unitara, se continua cu testarea de integrare (se adauga componente la scheletul de arhitectura) si se incheie cu testarea de acceptare (este construit intreg sistemul) 5. Testarea exhaustiva nu este posibila 6.6. Sarcini generice ale testarii 1. Proiectarea testelor unitare pentru fiecare componenta soft. Pentru fiecare test unitar proiectat
Se repeta pana cand nu mai sunt erori
Dezvoltarea unei strategii de integrare
3. Dezvoltarea unei strategii de validare
Repeta pana cand nu mai sunt erori 4. Executia testelor de integrare si validare
5. Executia testelor de sistem
6. Coordonarea testelor de acceptare cu clientul 7. Exploatarea: principii si sarcini generice 7.1. Principiile distribuirii/instalarii 1. Trebuie acordata mare atentie asteptarilor/sperantelor clientului fata de sistemul soft Trebuie asamblat si testat intregul pachet de livrare 3. Inainte de livrarea softului la client trebuie stabilit modul in care se acorda asistenta tehnica 4. Utilizatorilor trebuie sa li se furnizeze materiale de instruire 5. Nu trebuie livrat clientilor soft cu erori 7. Sarcini generice ale distribuirii/instalarii 1. Crearea suporturilor fizice cu pachetele de livrare
Stabilirea persoanei sau grupului de asistenta tehnica pentru utilizatori
3. Stabilirea mecanismelor de gestiune a reactiei utilizatorilor 4. Livrarea suporturilor fizice la clienti 5. Pornirea si executia procedurilor de asistenta tehnica
6. Colectarea reactiei utilizatorilor
|