Sunteți pe pagina 1din 24

Sisteme de Operare

Note de curs

(prima pagina)
PREFATA

Utilizarea eficienta a calculatorului in ziua de astazi este imposibila fara intelegerea modului de
functionare a sistemului de operare in sine si a modului in care aplicatiile interactioneaza cu sistemul
de operare. Consideram ca, un curs de sisteme de operare este o parte esentiala a educatiei unui student
in inginerie electronica. Cursul este destinat intelegerii conceptelor fundamentale despre sistemele de
operare moderne din punctul de vedere al utilizatorilor avansati de tehnica de calcul si in mai mica
masura din punctul de vedere al unor dezvoltatori de software de sistem.

Continutul cursului
Ne bazam pe cunostintele generale acumulate de student in cursurile anterioare referitoare la
structura calculatorului si arhitectura sistemelor cu microprocesor si notiunile de programare (algoritmi
si limbaj C/C++). Intreg cursul este organizat in mai multe parti:
 o scurta terecere in revista despre ceea ce sunt sistemele de operare, ce fac ele, cum au
evoluat, despre modul in care interactiunea intre utilizator si sistem sau intre operator si
sistem a evoluat in decursul timpului, despre modul cum sunt proiectate si
implementate. Pentru intelegerea modului de evolutie si a modului de evaluare a
performatelor unui sistem se face o scurta trecere in revista a unor concepte de inginerie
software.
 Managementul proceselor. Se explica notiunile de proces, procese concurente,
managementul proceselor si a timpului de executie, planificarea CPU si comunicatie
intre procese.
 Managementul memoriei.
 Gestionarea spatiului de stocare. Fisiere. Protectie.
 Studii de caz.

- III -
CUPRINS

Prefata .................................................................................. III


Continutul cursului ............................................................. III
Cuprins ................................................................................... V
Partea I. O privire de ansamblu................................................... 1
1. Ce este un Sistem de Operare? ............................................. 2
1.1. Notiuni introductive ...................................................... 3
2. Software Engineering ........................................................... 5
2.1. Intrebari frecvente despre Ingineria Sistemelor Software .... 6
2.1.1. Ce este software-ul? ...........................................................6
2.1.2. Ce este Ingineria Sistemelor Software? .................................7
2.1.3. Care sunt activitatile dezvoltarii softului? ............................... 8
2.1.4. Care sunt metodele Ingineria Sistemelor Software? ................8
2.2. Definirea sistemului ...................................................... 9
2.3. Modelare si Abstractizare ............................................. 10
2.4. Calitatea sistemelor soft si proprietatile externe .............. 11
2.4.1. Corectitudinea ................................................................. 11
2.4.2. Robustetea ...................................................................... 12
2.4.3. Extensibilitatea ................................................................ 12
2.4.4. Reutilizabilitatea............................................................... 12
2.4.5. Compatibilitatea ............................................................... 12
2.4.6. Eficienta - Performanta ..................................................... 13
2.4.7. Usurinta in folosire ........................................................... 13

-V-
Cuprins

2.4.8. Portabilitatea ...................................................................13


2.5. Metodologii de dezvoltare a softului............................... 14
2.5.1. Analiza ............................................................................15
2.5.2. Proiectarea ......................................................................16
2.5.3. Implementarea ................................................................16
2.5.4. Testarea ..........................................................................16
2.5.5. Modelul cascada ...............................................................17
2.5.6. Modelul V ........................................................................17
2.6. Costurile in IIS........................................................... 18
2.7. Evaluarea organizatiilor din punct de vedere IIS .............. 19
Bibliografie ............................................................................ 21

- VI -
Partea I.

O PRIVIRE DE ANSAMBLU
1. Ce este un Sistem de
Operare?

Obiective:

In acest capitol se incearca intelegerea constringerilor care intervin in


dezvoltarea unui sistem software din punct de vedere al

Continut:

thcbwkljnc

-2-
Ce este un Sistem de Operare?

1.1. Notiuni introductive


Un sistem de calcul este un ansamblu functional destinat prelucrarii automate a datelor.
Componentele unui sitem de calcul sunt:

 hardware-ul reprezinta echipamentele ce alcatuiesc sistemul de calcul.

 firmware-ul reprezinta componenta de programe incarcate in memoria fixa ROM (Read


Only Memory) de catre producatorul sistemului de calcul.
Componenta firmware asigura o interfata intre software si hardware oferind componentei
software functii de baza pentru utilizarea componentelor hard prin microprograme stocate
in ROM. Intr-o oarecare masura aceste microprograme se pot suprascrie in cazul in care
ele sunt stocate intr-o memorie RAM nevolatila. Prin firmware se asigura sistemului de
operare un anumit grad de independenta fata de hardware. La sistemele PC poarta numele
de BIOS (Basic Input/Output System) si intervine in procesul de pornire a sistemului de
calcul si in procedura de incarcare a sistemului de operare.

 software-ul reprezinta programele care fac posibila functionarea sistemului si care asigura
