SlideShare a Scribd company logo
1 of 78
Download to read offline
Ingineria programării
1. Introducere în
ingineria programării
Florin Leon
Universitatea Tehnică „Gheorghe Asachi” din Iași
Facultatea de Automatică și Calculatoare
http://florinleon.byethost24.com/curs_ip.htm
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
2
Educația este când citești manualul.
Experiența este ce capeți dacă nu-l citești.
Pete Seeger
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Introducere în
ingineria programării
1. Introducere
2. Fazele procesului de dezvoltare
3. Istoria programării
4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Introducere în
ingineria programării
1. Introducere
2. Fazele procesului de dezvoltare
3. Istoria programării
4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
5
Software academic și industrial
 Exemplu: o problemă de 10.000 LOC (linii de cod)
 Student: 2 luni (5000 LOC / lună)
 Firmă: 1000 LOC/lună, 10 luni-om
 Software academic
 Versiune demo funcțională
 Hobby: nu necesită documentație și interfață complexă cu
utilizatorul, defectele sunt corectate când apar
 Software industrial
 Plătit de client
 Influențează mediul de afaceri
 Necesită o abordare inginerească, o disciplină de lucru
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
6
Software industrial
 Este construit pentru a rezolva unele probleme din
organizația clientului
 Funcționarea incorectă poate provoca pierderi financiare și chiar
pierderea de vieți omenești
 Trebuie să aibă calitate foarte bună
 Testare riguroasă înainte de livrare (30%-50% din efortul total)
 Dezvoltarea este împărțită pe faze pentru a gestiona mai bine
complexitatea (necesită documentație)
 Are cerințe de recuperare a datelor, toleranță la defecte,
portabilitate
 Acestea conduc la creșterea dimensiunilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
7
Regula lui Brooks
 Software-ul industrial în comparație cu
software-ul academic
 Productivitate: 1 / 5
 Dimensiune dublă
 Software-ul industrial necesită de 10 ori
mai mult efort decât software-ul academic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8
Ingineria programării
 Ingineria programării reprezintă aplicarea
unei abordări sistematice, disciplinate și
cuantificabile pentru dezvoltarea, operarea și
întreținerea produselor software
(Glosarul terminologiei ingineriei programării, IEEE,
Institute of Electrical and Electronics Engineers, 1990)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
9
Software
 Software-ul este o colecție de programe de
calculator, proceduri, reguli, împreună cu
documentația și datele asociate
(IEEE)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
10
Scopul ingineriei programării
 Utilizarea unor metodologii pentru dezvoltarea de software
 Rezultate repetabile
 Apropiere de știință
 Îndepărtarea de metodele ad-hoc cu rezultate imprevizibile
 Scopul dezvoltării de
produse software este
satisfacerea nevoilor
clienților sau utilizatorilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
11
Costul produselor software
 Costul produselor software depinde în primul rând de
efortul oamenilor
 Productivitatea este frecvent măsurată în linii de cod
(LOC) / lună-om
 Productivitatea medie pentru o aplicație nouă este de
300-1000 LOC / lună-om
 8000 $ / lună  8-25 $ / LOC
 Un program de dimensiune medie de 50.000 LOC poate costa
aproximativ 1.000.000 $
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
12
Software și hardware
 Un produs de un milion de dolari poate fi instalat pe un
calculator de câteva sute de dolari
 Software-ul este în prezent componenta principală a
unui sistem informatic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
13
Întârzieri și instabilitate
 În 1988, un studiu a arătat că din 600 de firme, 35%
aveau proiecte informatice scăpate de sub control din
punct de vedere al bugetului și timpului de execuție
 Raportul Standish Group privind finalizarea proiectelor
IT în SUA
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
14
Lipsa de fiabilitate
 Software care:
 Nu face ce trebuie
 Face ce nu trebuie
 În sisteme complexe (incluzând componente electrice,
mecanice, hidraulice), de cele mai multe ori software-ul
este problema cea mai mare
 Defectele software-ului nu se datorează uzurii, ci erorilor
de proiectare și implementare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
15
Defecte „celebre”
 28 iulie 1962 – distrugerea sondei spațiale Mariner I:
virgulă în loc de punct în limbajul Fortran
 1982 – explozia conductei sovietice de gaz
trans-siberiene
 1983 – defect în sistemul sovietic de avertizare nucleară
 1985-1987 – acceleratorul medical Therac-25:
“race condition”, 5 persoane și-au pierdut viața
 1988-1996 – generatorul de numere aleatorii al
protocolului Kerberos
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
16
Defecte „celebre”
 15 ianuarie 1990 – căderea rețelei de telefonie AT&T
 25 februarie 1991 – defectul rachetei Patriot în războiul
din Golf
 15 octombrie 1989 – căderea sistemului de dirijare a
traficului de la aeroportul Dallas - Fort Worth
 4 iunie 1996 – explozia rachetei Arianne 5: excepție
netratată pentru “overflow”
 Noiembrie 2000 – sistemul de radioterapie în Panama
City: 17 pacienți și-au pierdut viața din cauza expunerii la
radiații
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
17
Defecte „celebre”
 2011 – fondul de investiții AXA Rosenburg Group a fost
amendat cu 25.000.000 $ și obligat să plătească
despăgubiri investitorilor pentru ascunderea unui defect
software care a provocat pierderi de 217.000.000 $
clienților
 2011 – 22 de persoane arestate pe nedrept din cauza
unui defect în sistemul informatic al tribunalelor din New
South Wales, Australia
 12 decembrie 2014 – sistemele de control al traficului
aerian din sudul Marii Britanii s-au oprit pentru 45 de
minute, cauza fiind o singură linie de cod din anii ’90
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
18
Reprogramarea
 Când cerințele nu sunt specificate complet,
schimbarea lor conduce la refacerea tuturor
fazelor ulterioare
 Pentru proiecte cu durată lungă, cerințele
clientului se modifică
 Reprogramarea consumă 30% -40% din efortul
total de dezvoltare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
19
Întreținerea
 Întreținere corectivă: eliminarea erorilor
 Întreținere adaptivă: adaptarea la alt mediu
 Întreținere perfectivă: includerea de funcționalități
suplimentare
 Legea evoluției software-ului: software-ul schimbă mediul,
apoi trebuie să se adapteze la noul mediu
 Întreținerea costă de obicei mai mult decât dezvoltarea unei
aplicații
 Presupune înțelegerea codului, modificarea, testarea de
regresiune
 În timpul dezvoltării, întreținerea este deseori neglijată
 Raport de cost 60:40 – 80:20
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
20
Scala proiectelor
 Proiectele complexe necesită metode diferite de
dezvoltare față de proiectele de mici dimensiuni
 Presupun formalizarea procedurilor inginerești și a
managementului de proiect
 Proiecte:
 Mici: < 10.000 LOC
 Medii: 10.000 – 100.000 LOC
 Mari: 100.000 – 1.000.000 LOC
 Foarte mari: > 1.000.000 LOC
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
21
Scala proiectelor
 Previziuni:
 1946: Goldstein, von Neumann (EDVAC, primul calculator binar cu
program stocat) – max. 1000 instrucțiuni
 1981: Bill Gates (la apariția IBM PC) – max. 640 KB RAM
 Realitatea:
 1966: sistemul de operare IBM
OS 360, 5000 de ani-om
 1977: naveta spațială NASA,
40.000.000 LOC
 1983: System V versiunea 4.0
Unix, 3.700.000 LOC
 1992: sistemul de rezervare a
biletelor KLM, 2.000.000 LOC
în limbaj de asamblare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
22
Triunghiul managementului
de proiect
 Managementul unui proiect este condus de trei factori majori: costul, timpul și
domeniul de aplicare (engl. “scope”, întinderea, anvergura)
 Costul este o măsură a resurselor utilizate pentru sistem
 În cazul software-ului, este dominat de costul de personal
 Costul poate fi estimat ca efort (luni-om) * cost mediu (lunar)
 Include costul suplimentar pentru hardware și instrumentele de dezvoltare
 Timpul
 Mediul de afaceri dorește reducerea timpului de livrare
 Creșterea productivității (LOC / lună-om) determină scăderea timpului și a costului
 Domeniul este dat de specificații
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
23
Calitatea
 Calitatea presupune, conform standardului internațional al calității produselor
software ISO/IEC 9126:
 Funcționalitate (engl. “functionality”)
 Asigurarea funcțiilor care satisfac nevoile exprimate explicit sau implicite
 Include securitatea: persoanele neautorizate să nu aibă acces iar celor autorizate să nu le
fie refuzat accesul
 Fiabilitate (engl. “reliability”)
 Menținerea unui nivel specificat de performanță
 Utilizabilitate (engl. “usability”)
 Capacitatea de a fi înțeles, învățat și utilizat
 Eficiență (engl. “efficiency”)
 Asigurarea unor performanțe adecvate relativ la volumul de resurse utilizate
 Mentenabilitate (engl. “maintainability”)
 Capacitatea de a fi modificat pentru corecții, îmbunătățiri sau adaptări
 Portabilitate (engl. “portability”)
 Capacitatea de a fi adaptat pentru medii diferite exclusiv pe baza mijloacelor existente în
produs
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
24
Calitatea
 Importanța fiecărei dimensiuni de calitate depinde de
natura proiectului
 Sistem critic: fiabilitate
 Joc: utilizabilitate
 Înainte de dezvoltare, trebuie specificat obiectivul
principal de calitate
 Fiabilitatea este considerată în general cea mai
importantă
 Se măsoară în defecte / KLOC
 Bunele practici curente: mai puțin de 1 defect / KLOC
 Definirea unui defect depinde de proiect sau de standardele
organizației dezvoltatoare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
25
Schimbarea
 Schimbările din mediul comercial sunt rapide și
frecvente, implică schimbarea produselor
software aferente
 Așteptările privind schimbarea sunt mai mari în
cazul software-ului pentru că acesta nu are
proprietăți „fizice”
 Dezvoltarea software-ului trebuie să fie adaptată
schimbărilor continue
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
26
Consecvență și repetabilitate
 Succesele trebuie să fie repetabile
 Calitatea și productivitatea trebuie să fie
consecvente
 Acest lucru permite unei organizații:
 Să prevadă cu acuratețe rezultatele proiectelor
 Să își îmbunătățească procesele de dezvoltare
 Se impune standardizarea unor proceduri și
folosirea unor metodologii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Introducere în
ingineria programării
1. Introducere
2. Fazele procesului de dezvoltare
3. Istoria programării
4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
28
Fazele dezvoltării
 Dezvoltarea pe faze împarte problema în mai multe aspecte care
pot fi tratate separat
 Costul de dezvoltare este mai mic decât în cazul în care problema
ar fi abordată în întregime
 Permite verificarea calității la intervale stabilite, de exemplu după
fiecare fază, în loc să se aștepte până când produsul este finalizat
 Există multe metodologii de dezvoltare iar organizațiile au de multe
ori propriile versiuni
 În general, rezolvarea oricărei probleme constă în:
 Analiza problemei și specificarea cerințelor
 Proiectare
 Implementare (codarea, programarea propriu-zisă)
 Testare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
29
Analiza
 Presupune înțelegerea problemei (CE se dorește de
la sistem)
 Scopul este documentarea cerințelor
 Au loc două activități majore:
 Înțelegerea problemei (analiza)
 Pentru un sistem nou, este dificilă și presupune creativitate
 Specificarea cerințelor
 Cerințele funcționale și de performanță, constrângerile
 Manualul de utilizare preliminar: interfețele principale cu
utilizatorul
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
30
Proiectarea
 Scopul este planificarea unei soluții pentru
problema specificată (CUM se va rezolva)
 Tipuri de proiectare:
 Proiectarea arhitecturală
 Componente sau subsisteme, interacțiunile acestora
 Proiectarea de nivel înalt
 Specificarea modulelor, structurilor de date, formatelor
 Şabloane de proiectare
 Proiectarea detaliată
 Logica internă a modulelor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
31
Implementarea
 Traducerea proiectării într-un anumit limbaj de
programare
 Detaliile care țin de limbaj nu sunt specificate în faza de
proiectare
 Scopul trebuie să fie reducerea timpului de testare și
întreținere, prin simplitate și claritate
 Programele trebuie să fie:
 Ușor de citit și de înțeles
 Ușor de modificat și de extins
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
32
Testarea
 Este principala măsură de control al calității
 Presupune detectarea defectelor software-ului
 Din toate fazele, nu numai din faza de implementare
 Tipuri de testare:
 Testarea unităților: a modulelor individuale
 Testarea integrării: a interconectării modulelor
 Testarea sistemului: a cerințelor sistemului
 Testarea de recepție (engl. “acceptance testing”): operarea
pe datele reale ale clientului
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
33
Testarea
 Este o activitate critică și de durată
 Deseori necesită un plan de testare
 Rezultate:
 Raportul de test
 Descrie cazurile de test executate și rezultatele obținute
 Raportul de erori
 Descrie erorile întâlnite
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Introducere în
ingineria programării
1. Introducere
2. Fazele procesului de dezvoltare
3. Istoria programării
4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
35
Zuse Z3 (Germania, 1941)
 Primul calculator funcțional controlat prin program
 Construit din relee telefonice mecanice
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Plankalkül
 Primul limbaj de programare (exclusiv teoretic)
36
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
37
Colossus (Marea Britanie, 1944)
 Mașini folosite pentru a decripta mesaje secrete
de nivel înalt ale armatei germane
 Construite din lămpi electronice vidate
 Au rămas secrete până în 1975
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
38
ENIAC (SUA, 1945)
 Primul calculator electronic de uz general, avea 30 t
 Proiectat pentru a calcula tabele balistice pentru armata SUA
 Programarea se realiza prin manipularea comutatoarelor și
cablurilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
39
EDVAC (SUA, 1949)
 Binar, nu zecimal ca ENIAC
 Raportul lui John von Neumann asupra lui EDVAC conține
descrierea arhitecturii von Neumann
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
40
EDSAC (Marea Britanie, 1949)
 Unul din primele calculatoare cu program stocat
 Instrucțiuni procesor și bibliotecă de subrutine
 A descoperit cel mai mare număr prim la vremea respectivă
 A rulat primul joc video, OXO (X și 0)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
41
Mark I (Marea Britanie, 1949)
 Unul din primele calculatoare cu program stocat
 Prima utilizare a registrelor index
 Primul program: test al numerelor prime Mersenne (2n - 1)
 Mark II – “bug” (o molie care a stricat un releu)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Perceptronul Mark I
 În 1960, Frank Rosenblatt a demonstrat algoritmul de
învățare al perceptronului (o rețea neuronală simplă)
cu ajutorul calculatorului Mark I, pentru o problemă de
clasificare de imagini
42
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
43
LEO (Marea Britanie, 1951)
 Prima aplicație comercială a unui
calculator: Joseph Lyons and
Co., firmă de catering și
producție alimentară
 Utilizat pentru state de plată,
