CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
Instrumente pentru dezvoltarea programelor
1. Explicati de ce rata de productivitate a programatorilor ce lucreaza în perechi este
aproximativ aceeasi ca a doi programatori lucrând individual. Sugerati patru motive.
se introduc mai putine buguri in sistem, intrucat cel care supravegheaza poate sa isi concentreze atentia pe ce anume scrie coechipierul; Sunt eliminate din start eventualele solutii eronate (corecte doar in aparenta)
Sunt gasite mai repede solutii pentru probleme, intrucat sunt implicate doua baze de cunostinte si doua perspective diferite (brainstorming).
Colaborarea are un efect pozitiv asupra moralului programatorilor, a relatiilor si comunicarii dintre acestia; programatori mai fericiti => productivitate sporita.
Timpul de invatare este redus, atat in ceea ce priveste proiectul la care se lucreaza cat si cunostintele tehnice generale; oamenii invata in general mai bine unii de la altii decat pe cont propriu, iar pe termen lung (nu neaparat pe durata unui singur proiect), castigul de timp este semnificativ.
2. Un manager software este implicat în dezvoltarea unui sistem pentru translatarea
cerintelor software în specificatii software formale. Comentati avantajele si
dezavantajele urmatoarelor strategii de dezvoltare:
a) Dezvoltarea unui prototip throw-away, evaluare, review al cerintelor de
sistem.Dezvoltarea sistemului final în C.
Avantaje:
utilizatorul are din timp o imagine aproximativa a produsului final;
dezvoltatorii au un punct de pornire si totodata un scop bine stabilit;
dezvoltatorii au ocazia de a cunoaste utilizatorul prin intermediul review-ului, in sensul ca stiu in ce sens asteptarile acestuia sunt mai exigente sip e ce anume se pune mai mult accent.
Cerintele sunt formulate cu precizie; dupa examinarea prototipului utilizatorul poate observa alte functionalitati necesare.
Un astfel de sistem (de translatare a cerintelor) pare sa fie un sistem de dimensiune medie, pt care se poate dezvolta relativ rapid un prototip (se spune de obicei ca pentru sisteme ample nu este indicata realizarea unui prototip, ci cel mult se poate realize un prototip partial, spre exemplu pentru functionalitatile critice).
Dezavantaje:
- se pierde din vedere aspectul de flexibilitate; avand un scop bine definit, dezvoltatorii nu vor mai pune accent pe realizarea unei arhitecturi rezistente la schimbare, ci se vor concentra pe implementarea efectiva a prototipului.
- alegerea limbajului este eronata; in modelarea unui astfel de sistem se preteaza un limbaj de nivel inalt (e rezonabil sa consideram ca nu este un sistem care sa necesite performante in timp real), in special din punct de vedere al usurintei in dezvoltare (efortul de programare este net mai mare in cazul limbajelor de nivel jos, cum este in acest caz vorba despre C).
b) Dezvoltarea sistemului precând de la cerintele existente folosind Java,
modificarea acestora pentru adaptarea ulterioara a unor cerinte modificate
venite din partea utilizatorului.
Din punctul meu de vedere este cea mai neindicata strategie; se cunosc doar partial cerintele si exceptand cazul in care echipa este foarte mica si contactul cu utilizatorul poate fi realizat ft rapid, exista riscul implementarii defectuoase a unora din functionalitati (in cazul in care dezvoltatorul nu intelege corect ceea ce doreste utilizatorul).
Utilizatorului ii este prezentat produsul final si abia in acest moment se poate face o evaluare; si din acest moment, orice modificare a functionalitatilor este costisitoare, in special daca nu a fost scris un cod “bullet-proof”.
Alegerea limbajului este potrivita in acest caz; limbajele de nivel inalt faciliteaza si accelereaza implementarea aplicatiilor, in special partea de UI (cu ajutorul librariilor specializate).
c) Dezvoltarea sistemului folosind dezvoltarea incrementala cu un utilizator
implicat în echipa de dezvoltare.
Aceasta strategie este potrivita; fiind vorba despre un sistem nu foarte amplu, se pot stabili iteratii de dimensiuni reduse;
In aceasta strategie se beneficiaza de toate avantajele dezvoltarii incrementale -acestea au fost prezentate in curs.
In plus, implicarea utilizatorului in echipa de dezvoltare este un factor foarte important, intrucat dezvoltatorii au ocazia sa il cunoasca; astfel stiu care sunt asteptarile si care aspecte sunt mai importante (ex: daca utilizatorul doreste sa se puna accent pe aspectul UI sau pe performanta, etc); contactul dintre utilizator si dezvoltator este practic instantaneu, nelamuririle legate de anumite functionalitati sunt clarificate intr-un timp foarte scurt si astfel se asigura implementarea corecta a functionalitatilor solicitate; totodata, pe parcursul implementarii utilizatorul poate observa necesitatea unor functionalitati sau redundanta altora si se pot face modificari ale cerintelor on the fly, costul implementarii modificarilor in cadrul unei iteratii fiind mult mai mic decat implementarea lor in produsul final.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 196
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved