Sunteți pe pagina 1din 43

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Instrumente Pentru Dezvoltarea


Programelor

Ciprian Dobre
ciprian.dobre@cs.pub.ro

Instrumente pentru dezvoltarea programelor – Curs 1 1


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

2 Instrumente pentru dezvoltarea programelor – Curs 1 2


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Despre IDP:
• My job is not to teach you what you should
think!

• My job is to teach you how to think for


yourselves!

2 Instrumente pentru dezvoltarea programelor – Curs 1 3


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Despre Curs
• Site: http://curs.cs.pub.ro
• Instrumente pentru dezvoltare
– biblioteci de nivel inalt
– tehnologii avansate
– paradigme moderne de programare
– medii de dezvoltare vizuale
• Concepte de proiectare si dezvoltare a sistemelor de
programe
• Abordari moderne de dezvoltare a programelor, a
tehnologiilor de dezvoltare existente si a particularitatilor
unor medii de dezvoltare de ultima generatie

Instrumente pentru dezvoltarea programelor – Curs 1 4


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Competente
• Aplicatii software
– Proiectare, dezvoltarea, evaluarea, asigurarea
mentenantei
– Solutii tehnologice moderne
– Integrarea in diverse arhitecturi de dezvoltare;

• Analizarea proprietatilor unor sisteme software;


• Evaluarea cititica a celor mai relevante tehnologii
existente in contextul posibilei integrari a
acestora in diverse sisteme software.

Instrumente pentru dezvoltarea programelor – Curs 1 5


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Let’s have fun programming!

2 Instrumente pentru dezvoltarea programelor – Curs 1 6


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Capitole principale (1)


• Etapele dezvoltarii aplicatiilor
• Instrumente CASE
• Modele software si instrumente de
modelare
• Metode formale
• IDEs
• Asigurarea calitatii produselor software
• Instrumente in ciclul de dezvoltare
software. Best practices.
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Capitole principale (2)


• Rapid Application Development
• Reutilizabilitatea software
• Dezvoltarea orientata pe componente
• Sisteme critice si dezvoltarea sistemelor
critice.
• Dezvoltarea orientata pe servicii
• Dezvoltarea orientata pe aspecte
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Bibliografie
• Ian Sommerville, Software Engineering, 8th Edition, 2008

• Materiale postate pe site

– Slide-uri

– Notite de curs

Instrumente pentru dezvoltarea programelor – Curs 1 9


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Notarea

• Regulamentul - pagina cursului

Instrumente pentru dezvoltarea programelor – Curs 1 10


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Notarea

Nota = NotaParcurs + NotaExam


10 6 4

Cerinte minimale:
>= 2p din cele 4p pentru examenul final,
>= 3p din cele 6p pentru parcurs

Instrumente pentru dezvoltarea programelor – Curs 1 11


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Etapele dezvoltarii software (recap.)

“He who fails to plan, plans to fail.“


(Proverb)
„Cel care nu reuseste sa planuiasca,
planuieste un esec.“

Instrumente pentru dezvoltarea programelor – Curs 1 12


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Noţiuni
• Proces software = set structurat de activităţi
necesare pentru dezvoltarea unui sistem
software:
– Specificaţie
– Proiectare
– Implementare
– Validare
– Evoluţie
• Un model al procesului software reprezintă o
reprezentare abstractă a respectivului proces
• = o descriere a unui proces dintr-o anumită
perspectivă

Instrumente pentru dezvoltarea programelor – Curs 1 13


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

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ă pe componente
– 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 rafinată în câteva iteraţii
succesive până la stadiul de proiect implementabil
Instrumente pentru dezvoltarea programelor – Curs 1 14
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

O abordare pragmatică
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. Cum ar trebui facut? (-> metode, standarde,
instrumente)

• Există diverse modele de procese software


• Nu există un singur model de proces aplicabil pentru
oricare proiect software (nu există “one size fits all”)
• Folosirea unui proces de dezvoltare adecvat poate
îmbunătăţi calitatea produsului final

Instrumente pentru dezvoltarea programelor – Curs 1 15


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Fazele unui proces (1)


Abordarea cea mai simplă:
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 programului
– 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 ele trebuie să
respecte proiectul
Instrumente pentru dezvoltarea programelor – Curs 1 16
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Suna cunoscut ?

2 Instrumente pentru dezvoltarea programelor – Curs 1 17


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Fazele unui proces (2)


Model de proces î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:
– Programul face ceea ce doreşte utilizatorul?
– Rezultatul: programul poate fi refuzat de client.

• Soluţia:
– O etapă de analiză în care sunt specificate cerinţele programului
– Proiectul este definit astfel încât să fie satisfăcute cerinţele
utilizatorului

Instrumente pentru dezvoltarea programelor – Curs 1 18


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Fazele unui proces (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)
Instrumente pentru dezvoltarea programelor – Curs 1 19
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Etapele unui proces


Etapa Rezultat
Analiza Specificarea cerintelor utilizatorului – posibil 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”)

• Cele mai comune etape ale dezvoltării


• Mai pot apărea: deployment/lansare, operare, asigurarea
de suport, instruire, mentenanţă
• Toate fazele sunt cunoscute sub denumirea generică de
Software Development Life Cycle (SDLC)

Instrumente pentru dezvoltarea programelor – Curs 1 20


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Software Development Life Cycle (SDLC)


• Modelul generic al dezvoltării unui proiect
software

Instrumente pentru dezvoltarea programelor – Curs 1 21


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

E suficient?

