34
1 / 34 Ingineria program ˘ arii Adriana Gheorghies ¸, Ovidiu Gheorghies ¸ 10 octombrie 2005

Ingineria Programarii 2

Embed Size (px)

Citation preview

Page 1: Ingineria Programarii  2

1 / 34

Ingineria programarii

Adriana Gheorghies, Ovidiu Gheorghies

10 octombrie 2005

Page 2: Ingineria Programarii  2

Modele de proiectare• ExtremeProgramming• Inginerie si IngineriaProgramarii• Carta drepturilordezvoltatorului• Carta drepturilorclientului• Idei majore in XP

Recapitulare

Analiza cerinelor

Scenarii de utilizare

2 / 34

Modele de proiectare

Page 3: Ingineria Programarii  2

Extreme Programming

Modele de proiectare• ExtremeProgramming• Inginerie si IngineriaProgramarii• Carta drepturilordezvoltatorului• Carta drepturilorclientului• Idei majore in XP

Recapitulare

Analiza cerinelor

Scenarii de utilizare

3 / 34

• Extreme Programing (XP) este o model modern, “usor”(lightweight), de dezvoltare, inspirat din RUP.

• Dezvoltarea programelor nu ınseamna ierahii, responsabilitati sitermene limita, ci ınseamna colaborarea oamenilor din care esteformata echipa

• Membrii echipei sunt ıncurajati sa ısi afirme personalitatea, saofere si sa primeasca cunoastere si sa devina programatoristraluciti

• XP considera ca dezvoltarea de programe ınseamna ın primulrand scrierea de programe (fisierele PowerPoint nu se potcompila).

Page 4: Ingineria Programarii  2

Inginerie si Ingineria Programarii

Modele de proiectare• ExtremeProgramming• Inginerie si IngineriaProgramarii• Carta drepturilordezvoltatorului• Carta drepturilorclientului• Idei majore in XP

Recapitulare

Analiza cerinelor

Scenarii de utilizare

4 / 34

• Ingineria programarii este inspirata din ingineria constructiilor, darXP sustine ca aceast lucru nu este tocmai ... inspirat.

• In programare nu pot fi aplicate direct tehnicile de organizare diningineria constructiilor, deoarece gradul de flexibilitate necesareste mult mai mare.

Page 5: Ingineria Programarii  2

Carta drepturilor dezvoltatorului

Modele de proiectare• ExtremeProgramming• Inginerie si IngineriaProgramarii• Carta drepturilordezvoltatorului• Carta drepturilorclientului• Idei majore in XP

Recapitulare

Analiza cerinelor

Scenarii de utilizare

5 / 34

• Ai dreptul sa stii ceea ce se cere, prin cerinte clare, cu declaratiiclare de prioritate.

• Ai dreptul sa spui cat ıti va lua sa implementezi fiecare cerinta, sisa ıti revizuiesti estimarile ın functie de experienta.

• Ai dreptul sa ıti accepti responsabilitatile, ın loc ca acestea sa-tifie asignate.

• Ai dreptul sa produci treaba de calitate ın orice moment.• Ai dreptul la liniste, distractie si la munca productiva si placuta.

Page 6: Ingineria Programarii  2

Carta drepturilor clientului

Modele de proiectare• ExtremeProgramming• Inginerie si IngineriaProgramarii• Carta drepturilordezvoltatorului• Carta drepturilorclientului• Idei majore in XP

Recapitulare

Analiza cerinelor

Scenarii de utilizare

6 / 34

• Ai dreptul la un plan general, sa stii ce poate fi facut, cand, si lace pret.

• Ai dreptul sa vezi progresul ıntr-un sistem care ruleaza si care sedovedeste ca functioneaza trecand teste repetabile pe care tu lespecifici.

• Ai dreptul sa te razgandesti, sa ınlocuiesti functionalitati si saschimbi prioritatile.

• Ai dreptul sa fii informat de schimbarile ın estimari, suficient dedevreme pentru a putea reduce cerintele astfel ca munca sa setermine la data prestabilita. Poti chiar sa te opresti la un momentdat si sa ramai cu un sistem folositor care sa reflecte investitiapana la acea data.

Page 7: Ingineria Programarii  2

Idei majore in XP

Modele de proiectare• ExtremeProgramming• Inginerie si IngineriaProgramarii• Carta drepturilordezvoltatorului• Carta drepturilorclientului• Idei majore in XP

Recapitulare

Analiza cerinelor

Scenarii de utilizare

7 / 34

• Echipa de dezvoltare nu are o structura ierarhica. Fiecarecontribuie la proiect folosind maximul din cunostintele sale.

• Scrierea de cod este activitatea cea mai importanta.• Proiectul este ın mintea tuturor programatorilor din echipa, nu ın

documentatii, modele sau rapoarte.• La orice moment, un reprezentant al clientului este disponibil

pentru clarificarea cerintelor.• Codul se scrie cat mai simplu.• Se scrie cod de test intai.• Daca apare necesitatea rescrierii sau aruncarii de cod, aceasta

se face fara mila.• Modificarile aduse codului sunt integrate continuu (de cateva ori

pe zi).• Se programeaza ın echipa (programare ın perechi). Echipele se

schimba la sfarsitul unei iteratii (1-2 saptamani).• Se lucreaza 40 de ore pe saptamana, fara lucru suplimentar.

Page 8: Ingineria Programarii  2

Modele de proiectare

Recapitulare• Etapele dezvoltariiprogramelor

Analiza cerinelor

Scenarii de utilizare

8 / 34

Recapitulare

Page 9: Ingineria Programarii  2

Etapele dezvoltarii programelor

Modele de proiectare

Recapitulare• Etapele dezvoltariiprogramelor

Analiza cerinelor

Scenarii de utilizare

9 / 34

• Analiza cerintelor• Proiectarea• Scrierea codului• Testare• Intretinere

Toate etapele dezvoltarii programelor depind de analiza cerintelor.

Page 10: Ingineria Programarii  2

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

10 / 34

Analiza cerintelor

Page 11: Ingineria Programarii  2

Ce trebuie sa construim?

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

11 / 34

It took 300 years to build and by the time it was 10% built, everyoneknew it would be a total disaster. But by then the investment was sobig they felt compelled to go on. Since its completion, it has cost afortune to maintain and is still in danger of collapsing.There are at present no plans to replace it, since it was never reallyneeded in the first place.— K.E. IVERSON, despre turnul din Pisa

Page 12: Ingineria Programarii  2

Inceputul unui proiect

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

12 / 34

• Un proiect poate ıncepe

◦ cu o idee a clientului◦ cu o idee a unei echipe de dezvoltare

• Aceasta idee poate fi

◦ clara, bine definita◦ vaga, prost definita

• Pentru a continua cu succes, este nevoie de ingineria cerintelor.

Page 13: Ingineria Programarii  2

Cerinta: ce, cum, cat

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

13 / 34

• Exemplu de cerinta: Pe o cale ferata uscata, locomotiva trebuiesa fie capabila sa porneasca un tren de 100 tone pe o panta demaxim 5% cu o acceleratie de cel putin 30km/h2.

• Caracteristici ale acestei cerinte:

◦ Spune ce vrea clientul [ok]◦ Nu spune cum sa fie realizate cerintele [ok(?)]◦ Cerintele sunt cuantificabile [ok]◦ Nu mentioneaza nimic despre pret [!]◦ Nu specifica termenul de realizare [!]

Page 14: Ingineria Programarii  2

Specificatia buna

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

14 / 34

• Spune ce trebuie facut, nu cum• Este clara (neambigua)• Este suficient de detaliata• Este completa

• Exemplu (sau contraexemplu?): Scrieti un program Pascal careofera functionalitatea unei agende telefonice personale. Ar trebuisa implementeze functii pentru cautarea unui numar si pentruintroducerea unui nou numar de telefon. Programul va oferi ointerfata utilizator prietenoasa.

Page 15: Ingineria Programarii  2

