Sunteți pe pagina 1din 36

Ingineria programrii

1. Introducere n ingineria programrii

Educaia e cnd citeti manualul. Experiena e ceea ce capei dac nu-l citeti.
Pete Seeger

Introducere n ingineria programrii


1. Obiectivele ingineriei programrii 2. Sistemele socio-tehnice 3. Fazele ingineriei programrii

Introducere n ingineria programrii


1. Obiectivele ingineriei programrii 2. Sistemele socio-tehnice 3. Fazele ingineriei programrii

Necesitate

Economia tuturor statelor dezvoltate depinde de sisteme informatice Din ce n ce mai multe sisteme sunt controlate de calculator Este necesar identificarea de teorii, metode i instrumente pentru dezvoltarea profesionist de programe

Necesitate

Costurile programelor domin deseori costurile sistemelor computerizate; de ex. costurile de software pe un PC sunt deseori mai mari dect costurile de hardware ntreinerea programelor cost mai mult dect dezvoltarea lor; pentru sisteme cu durat mare de funcionare, costurile de ntreinere pot fi de cteva ori mai mari dect costurile de dezvoltare Este necesar dezvoltarea de programe ct mai eficient din punct de vedere financiar

Previziuni

1946: Goldstine i von Neumann apreciau c 1000 de instruciuni reprezint o limit superioar rezonabil pentru complexitatea problemelor de calculator 1949: o revist de popularizare a tiinei afirma c n viitor ar putea exista calculatoare mai uoare de 1,5 tone 1981: Bill Gates considera c nici un program pentru calculatoare personale nu va necesita vreodat mai mult de 640 KB de memorie RAM

Complexitatea sistemelor software actuale

Sistemul de rezervare a biletelor pentru compania aerian KLM coninea, n anul 1992, dou milioane de linii de cod n limbaj de asamblare Sistemul de operare System V versiunea 4.0 (UNIX) a fost obinut prin compilarea a 3.700.000 linii de cod Programele scrise pentru naveta spaial NASA au circa 40 de milioane de linii de cod Pentru realizarea sistemului de operare IBM OS/360 au fost necesari 5000 de ani-om

Criza software

Pe msur ce complexitatea programelor cretea, la sfritul anilor 60 ncepea s se prefigureze deja o criz a programrii Un raport prezentat de ctre o companie, n care erau analizate cteva proiecte i stadiile lor de finalizare, a constatat c:

2% din sistemele software contractate au funcionat de la predare 3% din sistemele software au putut funciona dup cteva modificri 29% au fost predate dar n-au funcionat niciodat 19% au fost folosite dar au fost abandonate 47% au fost pltite dar niciodat predate

Ingineria programrii

1968: La conferina organizat de comitetul tiinific al NATO a fost propus termenul de ingineria programrii (engl. software engineering)

Definiii

F. L. Bauer (prima definiie dat ingineriei programrii):

Ingineria programrii este stabilirea i utilizarea de principii inginereti solide pentru a obine n mod economic programe sigure i care funcioneaz eficient pe maini de calcul reale

IEEE Standard Glossary of Software Engineering Technology (1983):

Ingineria programrii reprezint abordarea sistematic a dezvoltrii, funcionrii, ntreinerii i retragerii din funciune a programelor

Produsele software

Programe de calculator mpreun cu documentaia asociat, precum cerine, modele de proiectare i manuale de utilizare Produsele software pot fi dezvoltate pentru un anumit client sau pentru o pia general Programele noi pot fi create de la zero, prin configurarea unor sisteme software generice sau prin reutilizarea programelor existente

Scopul ingineriei programrii

Ingineria programrii este preocupat de toate aspectele produciei de software Inginerii programatori trebuie s adopte o manier de lucru sistematic i organizat, s utilizeze instrumente i tehnici adecvate n funcie de problema care trebuie rezolvat i s in seama de constrngerile de dezvoltare i de resursele disponibile

Caracteristici

Ingineria programrii are urmtoarele caracteristici importante:


Este aplicabil n producerea de programe mari Este o tiin inginereasc Scopul final este ndeplinirea cerinelor clientului

Ingineria programrii vs. informatic

Informatica se ocup de teorie i principii fundamentale; ingineria programrii se concentreaz pe aspectele practice ale dezvoltrii i livrrii de produse software utile clienilor Teoriile informatice sunt nc insuficiente pentru a reprezenta o baz complet pentru ingineria programrii (de ex. cum e fizica pentru electrotehnic)

Fiabilitate

Un program este fiabil dac funcioneaz i continu s funcioneze fr ntreruperi un interval de timp Aceast noiune exprim de fapt rezistena la condiiile de funcionare Un sistem de operare trebuie s fie fiabil pentru c trebuie s funcioneze o perioad suficient de lung de timp fr s cad, indiferent de programele care ruleaz pe el, chiar dac nu totdeauna la performane optime

Siguran i securitate

Un program este sigur dac funcioneaz corect, fr operaii nedorite Un program pentru un automat bancar trebuie s fie sigur, pentru a efectua tranzaciile n mod absolut corect, chiar dac funcionarea sa poate fi ntrerupt din cnd n cnd. Atunci cnd funcioneaz ns, trebuie s funcioneze foarte bine Securitatea se refer la faptul c un sistem nu trebuie s permit utilizarea neautorizat i c se poate proteja mpotriva atacurilor

Erorile

Un program are o eroare (engl. bug) dac nu se comport aa cum se dorea Se presupune c dezvoltatorul tia ce ar fi trebuit programul s fac, iar comportamentul greit nu este intenionat

Exemple de erori celebre:

n primii ani n care calculatoarele au fost introduse la staiile de benzin din SUA, consumatorii primeau facturi pe sume enorme. Faptul era privit n general cu umor i reclamaiile erau rezolvate repede Sistemul de operare IBM OS360 coninea aproximativ 1.000 de greeli la fiecare nou versiune care ncerca s rezolve greelile din versiunea precedent Un vehicul de explorare a planetei Venus a fost pierdut deoarece programul primit de pe Pmnt pentru rectificarea orbitei coninea linia 'DO 3 I = 1.3'; instruciunea corect n limbajul FORTRAN ar fi trebuit s conin virgul n loc de punct

Exemple

n 1979 s-a descoperit o eroare n programele pentru sistemele de rcire n centralele nucleare din SUA; din fericire, nu fusese niciodat nevoie de execuia rutinelor ce conineau erorile Din cauza unei erori n sistemul de avertizare mpotriva atacului cu rachete balistice, procedurile de contraatac au fost declanate nainte de a se descoperi c a fost o eroare Unele sisteme integrate din aparatele de radioterapie au administrat doze letale de radiaii pacienilor Racheta Arianne 5 a explodat n iunie 1996 din cauza unei greeli de programare; costurile s-au ridicat la 500 milioane dolari

Provocri ale ingineriei programrii

Eterogenitatea

Dezvoltarea tehnicilor de creare a produselor care funcioneaz pe platforme i medii de execuie eterogene Dezvoltarea tehnicilor care s conduc la livrri mai rapide ale produselor software Dezvoltarea tehnicilor care s demonstreze c utilizatorii pot conta pe rezultatele produselor software

Livrarea

ncrederea

Atributele cheie ale unui produs software

Posibilitatea de a putea fi ntreinut

Un produs cu un lung ciclu de via este supus deseori modificrilor, de aceea el trebuie foarte bine documentat Produsul trebuie s se comporte dup cerinele utilizatorului i s nu cad mai mult dect e prevzut n specificaiile sale Produsul nu trebuie s foloseasc n pierdere resursele sistemului ca memoria sau ciclii procesor

Fiabilitatea

Eficiena

Interfaa potrivit pentru utilizator

Interfaa trebuie s in seama de capacitatea i cunotinele utilizatorului

Observaie:

Optimizarea tuturor atributelor de mai sus e dificil, deoarece unele pot exclude pe altele (de exemplu: o mai bun interfa pentru utilizator poate micora eficiena produsului)

Introducere n ingineria programrii


1. Obiectivele ingineriei programrii 2. Sistemele socio-tehnice 3. Fazele ingineriei programrii

Ce este un sistem?

