43
Page 1 Ingineria programarii I Curs 1 Introducere in ingineria programarii

Curs 1_Introducere in Ingineria Programarii

Embed Size (px)

Citation preview

Page 1: Curs 1_Introducere in Ingineria Programarii

Page 1

Ingineria programarii ICurs 1

Introducere in ingineria programarii

Page 2: Curs 1_Introducere in Ingineria Programarii

Page 2

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Obiective curs 1:

Obiectivul 1: introducere in disciplina de inginerie a programarii: necesitate, definitii si raportare la disciplinele adiacente. Obiectivul 2: terminologie si incadrarea ingineriei programarii in domeniu. Costuri in dezvoltarea software.Obiectivul 3: formularea raspunsurilor legate de practica ingineriei programarii, precum si o scurta prezentare a aspectelor legate de etica acestei profesiiObiectivul 4: introducere in ingineria programarii asistata de calculator; utilitare suport in dezvoltarea software.Obiectivul 5: definire sistem critic – legatura intre caderea sistemului si consecintele pe plan economic si/sau uman. Dimensiunile increderii in exploatarea unui sistem: disponibilitate fiabilitate siguranta incredere Evitare greseli detectare si eliminaredisponibilitate, fiabilitate, siguranta, incredere. Evitare greseli, detectare si eliminare erori, limitare distrugeri provocate de caderea sistemului.Subiecte tratate: raspunsuri la cele mai frecvente intrebari legate de ingineria programarii, responsabilitate profesionala si etica, exemplu de sistem critic din punct de vedere al sigurantei, gradul de incredere in folosirea produselor software, disponibilitate si fiabilitate siguranta securitate

2

disponibilitate si fiabilitate, siguranta, securitate

Page 3: Curs 1_Introducere in Ingineria Programarii

Page 3

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

NECESITATEA DISCIPLINEI INGINERIA PROGRAMARII

Economiile tuturor statelor dezvoltate se bazeaza pe software

Din ce in ce mai multe sisteme sunt controlate software

Complexitatea produselor software a evoluat exponential in timp:Complexitatea produselor software a evoluat exponential in timp:

In 1946 Goldstine si von Neumann considerau ca 1000 de instructiuni reprezinta o limita superioara rezonabila pentru complexitatea problemelor rezolvabile cu calculatorul.

Desi initial Bill Gates afirma ca 64KB de memorie RAM reprezinta o limita superioara pentru orice program ce ruleaza pe un calculator personal, in 1995 el recunostea ca ultimele 2 gdecenii au adus schimbari majore in acest sens

Sistemul de operare System V, versiunea 4.0 (UNIX) a fost obtinut prin compilarea a 3 700 000 linii de cod

Pentru realizarea sistemului de operare IBM OS360 au fost necesari 5000 de ani-om.

Programele scrise pentru naveta spatiala NASA au aproximativ 40 milioane de linii de cod obiect

3

Page 4: Curs 1_Introducere in Ingineria Programarii

Page 4

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

GRESELI CELEBRE

IBM continea la fiecare lansare 1000 greseliIBM continea la fiecare lansare 1000 greseli

Pierderea vehiculului de explorare VENUS a fost explicata prin prezenta unei “,” intr-o bucla FOR

Explozia navetei Ariane 5, datorata unei greseli in software a produs o pierdere de 500.000.000$

O greseala software la centrul informatic de la Pentagon a determinat activarea sistemului anti-racheta americanracheta american.

Etc…

4

Page 5: Curs 1_Introducere in Ingineria Programarii

Page 5

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Ce este ingineria programarii?

Prima definitie a fost data in 1968 de catre NATO – Ingineria programarii reprezinta stabilirea si utilizarea de principii ingineresti solide pentru a obtine in mod economic programe care sunt sigure si functioneaza eficient pe masini de calcul concrete.

O definitie mai recenta (1983), formulata de IEEE poate fi regasita in Standard Glossary of Software Engineering Tehnology – Ingineria programarii reprezinta abordarea sistematica a dezvoltarii functionarii intretinerii si retragerii din functiune a programelordezvoltarii, functionarii, intretinerii si retragerii din functiune a programelor

Intr-o maniera didactica si sistematica consideram la ora actuala sofware engineering drept o disciplina ce se ocupa cu toate aspectele legate de productia de software. Inginerii software vor trebui sa lucreze sistematic si organizat si sa utilizeze utilitare si tehnici adecvate problemei detrebui sa lucreze sistematic si organizat si sa utilizeze utilitare si tehnici adecvate problemei de rezolvat, constrangerilor de dezvoltare si resurselor disponibile.

5

Page 6: Curs 1_Introducere in Ingineria Programarii

Page 6

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Diferenta dintre ingineria programarii si stiinta calculatoarelor

Stiinta calculatoarelor este o disciplina teoretica ce se ocupa cu definirea conceptelor fundamentaleStiinta calculatoarelor este o disciplina teoretica ce se ocupa cu definirea conceptelor fundamentale ale domeniului. Ingineria programarii se ocupa de aspectele practice legate de dezvoltarea si livrarea de software util

Spre deosebire de alte discipline, cum ar fi ingineria electrica, teoriile formulate de stiinta gcalculatoarelor nu ofera un suport complet pentru ingineria programarii.

Ingineria programarii are drept preocupare toate aspectele dezvoltarii sistemelor informatice –harware, software si ingineria proceselor.

6

Page 7: Curs 1_Introducere in Ingineria Programarii

Page 7

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Costurile alocate programelor

Costul programelor este de obicei mai mare decat costul echipamentului pe care acestea ruleaza

Costul de dezvoltare al unui program este mai mic decat costul de intretinere al acestuia. In cazul sistemelor cu o durata mare de viata, costul de intretinere poate depasi de cateva ori costul de dezvoltare

Reducerea costurilor de dezvoltare si intretinere este una din preocuparile ingineriei programarii

7

Page 8: Curs 1_Introducere in Ingineria Programarii

Page 8

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Costurile de dezvoltare

In cadrul unui ciclu complet de dezvoltare software ~50% sunt costuri de dezvoltare propriu-zisa, restul fiind costuri pentru testare.

Costurile depind de tipul sistemului si de cerintele de dezvoltare impuse (atat functionale cat si f ti l )nefunctionale)

Distributia costurilor este dependenta de modelul de dezvoltare folosit

8

Page 9: Curs 1_Introducere in Ingineria Programarii

Page 9

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Costurile alocate programelor

9

Page 10: Curs 1_Introducere in Ingineria Programarii

Page 10

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Terminologie in domeniu – legaturi intre notiuni

Software = totalitatea programelor de calculator si a documentatiei asociate (caietul de sarcini, modele de proiectare si manuale utilizator)

Produsele software pot fi dezvoltate pentru o anumita piata (produse generice) sau doar pentru un client anume

P d l ft t t lt i d lt d l 0 i iProdusele software nou create pot rezulta prin dezvoltarea de la 0 a unor noi programe, prin configurarea sistemelor software generice sau prin reutilizarea unor componente software existente

Stiinta calculatoarelor = domeniu teoretic ce se ocupa cu aspectele fundamentale ale creerii si exploatarii produselor informatice precum si ale echipamentelor pe care acestea sunt executate

Spre deosebire de stiinta calculatoarelor, ingineria programarii se ocupa cu practicile de dezvoltare si livrare de software de calitate

Ingineria sistemelor software are drept obiect toate aspectele legate de sistemele informatice (hardware, software, inginerie de proces). Ingineria software este parte a ingineriei de proces, ce se ocupa cu dezvoltarea infrastructurii de programare aspectele de control aplicatiile si bazele de dateocupa cu dezvoltarea infrastructurii de programare, aspectele de control, aplicatiile si bazele de date din sistem.

Inginerii de sistem sunt implicati in procesul creerii specificatiilor, proiectarea arhitecturala, integrare si desfasurare a produselor software.

10

Page 11: Curs 1_Introducere in Ingineria Programarii

Page 11

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Ce este un proces software?

Un set de activitati ce au drept scop dezvoltarea sau intretinerea unui produs software

Orice proces software are un numar de activitati generice de tipul:

Crearea specificatiilor – precizarea a ceea ce sistemul ar trebui sa faca precum si a constrangerilor de dezvoltareconstrangerilor de dezvoltare

Dezvoltarea – producerea sistemului software

Validarea – verificarea gradului de adecvanta intre asteptarile clientilor si capabilitatile produsului software dezvoltat