Detalii de implementare la analiza?

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

15 / 34

• NU

◦ Clientul nu este competent ın detalii tehnice◦ Clientul nu poate fi de acord ın cunostinta de cauza cu

stipularile tehnice din specificatii (Stiu secretarele COM? Stiusoferii ciclul Carnot?).

◦ E necesar sa restrangem multimea posibilelor solutiiletehnice?

• DA

◦ Este nevoie sa integram ıntr-un sistem existent◦ Timpul de dezvoltare depinde de implementare◦ Intretinerea (costul) depinde de implementare

Page 16: Ingineria Programarii  2

Responsabilitatile analistului

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

16 / 34

• sa extraga si sa clarifice cerintele clientului• sa ajute la rezolvarea diferentelor de opinie ıntre clienti si

utilizatori.• sa sfatuiasca clientul despre ce este tehnic posibil sau imposibil• sa documenteze cerintele• sa negocieze si sa obtina o ıntelegere cu clientul.

Page 17: Ingineria Programarii  2

Activitatile analistului

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

17 / 34

• Ascultare: Inregistreaza cerintele clientului.• Reflectare: Traduce cerintele ın limbaj tehnic. Verifica pertinenta.

• Scriere: Se cade de acord asupra formularilor.

• Repeta pana cand se ajunge la o ıntelegere cu clientul ın ceeace priveste cerintele.

Page 18: Ingineria Programarii  2

Probleme potentiale

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

18 / 34

• Procesul iterativ poate fi lung si complicat• Negocieri (dure)• Diferenta culturala dintre client si analist• Diferente ıntre cerintele clientului si ale utilizatorilor• Filmele SF vazute de client• Filmele SF vazute de programatori

Page 19: Ingineria Programarii  2

Rezultatul analizei

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

19 / 34

• Document de specificare a cerintelor• Acest document este folosit ca referinta• Provocari

◦ Nivelul de detaliu

• Mare: mai precis, obtinut mai greu, munca inutila• Mic: prea vag, nu poate ghida eficient dezvoltarea

◦ Audienta documentelor

• 2 versiuni: una pentru client, alta pentru dezvolatori?

◦ Notatia folosita

• Informala, semiformala, formala

Page 20: Ingineria Programarii  2

Tipuri de cerinte

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

20 / 34

• Cerinte functionale

◦ Ce trebuie sa faca sistemul

• Cerinte privind datele

◦ Formatul datelor la intrare/iesire◦ Formatul datelor din interiorul sistemului

• Constrangeri

◦ Cerinte de respectat ad-literam◦ Influenteaza direct implementarea

• Recomandari

◦ Ajuta la luarea deciziilor de proiectare cand sunt mai multeoptiuni

Page 21: Ingineria Programarii  2

Exemple

Modele de proiectare

Recapitulare

Analiza cerinelor• Ce trebuie saconstruim?• Inceputul unui proiect• Cerinta: ce, cum, cat• Specificatia buna• Detalii deimplementare laanaliza?• Responsabilitatileanalistului• Activitatile analistului• Probleme potentiale• Rezultatul analizei• Tipuri de cerinte• Exemple

Scenarii de utilizare

21 / 34

• Cerinte functionale

◦ Sistemul se va opri ın maxim 5 secunde dupa ce temperaturaprocesorului atinge 80 grade Celsius.

◦ Sistemul va permite cautarea si afisarea titlurilor cartilorscrise anumit autor.

• Cerinte privind datele

◦ Datele vor fi exportate ın format XML◦ Datele din tampoanele de intrare si iesire vor fi criptate

• Constrangeri

◦ Implementarea se va realiza folosind un limbaj orientat obiect.

◦ Metodologia de dezvoltare va fi RUP

• Recomandari

◦ Se va folosi cat mai putina memorie

Page 22: Ingineria Programarii  2

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

22 / 34

Scenarii de utilizare

Page 23: Ingineria Programarii  2

La ce folosesc scenariile

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

23 / 34