inventar, instrucțiuni de
asamblare, planificarea livrărilor,
facturi etc.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
44
UNIVAC (SUA, 1951)
 Construit de inventatorii ENIAC, Eckert și Mauchly
 Destinat în principal mediului comercial
 Prima vânzare: Biroul de Recensământ al SUA
 A prezis la CBS victoria clară a lui Eisenhower din 1952
 Costa până la 1.500.000 $ și avea 13 t
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
45
IBM 650 (SUA, 1953)
 Primul calculator produs în serie
 2000 de sisteme produse între 1954 - 1962
 Putea relua execuția în cazul unei erori și nu
necesita restartarea manuală
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
46
Fortran (1954)
 Dezvoltat de IBM
 Destinat calculelor numerice și științifice
 Încă popular în calculul de mare performanță
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
47
Lisp (1958)
 Sintaxă specifică bazată pe paranteze
 Limbaj favorit pentru aplicații de inteligență artificială
 Poate manipula codul sursă ca pe o structură de date
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
48
Algol (1958)
 Primul limbaj care a utilizat blocuri “begin - end”
 A devenit un standard pentru descrierea algoritmilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
49
Cobol (1959)
 Destinat aplicațiilor comerciale, financiare și
administrative
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
50
Tranzistorul
 Lilienfeld, 1926
 Bardeen, Brattain și Shockley,
Bell Labs, 1947, premiul Nobel
pentru fizică, 1956
 Un tranzistor avea 1/50 din
dimensiunea și 1/100 din
greutatea unei lămpi
 Inițial, industria de electronice
nu a fost interesată
 Tirania numerelor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
51
Circuitele integrate
 Aveau posibilitatea de a fi produse în serie
 La început un circuit integrat costa 1000 de
dolari și avea o rată de defectare de 90%
 Cursa spațială
 Sputnik 1 (1957)
 Iuri Gagarin (1961)
 Pentagonul și NASA erau dispuse să
investească în tehnologia circuitelor
integrate
 Modulul lunar Apollo 11 avea cel mai
puternic calculator din lume în 1969
 10 ani mai târziu, un circuit integrat costa
1 cent și era de 1000 de ori mai puternic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
52
Realizări
 Scăderea în dimensiuni: „a treia generație” de
calculatoare, de exemplu IBM System/360 (1965), 300 kg
 Legea lui Moore (1965, 1975): complexitatea
hardware-ului se dublează la fiecare doi ani
 ARPANET (1969)
 Avea ca scop conectarea computerelor mainframe de la diferite
universități din SUA
 Stă la baza internetului de astăzi
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
53
Simula (Norvegia, 1962)
 Primul limbaj orientat pe
obiecte
 Destinat simulărilor
 Avea clase, obiecte,
metode virtuale, garbage
collector
 Sintaxă bazată pe Algol
 A influențat puternic
limbajele orientate pe
obiecte ulterioare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
54
Basic (1964)
 Destinat programării de
către nespecialiști
 Primul produs vândut de
Microsoft, Altair Basic
(1975) și primul caz major
de piraterie software
 Popular în anii ’80 pentru
“home computers”, HC
 Utilizat și astăzi:
Microsoft Visual Basic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Industria software
 Termenul de “software” a fost propus în 1958 de
statisticianul John Tukey
 Până în anii ’60, producătorii de calculatoare vindeau
software-ul împreună cu hardware-ul, inclus în preț
(sisteme de operare, compilatoare, alte utilitare)
 De la 1 ianuarie 1970, IBM a început să vândă separat
software-ul (engl. “unbundle”)
 Aplicații de succes: limbaje de simulare, compilatoare,
transformarea codului sursă în schemă logică, manager
de fișiere și generator de rapoarte
55
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
56
Criza software
 Programarea era foarte dificilă
 Puterea hardware-ului creștea continuu, la fel și așteptările
la adresa software-ului, care nu putea ține pasul
 Un raport din anii ’60 arăta că:
 2% din sistemele software contractate au funcționat de la
predare
 3% din sistemele software au putut funcționa după câteva
modificări
 29% au fost predate dar n-au funcționat niciodată
 19% au fost folosite dar au fost abandonate
 47% au fost plătite dar niciodată predate
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
57
Conferințele NATO
 1968: Conferința Comitetului științific al NATO cu tema
„Ingineria programării”, Garmisch, Germania
 Aici s-a propus pentru prima dată termenul de „Ingineria
programării” (engl. “Software Engineering”) de către Friedrich L.
Bauer
 1969: Conferința NATO cu tema „Tehnici ale ingineriei
programării”, Roma
 Bauer (1972): Ingineria programării reprezintă stabilirea
și utilizarea unor principii inginerești solide pentru a
obține în mod economic software fiabil și care lucrează
eficient pe mașini reale.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
58
XEROX PARC (1970)
 Incubatorul multor elemente ale calculatoarelor
moderne:
 Mouse-ul
 Interfața grafică cu utilizatorul cu ferestre și icoane
 Editor de text de tip “What You See Is What You Get”
 Ethernet
 Mediul de dezvoltare integrat Smalltalk (POO)
 Imprimanta laser
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
59
Unix (1970)
 Thomson, Richie, McIlroy – Bell Labs
 1973: rescris în C
 A condus la creșterea portabilității
 Obiective:
 Portabil, multi-tasking, multi-user
 Caracteristici:
 Stocarea datelor ca text
 Sistem de fișiere ierarhic
 Tratarea dispozitivelor ca fișiere
 Interpretorul liniei de comandă ce utilizează “pipelines”
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
60
Software vs. hardware
 1973: Barry Boehm prezice că software-ul
va depăși hardware-ul din punct de vedere
al costurilor
 Raportul său către DARPA a inițiat o schimbare
de direcție în domeniu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
61
Microprocesorul.
Alte calculatoare
 Intel 8080 (1974): primul
microprocesor, a patra
generație de calculatoare
 Altair 8800 (1975): scânteia
care a dus la revoluția
calculatoarelor personale
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
62
Alte calculatoare
 IBM 5100 (1975): primul
„Calculator Portabil”,
incluzând tastatură,
ecran, dispozitiv de
stocare a datelor pe
bandă magnetică
 Apple (1976): kit de
calculator personal, primul
floppy disk de 5.25" și
primul program foaie de
calcul, VisiCalc
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
63
Limbaje de programare
 Pascal (1970): Niklaus Wirth
 Destinat inițial predării programării structurate
 Recursivitate
 C (1972): Dennis Ritchie la AT&T Bell Labs
 Destinat inițial scrierii sistemului de operare Unix
 SQL (1974): D. D. Chamberlin, R. F. Boyce
 Destinat manipulării datelor din sistemul de baze
de date relaționale IBM System R
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
64
Limbaje de programare
 Smalltalk (1972): Xerox PARC
 Scop educațional, „simbioza om-calculator”
 Orientat pe obiecte, tipuri dinamice, reflection
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
65
Limbaje de programare
 Prolog (1972): Alain Colmerauer, Marsilia
 Limbaj declarativ, cu rădăcini în logica formală
 Destinat inițial prelucrării limbajului natural, utilizat apoi pentru
demonstrarea de teoreme, sisteme expert etc.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
66
Industria software în anii ’70
 Atari (1972)
 Jocuri video: Pong, Pond Double,
Space Race, Gotcha!
 Microsoft (1975)
 Altair Basic
 Oracle (1977)
 Prima versiune intitulată “version 2”
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
67
Calculatoarele personale
IBM PC (1981) Apple Macintosh (1984)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
CTRL + ALT + DEL
 IBM PC, repornirea sistemului de la tastatură
 1 tastă, apoi 2 taste – erau des apăsate din greșeală, se pierdeau lucrările nesalvate
 Apoi s-au ales 3 taste, CTRL + ALT + ESC, dar tot puteau fi apăsate din greșeală
 În final, s-a ajuns la combinația CTRL + ALT + DEL
