Post on 10-Apr-2018
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 1/80
Ingineria program ării
1. Introducere îningineria programării
Florin LeonUniversitatea 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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 2/80
2
Educaţia e când citeşti manualul.
Experienţa e ceea ce capeţi dacă nu -l citeşti.
Pete Seeger
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 3/80
Introducere îningineria programării
1. Introducere2. Fazele procesului de dezvoltare3. Istoria programării4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 4/80
Introducere îningineria programării
1. Introducere2. Fazele procesului de dezvoltare3. Istoria programării4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 5/80
5
Software academic ş i industrialExemplu:O problemă de 10000 LOC
Student: 2 luni (5000 LOC / lună) Firmă: 1000 LOC/lună, 10 luni-om
Software academicVersiune demo funcţională Hobby: nu necesită documentaţie şi interfaţă complexă cuutilizatorul, defectele sunt corectate când apar
Software industrialPlătit de client Influenţează mediul de afaceri Necesită o abordare inginerească
Toată lumea consideră importantă disciplina de lucru, dar nuexistă un acord general asupra modalităţilor de aplicare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 6/80
6
Ingineria programării Ingineria programării reprezintă aplicareaunei abordări sistematice, disciplinate şicuantificabile 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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 7/80
7
Software industrialEste construit pentru a rezolva unele probleme dinorganizaţia clientului
Funcţionarea incorectă poate provoca pierderi financiare şichiar pierderea de vieţi omeneşti
Trebuie să aibă calitate foarte bună Testare riguroasă înainte de livrare (30%-50% din efortultotal)Dezvoltarea este împărţită pe faze pentru a corecta
defectele din vreme (necesită documentaţie) Are cerinţe de recuperare a datelor, toleranţă ladefecte, portabilitate
Acestea conduc la creşterea dimensiunilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 8/80
8
Regula lui BrooksSoftware-ul industrial în comparaţie cusoftware-ul academic
Productivitate: 1 / 5Dimensiune dublă
Software-ul industrial necesită de 10 ori maimult efort decât software-ul academic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 9/80
9
SoftwareSoftware-ul este o colecţie de programe decalculator, proceduri, reguli, împreună cudocumentaţia şi datele asociate
(IEEE )
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 10/80
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 desoftware estesatisfacerea nevoilorclienţilor sau utilizatorilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 11/80
11
Costul produselor softwareCostul software-ului depinde în primul rândde efortul oamenilorProductivitatea este frecvent măsurată în liniide cod (LOC) / lună-omProductivitatea medie pentru o aplicaţie nouăeste de 300- 1000 LOC / lună-om
8000 $ / lună 8-25 $ / LOCUn program mediu de 50.000 LOC poate costaaproximativ 1.000.000 $
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 12/80
12
Software şi hardware Un produs de un milion de dolari poate fi instalat peun calculator de câteva sute de dolariSoftware-ul este în prezent componenta principală aunui sistem informatic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 13/80
13
Întârzieri şi instabil itateDin 600 de firme, 35% aveau proiecte informaticescăpate de sub control din punct de vedere albugetului şi timpului de execuţie
Raportul Standish Group privind finalizareaproiectelor IT în SUA
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 14/80
14
Lipsa de încredereSoftware care:
Nu face ce trebuieFace ce nu trebuie
În sisteme complexe (incluzând componenteelectrice, mecanice, hidraulice), de celemai multe ori software-ul este problema
cea mai mareDefectele software-ului nu se datorează uzurii,ci erorilor de proiectare şi implementare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 15/80
15
Defecte „celebre” (I) 28 iulie 1962 – sonda spaţială Mariner I 1982 – conducta sovietică de gaz trans -siberiană 1983 – sistemul sovietic de avertizarenucleară 1985-1987 – acceleratorul medical Therac-251988-1996 – generatorul de numere aleatoriial protocolului Kerberos
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 16/80
16
Defecte „celebre” (II) 15 ianuarie 1990 – căderea reţelei de telefonie AT&T25 februarie 1991 – defectul rachetei Patriot înrăzboiul din Golf 15 octombrie 1989 – căderea sistemului de dirijare atraficului de la aeroportul Dallas - Fort Worth4 iunie 1996 – explozia rachetei Arianne 5Noiembrie 2000 – sistemul de radioterapie înPanama City
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 17/80
17
ReprogramareaCerinţele nu sunt specificate complet
Schimbarea lor conduce la refacerea tuturorfazelor ulterioare
Pentru proiecte cu durată lungă, cerinţeleclientului se modifică Reprogramarea consumă 30% -40% dinefortul total de dezvoltare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 18/80
18
Întreţinerea Întreţinere corectivă
Eliminarea erorilor Întreţinere adaptivă
Includerea de funcţionalităţi suplimentare Legea evoluţiei software-ului: software-ul schimbă mediul, apoitrebuie să se adapteze la noul mediu
Întreţinerea costă de obicei mai mult decât dezvoltarea uneiaplicaţii
Presupune înţelegerea codului, modificarea, testarea deregresiune Î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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 19/80
19
Scala proiectelorProiectele complexe necesită metode diferitede dezvoltare faţă de proiectele de micidimensiuni
Presupun formalizarea procedurilor inginereşti şia managementului de proiectProiecte:
Mici: < 10 KLOCMedii: 10-100 KLOCMari: 100-1000 KLOCFoarte mari: peste 1 milion LOC
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 20/80
20
Scala proiectelorPreviziuni:
1946: Goldstein, von Neumann – max. 1000 instrucţiuni 1981: Bill Gates – max. 640 KB RAM
Realitatea:1966: sistemul de operare IBMOS 360: 5000 de ani-om1977: naveta spa ţială NASA:cc. 40 milioane LOC1983: System V versiunea 4.0Unix: 3,7 milioane LOC1992: sistemul de rezervare abiletelor KLM: 2 milioane LOC în limbaj de asamblare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 21/80
21
Triunghiul managementului deproiect
Ingineria programării este condusă de 3 factori majori: costul, timpul şidomeniul de aplicare (întinderea, anvergura)
Costul este o măsură a resurselor utilizate pentru sistem În cazul software-ului este dominat de costul de personalCostul poate fi estimat ca efort (luni-om) * cost mediu (lunar)Include costul suplimentar pentru hardware şi instrumentele de dezvoltare
TimpulMediul de afaceri doreşte reducerea timpului de livrare Creşterea productivităţii (KLOC / lună-om) determină scăderea timpului şi a costului
Domeniul (engl. “scope”) este dat de specificaţii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 22/80
22
Calitatea (I)Calitatea presupune, conform standardului internaţional al calităţii produselorsoftware:
Funcţionalitate (functionality) Asigurarea funcţ iilor care satisfac nevoile exprimate explicit sau impliciteInclude securitatea : persoanele neautorizate să nu aibă acces iar celor autorizate să nu le
fie refuzat accesul Încredere (reliability)Menţinerea unui nivel specificat de performanţă
Utilizabilitate (usability)Capacitatea de a fi înţeles, învăţat şi utilizat
Eficienţă (efficiency)
Asigurarea unor performanţe adecvate relativ la volumul de resurse utilizate Mentenabilitate (maintainability)Capacitatea de a fi modificat pentru corecţii, îmbunătăţiri sau adaptări
Portabilitate (portability)Capacitatea de a fi adaptat pentru medii diferite exclusiv pe baza mijloacelor existente înprodus
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 23/80
23
Calitatea (II)Importanţa fiecărei dimensiuni depinde de naturaproiectului
Sistem critic: încredereJoc: utilizabilitate
Înainte de dezvoltare, trebuie specificat obiectivulprincipal de calitate
Încrederea este considerată în general cea maiimportantă
Se măsoară în defecte / KLOC Bunele practici curente: mai puţin de 1 defect / KLOC Definirea unui defect depinde de proiect sau de standardeleorganizaţiei dezvoltatoare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 24/80
24
SchimbareaSchimbările din mediul de afaceri 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 areproprietăţi „fizice” Dezvoltarea software-ului trebuie să fieadaptată schimbărilor continue
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 25/80
25
Consecvenţă şi repetabilitate Succesele trebuie să fie repetabile Calitatea şi productivitatea trebuie să fieconsecvente 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 şifolosirea unor metodologii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 26/80
Introducere îningineria programării
1. Introducere2. Fazele procesului de dezvoltare3. Istoria programării4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 27/80
27
Fazele dezvoltării Dezvoltarea pe faze împarte problema în mai multe aspecte carepot fi tratate separat
Costul de dezvoltare este mai mic decât în cazul în care problema ar fiabordată î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 multeori propriile versiuni
În general, rezolvarea oricărei probleme constă în:
Analiza problemeişi specificarea cerinţelor ProiectareImplementare (codarea, programarea propriu-zisă) Testare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 28/80
28
AnalizaPresupune înţelegerea problemei ( CE se doreşte dela 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, constrângerile Manualul de utilizare preliminar: interfeţele principale cuutilizatorul
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 29/80
29
Miturile clienţilor Miturile propagate din istoria timpurie aprogramării produc aşteptări nerealiste dinpartea clienţilor şi nemulţumiri din parteadezvoltatorilorExemple de mituri ale clienţilor:
O descriere generală a obiectivelor este suficientă
pentru începerea scrierii programuluiCerinţele se schimbă permanent, dar software -uleste flexibil şi se adaptează
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 30/80
30
ProiectareaScopul este planificarea unei soluţii pentruproblema specificată (CUM se va rezolva)Rezultate:
Proiectarea arhitecturală (componente sausubsisteme, interacţiunile acestora) Proiectarea de nivel înalt (specificarea modulelor,
structurilor de date, formatelor)Proiectarea detaliată (logica internă a modulelor)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 31/80
31
ImplementareaTraducerea proiectării într -un anumit limbaj deprogramare
Detaliile care ţin de limbaj nu sunt specificate în faza de
proiectareScopul este 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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 32/80
32
Mituri ale dezvoltatorilor În primii ani ai programării, aceasta era văzută ca oformă de artă Exemple de mituri:
Odată ce programul este scris şi funcţionează, rolul nostrus-a încheiatPână când nu merge programul, nu îi putem evaluacalitatea
Singurul produs util este programul funcţional Ingineria programării va crea documentaţie voluminoasă şiinutilă şi va produce întârzieri
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 33/80
33
Testarea (I)Este principala măsură de control al calităţii Presupune detectarea defectelor software-ului
Din toate fazele, nu numai din implementare
Tipuri de testareTestarea 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 ”): operareape datele reale ale clientului
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 34/80
34
Testarea (II)Este o activitate critică şi de durată Deseori necesită un plan de testare
Rezultatele:Raportul de test: descrie cazurile de testexecutate şi rezultatele obţinute Raportul de erori: descrie erorile întâlnite
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 35/80
Introducere îningineria programării
1. Introducere2. Fazele procesului de dezvoltare3. Istoria programării4. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 36/80
36
Zuse Z3 (Germania, 1941)Primul calculator funcţional controlat prin program Construit din relee telefonice mecanicePrimul limbaj de programare Plankalkül (exclusiv teoretic)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 37/80
37
Colossus (Marea Britanie, 1944)Maşini folosite pentru a decripta mesaje secretede nivel înalt ale armatei germaneConstruite din lămpi electronice vidate Au rămas secrete până în 1975
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 38/80
38
ENIAC (SUA, 1945)Primul calculator electronic de uz generalProiectat pentru a calcula tabele balistice pentru armata SUAProgramarea se realiza prin manipularea comutatoarelor şicablurilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 39/80
39
EDVACBinar, nu zecimal ca ENIACRaportul lui John von Neumann asupra lui EDVAC conţinedescrierea arhitecturii von Neumann
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 40/80
40
EDSAC (Marea Britanie, 1949)Unul din primele calculatoare cu program stocatInstrucţ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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 41/80
41
Mark I (Marea Britanie, 1949)Unul din primele calculatoare cu program stocatPrima utilizare a registrelor indexPrimul program: test al numerelor prime MersenneMark II – “bug” (o molie care a stricat un releu)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 42/80
Perceptronul Mark I În 1960, Frank Rosenblatt a demonstrat algoritmulde î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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 43/80
43
LEO (Marea Britanie, 1951)Prima aplicaţie comercială aunui calculator (Joseph Lyonsand Co., firmă de catering şi
producţie de alimente) Utilizat pentru state de plată,inventar, instrucţiuni deasamblare, planificarea
livrărilor, facturi etc.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 44/80
44
UNIVAC (SUA, 1951)Construit de inventatorii ENIACDestinat în principal mediului comercialPrima vânzare: Biroul de Recensământ al SUA
A prezis la CBS victoria clară a lui Eisenhower Costa până la 1,5 milioane $
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 45/80
45
IBM 650 (SUA, 1953)Primul calculator produs în serie
2000 de sisteme produse între 1954 - 1962Putea relua execuţia în cazul unei erori şi nu
necesita restartarea manuală
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 46/80
46
“Software” Termenul de “software” a fost propus în 1958de statisticianul John Tukey
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 47/80
47
Fortran (1954)Dezvoltat de IBMDestinat calculelor numerice şi ştiinţifice Încă popular în calculul de mare performanţă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 48/80
48
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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 49/80
49
Algol (1958)Standard pentru descrierea algoritmilorPrimul limbaj care a utilizat blocuri“begin - end”
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 50/80
50
Cobol (1959)Destinat aplicaţiilor comerciale, financiare şiadministrative
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 51/80
51
Industria softwareCompanii fondate de foşti angajaţi aicompaniilor producătoare de calculatoare
Computer Usage Corporation – f ondată de 2 foştiangajaţi IBM Applied Data Research – f ondată de 7programatori UNIVACComputer Sciences Corporation – compilator deCobol
CSC este şi în prezent o mare firmă de servicii IT
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 52/80
52
Anii 60. TranzistorulBell Labs – Shockley ş.a. Un tranzistor avea 1/50 dindimensiunea şi 1/100 din
greutatea unei lămpi Iniţial, industria deelectronice nu a fostinteresată
Tirania numerelor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 53/80
53
Circuitele integrate Aveau posibilitatea de a fi produse înserieLa început un circuit integrat costa1000 de dolari şi avea o rată dedefectare de 90%Cursa spaţială
Sputnik 1 (1957)Iuri Gagarin (1961)
Pentagonul şi NASA erau dispuse săinvestească în tehnologia circuitelor
integrateModulul lunar Apollo 11 avea cel maiputernic calculator din lume în 1969
10 ani mai târziu, un circuit integratcosta 1 cent şi era de 1000 de ori maiputernic
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 54/80
54
Realizări Scăderea în dimensiuni - „a treia generaţie” decalculatoare, de exemplu IBM System/360Legea lui Moore (1965): complexitateahardware-ului se dublează la fiecare doi ani
ARPANET (1969) Avea ca scop conectarea computerelor mainframe dela diferite universităţi din SUA Stă la baza Internetului actual
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 55/80
55
Simula (Norvegia, 1962)Primul limbaj orientat peobiecteDestinat simulărilor Avea clase, obiecte,metode virtuale, garbagecollectorSintaxă bazată pe Algol A influenţat puternic
limbajele orientate peobiecte ulterioare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 56/80
56
Basic (1964)Destinat programării decătre nespecialişti Popular în anii 80 pentru
“home computers”, HC Popular şi astăzi:Microsoft Visual BasicPrimul produs vândut de
Microsoft, Altair Basic(1975)Primul caz major de pirateriesoftware
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 57/80
57
Paradigme de programareProgramarea structurată
Secvenţa, selecţia, iteraţia Programarea orientată pe obiecte
A apărut ca o soluţie pentru creşterea calităţiisoftware-ului (modularizare şi reutilizare) Nu a fost utilizată pe scară largă până în anii ‘90
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 58/80
Industria software2800 de firme de servicii software45 cu mai mult de 100 de programatori şi venituri de până la100 de milioane de dolari
Până în anii ‘60, producătorii de calculatoare vindeausoftware-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ă separatsoftware-ul (engl. “unbundle”) Alte aplicaţii de succes: limbaje de simulare, compilatoare,transformarea codului sursă în schemă logică, manager defişiere şi generator de rapoarte
58
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 59/80
59
Criza softwareProgramarea era foarte dificilă Puterea hardware- ului creştea continuu, la fel şi aşteptărilela adresa software-ului, care nu putea ţine pasul Un raport arăta că:
2% din sistemele software contractate au funcţionat de lapredare3% din sistemele software au putut funcţiona după câtevamodificări 29% au fost predate dar n- au funcţionat niciodată 19% au fost folosite dar au fost abandonate47% au fost plătite dar niciodată predate
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 60/80
60
Conferinţele NATO 1968: Conferinţa Comitetului ştiinţific al NATOcu tema „Ingineria programării”, Garmisch,Germania
Aici s-a propus pentru prima dată termenul de„Ingineria programării” 1969: Conferinţa NATO cu tema „Tehnici aleingineriei programării”, Roma
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 61/80
61
XEROX PARC (1970)Incubatorul multor elemente alecalculatoarelor moderne:
Mouse-ulInterfaţa grafică cu utilizatorul cu ferestre şi icoane Editor text “What You See Is What You Get” Ethernet
Mediu de dezvoltare integrat Smalltalk (POO)Imprimanta laser
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 62/80
62
Unix (1970)Bell Labs: Thomson, Richie, McIlroy1973: rescris în C
Conduce la creşterea portabilităţii
Obiective:Portabil, multi-tasking, multi-user
Caracteristici:Stocarea datelor ca textSistem 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
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 63/80
63
Software vs. hardware1973: Barry Boehm prezice că software-ulva depăşi hardware -ul din punct de vedereal costurilor
Raportul său către DARPA a iniţiat o schimbarede direcţie în domeniu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 64/80
64
Alte calculatoare (I)Intel 8080 (1974): primulmicroprocesor, a patrageneraţie de calculatoare
Altair 8800 (1975): scânteiacare a dus la revoluţiacalculatoarelor personale
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 65/80
65
Alte calculatoare (II)IBM 5100 (1975): primul„Calculator Portabil”,incluzând tastatură,ecran, dispozitiv destocare a datelor pebandă magnetică
Apple (1976): kit decalculator personal, primulfloppy de 5.25"şi primulprogram foaie de calcul,VisiCalc
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 66/80
66
Limbaje de programare (I)Pascal (1970): Niklaus Wirth
Destinat iniţial predării programării structurate Recursivitate
C (1972): Dennis Ritchie la AT&T Bell LabsDestinat iniţial scrierii sistemului de operare Unix
SQL (1974): D. D. Chamberlin, R. F. BoyceDestinat manipulării datelor din sistemul de bazede date relaţionale IBM System R
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 67/80
67
Limbaje de programare (II)Smalltalk (1972): Xerox PARC
Scop educaţional, „simbioza om-calculator” Orientat pe obiecte, tipuri dinamice, “reflective”
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 68/80
68
Limbaje de programare (III)Prolog (1972): Alain Colmerauer, MarsiliaLimbaj declarativ, cu rădăcini în logica formală Destinat iniţial prelucrării limbajului natural, utilizat apoi pentrudemonstrarea de teoreme, sisteme expert etc.
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 69/80
69
Industria software în anii 70 (I)Producătorii de software independenţi auevoluat
Industria software era privită încă sceptic de marele
publicPe lângă programare, ofereau servicii de consultanţă,analiză şi proiectare
Deşi producătorii de hardware vindeau acumsoftware-ul separat, ei au rămas competitoriputernici pe piaţă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 70/80
70
Industria software în anii 70 (II) Atari (1972)
Jocuri video: Pong, Pond Double,Space Race, Gotcha!
Microsoft (1975) Altair Basic
Oracle (1977)Prima versiune: “version 2”
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 71/80
71
Anii 80 (I)
IBM PC (1981) Apple Macintosh (1984)
Sinclair ZX Spectrum (UK, 1982) Commodore 64 (SUA, 1982)Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 72/80
Clone SpectrumFabricate în România:
CobraCIP-03Felix HC
HC 85, HC 88, HC 90, HC 91, HC91+ (HC128),HC 2000, HC386
JETTimS
72
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 73/80
73
Anii 80 (II)MS-DOS (1981)Microsoft Windows (1985)MS Office (Word - 1984)World Wide Web (1989)
C++ (Bjarne Stroustrup, 1983)Perl (1987)
Microsoft Windows 1.0 MS Word pentru MAC OS XFlorin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 74/80
74
Rezultate interesanteNu există gloanţe de argint (Brooks, 1986)
Complexitatea esenţială Complexitatea accidentală
Regula 80-20 (Principiul Pareto) În IT: 80% din utilizatori folosesc în general 20%din trăsăturile unui produs software
80% din erorile Windows şi Office erau cauzatede 20% din totalul defectelor (50% din 1%)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 75/80
CTRL + ALT + DELIBM PC, repornirea sistemuluide 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
75
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 76/80
76
Anii 90Sisteme de operare
Microsoft WindowsLinux (1991)
BrowsereMosaic (1993)Netscape Navigator (1994)
MS Internet Explorer (1995)Servicii de webmailHotmail (1996)Yahoo! Mail (1997)
Motoare de căutare Google (1998)
Limbaje de programarePython (1991)PHP (1995)Java (1995)JavaScript (1996)
Windows 3.1
MosaicFlorin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 77/80
77
Mileniul 3Sisteme de operare
Windows XP (2001), Windows 7 (2009), Windows 8 (2012)Windows 10 Technical Preview (2014)
BrowsereMozilla Firefox (2003)Google Chrome (2008)
Servicii de webmailGmail / Google Mail (2004)
Motoare de căutare Microsoft Bing (2009)Limbaje de programare
C# 1.0 (2002), C# 5.0 (2012)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 78/80
78
Cote de piaţă Browsere (aug. 2014) http://gs.statcounter.com
Google Chrome: 45,6% (RO: 50,9%)MS Internet Explorer: 20,5% (RO: 11,7%)Mozilla Firefox: 17,4% (RO: 26,6%)
Motoare de căutare (aug. 2014) http://gs.statcounter.com
Google: 88,4% (RO: 95,5%)Bing: 4,5% (RO: 1,4%)Yahoo: 3,9% (RO: 2%)
Servicii de webmail (2012)Gmail: 425 milioane utilizatoriOutlook.com: 325 milioane utilizatoriYahoo! Mail: 298 milioane utilizatori
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 79/80
79
Reţele sociale Mai mult de 100 de site-uriPrintre cele mai utilizate:http://expandedramblings.com
Facebook (fondat în 2004)
1,15 miliarde vizitatori unici în august 2013Twitter (fondat în 2006)
500 milioane vizitatori unici în martie 2013Google+ (fondat în 2011)
343 milioane vizitatori unici în ianuarie 2013LinkedIn (fondat în 2003)
238 milioane vizitatori unici în august 2013
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8/8/2019 Ingineria programarii: Introducere
http://slidepdf.com/reader/full/ingineria-programarii-introducere 80/80
ConcluziiIngineria programării este o colecţie de metode şirecomandări pentru dezvoltarea eficientă de programede mari dimensiuniSoftware-ul nu este doar o mulţime de programe, ciinclude 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 peaproape 70 de ani iar dezvoltarea prezentă a domeniuluieste fără precedent