• Prezinta sistemul din perspectiva utilizatorului ⇒ ıntelegem ce secere

• Extragerea cerintelor, testare• Frecventa de utilizare a scenariilor ⇒ prioritati asignate cerintelor

• Documentia utilizatorilor• Prezentarea sistemului utilizatorilor

Page 24: Ingineria Programarii  2

Notiuni de baza

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

24 / 34

• Actor• Use case

Page 25: Ingineria Programarii  2

Actor

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

25 / 34

Reprezinta o entitate exterioara cu care sistemul interactioneaza.Poate fi:

• un utilizator uman• un alt sistem (hardware/software)

Page 26: Ingineria Programarii  2

Use case

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

26 / 34

• Ce este?• Ce nu este?• Cum arata?• La ce foloseste?

Page 27: Ingineria Programarii  2

Use case: ce este

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

27 / 34

• O descriere a modului ın care un actor interactioneaza cusistemul

• O descriere a modului ın care sistemul trebuie sa raspundaacestor interactiuni

• O viziune independenta de implementare a modului ın care se vacomporta sistemul

• O secventa de actiuni care are un rezultat vizibil pentru un actor

Page 28: Ingineria Programarii  2

Use case: ce nu este

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

28 / 34

• O descriere a interfetei cu utilizatorul• O descriere a modului de implementare al sistemului• O specificatie a claselor• O specificatie a datelor

Page 29: Ingineria Programarii  2

Use case: cum arata

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

29 / 34

• text: diferite formate

◦ brief: un paragraf care descrie scenariul principal de succes◦ casual: mai multe paragrafe care acopera mai multe scenarii◦ fully dressed: cel mai elaborat; sunt detaliati toti pasii si toate

variatiile; sunt specificate preconditiile si postconditiile

• grafic: diagrame UML

Page 30: Ingineria Programarii  2

Exemplu use case brief

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

30 / 34

Un utilizator gaseste site-ul unei agentii de turism care ofera pachetede vacanta. Agentia ıi cere utilizatorului sa completeze un formularcu datele vacantei si destinatia dorita. Agentia interogheaza apoiserviciile web ale liniilor aeriene si ale companiilor hoteliere si-iprezinta utilizatorului o lista de optiuni.Utilizatorul ısi alege optiuneafavorita. Agentia face rezervarile si ıi prezinta utilizatorului o lista cumodalitatile de plata. Utilizatorul alege o modalitate de plata si-ifurnizeaza agentiei informatiile necesare. Agentia confirmarezervarile, solicita efectuarea platii si ıi da utilizatorului toateinformatiile de care are nevoie pentru a pleca ın vacanta.

Page 31: Ingineria Programarii  2

Exemplu use case casual

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

31 / 34

• Scenariul principal de succes: (vezi slide-ul anterior)• Scenarii alternative:

◦ Daca locul rezervat ın avion nu mai este disponibil, utilizatorulva alege alt zbor

◦ Daca nu mai este disponibila camera rezervata, utilizatorul vaalege alta

◦ Daca utilizatorul nu are suficienti bani, agentia va anularezervarile

◦ ...

Page 32: Ingineria Programarii  2

Use case fully dressed

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

32 / 34

Un sablon propus de Alistair Cockburn poate fi gasit la adresa:http://members.aol.com/acockburn/papers/uctempla.htm

Page 33: Ingineria Programarii  2

Use case fully dressed

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

33 / 34

Contine:

• ID (nr), Nume (scurta fraza verbala)• Informatii caracteristice (Descriere, Domeniu, Actori...)• Principalul scenariu de succes• Extensii• Alte informatii

Page 34: Ingineria Programarii  2

Exemplu

Modele de proiectare

Recapitulare

Analiza cerinelor

Scenarii de utilizare• La ce folosescscenariile• Notiuni de baz• Actor• Use case• Use case: ce este• Use case: ce nu este• Use case: cum arata• Exemplu use casebrief• Exemplu use casecasual• Use case fullydressed• Use case fullydressed• Exemplu

34 / 34

Agentia de turism