+ All Categories
Home > Documents > Ingineria programarii: Introducere

Ingineria programarii: Introducere

Date post: 10-Apr-2018
Category:
Upload: enrollinfo
View: 243 times
Download: 0 times
Share this document with a friend
80
Ingineria programării 1. Introducere în ingineria programării Florin Leon Universitatea T ehnică „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
Transcript
Page 1: Ingineria programarii: Introducere

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

Page 2: Ingineria programarii: Introducere

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

Page 3: Ingineria programarii: Introducere

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

Page 4: Ingineria programarii: Introducere

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

Page 5: Ingineria programarii: Introducere

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

Page 6: Ingineria programarii: Introducere

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

Page 7: Ingineria programarii: Introducere

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

Page 8: Ingineria programarii: Introducere

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

Page 9: Ingineria programarii: Introducere

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

Page 10: Ingineria programarii: Introducere

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

Page 11: Ingineria programarii: Introducere

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

Page 12: Ingineria programarii: Introducere

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

Page 13: Ingineria programarii: Introducere

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

Page 14: Ingineria programarii: Introducere

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

Page 15: Ingineria programarii: Introducere

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

Page 16: Ingineria programarii: Introducere

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

Page 17: Ingineria programarii: Introducere

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

Page 18: Ingineria programarii: Introducere

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

Page 19: Ingineria programarii: Introducere

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

Page 20: Ingineria programarii: Introducere

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

Page 21: Ingineria programarii: Introducere

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

Page 22: Ingineria programarii: Introducere

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

Page 23: Ingineria programarii: Introducere

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

Page 24: Ingineria programarii: Introducere

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

Page 25: Ingineria programarii: Introducere

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

Page 26: Ingineria programarii: Introducere

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

Page 27: Ingineria programarii: Introducere

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

Page 28: Ingineria programarii: Introducere

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

Page 29: Ingineria programarii: Introducere

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

Page 30: Ingineria programarii: Introducere

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

Page 31: Ingineria programarii: Introducere

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

Page 32: Ingineria programarii: Introducere

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

Page 33: Ingineria programarii: Introducere

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

Page 34: Ingineria programarii: Introducere

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

Page 35: Ingineria programarii: Introducere

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

Page 36: Ingineria programarii: Introducere

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

Page 37: Ingineria programarii: Introducere

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

Page 38: Ingineria programarii: Introducere

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

Page 39: Ingineria programarii: Introducere

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

Page 40: Ingineria programarii: Introducere

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

Page 41: Ingineria programarii: Introducere

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

Page 42: Ingineria programarii: Introducere

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

Page 43: Ingineria programarii: Introducere

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

Page 44: Ingineria programarii: Introducere

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

Page 45: Ingineria programarii: Introducere

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

Page 46: Ingineria programarii: Introducere

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

Page 47: Ingineria programarii: Introducere

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

Page 48: Ingineria programarii: Introducere

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

Page 49: Ingineria programarii: Introducere

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

Page 50: Ingineria programarii: Introducere

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

Page 51: Ingineria programarii: Introducere

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

Page 52: Ingineria programarii: Introducere

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

Page 53: Ingineria programarii: Introducere

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

Page 54: Ingineria programarii: Introducere

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

Page 55: Ingineria programarii: Introducere

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

Page 56: Ingineria programarii: Introducere

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

Page 57: Ingineria programarii: Introducere

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

Page 58: Ingineria programarii: Introducere

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

Page 59: Ingineria programarii: Introducere

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

Page 60: Ingineria programarii: Introducere

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

Page 61: Ingineria programarii: Introducere

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

Page 62: Ingineria programarii: Introducere

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

Page 63: Ingineria programarii: Introducere

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

Page 64: Ingineria programarii: Introducere

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

Page 65: Ingineria programarii: Introducere

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

Page 66: Ingineria programarii: Introducere

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

Page 67: Ingineria programarii: Introducere

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

Page 68: Ingineria programarii: Introducere

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

Page 69: Ingineria programarii: Introducere

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

Page 70: Ingineria programarii: Introducere

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

Page 71: Ingineria programarii: Introducere

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

Page 72: Ingineria programarii: Introducere

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

Page 73: Ingineria programarii: Introducere

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

Page 74: Ingineria programarii: Introducere

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

Page 75: Ingineria programarii: Introducere

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

Page 76: Ingineria programarii: Introducere

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

Page 77: Ingineria programarii: Introducere

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

Page 78: Ingineria programarii: Introducere

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

Page 79: Ingineria programarii: Introducere

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

Page 80: Ingineria programarii: Introducere

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


Recommended