Sunteți pe pagina 1din 98

Ingineria programrii

14. Aspecte conexe


procesului de dezvoltare
Florin Leon
Universitatea Tehnic Gheorghe Asachi din Iai
Facultatea de Automatic i Calculatoare

http://florinleon.byethost24.com/curs_ip.htm
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte conexe
procesului de dezvoltare
1. Etapele lansrii unui produs software
2. Desfurarea
3. ntreinerea
4. Reutilizarea
5. Psihologia programrii
6. Etica programrii
7. Concluzii

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte conexe
procesului de dezvoltare
1. Etapele lansrii unui produs software
2. Desfurarea
3. ntreinerea
4. Reutilizarea
5. Psihologia programrii
6. Etica programrii
7. Concluzii

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Lansarea

engl. release
Lansarea unui produs software reprezint
distribuia (public sau privat) a versiunii
iniiale sau actualizate a produsului
Ciclul de via al lansrii are mai multe etape
care indic stabilitatea produsului i efortul de
dezvoltare necesar pn la lansarea final

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Pre-alfa

Stadiul pre-alfa se refer la perioada de la


nceputul dezvoltrii pn la faza de testare a
sistemului
Nu are toate funcionalitile implementate
Pot exista mai multe versiuni pre-alfa (de
exemplu, n dezvoltarea open source,
milestone versions i nightly builds) care
permit testerilor s testeze imediat ultimele
funcionaliti implementate
5

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Alfa

Este versiunea livrat de obicei testerilor


interni, din organizaia dezvoltatoare

ns pot fi implicai i parteneri externi, pentru


testarea utilizabilitii

Versiunea alfa poate fi instabil

n general, nu este livrat utilizatorilor finali


Exist excepii, mai ales la produsele open-source

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Beta (I)

Se mai numete previzualizare (preview), sau previzualizare


tehnologic/tehnic (technology/technical preview)
Este versiunea livrat n general unui numr limitat de utilizatori
pentru testare naintea lansrii oficiale

Testerii beta pot primi produsul mai ieftin sau gratuit, dar fac
testarea gratis
Testerii sunt de obicei familiarizai cu tehnologia sau cu versiunile
precedente
Versiunile beta nchise se adreseaz unui grup selectat de persoane
(de obicei produsele proprietare)
Versiunile beta deschise se adreseaz unei comuniti mari sau
ntregului publicului (de obicei produsele open-source)

Permite testarea utilizabilitii cu utilizatori finali care raporteaz


problemele ntlnite
7

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Beta (II)

Nu este nc o versiune stabil

n general include toate funcionalitile, dar conine i


defecte cunoscute, mai mult sau mai puin serioase

Unele produse pot sta n versiune beta un timp


ndelungat, n care s fie utilizate pe scar larg,
de exemplu Gmail (2004-2009)

Dezvoltatorii pot s nu ofere suport tehnic i s nu-i


asume responsabilitatea pentru problemele aprute

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Candidat pentru lansare

engl. release candidate


Este o versiune cu potenial de a deveni produsul
final
n faza de stabilizare, toate funcionalitile au fost
implementate i testate fr a mai fi gsite defecte
serioase
Mai poate fi inclus cod pentru a corecta defectele,
se mai poate modifica documentaia i fiierele de
date, dar nu se mai scrie cod funcional nou
9

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

RTM, GA

RTM

engl. release to manufacturing, lansare pentru fabricaie


Indic faptul c produsul ndeplinete un standard de
calitate bine definit i este gata pentru distribuia de mas
gold master CD, utilizat pentru duplicare
imaginea pentru lansarea pe web

GA

engl. general availability, disponibilitate general


Punctul n care toate activitile de comercializare au fost
terminate i produsul poate fi livrat ca mediu fizic sau
electronic
box copy, web release
10

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Sfritul vieii

engl. end of life


Cnd compania nu mai vinde produsul i nu
mai asigur suport (nu mai lanseaz noi
patch-uri)
Produsul ajunge n stadiul de motenire
(legacy)

11

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte conexe
procesului de dezvoltare
1. Etapele lansrii unui produs software
2. Desfurarea
3. ntreinerea
4. Reutilizarea
5. Psihologia programrii
6. Etica programrii
7. Concluzii

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Desfurarea

engl. deployment
Reprezint toate activitile care fac un
sistem software disponibil pentru utilizare
Este un proces general care trebuie
particularizat n funcie de cerinele concrete
ale fiecrei situaii

13

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Activiti

Lansarea

Cu precizarea resurselor
necesare

Instalarea
Activarea
Dezactivarea

De exemplu, nainte de
actualizare

Adaptarea

Local (de exemplu, dup


schimbarea unei piese n
calculator)

Actualizarea

Urmrirea versiunilor

Manual sau automat, la


distan
Informarea utilizatorului
asupra apariiei unor noi
versiuni

Dezinstalarea
Retragerea

ncheierea suportului tehnic

14

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Cicluri de desfurare

Ciclul de livrare

Ciclul de suport

Livrarea iterativ de software operaional


Documentaie i asisten specializat

Ciclul de reacie (feedback)

