1 / 34 Ingineria program ˘ arii Adriana Gheorghies ¸, Ovidiu Gheorghies ¸ 10 octombrie 2005
1 / 34
Ingineria programarii
Adriana Gheorghies, Ovidiu Gheorghies
10 octombrie 2005
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
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).
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.
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.
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.
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.
Modele de proiectare
Recapitulare• Etapele dezvoltariiprogramelor
Analiza cerinelor
Scenarii de utilizare
8 / 34
Recapitulare
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.
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
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
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.
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 [!]
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.
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
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.
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.
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
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
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
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
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
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
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
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)
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?
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
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
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
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.
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
◦ ...
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
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
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