sarcina de prelucrare a datelor. Software-ul unui sistem de calcul este format din
programe ce pot fi grupate in functie de sarcina pe care o realizeaza:
a. Software de baza, alcatuit din programe ce asigura serviciile de uz general si face
posibila functionarea si utilizarea sistemului de calcul fiind la rindul sau format din:
1. sistemul de operare (SO) care asigura interfatarea intre sistemul de calcul si
utilizator prin activitatea de planificator/alocator de resurselor si prin cea de
coordonator in functionarea sistemului;
2. sistemul de programare cuprinde componente ce permit dezvoltarea de programe
utilizator si rularea lor;
b. Software utilitar, alcatuit din programe cu un grad mai mare de generalitate ce
realizeaza prelucrari specifice si care nu intervin in mod decisiv in functionarea
sistemului de calcul. In aceasta clasa de programe includem programele de gestiune a
informatiei, programe editoare de text si de prelucrare de text, iamgine sau sunet,
medii de dezvoltare de uz general;
c. Software de aplicatie, alcatuit din programe cu un grad redus de generalitate ce
rezolva prelucrari specifice;

-3-
2. Software Engineering

Obiective:
Intelegerea conceptelor si a metodelor de lucru din Ingineria Sistemelor Software
ne asigura o intelegere mai ampla a mecanismelor din interiorul unui sistem de
operare. Definirea corecta a sistemului si a principalelor criterii de analiza care
decid calitatea sa sunt utile pentru fundamentarea analizei. Intelegerea etapelor
unor metodologii de dezvoltare si a costurilor implicate este utila pentru
intelegerea unor decizii din trecut si a stadiului actual al sistemelor.
Continut:

aici cuprinsul capitolului............................................................................i

-5-
Software Engineering

Ce este Ingineria Soft? Este termenul adaptat in limba româna pentru ceea ce in literatura de
specialitate este numit Software Engineering, tradus si Ingineria Programarii sau Ingineria Sistemelor
Software(ISS) reprezinta acea parte a ingineriei cu care se incearca stapinirea complexitatii si
conducerea proiectelor de realizare a unor sisteme software complexe. ISS este o ramura a stiintei
relativ tinara. Aparitia ei este legata de ceea ce s-a considerat la un moment dat in anii ’60 (1968) a fi o
criza a productiei de software concomitent cu puternica dezvoltare a componentei hardware a
calculatoarelor. Experienta redusa in dezvoltarea de sisteme software complexe care sa satisfaca
cerintele beneficiarilor si ale utilizatorilor, incadrarea in timp si in buget a condus la dezvoltarea unor
noi abordari si tehnici de lucru.

2.1. Intrebari frecvente despre Ingineria Sistemelor Software


Tabel 2.1: FAQ despre IIS
Intrebare Raspuns
Programe pentru calculator si documentatia acestora. Produsul software poate fi
Ce este soft-ul?
dezvoltat pentru un client anume sau pentru larg consum.
Ce este ingineria soft? Este o disciplina concentrata pe toate aspectele producerii soft-ului.
Care este diferenta intre Stiinta calculatoarelor se concentreaza pe teorie si fundamentele functionarii
ingineria soft si stiinta calculatoarelor. IIS se concentreaza pe aspectele practice legate de
calculatoarelor? dezvoltarea si producerea unui software utilizabil.
Care sunt activitatile
Activitati legate de specificatii, dezvoltare, validare si evolutia soft-ului.
dezvoltarii soft-ului?
Care sunt modele
Reprezentari ale proceselor software.
dezvoltarii soft-ului?
In general costurile de dezvoltare ating maxim 60% din buget. Restul de 40% sunt
Care sunt costurile in
costuri de testare. Pentru sisteme dedicate restul costurile depasesc cu mult pe
ingineria software?
cele pentru dezvoltare.
Care sunt metodele in Abordare structurata: modele ale sistemului, notatii, reguli, recomandari (good
ingineria software? practice), metodologii de dezvoltare.

2.1.1. Ce este software-ul?


Un raspuns des intilnit considera sinonim software-ul cu programele de calculator. Este doar un
punct de vedere limitat. In general un sistem software este format dintr-un numar mai mare de
programe separate, din fisiere de configurare utilizate in a pune la lucru aceste programe, o
documentatie de sistem care descrie structura si functionalitatile sistemului si o documentatie pentru
utilizator care descrie modul de utilizare a sistemului si alte elemente de suport pentru patch, upgrade
sau asistenta.
Intilnim doua tipuri de produse software:
1. Produse de ordin general – sunt sisteme de sine statatoare care sunt produse de un dezvoltator
si se adreseaza oricarui cumparator care este dispus sa le achizitioneze. Exemple tipice de acest
tip de produse includ procesoare de text de tip Office, pachete de grafica, sisteme de baze de
date si sisteme de management.

-6-
Software Engineering

2. Produse dedicate – sunt produse dezvoltate special pentru un beneficiar la cerere. Exemple de
astfel de produse sunt sistemele de control al actionarilor, cele ce implementeaza un anumit
protocol intern de lucru sau sistemele de navigatie.
Diferneta majora intre cele doua clase de produse software este data de provenienta
specificatiilor software. In cel de al doilea caz, specificatiile sunt dezvoltate si controlate de catre
organizatia beneficiara a sistemului. In primul caz, specificatiile sunt controlate de cei ce dezvolta
produsul incercind sa acopere in cit mai mare masura asteptarile utilizatorilor.

2.1.2. Ce este Ingineria Sistemelor Software?


In general, ingineria sistemelor software este o abordare sistematica si organzata a muncii si
este considerata cea mai la indemina metoda de a obtine software de calitate. Iata cum este definita IIS
din punctul de vedere al unor organisme de profil:

IEEE Standard Glossary of Software Engineering Terminology


Aplicarea unei abordari sistematice, disciplinate, cuantificabile la realizarea,
operarea si intretinerea software-ului.
IEEE Std. 610.12-1990, 1991
CSA Information Tehnology vocabulary
Activitati sistematice pentru proiectarea, implementarea si testarea software in
scopul optimizarii producerii si utilizarii acestuia.
Canadian Standards Association, 1992

O scurta definitie sintetizind cele discutate:

Ingineria softului este o ramura a stiintei care fundamenteaza teoretic o parte dintre
activitatile specifice realizarii sistemelor soft.

Din acest punct de vedere avem de a face cu doua parti ale problemei:
1. o disciplina inginereasca – cuprinde aspectele teoretice, metode si a instrumente care utilizate
in mod adaptat specificului problemei conduc la gasirea solutiei problemei. Solutia trebuie
aflata in conditiile unor constringeri de ordin organizational si;
2. suport pentru dezvoltarea software – nu trebuie confundata cu procesul tehnic al dezvoltarii
soft-ului ci mai degraba vine in sprijinul acestuia prin instrumentele de management de proiect,
prin instrumente si metode aplicabile in sprijinul dezvoltarii softului.

Inainte de a explica o parte din notiunile specifice ingineriei software trebuie spus ca aceasta nu
inlocuieste ramuri precum algoritmica, bazele matematice ale sistemelor de calcul, teoria limbajelor
de programare si a compilatoarelor, inteligenta artificiala, etc.

-7-
Software Engineering

2.1.3. Care sunt activitatile dezvoltarii softului?


Activitatile dezvoltarii softului sunt un set de activitati (cele de baza sunt in numar de patru) si
de rezultate asociate acestor activitati care conduc la o buna dezvoltare a softului:
1. specificatii software – definesc functionalitatile si constringerile in care opereaza soft-
ul;
2. dezvoltarea softului – se produce un software corespunzator specificatiilor;
3. validarea softului – softul trebuie sa corespunda cu ceea ce beneficiarul si-a dorit sa fie;
4. evolutia softului – softul trebuie sa evolueze si sa se schimbe in functie de ceea ce are
nevoie clientul;

2.1.4. Care sunt metodele Ingineria Sistemelor Software?

! Sistematizarea si automatizarea realizarii unui sistem software de calitate, ieftin si in timp util. !

Atingerea acestui scop este asigurat de organizarea activitatii de realizare a sistemului soft in:
1. Abstractizarea solutiei - intelegem aici trecerea de la enuntul problemei la solutia acesteia.
2. Organizarea procesului de abstractizare (de modelare) a solutiei unui sistem soft. Este
posibil ca solutia sa fie rezultatul multor interactiuni. Controlul (organizarea) acestui proces
este importanta.
3. Reprezentarea solutiei sistemului soft. Realizarea de reprezentari grafice (inclusiv
documentatie) pe parcursul procesului de modelare a solutiei sistemului soft permite
cunoasterea stadiului in care este proiectul – informare, comunicare si intelegere a solutiei
problemei – pentru dezvoltatori si beneficiar.
4. Managementul procesului de realizare a sistemului soft. Este vorba de controlul dezvoltarii
sub aspectele de management a resurselor, termene de executie, controlul calitatii, sa.
Tabel 2.2: Continutul unei metodologii de dezvoltare
Componenta Descriere
Descrierea modelului Descrierea modelului sistemului care va fi dezvoltat si a notatiilor folosite. Exemple:
sistemului model obiectual, model cu masina cu stari finite.
Reguli Constringeri ce se aplica modelului sistemului.
Recomandari Recomandari de tip „good practice” pentru buna organizare a modelului.
Ghid de procedura Activitati ce trebuiesc urmate in dezvoltarea modelului si in organizarea acestei
activitati.

Solutia sunt metodologii de dezvoltare a softului care introduc:


 rigoare in elaborarea / dezvoltarea sistemului;
 concepte de baza, formalism in reprezentare;
 suport pentru controlul calităţii;
 planificare in timp.

-8-
Software Engineering

Primele metode au aparut in anii ’70 se bazau pe identificarea functionalitatilor de baza ale
componentelor (metode orientate functional). In anii ’80 si ’90 aceste metode au fost completate si s-a
obtinut metode orientate obiect. Diferitele abordari au fost integrate intr-o singura abordare unificata -
Unified Modeling Language (UML).
Toate metodele au in comun idea de a dezvolta modele reprezentabile grafic si de a utiliza
aceste modele in faza de specificare a sistemului si in cea de proiectare.

Obtinerea unui sistem ieftin este relativa; in realitate este o evaluare performanta/cost. Mai
important este obtinerea sistemului cu un cost estimabil si intr-un timp previzibil.

2.2. Definirea sistemului


Conceptul de sistem este greu de definit. O serie de caracteristici fundamentale il definesc:
1. capacitatea de a prelucra date/informatii;
2. existenta unei autonomii relative;
3. existenta unui context de functionare.
Un sistem este o colectie de componente care interactioneaza incit evolueaza in comun:
 Sistemul are un mediu in care exista. Intelegerea corecta a mediului in care exista si
functioneaza sistemul permite intelegerea interactiunilor sistemului cu mediul extern.
 Sistemul este bine delimitat fata de mediul in care exista de catre frontiera. Frontiera
delimiteaza interiorul sistemului si la nivelul frontierei are loc interactiunea sistemului cu
mediul extern.
Frontiera sistem

Intrari Calea directa Iesiri

Flux de
control

Feed-before Calea de control Feed-back

Mediu inconjurator

Figura 2.1: Exemplu de ciclu de abstractizare a solutiei unui sistem soft

-9-
Software Engineering

 Sistemul are intrari si iesiri organizate sub forma de interfete. Intrarile sunt actiuni ale
mediului asupra sistemului. Iesirile sunt actiuni ale sistemului asupra mediului. Aceste
interactiuni se realizeaza la nivelul interfetei. Pentru ca doua sisteme sa poata interactiona
este necesar ca interfetele lor sa fie compatibile. In industria soft s-au standardizat interfete
(COM, DCOM, CORBA).
 Sistemul poate avea subsisteme. Organizarea sistemului in subsisteme depinde de modul de
organizare (strategia de organizare). Comportarea sistemului nu este simpla suma a
comportarilor subsistemelor deoarece trebuie luata in considerare si interactiunea
subsistemelor. Descompunerea unui sistem in subsisteme se face pina cind fiecare
subsistem este indivizibil (din punct de vedere functional sau al modelarii).
 Unele sisteme au un mecanism de control. Controlul se face pe baza informatiilor de la
intrare si de la iesire.

2.3. Modelare si Abstractizare


Sistemele fizice pot pot fi caracterizate printr-o serie de proprietati interne sau externe. S-a
dorit in permanenta descrierea comportarii sistemelor si s-au obtinut ceea ce se numesc modele.
Modelul poate avea un caracter real – caz in care se pastreaza informatii despre natura si structura
sistemului – sau un caracter abstract in cazul in care se folosesc simboluri.
analiza

realitate modelare model analiza


comportare
fizica implementare matematic sinteza

proiectare
Figura 2.2:Procesul de modelare
Unei aceeasi realitati ii pot corespunde mai multe modele functie de scopul modelarii. Un
acelasi model poate corespunde mai multor realitati fizice. Spunem ca fiecare model are un anumit
grad de valabilitate si o anumita precizie in raport cu realitatea fizica pe care o modeleaza.
Obtinerea modelului se poate face pornind de la legi fizice si relatii ce pot fi scrise despre
comportarea sistemului – caz in care obtinem un model natural primar sau derivat – sau putem
considera comportarea sistemului real la frontiera – caz in care modelarea este de tip „black box”.
Realizarea unui sistem soft este o problema de proiectare. Se defineste un comportament dorit
si trecind prin fazele de model matematic se ajunge la realizarea sistemului.
Sistematizarea procesului de realizare a sistemelor soft urmareste gestionarea in mod eficient a
complexitatii problemelor intimpinate in solutionarea proiectului. Aceasta sistematizare realizata prin
metodologia de dezvoltare conduce solutionarea problemei prin realizarea a mai multe nivele de

- 10 -
Software Engineering

abstractizare. Nivelul de abstractizare se considera ca este invers proportional cu nivelul de informatie


inglobata in solutie.
Un exemplu de metodologie de dezvoltare a softului este limbajul UML.
Nivel conceptual
(Ce face sistemul soft)

Solutie conceptuala

Nivel logic
(Cine, când şi unde execută prelucrările)

Solutie logica

Nivel operational
(Cum se efectuează prelucrarile)

Sistem soft operational

Figura 2.3: Exemplu de ciclu de abstractizare a solutiei unui sistem soft

2.4. Calitatea sistemelor soft si proprietatile externe


Principalele proprietati externe care decid calitatea unui sistem soft sunt:
- corectitudinea;
- robustetea;
- extensibilitatea;
- reutilizabilitatea;
- compatibilitatea;
- eficienta;
- portabilitatea;
- usurinta in folosire.

2.4.1. Corectitudinea
Definitie: Este abilitatea unui sistem soft de a executa sarcinile convenite in faza de
specificare.
Corectitudinea este o proprietate de maxima importanta. Corectitudinea se intelege in raport cu
specificatiile care au condus la realizarea sistemului. Din acest punct de vedere specificarea corecta si
completa a sistemului este esentiala. Trebuie facuta observatia ca, corectitudinea nu reflecta modul in
care utilizatorul percepe raspunsul sistemului in raport cu asteptarile proprii decit in masura in care
acestea corspund cu specificatiile sistemului. Specificarea corecta a sistemului soft ramine problema

- 11 -
Software Engineering

de baza in aceasta situatie. Problemele de corectitudine pot fi privite in mod diferit si cu diferite grade
de intelegere la nivelul beneficiarului si la nivelul utilizatorului final.

2.4.2. Robustetea
Definitie: Este abilitatea sistemului soft de a reactiona adecvat in conditii anormale de
utilizare.
Raspunsul sistemului in conditii normale de functionare este dat de specificatii si este verificat
de corectitudinea sistemului. In cazul unor conditii anormale de functionare (exceptii), sistemul va
trebui sa se mentina in buna functionare. Exceptiile de functionare trebuiesc identificate in faza de
specificare si tratate corespunzator. Exceptiile externe datorate utilizatorului (mai ales in cazul
interfetei utilizator) pot fi identificate si limitate intr-o masura relativ mare in detrimentul comoditatii
de utilizare si al flexibilitatii.

2.4.3. Extensibilitatea
Definitie: Este abilitatea unui sistem soft de a se adapta usor la modificari in faza de
specificare.
Problema extensibilitatii este rezolvata structural prin arhitectura interna a sistemului in faza de
proiectare. Un sistem corect modularizat, lizibil si eficient in timpul executiei are toate sansele a fi si
extensibil. Un alt mod de a granta o usoara extensie a sistemului este proiectarea unor module cu un
grad mare de autonomie (descentralizate). Succesul unui sistem modular este dat de capacitatea
modulelor de a functiona impreuna (de a interactiona si a „respecta regula jocului”).

2.4.4. Reutilizabilitatea
Definitie: Este abilitatea componentelor unui sistem soft de a putea fi utilizate la dezvoltarea
mai multor aplicatii diferite.
Reutilizarea este parte din strategia de a obtine sisteme corecte, eficiente, ieftine si la timp. S-a
constat ca intr-o masura suficient de mare realizarea aplicatiilor urmeaza de multe ori solutii sablon
ceea ce permite reutilizarea unor componente soft (module). Reutilizarea are efect asupra cresterii
calitatii si a fiabilitatii sistemului. Tehnic, principiu se poate implementa in forme diferite, la nivelul
metodelor de lucru (exemplu model orientat obiect), al conectarii componentelor sau al tehnologiilor.
In cazul sistemelor modulare, reutilizabilitatea se poate discuta la nivel de modul. Refolosirea
modulelor are efect din punct de vedere al reducerii costurilor, din punct de vedere al reducerii
timpilor de dezvoltare si de testare.

2.4.5. Compatibilitatea
Definitie: Este o masura a usurintei cu care componentele unui sistem soft se combina cu alte
componente pentru a forma aplicatii noi.
Compatibilitatea este baza interactiunii dintre sistemele soft. Acceptarea unor standarde de
comunicare intre programe inclusiv reutilizabilitatea la nivel de componente sau tehnologii a dus in

- 12 -
Software Engineering

decursul timpului la o omogenizare a proiectarii. Compatibilitatea se dicuta intre programe ale


aceluiasi producator, programe ale unor producatori diferiti dar care interactioneaza (de exemplu
folosesc acelasi formate de fisiere cu structura standard spesificata public) dar este vorba si despre
asigurarea unei compatibilitati in timp de la versiunea veche la o versiune noua a programelor.

2.4.6. Eficienta - Performanta


Definitie: Este abilitatea unui sistem soft de a minimiza cererile de resurse hard (timp UC, memorie
RAM, memorie externa, etc.).
Realizarea unor sisteme care necesita un consum minim de resurse este dificil. Acest lucru este
realizabil in faza de proiectare printr-o optimizare a sistemului (algoritmi si implementare). De foarte
multe ori aceasta optimizare reduce sansele de a avea un sistem portabil si afecteaza extensibilitatea sa.
Un alt punct de vedere este cel in care „Eficienta poate fi obtinuta pe seama progreselor in materie de
tehnologii hard”. Echilibrul intre cele doua extreme este dependent de specificul sistemului si
influentat mult de costuri. Optimizarea sistemului se poate aplica si partial asupra acelei parti de 10%
din sistem care influenteaza 90% din comportarea globala.

2.4.7. Usurinta in folosire


Definitie: Se refera la modul in care oameni cu diverse nivele de instruire pot invata si folosi eficient
sistemul soft. Include de asemenea si usurinta instalarii si operarii sistemului soft.
Este unul dintre cele mai subiective proprietati ale unui sistem si in acelasi timp unul dintre cele care
influenteaza in cel mai mai mare masura (exceptind Corectitudinea) buna acceptare a sistemului de
catre utilizator. Aceasta acceptare este puternic dependenta de nivelul de instruire si de compatibilitati
cu sisteme anterior folosite. Usurinta in folosire nu asigura totodata neaparat si un grad mare de
flexibilitate. Tendinta actuala include obligatoriu interfata utilizator si suport asigurat prin
documentatie extinsa.

2.4.8. Portabilitatea
Definitie: Este o masura a usurintei cu care un sistem soft poate fi transerat pe diferite platforme hard
si medii de operare.
Problema este cu atit mai reala si mai dificil de realizat cu cit dispunem in momentul de fata de o mare
diversitate de platforme hard si medii de operare. Portarea unui sistem pe pe o platforma pe alta se
poate realiza in mai multe moduri:
 prin modificari in codul sursa. Volumul acestor modificari si afectarea structurii interne a
sistemului este o masura a portabilitatii.
 prin generarea unui sistem pentru platforma tinta. Acest lucru este posibil prin utilizarea in
faza de dezvoltare a unor limbaje de programare de nivel inalt si prin utilizarea unor
compilatoare trans-platforma sau translatoare care sa genereze cod executabil specific pentru
platforma hard si pentru mediul de operare dorit.
 prin utilizarea unei masini virtuale. Consideram exemplul Java unde avem:

- 13 -
Software Engineering

o limbajul de programare de nivel inalt – Java;


o compilatorul Java care produce un cod binar independent de platforma;
o masina virtuala Java Virtual Machine portata pe diferite platforme hardware si
software;

cod sursa (adapta pt. HW si


mediul de operare tinta)

compilator (dedicat pentru


mediul de executie tinta)

cod executabil (dedicat pt. HW si


mediu de operare gazda)

Figura 2.4: Portabilitate folosind compilator trans-platforma

cod
compilato byte-code
surs
r Java Java
a
masina Java sau
Java
interpretor Java
platforma hardware si
mediu de operare nativ

Figura 2.5: Asigurarea portabilitatii folosind Java

In acest caz portabilitatea se transfera in portabilitatea compilatorului Java si a masinii virtuale


lucru mult mai usor de realizat dar care poate include anumite costuri. O situatie asemanatoare se
incearca de catre firma Micriosoft prin .NET Framework din pacate pina in acest moment limitat la
sistemele de operare Windows.

2.5. Metodologii de dezvoltare a softului


Ingineria soft propune metodologii de dezvoltare a softului ca proceduri de lucru pentru
sistematizarea si in masura in care este posibil automatizarea procesului de realizare a unui soft de
calitate, ieftin si obtinut in timp util.
Intr-un subcapitol anterior introduceam notiunea de metodologie de dezvoltare a soft-ului ca
proceduri de lucru pentru organizarea in timp a procesului de abstractizare a solutiei. Practic o astfel de
metodologie de dezvoltare defineste etapele unui ciclu de viata al unui sistem soft.
O perspectiva simpla si cu un grad mare de generalitate asupra ciclului de viata a unui produs
soft incepe de la etapa de identificare a problemei si startare a obiectivelor si se incheie cu
abandonarea utilizarii sistemuluisoft. Intr-o prima faza exista o etapa de „Dezvoltare” urmata de o

- 14 -
Software Engineering

etapa de „Utilizare”. In urma utilizarii se pot genera o serie de „Modificari / Imbunatatiri” ale
sistemului.

Problema Specificarea
cerintelor

Implementare
Dezvoltare

Utilizare

Modificare

Abandonare

Figura 2.6: Intelegerea simpla a ciclului de viata a unui sistem soft

Etapa de „Dezvoltare” in functie de metodologia utilizata propune o serie de reguli de


organizare / etapizare a procesului de realizare a sistemului soft. Cele mai importante etape sunt:

Analiza Proiectare Implementare Testare

Figura 2.7: Etape de dezvoltare a unui sistem soft – Model waterfall

2.5.1. Analiza
Definitie: Este etapa in care se constata ca este necesar un sistem software si se identifica trasaturi
ale acestuia.
Necesitatea dezvoltarii unui produs soft poate fi rezultatul unor decizii de management si
marketing, bazate pe identificarea unei piete pentru un produs de uz general sau identificarea unei
organizatii care are nevoie de un produs specializat. Pentru un produs de uz general intr-o piata
concurentiala este necesar a se defini unui public tinta pentru care trebuiesc identificate necesitatile si
asteptarile la care trebuie sa raspunda produsul. Pentru un produs dedicat suplimentar este necesara
cunoasterea fluxului existent de date si informatii ale beneficiarului.
Rezultatul etapei de analiza este un set de cerinte (din punct de vedere al utilizatorului direct
cit si al celui indirect) pe care sistemul soft va trebui sa le satisfaca. Pe baza acestor cerinte se vor
descrie specificatiile tehnice ale sistemului. Identificarea cerintelor si producerea specificatiilor

- 15 -
Software Engineering

tehnice sunt in sine un proces de abstractizare a modelului sistemului. Metodologia de dezvoltare a


softului vine cu reguli si metode de reprezentare specifice.

2.5.2. Proiectarea
Definitie: Este etapa in care solutia sistemului soft este specificata in detaliu.
Pornind de la specificatiile tehnice, sistemul este descompus/compus din module. Proiectarea
modulara asigura o specificarea a unor module simple, usor de testat, de intretinut si dupa caz de
modificat. Un avantaj al dezvoltarii modulare este descentralizarea precum si posibilitatea lucrului in
echipa. In aceasta etapa de proiectare ia nastere ceea ce se cheama arhitectura sistemului. Ca o regula
generala, cu o arhitectura simpla se pot asigura mai usor proprietati precum corectitudinea si
extensibilitatea.

2.5.3. Implementarea
Definitie: Este etapa in care are loc scrierea efectiva a programelor si crearea fisierelor de
configurare. Pentru implementarea specificatiilor rezultate in faza de proiectare supot sunt limbaje de
programare, medii de dezvoltare precum si intreaga teorie dezvoltata de stiinta calculatoarelor.
Alegerea acelor solutii tehnice adecvate specificatiilor poate asigura corectitudinea si eficienta
sistemului.

2.5.4. Testarea
Definitie: Este etapa in care se verifica daca rezultatul implementarii este in concordanta cu
specificatiile.
Daca arhitectura sistemului este una de tip modular specificata in etapa de proiectare atunci partea de
implementare si de testare poate fi realizata intr-o prima faza la nivel de modul. Pentru a simula
intreagul comportament al sistemului, la testarea unui modul se pot utiliza versiuni simplificate ale
celorlalte module.

Metodologiile de dezvoltare a softului controleaza prin descrierea ciclului de viata a produsului soft
activitatile de Abstractizarea solutiei si Organizarea procesului de abstractizare. Celelalte doua
componente ale metodologiei de dezvoltare sunt suportul pentru Reprezentarea solutiei sistemului soft
si Managementul procesului de realizare a sistemului soft.
O cerinta obligatorie impusa de metodologiile de dezvoltare a softului este documentarea si
reprezentarea solutiei in fiecare etapa de realizare a unui proiect. Pentru documentare se folosesc
sisteme automate de generare a documentatiei si se acorda mare atentie limbajului folosit (rigoare,
claritate) si usurintei de utilizare. Pentru reprezentarea solutiei este necesar a avea un sistem unitar
(grafica si text) intuitiv si in acelasi timp sa impuna un formalism strict necesar.
Asigurarea suportului de management a resurselor, de asigurare a calitatii precum si de
gestiune a riscurilor asigura cadrul organzatoric si logistic de desfasurare a proiectului.

- 16 -
Software Engineering

2.5.5. Modelul cascada


Modelul cascada – propus de Royce la inceputul anilor ’70 – descrie un ciclu de viata cu faze
secventiale aplicabil la nivel de sistem in care trecerea de la o faza la alta se realizeaza dupa ce
precedenta a fost parcursa integral.
Succesiunea fazelor asigura un control total asupra acestora prin caracterul lor previzibil.
Acesta poate fi un avantaj. Secventialitatea fazelor inseamna un timp mare de parcurgere si chiar daca
modelul permite reveniri acestea nu sunt posibile din lipsa de timp.
Din punctul de vedere al beneficiarului, modelul este usor de inteles si permite modificari pe
parcursul dezvoltarii sistemului (un lucru nu tocmai benefic).
Definirea
cerintelor

Analiza

Proiectarea

Implementarea

Testarea

Utilizarea si
instruirea

Figura 2.8: Modelul cascada

Un dezavantaj major al modelului este aplicarea sa la nivel de sistem ceea ce reduce suportul
pentru controlul proiectelor de dimensiuni mari.

2.5.6. Modelul V
Modelul propus de Ould in 1990 pastreaza ideile de baza ale modelului cascada, le
reorganizeaza ierarhic indicind posibilitatilor de revenire.

In acest model se acorda o mai mare atentie interfetelor sistemului cu utilizatorul. Utilizarea
modelului este dictata de posibilitatea abordarii relatiei sistem-componente. S-au introdus activitati
specifice de verificare(testare) si validare. Verificarea sistemului se face atit pe componete cit si
integral din punct de vedere logic. Validarea permite verificarea corectitudinii specificarii cerintelor
initiale.

- 17 -
Software Engineering

Definirea Validare
cerintelor functionare

Proiectare Testare
sistem sistem

Proiectare Testare
subsisteme subsisteme

Specificare si codificare Testare si


Proiectare componente Validare

Figura 2.9: Modelul V

In literatura de specialitate sunt descrise o serie de modele si metodologii de dezvoltare:


 modelul incremental in care sistemul este format din componente a caror dezvoltare
(proiectare, implementare, instalare, intretinere) se poate face in paralel, intr-un timp redus;
 modelul spirala bazat pe o abordare iterativa a dezvoltarii cu planificare si validare la fiecare
iteratie;
 modelul prototipizarii in ca este prevazuta realizarea unor sisteme partiale (prototip),
dezvoltate rapid cu rolul de a testa stadiul proiectului in diverse faze, de la cea de analiza pina
la cea de implementare a sistemului final.

2.6. Costurile in IIS


Unul dintre rolurile IIS este de a permite o corecta estimare a costurilor si a etapizarii acestora
pentru intreaga perioada de existenta a unui produs software.
Costul pentru analiza, proiectare, dezvoltare, integrare si testare sunt analizate separat. Dintre
acestea costurile de integrare si testare a sistemului sunt cele mai mari in medie de 40% cu
posibilitatea ca acestea sa creasca in cazul unor sisteme complexe sau cu cerinte speciale.
Tabel 2.3: Distributia costurilor de dezvoltare
0 25 50 75 100

Analiza Proiectare Dezvoltare Integrare si Testare


Pentru un produs cu o dezvoltare continua costurile pentru faza de analiza (cea initila) se reduc
datorita contextului de lucru. Dupa aparitia primei versiuni complete este necesara o activitate de
testare permanenta. Practic dezvoltarea si testarea se suprapun iar din context rezulta si noi specificatii.

- 18 -
Software Engineering

Tabel 2.4: Distributia costurilor pentru dezvoltare continua


0 25 50 75 100

Specificare Dezvoltare continua Testare sistem


In cazul sistemelor dedicate specificarea lor se face de catre beneficiar si implementarea este
realizata de catre un contractant. Costurile pentru specificare sunt relativ mici si impartite intre
beneficiar si contractant. Etapa de testare a sistemului este mult extinsa datorita multiplelor posibilitati
de configurare.
Tabel 2.5: Distributia costurilor pentru un soft dedicat
0 25 50 75 100

Specificare Dezvoltare Testare sistem

2.7. Evaluarea organizatiilor din punct de vedere IIS


Din punct de vedere organizatoric si al procedurilor implementate la nivelul unei organizatii,
pentru producti soft s-au definit un numar de 5 nivele de clasificare:
1. Initial – activitati ad-hoc; succesul proictului depinde de oameni cheie si se realizeaza cu
eforturi deosebite;
2. Repetabil – fiecare proiect are un ciclu de viata bine definit dar pentru proiecte diferite sunt
utilizate metode diferite; succesul este predictibil pentru proiecte similare;
3. Definit – urmeaza un model documentat pentru toate activitatile; modelul este adaptat la
inceputul fiecarui proiect;
4. Condus – sunt definite metrici pentru activitati si produse; sunt colectate informatii pentru a
cuantifica progresul;
5. Optimizat – datele din masuratori sunt folosite pentru a imbunatatii modelul.

Bibliografie de referinta:
I. Sommerville, Software Engineering, Addison-Wesley, NJ, 6 ed., 2001;
J. Rumbaught, I. Jacobson, G. Booch, The Unified Modeling Language Reference Manual,
Addison-Wesley, 1999

Exercitii / Intrebari:
1. Care sunt proprietatile unui sistem soft? Incercati sa descoperiti si alte atribute.
2. Care sunt diferentele principiale intre un model si sistemul real pe care il modeleaza?
3. In ce mod sunt reduse cheltuielile de testare si specificare in cazul sistemelor comerciale de larg
consum?
4. Cum se realizeaza dezvoltarea sistemelor software deschise (Open Software)? Realizati o
analiza comparativa.
Evaluati aspectele comune ale dezvoltarii sistemelor in inginerie.

- 19 -
Software Engineering

- 20 -
BIBLIOGRAFIE

TANEN87 - A. S. Tanenbaum, Operating System Design and Implementation, Prentice-Hall,


Englewood Cliffs, NJ, 1987;
SILBER91 - A. Silberschatz, J. L. Peterson, P. Galvin, Operating System Concepts, Addison-
Wesley, NJ, 3rd ed., 1991;
T. Ionescu, D. Saru, J. Floroiu, Sisteme de operare. Principii si Functionare, Ed. Tehnica,
Bucuresti, 1997;
V. V. Patriciu, Sisteme de Operare pentru mini si microcalculatoare, Ed. Militara, Bucuresti, 1992;

I. Sommerville, Software Engineering, Addison-Wesley, NJ, 6 ed., 2001, ISBN 0-201-39815-X;


D. Bocu, Initiere in ingineria sistemelor soft, Ed. Albastra, Cluj+Napoca, 2001, ISBN 973-650-006-
3;
J. Rumbaught, I. Jacobson, G. Booch, The Unified Modeling Language Reference Manual,
Addison-Wesley, 1999, ISBN 0-201-30998-X;
A. D. Ioniţă, Modelarea UML în ingineria sistemelor de programare, Ed. ALL, 2003, ISBN 973-
571-463-9;

- 21 -

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