Modificri ale funcionalitii sau trsturilor pentru


urmtoarea iteraie

15

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Principii (I)

Gestionarea ateptrilor clientului

Crearea i testarea unui pachet de distribuie complet

Incluznd produsul software executabil testat n prealabil, scripturi de


instalare, documentaie, fiiere de date etc.

Stabilirea unui sistem de suport nainte de livrare

Nu trebuie descris sau promis mai mult dect ce se poate livra efectiv la un
moment dat
Nu trebuie livrat la o iteraie mai mult dect ce s-a promis i mai puin la
urmtoarea iteraie

Rspusuri prompte la problemele clientului


Mecanism de nregistrare pentru evaluarea tipurilor de suport solicitate

Materiale suplimentare pentru clieni

Ghiduri de rezolvare a problemelor frecvente (troubleshooting), ce e nou n


versiunea curent etc.
16

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Principii (II)

Produsele software cu defecte trebuie mai nti corectate


i abia apoi livrate

Clienii vor uita c ai livrat un produs de calitate cu cteva zile


ntrziere, dar nu vor uita niciodat problemele cauzate de un
produs cu defecte. Produsul software nsui le amintete acest
lucru n fiecare zi.
Reaciile trebuie colectate i nregistrate. Aciunile echipei de
dezvoltare la defectele semnalate trebuie s includ:

Modificri imediate n versiunea curent


Definirea modificrilor pentru versiunea urmtoare
Modificri n proiectare pentru includerea schimbrilor
Revizuirea planificrii (inclusiv a datei de livrare) pentru urmtoarea
versiune
17

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Sarcini generice

Crearea suportului fizic pentru distribuire


Stabilirea persoanei sau grupului de suport tehnic
Stabilirea mecanismelor de reacie

Formulare de raportare, baze de date, procesul de evaluare

Diseminarea mediului de distribuie la utilizatori


Asigurarea asistenei pentru instalare i operare
Colectarea reaciilor utilizatorilor

18

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte conexe
procesului de dezvoltare
1. Etapele lansrii unui produs software
2. Desfurarea
3. ntreinerea
4. Reutilizarea
5. Psihologia programrii
6. Etica programrii
7. Concluzii

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Modificrile

Modificrile produselor software sunt inevitabile

Apar noi cerine cnd este folosit programul


Mediul economic se schimb
Trebuie reparate defectele
Sistemului i se adaug noi calculatoare sau
echipamente
Performanele sau ncrederea produsului trebuie
mbuntite

Implementarea i gestionarea modificrilor n


sistemele software existente sunt probleme cheie
pentru o organizaie
20

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Importana evoluiei

Organizaiile investesc foarte mult n sisteme


software

Pentru a menine valoarea acestora, ele


trebuie modificate i actualizate

Cea mai mare parte a bugetului pentru


software al marilor companii este dedicat
evoluiei sistemelor software existente mai
degrab dect dezvoltrii unora noi
21

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

ntreinerea

engl. maintenance
Standardul ISO/IEC 14764

ntreinerea reprezint modificarea unui produs


software dup livrare pentru a corecta defecte,
pentru a crete performanele sau alte atribute i
pentru a adapta produsul la un mediu modificat

22

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Tipuri de ntreinere (I)

Standardul ISO/IEC 14764 identific 4 tipuri


de ntreinere:

ntreinere corectiv

ntreinere adaptiv

ntreinere perfectiv

ntreinere preventiv

23

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Tipuri de ntreinere (II)

Repararea defectelor

Adaptarea produsului software la un alt mediu de


execuie

Modificrile aduse pentru corectarea deficienelor


pentru ca sistemul s-i ndeplineasc cerinele

Modificarea sistemului pentru a opera ntr-un mediu


diferit (calculatoare cu alte configuraii, un alt sistem de
operare etc.) fa de implementarea iniial

Adugarea sau modificarea funcionalitilor


sistemului

Modificarea sistemului pentru a satisface noi cerine


24

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Distribuia efortului de
ntreinere

Adugarea sau modificarea funcionalitilor 65%


Adaptarea la un alt mediu 18%
Repararea defectelor 17%

25

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

ntreinerea este inevitabil

ntreinerea nu implic n mod normal schimbri majore ale


arhitecturii sistemului
Schimbrile sunt implementate prin modificarea componentelor
existente i adugarea altora noi
Cerinele sistemului se pot schimba chiar n timpul dezvoltrii
sale deoarece mediul se schimb; n acest caz sistemul livrat
nu-i va ndeplini cerinele
Sistemele sunt strns legate de mediul de execuie. Cnd
sistemul este instalat n mediul de execuie, el schimb acest
mediu i deci se schimb astfel i cerinele sistemului nsui
Pentru ca sistemele software s rmn utile n mediul lor de
execuie, ele trebuie ntreinute
26

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

de fapt, sunt ipoteze

Legile lui Lehman

Schimbarea continu: Un program utilizat ntr-un mediu real


trebuie n mod necesar s se schimbe. Altfel, devine din ce n ce
mai puin util n mediul respectiv

Complexitatea crescnd: Pe msur ce un program evolueaz,