68
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
69
Calculatoarele personale
Sinclair ZX Spectrum (UK, 1982) Commodore 64 (SUA, 1982)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Clone Spectrum
 Fabricate în România:
 Felix HC
 HC 85, HC 88, HC 90, HC 91, HC91+ (HC128),
HC 2000, HC386
 Cobra
 CIP-03
 JET
 TimS
70
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
71
Anii ’80
 MS-DOS (1981)
 Microsoft Windows (1985)
 MS Office (Word, 1984)
 World Wide Web (Tim
Berners-Lee, CERN, 1989)
 C++ (Bjarne Stroustrup, 1983)
 Perl (1987)
Microsoft Windows 1.0 MS Word pentru MAC OS X
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Floppy disks
 8", 1971-1977, 80 KB – 1,2 MB
 5,25", 1976-1984, 98,5 KB – 1,2 MB
 3,5", 1982-1998, 400 KB – 1,44 MB
72
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
73
Rezultate interesante
 „Nu există gloanțe de argint” (Brooks, 1986)
 Complexitatea esențială
 Complexitatea accidentală
 Regula 80-20 (Principiul Pareto)
 80% din efecte sunt determinate de 20% din cauze
 80% din utilizatori folosesc în general 20% din
trăsăturile unui produs software
 80% din erorile Windows și Office erau cauzate de
20% din totalul defectelor, iar 50% din erori de 1% din
defecte (2002)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
74
Anii ’90
 Sisteme de operare
 Microsoft Windows
 Linux (1991)
 Browsere
 Mosaic (1993)
 Netscape Navigator (1994)
 MS Internet Explorer (1995)
 Servicii de webmail
 Hotmail (1996)
 Yahoo! Mail (1997)
 Motoare de căutare
 Google (1998)
 Limbaje de programare
 Python (1991)
 PHP (1995)
 Java (1995)
 JavaScript (1996)
Windows 3.1
Mosaic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
75
Mileniul 3
 Sisteme de operare
 Windows XP (2001), Windows 7 (2009), Windows 8 (2012),
Windows 10 (2015)
 Browsere
 Mozilla Firefox (2003)
 Google Chrome (2008)
 Servicii de webmail
 Gmail / Google Mail (2004)
 Motoare de căutare
 Microsoft Bing (2009)
 Limbaje de programare
 C# 1.0 (2002), C# 5.0 (2012), C# 6.0 (2015)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
76
Cote de piață
 Browsere (ian. 2017) http://gs.statcounter.com
 Chrome: 52% (RO: 64%)
 Safari: 15% (RO: 7%)
 UC Browser (Alibaba, China): 8%
 Firefox: 7% (RO: 12%)
 Motoare de căutare (ian. 2017) http://gs.statcounter.com
 Google: 93% (RO: 98%)
 Bing: 3% (RO: 1%)
 Servicii de webmail
 Gmail: 1 miliard de utilizatori activi pe lună în feb. 2016
 Yahoo! Mail: 1 miliard de utilizatori activi pe lună în feb. 2016
 Outlook.com: 400 de milioane de utilizatori activi pe lună în iul. 2016
 54% din email-uri sunt deschise de pe echipamente mobile
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
77
Rețele sociale
 Mai mult de 100 de site-uri
 Printre cele mai utilizate: http://expandedramblings.com
 Facebook (fondat în 2004)
 1,86 miliarde vizitatori activi pe lună în feb. 2017
 LinkedIn (fondat în 2003)
 467 milioane vizitatori activi pe lună în oct. 2016
 Twitter (fondat în 2006)
 317 milioane vizitatori activi pe lună în oct. 2016
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
78
Concluzii
 Ingineria programării este o colecție de metode și
recomandări pentru dezvoltarea eficientă de programe
de mari dimensiuni
 Software-ul nu este doar o mulțime de programe, ci
include documentația și datele asociate
 Fazele fundamentale ale dezvoltării programelor sunt:
analiza, proiectarea, implementarea și testarea
 Istoria sistemelor de calcul și a programării se întinde
pe aproximativ 70 de ani iar dezvoltarea prezentă a
domeniului este fără precedent
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

More Related Content

What's hot (7)

Sabloane de proiectare structurale (II)
Sabloane de proiectare structurale (II)Sabloane de proiectare structurale (II)
Sabloane de proiectare structurale (II)
 
Sabloane de proiectare comportamentale (II)
Sabloane de proiectare comportamentale (II)Sabloane de proiectare comportamentale (II)
Sabloane de proiectare comportamentale (II)
 
Sabloane de proiectare structurale (I)
Sabloane de proiectare structurale (I)Sabloane de proiectare structurale (I)
Sabloane de proiectare structurale (I)
 
Sabloane de proiectare creationale (II)
Sabloane de proiectare creationale (II)Sabloane de proiectare creationale (II)
Sabloane de proiectare creationale (II)
 
Sabloane de proiectare creationale (I)
Sabloane de proiectare creationale (I)Sabloane de proiectare creationale (I)
Sabloane de proiectare creationale (I)
 
Faza de proiectare
Faza de proiectareFaza de proiectare
Faza de proiectare
 
Manual testing 1
Manual testing 1Manual testing 1
Manual testing 1
 

Similar to Introducere in ingineria programarii

Programator Fisa Postului
Programator Fisa PostuluiProgramator Fisa Postului
Programator Fisa Postului
onaca stela
 
Prezentare proiect
Prezentare proiectPrezentare proiect
Prezentare proiect
Adrian Mirea
 
Client server video streaming application
Client server video streaming applicationClient server video streaming application
Client server video streaming application
Andrei Olaru
 
Cosmin Tataru - Ce e nou in Windows 8.1 pentru ITPros
Cosmin Tataru - Ce e nou in Windows 8.1 pentru ITProsCosmin Tataru - Ce e nou in Windows 8.1 pentru ITPros
Cosmin Tataru - Ce e nou in Windows 8.1 pentru ITPros
ITSpark Community
 
PSeA - Seminar 1, Timisoara
PSeA - Seminar 1, TimisoaraPSeA - Seminar 1, Timisoara
PSeA - Seminar 1, Timisoara
Carmen Holotescu
 

Similar to Introducere in ingineria programarii (20)

Extreme programming(xp)
Extreme programming(xp)Extreme programming(xp)
Extreme programming(xp)
 
Sisteme expert mps2
Sisteme expert mps2Sisteme expert mps2
Sisteme expert mps2
 
Proiect flexform
Proiect flexformProiect flexform
Proiect flexform
 
Sisteme expert mps
Sisteme expert mpsSisteme expert mps
Sisteme expert mps
 
programare eXtrema
programare eXtremaprogramare eXtrema
programare eXtrema
 
Implementarea sistemelor informatice pl2 a partea i
Implementarea sistemelor informatice  pl2 a partea iImplementarea sistemelor informatice  pl2 a partea i
Implementarea sistemelor informatice pl2 a partea i
 
Programator Fisa Postului
Programator Fisa PostuluiProgramator Fisa Postului
Programator Fisa Postului
 
Prezentare proiect
Prezentare proiectPrezentare proiect
Prezentare proiect
 
Informatica aplicata
Informatica aplicataInformatica aplicata
Informatica aplicata
 