Intretinerea – modificarea produsului ca rezultat al diferitelor cereri de schimbare

11

p

Page 12: Curs 1_Introducere in Ingineria Programarii

Page 12

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Ce este un model al unui proces software?

O reprezentare simplificata a unui proces software prezentata dintr-o anume perspectiva

Exemple de perspective ale unui proces software:

Fluxul de activitati – workflow

Fluxul de informatie – dataflow

Corelatia rol/activitate – cine ce face

Exemple de modele de proces generice:

Modelul in cascadaModelul in cascada

Modelul dezvoltarii iterative

Modelul de inginerie software bazat pe componente

12

Page 13: Curs 1_Introducere in Ingineria Programarii

Page 13

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Ce sunt metodologiile software?

Suma de proceduri de dezvoltare structurata a produselor software ce include modele notatii reguliSuma de proceduri de dezvoltare structurata a produselor software ce include modele, notatii, reguli, ghiduri de proiectare si de derulare a proceselor:

Modele – cel mai adesea au o descriere grafica si reprezinta schematic produsul dintr-o anumita perspectiva

Reguli – constrangeri ce sunt aplicate modelelor sistemelor

Recomandari – sfaturi privind bune practici de proiectare

Ghiduri de proces – succesiunea de activitati de desfasurat

13

Page 14: Curs 1_Introducere in Ingineria Programarii

Page 14

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Ingineria software bazata pe calculator (Computer-Aided Software Engineering – CASE)

Ce este CASE?Ce este CASE?

Sistemele software ce ofera suport pentru automatizarea activitatilor dintr-un proces software, de regula pentru o anumita metodologie

Upper – CASE – utilitare suport pentru activitati de stabilire a cerintelor software si proiectare

Lower – CASE - utilitare suport pentru activitati tardive cum ar fi scrierea de cod, depanarea si testare.

14

Page 15: Curs 1_Introducere in Ingineria Programarii

Page 15

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Atributele unui software de calitate

Are functionalitatea si performantele cerute de client in conditiile asigurarii unui grad inalt incredere in utilizarea produsului, maintenanta, eficienta si acceptare pe piata.

Maintenanta – modificarea produsului ca rezultat al modificarii cerintelor

Eficienta – produsul trebuie sa nu risipeasca resursele sistemului

Acceptare produsul trebuie sa fie acceptat de segmentul de piata pentru care a fost creatAcceptare – produsul trebuie sa fie acceptat de segmentul de piata pentru care a fost creat. Pentru aceasta el trebuie sa fie usor de inteles si folosit, dar si compatibil cu alte produse.

15

Page 16: Curs 1_Introducere in Ingineria Programarii

Page 16

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Problemele majore cu care se confrunta ingineria programarii

Exista o mare diversitate de platforme si medii de dezvoltare cu diferente notabile de la una la altaExista o mare diversitate de platforme si medii de dezvoltare, cu diferente notabile de la una la alta

Dezvoltarea de tehnici pentru livrarea rapida de produse software

Dezvoltarea de tehnici care sa demonstreze ca produsele software sunt demne de deplina incredere a utilizatorului

16

Page 17: Curs 1_Introducere in Ingineria Programarii

Page 17

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Responsabilitati profesionale si etice

Ingineria software implica responsabilitati extinse dincolo de simpla exercitare a unor abilitati tehnice

Inginerii software trebuie sa se comporte intr-o maniera onesta si cu responsabilitati etice daca doresc gastigarea respectului pe linie profesionala

Comportamentul etic implica mai mult decat aplicarea aspectelor legale intr-o maniera stricta

17

Page 18: Curs 1_Introducere in Ingineria Programarii

Page 18

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Caracteristici definitorii ale unui comportament responsabil profesional

Confidentialitate – inginerii trebuie sa respecte confidentialitatea atat in rapor cu colegii cat si cuConfidentialitate inginerii trebuie sa respecte confidentialitatea atat in rapor cu colegii cat si cu clientii indiferent daca s-a semnat sau nu un acord scris in acest sens

Competenta – implica refuzul de a ccepta sarcini de serviciu ce depasesc compententa personala.

