Post on 15-Oct-2019
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Instrumente Pentru DezvoltareaInstrumente Pentru DezvoltareaInstrumente Pentru Dezvoltarea Instrumente Pentru Dezvoltarea ProgramelorProgramelorgg
Ciprian DobreCiprian Dobreciprian.dobre@cs.pub.ro
Instrumente pentru dezvoltarea programelor – Curs 1 1
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DespreDespre CursCursDespreDespre CursCurs• Site: http://curs.cs.pub.rop p• Instrumente pentru dezvoltare
– biblioteci de nivel inalt– tehnologii avansate– paradigme moderne de programareparadigme moderne de programare– medii de dezvoltare vizuale
• Concepte de proiectare si dezvoltare a sistemelor deConcepte de proiectare si dezvoltare a sistemelor de programe
• Abordari moderne de dezvoltare a programelor, a p g ,tehnologiilor de dezvoltare existente si a particularitatilor unor medii de dezvoltare de ultima generatie
Instrumente pentru dezvoltarea programelor – Curs 1 2
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
CompetenteCompetenteCompetenteCompetente• Aplicatii software
– Proiectare, dezvoltarea, evaluarea, asigurarea mentenanteimentenantei
– Solutii tehnologice moderne
– Integrarea in diverse arhitecturi de dezvoltare;
• Analizarea proprietatilor unor sisteme software;• Analizarea proprietatilor unor sisteme software;
• Evaluarea cititica a celor mai relevante tehnologii gexistente in contextul posibilei integrari a acestora in diverse sisteme software.
Instrumente pentru dezvoltarea programelor – Curs 1 3
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Capitole principale (1)Capitole principale (1)Cap to e p c pa e ( )Cap to e p c pa e ( )
• Etapele dezvoltarii aplicatiilorp p• Instrumente CASE
M d l ft i i t t d• Modele software si instrumente de modelare
• Metode formaleIDEs• IDEs
• Asigurarea calitatii produselor softwareg p• Instrumente in ciclul de dezvoltare
software Best practicessoftware. Best practices.
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Capitole principale (2)Capitole principale (2)Cap to e p c pa e ( )Cap to e p c pa e ( )
• Rapid Application Developmentp pp p• Reutilizabilitatea software
D lt i t t t• Dezvoltarea orientata pe componente• Sisteme critice si dezvoltarea sistemelor
critice.Dezvoltarea orientata pe servicii• Dezvoltarea orientata pe servicii
• Dezvoltarea orientata pe aspectep p
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
BibliografieBibliografieBibliografieBibliografie• Ian Sommerville, Software Engineering, 8th Edition, 2008
• Materiale postate pe site
– Slide-uri– Slide-uri
– Notite de curs
Instrumente pentru dezvoltarea programelor – Curs 1 6
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
NotareaNotareaNotareaNotarea
• Regulamentul - pagina cursului• Regulamentul - pagina cursului
Instrumente pentru dezvoltarea programelor – Curs 1 7
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
NotareaNotareaNotareaNotarea
N N P N ENota = NotaParcurs + NotaExam
11 7 4
NotaCurs + NotaLaborator
1 2 5 81.2 5.8
TemeLaborator + ActivitateLaborator + PrezentareLabTemeLaborator ActivitateLaborator PrezentareLab
4 1.2 0.6
1 1 1 1
Instrumente pentru dezvoltarea programelor – Curs 1 8
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ProiectProiect științific (1)științific (1)ProiectProiect științific (1)științific (1)• Suplimentar, până la 1p pot fi recuperate prin
participarea în cadrul unui experiment științificparticiparea în cadrul unui experiment științific– Aplicație disponibilă la
http://cipsm hpc pub ro/MobileExp bluetooth htmlhttp://cipsm.hpc.pub.ro/MobileExp_bluetooth.html– Necesită un telefon cu Android (nu neapărat al vostru,
puteți să cooptați un coleg în cadrul experimentului – laputeți să cooptați un coleg în cadrul experimentului – la înscriere acesta va specifica in rubrica observații pentru cine participă)p p )
– Reguli: • Porniți aplicația de câte ori ajungeți la facultate (respectiv, puteți
închide aplicația când plecați de la facultate)• Datele culese includ și timpul cât aplicația rulează , se vor verifica
datele culese și se vor puncte numai studenții ce au ținut aplicațiadatele culese și se vor puncte numai studenții ce au ținut aplicația pornită cel puțin 90% din timpul cât au stat în facultate
2 Instrumente pentru dezvoltarea programelor – Curs 1 9
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ProiectProiect științific (2)științific (2)ProiectProiect științific (2)științific (2)• Înscrierea se face accesând
htt //d l / d h t/ ?k 0AlCMhP0https://docs.google.com/spreadsheet/ccc?key=0AlCMhP0LuoqydE9abklzMV90MHJTbVNDZWpERlE5eGcUrmea ă și n al doilea e periment de trafic• Urmează și un al doilea experiment … de trafic
2 Instrumente pentru dezvoltarea programelor – Curs 1 10
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DespreDespre laboratorlaboratorDespreDespre laboratorlaboratorSite: http://elf.cs.pub.ro/idp • Instrumente avansate de dezvoltare bazate pe
IDE• Java →Swing → Ant → … → Web Services
Asistenti:• Ioana GrigoropolIoana Grigoropol
• Catalin Gosman
Vl d D• Vlad Dogaru
• Cristina Coman
• Dragos ComaneciInstrumente pentru dezvoltarea programelor – Curs 1 11
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Etapele dezvoltarii softwareEtapele dezvoltarii software
““He who fails to plan, plans to fail.“(Proverb)(Proverb)
„Cel care nu reuseste sa planuiasca, l i t “planuieste un esec.“
Instrumente pentru dezvoltarea programelor – Curs 1 12
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
NoNoţţiuniiuniNoNoţţiuniiuni• Proces software = set structurat de activităţi
t d lt i i tnecesare pentru dezvoltarea unui sistem software:
S ifi ţi– Specificaţie– Proiectare
Implementare– Implementare– Validare– Evoluţie– Evoluţie
• Un model al procesului software reprezintă o reprezentare abstractă a respectivului procesreprezentare abstractă a respectivului proces
• = o descriere a unui proces dintr-o anumităperspectivă
Instrumente pentru dezvoltarea programelor – Curs 1 13
perspectivă
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Modele generice de procese de Modele generice de procese de dezvoltaredezvoltare
• Modelul cascadă– Faze separate şi distincte de specificare şi dezvoltare
• Modelul evoluţionar– Specificaţia, dezvoltarea şi validarea sunt etape
întreţăsuteD lt b tă t• Dezvoltarea bazată pe componente– Sistemul este asamblat pornind de la un set de
componente pre existentecomponente pre-existente• Există variante ale acestor modele:
Dezvoltarea formală → implică folosirea unui proces– Dezvoltarea formală → implică folosirea unui proces de dezvoltare bazat pe modelul cascadă, dar specificaţia formală este rafinată în câteva iteraţii
Instrumente pentru dezvoltarea programelor – Curs 1 14
succesive până la stadiul de proiect implementabil
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
O abordare pragmaticO abordare pragmaticăăO abo da e p ag at cO abo da e p ag at căă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)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
f ( “ f )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
îmbunătăţi calitatea produsului final
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Fazele unui proces (1)Fazele unui proces (1)a e e u u p oces ( )a e e u u p oces ( )Abordarea cea mai simplă: 1 S i / difi ă l ( t i l tă ii)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ă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 )(schimbi într-o parte, strici în alta, …)
• Soluţia:Soluţia: – O etapă de proiectare în care este definită structura întregului
programModificările aduse implementării sunt permise dar ele trebuie să
Instrumente pentru dezvoltarea programelor – Curs 1 16
– Modificările aduse implementării sunt permise, dar ele trebuie sărespecte proiectul
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Fazele unui proces (2)Fazele unui proces (2)a e e u u p oces ( )a e e u u p oces ( )Model de proces îmbunătăţit:1 D fi i i t l l i ( t d i t )1. Definim un proiect al programului (etapa de proiectare)2. Scriem/modificăm programul (etapa implementării)3 Găsim defecte ne întoarcem la 23. Găsim defecte, ne întoarcem la 2.
• Probleme:• Probleme:– Programul face ceea ce doreşte utilizatorul?– Rezultatul: programul poate fi refuzat de client.
• Soluţia:O t ă d li ă î t ifi t i ţ l l i– 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 17
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Fazele unui proces (3)Fazele unui proces (3)a e e u u p oces (3)a e e u u p oces (3)
Un model chiar mai bun:1. Analizăm cerinţele utilizatorului (faza de analiză)2. Definim un proiect al programului (etapa de p p g ( p
proiectare)3. Scriem/modificăm programul (etapa p g ( p
implementării)4. Găsim defecte, ne întoarcem la 3.
• E de ajuns?E de ajuns?• Lipseşte etapa de planificare şi pregătire a testării
(etapa 4) – sistemul e sistematic verificat de
Instrumente pentru dezvoltarea programelor – Curs 1 18
(etapa 4) sistemul e sistematic verificat de posibile defecte (etapă de sine stătătoare)
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Etapele unui procesEtapele unui procesEtapa Rezultat
tape e u u p ocestape e u u p oces
Analiza Specificarea cerintelor utilizatorului – posibil un document al cerintelor
Proiectare Specificarea structurii si componentelor aplicatieiProiectare 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• Cele mai comune etape ale dezvoltării • Mai pot apărea: deployment/lansare, operare, asigurarea
de suport instruire mentenanţăde suport, instruire, mentenanţă• Toate fazele sunt cunoscute sub denumirea generică de
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Instrumente pentru dezvoltarea programelor – Curs 1 19
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)So t a e e e op e t e Cyc e (S C)So t a e e e op e t e Cyc e (S C)
• Modelul generic al dezvoltării unui proiect g psoftware
Instrumente pentru dezvoltarea programelor – Curs 1 20
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
CuCu cece dezvoltamdezvoltam??Cu Cu cece dezvoltamdezvoltam??• Instrumente:
– Constructie: make, ant, rake…– Compilare: gcc, Microsoft Visual Studio, CodeWarrior, Xcode…– Depanare: gdb, GNU Binutils…– Dezasamblare
Generatoare de documentatie: doxygen javadoc asciidoc– Generatoare de documentatie: doxygen, javadoc, asciidoc…– Metode formale– Verificare a compatibilitatii componentelor binarep p– Generatoare de interfete– Generatoare de parsere: Lex, Yacc– Analiza performantelor– Colaborare: cvs, svn, git, bazaar…
Analiza statica: jtest lint– Analiza statica: jtest, lint...– …
Instrumente pentru dezvoltarea programelor – Curs 1 21
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
CeCe urmeazaurmeaza??CeCe urmeazaurmeaza??• Integrated Development Environments (IDEs)
– Multe instrumente intr-un singur pachet– Proiecte de dimensiuni mariProiecte de dimensiuni mari– Dezvoltare de aplicatii nivel “enterprise”
Xcode
IBM Rational Application Developer
Code::Blocks
Instrumente pentru dezvoltarea programelor – Curs 1 22
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Enterprise?Enterprise?Enterprise?Enterprise?• Functii business la nivel de organizatie
comercialacomerciala• Performanta• Scalabilitate• Robustete
Instrumente pentru dezvoltarea programelor – Curs 1 23
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
LimbajeLimbaje,, ProceseProcese sisi InstrumenteInstrumenteLimbajeLimbaje, , ProceseProcese sisi InstrumenteInstrumente
Limbaje softwareLimbaje software
Instrumentelenu pot existap
separat
Procese InstrumenteProcese software
Instrumente software
Instrumente pentru dezvoltarea programelor – Curs 1 24
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
CeCe esteeste ingineriaingineria programelorprogramelorgg p gp gsoftware?software?
• Adesea comparata cu constructia industriala– e.g., construirea unui pod
O analogie buna:• 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 25
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Software: probleme uzualeSoftware: probleme uzualeSoftware: probleme uzualeSoftware: probleme uzuale• Dimensiunea• Interactiunea cu oamenii
Si t• Siguranta• Securitatea• Portabilitatea• Costul • Certitudinea asupra cerintelorCertitudinea asupra cerintelor
Instrumente pentru dezvoltarea programelor – Curs 1 26
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Curba siguranteiCurba siguranteiCurba siguranteiCurba sigurantei
• Hardware-ul se uzeaza in intregime
• Software-ul sufera modificari– sau mediul sau
f fsufera modificari
Instrumente pentru dezvoltarea programelor – Curs 1 27
sursa: “Software Engineering: CS169”, Prof. Sen, Berkeley University
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Instrumente pentru dezvoltarea programelor – Curs 1 28
sursa: “Software Engineering: CS169”, Prof. Sen, Berkeley University
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
24.02.2009 Instrumente pentru dezvoltarea programelor – Curs 1 29
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Solutia?Solutia?Solutia?Solutia?• Specificatiip
– Notarea functionalitatilor cerute din partea aplicatiei softwareaplicatiei software
– Insa: • Toata lumea trebuie sa le inteleaga• Toata lumea trebuie sa le inteleaga• Trebuie sa mentinem specificatiile actualizate
P bl ?• Probleme?– Pot exista ambiguitati si contradictii in g
intelegerea specificatiilor– Acestea conduc la defecte de dezvoltareAcestea conduc la defecte de dezvoltare…
Instrumente pentru dezvoltarea programelor – Curs 1 30
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ProblemaProblema #1#1ProblemaProblema #1#1• O specificatie permite:p p
– Verificarea functionalitatii corecte a aplicatiei software
– Constructia in echipe
• Verificarea ca aplicatia software• Verificarea ca aplicatia software functioneaza = proces dificil:– Verificarea codului (code review)
Instrumente de analiza statica– Instrumente de analiza statica
– Instrumente si metode de testare
Instrumente pentru dezvoltarea programelor – Curs 1 31
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ProblemaProblema #2#2ProblemaProblema #2#2• Minimizarea timpuluip
– Time-to-market: presiune sporita asupra procesului de dezvoltare software
• Cod scris mai repede?– Angajam mai multi programatori!– 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 32
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DezvoltareDezvoltare paralelaparalela??DezvoltareDezvoltare paralelaparalela??
• Probleme ca in programarea paralela• Probleme ca in programarea paralela
• Mai multi oameni = mai multa comunicatieMai multi oameni mai multa comunicatie
– Greu de gestionatg
– Overhead de comunicatie
• Constrangeri secventiale inerente
– e.g., arhitectura pipeline
Instrumente pentru dezvoltarea programelor – Curs 1 33
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
InterfeteInterfeteInterfeteInterfete• Componentele dezvoltate ideal sunt p
independente– dar trebuie sa poata lucra impreuna in sistemul– dar trebuie sa poata lucra impreuna in sistemul
finalI t f t i t t• Interfete intre componente– Pentru a le izola– Pentru a ne asigura ca in final sistemul
functioneaza• Interfetele nu pot suferi schimbari
(radicale)!(radicale)!Instrumente pentru dezvoltarea programelor – Curs 1 34
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DefinireaDefinirea interfetelorinterfetelorDefinireaDefinirea interfetelorinterfetelor
• Ce sunt interfetele?Ce sunt interfetele?
– Specificatii… de un tip special
• Definesc granite intre
– componente …
– si oameni
• Ne putem opri la specificarea interfetelor
– programatorii decid asupra partilor interneInstrumente pentru dezvoltarea programelor – Curs 1 35
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ArhitecturaArhitectura softwaresoftwareArhitecturaArhitectura softwaresoftware
• Definirea interfetelor• Definirea interfetelor
– putem descompune sistemul in parti separate p p p p
– granitele conduc la definirea de interfete
• Decompozitia? depinde de:
– ce face sistemul
– cum construim sistemul
– cine construieste sistemulInstrumente pentru dezvoltarea programelor – Curs 1 36
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DecompozitiaDecompozitia:: CeCe faceface sistemulsistemulDecompozitiaDecompozitia: : CeCe face face sistemulsistemul• Insasi aplicatia poate conduce la o p p
descompunere naturala• e g compilator = banda de asamblare• 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 37
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DecompozitiaDecompozitia: Cum: Cum construimconstruim sistemulsistemulDecompozitiaDecompozitia: Cum : Cum construimconstruim sistemulsistemul
• Constructia unei case necesita si montarea unor schele auxiliare
• la fel si constructia aplicatiilor software• … la fel si constructia aplicatiilor software• Referire la:
– Cod suplimentar neinclus in produsul final– Influenta subsistemelor externe incluseInfluenta subsistemelor externe incluse
• Ex: cod pentru testare, stub-uri, modalitati d t ti i l i t lde constructie si rulare a sistemelor partiale, prototipuri…
Instrumente pentru dezvoltarea programelor – Curs 1 38
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
DecompozitiaDecompozitia: Cine : Cine construiesteconstruieste sistemulsistemul
• Arhitectura software reflecta structura organizatieiArhitectura software reflecta structura organizatiei ce construieste aplicatia
• Ex: 5 programatori = 5 componente• Ex: 5 programatori = 5 componente
Instrumente pentru dezvoltarea programelor – Curs 1 39
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
ConcluziiConcluziiConcluziiConcluzii• Ingineria programelor se ocupa de cateva g p g p
aspecte:– Specificare: Cunoaste ce vrei sa faci– Specificare: Cunoaste ce vrei sa faci– Proiectare: Dezvolta un plan eficient de a-l
faceface– Implementare: Pune-l in practica– Validare: Verifica ca in final ai obtinut ce ai
dorit• Instrumentele de dezvoltare a aplicatiilor
intervin in toate aceste etapeintervin in toate aceste etapeInstrumente pentru dezvoltarea programelor – Curs 1 40
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
SumarSumarSumarSumar
• Procesul software si fazele acestuia• Procesul software si fazele acestuia
• Probleme uzuale in ingineria programelor siProbleme uzuale in ingineria programelor si
modalitati de rezolvare a acestora
• Specificatii
• Interfete
• Arhitectura software
Instrumente pentru dezvoltarea programelor – Curs 1 41
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare
Ne vedem data viitoare…Ne vedem data viitoare…Ne vedem data viitoare…Ne vedem data viitoare…
Instrumente pentru dezvoltarea programelor – Curs 1 42