Sunteți pe pagina 1din 61

Ingineria programrii

3. Faza de analiz

Florin Leon
Universitatea Tehnic Gheorghe Asachi din Iai
Facultatea de Automatic i Calculatoare

http://florinleon.byethost24.com/curs_ip.htm
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Faza de analiz
1. Introducere
2. Metode de analiz
3. Tipuri de specificaii
4. Documentul specificaiilor cerinelor software
5. Validarea
6. abloane i principii de analiz
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Faza de analiz
1. Introducere
2. Metode de analiz
3. Tipuri de specificaii
4. Documentul specificaiilor cerinelor software
5. Validarea
6. abloane i principii de analiz
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Necesitatea formalizrii

Programe simple

Cerine informale

Sisteme complexe

Scopurile ntregului sistem nu pot fi nelese uor


Trebuie o analiz riguroas
Deseori aceast etap este veriga slab n
procesul de dezvoltare

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Procesul de analiz

Pentru automatizarea unor procese: observaii


Pentru caracteristici noi: nu exist metode stabilite,
cerinele trebuie vizualizate, necesit creativitate
Informaiile exist n minile oamenilor

Scopul fazei

Nu sunt organizate
Specificaii informale, neorganizate, incomplete, incoerente
Specificaii formale, complete, coerente

Analiza nu se poate automatiza

Se poate propune doar un set de recomandri


5

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Viziunea proiectului

O propoziie neleas de toi factorii de decizie

Categorie general de cerine


Primul pas spre finanare
Scurt, s poat fi inut minte

Exemple:

I believe that this nation should commit itself to achieving the


goal, before this decade is out, of landing a man on the moon and
returning him safely to the earth! (John F. Kennedy, mai 1961)
I believe that we must improve the numeric level of all critical
product and service qualities by an order of magnitude by the
end of the decade in order to remain competitive. (John Young,
CEO Hewlett Packard Company, aprilie 1986, politica "10X")
6

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Tipuri de proiecte

Proiecte strategice

Elevator pitch (enunul din lift) pentru un investitor potenial

Proiecte adaptive

Ce schimb n procesul de afaceri


7

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Documentarea specificaiilor

Lucrurile importante sunt documentate


Fr documentaie, utilizatorii pot avea o imagine
fals despre sistem
Etapele intermediare de dezvoltare trebuie
documentate
Imaginea tradiional: text dens i criptic ce necesit
mai mult ntreinere dect codul
Nu trebuie s fie aa: specificaiile corecte scad
riscul
8

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Importana specificaiilor (I)

Specificaiile sunt documente formale care


arat ce dorete / ce va primi clientul
Calitatea specificaiilor este vital
Specificaiile sunt o form de comunicare

Trebuie s aib volumul potrivit

Importana crete cu dimensiunea proiectului


mpiedic uitarea informaiilor

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Importana specificaiilor (II)

Specificaiile fac informaiile:

Mai sigure

Accesibile

Programatori noi
mpiedic presupunerile diferite
Programatori noi

Mai precise

Uureaz identificarea problemelor

10

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Schimbarea cerinelor

Paralizia analizei

ncercarea de a identifica toate cerinele prea devreme

Cerinele au o durat limitat

Mediul de afaceri sau spaiul problemei se modific

Cunotinele se nvechesc

Limitele psihologice ale echipei privind numrul de cerine


ce pot fi luate n calcul la un moment dat

Implementarea cerinelor dintr-o iteraie influeneaz


detalierea cerinelor din iteraia urmtoare

11

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Domeniul i abstraciunea
cerinelor

Cerinele trebuie nelese de toi n acelai fel

12

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Granularitatea

Determinat de audien
Nivel general

Nivel detaliat

Pentru comunicare, estimarea costurilor,


prioritizare
Pentru proiectare i implementare
Detaliere pentru o singur iteraie

Formalism

Specificare informal (XP)


Specificare formal (aprobri reglementate, audit)
13

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Abordarea ingineriei
sistemelor

Feedback-ul este important pentru reuit


Proiectele trebuie s se adapteze la feedback i
schimbri
Cerine de performan i resurse limitate

Specificarea tuturor factorilor de succes


Specificarea valorilor numerice acceptabile
Considerarea variaiilor n funcionare
Metode practice de msurare a rezultatelor / valorii livrate

Proiectul trebuie s se concentreze pe rezultatele


livrate, la un cost competitiv
14

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Faza de analiz
1. Introducere
2. Metode de analiz
3. Tipuri de specificaii
4. Documentul specificaiilor cerinelor software
5. Validarea
6. abloane i principii de analiz
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Metode de analiz

Procesul cerinelor conine:

Analiza cerinelor

Specificarea cerinelor

nelegerea cerinelor
Includerea ntr-un document

Validarea cerinelor

Tranziia de la analiz la
specificare este dificl
16

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Dificulti

Analiza i specificarea au obiective diferite


Analiza accent pe nelegerea structurii problemei
Specificarea ce trebuie s fac sistemul, accent pe
comportamentul exterior
Analiza crete gradul de nelegere i ajut indirect specificarea
Analiza i proiectarea au obiective diferite
Analiza domeniul problemei (CE)
Proiectarea domeniul soluiei (CUM)
Cerinele pot fi generale sau detaliate
Specificaiile trebuie s conin toate informaiile necesare unui
dezvoltator
17

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Cerine SMART

Specifice: Cerinele trebuie s fie legate de problemele pe care


ncearc s le rezolve proiectul
Msurabile: Sunt preferabile cerinele cuantificabile (cantitative)
deoarece sunt mai precise, pot fi agregate i permit ulterior o analiz
statistic a rezultatelor
Accesibile: Cerinele trebuie s poat fi ndeplinite cu costuri
rezonabile prin metode corespunztoare
Relevante: Cerinele trebuie s fie utile echipei de dezvoltare.
Amnuntele nesemnificative pot ngreuna nelegerea nevoilor reale
ale clientului
disponibile n Timp util (engl. timely): Pentru ca deciziile
manageriale s fie luate eficient, cerinele trebuie puse la dispoziia
echipei n timp util
18

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Modelarea orientat obiect

Identificarea obiectelor i claselor


Identificarea structurilor
Identificarea atributelor
Identificarea asocierilor
Definirea serviciilor

19

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Prototipizarea

Sistem parial pentru creterea nelegerii


Tipuri:

Abandonabil (engl. throw-away)


Evolutiv (engl. evolutionary)

20

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Prototipul abandonabil

Se concentreaz de obicei pe:

Interfaa cu utilizatorul
Funciile noi
Funciile care ar putea fi nefezabile
Funciile la care clienii se rzgndesc des

Conine numai funcii valoroase pentru client


Nu pune accent pe calitate (excepii, recuperarea datelor,
standarde)
Prototipizare orizontal (de exemplu interfaa cu utilizatorul) sau
vertical (o parte a sistemului este construit complet)
Costul poate fi 10% din costul total

De fapt, beneficiile reduc costul total


21

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Avantaje

Permite dezvoltatorilor s elimine lipsa de claritate a


cerinelor
Ofer utilizatorilor ansa de a schimba cerinele
ntr-un mod ce nu afecteaz drastic durata de
dezvoltare
Se poate facilita instruirea utilizatorilor finali nainte
de terminarea produsului

22

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Dezavantaje

Deoarece prototipul ruleaz ntr-un mediu artificial,


anumite dezavantaje ale produsului final pot fi
scpate din vedere de clieni
Clientul nu nelege de ce produsul necesit timp
suplimentar pentru dezvoltare, avnd n vedere c
prototipul a fost realizat att de repede
Deoarece au n fiecare moment ansa de a face
acest lucru, clienii schimb foarte des cerinele
Poate fi nepopular printre dezvoltatori, deoarece
implic renunarea la propria munc
23

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Personaje i scenarii

Personaje (personas)
Sintetizate din profilurile utilizatorilor int
Se pot face profiluri i pentru adversari (de ex. hackeri)
Scenarii
Pentru cerine funcionale
O singur cale de interaciune cu sistemul a unui personaj
pentru atingerea unui scop
Scopurile rmn relativ constante, paii (task-urile) se pot
schimba
Tehnici de cercetare: observarea utilizatorilor
Focus grupuri
Interogri contextuale
24

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Satisfiers, Dissatisfiers,
Exciters

Satisfier: trsturi care fac ca utilizatorului s-i plac aplicaia


i s-i ating uor scopurile
Dissatisfier: absena unor atribute care deranjeaz utilizatorul

De obicei nu sunt specificate explicit

Exciter: wow!
25

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Analiza Kano (I)

26

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Analiza Kano (II)

27

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Ciclul de via al
adoptrii tehnologiilor

28

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Povestirile utilizatorilor

User Stories (eXtreme Programming)


Cartele 8 x 13 cm
Client mereu disponibil, echip n acelai loc

29

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Faza de analiz
1. Introducere
2. Metode de analiz
3. Tipuri de specificaii
4. Documentul specificaiilor cerinelor software
5. Validarea
6. abloane i principii de analiz
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Tipuri de specificaii

31

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Specificaii funcionale

Exemplu:

1.3.5 The user interface shall consist of a black


rectangle containing the words Dont Panic in a red
sans-serif typeface at 13pt.

Utile pentru:

A menine proiectul n grafic


A crete satisfacia clienilor
A reduce defectele
A reduce anxietatea dezvoltatorilor
32

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Specificaii funcionale

Descriu comportamentul observabil

Pentru produsul general


Pentru fiecare component (specificaii individuale)

Conin:
Interfeele publice
Structuri de date i formate externe
Dependenele dintre componente
Unele cerine critice pot fi implementate n paralel,
redundant, cu aceleai interfee (ex. NASA)

33

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Specificaiile arhitecturii

Modelul fizic

Componentizarea software

Ce pri vor fi realizate, ce pri se pot cumpra

Concuren

Client-server distribuit, aplicaie desktop

Fire de execuie

Stocarea datelor

Structura bazelor de date


34

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Specificaiile
interfeei cu utilizatorul

Cum se prezint sistemul utilizatorilor

Imaginea prezentat utilizatorului poate fi diferit de implementare

Cum arat
Cum reacioneaz
Sistem distribuit cu o interfa unitar
Funcionalitate redus pentru o versiune mai ieftin

Conine:

Descrieri text, imagini


Capturi ecran (dac exist un prototip)
Stri, tranziii
Toate ecranele (ferestrele)
Timpi de rspuns
Cazuri de eroare
35

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Specificaii de proiectare

Proiectarea intern cum va fi implementat o


specificaie funcional

API intern
Algoritmi, interaciunile firelor de execuie
Limbaje de programare, instrumente de dezvoltare

Sincronizarea permanent cu programul scris este


dificil
Se recomand generarea automat a documentaiei
n locul unor specificaii de proiectare

De exemplu n C#: comentarii ///


36

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Specificaii de test

Conin lista tuturor testelor, paii urmai,


rezultate ateptate
Pentru teste de nivel nalt se folosesc
scripturi
Pentru testele la nivel de cod testarea
unitilor nu se recomand specificaii

Codul de test nsui reprezint documentaia


strategiei de testare
37

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Specificaii de performan

Arat ct de bun este sistemul n termeni obiectivi, msurabili


Atributele de performan
Sunt apreciate de prile interesate
Se pot specifica n mod cantitativ
Sunt variabile
Pot fi complexe, compuse din mai multe atribute elementare
Pot fi prioritizate: compromisuri
Tipuri de atribute:
De calitate (ct de bine merge)
De economisire a resurselor (ct se economisete n comparaie
cu versiunile anterioare sau cu alte sisteme)
De capacitate (ct de mult poate face: prelucrare, stocare)
38

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Scrierea specificaiilor

Selectarea unui format (template) pentru


document
Scrierea propriu-zis (partea grea)
Recenzia
Versionarea i punerea n circulaie
Cererile de modificare

39

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Recomandri pentru
gestionarea specificaiilor

Un singur autor pentru un document

Autorul trebuie s fie persoana potrivit

Un document complex se poate descompune n


mai multe pri
S cunoasc problema i s fie capabil s scrie

Fiecare document trebuie s aib un


proprietar responsabil

Poate fi diferit de autorul iniial


40

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Recomandri pentru redactare

Sunt utile exemplele existente de bune practici


Variantele de lucru (drafts) trebuie marcate n
consecin
Recenzia verific dac documentul este corect i
bine prezentat
Dup terminarea fazei de analiz, specificaiile
trebuie revizuite continuu n funcie de modificri

41

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Bariere lingvistice

Documentele se scriu la prezent, persoana a III-a

Convenii pentru terminologie (RFC 2119)

Trebuie (Must): cerin absolut


Nu trebuie (Must not): interzicere absolut
Ar trebui (Should): cerin opional
Nu ar trebui (Should not): recomandare de evitare
Poate (May): complet opional
Nu se recomand can (n limba englez)

42

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Lipsa specificaiilor

Scrierea specificaiilor necesit timp i efort

Este o investiie
Talent de programator nu nseamn i talent
literar

De fapt, specificaiile evit timpul pierdut n


comunicarea ad-hoc
Trebuie scrise doar documentele necesare
Cine nu are timp s scrie specificaii, nu are
timp s scrie nici cod de calitate
43

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Faza de analiz
1. Introducere
2. Metode de analiz
3. Tipuri de specificaii
4. Documentul specificaiilor cerinelor software
5. Validarea
6. abloane i principii de analiz
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Importana SRS (I)

Software Requirements Specification


Document (SRS)
Exist o barier de comunicare ntre
client/utilizator i dezvoltator

Specificaiile ncearc s depeasc aceast


barier

Specificaiile sunt parte a contractului

Altfel, clientul poate refuza nejustificat produsul


45

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Importana SRS (II)

SRS este o referin pentru validarea produsului final,


l ajut pe client s verifice respectarea cerinelor

Un SRS de calitate este


necesar pentru un
software de calitate

Un SRS de calitate reduce


costul de dezvoltare
Costul remedierii erorilor din faza de analiz

Probabiliti de detectare a erorilor de analiz: 40% la proiectare,


10% la implementare, 40% la recepie, 10% n timpul funcionrii

38,5 ore-om / problem are sens o investiie suplimentar n analiz

Specificaiile trebuie s fie complete

Modelarea nu trebuie s fie complet, dar unele diagrame UML (de


exemplu cazurile de utilizare) pot descrie cerinele funcionale
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

46

Standardul IEEE pentru SRS

Cerin (IEEE):

O condiie de capacitate de care are nevoie un


utilizator pentru a rezolva o problem sau a atinge
un obiectiv
O condiie sau capacitate a unui sistem care
trebuie ndeplinit sau deinut de un sistem
pentru a satisface un contract, un standard, o
specificaie sau un alt document impus formal

47

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Standardul IEEE pentru SRS

Structura general a unui SRS

48

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Standardul IEEE pentru SRS

Organizarea cerinelor specifice

49

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Caracteristicile unui SRS

Corect
Complet
Inteligibil
Neambiguu
Verificabil

Coerent
Prioritizat n funcie de
importan i stabilitate
Modificabil
Urmribil (traceable)

50

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Faza de analiz
1. Introducere
2. Metode de analiz
3. Tipuri de specificaii
4. Documentul specificaiilor cerinelor software
5. Validarea
6. abloane i principii de analiz
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Tipuri de erori

Majoritatea erorilor sunt cauzate de:

Omisiuni
Fapte incorecte
Incoeren (contradicii)
Ambiguiti (mai multe sensuri)
Aplicaie de prelucrri de date

Control al zborului n timp real


52

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Recenzia cerinelor

Cea mai des ntlnit form de validare


Trebuie s implice clienii i utilizatorii, dar i alte persoane din
echip sau din organizaie
List de verificare:
Sunt include toate resursele hardware?
Sunt definii timpii de rspuns ai funciilor?
Sunt definite toate interfeele externe i de date?
Sunt specificate toate funciile dorite de client?
Este testabil fiecare cerin?
Este definit starea iniial a sistemului?
Sunt specificate rspunsurile la condiii excepionale?
Sunt specificate posibilele modificri ulterioare?
53

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Teste de utilizabilitate

Crearea unei atmosfere n care software-ul


este testat, nu utilizatorul
Utilizatorul gndete cu voce tare

Observatorul aude monologul intern

Observatorul nu interfereaz cu explorarea i


descoperirea funcionalitilor software-ului
de ctre utilizator

54

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Metrici de calitate

Numrul de erori descoperite

Se poate estima statistic distribuia defectelor


Prea puine erori
SRS foarte bun sau recenzie de slab calitate
Prea multe ambiguiti n SRS
Continuarea analizei sau construirea unui prototip

Frecvena cererilor de modificare

Msur a stabilitii pentru fazele ulterioare


Frecvena scade n timp
Dac nu, analiza nu a fost fcut bine
55

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Faza de analiz
1. Introducere
2. Metode de analiz
3. Tipuri de specificaii
4. Documentul specificaiilor cerinelor software
5. Validarea
6. abloane i principii de analiz
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Probleme cheie pentru cerine

Separarea scopurilor i mijloacelor

Identificarea cerinelor cheie

Pericol: prea puine cerine detaliate

Evoluia cerinelor

Cerine att de generale nct toat lumea este de acord cu ele, ns


nseamn lucruri diferite pentru persoane diferite (creterea securitii,
interfa prietenoas, produs competitiv)

Gestionarea cerinelor complexe

Accent pe valoare

Evitarea capcanei ambiguitii

Cerinele sunt scopurile iar ideile, arhitectura, instrumentele sunt mijloacele

Cerinele trebuie s reflecte realitatea curent, evoluia lor trebuie


documentat

Cerinele scalare

Cerinele trebuie cuantificate pe niveluri numerice


Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

57

abloane de analiz

Se axeaz pe nivelul de organizaie i


surprind informaii specifice problemei

Nu asigur instruciuni pentru rezolvare

Categorii:

abloane conceptuale
abloane de analiz a problemei
abloane de construcie
58

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

ablonul
arhetip
Parte
(Party)
59

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Anti-abloane

Specificarea pe erveel
Cerinele telefonice
Retro-specificarea

60

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Concluzii

Faza de analiz specific CE dorim s construim


Se refer la domeniul problemei
Exist 3 activiti principale n aceast faz:

Analiza cerinelor
Specificarea cerinelor
Validarea cerinelor

Documentul specificaiilor cerinelor software (SRS)


reprezint o mulime de cerine convenite ntre client
i echipa de dezvoltare
61

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm