Documente Academic
Documente Profesional
Documente Cultură
gș e‐content
pentru învățământul superior tehnic
Instrumente pentru Dezvoltarea Programelor
p g
1. Introducere in problematica dezvoltării programelor software.
Modele actuale de dezvoltare Procesul software si rolul
Modele actuale de dezvoltare. Procesul software si rolul
instrumentelor.
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Etapele dezvoltarii software
„Cel care nu reuseste sa planuiasca, planuieste
un esec.““ (proverb)
( b)
IDP – Instrumente pentru Dezvoltarea Programelor 2
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Recapitulare noţiuni
l anterioare
Proces software = set structurat de activităţi necesare
pentru dezvoltarea unui sistem software:
Specificaţie
Proiectare
Implementare
Validare
V lid
Evoluţie
Un model
U d l al procesului
l l i software reprezintă
f i ă o
reprezentare abstractă a respectivului proces
= o descriere
d i a unuii proces dintr‐o anumită
di i ă perspectivă
i ă
IDP – Instrumente pentru Dezvoltarea Programelor 3
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Modele generice de procese de dezvoltare
Modelul cascadă
Faze separate şi distincte de specificare şi dezvoltare
Modelul evoluţionar
ţ
Specificaţia, dezvoltarea şi validarea sunt etape întreţăsute
Dezvoltarea bazată p
pe componente
p
Sistemul este asamblat pornind de la un set de componente pre‐
existente
Există variante ale acestor modele:
Dezvoltarea formală → implică folosirea unui proces de dezvoltare
bazat pe modelul cascadă, dar specificaţia formală este
formală este rafinată în
în
câteva iteraţii succesive până la stadiul de proiect implementabil
IDP – Instrumente pentru Dezvoltarea Programelor 4
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
O b d
O abordare pragmatică
i ă
Planul general al unui proiect software:
1. Ce trebuie facut? (‐> task‐uri/activităţi/paşi)
2. De ce să implementăm un task? (‐> rezultate, produse)
3. Când ar trebui făcut? (‐> planificare)
4. Cine e implicat? (‐> oameni, roluri, responsabilităţi)
5
5. Cum ar trebui facut? (‐> metode, standarde, instrumente)
facut? (‐> metode standarde instrumente)
IDP – Instrumente pentru Dezvoltarea Programelor 5
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
F l
Fazele unui proces (1)
i (1)
Abordarea cea mai simplă:
p
1. Scriem/modificăm programul (etapa implementării)
2. Găsim defecte, ne întoarcem la 1.
Probleme:
Modificările ad‐hoc efectuate de‐a lungul timpului încurcă structura
programuluil i
Rezultatul: schimbări ulterioare costă din ce în ce mai mult (schimbi într‐o
parte, strici în alta, …)
Soluţia:
O etapă de proiectare în care este definită structura întregului program
Modificările aduse implementării sunt permise, dar
Modificările aduse permise dar ele trebuie să respecte
proiectul
IDP – Instrumente pentru Dezvoltarea Programelor 6
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
F l
Fazele unui proces (2)
i (2)
Model de proces
p îmbunătăţit:
ţ
1. Definim un proiect al programului (etapa de proiectare)
2. Scriem/modificăm programul (etapa implementării)
3. Găsim defecte, ne întoarcem la 2.
Probleme:
bl
Programul face ceea ce doreşte utilizatorul?
Rezultatul: programul poate fi refuzat de client.
Soluţia:
O
O etapă
etapă de analiză
de analiză în care sunt
în care sunt specificate cerinţele programului
Proiectul este definit astfel încât să fie satisfăcute cerinţele utilizatorului
IDP – Instrumente pentru Dezvoltarea Programelor 7
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
F l
Fazele unui proces (3)
i (3)
Un model chiar mai bun:
1. Analizăm cerinţele utilizatorului (faza de analiză)
2. Definim un proiect al programului (etapa de proiectare)
3. Scriem/modificăm programul (etapa implementării)
4. Găsim defecte, ne întoarcem la 3.
E de ajuns?
Lipseşte etapa de planificare şi pregătire a testării (etapa 4)
– sistemul e sistematic verificat de posibile defecte (etapă
de sine stătătoare)
de sine stătătoare)
IDP – Instrumente pentru Dezvoltarea Programelor 8
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
E
Etapele unui proces
l i
Etapa Rezultat
A li
Analiza Specificarea
S ifi cerintelor
i l utilizatorului
ili l i – posibil
ibil un
document al cerintelor
Proiectare Specificarea structurii si componentelor aplicatiei
software – posibil un model al sistemului
Implementare Programul executabil (calitate “alpha”)
Testare Program executabil (calitate “release”)
release )
SSoftware Development Life Cycle (SDLC)
f D l Lif C l (SDLC)
Modelul generic al dezvoltării unui proiect software
M d l l i ld l ă ii i i f
IDP – Instrumente pentru Dezvoltarea Programelor 10
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Cu ce dezvoltam?
d l ?
Instrumente:
Constructie: make, ant, rake…
Compilare: gcc, Microsoft Visual Studio, CodeWarrior, Xcode…
Depanare: gdb, GNU Binutils…
Dezasamblare
Generatoare de documentatie: doxygen, javadoc, asciidoc…
Metode formale
Verificare a compatibilitatii componentelor binare
Generatoare de interfete
Generatoare
Generatoare de parsere: Lex, Yacc
de parsere: Lex Yacc
Analiza performantelor
Colaborare: cvs, svn, git, bazaar…
Analiza statica: jtest, lint...
statica: jtest lint
…
IDP – Instrumente pentru Dezvoltarea Programelor 11
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Ce urmeaza??
Integrated Development Environments (IDEs)
g p ( )
Multe instrumente intr‐un singur pachet
Proiecte de dimensiuni mari
Dezvoltare de aplicatii
de aplicatii nivel “enterprise”
Xcode
Code::Blocks
IDP – Instrumente pentru Dezvoltarea Programelor 12
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Enterprise??
Functii business la nivel de organizatie comerciala
Performanta
Scalabilitate
Robustete
IDP – Instrumente pentru Dezvoltarea Programelor 13
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Limbaje, Procese si Instrumente
b
Limbaje software
Instrumentele
nu pot exista
separat
Procese Instrumente
software software
IDP – Instrumente pentru Dezvoltarea Programelor 14
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Ce este ingineria programelor software?
Adesea comparata cu constructia industriala
e.g., construirea unui pod
O analogie buna:
Dimensiunea conteaza: casuta cainelui vs. un zgarie‐nori
Efort de echipa ce necesita planificare corecta
Dificultati asemanatoare in modificarea proiectului
Termeni comuni: constructie, arhitectura, componente…
IDP – Instrumente pentru Dezvoltarea Programelor 15
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Software: probleme uzuale
f bl l
Dimensiunea
Interactiunea cu oamenii
Siguranta
Securitatea
S i
Portabilitatea
Costul
Costul
Certitudinea asupra cerintelor
IDP – Instrumente pentru Dezvoltarea Programelor 16
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Curba sigurantei
b
Hardware‐ul se
Hardware ul se
uzeaza in intregime
Software‐ul sufera
modificari
df
sau mediul sau sufera
modificari
sursa: “Software Engineering: CS169”, Prof. Sen, Berkeley University
IDP – Instrumente pentru Dezvoltarea Programelor 17
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
IDP – Instrumente pentru Dezvoltarea Programelor 18
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
IDP – Instrumente pentru Dezvoltarea Programelor 19
19
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Solutia?
l ?
Specificatii
Notarea functionalitatilor cerute din partea aplicatiei software
Insa:
•Toata lumea trebuie sa le inteleaga
•Trebuie sa mentinem specificatiile actualizate
Probleme?
Pot exista ambiguitati si contradictii in intelegerea
specificatiilor
Acestea conduc la defecte de dezvoltare
…
IDP – Instrumente pentru Dezvoltarea Programelor 20
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Problema #1
bl
O specificatie permite:
Constructia in echipe
Verificarea
f ca aplicatia
l software functioneaza
f f = proces dificil:
df l
IDP – Instrumente pentru Dezvoltarea Programelor 21
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Problema #2
bl
Minimizarea timpului
Time‐to‐market: presiune sporita asupra procesului de
dezvoltare software
Cod scris mai repede?
Angajam mai multi programatori!
multi programatori!
Cati programatori?
Cate task‐uri
task uri independente putem genera
Lucru la mai multe module concurent
Paralelism = timp
timp salvat
IDP – Instrumente pentru Dezvoltarea Programelor 22
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Dezvoltare paralela?
l l l ?
Mai multi oameni
M i li i = maii multa
l comunicatie
i i
Greu de gestionat
Overhead de comunicatie
e.g.,
e.g., arhitectura
arhitectura pipeline
IDP – Instrumente pentru Dezvoltarea Programelor 23
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Interfete
f
IDP – Instrumente pentru Dezvoltarea Programelor 24
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Definirea interfetelor
f f l
Ce sunt interfetele?
Specificatii… de un tip special
componente
componente …
…
si oameni
programatorii
t ii decid
d id asupra partilor
til interne
i t
IDP – Instrumente pentru Dezvoltarea Programelor 25
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Arhitectura software
h f
Definirea interfetelor
Definirea interfetelor
putem descompune sistemul in parti separate
granitele conduc la definirea de interfete
Decompozitia? depinde de:
ce face sistemul
cum construim sistemul
cine construieste sistemul
IDP – Instrumente pentru Dezvoltarea Programelor 26
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Decompozitia: Ce face sistemul
f l
Decompozitia: Cum construim sistemul
IDP – Instrumente pentru Dezvoltarea Programelor 28
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
D
Decompozitia: Cine construieste sistemul
iti Ci t i t it l
Arhitectura software reflecta structura organizatiei ce construieste
aplicatia
Ex: 5 programatori = 5 componente
IDP – Instrumente pentru Dezvoltarea Programelor 29
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Concluzii
l
Ingineria programelor se ocupa de cateva aspecte:
Specificare: Cunoaste ce vrei sa faci
Proiectare: Dezvolta un plan eficient de a‐l face
Implementare: Pune‐l in practica
l l
Validare: Verifica ca in final ai obtinut ce ai dorit
Instrumentele de dezvoltare a aplicatiilor intervin in toate aceste
etape
IDP – Instrumente pentru Dezvoltarea Programelor 30
Platformă de e‐learning și curriculă e‐content pentru
învățământul superior tehnic
Sumar
Procesul software si fazele acestuia
Procesul software si fazele acestuia
Probleme uzuale in ingineria programelor si modalitati de
rezolvare a acestora
Specificatii
Interfete
Arhitectura software
IDP – Instrumente pentru Dezvoltarea Programelor 31