structura sa devine din ce n ce mai complex. Pentru pstrarea i
simplificarea structurii trebuie alocate resurse suplimentare

Evoluia programelor mari: Evoluia unui program este un proces


cu autoreglare. Atributele sistemului precum dimensiunea, intervalul
de timp dintre lansri i numrul de defecte raportate este
aproximativ invariant pentru fiecare lansare

Stabilitatea organizaional: Pe parcursul ciclului de via al unui


program, rata sa de dezvoltare este aproximativ constant i
independent de resursele alocate pentru dezvoltarea sistemului
27

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Legile lui Lehman

Conservarea familiaritii: Pe parcursul ciclului de via al unui


sistem, schimbrile incrementale la fiecare lansare sunt aproximativ
constante

Dezvoltarea continu: Funcionalitile oferite de sistem trebuie s


creasc n mod continuu pentru a menine satisfacia utilizatorului

Scderea calitii: Calitatea sistemului va prea c scade dac


acesta nu se adapteaz schimbrilor din mediul de execuie

Sistem cu reacie: Procesele evolutive ncorporeaz sisteme cu


reacie (engl. feedback) multi-agent i multi-iterative i trebuie
tratate ca atare pentru a obine mbuntiri semnificative ale
produselor

28

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Costurile de ntreinere

Sunt de obicei mai mari dect costurile de dezvoltare


Sunt influenate att de factori de natur tehnic ct
i non-tehnic
Costurile cresc pe msur ce produsul este ntreinut

ntreinerea afecteaz structura sistemului astfel nct


ntreinerea devine din ce n ce mai dificil

Programele nvechite (legacy) implic mari costuri


de ntreinere: limbaje vechi (compilatoare), optimizri
pentru creterea performanelor (lips de claritate),
lipsa managementului configuraiei etc.
29

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Dezvoltare i ntreinere

Efortul de dezvoltare i efortul de ntreinere


Investiiile suplimentare
n flexibilitate din faza
de dezvoltare scad
costurile fazei de
ntreinere

Stabilitatea echipei
Responsabilitatea contractual
Competena personalului
Vrsta i structura programului
30

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Schimbri urgente

Schimbrile urgente trebuie implementate fr a


parcurge toate etapele procesului de dezvoltare al
unui produs software

Cnd trebuie reparat un defect critic al sistemului


Cnd schimbrile din mediul de execuie au efecte
neprevzute (de exemplu introducerea unei noi versiuni
a unui sistem de operare)
Cnd schimbrile din mediul comercial necesit un
rspuns foarte rapid (de exemplu lansarea unui produs
concurent)

31

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Re-inginerie

engl. re-engineering
Restructurarea sau rescrierea unei pri sau a
ntregii funcionaliti a unui sistem nvechit
Aplicabil cnd unele sub-sisteme ale unui sistem
mai mare necesit schimbri frecvente
Restructurarea implic un efort suplimentar pentru
uurarea ntreinerii
n urma restructurrii poate aprea necesitatea
redocumentrii sistemului
32

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Activiti

Traducerea codului surs

Inginerie invers (engl. reverse engineering)

Restructurarea pentru creterea claritii i a nivelului


de nelegere

Modularizarea programului

Analiza programului vechi pentru a-l nelege

mbuntirea structurii programului

Conversia codului ntr-un alt limbaj de programare

Reorganizarea structurii programului

Restructurarea datelor (engl. data re-engineering)

Curarea i restructurarea datelor sistemului


33

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Avantajele restructurrii

Reducerea riscurilor

Dezvoltarea unui nou produs software poate fi


riscant: probleme de dezvoltare, de personal,
de specificaii

Reducerea costurilor

Costul restructurrii este de cele mai multe ori


semnificativ mai mic dect costul dezvoltrii
unui nou produs software

34

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte conexe
procesului de dezvoltare
1. Etapele lansrii unui produs software
2. Desfurarea
3. ntreinerea
4. Reutilizarea
5. Psihologia programrii
6. Etica programrii
7. Concluzii

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reutilizarea

n majoritatea disciplinelor inginereti, sistemele


sunt proiectate prin compunerea unor componente
existente care au fost utilizate i verificate n alte
sisteme
Iniial, ingineria programrii s-a concentrat pe
dezvoltarea de produse noi de la zero
n prezent, pentru a obine mai rapid i mai ieftin
produse software mai bune, trebuie adoptat
reutilizarea sistematic

36

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Avantajele reutilizrii

Creterea ncrederii sistemului i scderea riscului


Componentele reutilizate au funcionat n condiii reale
Riscul reutilizrii unei componente existente este mai mic dect
riscul dezvoltrii uneia noi
Utilizarea cunotinelor specialitilor
Dect s lucreze repetat la proiecte similare, specialitii pot
dezvolta componente reutilizabile care s le ncapsuleze
cunotinele
Standardele organizaionale pot fi integrate n componente
reutilizabile
De exemplu: standardele privind interfaa cu utilizatorul
Reducerea timpului de dezvoltare
37

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Clasificarea tehnologiilor
de reutilizare

Tehnologii bazate pe compunere

Reutilizarea se face parial prin compunerea unui nou sistem din


componentele existente
Elementele constitutive (engl. building blocks) sunt fragmente
pasive ce sunt copiate dintr-o baz de componente existent
De exemplu: bibliotecile de funcii

Tehnologii bazate pe generare

Cunotinele reutilizate se regsesc ntr-un program care


genereaz un alt program
Tiparele reutilizabile reprezint un element activ folosit pentru a
genera sistemul int
De exemplu: generatoarele de aplicaii
38

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Exemplu

Funciile matematice sunt deja implementate n majoritatea


limbajelor de programare

Rutinele respective sunt complexe (de exemplu serii Taylor)


Reimplementarea lor ar avea sens numai cnd performanele programului ar
depinde n mod direct de precizia sau viteza calculelor

n general, funciile matematice sunt uor de reutilizat


39

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Deziderate pentru reutilizare

Pentru reutilizarea cu uurin a unor funcii,


trebuie s avem:

Un domeniu bine cunoscut, cu o terminologie


standardizat; cosinus sau cos reprezint acelai
lucru pentru toat lumea
O interfa bine precizat: avem nevoie de exact un
numr pentru a calcula funcia cosinus
Un format de date standardizat: un numr poate fi
reprezentat n virgul fix, n virgul mobil, n dubl
precizie
40

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Granularitatea componentelor

Cu ct este mai mare o component, cu att va fi mai bun


rezultatul reutilizrii ei
Pe de alt parte, componentele mari tind s devin mai
greu de reutilizat, avnd n vedere c gradul de reutilizare a
unei componente scade o dat cu creterea mrimii
componentei
Acest lucru este datorat faptului c, n general,
componentele mai mari tind s impun constrngeri mai
multe mediului lor
Analogie cu teorema fundamental a biologiei (Fisher): cu
ct un organism este mai adaptat unui mediu dat, cu att
este mai puin pregtit pentru un alt mediu
41

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Clasificarea componentelor

Biblioteca de componente realizat de Prieto i


Daz
Fiecare component este descris de un numr
de faete (atribute)

De exemplu, aciunea pe care o ncorporeaz,


obiectul pe care l manipuleaz sau structura de date
folosit

Pentru a determina apropierea de o


component, se folosesc msuri ale distanei
dintre noiunile care compun faetele
42

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reutilizarea proiectrii

Reutilizarea proiectrii (arhitecturii) se refer la


modalitatea n care se mbin diverse pri ale unui
sistem
Ea se dovedete profitabil ntr-un mediu n care
este dezvoltat mereu i mereu acelai tip de
program
Exemple:

Construcia compilatoarelor

Parser, analizor lexical, analizor sintactic, tabel de simboluri,


generator de cod etc.

Mediile de dezvoltare software


43

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reutilizarea conceptelor

Cnd se reutilizeaz programele sau componentele de


proiectare, trebuie respectate deciziile de proiectare ale
dezvoltatorului originar

O form mai abstract de reutilizare este reutilizarea


conceptelor

Acest fapt poate limita ocaziile de reutilizare

O anumit abordare este descris ntr-o manier


independent de implementare

Dou mari tipuri de reutilizare a conceptelor sunt:

abloanele de proiectare
Programarea generic (clase generice, template-uri, aspecte)
44

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reutilizarea bazat pe
generare

Generatoarele de programe implic reutilizarea


abloanelor i algoritmilor standard
Acetia sunt integrai n generator i parametrizai
prin comenzile utilizatorului, apoi se genereaz
automat programele
Reutilizarea bazat pe generare este posibil cnd
pot fi identificate abstraciunile domeniului i
acestea pot fi transformate n cod executabil
Pentru a controla i compune aceste abstraciuni
se utilizeaz un limbaj specific domeniului
45

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Generatoare de aplicaii i
limbaje de a patra generaie

Generaii de limbaje

Generaia 1: limbaje main,


se adreseaz direct CPU
(numere, cartele perforate)
Generaia 2: limbaje de
asamblare (instruciuni simple,
programul poate folosi nume n
loc de numere)
Generaia 3: C, C++, Pascal,
Java, C# etc. (crete gradul de
abstractizare)

Generatoarele de aplicaii scriu


programe

Un generator de aplicaii are


un volum de cunotine despre
domeniul aplicaiei
Domeniu este de obicei destul
de ngust

Termenul limbaj de a patra


generaie evideniaz
construciile de programare de
nivel nalt oferite

Nivelul nalt de programare


determin reducerea costurilor
Dac utilizatorul dorete ceva
n plus fa de ce ofer
generatorul de aplicaii, codul
trebuie adugat manual
46

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reutilizarea sistemelor de
aplicaii

Presupune reutilizarea unor aplicaii ntregi prin


configurarea sistemului pentru un anumit mediu
sau prin integrarea a dou sau mai multe
sisteme pentru a crea un nou produs

47

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reutilizarea produselor
comerciale

engl. COTS, Commercial Off-The-Shelf,


Sisteme comerciale gata fcute (de pe raft)
Sistemele comerciale sunt de obicei aplicaii complete care
ofer o interfa de programare a aplicaiilor (API)
Construirea de sisteme de mari dimensiuni prin integrarea
produselor comerciale este n prezent o strategie viabil de
dezvoltare. Exemple:

Sisteme de gestiune a bazelor de date

Sisteme de comer electronic (client/server, module de


programare web pentru trimiterea i preluarea comenzilor)
Avantaje

Rapiditatea dezvoltrii aplicaiilor

Costuri (de obicei) mai mici


48

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Exemplu

49

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

ntrebri

Care produs comercial ofer funcionalitatea cea


mai potrivit?

Cum pot fi importate/exportate datele?

Pot exista mai multe produse similare care pot fi utilizate


Multe produse utilizeaz propriile structuri de date i
formate

Ce caracteristici ale produsului vor fi folosite de


fapt?

Majoritatea produselor au mai multe funcionaliti dect


cele necesare
Accesul la funciile neutilizate ar trebui mpiedicat
50

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Probleme

Lipsa controlului asupra funcionalitii i performanelor

Probleme de interoperabilitate

Integrarea mai multor sisteme COTS poate fi dificil datorit


particularitilor fiecrui sistem

Lipsa controlului asupra evoluiei sistemului

Sistemele COTS pot fi mai puin eficiente dect par

Evoluia sistemului e controlat de creatorii produsului COTS i


nu de utilizatorii sistemului

Suportul din partea creatorilor produsului COTS

Este posibil ntreruperea suportului tehnic la un moment dat,


nainte de ncheierea ciclului de via al sistemului client

51

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Configurarea produselor
comerciale

Configurarea la lansare

Sistemul generic este configurat prin integrarea


de cunotine privind cerinele clientului
Programul propriu-zis nu este modificat

Configurarea la proiectare

Codul generic este adaptat i modificat potrivit


cerinelor clienilor

52

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Linii de produse software

Numite i familii de aplicaii


Reprezint o mulime de aplicaii cu arhitectur
similar n care fiecare aplicaie este specializat
ns nucleul comun este reutilizat pentru fiecare
aplicaie nou
Tipuri de specializri:

Platform: sisteme de operare


Mediu: medii de execuie, echipamente periferice
Funcionalitate: clieni diferii cu cerine specifice
Proces: procese de lucru (de exemplu sisteme de
comand centralizate sau distribuite)
53

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reconfigurarea

Liniile de produse software sunt proiectate


pentru a fi reconfigurate

Configurare n momentul desfurrii

De ctre client sau consultanii acestuia

Configurare n momentul proiectrii

Organizaia dezvoltatoare adapteaz componentele


pentru a crea un sistem nou pentru client

54

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

ERP

engl. Enterprise Resource Planning,


planificarea resurselor ntreprinderilor
Exemple: SAP, BEA
Sisteme integrate de scar larg, destinate
sprijinirii proceselor de afaceri

De exemplu: comenzi, facturi, inventar,


planificarea produciei etc.

Folosesc configurarea n momentul


desfurrii
55

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Configurarea unui ERP

De obicei necesit configurarea de ctre client


sau consultant a sistemului general pentru
procesele specifice ale clientului

56

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Etapele reutilizrii

Abstractizrile utile sunt descoperite, nu


inventate
Blocurile reutilizabile corespund pieselor de
cunoatere cristalizate care pot fi folosite i
n alte situaii dect cele pentru care au fost
gndite iniial
Componentele ar trebui s reflecte noiunile
primitive ale domeniului aplicaiei

57

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Primitivele unui domeniu

Un domeniu este caracterizat printr-o colecie de


noiuni comune care au coeren, n timp ce n
afara domeniului, aceleai noiuni nu exist sau
nu prezint aceeai coeren

Domeniile pot fi mai largi sau mai restrnse

Pentru majoritatea domeniilor, nu este evident


imediat care sunt primitivele corecte; este n
ultim instan o problem de ncercare i
eroare
58

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Evoluia unui domeniu

La nceput, nu exist nc un set clar de noiuni i tot programul este scris


de la nceput. Experiena se ctig ncet, pe msur ce se nva din
greelile anterioare

n etapa a doua, probleme similare sunt depistate i rezolvate n moduri


similare. Sunt recunoscute primele primitive semantice. Dup ce se
ncearc i se d gre, se decide care sunt primitivele utile i care sunt cele
inutile

n a treia etap, domeniul este gata de reutilizare. S-au implementat un


numr rezonabil de programe, s-a stabilit o mulime de concepte, s-au gsit
soluii standard pentru o serie de probleme standard

n sfrit, domeniul a fost explorat n totalitate. Implementarea programelor


pentru domeniu poate fi automatizat. Nu se mai programeaz efectiv, ci se
folosete o interfa standard format din primitivele semantice ale
domeniului
59

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Reutilizarea domeniului

n prima etap nu exist reutilizare

n a doua etap reutilizarea este ad hoc

n a treia etap reutilizarea este structurat,


componentele existente sunt refolosite ntr-un mod
organizat atunci cnd se implementeaz un nou
program

n etapa a patra, reutilizarea este instituionalizat i


automatizat, efortul uman este concentrat la
nivelurile superioare de abstractizare
60

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Formalizarea unui domeniu

A formaliza un domeniu nseamn a construi un


limbaj formal (pe domeniu) care mimeaz un limbaj
informal existent
Trebuie apoi s se aleag dintre diversele
primitivele semantice care exist informal
Uneori se adaug noi primitive, care se potrivesc
bine domeniului formalizat
Formalizarea este un proces iterativ
Persoanele care lucreaz n domeniu ncep s
foloseasc primitivele limbajului construit
61

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Economia reutilizrii software

Reutilizarea este o investiie pe termen lung

Recuperri imediate ale investiiei pot fi obinute


dac programul refolosit este mic la nceput i
are o bibliotec iniial ai crei membri sunt
extrai din produsele existente

Economiile datorate reutilizrii software pot


depi costurile de producie i ntreinere

62

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte psihologice ale


reutilizrii software

Reutilizarea nseamn c programatorii trebuie s se adapteze,


s ncorporeze sau s actualizeze codul scris de ali
programatori

Sunt programatorii dispui s fac acest lucru?

Sunt capabili s fac acest lucru?

Programatorii folosesc scheme standard n situaii standard

Soluiile nestandard ngreuneaz nelegerea componentelor

Membrii unei echipe tind s foloseasc acelai stil de


programare

Reutilizarea componentelor e mai uoar n cadrul aceleiai


echipe
63

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte conexe
procesului de dezvoltare
1. Etapele lansrii unui produs software
2. Desfurarea
3. ntreinerea
4. Reutilizarea
5. Psihologia programrii
6. Etica programrii
7. Concluzii

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Psihologia programrii

Psihologia programrii prezint factorii umani legai de


conceperea i utilizarea programelor, cum ar fi:

Uurina cu care programatorii manipuleaz diverse


construcii ale limbajelor de programare

Problemele legate de capacitatea de nvare a programrii

Predispoziia spre erori i robusteea construciilor unui limbaj

Tipurile de erori fcute de programatori

Uurina de a utiliza aplicaii software, cum ar fi procesoarele


de text, de ctre neiniiai

Rolul help-ului on-line


65

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aplicabilitatea ecologic

n momentul cnd se fac experimente, o atenie


sporit trebuie acordat aplicabilitii ecologice
(adic a relevanei rezultatelor n cazul generalizrii
n situaii reale)

Factori care trebuie luai n considerare:

Mulimea subiecilor: diferenele ntre indivizi influeneaz


rezultatele obinute

Contextul sistemului: limbaje jucrie vs. situaii reale

Dimensiunea problemei: aplicaii mici vs. aplicaii mari i


probleme vagi

Contextul de lucru: suprapunerea mai multor sarcini


66

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Memoria uman

Programatorii trebuie s memoreze construcii


sintactice i semantice i s le prelucreze pentru
gsirea unei soluii
Tradiional, se consider c exist 3 tipuri de
memorie:

Memoria senzorial

Memoria de scurt durat (7 2)

Memoria de lung durat (semantic, avnd o


capacitate foarte mare, 70000 20000 ? )
67

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Cunotine semantice

Concepte generale care nu sunt direct legate de


un anumit limbaj de programare

Privesc att concepte de nivel sczut


(de exemplu atribuirea unei variabile), ct i
concepte de nivel nalt (de exemplu un algoritm
de sortare)

68

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Cunotine sintactice

De exemplu formatul construciei while din C

Cunotinele sintactice sunt arbitrare i deci uor de uitat

E mai uor de nvat o structur sintactic atunci cnd


structura semantic corespunztoare este deja
cunoscut

nvarea unui prim limbaj de programare este mai dificil dect


nvarea urmtorului (sau urmtoarelor). Dup un timp este
necesar numai stpnirea unei sintaxe noi

Acest lucru nu se ntmpl dac noul limbaj are o structur


semantic diferit (de exemplu un limbaj declarativ cum ar fi
CLIPS fa de un limbaj procedural ca C-ul)
69

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Semantic i sintactic

Cunoaterea semantic trebuie nvat i asimilat

Cunotinele sintactice pot fi stpnite prin simple


exerciii

Aceste dou tipuri de cunotine nu sunt integrate


mpreun n memorie

De exemplu, nelegerea sensului unei sarcini nu


este legat neaprat de modul n care aceasta este
transpus ntr-un anumit limbaj de programare

70

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Rezolvarea problemelor

Etape:

nelegerea problemei

Realizarea unui plan, descoperirea unei strategii


de obinere a soluiei

Executarea planului

Verificarea rezultatelor

71

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Planuri de programare

Fragmente de program care corespund unor


aciuni stereotipe i reguli care descriu convenii
de programare
Jaloanele sunt cunotine care indic prezena
unei anumite structuri sau operaii

De exemplu, o idee fundamental n rutinele de


sortare este interschimbarea a dou valori

72

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

nelegerea unui program

Cnd studiem codul unui program, construim o


structur semantic intern care s corespund
programului

Elemente precum adugarea comentariilor,


numele sugestive ale variabilelor, alinierea
uureaz acest proces

73

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Comentariile

Experimentele psihologice au artat c subiecii neleg mai


uor i mai bine programele comentate
Comentariile nu sunt stocate n structura semantic intern
construit. Ele doar conduc la o obinere mai uoar a
acesteia
Programatorii nceptori sunt mai ateni la comentarii dect
cei experimentai
Pentru programe scurte, profesionitii nu au nevoie de
comentarii, mai ales dac structura programului poate fi
obinut prin alte mijloace (de exemplu, se pot folosi nume
mnemonice, care sunt suficiente pentru a determina structura
semantic a programului)
Cnd numele nu au neles, comentariile reprezint singurul
ajutor
74

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Comentarii utile

Comentariile care explic funcionalitatea sunt


preferate comentariilor de nivel sczut
Comentariile nu trebuie s imite codul, ca n
exemplul urmtor:

x = 0; // x devine 0

Comentariile trebuie s foloseasc terminologia


domeniului. De exemplu, este mai bine s folosim

// Caut studentul cu media cea mai mare


dect
// Caut cea mai mare valoare din tabel
75

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Numele variabilelor

Dac ne confruntm cu un program n care


variabilele sunt numite P, Q, i R, vom ntmpina
dificulti n a nelege semnificaia lor
Pe de alt parte, mnemonice de forma cont sau
factur reflect un anumit rol semantic i determin
o legtur direct ctre ceea ce reprezint ele

Mnemonicele faciliteaz procesul de nelegere

Totui, dac cel care citete programul cunoate


deja algoritmul, numele variabilelor nu mai prezint
o importan deosebit
76

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Indentaia

Indentaia (engl. spaiere, zimuire) se refer


la determinarea distanei fa de margine (n
caractere albe) a liniilor de program, astfel nct
s poat fi puse n eviden anumite structuri ale
programului
Scopul indentaiei este creterea lizibilitii
codului
Stilul indentaiei poate diferi considerabil, chiar
dac este folosit acelai limbaj de programare
77

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Limbaj i gndire

O ipotez din lingvistic afirm c modul nostru


de gndire este ngrdit de limbajul n care ne
exprimm. Reciproc, modul nostru de a gndi
constrnge utilizarea limbajului
Limbajele de programare ar trebui concepute n
aa fel nct s faciliteze o exprimare ct mai
natural a algoritmilor

78

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Go to

Cercetrile experimentale au artat c sunt preferate construciile


if-then-else fa de construciile if-goto

Mai uor de indentat

Sunt construcii de nivel mai nalt deci mai puin complexe

Prezena instruciunilor goto crete dificultatea i timpul necesar


depanrii. Concluziile unui experiment:

Programele cu rezultate eronate aveau de dou ori mai multe goto-uri


dect programele cu rezultate corecte

Programele cu goto-uri aveau o structur cu mult mai proast dect cele


fr goto

Timpul mediu pentru depanarea programelor cu goto-uri era mai mare


dect cel al programelor fr goto

Totui, un program fr goto-uri nu este obligatoriu fr defecte


79

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Abstractizarea

Utilizarea structurilor i claselor crete gradul de


abstractizare al programului, cu efecte benefice asupra
nelegerii

Astfel se explic i tendina de nlocuire a programrii structurate


cu programarea orientat obiect

n timpul proiectrii, problema este descompus n


module

Pentru programe de mici dimensiuni, avantajul modularizrii nu


este evident
Cnd dimensiunea programelor crete, tehnica modularizrii
devine foarte important, iar modificrile sunt mult mai rapide
dect n cazul programelor monolitice echivalente
80

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Interfaa cu utilizatorul

n multe cazuri, interfaa cu utilizatorul necesit mai mult de 30% din


cod, deoarece este un factor critic pentru succesul sau eecul
sistemului
Factori care influeneaz interaciunea dintre utilizatorul uman i
calculator:

Modelul mental al utilizatorului (modelul mainii pe care l creeaz


utilizatorul)
Imaginea sistemului (toate elementele sistemului cu care vine n
contact utilizatorul)
Modelul conceptual (modelul precis din punct de vedere tehnic creat
de proiectani)

Problema fundamental a realizrii unei interfee ntre om i


calculator este apropierea ct mai mare a modelului conceptual de
modelul mental al utilizatorului
81

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Interfaa cu utilizatorul

Aciunile percepute ca o singur unitate conceptual


trebuie implementate ca o singur comand
Sarcinile apropiate semantic trebuie s fie apropiate
i n interfa
Introducerea datelor trebuie s fie uoar pentru
utilizator, nu pentru programator:

^ 10 2 vs. 102

Mesajele de eroare trebuie s fie explicite i


formulate n termenii utilizatorului, nu ai
programatorului
82

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aa nu

83

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aa nu

84

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Cunotine generale

Dac CTRL+J ntr-un editor de text mut


cursorul cu o linie mai jos
Atunci CTRL+S:
Mut cursorul cu o linie mai sus
sau
terge fiierul?

85

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Consistena interfeei

Compromis ntre consisten i funcionalitate


De exemplu dispunerea tastelor sgei

86

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Curb de nvare

Cnd omul ncepe s nvee ceva, el


traverseaz o curb de nvare
Viteza cu care utilizatorul traverseaz curba de
nvare este o msur a complexitii
programului

87

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

ncrcarea cognitiv

Determinat de limitrile memoriei de scurt durat


i ateniei
Noile cunotine sunt integrate cunotinelor
existente
Secvenele lungi de comenzi, meniurile cu un mare
numr de elemente, nesigurana asupra locului
unde ne aflm au ca efect stnjenirea interaciunii
Pe msur ce ncrcarea cognitiv crete, sistemul
devine mai greu de nvat, utilizatorul obosete mai
repede i ncepe s fac mai multe greeli
88

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Help-ul

Pentru submulimea de comenzi abia cunoscute,


se recomand un sistem de help pasiv, on-line
sau off-line (documentaie)
Pentru comenzile necunoscute de utilizator, se
recomand un help activ, care s-l ndrume pe
utilizator i s-i explice noile noiuni necunoscute
(tips, hints)

89

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Principii de proiectare
a interfeei grafice

Dialog simplu i natural


Limbaj potrivit utilizatorului
Minimizarea ncrcrii mnezice
Consisten
Reacie (engl. feedback)
Ieiri marcate clar
Scurtturi (engl. shortcuts)
Mesaje de eroare potrivite
Prevenirea erorilor
90

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Aspecte conexe
procesului de dezvoltare
1. Etapele lansrii unui produs software
2. Desfurarea
3. ntreinerea
4. Reutilizarea
5. Psihologia programrii
6. Etica programrii
7. Concluzii

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Valori

Tehnologia nu este neutr din punctul de


vedere al valorilor
Un program poate transmite valorile
programatorului

Filosofia open source


Virui

92

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Codul etic IEEE

Acceptarea responsabilitii de luare a deciziilor inginereti n


conformitate cu sigurana, sntatea i bunstarea public i
dezvluirea prompt a factorilor care ar putea pune n pericol
oamenii i mediul
Evitarea conflictelor de interese reale sau percepute ori de cte
ori acest lucru este posibil i dezvluirea lor ctre prile
implicate atunci cnd asemenea conflicte exist
Corectitudinea i realismul cerinelor sau estimrilor bazate pe
date disponibile
Respingerea mitei sub toate formele ei
Perfecionarea nelegerii tehnologiei, aplicaiilor sale adecvate
i a consecinelor poteniale
93

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Codul etic IEEE

Meninerea sau perfecionarea propriei competene tehnice i


asumarea rspunderii pentru sarcinile care i privesc pe alii numai
n cazul calificrii prin instruire sau experien sau dup
dezvluirea complet a limitrilor legate de acestea
Cutarea, acceptarea i acordarea de critici oneste ale lucrrilor
tehnice, recunoaterea i corectarea erorilor i creditarea
adecvat a contribuiilor altora
Tratarea neprtinitoare a tuturor persoanelor, fr a ine seama de
factori precum ras, religie, sex, handicap, vrst sau naionalitate
Evitarea defavorizrii altora, a proprietii, reputaiei sau serviciului
lor prin aciuni incorecte sau ruvoitoare
Asistena acordat colegilor n dezvoltarea lor profesional i n
respectarea prezentului cod de etic
94

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Legea drepturilor de autor

Legea drepturilor de autor (nr. 8 / 14 martie 1996)

Recunoate i garanteaz dreptul de autor asupra operelor de creaie


intelectual, literar, artistic sau tiinific, incluznd i programele de
calculator

Valoarea programelor de calculator nu este dat de suportul


material i nici de munca depus pentru realizarea acestor suporturi
(de exemplu CD/DVD-ROM-uri)
Consimmntul pe care titularul dreptului de autor l d unei
persoane pentru a putea reproduce, folosi, difuza sau importa cpii
ale unui program de calculator, se concretizeaz n practic n
licene
Lipsa licenelor echivaleaz cu lipsa autorizrii din partea autorului,
iar desfurarea activitilor menionate fr aceste licene
reprezint infraciuni
95

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Licena public general GNU

Intenia Licenei Publice Generale GNU este de


a garanta libertatea de a distribui i modifica
programele i de a se asigura c programele
sunt libere pentru toi utilizatorii
Licena GNU dorete evitarea pericolului ca cei
ce redistribuie programe libere s obin patente

96

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Termeni i condiii

Se pot copia i distribui cpii nemodificate ale


codului surs specificnd vizibil autorul
programului i licena GNU
Se pot modifica sursele menionndu-se autorul,
data modificrii i lipsa oricrei garanii
Se pot copia i distribui programe nsoite de
codul surs

97

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

Concluzii

Dup livrare, produsele software trebuie ntreinute


pentru a-i pstra valoarea n mediul lor de
funcionare
Avantajele reutilizrii sunt costurile mai mici,
dezvoltarea mai rapid i riscurile sczute
Psihologia programrii studiaz factorii umani legai
de conceperea i utilizarea programelor
Ca orice creaie intelectual, programele sunt supuse
reglementrilor privind drepturile de autor
98

Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm