Ingineria programării1. Introducere în ingineria programăriiFlorin 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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
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
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
Î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
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
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
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
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
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
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
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
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
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
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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