2 Instrumente pentru dezvoltarea programelor – Curs 1 22


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Cu ce dezvoltam?
• 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 de parsere: Lex, Yacc
– Analiza performantelor
– Colaborare: cvs, svn, git, bazaar…
– Analiza statica: jtest, lint...
– …
Instrumente pentru dezvoltarea programelor – Curs 1 23
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ce urmeaza?
• Integrated Development Environments (IDEs)
– Multe instrumente intr-un singur pachet
– Proiecte de dimensiuni mari
– Dezvoltare de aplicatii nivel “enterprise”

Xcode

IBM Rational Application Developer

Code::Blocks

Instrumente pentru dezvoltarea programelor – Curs 1 24


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Enterprise?
• Functii business la nivel de organizatie
comerciala
• Performanta
• Scalabilitate
• Robustete

Instrumente pentru dezvoltarea programelor – Curs 1 25


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Limbaje, Procese si Instrumente


Limbaje software

Instrumentele
nu pot exista
separat

Procese Instrumente
software software

Instrumente pentru dezvoltarea programelor – Curs 1 26


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

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…
Instrumente pentru dezvoltarea programelor – Curs 1 27
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Software: probleme uzuale


• Dimensiunea
• Interactiunea cu oamenii
• Siguranta
• Securitatea
• Portabilitatea
• Costul
• Certitudinea asupra cerintelor

Instrumente pentru dezvoltarea programelor – Curs 1 28


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Curba sigurantei

• Hardware-ul se
uzeaza in intregime

• Software-ul sufera
modificari
– sau mediul sau
sufera modificari

sursa: “Software Engineering: CS169”, Prof. Sen, Berkeley University

Instrumente pentru dezvoltarea programelor – Curs 1 29


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

sursa: “Software Engineering: CS169”, Prof. Sen, Berkeley University

Instrumente pentru dezvoltarea programelor – Curs 1 30


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Solutia?
• 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

Instrumente pentru dezvoltarea programelor – Curs 1 31
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Problema #1
• O specificatie permite:
– Verificarea functionalitatii corecte a aplicatiei software
– Constructia in echipe

• Verificarea ca aplicatia software


functioneaza = proces dificil:
– Verificarea codului (code review)
– Instrumente de analiza statica
– Instrumente si metode de testare

Instrumente pentru dezvoltarea programelor – Curs 1 32


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Problema #2
• Minimizarea timpului
– Time-to-market: presiune sporita asupra procesului de
dezvoltare software
• Cod scris mai repede?
– Angajam mai multi programatori!
• Cati programatori?
– Cate task-uri independente putem genera
• Lucru la mai multe module concurent
– Paralelism = timp salvat

Instrumente pentru dezvoltarea programelor – Curs 1 33


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Dezvoltare paralela?

• Probleme ca in programarea paralela

• Mai multi oameni = mai multa comunicatie


– Greu de gestionat

– Overhead de comunicatie

• Constrangeri secventiale inerente


– e.g., arhitectura pipeline

Instrumente pentru dezvoltarea programelor – Curs 1 34


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Interfete
• Componentele dezvoltate ideal sunt
independente
– dar trebuie sa poata lucra impreuna in sistemul
final
• Interfete intre componente
– Pentru a le izola
– Pentru a ne asigura ca in final sistemul
functioneaza
• Interfetele nu pot suferi schimbari
(radicale)!
Instrumente pentru dezvoltarea programelor – Curs 1 35
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Definirea interfetelor
• Ce sunt interfetele?
– Specificatii… de un tip special

• Definesc granite intre


– componente …

– si oameni

• Ne putem opri la specificarea interfetelor


– programatorii decid asupra partilor interne
Instrumente pentru dezvoltarea programelor – Curs 1 36
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Arhitectura software

• 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


Instrumente pentru dezvoltarea programelor – Curs 1 37
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Decompozitia: Ce face sistemul


• Insasi aplicatia poate conduce la o
descompunere naturala
• e.g., compilator = banda de asamblare
compusa din componente pentru:
– Analiza lexicala
– Analiza sintactica
– Analiza semantica
– Generare cod intermediar
– Optimizare cod
– Generare cod final
– ...
Instrumente pentru dezvoltarea programelor – Curs 1 38
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Decompozitia: Cum construim sistemul


• Constructia unei case necesita si montarea
unor schele auxiliare
• … la fel si constructia aplicatiilor software
• Referire la:
– Cod suplimentar neinclus in produsul final
– Influenta subsistemelor externe incluse
• Ex: cod pentru testare, stub-uri, modalitati
de constructie si rulare a sistemelor
partiale, prototipuri…

Instrumente pentru dezvoltarea programelor – Curs 1 39


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Decompozitia: Cine
construieste sistemul
• Arhitectura software reflecta structura organizatiei
ce construieste aplicatia
• Ex: 5 programatori = 5 componente

Instrumente pentru dezvoltarea programelor – Curs 1 40


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Concluzii
• 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
– Validare: Verifica ca in final ai obtinut ce ai
dorit
• Instrumentele de dezvoltare a aplicatiilor
intervin in toate aceste etape
Instrumente pentru dezvoltarea programelor – Curs 1 41
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Sumar

• Procesul software si fazele acestuia

• Probleme uzuale in ingineria programelor si


modalitati de rezolvare a acestora

• Specificatii

• Interfete

• Arhitectura software

Instrumente pentru dezvoltarea programelor – Curs 1 42


Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ne vedem data viitoare…

Instrumente pentru dezvoltarea programelor – Curs 1 43

S-ar putea să vă placă și