Client server video streaming application
Client server video streaming applicationClient server video streaming application
Client server video streaming application
 
Cosmin Tataru - Ce e nou in Windows 8.1 pentru ITPros
Cosmin Tataru - Ce e nou in Windows 8.1 pentru ITProsCosmin Tataru - Ce e nou in Windows 8.1 pentru ITPros
Cosmin Tataru - Ce e nou in Windows 8.1 pentru ITPros
 
Modulul v mtcp i
Modulul v   mtcp iModulul v   mtcp i
Modulul v mtcp i
 
Curs multimedia
Curs multimediaCurs multimedia
Curs multimedia
 
HOBBY.21-1-2009.pdf
HOBBY.21-1-2009.pdfHOBBY.21-1-2009.pdf
HOBBY.21-1-2009.pdf
 
PSeA - Seminar 1, Timisoara
PSeA - Seminar 1, TimisoaraPSeA - Seminar 1, Timisoara
PSeA - Seminar 1, Timisoara
 
LCD controller with LPC1777, S1D13517 and external SDRAM
LCD controller with LPC1777, S1D13517 and external SDRAMLCD controller with LPC1777, S1D13517 and external SDRAM
LCD controller with LPC1777, S1D13517 and external SDRAM
 
Curs 1 concepte de baza pachete software
Curs 1  concepte de baza pachete softwareCurs 1  concepte de baza pachete software
Curs 1 concepte de baza pachete software
 
Music Finder
Music FinderMusic Finder
Music Finder
 
Prezentare Tehnoinstrument
Prezentare TehnoinstrumentPrezentare Tehnoinstrument
Prezentare Tehnoinstrument
 
Php mvc framework
Php mvc frameworkPhp mvc framework
Php mvc framework
 

More from Florin Leon

More from Florin Leon (17)

Modele bazate pe energie
Modele bazate pe energieModele bazate pe energie
Modele bazate pe energie
 
Retele neuronale profunde
Retele neuronale profundeRetele neuronale profunde
Retele neuronale profunde
 
Regresia liniara, logistica, softmax
Regresia liniara, logistica, softmaxRegresia liniara, logistica, softmax
Regresia liniara, logistica, softmax
 
Clasificarea bazata pe ansambluri. Selectia trasaturilor
Clasificarea bazata pe ansambluri. Selectia trasaturilorClasificarea bazata pe ansambluri. Selectia trasaturilor
Clasificarea bazata pe ansambluri. Selectia trasaturilor
 
Algoritmi de clasificare
Algoritmi de clasificareAlgoritmi de clasificare
Algoritmi de clasificare
 
Algoritmi de grupare (clustering)
Algoritmi de grupare (clustering)Algoritmi de grupare (clustering)
Algoritmi de grupare (clustering)
 
Teoria jocurilor (II)
Teoria jocurilor (II)Teoria jocurilor (II)
Teoria jocurilor (II)
 
Teoria jocurilor (I)
Teoria jocurilor (I)Teoria jocurilor (I)
Teoria jocurilor (I)
 
Arhitecturi de agenti (II)
Arhitecturi de agenti (II)Arhitecturi de agenti (II)
Arhitecturi de agenti (II)
 
Arhitecturi de agenti (I)
Arhitecturi de agenti (I)Arhitecturi de agenti (I)
Arhitecturi de agenti (I)
 
Introducere in domeniul agentilor
Introducere in domeniul agentilorIntroducere in domeniul agentilor
Introducere in domeniul agentilor
 
Complexitate si emergenta
Complexitate si emergentaComplexitate si emergenta
Complexitate si emergenta
 
Invatarea cu intarire
Invatarea cu intarireInvatarea cu intarire
Invatarea cu intarire
 
Retele neuronale (II)
Retele neuronale (II)Retele neuronale (II)
Retele neuronale (II)
 
Retele neuronale (I)
Retele neuronale (I)Retele neuronale (I)
Retele neuronale (I)
 
Rationament probabilistic
Rationament probabilisticRationament probabilistic
Rationament probabilistic
 
Logica vaga (fuzzy)
Logica vaga (fuzzy)Logica vaga (fuzzy)
Logica vaga (fuzzy)
 