Drepturi de proprietate intelectuala – inginerii trebuie sa fie avertizati asupra legilor locale ce guverneaza proprietatea intelectuala (legi patentare, copyright, etc). Ei vor trebui sa se asigure ca proprietatea intelectuala a clientilor si angajatilor este protejata.

Utilizare gresita a calculatorului – inginerii software nu vor utiliza expertiza proprie in scopul utilizarii gresite a masinilor de calcul (folosire Internet in scopuri personale, jocuri pe masinile puse la dispozitia angajatilor, diseminari virusi, etc).

18

Page 19: Curs 1_Introducere in Ingineria Programarii

Page 19

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Codul de etica

ACM (Association for Computer Machinerie)/IEEE (Institute for Electrical and Electronics Engineers)

Rod al colaborarii societatilor profesionale din statele Unite, codul de etica in practica ingineriei programarii contine 8 principii pe care se bazeaza activitatea practicienilor si teoreticienilor, formatorilor si cursantilor, managerilor si vizionarilor din domeniu.

In preambul se specifica necesitatea angajarii active si personale a celor ce activeaza in domeniul ingineriei programarii de a realiza analiza, specificarea, proiectarea, dezvoltarea, testarea si intretinerea produselor software in contextul beneficiului si respectului fata de profesie.

19

Page 20: Curs 1_Introducere in Ingineria Programarii

Page 20

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Codul de etica

ACM(Association for Computer Machinerie)/IEEE (Institute for Electrical and Electronics Engineers)

Principiile codului de etica profesionala in ingineria software:

Interesul public – inginerii trebuie sa actioneze in mod consistent in directia interesului public;

I t l li t l i i l j t l i i i ii t b i ti i t t i di tiInteresul clientului si al angajatului – inginerii trebuie sa actioneze consistent in directia intereselor atat a clientilor cat si a angajatilor cu respecterea simultana a interesului public;

Produsul – produsele software si orice modificare a acestora vor trebui sa respecte cele mai inalte standarde posibile din domeniu;

Decizia inginerii vor trebui sa pastreze integritatea si independenta in luarea deciziilor de ordinDecizia – inginerii vor trebui sa pastreze integritatea si independenta in luarea deciziilor de ordin profesional;

Managementul – conducatorii vor trebui sa adopte metode etice de management in dezvoltarea si intretinerea produselor software;

Profesia – practicienii vor trebui sa promoveze consistent integritatea si buna reputatie a acestei p p g pprofesii, cu respectarea simultana a interesului public

Colegialitatea – inginerii trebuie sa fie corecti si sa-si ofere voluntar suportul pentru ceilalti colegi;

Atitudine personala – inginerii trebuie sa participe permanent la programe de perfectionare f i l i t d l ti d ti f i l

20

profesionala si sa promoveze metodele etice de practica profesionala.

Page 21: Curs 1_Introducere in Ingineria Programarii

Page 21

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Codul de etica

ACM(Association for Computer Machinerie)/IEEE (Institute for Electrical and Electronics Engineers)

Dileme etice in profesia ingineria programarii:

Dezacord de principii cu politicile praticate de managementul la varf dintr-o companie;

Activitati desfasurate fara respectarea principiilor de etica profesionala de catre angajati cu livrarea sistemelor critice din punct de vedere a securitatii fara a se fi terminat fazele de testare;

Participarea in programe militare ce vizeaza dezvoltarea de armament si sisteme nucleare.

21

Page 22: Curs 1_Introducere in Ingineria Programarii

Page 22

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Sisteme critice – definitii si caracteristici fundamentale

Sintagma critic poate referi vulnerabilitati diferite:Sisteme critice din punct de vedere al securitatii – esecul in evolutie duce la ranire sau chiar pierderi de vieti omenesti si/sau deteriorarea mediului inconjurator ( exemplu –sistem protectie pentru o intreprindere chimica)Si t i i iti l i l ti d t i l ti it ti di itSisteme cu misiune critica – esecul in evolutie determina esecul unor activitati din suita de activitati presupuse de realizarea scopului misiunii ( exemplu – sistemul de navigatie al aeronavelor)Sisteme critice din punct de vedere business – esecul in evolutia sistemului determina pierderi economice ( exemplu – sistemul de gestiune a conturilor clientilor dintr-o banca)p ( p g )

22

Page 23: Curs 1_Introducere in Ingineria Programarii