O colecie de componente interconectate care funcioneaz mpreun pentru atingerea unui scop comun Un sistem poate include produse software, mecanice, electrice i hardware electronic i poate fi operat de oameni Componentele unui sistem depind de celelalte componente ale sistemului Proprietile i comportamentul componentelor sistemului sunt greu de analizat individual

Categorii de sisteme

Sisteme tehnice computerizate

Sisteme care includ software i hardware i n care operatorii nu sunt considerai de obicei pri ale sistemului Aceste sisteme nu sunt contiente Sisteme care includ sisteme tehnice mpreun cu procese operaionale i oameni care utilizeaz i interacioneaz cu sistemul tehnic Aceste sisteme sunt guvernate de politici i reguli organizaionale

Sisteme socio-tehnice

Caracteristici ale sistemelor socio-tehnice

Nedeterminism

Aceste sisteme nu produc ntotdeauna acelai rspuns atunci cnd primesc aceleai intrri deoarece comportamentul lor depinde parial de operatorii umani Proporia n care sistemul favorizeaz atingerea obiectivelor organizaionale nu depinde numai de sistemul nsui

Relaii complexe cu obiectivele organizaionale

ncrederea unui sistem

ncrederea hardware-ului

Care este probabilitatea ca o component hardware s se defecteze i ct dureaz repararea ei?

ncrederea software-ului

Care este probabilitatea ca o component software s produc un rezultat greit? Spre deosebire de defeciunile hardware, n acest caz uzura nu poate fi luat n calcul

ncrederea operatorului

Care este probabilitatea ca operatorul sistemului s fac o greeal?

Introducere n ingineria programrii


1. Obiectivele ingineriei programrii 2. Sistemele socio-tehnice 3. Fazele ingineriei programrii

Fazele ingineriei programrii

Exist patru faze fundamentale ale metodologiilor ingineriei programrii:


Analiza (ce dorim s construim) Proiectarea (cum vom construi) Implementarea (construirea propriu-zis) Testarea (asigurarea calitii)

Dei aceste faze se refer n mod special la dezvoltarea produsului software, ele pot fi aplicate i altor stadii de existen prin care trece un program de la natere pn la moarte: lansare, ntreinere, ieire din uz

Analiza

Aceast faz definete cerinele sistemului, independent de modul n care acestea vor fi ndeplinite Se definete problema pe care dorete s o rezolve clientul Rezultatul este documentul cerinelor, care trebuie s precizeze clar ce trebuie construit

Proiectarea

Pe baza cerinelor din faza de analiz, se stabilete arhitectura sistemului:

Componentele sunt elementele constructive ale produsului. Acestea pot fi create de la zero sau reutilizate dintr-o bibliotec de componente. Componentele rafineaz i captureaz semnificaia detaliilor din documentul cerinelor Interfeele ajut la mbinarea componentelor. O interfa reprezint grania dintre dou componente, utilizat pentru comunicarea dintre acestea. Prin intermediul interfeei, componentele pot interaciona Comportamentul, determinat de interfa, reprezint rspunsul unei componente la stimulii aciunilor altor componente

Implementarea

n aceast faz este construit sistemul, ori plecnd de la zero, ori prin asamblarea unor componente pre-existente Scopul este producerea sistemului propriu-zis

Testarea

Asigur calitatea produsului software Scopul este realizarea unui produs competitiv Un produs performant crete satisfacia clienilor, iar funcionalitatea poate fi dezvoltat n versiuni ulterioare In general, faza de testare este o faz separat, realizat de o echip diferit dup ce implementarea s-a terminat (pentru c e dificil s-i descoperi propriile greeli!)

CASE (Computer-Aided Software Engineering)

Sisteme software destinate automatizrii unor activiti legate de procesele software Upper-CASE

Instrumente destinate activitilor de nceput precum analiza cerinelor i proiectarea Instrumente destinate activitilor ulterioare precum programarea, corectarea erorilor i testarea

Lower-CASE

Concluzii

Ingineria programrii este o colecie de metode i recomandri pentru dezvoltarea eficient de programe de mari dimensiuni Programele sunt de obicei o parte din sistemele socio-tehnice, depinznd de hardware i de operatorii umani Fazele fundamentale ale dezvoltrii programelor sunt: analiza, proiectarea, implementarea i testarea

S-ar putea să vă placă și