Documente Academic
Documente Profesional
Documente Cultură
Managementul
proiectelor
software în aplicaţii
medicale
Ţine cu tărie învăţătura şi nu o părăsi,
păzeşte-o căci ea este viaţa ta.
(Pilde, 4;12)
Obiective
Învăţăm
ce e un proiect (“cu se se mănâncă”) şi cum se
derulează
despre munca în echipă
cum se conduce un proiect în general şi un
proiect software în special
care sunt particularităţile proiectelor software de
informatică medicală ?
un pic de psihologie aplicată
Altele
Managementul proiectelor
software în SIS
Altele
Aplicaţii de e- Opţionale
Health
Evidenţa electronică
a stării de sănătate
a pacientului
Cunoştinţe anterioare
Ingineria programării
mai ales de programare
7
Condiţii
Cursuri marți 16-18, A115
Titular: Vasile Stoicu-Tivadar
Prezenţa obligatorie la curs și proiect !
Proiect: joi 18-20 (dar într-un stil mai
flexibil, mixat cu prelegerile, din 2 in 2 sapt.)
Vasile Stoicu-Tivadar
Sala proiect: B019
Bibliografie:
•curs în format pdf
•alte documente necesare pentru proiect, în Word sau pdf
FACULTATEA DE AUTOMATICĂ ŞI CALCULATOARE, TIMISOARA
Departamentul de Automatică şi Informatică Aplicată
http://www.aut.utt.ro
Nu
suportăm:
Înşelătoria
Pilele, intervenţiile
Lipsa de caracter
9 / 53
FACULTATEA DE AUTOMATICĂ ŞI CALCULATOARE, TIMISOARA
Departamentul de Automatică şi Informatică Aplicată
http://www.aut.utt.ro
Interzis :
Bună !
(Bună ce? ...) bună să-ți fie
inima...
Laborant
Chestie
10 / 53
Introducere
12 / 53
Rezolvarea problemelor
(sinteză)
După ce am analizat problema,
trebuie să construim soluția
din componente care rezolvă
aspecte diferite ale
problemei ->
Sinteză- punem împreună
o structurp mare din blocuri
constructive mai mici
Important: Compunerea unor
soluții individuale poate să fie la
fel de provocatoare ca și găsirea
soluției înseși.
(a se vedea scrierea unui roman: dicționarul cuprinde toate
cuvintele care vor fi folosite în roman, dar partea dificilă a
scrisului constă în a decide cum să fie compusă și organizată
cartea întreagă)
13 / 53
DE CE calitatea produselor
software este importantă ?
Deseori sistemele nu
Sunt utilizatorii funcționează așa cum am
mulțumiți cu dori și ne-am aștepta:
calitatea produselor codul conține erori dar este
software suficient de bun pentru a
demostra viabilitatea unei
DA și NU abordări
Calitatea
produsului Calitatea
produsului în
contextul
Calitatea mediului (ca
procesului afacere-
care conduce business) în care
la produs produsul va fi
utilizat
Următorul
15 / 53
Calitatea produsului software
• Software-ul poate
fi evaluat de
utilizarori de
exemplu după
numărul și tipul
căderilor (minore,
majore,
catastrofice), dacă Model care
realizează ce leagă
doresc, dacă este perspectiva
ușor de învățat, proiectantului
ușor de folosit etc. (perspectiva
internă) de cea
•Software-ul poate
a utilizatorului
fi evaluat de
(perspectiva
asemenea de către
externă)
proiectanți
(caracteristicii
interne: numărul și Modelul de calitate al lui
tipul erorilor ca și McCall
măsură a calității
produsului) Înapoi
16 / 53
Calitatea procesului software
Multe activități afectează calitatea produsului.
E demn de atenție răspunsul la întrebări precum:
•Unde și când găsim mai degrabă un anume
tip de erori ?
•Cum să găsim erorile, cât mai degreme în
cadrul procesului de dezvoltare software ?
•Cum să realizăm sisteme tolerante la
defectare astfel încât să minimizăm
posibilitatea ca o eroare să devină o cădere ?
•Există posibilități alternative care să ducă la
un proces mai eficient în asigurarea calității ?
Putem îmbunătăți calitatea unui produs prin
utilizarea unor metodologii și standarde de
calitate precum Capability Maturity Model (CMM)
sau varianta mai modernă CMM Integrated
Înapoi
(CMMI), ISO 9000 și variantele sale adaptate la
neceesitățile dezvoltării software , Software
Process Improvement and dEtermination (SPICE)
17 / 53
Calitatea produsului în contextul afacerii
instruire productivitate
programare proces
risc clienți
Înapoi
calitate costuri
“afacere” (rentabilitate)
18 / 53
Cine practică Ingineria Programării ?
Un element cheie al dezvoltării software este comunicarea dintre client
și dezvoltator.
Situații:
- clientul nu este utilizator
- utilizatorul , clientul și
dezvoltatorul sunt aceași entitate
- clientul poate decide să
achiziționeze software comercial (
commercial off-the-shelf software -
COTS ) pentru a fi încorporat în
produsul final
- utilizarea unor dezvoltatori
suplimentari (subcontractori) care
vor elabora subsisteme
- ca și soluții “la cheie”
Participanții în procesul de dezvoltare software
- pot să necesite un
proces separat de
integrare
19 / 53
ABORDAREA SISTEMICĂ
Often, the hardware and software we put toghether must interact with
users, with other software tasks, with other pieces of hardware, with
existing databases, with other computer systems -> with the
boundaries of the project.
20 / 53
ELEMENTELE UNUI SISTEM
Descriem un sistem enumerând părțile sale și identificând modul în care se
manifestă relațiile dintre componente. Acesta este primul pas în analiza unei
probleme.
intrări
Elemente:
Activități și obiecte
activitate – ceva ce ce întâmplă în sistem
(de regulă descris ca un eveniment inițiat de
un trigger – transformă ceva în altceva
schmibându-i caracteristicile – prin translatare,
schimbare, combinare etc. )
obiect sau entitate – elementele implicate în
activități – uzual relaționate cumva (tabele,
matrici, înregistrări etc. sau văzute
independent, având asociată o listă de
caracteristici – ex. Abordarea Orientată pe
Obiecte)
Relații și marginile sistemului -unele elemente
traversează marginile pentru a intra în sistem, altele sunt
produse ale sistemului și îl părăsesc pentru a fi utilizate
de alt sistem etc.
ieșiri
21 / 53
ELEMENTELE UNUI SISTEM - EXEMPLE
22 / 53
ABORDAREA INGINEREASCĂ
Îndată ce am înțeles natura unui sistem, putem să îl construim. Aici, partea
“inginerească” a ingineriei programării devine mai importantă.
Un reprezentant al clasei de mijloc își cumpără mașină de tuns iarba (scumpă) pentru a
întreține gazonul; deoarece folosind această mașină nu depune efortt, este sedentar
deoarece își risipește unica posibilitate de a depune efort, neavând timp în afară de tunsul
ierbii și își cumpără în consecință și o bicicletă ergonomică (scumpă) pentru a-și menține
sănătatea, în loc să își cumpere o coasă (ieftină) pentru a rezolva ambele probleme.
Sunt foarte multe cereinte antagonisce spre rezolvare. Acesta este un motiv
pentru care s-a nascut ingineria software (inca din 1968 - la conferinta NATO)
Ingineria software intentioneaza sa:
• stabileasca ciclul de viata al programleor si continutul etapelor acestora
• elaboreze metode potrivite si tehnici pentru usurarea proiectarii soft
conform unor diferite cicluri de viata
• elaboreze metode pentru activitatile de concepere si administrare
Exemplul 2
Implementarea prin:
•parametrizari
•Structuri de date potrivite,
•Tehnici speciale de
programare,
•Scrierea codului pentru
refolosire etc.
27 / 53
OBIECTIVE ALE INGINERIEI SOFTWARE
(continuare 1)
Eficienta – este un indice calitativ cu doua intelesuri :
• ca performanta a softului insusi (eficienta ca viteza de calcul,
memorie ocupata, etc.) – asociata cu calitatea software
• ca si cost de producere (productivitate) – asociata cu punctul de vedere
al afacerilor (presiunea pietei)
Producatorii trebuie sa obtina un soft mai bun (prin asigurarea unui standard de
calitate) si cat mai rapid posibil (cereri antagonice).Tehnicile ingineriei software
ajuta la rezolvarea acestora.
Fiabilitatea – se refera la evitarea, gasirea si repararea greselilor cat de repede
permite procesul de proiectare, si restabilirea functionarii corecte daca apar erori
de functionare. Nu putem impune aceasta prin adaugarea, mai tarziu, de
componente speciale pentru a creste siguranta;
- este foarte important pentru procesul de control software
O proiectare soft buna, care tine cont de toate aceste obiective, este
influentata puternic de catre metode, tehnici si unelte descrise si impuse de catre
inginerul soft.
29 / 53
PRINCIPII ALE INGINERIEI SOFT
Nivel
1. Modularitatea - presupune dividerea Nivel
strategic
superior
programului in entitati diferite cu intrari si iesiri in ierarhie
bine delimitate, numite module program si
structurarea programului in module pentru o mai Obiective
usoara obtinere a unor obiective sigure. (comenzi)
Un modul este cu atat mai independent de
rapoarte
hardware cu cat este mai sus in ierarhia
modulelor -> urmariti diferenta dintre Nivel
Nivel tactic
obiective ale modulelor din ierarhie scazut in
ierarhie
Procesarea
2. Abstractizarea- identificare a proprietatilor controlata a
esentiale ale unor entitati aparent diferite semnalelor
proceselor
industriale
30 / 53
PRINCIPII ALE INGINERIEI SOFT
continuare
3. Localizarea – punerea in vecinatatea fizica a elementelor cu unele
legaturi intre ele
Examplu: functiile unei biblioteci (calcule matematice, interfete grafice,
etc.), functii langa structurile de date folosite, etc.
4. Ascunderea – accentuarea elementelor esentiale si ascunderea detaliilor
care nu afecteaza alte componente ale sistemului
Exemplu: abordarea orientata pe obiecte - incapsularea
Observatie: diferenta dintre abstractizare si ascundere: amandoua
accentueaza aspecte esentiale dar ascunderea defineste restrictiile de acces.
5. Uniformitatea - asigura consistenta programelor, este specifica fiecarui
inginer in programare
Examplu: conventiile proprii ale fiecarui programator in notatii
6. Completitudinea– asigura ca nici una din elementele esentiale nu sunt
omise.
Examplu: - notatiile trebuie sa exprime tot ce este necesar (referitor si la
uniformitate)
7. Confirmabilitatea – informatiile cerute de catre procesul de testare sa
fie formulate explicit si de asemenea disponibile .
Exemplu: necesitatea procedurilor de testare (ca document) 31 / 53
INSEMNATATEA PROCESULUI
Am vazut deja ca procesul de
proiectare are cativa pasi.
Orice proces are urmatoarele caracteristici:
O serie de sarcini cerute:
•Descrie toate activitatile majore ale procesului O serie de pasi implicand
•Foloseste resurse, fiind supus unor serii de activitati, constrangeri,
constrangeri si produce o serie de produse resurse care produc un
intrermediare si finale produs dorit.
•Pot fi formate din subprocese (fiecare are
propriul model de proces)
Cand procesul implica crearea
•Fiecare activitate a procesului are criterii de unui anume produs, ne referim la
intrare si iesire proces ca la un ciclu de viata.
Totusi, procesul de dezvoltare soft
•Activitatiile sunt organizate in secvente
este numit ciclu de viata soft,
•Fiecare proces are un set de principii de deoarece descrie viata unui produs
ghidare care explica obiectivele fiecarei activitati soft de la conceptie la
implementare, livrare, folosire si
•Constrangerile pot fi aplicate unei activitati,
intretinere.
resurse sau produs (exemplu: bugetul sau
programarile pot constrange timpul unei
activitati)
32 / 53
MODELELE PROCESULUI SOFT
Multe modele ale proceselor sunt descrise in literatura ingineriei
soft. Construirea unui model si discutarea subproceselor ajuta
echipa sa distanta dintre ceea ce ar trebui sa fie si ceea ce este.
33 / 53
MODELUL CASCADA (WATERFALL)
Unul din primele
modele
Pasii sunt descrisi
in cascada unul
dupa altul
Un stagiu de
dezvoltare trebuie
terminat inainte de-
a incepe urmatorul
Prezinta un nivel
mare de vizualizare
a ceea ce se
intampla in timpul
dezvoltarii
Sugereaza
programatorilor
secventa
evenimentelor pe
care ei ar trebui sa
se astepte sa le
intalneasca
34 / 53
MODELUL CASCADA (WATERFALL)
Programele trebuie proiectate, testate, implementate şi exploatate. În general se
consideră că fazele prin care trece un program sunt:
Analiza cerinţelor - faza colaborării dintre beneficiar şi echipa de elaborare
pentru a se stabili definiţia exactă a problemei (cerinţe şi restricţii) rezultând în
general o temă de proiectare
Elaborarea specificaţiilor - faza în care se elaborează un set de specificaţii
formale (descrieri abstracte) pentru programe cuprinzând o descriere detaliată
pentru toate entităţile funcţionale precum şi pentru toate restricţiile.
Proiectarea programelor - se stabileşte structura pe module, raporturile dintre
ele, modul de comunicare, parametrii de intrare-ieşire, tipuri de date etc..
Implementarea programului - programarea conform celor stabilite la punctele
anterioare. Se foloseşte un limbaj adecvat pe un calculator gazdă (host
computer)
Instalarea şi verificarea – pe calculatorul ţintă, al beneficiarului, în condiţii de
exploatare
Întreţinerea programului - asigură eliminarea erorilor ce se manifestă după
pornirea aplicaţiei
35 / 53
MODELUL CASCADA (WATERFALL)
36 / 53
MODELUL CASCADA - continuare
Poate fi foarte folositor pentru programatori in a
produce ceea ce doresc
Simplitatea lui il face mai usor de explicat clientilor
Multe modele complexe sunt derivate din modelul
cascada
dar (inconveniente)
nu reflecta intotdeauna modul in care
este implementeat codul
Modelul nu asigura ghidarea sefilor de
proiecte referitor la cum sa faca fata
schimbarilor si activitatilor care
probabil vor aparea neasteptat in timpul
implementarii (nu ne pregateste pentru
« surprize »)
Lipsa tratarii soft a ,,procesului de
rezolvare a problemelor’’ (producerea
softului nu este o rutina ci un proces de
creatie) 37 / 53
PROTOTIPURILE
Procesul de implementare soft poate ajuta
pentru a controla ‘’caderile’’ prin
includerea de activitati si subactivitati
care sporesc intelegerea; prototipul este
un asemenea subproces
Un prototip este un produs partial finalizat
care face posibila o examinare a unor
aspecte ale sistemului propus de catre
cumparator si producator pentru a
decide daca este convenabil sau se
apropie de produsul final.
Adesea, interfata cu utilizatorul este
construita si testata ca un prototip, de
aceea utilizatorul intelege cum va arata
noul sistem si designerii au o imagine
mai clara despre cum doreste utilizatorul
sa interactioneze cu sistemul.
39 / 53
MODELUL DE PROTOTIPIZARE
40 / 53
PROTOTIPIZAREA - continuare
Caile:
Prototipul facut pe hartie (schite, desene, tabele, rapoarte)
Construirea unui prototip functional (exemplu: interfete construite in Visual
Basic – doar acestea, fara prelucrari)
Folosirea altor programe existente ca modele de referinta
Avantaje: Dezavantaje:
• Putem evita riscul unui model • Clientul crede ca aplicatia finala nu este
cascada – identificand departe de prototip deoarece acesta nu
neintelegerile despre cerinte, stie deaspre partile ascunse ale
dintre programator si client
aplicatiei
• Imbunatatirea dialogului cu
clientul • Programatorul are tendinta sa neglijeze
sau sa uite parti ale aplicatiei care
lipsesc in prototip
41 / 53
DEZVOLTAREA BAZATA PE FAZE
Intervalul de timp dintre cerintele aplicatiei si livrarea sistemului se numeste '‘durata de ciclu'' .
Un mod pentru a reduce acest interval este dezvoltarea bayata pe faze: sistemul este proiectat ca el sa
poata fi livrat în bucãti (sau versiuni), permitandu-le utilizatorilor o parte functionala în timp ce restul este
dezvoltat. Astfel, existã douã sisteme ce functioneaza în paralel - sistemul in exploatare (folosit de client) si
sistemul in dezvoltare.
Sistemul in dezvoltare este versiunea urmãtoare care este pregãtitã sã înlocuiascã sistemul in exploatare
curenta.
Pentru dezvoltarea iterativã, 'varianta 1' contine toate functiile într-o forma
primitiva ( exemplu taie & lipeste este lenta), pe cand 'varianta 2' sporeste
calitatea functiilor etc. Fiecare noua versiune îmbunãtãteste una anterioara
într-un anume fel.
43 / 53
Incrementari si iteratii - continuare
44 / 53
MODELUL SPIRALA
45 / 53
MODELUL SPIRALA – continuare 1
46 / 53
MODELUL SPIRALA– continuare 2
(sau alta
reprezentare
simplificata)
Acest model este folosit pentru proiecte la scara mare, care implica
un risc deosebit (adica resurse financiare mari).
47 / 53
Dezvoltare AGILĂ
48 / 53
Dezvoltare AGILĂ– continuare
PRINCIPII
Satisfacerea nevoilor clientului prin livrarea continuă și rapidă
de software util
Software-ul este livrat frecvent (săptămâni)
49 / 53
Exemple de dezvoltare AGILĂ
SCRUM- 1
1. SCRUM
Teoria Scrum
Scrum este bazat pe o teorie empirică de control a proceselor, sau
empirism. Empirismul afirmă faptul că sursa cunoștințelor este experiența,
și luarea deciziilor se bazează pe ceea ce este știut. Scrum folosește o
abordare iterativă, incrementală cu scopul de a optimiza predictibilitatea și
de a controla riscul.
50 / 53
Exemple de dezvoltare AGILĂ
SCRUM - 2
Inspecția Utilizatorii Scrum trebuie să inspecteze în mod firesc
progresul făcut către îndeplinirea obiectivului, astfel încât să
detecteze abaterile nedorite. Inspecția lor nu trebuie să fie atât de
frecventă încât să afecteze modul de lucru. Inspecțiile sunt cele mai
benefice atunci când sunt efectuate în mod sârguincios la locul de
muncă.
Adaptarea Dacă un inspector stabilește că unul sau mai multe aspecte
ale procesului deviază în afara unor limite acceptabile, și că produsul
rezultat va fi inacceptabil, procesul sau materialul procesat trebuie
să fie ajustat.
51 / 53
Exemple de dezvoltare AGILĂ
SCRUM - 3
Sprint-ul (The Sprint) Inima Scrum-ului este un Sprint, cu o durată de maxim o
lună, în timpul căruia este creat un Increment al produsului, cu statusul "Finalizat"
("Done"), utilizabil și potențial livrabil. Sprint-urile au durate consistente pe toată
durata efortului de dezvoltare. Un Sprint nou începe imediat după aflarea concluziilor
Sprint-ului anterior.
Sprint-urile conţin şi constau din Ședința de Planificare a Sprint-ului (Sprint Planning
Meeting), Ședința Scrum Zilnică (Daily Scrums), activitatea de dezvoltare, Ședința de
Revizuire a Sprint-ului (Sprint Review Meeting) și Retrospectiva Sprint-ului (Sprint
Retrospective).
În timpul Sprint-ului:
Nu se aduc modificări care ar putea afecta ținta Sprint-ului;
Componenţa echipei de dezvoltare şi obiectivele de calitate rămân constante; şi,
Posibilitățile (scope) pot fi clarificate şi re-negociate între Product Owner şi echipa
de Dezvoltare (Development Team) pe masură ce se progresează.
52 / 53
Exemple de dezvoltare AGILĂ –
CLEANROOM - 1
Numele “cleanroom” vine de la procesul de fabricare a
semiconductorilor (“camera curată”)
Filosofia este mai degrabă evitarea defectelor decât
înlăturarea lor
Metodă de dezvoltare software bazată pe metode
formale
Verifică specificaţiile de proiectare folosind demonstrarea
corectitudinii, cu metode matematice (v. cap. Testare)
Se bazează puternic pe metode de testare statistice
pentru a descoperi erorile de impact major
În general se bazează pe metode de dezvoltare
incrementale
53 / 53
Exemple de dezvoltare AGILĂ –
CLEANROOM - 2
ETAPE
Cerinţe – se defineşte, pentru fiecare increment, o descriere a
cerinţelor la nivelul clientului
Specificarea structurii de cutie (box) – descriu specificaţiile
funcţionale
Proiectarea Formală – specificaţiile (“cutii negre”) sunt rafinate
iterativ (cu un increment, astfel ca să devină analoge cu proiectarea
arhitecturală şi cea procedurală (“cutii de stare”, respectiv “cutii
transparente”)
Verificarea corectitudinii – prin chestionare, de către echipă
Testare Statistică – un eşantion al tuturor cazurilor de test
posibile este mai degrabă utilizat decât testarea exhaustivă
Certificarea – după ce verificarea, inspecţia şi testele de uzanţă
sunt terminate şi toate defectele înlăturate, incementul este
certificat şi gata pentru integrare
54 / 53
Exemple de dezvoltare AGILĂ –
CLEANROOM - 3
Formally Error rework
specify
system
Develop
operational Design Test
profile statistical integrated
tests system
55 / 53
PROIECT (în general)
Ce este un proiect ?
Are de-a face cu realizarea unor schimbări într-o manieră organizată.
Definiții:
O formă temporară de organizare căreia i se alocă resurse pentru a realiza
activitățile menite să aducă o schimbare benefică.
Un demers cu caracter unic și tranzitoriu, constituit în vederea atingerii unui
rezultat dorit.
Un proces unic, constând dintr-un set de activități coordonate și controlate,
cu date de începere și finalizare, având scopul realizării unui obiectiv
conform anumitor cerințe specifice, încluzând constrângeri de timp, costuri
și resurse.
56 / 53
Proiect
Să aibă un buget
57 / 53
Proiect
Justificare economică:
Ce doriți să realizați
De ce
Cînd
Cine va fi afectat