Page 23

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Sisteme critice – gradul de dependenta

Pentru sistemele critice cea mai importanta proprietate o reprezinta dependabilitatea. Aceasta reflecta gradul de incredere al utilizatorului in acel sistem. Acest lucru inseamna ca sistemul opereaza conform asteptarilor clientului si ca nu va esua in situatii normale de functionare.de functionare.

A fi util si a fi de incredere sunt doua notiuni diferite in contextul sistemelor software. Un sistem poate fi util si in conditiile in care nu exista un grad de incredere (dependabilitate) semnificativ in acesta.Sistemele ce nu genereaza o dependenta a utilizatorului sunt nefiabile si nesigure si pot fi rejectate de catre potentialii utilizatori. Aceasta deoarece caderea sistemului poate determina pierderi importante de informatie pentru a caror recuperare costurile pot fi extrem de mari.

23

Page 24: Curs 1_Introducere in Ingineria Programarii

Page 24

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Sisteme critice – metodologie specifica dezvoltare

Metodologia de dezvoltare a sistemelor critice este diferita de cea a sistemelor ne-critice si poate fi mult mai costisitoare in contextul adresarii unor riscuri majore specifice.

Exemple de metode de dezvoltare pentru sisteme critice:Metode formale pentru dezvoltarea sistemelor software;Analiza statica;Asigurarea din exterior a calitatii

24

Page 25: Curs 1_Introducere in Ingineria Programarii

Page 25

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Caderea sistemelor critice

Caderea hardware – exista erori de fabricatie sau timpul de buna functionare a expirat;

Cadere software – erori in specificatii, design sau implementare;

Cadere din motive de operare – operatorul uman a realizat una sau mai multe manevre gresite ( este cea mai frecventa cauza a caderii sistemeor critice).

25

Page 26: Curs 1_Introducere in Ingineria Programarii

Page 26

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Exemplu de sistem critic software - Pompa de insulina controlata software (1)

Caracteristici sistem:

Folosita de diabetici in stimularea pancreasului sa creeze insulina, hormon esential in metabolizarea glucozei sangvine;Masoara cantitatea de zahar (glucoza) din sange cu ajutorul unui micro-senzor si calculeaza doza de insulina necesara metabolizarii acesteia;

26

Page 27: Curs 1_Introducere in Ingineria Programarii

Page 27

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Exemplu de sistem critic software – Pompa de insulina controlata software (2)Organizarea componentelor sistemului:

Insulin reservoir

Needleassembly

Pump Clock

Sensor AlarmController

Display1 Display2

Power supply

27

Page 28: Curs 1_Introducere in Ingineria Programarii

Page 28

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Exemplu de sistem critic software - pompa de insulina controlata software (3)Organizarea fluxului functional al sistemului:

Blood

Blood sugaranalysis

Blood sugarsensor

Blood

Bloodparameters

Blood sugarlevel

Insulinrequirementcomputation

InsulinInsulin

Pump controlcommands InsulinInsulin

deliverycontroller

Insulinpump

Insulin commands Insulinrequirement

28

Page 29: Curs 1_Introducere in Ingineria Programarii

Page 29

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Exemplu de sistem critic software - pompa de insulina controlata software (4)

Cerinte de dependabilitate impuse sistemului:

Sistemul trebuie sa livreze insulina ori de cate ori i se solicita acest lucru;

Sistemul trebuie sa functioneze in conditii de fiabilitate crescuta si sa livreze cantitatea corecta de insulina necesara anihilarii glucozei din sange;

Cea mai importanta cerinta de siguranta impusa – sa nu se livreze niciodata o doza excesiva de i li d i t i t l i i i linsulina deoarece ar pune viata pacientului in pericol;

Cerinta de dependabilitate impusa sistemului echivaleaza cu gradul de incredere acordat acestuia de catre utilizatori ( in cazul nostru pacienti cu diabet).

29

Page 30: Curs 1_Introducere in Ingineria Programarii

Page 30

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Dimensiuni ale dependabilitatiiPrincipalele dimensiuni ale dependabilitatii sunt:

Disponibilitatea

Fiabilitatea

Siguranta

Securitatea

Dependability

Availability Reliability SecuritySafety

The ability of the systemto deliver services when

requested

The ability of the systemto deliver services as

specified

The ability of the systemto operate withoutcatastrophic failure

The ability of the systemto protect itelf against

accidental or deliberateintrusion

30

Page 31: Curs 1_Introducere in Ingineria Programarii

Page 31

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Alte caracteristici ale dependabilitatii

Reparabilitatea – reflecta in ce masura sistemul poate sa-si recupereze valentele operationale in contextul producerii unui eveniment de cadere in functionareMaintenabilitatea – reflecta in ce masura sistemul poate fi adaptat la noi cerinte;Maintenabilitatea – reflecta in ce masura sistemul poate fi adaptat la noi cerinte;

Este un atribut static al sistemului legat de usurinta repararii sistemului dupa o cadere sau de modificare a sistemului pentru a include noi caracteristiciEste de importanta deosebita pentru sistemele critice deoarece, in mod frecvent, problemele de maintenanta introduc erori in sistemproblemele de maintenanta introduc erori in sistem

Supravietuirea – reflecta masura in care sistemul poate furniza servicii pe perioada cat se afla sub influenta unui atac ostil

Atacurile pot fi accidentale sau deliberateEste un atribut semnificativ pentru sistemele distribuite ce isi pot compromiteEste un atribut semnificativ pentru sistemele distribuite ce isi pot compromite securitateaSubsumeaza notiunea de rezilienta a sistemului definita ca abilitate a sistemului de a-si continua operarea chiar si la caderea unor componente

Toleranta la eroare – reflecta masura in care erorile de intrare pot fi inlaturate sau tolerate

31

Toleranta la eroare – reflecta masura in care erorile de intrare pot fi inlaturate sau tolerate

Page 32: Curs 1_Introducere in Ingineria Programarii

Page 32

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Costurile dependabilitatii

Cresc exponential odata cu cresterea nivelului de dependabilitate dorit din 2 motive:

Se utilizeaza hardware si tehnici de dezvoltare mai scumpeSe depun eforturi sporite pentru testare si validare cu scopul convingerii clientului ca s-a atins nivelul dorit de dependabilitate

Datorita costurilor mari pentru dezvoltarea de sisteme dependabile, uneori se prefera crearea de sisteme cu un grad de incredere mai ic, platindu-se ulterior costurile remedierii unui sistem ce a cazutPentru crearea/mentinerea reputatiei unei companii se prefera ca in anumite conditii sa se suporte costurile dezvoltarilor cu grad de dependabilitate maresuporte costurile dezvoltarilor cu grad de dependabilitate mareDependabilitatea depinde de tipul de sistem dezvoltat – pentru un sistem business se accepta si un grad de incredere moderat

32

Page 33: Curs 1_Introducere in Ingineria Programarii

Page 33

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Disponibilitatea si fiabilitatea sistemelorFiabilitatea – reprezinta probabilitatea cadere a sistemului in conditiile operarii in mediu, timp si scop specificate.Disponibilitatea – probabilitatea ca sistemul la un anumit moment de timp dat sa fieDisponibilitatea – probabilitatea ca sistemul la un anumit moment de timp dat sa fie operational si sa furnizeze serviciile cerute.

Obs. Ambele atribute pot fi exprimate cantitativ.Uneori este posibila includerea disponibilitatii in cadrul fiabilitatii sistemului – este evident ca un sistem cazut nu livreaza serviciile cerute.ca un sistem cazut nu livreaza serviciile cerute. Exista situatii in care se cere disponibilitatea pentru un sistem cu fiabilitate scazuta; atata timp cat caderile sistemului pot fi reparate repede si nu duc la deteriorarea datelor, o fiabilitate scazuta poate sa nu reprezinte o problema.Disponibilitatea ia in calcul si timpul cat dureaza reparatiile. p p p

33

Page 34: Curs 1_Introducere in Ingineria Programarii

Page 34

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Terminologie din domeniul fiabilitatiiCadere sistem = eveniment ce apare la un moment de timp si impiedica sistemul sa livreze serviciile solicitateEroare sistem = o stare eronata a sistemului ce deterina comportarea acestuia intr-oEroare sistem = o stare eronata a sistemului ce deterina comportarea acestuia intr-o maniera neasteptata pentru utilizatoriDefect sistem = o caracteristica a unui sistem ce poate conduce la aparitia unei erori in sistem. De exemplu defectul neinitializarii unei variabile poate determina folosirea unei valori gresite a acesteia pe parcursul executiei unui sistem software.Eroare/ greseala umana = comportare a operatorului uman ce determina introducerea de defecte in sistem.

34

Page 35: Curs 1_Introducere in Ingineria Programarii

Page 35

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Defecte si caderi ale sistemelor

Caderile sunt o consecinta uzuala a erorilor sistemului ce apar ca urmare a aparitiei defectelor in sistem.Cu toate acestea, un defect nu determina implicit o eroare in sistem.

O stare defecta poate fi temporara si corectata inaintea producerii unei eroriO stare defecta poate fi temporara si corectata inaintea producerii unei erori.Erorile nu determina, in mod necesar, caderea sistemului.

Erorile pot fi corectate prin detectare si recuperare de tip build-in.Facilitatile de protejare build-in p j

35

Page 36: Curs 1_Introducere in Ingineria Programarii

Page 36

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Perceptii ale fiabilitatii

Definitiile formale ale fiabilitatii nu reflecta, adesea, perceptia utilizatorului, , p pIpotezele presupuse pentru mediul de evolutie a sistemului pot fi incorecte (folosirea unui sistem intr-un birou este probabil foarte diferita de folsirea lui intr-un mediu universitar)Consecintele caderii sistemului afecteaza perceptia asupra fiabilitatii

Caderea motorului unui autovehicul este perceputa cu o pondere sporita in raport cu alte caderiO instalatie de umidificare are o functionare irelevanta intr-un mediu uscat

36

Page 37: Curs 1_Introducere in Ingineria Programarii

Page 37

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Realizari ale fiabilitatii

Evitarea defectiunilor – tehnicile de dezvoltare vor urmari minimizarea sau reducerea greselilor inainte ca acestea sa introduca defectiuni in sistemDetectarea si inlaturarea defectelor – folosirea acelor tehnici de verificare si validare ce cresc probabilitatea de detectie si corectare a erorilor inainte de livrarea pe piata a produsului

f fToleranta le defecte – se folosesc in dezvoltare tehnici run-time ce ce impiedica defectele sistemului sa determine aparitia de rezultate eronate si/sau erorile sistemului sa conduca la caderea acestuia

37

Page 38: Curs 1_Introducere in Ingineria Programarii

Page 38

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Modelarea fiabilitatiiModelarea fiabilitatii

Se poate recurge la un model intrare-iesire al sistemului, unde unele intrari vorproduce iesiri eronate (Fig.1)Fiabilitatea sistemului reprezinta probabilitatea ca o intrare particulara sa apartinadomeniului de intrari ce produc functionare defectuoasaDeoarece sistemul poate fi folosit diferit de diferiti utilizatori, aceasta probabilitate nueste un atribut static al sistemului, depinzand de mediul acestuia (Fig.2).

Inputs causing

Possibleinputs

User1

Erroneousinputs

IeInput set

Inputs causingerroneous outputs

User3

User2

OeOutput set

Program

Erroneousoutputs

38

Fig.1 Fig.2

Page 39: Curs 1_Introducere in Ingineria Programarii

Page 39

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Imbunatatirea fiabilitatii

Inlaturarea a X% din erorile sistemului nu va determina in mod necesar crestereaInlaturarea a X% din erorile sistemului nu va determina in mod necesar cresterea

fiabilitatii cu X% ( de ex. Un studiu IBM a demonstrat ca eliminarea a 60% din

defectele unui produs va imbunatati fiabilitatea acestuia doar cu 3%)

Defectele dintr-un program pot sa existe in zone rar executate, astfel incat sa nu fie

intalnite de utilizatori. Eliminarea acestor erori nu va fi perceputa ca o crestere a

fiabilitatii

Un program cu erori cunoscute poate totusi sa fie acceptat ca fiabil de catre

utilizatorii sai.

39

Page 40: Curs 1_Introducere in Ingineria Programarii

Page 40

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

SigurantaSigurantaEste o proprietate a unui sistem ce reflecta abilitatea acestuia de a opera, normal sau anormal, fara a pune in pericol vieti omenesti si/sau mediul inconjurator.Este extrem de util sa analizam siguranta produselor software deoarecedin ce in ce mai multe dispozitive incorporeaza sisteme sotfware de controlmai multe dispozitive incorporeaza sisteme sotfware de control Cerintele de siguranta specifica situatiile indezirabile si nu servicii solicitate sistemuluiSistemele critice din punct de vedere al sigurantei se clasifica in:

Sisteme primare – sistem incorporate a caror cadere provoaca caderi hardware si, in consecinta, afecteaza oameniSisteme secundare – sistemele ce prin cadere determina caderea altor sisteme ce, la randul lor, pot ameninta siguranta factorului uman

Fiabilitatea si siguranta sunt legate dar reprezinta notiuni diferite:Fiabilitatea se ocupa de conformanta la specificatii a unui anumit serviciuSiguranta urmareste ca sistemul sa nu produca accidente indiferent daca se conformeaza sau nu specificatiilor

40

Page 41: Curs 1_Introducere in Ingineria Programarii

Page 41

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Sisteme fiabile si nesigure

Si t l i i ifi tii i t i t l t f i t l dSistemele cu erori in specificatii – in acest caz sistemul se poate conforma cerintelor dar sa produca accidente

Caderi hardware ce genereaza intrari neasteptate – greu de anticipat in specificatii

Comenzi dependente de context – determina erori de operare umana, cum ar fi cazul unei comenzi corecte data la un moment gresitcomenzi corecte data la un moment gresit

Terminologie specifica:

Hazard – conditie ce poate sa produca un accident (ex. Caderea unui senzor ce ar trbui sa detecteze obstacolele din fata unei masini)

Ha ard l este caracteri at prin se eritate (care este cea mai mare stricaci ne ce poate fiHazardul este caracterizat prin severitate (care este cea mai mare stricaciune ce poate fi produsa) si probabilitate de producere a conditiei asociate.

Asigurarea sigurantei

Evitarea hazardului

Detectia si inlaturarea hazardului inainte de asi produce efectele negative

Limitarea stricaciunilor

Accidentele din sistemele complexe au cauze multiple, in contextul in care acestea au fost proiectate sa fie reziliente la caderi singulare. Atingerea sigurantei complete este un deziderat imposibil de atins

41

imposibil de atins.

Page 42: Curs 1_Introducere in Ingineria Programarii

Page 42

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

SecuritateaProprietate ce reflecta abilitatea unui sistem de a se proteja impotriva atacurilorexterne accidentale sau deliberate.Securitatea reprezinta a cerinta obligatorie pentru atingerea disponibilitatii, fiabilitatiisi sigurantei, mai ales in contextul operarii unui sistem in reteaProblema asigurarii securitatii porneste de la ipoteza ca sistemul dezvoltat esteacelasi cu cel ce se executa in conditii normale de operare. Trebuie avut in vedere,insa, ca o intruziune poate modifica sistemul ce se executa si/sau datele sale. Dinacest punct asigurarea fiabilitatii si sigurantei nu mai pot fi asumate.

Consecinte ale insecuritatii:Refuzul unui serviciu – sistemul este fortat sa intre intr-o stare in care serviciile normal nu mai sunt disponibile sau mecanismul de furnizare a acestora este degradat semnificativgCorupere de programe/date – modificare neautorizata de programe/dateExpunerea de informatii confidentiale – date gestionate exclusiv de catre sistem devin accesibile in citire/modificare de catre persoane neautorizate

42

Page 43: Curs 1_Introducere in Ingineria Programarii

Page 43

<Ingineria programarii I><Gabriela Varvara>Capitolul 1: Introducere in ingineria programarii – cursul 1

Asigurarea securitatiig

Evitarea vulnerabilitatilorVulnerabilitate – slabiciune a sistemului ce poate fi exploatata in vedereaproducerii de pierderiproducerii de pierderiSistemul este proiectat astfel incat vulnerabilitatile sa nu apara (ex. Nu existaconexiune cu reteaua)

Detectia si eliminarea atacurilor – atacurile asupra vulnerabilitatilor vor fi gasite sieliminate inainte de a produce posibile pierderi/coruperi in sistem (ex. Antivirus)

Limitarea efectelor negative ale expunerii la atacuri – determina minimizarea efectelori t it ( liti il d b k )unui atac reusit (ex. politicile de backup)

43