Definirea unui proces de dezvoltare software in cadrulunei …ace.catalinamancas.ro/ACE/RUP.pdf ·...
Transcript of Definirea unui proces de dezvoltare software in cadrulunei …ace.catalinamancas.ro/ACE/RUP.pdf ·...
Managementul proiectelorManagementul proiectelor
Definirea unui proces de dezvoltare
Curs, anul II Calculatoare
Definirea unui proces de dezvoltare software in cadrul unei organizaţii
SumarMetodologii generice si procese propriiMetodologia HEI RUPn Iniţiere n Elaborare n Elaborare n Construcţien TranziţieEvoluţia proceselor software Ghid simplificat de rafinare a unui proces software
Modele de procese genericeSDP în cascada (“waterfall”)Transformări formale ale specificaţiilor Dezvoltare evolutiva (“evolutionary developm.”)Integrare din componente (reutilizabile)Dezvoltarea iterativa şi incrementalaDezvoltarea iterativa şi incrementalan rezolva unele constrângeri temporale n răspunde nevoilor de adaptare/schimbare în
proiectDezvoltarea condusa de cazurile de utilizare(“use-case driven development”) n asigura consistenta cu cerinţele şi rolurile
utilizator
O companie ce îşi organizează activitatea pe proiecte după o metodologie are 2 posibilităţi: n există metodologii comerciale pe care le poate
achiziţiona şi utiliza intern
Metodologii (procese) proprii
n îşi poate crea propria metodologie, prin adaptareaunuia dintre modelele de SDP generice
Există o bază generală pentru crearea uneimetodologii? DA, nu doar una ci mai multe!n Project Management Body of Knowledge
n Specifică (Rational Unified Processes)
Practic, singurul standard ANSI pentru managementul de proiect (IEEE Std 1490™-2003) care identifică şi descrie cunoştinţele general acceptate, ce servesc ca bază de lucru pentru managerii de proiecte General acceptate înseamnă aici că:
Standardul PMBoK (3rd ed., 2004)
General acceptate înseamnă aici că:n aceste cunoştinţe/ practici de lucru descrise se aplică
majorităţii proiectelor pe tot ciclul lor de viaţă n există un consens larg asupra valorii şi utilităţii lor
Nu înseamnă însă că aceste cunoştinţe şi practici de lucru trebuie aplicate uniform tuturor proiectelor, fără o considerare atentă a cazurilor în care ele sunt adecvate!
Pornind de la standarde, firme ca IBM, Microsoft, SAP, Oracle etc. au creat metodologii comerciale ce aduc:n procese bine definite pentru fiecare fază a unui proiect
şi pentru fiecare zonă de cunoştinţe din PMBoKn alte facilităţi, de exemplu formulare gata concepute şi
care trebuie doar completate în proiecte
Metodologii comerciale
care trebuie doar completate în proiecteInstrumentele software pentru management : n respectă anumite standarde comunen urmăresc tendinţele pieţei
Principalii furnizori de software includ în platformele specifice şi module dedicate urmăririi proiectelor pe baza metodologiilor propriiDeşi specifice firmelor care le-au creat, aceste procese şi metodologii nu rămân închise, ci sunt publicate şi pot fi achiziţionate de alte firme
Metodologiile standard permit puţine abateri de la reguli: astfel se evită o serie de conflicte specifice Arată cum trebuie făcut pornind de la cele mai bune practici în domeniu, însă se şi adaptează la nivelul de complexitate al proiectelor din firmăInclud experienţa altor firme specializate în
Avantaje
Includ experienţa altor firme specializate în metodologii de proiect, ce au contact în viaţa reală cu diverşi clienţi, diverse situaţii în proiecte, diverse moduri de lucru: n beneficiarul are la dispoziţie numeroase exemple
complexe pentru a învăţa din experienţa altoraCrearea unei pieţe paralele a metodologiilor de realizare a produselor, pe lângă cea propriu-zisă a produselor software, face ca aceste metodologii să concureze şi să evolueze - maturizându-se !
Cele legate de preţ – ridicat!Familiarizarea mai lentă cu instrumentele folositen mai ales când acestea sunt relativ complexen în special în cazul unui training sumar
Felul în care se adaptează la procesele deja stabilite
Dezavantaje
Felul în care se adaptează la procesele deja stabilite în cadrul companiei beneficiareDiferenţele între metodologii ţin nu doar de preţul lor, ci şi de multe alte aspecte, ca:n instrumentele software care pot fi utilizate în funcţie
de parteneri n necesităţile pe care le presupune raportarea şi accesul
la training
Simplificând puţin, formularea se face astfel:Toţi cei implicaţi în proiecte se adună şi stabilesc o serie de aspecte esenţiale ce ţin de modul de lucru în proiecte prezente sau viitoare n un flux de documente, formularele respective
proceduri de rezolvare în caz de conflicte
Metodologii formulate intern
n proceduri de rezolvare în caz de conflicte n cine aprobă proiecte noin cine aprobă fiecare tip de acţiune etc.
Acest mod de lucru este apoi documentat temeinic şi cu proceduri certificate (eventual ISO) De la o anumită dată înainte toţi directorii, managerii de proiect, personalul tehnic etc. vor lucra numai după procedurile documentate intern
Costul redus Procedurile rezultate se pot mula perfect pe procesele existente în firma respectivă În general, se alege această cale dacă o firmă:
are experienţă în lucrul pe proiecte
Avantaje
n are experienţă în lucrul pe proiecte n a gestionat anterior cu succes multe situaţii,
unele neprevăzute n are o vedere de ansamblu care să-i permită
să documenteze proceduri de lucru pentru fiecare situaţie care poate apărea
În cazul unei experienţe insuficiente de lucru, abordarea nu este viabilă n Din nimic nu se poate inventa un mod de lucru
adecvatn Daca se adopta, acesta nu se va regăsi în realitatea
Dezavantaje
n Daca se adopta, acesta nu se va regăsi în realitatea proiectelor din companie!
Este necesar timp şi implicarea tuturor celor care vor lucra pe aceste proceduri Fiecare poate aduce un punct de vedere şi o experienţă individuală diferită, dar utilă
Vom încerca sa definim un SDP propriu!Metodologia HEI RUPMetodologia HEI RUP(Higher Efficiency Integrated Rational Unified Processes)
Punct de pornire 1: cadrulprocesual RUP
Rational Unified Process
specializare
Proces de dezvoltare propriu
Proiectul meu
punere in actiune
Punct de pornire 2: Caracteristici ale procesului intern
Munca în echipă, ce se concretizează in:n Participare la proiectarea colaborativăn Asumarea diferitelor roluri în echipa unui proiectn Crearea si urmărirea unui plan de proiectare si testare
Crearea documentelor asociate cu un produs softwaren Crearea documentelor asociate cu un produs software
Posibilitatea de a avea intr-un semestru 2 iteratiiper proiect, fiecare de ~ 6 saptamani (midterm):n 1 sapt. planificare, analiza & designn 3-4 sapt. proiectare de detaliu si implementaren 1-2 sapt. testare/ finalizare (midterm/ final presentation)
Etc.
Rational Unified ProcessesCei 3 “amigos” (Booch, Rumbaugh si Jacobson), având fiecare deja definit propriul proces, au creat RUP ca un proces generic/ cadru procesual (framework)n Ce permite dezvoltarea software OOn Independent de UML, deşi cele 2 sunt considerate n Independent de UML, deşi cele 2 sunt considerate
uneori împreunaMetodologia RUP este in mod esenţial un proces genericiterativ, incrementalProiectele RUP parcurg următoarele 4 faze:
1. iniţiere 3. construcţie2. elaborare 4. tranziţie
O privire mai atentă asupra RUPO metoda de mngm a dezvoltarii software OOUn cadru procesual de dezvoltare extensibilInformatia de proces este in acces online (in Repository) si descrisa in format HTMLRepository) si descrisa in format HTMLExista sabloane pentru toate livrabilele majore:n Sabloane RequisitePro pentru urmarirea cerintelorn Sabloane Word pentru cazurile de utilizaren Sabloane de proiect pentru mngm de proiect
Exista manuale de proces ce descriu proceselecheie
Cele 3+1 cuvinte cheie
Centrat pe arhitectura
Condus de cazuri de utilizare Provindin USDP
Provindin USDP
Iterativ si incremental
Confruntandu-se cu risculUSDP (Unified Software Development Process) este
framework –ul de SDP din care provine RUP, ca siOpenUP
Iniţiere: Analiza cerinţelor/ specificaţiilor
Concept cheie: separarea cerinţelor aplicaţiei de cerinţele procesuluiSe tine cont, pe langa cerinţele funcţionale, de:n Aspectele non-funcţionale ale sistemului software:
timpul de execuţie pe un anumit procesor, timpii de timpul de execuţie pe un anumit procesor, timpii de regăsire si salvare ai fişierelor, vitezele de actualizare ale frame-urilor etc.
n Aspecte ale procesului software: cerinţele de date ale procesului – ce impun determinarea fişierelor sau bazelor de date necesare, a mărimii lor estimative si a modului cum sunt utilizate
Paşi in analiza cerinţelor
Metodologia de analiza a cerinţelor acoperă un ciclu mai lung
Fazele extreme sunt: n colectarea cerinţelor iniţiale colectarea cerinţelor iniţiale n separarea cerinţelor
Paşi:n Colectarea cerinţelor bruten Rafinarea cerinţelorn Documentarea cerinţelor
Colectarea cerinţelor “brute”
Începe prin dialog cu experţii in domeniul sistem sau aplicaţie Un model minimal (prototip) poate furniza un context util acestui dialogcontext util acestui dialogInstrumente software specializate, precum EasyRM Requirement Management Suite ori AnalystPro, pot fi utilizate inca din aceasta faza, mai ales pentru documentare
Rafinarea cerinţelor
La finele pasului 1, este probabil ca echipa de dezvoltare sa se confrunte cu prea multe cerinţe, nu la fel de prioritareObiectivul acestui pas este de a procesa mai departe cerinţele; se obţine o lista prioritizată departe cerinţele; se obţine o lista prioritizată Se examinează pentru fiecare cerinţa in parte:
1. Incluziunea in domeniul (scopurile) proiectului. Cerinţele din afara vor fi eliminate
2. Redundanta fata de alte cerinţe. Redundantele trebuie rezolvate.
3. Prioritatea: pe termen scurt, mediu sau lung.
Documentarea cerinţelor
La acest pas, informaţiile colectate vor fi strânsein documentaţia cerinţelor
Aceasta reprezintă o documentaţie de referinţa,construita in maniera bottom-up, conţinând:
O descriere scurta (un overview al conţinutului altorn O descriere scurta (un overview al conţinutului altordocumente)
n Un pointer la documentul de lucru (ce poate fi o calein sistemul de fişiere, ori un URL), conţinând el însuşireferinţe spre alte documente
n Pe măsura ce numărul de documente creste, esteesenţiala clasificarea lor intr-o maniera ierarhica, deex. in foldere separate pentru arii tematice separate
Standard software (UML): “Use-Case Driven Development”
Colectarea, rafinarea si documentarea cerinţelor se pot face folosind cazuri de utilizareCazurile de utilizare specifica cerinţele sistemului si conduc procesele de:
proiectaren proiectaren implementare întreaga dezvoltare a sistemuluin testare
Cazurile de utilizare reprezintă sursa pentru construcţia cazurilor de testare
Cazurile de utilizare in analiza cerinţelor1. Cazurile de utilizare permit captura initiala si
descrierea/ analiza completa a cerinţelor
2. Cazurile de utilizare nu sunt selectate izolat
3. Cazurile de utilizare conduc dezvoltarile 3. Cazurile de utilizare conduc dezvoltarile arhitecturale/arhitecturile afecteaza selectia cazurilor de utilizare
Elaborare : Cazurile de utilizare inproiectarea arhitecturala1. Cazurile de utilizare conduc dezvoltarile
arhitecturale/arhitecturile afecteaza selectia cazurilor de utilizare
2. Cazurile de utilizare asigura informatii de intrare 2. Cazurile de utilizare asigura informatii de intrare semnificative pentru: n specificarea subsistemelor, claselor si interfetelorn specificarea cazurilor de testaren planificarea iteratiilor de dezvoltare
ð Use case-urile si arhitecturile sunt dezvoltate impreuna in timpul dezvoltarii sistemului
Standard software: Dezvoltarea iterativa/ incrementalaMotivatii:n Cerintele nu pot fi complet cunoscute inainten Iteratii succesive expliciteaza si detaliaza ceea ce
necesita si vor utilizatoriiSchimbarea inevitabila a cerintelor necesita oricum n Schimbarea inevitabila a cerintelor necesita oricum adaptare
Beneficii:n Creste ritmul (tempo-ul) dezvoltarii n Creste eficienta muncii de dezvoltaren Tinte restranse, focalizate intr-o planificare mai scurtan Validare timpurie pe modele de implementare minimale
Modelul de proiectareDescrie structura statica a sistemului prin subsisteme, clase, interfeteEvidentiaza colaborarea intre obiectele definite in structura statica, ce modeleaza cazurile de utilizareEste ierarhic dar poate contine si relatii non-ierarhice (asociatii, dependente etc.)(asociatii, dependente etc.)Un model de implementare minimal poate fi asigurat inca din aceasta faza, cu componente care sa demonstreze ca arhitectura descrisa este executabilan Daca design-ul este asemanator cu “scheletul” (fara
“muschi” sau “piele” - adaugate in faza urmatoare) n Se pot adauga totusi cativa “muschi” care sa
demonstreze miscarile de baza
InfluenteArhitectura pe care se va implementa sistemulSistemul de operare Sistemul de gestiune a bazelor de date ale proiectului, protocoalele de reteaCadre, componente si consideratii de dezvoltareCadre, componente si consideratii de dezvoltareInteractiunea cu sistemele legale, standarde, politiciCerinte nonfunctionale (performante, robustete) Necesitati de distribuire (client/server, web-based etc)
Proiectarea top-down(in cadrul abordarilor structurate pana la cele OO)
Subliniaza concentrarea asupra proiectarii de nivel inalt (overall design), ignorand in prima parte detaliile
Focalizarea are loc asupra scopurilor importante:Focalizarea are loc asupra scopurilor importante:w Explicitare (cineva trebuie sa faca implementarea!)
w Robustete la viitoarele schimbari
w Reutilizare (o parte din componentele proiectului pot fi adaptate si pentru alte proiecte)
Proiectarea orientata pe obiecte: Problema calităţiiTehnica dezvoltarii orientate pe obiecte cere:
Definirea obiectelor specifice:n Componente cheie ale sistemuluin Responsabilitati ale fiecareia
Interactiuni (cai de comunicare cheie intre n Interactiuni (cai de comunicare cheie intre componente)
n O lista a serviciilor asigurateRafinarea cerinţelor si definitiilor
→Calitatea unui proiect OO se reflecta in proiectele viitoare pe care le suporta in mod natural!
“Repositories”Un ‘repository’ este o locatie (sau set de locatii) unde analistii/ proiectantii/ testerii tin documentatia sau codul asociat cu unul sau mai multe sisteme sau proiecteRepository-uri tipice:n Un director de retea continand corespondenta unui proiect, n Un director de retea continand corespondenta unui proiect,
rapoarte, date (artifacte ale dezvoltarii)n Un dictionar de instrumente CASEn Manuale/ help-uri sistem n Documentatie tiparita (dosare si biblioteci ce descriu un
sistem)n O interfata web (un intranet ) la componentele de mai susn Cod sursa cu componente ce pot fi compilate si executate
Modele si documenteSa cream documente doar cand sunt necesare?Sa actualizam documentele doar in situatii de criza?
actualizareactualizare actualizareactualizare
IdeeIdee ModelModeltemporartemporar
ModelModelpermanentpermanent
pastrarepastraremodelmodel
versiuneversiune
RenuntareRenuntare
Documentatia tehnica de proiectare
Difera de documentatia pentru end-userInclude:n Comentarii asupra coduluin Comentarii asupra claselor (structurilor de
date si cod)date si cod)nDefinirea algoritmilornDefinirea structurii proiectului (prin diagrame)n Comentarii la modelele obiectual, functional si
dinamic n Posibil, o harta si instrumente de navigare in
structura proiectului
Constructie : Modelul de implementareStabileste:
Cum sunt elementele din modelul de proiectare (clase) implementate pe componente (de ex. fisiere sursa)Cum sunt componentele organizate in Cum sunt componentele organizate in concordanta cu mecanismele de structurare/ modularizare disponibile in mediul de implementare si limbajele de programareScopul este obtinerea unui sistem functional in raport cu componentele: cod sursa, scripturi, binare, executabile, impreuna cu documentatia
Componente de implementareO componenta este parte a unui subsistem (ce include si componentele de interfata):n reprezintă biunivoc un element din proiect (clasa de
proiectare)dar poate implementa si mai multe clase de proiectaren dar poate implementa si mai multe clase de proiectare
n sau reprezintă operatii definite de interfatan dependentele de compilare sunt posibile
Subsistemelen sunt definite ca ierarhii de componente n pot fi recursive (imbricate)
PrototipizareaUn proces iterativ care necesita si incurajeaza:n Relatii stranse intre proiectant si utilizatorin Participarea activa a utilizatorilor finaliw (“end-users know what they want when they see it!”)
Este astfel un model si un proces activ de Este astfel un model si un proces activ de dezvoltare care ofera utilizatorilor finali o experienta preliminara cu sistemul viitor (“ a sort of touch-and-feel experience”)Si creativitatea este incurajata – prin feedback rapid din partea utilizatorului se ajunge la solutii mai buneErorile pot fi detectate mai devreme!
“Repositories” de cod sursa/ Controlul versiunilor
Coordonarea unei echipe necesita, pentru fisiere partajate, asigurarea ca, la un moment dat, doar un membru poate modifica un fisierDezvoltarea “cross-platform” necesita urmarirea problemelor de portabilitate la mentinerea unui cod unic pe toate platformelepe toate platformeleReutilizabilitatea/ orientarea pe obiecte a codului sursa necesita urmarirea modulelor utilizate de programe Versiuni vechi ale codului sursa si alte fisiere, pot fi necesare si trebuie regasite pentru urmarirea defectelor, deci trebuie control
Ä Un proiect (partajat) trebuie sa ofere suport pentru combinarea fisierelor, istoric, si control al versiunilor
Ä Impartirea proiectelor mari in subproiecte poate usura managementul proiectului!
CASE Tool: Visual SourceSafeBaza de date VSS -> asigura copii “master” pentru fisierele unui proiectFiecare user <- poate detine “copii de lucru” din baza VSSUn protocol simplu de check-out previne conflictele intre utilizatori multipli ce lucreaza pe aceleasi fisiereutilizatori multipli ce lucreaza pe aceleasi fisiereTehnologia VSS “reverse delta” asigura:n Disponibilitatea tuturor versionilorn Utilizarea eficienta (minimala) a spatiului pe disc –
datorita pastrarii incrementale a modificarilorn Cei mai buni timpi de acces – de baza este versiunea
curenta
Standarde de codificareSunt seturi de reguli ce descriu:n Cum trebuie sa arate codul implementatn Ce caracteristici ale limbajului de programare trebuie
folositen Ce tools-uri trebuie folosite pentru codificare, si cumn Ce tools-uri trebuie folosite pentru codificare, si cum
Sunt utile in majoritatea proiectelor, o necesitate in unele tipuri de proiecte (ex. “open source”)Pot fi mai mult sau mai putin specifice, dar:n mai ales cand cei ce colaboreaza la un proiect sunt
numerosi, diferentele in stilul de codificare pot conduce la neintelegeri
Documentarea coduluiCream documentatie doar cand se cere?Actualizam documentatia doar cand apar probleme?Cata incredere putem avea in documentatie?Problema fundamentala este comunicatia, nu documentatia!documentatia!Documentatia trebuie sa fie atat cat trebuie de buna (completa)Documentatia e parte a sistemului, ca si codul sursaScopul primar al unei echipe e dezvoltarea software, scopul secundar este facilitarea dezvoltarilor viitoareBeneficiul de a avea documentatia trebuie sa fie mai mare decat costul crearii si mentinerii ei
Sistemul de documentare DoxygenSe poate aplica fisierelor sursa C/C++, Java, IDL, documentate, fiind prin aceasta un instrument universal (comp. JavaDoc)Poate genera folosind comentarii de documentare:
Un browser de documentare HTML on-line, iesire HTML n Un browser de documentare HTML on-line, iesire HTML comprimata
n Un manual de referinta off-line (in LaTeX)n Iesire in RTF, PostScript, hyperlinked PDF, pagini de
manual Unix
Poate extrage structura codului din surse nedocumentate
Facilitati Doxygen
Blocuri speciale de documentare Permite descrieri sumare si de detaliu in codPermite plasarea documentatiei nu in headere ci in fisierele sursa (aceasta tine headerele in fisierele sursa (aceasta tine headerele compacte si permite accesul direct)Tine documentatia consistenta cu codul sursa Relatiile intre elemente pot fi vizualizate prin grafuri de dependenta, diagrame de colaborare, mostenire etc.
Utilizarea DoxygenPasul 1: Documentarea surselor, folosind:
Blocuri speciale de documentare (Qt/C/C++ style)/*! ... text ... */ //! ... one line of text ...
O descriere sumara si una detaliata, inaintea unei declaratii sau O descriere sumara si una detaliata, inaintea unei declaratii sau definitiiComenzi structurale – ceea ce permite plasarea blocurilor de documentare oriundeDocumentarea membrilor compusi (file, struct, union, class, ori enum) poate fi facuta atat in afara cat si inauntrul structurii
Utilizarea Doxygen (cont.)
Pasul 2: Crearea unui fisier de configurare:Doxywizard – este un “GUI front-end” pentru crearea, citirea si scrierea fisierelor de configurare, si pentru setarea optiunilor de configurareDoxygen poate crea un fisier de configurare template pentru Doxygen poate crea un fisier de configurare template pentru proiect
Pasul 3: Lansarea Doxygen:Optiunile configurate, precum EXTRACT_ALL, controleaza“cata” documentatie sa fie extrasa din fisierele sursa
TestareaTestele trebuie planificate ca:n Teste de integrare – necesare pentru fiecare
constructie in cadrul unei iteratiin Teste sistem – necesare doar la sfarsitul unei iteratii
Testarea completa a fiecarei constructii a codului Testarea completa a fiecarei constructii a codului verifica implementareaExecutia testelor trebuie facuta impreuna cu inregistrarea sistematica a rezultatelor testelor
Proiectarea si implementarea testelor
Se face prin crearea:n cazurilor de testare ce specifica ce se testeaza, cu ce
intrari, si sub ce conditiin procedurilor de testare ce specifica cum se executa
testeletestelen componentelor de testare executabile, pentru
automatizarea testelorDefectele sunt simptome ale erorilor software sau ale unor probleme de proiectare descoperite in urma revizuirilor Ele trebuie inregistrate si urmarite astfel incat sa fie rezolvate
Cazurile de testarePot sa difere doar prin 1! valoare de intrare/ rezultatSunt specificate intr-o matrice de testaren Fiecare caz de test este un rand n Fiecare domeniu de intrari/ rezultate este o coloana
O matrice de test asigura o buna examinare a n O matrice de test asigura o buna examinare a cazurilor de testare similare si pentru crearea ulterioara a procedurilor si componentelor de testare
O procedura de testare poate fi reutilizata pentru cazuri de testare multiple, si invers, un caz de testare poate fi subiect al unor proceduri de test multiple
Modelul de testareEste o colectie de cazuri, proceduri si componente de testn Cazurile de test deriva din cazuri de utilizaren In general testele pot fi refolositen In general testele pot fi refolositen Un model de testare prea extins poate fi
descompus in “pachete” Trebuie mentinut pe întreaga durata a ciclului de viata software
Dinamica modelului de testareModelul de testare evolueaza in timpul ciclului de viata al software-ului, prin:
n Indepartarea cazurilor de testare ce nu mai sunt actuale (si a procedurilor/ componentelor de testare asociate) de testare asociate)
n Crearea de noi cazuri de testare pentru fiecare constructie
n Rafinarea cazurilor de testare in teste de regresie
“Debug Testing”Este testarea in timpul fazelor de tranzitie ale constructiei
softwareTipuri de testare:n Progresiva (implica fie teste de integrare fie teste
sistem globale)Regresiva (in cazul unei noi versiuni, se reiau teste n Regresiva (in cazul unei noi versiuni, se reiau teste anterioare)
Folosita atat in timpul proiectarii cat si implementariin In proiectare: linia de baza arhitecturala este testata
folosind un model de implementare minimaln In implementare: fiecare constructie a codului (rezultat
al implementarii) trece prin teste de integrare si fiecare iteratie trece prin testare de sistem
Specificul testarii constructiveDezvoltarea iterativa transforma cazurile de test
in teste regresive pentru constructiile ulterioare ale codului
Numarul cazurilor de testare creste cu fiecare iteratie: iteratiile finale au un numar mare de teste iteratie: iteratiile finale au un numar mare de teste regresive
Focus: Testare regresiva + Repararea defectelor aparute initial
“Release Testing”Are loc in faza finala (fiind de aceea si o testare de
ansamblu – “overall testing”). Consta in:Teste de instalare:n Poate fi sistemul instalat pe platformele tinta? n Se comporta el corect dupa instalare?
Teste de configurare:n Lucreaza sistemul corect in diferite configuratii (de
ex., de retea)? n Anumite cerinte suplimentare in configuratii diferite
pot esua
“Release Testing” (cont.)Teste negative (“cazuri de abuz" )n Incercari de a face sistemul sa esueze pentru a
evidentia slabiciunile sale n Identificarea cazurilor de testare pe care sistemul nu
a fost proiectat sa le suportea fost proiectat sa le suportew Configuratii de retea incorectew Incarcari “imposibile"
Teste de stressn Identificarea problemelor cand sistemul sufera
datorita resurselor insuficiente
Tranziţie : mentenanţă+evoluţieTransition completes product release...Este faza in care software-ul atinge complet capabilitatile operationale initiale (nu perfect, dar poate opera in mediul utilizator)Include:Include:n Livrarea software-ului (deployment)n Crearea si executia testelor de integraren Urmarirea (indeplinirii) cerinţelorn Mentenanţa programului (produsului)n Evoluţie a produsului si procesului
Activitati de menţinere
Mentinerea software-ului:Procesul de modificare a unui software operational,
existent, pastrand insa functiunile primare intacte
Tipuri de mentenanţă:Tipuri de mentenanţă:1. Corectiva (“repair/debug”, cca. 20% ca pondere)2. Adaptiva (adaptarea la mediu, adaugarea de noi
cerinte)3. Perfectiva (imbunatatirea performantei, ex.
optimizarea timpului de executie)4. Preventiva (schimbari ce faciliteaza mentenanta
viitoare)
Evoluţia software-uluiProblemele raportate de testeri externi sunt corectate Orice noi facilitati pot fi adaugate daca schimbarile sunt atat de mici incat nu au impact asupra planului proiectuluiimpact asupra planului proiectuluin Ideal, acestea sunt adaugate acum doar la o
lista de noi facilitati (functii) n Implementarea lor are loc doar in urmatorul
ciclu de dezvoltare (cu urmatoarea versiune)
Evoluţia proceselor software
Principii:
1. Dezvoltarea unui proces software trebuie inteleasa ca un proces evolutiv.
2. Un proces software trebuie inteles inainte de a 2. Un proces software trebuie inteles inainte de a fi definit.
3. Dezvoltarea proceselor software, ca proces in sine, trebuie nu doar definita, ci si masurata si gestionata corespunzator.
Imbunatatirea proceselorPentru a evolua si imbunatati un proces:n Acesta trebuie definitn Trebuie sa reprezinte o aproximatie rezonabila a ceea
ce se face efectiv in cadrul organizatiei
Motivul principal pentru care procesele software Motivul principal pentru care procesele software sunt deficitare este acela ca nu se face ceea ce se stie ca trebuie facutSimpla definire a unui proces face greselile si omisiunile mai evidente si contribuie astfel la imbunatatirea proceselor efective
Ghid simplificat de rafinare a unui proces software
Se porneste de la o definitie de proces generic, identificata ca fiind apropiata de cel real Se include o faza de planificarePe baza inregistrarilor din organizatie, se estimeaza timpul de dezvoltare pentru fiecare estimeaza timpul de dezvoltare pentru fiecare faza majora si categorie de produs softwareSe definesc metrici (de ex. de productivitate)Se mentine o evidenta a fiecarei dezvoltari de procesSe produc raportari pentru fiecare dezvoltare de proces