Documente Academic
Documente Profesional
Documente Cultură
Ciprian Dobre
ciprian.dobre@cs.pub.ro
Despre IDP:
• My job is not to teach you what you should
think!
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
Competente
• Aplicatii software
– Proiectare, dezvoltarea, evaluarea, asigurarea
mentenantei
– Solutii tehnologice moderne
– Integrarea in diverse arhitecturi de dezvoltare;
Bibliografie
• Ian Sommerville, Software Engineering, 8th Edition, 2008
– Slide-uri
– Notite de curs
Notarea
Notarea
Cerinte minimale:
>= 2p din cele 4p pentru examenul final,
>= 3p din cele 6p pentru parcurs
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ă
O abordare pragmatică
Planul general al unui proiect software:
• 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 ?
• 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
• 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
E suficient?
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
Code::Blocks
Enterprise?
• Functii business la nivel de organizatie
comerciala
• Performanta
• Scalabilitate
• Robustete
Instrumentele
nu pot exista
separat
Procese Instrumente
software software
Curba sigurantei
• Hardware-ul se
uzeaza in intregime
• Software-ul sufera
modificari
– sau mediul sau
sufera modificari
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
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
Dezvoltare paralela?
– Overhead de comunicatie
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
– si oameni
Arhitectura software
• Definirea interfetelor
– putem descompune sistemul in parti separate
Decompozitia: Cine
construieste sistemul
• Arhitectura software reflecta structura organizatiei
ce construieste aplicatia
• Ex: 5 programatori = 5 componente
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
• Specificatii
• Interfete
• Arhitectura software