Introducere in ingineria programarii

  • 1. Ingineria programării 1. Introducere în ingineria programării Florin Leon Universitatea Tehnică „Gheorghe Asachi” din Iași Facultatea de Automatică și Calculatoare http://florinleon.byethost24.com/curs_ip.htm Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 2. 2 Educația este când citești manualul. Experiența este ce capeți dacă nu-l citești. Pete Seeger Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 3. Introducere în ingineria programării 1. Introducere 2. Fazele procesului de dezvoltare 3. Istoria programării 4. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 4. Introducere în ingineria programării 1. Introducere 2. Fazele procesului de dezvoltare 3. Istoria programării 4. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 5. 5 Software academic și industrial  Exemplu: o problemă de 10.000 LOC (linii de cod)  Student: 2 luni (5000 LOC / lună)  Firmă: 1000 LOC/lună, 10 luni-om  Software academic  Versiune demo funcțională  Hobby: nu necesită documentație și interfață complexă cu utilizatorul, defectele sunt corectate când apar  Software industrial  Plătit de client  Influențează mediul de afaceri  Necesită o abordare inginerească, o disciplină de lucru Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 6. 6 Software industrial  Este construit pentru a rezolva unele probleme din organizația clientului  Funcționarea incorectă poate provoca pierderi financiare și chiar pierderea de vieți omenești  Trebuie să aibă calitate foarte bună  Testare riguroasă înainte de livrare (30%-50% din efortul total)  Dezvoltarea este împărțită pe faze pentru a gestiona mai bine complexitatea (necesită documentație)  Are cerințe de recuperare a datelor, toleranță la defecte, portabilitate  Acestea conduc la creșterea dimensiunilor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 7. 7 Regula lui Brooks  Software-ul industrial în comparație cu software-ul academic  Productivitate: 1 / 5  Dimensiune dublă  Software-ul industrial necesită de 10 ori mai mult efort decât software-ul academic Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 8. 8 Ingineria programării  Ingineria programării reprezintă aplicarea unei abordări sistematice, disciplinate și cuantificabile pentru dezvoltarea, operarea și întreținerea produselor software (Glosarul terminologiei ingineriei programării, IEEE, Institute of Electrical and Electronics Engineers, 1990) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 9. 9 Software  Software-ul este o colecție de programe de calculator, proceduri, reguli, împreună cu documentația și datele asociate (IEEE) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 10. 10 Scopul ingineriei programării  Utilizarea unor metodologii pentru dezvoltarea de software  Rezultate repetabile  Apropiere de știință  Îndepărtarea de metodele ad-hoc cu rezultate imprevizibile  Scopul dezvoltării de produse software este satisfacerea nevoilor clienților sau utilizatorilor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 11. 11 Costul produselor software  Costul produselor software depinde în primul rând de efortul oamenilor  Productivitatea este frecvent măsurată în linii de cod (LOC) / lună-om  Productivitatea medie pentru o aplicație nouă este de 300-1000 LOC / lună-om  8000 $ / lună  8-25 $ / LOC  Un program de dimensiune medie de 50.000 LOC poate costa aproximativ 1.000.000 $ Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 12. 12 Software și hardware  Un produs de un milion de dolari poate fi instalat pe un calculator de câteva sute de dolari  Software-ul este în prezent componenta principală a unui sistem informatic Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 13. 13 Întârzieri și instabilitate  În 1988, un studiu a arătat că din 600 de firme, 35% aveau proiecte informatice scăpate de sub control din punct de vedere al bugetului și timpului de execuție  Raportul Standish Group privind finalizarea proiectelor IT în SUA Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 14. 14 Lipsa de fiabilitate  Software care:  Nu face ce trebuie  Face ce nu trebuie  În sisteme complexe (incluzând componente electrice, mecanice, hidraulice), de cele mai multe ori software-ul este problema cea mai mare  Defectele software-ului nu se datorează uzurii, ci erorilor de proiectare și implementare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 15. 15 Defecte „celebre”  28 iulie 1962 – distrugerea sondei spațiale Mariner I: virgulă în loc de punct în limbajul Fortran  1982 – explozia conductei sovietice de gaz trans-siberiene  1983 – defect în sistemul sovietic de avertizare nucleară  1985-1987 – acceleratorul medical Therac-25: “race condition”, 5 persoane și-au pierdut viața  1988-1996 – generatorul de numere aleatorii al protocolului Kerberos Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 16. 16 Defecte „celebre”  15 ianuarie 1990 – căderea rețelei de telefonie AT&T  25 februarie 1991 – defectul rachetei Patriot în războiul din Golf  15 octombrie 1989 – căderea sistemului de dirijare a traficului de la aeroportul Dallas - Fort Worth  4 iunie 1996 – explozia rachetei Arianne 5: excepție netratată pentru “overflow”  Noiembrie 2000 – sistemul de radioterapie în Panama City: 17 pacienți și-au pierdut viața din cauza expunerii la radiații Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 17. 17 Defecte „celebre”  2011 – fondul de investiții AXA Rosenburg Group a fost amendat cu 25.000.000 $ și obligat să plătească despăgubiri investitorilor pentru ascunderea unui defect software care a provocat pierderi de 217.000.000 $ clienților  2011 – 22 de persoane arestate pe nedrept din cauza unui defect în sistemul informatic al tribunalelor din New South Wales, Australia  12 decembrie 2014 – sistemele de control al traficului aerian din sudul Marii Britanii s-au oprit pentru 45 de minute, cauza fiind o singură linie de cod din anii ’90 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 18. 18 Reprogramarea  Când cerințele nu sunt specificate complet, schimbarea lor conduce la refacerea tuturor fazelor ulterioare  Pentru proiecte cu durată lungă, cerințele clientului se modifică  Reprogramarea consumă 30% -40% din efortul total de dezvoltare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 19. 19 Întreținerea  Întreținere corectivă: eliminarea erorilor  Întreținere adaptivă: adaptarea la alt mediu  Întreținere perfectivă: includerea de funcționalități suplimentare  Legea evoluției software-ului: software-ul schimbă mediul, apoi trebuie să se adapteze la noul mediu  Întreținerea costă de obicei mai mult decât dezvoltarea unei aplicații  Presupune înțelegerea codului, modificarea, testarea de regresiune  În timpul dezvoltării, întreținerea este deseori neglijată  Raport de cost 60:40 – 80:20 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 20. 20 Scala proiectelor  Proiectele complexe necesită metode diferite de dezvoltare față de proiectele de mici dimensiuni  Presupun formalizarea procedurilor inginerești și a managementului de proiect  Proiecte:  Mici: < 10.000 LOC  Medii: 10.000 – 100.000 LOC  Mari: 100.000 – 1.000.000 LOC  Foarte mari: > 1.000.000 LOC Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 21. 21 Scala proiectelor  Previziuni:  1946: Goldstein, von Neumann (EDVAC, primul calculator binar cu program stocat) – max. 1000 instrucțiuni  1981: Bill Gates (la apariția IBM PC) – max. 640 KB RAM  Realitatea:  1966: sistemul de operare IBM OS 360, 5000 de ani-om  1977: naveta spațială NASA, 40.000.000 LOC  1983: System V versiunea 4.0 Unix, 3.700.000 LOC  1992: sistemul de rezervare a biletelor KLM, 2.000.000 LOC în limbaj de asamblare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 22. 22 Triunghiul managementului de proiect  Managementul unui proiect este condus de trei factori majori: costul, timpul și domeniul de aplicare (engl. “scope”, întinderea, anvergura)  Costul este o măsură a resurselor utilizate pentru sistem  În cazul software-ului, este dominat de costul de personal  Costul poate fi estimat ca efort (luni-om) * cost mediu (lunar)  Include costul suplimentar pentru hardware și instrumentele de dezvoltare  Timpul  Mediul de afaceri dorește reducerea timpului de livrare  Creșterea productivității (LOC / lună-om) determină scăderea timpului și a costului  Domeniul este dat de specificații Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 23. 23 Calitatea  Calitatea presupune, conform standardului internațional al calității produselor software ISO/IEC 9126:  Funcționalitate (engl. “functionality”)  Asigurarea funcțiilor care satisfac nevoile exprimate explicit sau implicite  Include securitatea: persoanele neautorizate să nu aibă acces iar celor autorizate să nu le fie refuzat accesul  Fiabilitate (engl. “reliability”)  Menținerea unui nivel specificat de performanță  Utilizabilitate (engl. “usability”)  Capacitatea de a fi înțeles, învățat și utilizat  Eficiență (engl. “efficiency”)  Asigurarea unor performanțe adecvate relativ la volumul de resurse utilizate  Mentenabilitate (engl. “maintainability”)  Capacitatea de a fi modificat pentru corecții, îmbunătățiri sau adaptări  Portabilitate (engl. “portability”)  Capacitatea de a fi adaptat pentru medii diferite exclusiv pe baza mijloacelor existente în produs Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 24. 24 Calitatea  Importanța fiecărei dimensiuni de calitate depinde de natura proiectului  Sistem critic: fiabilitate  Joc: utilizabilitate  Înainte de dezvoltare, trebuie specificat obiectivul principal de calitate  Fiabilitatea este considerată în general cea mai importantă  Se măsoară în defecte / KLOC  Bunele practici curente: mai puțin de 1 defect / KLOC  Definirea unui defect depinde de proiect sau de standardele organizației dezvoltatoare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 25. 25 Schimbarea  Schimbările din mediul comercial sunt rapide și frecvente, implică schimbarea produselor software aferente  Așteptările privind schimbarea sunt mai mari în cazul software-ului pentru că acesta nu are proprietăți „fizice”  Dezvoltarea software-ului trebuie să fie adaptată schimbărilor continue Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 26. 26 Consecvență și repetabilitate  Succesele trebuie să fie repetabile  Calitatea și productivitatea trebuie să fie consecvente  Acest lucru permite unei organizații:  Să prevadă cu acuratețe rezultatele proiectelor  Să își îmbunătățească procesele de dezvoltare  Se impune standardizarea unor proceduri și folosirea unor metodologii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 27. Introducere în ingineria programării 1. Introducere 2. Fazele procesului de dezvoltare 3. Istoria programării 4. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 28. 28 Fazele dezvoltării  Dezvoltarea pe faze împarte problema în mai multe aspecte care pot fi tratate separat  Costul de dezvoltare este mai mic decât în cazul în care problema ar fi abordată în întregime  Permite verificarea calității la intervale stabilite, de exemplu după fiecare fază, în loc să se aștepte până când produsul este finalizat  Există multe metodologii de dezvoltare iar organizațiile au de multe ori propriile versiuni  În general, rezolvarea oricărei probleme constă în:  Analiza problemei și specificarea cerințelor  Proiectare  Implementare (codarea, programarea propriu-zisă)  Testare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 29. 29 Analiza  Presupune înțelegerea problemei (CE se dorește de la sistem)  Scopul este documentarea cerințelor  Au loc două activități majore:  Înțelegerea problemei (analiza)  Pentru un sistem nou, este dificilă și presupune creativitate  Specificarea cerințelor  Cerințele funcționale și de performanță, constrângerile  Manualul de utilizare preliminar: interfețele principale cu utilizatorul Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 30. 30 Proiectarea  Scopul este planificarea unei soluții pentru problema specificată (CUM se va rezolva)  Tipuri de proiectare:  Proiectarea arhitecturală  Componente sau subsisteme, interacțiunile acestora  Proiectarea de nivel înalt  Specificarea modulelor, structurilor de date, formatelor  Şabloane de proiectare  Proiectarea detaliată  Logica internă a modulelor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 31. 31 Implementarea  Traducerea proiectării într-un anumit limbaj de programare  Detaliile care țin de limbaj nu sunt specificate în faza de proiectare  Scopul trebuie să fie reducerea timpului de testare și întreținere, prin simplitate și claritate  Programele trebuie să fie:  Ușor de citit și de înțeles  Ușor de modificat și de extins Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 32. 32 Testarea  Este principala măsură de control al calității  Presupune detectarea defectelor software-ului  Din toate fazele, nu numai din faza de implementare  Tipuri de testare:  Testarea unităților: a modulelor individuale  Testarea integrării: a interconectării modulelor  Testarea sistemului: a cerințelor sistemului  Testarea de recepție (engl. “acceptance testing”): operarea pe datele reale ale clientului Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 33. 33 Testarea  Este o activitate critică și de durată  Deseori necesită un plan de testare  Rezultate:  Raportul de test  Descrie cazurile de test executate și rezultatele obținute  Raportul de erori  Descrie erorile întâlnite Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 34. Introducere în ingineria programării 1. Introducere 2. Fazele procesului de dezvoltare 3. Istoria programării 4. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 35. 35 Zuse Z3 (Germania, 1941)  Primul calculator funcțional controlat prin program  Construit din relee telefonice mecanice Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 36. Plankalkül  Primul limbaj de programare (exclusiv teoretic) 36 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 37. 37 Colossus (Marea Britanie, 1944)  Mașini folosite pentru a decripta mesaje secrete de nivel înalt ale armatei germane  Construite din lămpi electronice vidate  Au rămas secrete până în 1975 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 38. 38 ENIAC (SUA, 1945)  Primul calculator electronic de uz general, avea 30 t  Proiectat pentru a calcula tabele balistice pentru armata SUA  Programarea se realiza prin manipularea comutatoarelor și cablurilor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 39. 39 EDVAC (SUA, 1949)  Binar, nu zecimal ca ENIAC  Raportul lui John von Neumann asupra lui EDVAC conține descrierea arhitecturii von Neumann Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 40. 40 EDSAC (Marea Britanie, 1949)  Unul din primele calculatoare cu program stocat  Instrucțiuni procesor și bibliotecă de subrutine  A descoperit cel mai mare număr prim la vremea respectivă  A rulat primul joc video, OXO (X și 0) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 41. 41 Mark I (Marea Britanie, 1949)  Unul din primele calculatoare cu program stocat  Prima utilizare a registrelor index  Primul program: test al numerelor prime Mersenne (2n - 1)  Mark II – “bug” (o molie care a stricat un releu) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 42. Perceptronul Mark I  În 1960, Frank Rosenblatt a demonstrat algoritmul de învățare al perceptronului (o rețea neuronală simplă) cu ajutorul calculatorului Mark I, pentru o problemă de clasificare de imagini 42 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 43. 43 LEO (Marea Britanie, 1951)  Prima aplicație comercială a unui calculator: Joseph Lyons and Co., firmă de catering și producție alimentară  Utilizat pentru state de plată, inventar, instrucțiuni de asamblare, planificarea livrărilor, facturi etc. Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 44. 44 UNIVAC (SUA, 1951)  Construit de inventatorii ENIAC, Eckert și Mauchly  Destinat în principal mediului comercial  Prima vânzare: Biroul de Recensământ al SUA  A prezis la CBS victoria clară a lui Eisenhower din 1952  Costa până la 1.500.000 $ și avea 13 t Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 45. 45 IBM 650 (SUA, 1953)  Primul calculator produs în serie  2000 de sisteme produse între 1954 - 1962  Putea relua execuția în cazul unei erori și nu necesita restartarea manuală Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 46. 46 Fortran (1954)  Dezvoltat de IBM  Destinat calculelor numerice și științifice  Încă popular în calculul de mare performanță Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 47. 47 Lisp (1958)  Sintaxă specifică bazată pe paranteze  Limbaj favorit pentru aplicații de inteligență artificială  Poate manipula codul sursă ca pe o structură de date Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 48. 48 Algol (1958)  Primul limbaj care a utilizat blocuri “begin - end”  A devenit un standard pentru descrierea algoritmilor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 49. 49 Cobol (1959)  Destinat aplicațiilor comerciale, financiare și administrative Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 50. 50 Tranzistorul  Lilienfeld, 1926  Bardeen, Brattain și Shockley, Bell Labs, 1947, premiul Nobel pentru fizică, 1956  Un tranzistor avea 1/50 din dimensiunea și 1/100 din greutatea unei lămpi  Inițial, industria de electronice nu a fost interesată  Tirania numerelor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 51. 51 Circuitele integrate  Aveau posibilitatea de a fi produse în serie  La început un circuit integrat costa 1000 de dolari și avea o rată de defectare de 90%  Cursa spațială  Sputnik 1 (1957)  Iuri Gagarin (1961)  Pentagonul și NASA erau dispuse să investească în tehnologia circuitelor integrate  Modulul lunar Apollo 11 avea cel mai puternic calculator din lume în 1969  10 ani mai târziu, un circuit integrat costa 1 cent și era de 1000 de ori mai puternic Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 52. 52 Realizări  Scăderea în dimensiuni: „a treia generație” de calculatoare, de exemplu IBM System/360 (1965), 300 kg  Legea lui Moore (1965, 1975): complexitatea hardware-ului se dublează la fiecare doi ani  ARPANET (1969)  Avea ca scop conectarea computerelor mainframe de la diferite universități din SUA  Stă la baza internetului de astăzi Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 53. 53 Simula (Norvegia, 1962)  Primul limbaj orientat pe obiecte  Destinat simulărilor  Avea clase, obiecte, metode virtuale, garbage collector  Sintaxă bazată pe Algol  A influențat puternic limbajele orientate pe obiecte ulterioare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 54. 54 Basic (1964)  Destinat programării de către nespecialiști  Primul produs vândut de Microsoft, Altair Basic (1975) și primul caz major de piraterie software  Popular în anii ’80 pentru “home computers”, HC  Utilizat și astăzi: Microsoft Visual Basic Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 55. Industria software  Termenul de “software” a fost propus în 1958 de statisticianul John Tukey  Până în anii ’60, producătorii de calculatoare vindeau software-ul împreună cu hardware-ul, inclus în preț (sisteme de operare, compilatoare, alte utilitare)  De la 1 ianuarie 1970, IBM a început să vândă separat software-ul (engl. “unbundle”)  Aplicații de succes: limbaje de simulare, compilatoare, transformarea codului sursă în schemă logică, manager de fișiere și generator de rapoarte 55 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 56. 56 Criza software  Programarea era foarte dificilă  Puterea hardware-ului creștea continuu, la fel și așteptările la adresa software-ului, care nu putea ține pasul  Un raport din anii ’60 arăta că:  2% din sistemele software contractate au funcționat de la predare  3% din sistemele software au putut funcționa după câteva modificări  29% au fost predate dar n-au funcționat niciodată  19% au fost folosite dar au fost abandonate  47% au fost plătite dar niciodată predate Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 57. 57 Conferințele NATO  1968: Conferința Comitetului științific al NATO cu tema „Ingineria programării”, Garmisch, Germania  Aici s-a propus pentru prima dată termenul de „Ingineria programării” (engl. “Software Engineering”) de către Friedrich L. Bauer  1969: Conferința NATO cu tema „Tehnici ale ingineriei programării”, Roma  Bauer (1972): Ingineria programării reprezintă stabilirea și utilizarea unor principii inginerești solide pentru a obține în mod economic software fiabil și care lucrează eficient pe mașini reale. Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 58. 58 XEROX PARC (1970)  Incubatorul multor elemente ale calculatoarelor moderne:  Mouse-ul  Interfața grafică cu utilizatorul cu ferestre și icoane  Editor de text de tip “What You See Is What You Get”  Ethernet  Mediul de dezvoltare integrat Smalltalk (POO)  Imprimanta laser Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 59. 59 Unix (1970)  Thomson, Richie, McIlroy – Bell Labs  1973: rescris în C  A condus la creșterea portabilității  Obiective:  Portabil, multi-tasking, multi-user  Caracteristici:  Stocarea datelor ca text  Sistem de fișiere ierarhic  Tratarea dispozitivelor ca fișiere  Interpretorul liniei de comandă ce utilizează “pipelines” Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 60. 60 Software vs. hardware  1973: Barry Boehm prezice că software-ul va depăși hardware-ul din punct de vedere al costurilor  Raportul său către DARPA a inițiat o schimbare de direcție în domeniu Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 61. 61 Microprocesorul. Alte calculatoare  Intel 8080 (1974): primul microprocesor, a patra generație de calculatoare  Altair 8800 (1975): scânteia care a dus la revoluția calculatoarelor personale Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 62. 62 Alte calculatoare  IBM 5100 (1975): primul „Calculator Portabil”, incluzând tastatură, ecran, dispozitiv de stocare a datelor pe bandă magnetică  Apple (1976): kit de calculator personal, primul floppy disk de 5.25" și primul program foaie de calcul, VisiCalc Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 63. 63 Limbaje de programare  Pascal (1970): Niklaus Wirth  Destinat inițial predării programării structurate  Recursivitate  C (1972): Dennis Ritchie la AT&T Bell Labs  Destinat inițial scrierii sistemului de operare Unix  SQL (1974): D. D. Chamberlin, R. F. Boyce  Destinat manipulării datelor din sistemul de baze de date relaționale IBM System R Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 64. 64 Limbaje de programare  Smalltalk (1972): Xerox PARC  Scop educațional, „simbioza om-calculator”  Orientat pe obiecte, tipuri dinamice, reflection Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 65. 65 Limbaje de programare  Prolog (1972): Alain Colmerauer, Marsilia  Limbaj declarativ, cu rădăcini în logica formală  Destinat inițial prelucrării limbajului natural, utilizat apoi pentru demonstrarea de teoreme, sisteme expert etc. Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 66. 66 Industria software în anii ’70  Atari (1972)  Jocuri video: Pong, Pond Double, Space Race, Gotcha!  Microsoft (1975)  Altair Basic  Oracle (1977)  Prima versiune intitulată “version 2” Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 67. 67 Calculatoarele personale IBM PC (1981) Apple Macintosh (1984) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 68. CTRL + ALT + DEL  IBM PC, repornirea sistemului de la tastatură  1 tastă, apoi 2 taste – erau des apăsate din greșeală, se pierdeau lucrările nesalvate  Apoi s-au ales 3 taste, CTRL + ALT + ESC, dar tot puteau fi apăsate din greșeală  În final, s-a ajuns la combinația CTRL + ALT + DEL 68 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 69. 69 Calculatoarele personale Sinclair ZX Spectrum (UK, 1982) Commodore 64 (SUA, 1982) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 70. Clone Spectrum  Fabricate în România:  Felix HC  HC 85, HC 88, HC 90, HC 91, HC91+ (HC128), HC 2000, HC386  Cobra  CIP-03  JET  TimS 70 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 71. 71 Anii ’80  MS-DOS (1981)  Microsoft Windows (1985)  MS Office (Word, 1984)  World Wide Web (Tim Berners-Lee, CERN, 1989)  C++ (Bjarne Stroustrup, 1983)  Perl (1987) Microsoft Windows 1.0 MS Word pentru MAC OS X Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 72. Floppy disks  8", 1971-1977, 80 KB – 1,2 MB  5,25", 1976-1984, 98,5 KB – 1,2 MB  3,5", 1982-1998, 400 KB – 1,44 MB 72 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 73. 73 Rezultate interesante  „Nu există gloanțe de argint” (Brooks, 1986)  Complexitatea esențială  Complexitatea accidentală  Regula 80-20 (Principiul Pareto)  80% din efecte sunt determinate de 20% din cauze  80% din utilizatori folosesc în general 20% din trăsăturile unui produs software  80% din erorile Windows și Office erau cauzate de 20% din totalul defectelor, iar 50% din erori de 1% din defecte (2002) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 74. 74 Anii ’90  Sisteme de operare  Microsoft Windows  Linux (1991)  Browsere  Mosaic (1993)  Netscape Navigator (1994)  MS Internet Explorer (1995)  Servicii de webmail  Hotmail (1996)  Yahoo! Mail (1997)  Motoare de căutare  Google (1998)  Limbaje de programare  Python (1991)  PHP (1995)  Java (1995)  JavaScript (1996) Windows 3.1 Mosaic Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 75. 75 Mileniul 3  Sisteme de operare  Windows XP (2001), Windows 7 (2009), Windows 8 (2012), Windows 10 (2015)  Browsere  Mozilla Firefox (2003)  Google Chrome (2008)  Servicii de webmail  Gmail / Google Mail (2004)  Motoare de căutare  Microsoft Bing (2009)  Limbaje de programare  C# 1.0 (2002), C# 5.0 (2012), C# 6.0 (2015) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 76. 76 Cote de piață  Browsere (ian. 2017) http://gs.statcounter.com  Chrome: 52% (RO: 64%)  Safari: 15% (RO: 7%)  UC Browser (Alibaba, China): 8%  Firefox: 7% (RO: 12%)  Motoare de căutare (ian. 2017) http://gs.statcounter.com  Google: 93% (RO: 98%)  Bing: 3% (RO: 1%)  Servicii de webmail  Gmail: 1 miliard de utilizatori activi pe lună în feb. 2016  Yahoo! Mail: 1 miliard de utilizatori activi pe lună în feb. 2016  Outlook.com: 400 de milioane de utilizatori activi pe lună în iul. 2016  54% din email-uri sunt deschise de pe echipamente mobile Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 77. 77 Rețele sociale  Mai mult de 100 de site-uri  Printre cele mai utilizate: http://expandedramblings.com  Facebook (fondat în 2004)  1,86 miliarde vizitatori activi pe lună în feb. 2017  LinkedIn (fondat în 2003)  467 milioane vizitatori activi pe lună în oct. 2016  Twitter (fondat în 2006)  317 milioane vizitatori activi pe lună în oct. 2016 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 78. 78 Concluzii  Ingineria programării este o colecție de metode și recomandări pentru dezvoltarea eficientă de programe de mari dimensiuni  Software-ul nu este doar o mulțime de programe, ci include documentația și datele asociate  Fazele fundamentale ale dezvoltării programelor sunt: analiza, proiectarea, implementarea și testarea  Istoria sistemelor de calcul și a programării se întinde pe aproximativ 70 de ani iar dezvoltarea prezentă a domeniului este fără precedent Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm