Professional Documents
Culture Documents
DIANA MOISUC
CLUJ-NAPOCA, 2011
1
2
Coordonator:
Prof. Univ. Dr. Constantin AVORNICULUI
Contribuţia autorilor:
Prof. Univ. Dr. Constantin AVORNICULUI (Capitolele: 1, 2, 3, 4)
Lect. Univ. Dr. Mihai AVORNICULUI (Capitolele: 3,4)
Asist. Univ. Drd. Diana MOISUC (Capitolul: 1, 2)
3
INTRODUCERE
Autorii
4
PLANUL CALENDARISTIC DE SEMINAR PENTRU SEMESTRUL 2 la
Managementul şi proiectarea sistemelor informatice.
Anul 2 Contabilitate şi informatică de gestiune
Săptămâna 1. Organizatorică şi se prezintă ce se face la lucrări practice, materialele folosite
şi organizarea semigrupelor.
Săptămâna 2. Fluxuri informaţionale şi reprezentarea lor cu ASME şi BISAD.
Săptămâna 3. Continuare fluxuri şi prezentarea temei de proiectare ce se va rezolva la
seminar, cu încadrarea aplicaţiei în sistemul informatic al firmei.
Săptămâna 4. Macheta situaţiilor de ieşire, analiza datelor şi algoritmi.
Săptămâna 5. Macheta documentelor de intrare şi organigramele de sistem.
Săptămâna 6. Prezentarea Diagramelor Fluxurilor de Date, cu exemple.
Săptămâna 7. Prezentarea diagramelor UML, cu exemple.
Săptămânile 8 – 13. Timp pentru elaborarea proiectului individual şi participare la
consultaţiile stabilite în acest scop cu cel ce se fac lucrările.
Săptămâna 14. Predarea proiectului la ora aferentă grupei respective, nu la alte grupe.
Anul 3 Informatică economică
Săptămâna 1. Organizatorică şi se prezintă ce se face la lucrări practice, materialele folosite
şi organizarea semigrupelor.
Săptămâna 2. Fluxuri informaţionale şi reprezentarea lor cu ASME şi BISAD.
Săptămâna 3. Continuare fluxuri şi prezentarea temei de proiectare ce se va rezolva la
seminar, cu încadrarea aplicaţiei în sistemul informatic al firmei.
Săptămâna 4. Macheta situaţiilor de ieşire, analiza datelor şi algoritmi, macheta
documentelor de intrare şi organigramele de sistem.
Săptămâna 5. Prezentarea Diagramelor Fluxurilor de Date, cu exemple.
Săptămâna 6. Prezentarea diagramelor UML, cu exemple.
Săptămâna 7 - 11. Timp pentru elaborarea proiectului individual şi participare la
consultaţiile stabilite în acest scop cu cel ce se fac lucrările.
Săptămâna 12. Predarea proiectului la ora aferentă grupei respective, nu la alte grupe.
Modul de notare se va face astfel:
- 60% va reprezenta testul ce se dă din curs în sesiune şi care va conţine 20
întrebări grilă cu un singur răspuns din patru adevărat;
- 30% nota la proiectul ce se va elabora individual pe baza modelului făcut la
seminar şi care se va preda cel mai târziu în ultimul seminar, fără care nu se poate trece
examenul;
- 10% nota pentru activitatea de la seminarii şi prezenţă;
Dacă una din cele trei note este sub nota 5(cinci) atunci nu se face media şi se va
repeta testul de teorie obligatoriu dacă a fost dat, cei care nu au dat proiectul se pot
prezenta doar pentru a verifica ce au învăţat, sau la acceptul acestora cu o penalizare de
trei puncte cât valorează proiectul, deci nota nu poate depăşi nota 7 (şapte).
5
CUPRINS
6
Capitolul 1. ANALIZA SITEMELUI EXISTENT
7
Linii de influentă:
1
- documentul de la nivelul unu influenţează apariţia altui document la
nivelul doi
1 1
- documentul ce circulă la nivelul unu influenţează a
scrie pe documentul de la nivelul doi, apoi o capsare
sau
îndosariere a sa
2 2
1
- documentul ce circulă la nivelul unu influenţează o verificare
cu
semnare a documentului de la nivelul doi
1
2 - înregistrarea concomitentă trei exemplare
3
1
2 - transportul celor trei exemplare
3
8
ca nou document într-un exemplar sau mai multe
4. Un document îşi termină circuitul astfel:
când iese afară din unitate
staţionează la acel compartiment
arhivare la acel compartiment
distrugerea sa
5. Un compartiment poate apare într-o diagramă de flux de câte ori este necesar
6. Nu se admit întoarceri ale documentului într-un flux, deoarece îşi schimbă nivelul de
circulaţie.
Simboluri BISAD
Ce ? C
â
n - prelucrare
d
Cine ? ?
1
2
3 - document în 3 exemplare
9
Principii de utilizare ale simbolurilor BISAD:
1. În flux nu pot să apară două simboluri de acelaşi fel consecutiv. Între ele trebuie să
apară o prelucrare sau între două prelucrări trebuie să apară un document sau fişier.
2. Circuitul trebuie să înceapă cu un document sau cu un fişier ce se prelucrează.
3. Orice document sau fişier ce intră într-o prelucrare, trebuie să iasă din acea prelucrare,
cu excepţia operaţiilor de consultare a fişierelor.
În continuare prezentăm cele trei teme scrise cu rezolvările aferente celor două tipuri
de simboluri prezentate anterior. Temele se referă la circulaţia materialelor într-o firmă,
pentru care se va face în capitolul următor şi Proiectarea generală.
Tema 1
Flux informaţional de intrare a materialelor la un agent economic
La magazia de materiale, comisia de recepţie întocmeşte Nota de intrare recepţie în 4
exemplare, pe baza celor constatate la recepţie şi pe baza datelor din Factura ce însoţeşte
marfa. După care se verifică şi semnează acest document de către comisia de recepţie şi se
distribuie astfel:
- exemplarele 1-2 se predau la contabilitatea materialelor
- exemplarul 3 se predă la aprovizionare
- exemplarul 4 se predă magazionerului
Pe baza exemplarului 4 magazionerul înregistrează cantitatea intrată în fişa de
magazie şi calculează stocul materialului respectiv. Reţine exemplarul 4 al notei ca şi act
justificativ de intrare a materialului.
Pe baza exemplarului 3 la aprovizionare se va consemna cantitatea realizată din
contract în Fişele de urmărire a realizării contractelor, apoi reţine acest document ca şi act
justificativ.
La contabilitatea materialelor pe cele 2 exemplare ale notei se va trece preţul
materialelor intrate, ce se ia din Catalogul de preţuri, după care se calculează valoarea
materialelor intrate şi se trece pe cele 2 exemplare ale notei. Exemplarul 1 al notei se va
trimite furnizorului ca şi act justificativ de intrare a mărfii şi achitate a contravalorii facturii.
Pe baza exemplarului 2 al notei la contabilitatea materialelor se va înregistra
cantitatea intrată în Fişele cantitativ-valorice, apoi se va calcula stocul şi soldul materialului
respectiv. Tot la acest compartiment, lunar se va întocmi pe baza exemplarului 2 al notei,
Centralizatorul materialelor intrate, ce se va trimite la contabilitatea generală. La
contabilitatea generală pe baza Centralizatorului lunar se întocmeşte Jurnalul (Nota
contabilă), după care Centralizatorul se arhivează ca act justificativ la acest compartiment.
Tot lunar la acest compartiment pe baza datelor din Jurnal se fac înregistrări în Cartea Mare,
jurnalul rămânând ca şi act justificativ la acest compartiment. Pe baza datelor din Cartea
Mare tot la acest compartiment, lunar se întocmeşte Balanţa de verificare. Tot la acest
compartiment trimestrial, semestrial sau anual pe baza datelor din Cartea Mare se întocmeşte
de către un economist Bilanţul în 4 exemplare. Apoi, Bilanţul se trimite conducerii pentru
avizare şi semnare. După care este trimis astfel:
- exemplarul 1 la Camera de comerţ;
- exemplarul 2 la Banca de care aparţine;
- exemplarul 3 la Administraţia financiară
- exemplarul 4 la unitate şi ca act justificativ.
10
11
12
Tema 2
Flux informaţional de ieşire a materialelor spre consum la un agent economic
La compartimentul producţie se întocmeşte Bonul de consum în 3 exemplare pe baza
datelor din Planul de producţie şi pe baza Normelor de consum. După care se verifică şi
semnează de şeful compartimentului, apoi se predă secţiilor (atelierelor) de producţie, primele
două exemplare, pentru a-şi ridica materialele şi a le da în consum. Exemplarul 3 rămâne la
acest compartiment. Pe baza bonurilor, secţiile (atelierele) ridică materialele de la magazie, iar
magazionerul reţine exemplarele bonului. Pe baza lor se face înregistrarea cantităţii eliberate în
Fişa de magazie, apoi se calculează stocul materialului eliberat. Magazionerul pe baza bonului
întocmeşte Borderoul de predare al documentelor, apoi la sfârşitul zilei de lucru predă Bonurile
şi Borderoul de predare a documentelor la compartimentul contabilitatea materialelor. Aici se
va face verificarea documentelor după care se semnează de primire predare. Magazionerul
primeşte Bon de predare a documentelor ca şi act justificativ de predare a documentelor.
La compartimentul contabilitatea materialelor, pe cele 2 exemplare ale bonului se va
trece preţul, ce se ia din Catalogul de preţuri, după care se calculează valoarea şi se trece pe cele
2 exemplare ale bonului. După care exemplarul 2 al bonului se trimite compartimentului
Postcalcul. Pe baza exemplarului 1 al bonului la contabilitatea materialelor se face înregistrarea
materialelor în fişele cantitativ - valorice, apoi se calculează stocul şi soldul acelor materiale. Tot
la acest compartiment, lunar pe baza exemplarului 1 al bonului se întocmeşte Centralizatorul
materialelor ce se predă compartimentului contabilitate generală.
La compartimentul Postcalcul pe baza exemplarului 2 al bonului se întocmeşte lunar
Centralizatorul materialelor pe locuri de consum şi pe baza acestuia tot lunar se fac înregistrări
în Fişele de postcalcul, după care Centralizatorul materialelor pe locuri de consum se trimite
compartimentului contabilitate generală. La contabilitate generală pe baza celor două
centralizatoare, lunar se întocmeşte Jurnalul. Cele două centralizatoare rămân ca şi acte
justificative la acest compartiment. Tot la acest compartiment pe baza datelor din Jurnal (nota
contabilă) lunar se fac înregistrări în Cartea Mare. Pe baza datelor din Cartea Mare lunar la acest
compartiment se întocmeşte Balanţa de verificare. La acelaşi compartiment trimestrial,
semestrial sau anual pe baza datelor din Cartea Mare se întocmeşte de către un economist
Bilanţul în 4 exemplare. Bilanţul se trimite conducerii pentru avizare şi semnare. Apoi este
trimis astfel:
- exemplarul 1 la Camera de comerţ; - exemplarul 2 la Banca de care aparţine;
- exemplarul 3 la Administraţia financiară; - exemplarul 4 la unitate ca şi act justificativ.
13
14
15
Tema 3
Fluxul informaţional al vânzărilor de materiale din stoc supranormativ al unui agent
economic
Se primeşte la Registratură (secretariat) o Comandă privind cumpărarea de materiale din
stoc supranormativ, ce se va înregistra în Registrul de intrări-ieşiri al agentului economic,
atribuindu-se un număr de intrare. După aceea se trimite compartimentului Aprovizionare. La
Aprovizionare pe baza Comenzii primite se întocmeşte Dispoziţia de livrare - Avizul de
expediţie în 4 exemplare. Acesta se verifică de către şeful compartimentului şi după aceea se
trimite conducerii spre avizare şi semnare. Conducerea avizează şi semnează documentul, după
care se predă următoarelor destinaţii: - exemplarul 1 la Beneficiar; - exemplarul 2 la Magazie;
- exemplarul 3 la Desfacere; - exemplarul 4 la aprovizionare ca act justificativ.
La magazie pe baza ex. 2 al dispoziţiei se înregistrează în fişa de magazie cantitatea
vândută şi apoi se calculează stocul acelui material. Apoi magazionerul pe baza exemplarului 2
al dispoziţiei se întocmeşte Borderoul de predare al documentelor şi la sfârşitul zilei de lucru
predă documentele la contabilitatea materialelor. Aici este verificată existenţa documentelor şi
se semnează de primire predare apoi se restituie magazionerului Borderoul de predare a
documentului ca şi act justificativ. Pe baza exemplarului 3 al dispoziţiei la Desfacere se
întocmeşte Factura în 4 ex., apoi se verifică de şeful compartimentului şi se semnează. Apoi ex.
1 şi 2 ale Facturii sunt trimise compartimentului financiar, exemplul 3 se trimite beneficiarului
pentru a se plăti materialele, iar ex. 4 rămâne ca act justificativ la acest compartiment.
La compartimentul financiar pe baza celor două exemplare ale Facturii se întocmeşte
Borderoul de predare al facturii de încasat, acesta se verifică şi semnează de şeful
compartimentului. Apoi ex. 1 Factura şi Borderoul de predare al facturii de încasat se trimit
conducerii spre semnare, urmărind ca apoi să se trimită băncii pentru încasare.
La compartimentul contabilitatea materialelor se confruntă ex. 2 al Facturii cu ex. 2 al
dispoziţiei, apoi pe baza ex. 2 al Facturii se înregistrează cantitatea de materiale vândută în fişele
cantitativ-valorice, calculându-se stocul şi soldul acestora. Aici, lunar pe baza ex. 2 al Facturii
se întocmeşte Centralizatorul materialelor vândute ce se va trimite la biroul contabilitate
generală. La biroul contabilitate generală pe baza Centralizatorului se întocmeşte Jurnalul (nota
contabilă), iar Centralizatorul rămâne ca şi act justificativ .La acelaşi birou lunar pe baza datelor
din Jurnal (nota contabilă) se fac înregistrări în Cartea Mare. Tot lunar la contabilitatea generală
pe baza datelor din Cartea Mare lunar se întocmeşte Balanţa de verificare.
16
17
18
Capitolul 2. PROIECTAREA GENERALĂ A UNEI APLICAŢII
Prezentăm tema pe care dorim să o proiectăm, după care facem proiectarea generală a
acesteia.
Ne propunem să executăm o parte din Aplicaţia gestiunea materialelor la un agent
economic şi de aceea în continuare prezentăm doar următoarele situaţii de ieşire:
S1: Situaţia intrărilor şi ieşirilor de materiale la data de.........
S2: Situaţia stocurilor la data de.......
S3: Situaţia stocurilor supranormative la data de.......
S4: Situaţia stocurilor de siguranţă la data......
S5: Balanţa valorilor materiale.
19
S5.: - Cod material N(10)
- Cod gestiune N(2)
- Denumire material C(22)
- Unitate de măsură C(3)
- Preţ unitar N(8.2)
- Stoc iniţial N(9.3)
- Cantitate intrată N(9.3)
- Cantitate ieşită N(9.3)
- Stoc final N(9.3)
- Sold final N(11.2)
20
21
B. Se va întocmi macheta de imprimare (afişare) pentru situaţiile date.
Pentru a se întocmi o machetă lizibilă se are în vedere o imprimantă de tip economic de 132
caractere pe rând.
Se poziţionează antetul în stânga sus începând din Rândul 1 Coloana 1 apoi celelalte rânduri
ale antetului se poziţionează tot din Coloana 1 dar la câte un rând liber pentru a fi citibil.
Apoi se poziţionează antetul la mijlocul situaţiei, calculând câte caractere are titlul situaţiei
cu câte un caracter între cuvintele titlului. Exemplul nostru: titlul are 37 caractere se scade
din 132 şi obţinem 95 care se împarte la 2 obţinând 47 rest 1, deci nu este exact şi în acest caz
se ia un caracter în plus în faţă, deci titlul începe din Coloana 49 Rândul 9, apoi se lasă un
rând liber şi se calculează mărimea situaţie calculând suma mărimilor fiecărei coloane, apoi
se adaugă câte un caracter pentru coloanele despărţitoare şi câte două caractere în cadrul
fiecărei coloane pentru spaţiul lăsat liber la scrierea textului sau cifrelor, ca să nu se lipească
de coloana despărţitore pentru a fi lizibilă situaţia. Exemplu: 71 + 8 + 14 = 93, deci 132 – 93
= 39, deci nu e par şi se va lua o coloană în plus la început de tabel, prin urmare situaţia
începe din coloana 20 rândul 9 şi se termină în coloana 110. Apoi se aranjează situaţia ca să
fie cât mai estetică şi lizibilă (citibilă de utilizator). Dacă este necesar se dau şi totalurile
aferente situaţiei, ca în exemplul de mai sus, deci numai dacă acestea adună coloane
calculabile şi care au semnificaţie.
22
C. Se întocmeşte formularul de analiza datelor, după care să se stabilească
algoritmii de calcul, elementele schemei bazei informaţionale şi documentele
de culegere a datelor de intrare.
ANALIZA DATELOR
Explicaţii:
E.P. Entitate Permanentă şi va conţine datele de intrare care rămân neschimbate pe parcursul
unei perioade de gestiune (la noi o lună, referitor la tema aplicaţiei). La noi: Cod material,
Denumire material, Unitate de măsură, preţ unitar.
E.S. Entitate de Stare şi va conţine datele care reflectă starea la un moment dat (adică
stocurile), la noi: Stoc normat, Stoc de siguranţă ş Stoc iniţial care este stocul final al lunii
precedente.
E.V. Entitatea Variabilă şi va conţine datele care sunt diferite de la o mişcare la lata de
materiale, la noi: Codul de gestiune, Codul furnizor, Cantitate intrată, Cont corespondent şi
Cantitate ieşită.
23
Codul material apare la celelalte entităţi pentru a face legătura datelor referitoare la
material.
ALGORITMI:
A1: VALI = CANTI * PREŢU
A5: ABASN = STOCN – STOCZ şi se vor lista doar acele materiale care dau valoare
negativă.
A6 : ABASS = STOCS – STOCZ şi se vor lista doar acele materiale care dau valoare
pozitivă.
A7: STOCF = STOCI + TCANTI – TCANTE se calculează la sfârşit de lună şi este stoc
iniţial al lunii următoare.
24
DOCUMENTE DE INTRARE
Se face pe baza ANALIZEI DATELOR, care ne arată conţinutul fiecărei entităţi, iar
mărimea datelor este dată de tema de proiectare. Avem următoarele documente de intrare:
25
D. Se întocmesc organigramele de sistem ale unităţilor funcţionale necesare
acestei aplicaţii.
UF. 1. Crearea şi actualizarea Entităţii permanente
Document de culegere
Confruntare Document de actualizare
date permanente
a Entităţii Permanente
UP. 14 Actualizare
UP. 11 Creare structură, Entitate Permanentă
încărcare date şi validare
formală Entităţii
Permanente Mesaj eroare
Entitate
Permanentă
Mesaje de eroare corectă
Entitate
Permanentă
validă formal
Mesaj de eroare
Entitatea
Permanentă
corectă
Listare conţinut
Entitate Permanentă
26
UF. 2 Crearea şi actualizarea Entităţii de Stare
Document de culegere
date de Stare Confruntare Document de actualizare
a Entităţii de Stare
UP. 24 Actualizare
UP. 21 Creare structură, Entitate de Stare
încărcare date şi validare
formală Entităţii de
Stare Mesaj eroare
Entitate de
Stare
Mesaje de eroare corectă
Entitate de
Stare
validă
formal
K = CODM, Se va proiecta
Documentul de actualizare a Entităţii de
Entitate de Stare sortată Stare, care are o ultimă coloană ce va
conţine Codul de actualizare, astfel: A –
pentru adăugare, M – pentru modificare
UP. 22 Validarea în şi S - pentru ştergere.
conţinut a Entităţii de
Stare
Mesaj de eroare
Entitatea
de Stare
corectă
Listare conţinut
Entitate Permanentă
27
Proiectarea documentelor de actualizare a entităţilor Permanente şi de
Stare.
DOCUMENT DE ACTUALIZARE ENITATE PERMANENTĂ
28
UF. 3. Crearea Entităţii Variabile
Document de culegere
date Variabile
Mesaje de eroare
Entitate
Variabilă
validă
formal
S K1 = CODM
K2 = CODGEST
UP. 32 Validarea în
conţinut a Entităţii
Variabile
Mesaj de eroare
Entitatea
Variabilă
corectă
29
UF. 4. Listarea Situaţiilor Finale ale aplicaţiei
Fişier
Temporal
de Listare
30
Capitolul 3. Proiectarea de detaliu a aplicaţie
a. Notaţii
(1) Procesul
31
Exemplu pentru o bibliotecă, cu aceste notaţii, care sunt cele mai folosite:
CITITOR CITITOR
Carte
Cerere împrumutată
înscriere Permis Carte
restituită
PE 2 PE 3
EVIDENTÃ EVIDENTÃ
CITITORI ÎMPRUMUTURI
D
Modelul de date al aplicaţiei
b. Fluxul de date
El desemnează elementele:
o datele ce intră într-un proces (intrările);
o datele care sunt produse de un proces (ieşirile);
o actualizările într-un depozit de date.
El se reprezintă printr-o linie continuă ce leagă un proces cu un alt simbol din DFD,
astfel:
o linia este etichetată şi are o direcţie (săgeată);
o eticheta indică ce informaţie se transportă (ce reprezintă fluxul de date);
o săgeata indică sensul propagării informaţiei.
c. Fluxul de control
El desemnează,evenimentele produse de procese sau entităţi care influenţează
comportamentul altor procese sau entităţi şi se reprezintă printr-o linie întreruptă ce leagă un
proces cu un alt simbol din DFD, având are aceleaşi caracteristici ca şi fluxul de date
(etichetă, orientare).
d. Entitate externă
Ea defineşte frontiera sistemului supus modelării, având elementele:
o produce date de intrare în sistem;
o foloseşte date produse de sistem.
Are ca sinonime:
– agent;
– sursă, destinaţie.
Ea se reprezintă sub formă de dreptunghiuri (pătrate), cu elementele:
o numele entităţii (substantiv la singular);
o fiecare flux de date se ilustrează separat;
32
o dacă aceeaşi entitate apare de mai multe ori în diagramă, se marchează colţul
din dreapta jos (paralelă la diagonala secundară);
o numerotare Xm, m indice (deasupra numelui).
e. Depozit de date
El descrie entităţile despre care sistemul trebuie să înmagazineze date şi conţine toate
realizările (instanţele) unei entităţi.
Exemple de categorii de depozite de date:
– roluri: clienţi, furnizori, angajaţi, studenţi, profesori;
– obiecte: produse, subansamble, cărţi;
– locaţii: magazii, clădiri, depozite;
– evenimente: comenzi, note, cursuri.
El se reprezintă prin:
dreptunghi deschis la ambele capete (notaţia Yourdon/De Marco);
dreptunghi închis la un capăt (notaţia Gane/Sarson, uneori şi Yourdon/De Marco);
nume;
etichetă (notaţia Gane/Sarson);
dacă acelaşi depozit de date apare de mai multe ori în diagramă, capătul închis
este cu line dublă o paralelă la acesta.
Fiecare proces trebuie să aibă cel puţin o intrare şi cel puţin o ieşire, iar dacă procesul
are numai o intrare şi numai o ieşire, s-ar putea ca el să fie critic (şi se pune întrebarea: nu s-
ar putea combina cu alt proces?).
Cel puţin un capăt al fiecărui flux de date trebuie conectat la un proces, iar celălalt
capăt poate fi conectat la:
• un proces
• un depozit de date
• o entitate externă
Fiecare depozit de date trebuie să aibă cel puţin un flux de date de intrare şi unul de
ieşire, iar dacă depozitul are numai o intrare şi numai o ieşire, trebuie analizat cu atenţie,
pentru a vedea dacă depozitul de date este o cerinţă funcţională sau numai un depozit
temporar care nu este necesar conceptual.
33
4. Procese
Procese esenţiale, acele procese care reprezintă acţiuni care trebuie efectuate
indiferent de modul în care se implementează sistemul şi sunt efectuate:
• manual (de oameni);
• mecanizat (de diverse maşini, dispozitive, roboţi);
• automat (de calculator).
Ele clasifică după scop (ce fac):
• efectuarea de calcule (calculul salarului, calculul mediei de absolvire, etc.);
• luarea de decizii (stabilirea bursei unui student pe baza mediei şi a situaţiei
materiale, stabilirea statutului de promovare a unui concurs, stabilirea drepturilor de
bursă);
• descompunerea fluxurilor de date complexe în fluxuri mai simple (separarea
corespondenţei primite de universitate pe facultăţi, dispecerarea apelurilor la o staţie
de salvare, etc.);
• combinarea fluxuri de date mai simple într-un singur flux mai complex (combinarea
fluxurilor de date despre discipline, profesori, grupe de studenţi şi săli pentru a
construi orarul);
• filtrarea sau efectuarea de calcule statistice asupra fluxurilor de date pentru a obţine
alte fluxuri de date (selectarea studenţilor care au ales un anumit curs opţional în
vederea stabilirii grupelor; numărarea opţiunilor studenţilor pentru a vedea care
cursuri sunt cele mai puţin solicitate).
34
6. Analiza fluxuri de date
Acestea trebuie să ilustreze minimul de date esenţiale de care are nevoie un proces sau
pe care acesta le produce, cum ar fi:cerinţa de minimalitate are ca scop reducerea cuplării
între procese, adică reducerea efortului de întreţinere.
Numele fluxului de date trebuie să:
– conţină substantive descriptive;
– trebuie să fie unic într-o DFD (cu excepţia fluxurilor spre sau dinspre depozitele de
date);
– se pot folosi adjective sau adverbe pentru a califica mai exact substantivele
respective.
Avem următoarele categorii de fluxuri de date după nivelul de detaliere al DFD:
– fluxuri de date compuse, cu elemente ca :
• sunt proprii DFD de nivel înalt;
• sunt formate din mai multe fluxuri de date primitive.
– fluxuri de date primitive, cu elemente ca:
• apar în DFD de nivel mediu;
• sunt formate din atribute de date bine precizate, care se transportă (propagă)
împreună, într-un singur pachet;
• corespund de regulă unui document bine precizat (de intrare sau de ieşire).
35
Analiza cerinţelor de modelare:
• modelul contextului aplicaţiei - diagramă de context, deci:
– DFD cu un proces, entităţi externe, fluxuri de date compuse, modelul de date;
• diagrama de descompunere a proceselor, deci:
– primul nivel de descompunere a sistemului studiat în subsisteme şi funcţii;
• modelul esenţial al prelucrărilor, deci:
– ierarhie de DFD rezultate din modelul contextual urmând descompunerea.
PROFESOR
CITITOR
UNIVERSITAR
Carte Aplicaţie
Factură Carte
achizitionată
Comandă Prospect
carte cãrti noi
EDITURĂ EDITURĂ
Aplicaţie
BIBLIOTECA
UF 1 UF 2 UF3
EVIDENTÃ
EVIDENTĂ EVIDENTÃ
CĂRTI CITITORI ÎMPRUMUTURI
36
10. Exemple de diagrame de flux de date
Enunţul problemei:
Descrierea sistemului
37
Exemplu de DFD Gane Sarson:
Client
2 Infor. C-dă
Comandă Prelucrează
client
D3 Fişier Comenzi
comanda
Stare c-dă
vânzare
Stare
cont nou
Comandă 1
respinsă Verifică
Interogare
credit
credit
client
4
Verifică Interog. Prod
Disponibil - listare D1 Fişier Produse
produs Stare Prod
Infor.
Produs 6 C-dă
disponibil Produs Creează în aştept.
epuizat comandă
în aşteptare
5
Factură Creează Stare
factură c-dă
în aştept
38
• 3. Identificarea depozitelor de date
• 4. Trasarea unei diagrame de flux de date generale (legătură aplicaţii)
• 5. Trasarea diagramelor de flux de date de nivel mediu (intermediare, legătură
UF)
• 6. Trasarea diagramelor de flux de date de nivel jos (primitive, legătură UP)
Pasul 1. Trasarea unei diagrame de context pentru sistemul studiat
39
• Identifică receptorii răspunsurilor pentru fiecare răspuns (ieşire) a sistemului.
Aceştia pot fi agenţi externi sau interni (entităţi externe) în diagramele trasate.
• Identifică toate depozitele de date externe sistemului. Multe sisteme necesită
accesul la surse externe de date (fişiere sau BD) care aparţin altor (sub)sisteme. De
cele mai multe ori sistemul studiat va folosi aceste surse (depozite) externe de date
numai pentru consultare, însă pot fi şi situaţii în care el face actualizări. Ca regulă
generală, proiectarea sistemului curent nu are voie să modifice structura fişierelor
(schema BD) sau depozitelor de date externe.
D8 CONTURI ÎNCASĂRI
Comandă
răspuns de Plafon şi
ENTITATE 7 la membru bonitate
credit
CLUB
CLIENT
Reducere sau
comandă
specială
Material ENTITATE 5
promoţional Comandă de
Activitatea
prelucrat MAGAZIE
40
Pasul 2. Trasarea unei diagrame de descompunere pentru Aplicaţiile activităţii şi restul
Aici diagrama de descompunere a proceselor, are în vedere:
– rădăcina - procesul din diagrama de context;
– schema de descompunere;
– schemă de numerotare.
Diagramă de descompunere
41
În continuare dăm o explicarea descompunerii:
nivelul 1: activitatea Servicii clienţi se descompune în trei subsisteme majore:
subsistemul Evidenţă clienţi;
subsistemul Prelucrare comenzi;
subsistemul Acţiuni promoţionale.
nivelul 2: fiecare dintre aplicaţiile de pe nivelul 1 se descompune în procese şi/sau funcţii:
aplicaţia Evidenţă clienţi se descompune în funcţiile:
Prelucrare tranzacţii clienţi;
Generare rapoarte clienţi;
Întreţinere date clienţi.
aplicaţia Prelucrare comenzi se descompune în procesele şi funcţiile:
Prelucrare tranzacţii comenzi – funcţie;
Întreţinere date comenzi – proces;
Întreţinere date comenzi amânate – proces;
Întreţinere date produse - proces
Aplicaţi Acţiuni promoţionale se descompune în procesele:
Înregistrare promoţie lunară (înregistrarea datelor privind activitatea promoţională
prevăzută pentru luna curentă);
Generare promoţie lunară;
Generare raport sintetic promoţie;
Întreţinere date promoţie.
nivelul 3: funcţiile de pe nivelul 2 al descompunerii se descompun la rândul lor în:
Unitatea funcţională Prelucrare tranzacţii clienţi se descompune în Unităţile de
prelucrare:
Prelucrare cereri reînscriere (ale foştilor clienţi)-,
Prelucrare cereri înscriere (ale clienţilor noi);
Unitatea funcţională Generare rapoarte clienţilor se descompune Unităţile de
prelucrare:
Generare raport obligaţii client - situaţia la zi a unui client în raport cu obligaţiile
acestuia asumate prin convenţia semnată;
Generare raport reduceri membru - situaţia la zi a modului în care clientul a folosit
reducerile de preţuri oferite;
Generare raport clienţii inactivi - date despre clienţii care nu au cumpărat nimic în
ultimele l luni;
Unitatea funcţională Întreţinere date clienţi se descompune în Unităţile de prelucrare:
Întreţinere date clienţi;
Întreţinere date grupuri de clienţi;
Întreţinere date convenţii;
Unitatea funcţională Prelucrare tranzacţii comenzi se descompune în Unităţile de
prelucrare:
Prelucrare comenzi automate pentru comenzile generate automat care nu au
răspunsuri de la clienţi;
Prelucrare răspuns clienţi pe baza răspunsurilor acestora (anularea comenzii pentru
selecţia lunii curente, schimbarea selecţiei);
Prelucrare comenzi speciale pentru comenzile referitoare la articolele cu reducere.
42
funcţiile care reprezintă generarea de rapoarte (situaţii) trebuiesc descompuse
până când se ajunge la un proces per raport în format fix (în afară de situaţia
când se produc simultan mai multe tipuri de rapoarte - de exemplu un raport
detaliat şi un raport sintetic cu acelaşi conţinut (coloane);
funcţiile de întreţinere a datelor trebuiesc descompuse până când se ajunge la
un proces per depozit de date; prin întreţinerea datelor se înţelege adăugarea,
modificarea, ştergerea şi listarea înregistrărilor dintr-un depozit de date (fişier
sau tabelă a unei BD);
procesele care sunt asociate tranzacţiilor, rapoartelor sau activităţilor de
întreţinere nu mai trebuiesc descompuse în această etapă a analizei; pentru
trasarea DFD procesul este ultimul nivel de descompunere, iar CE face
procesul se va specifica la proiectare, utilizând instrumente specifice.
Ca regulă generală:
– tranzacţiile (reprezentate în general prin documente sau prin acţiuni asupra unor
documente) şi activităţile de întreţinere a datelor introduc informaţii noi în sistem;
– generarea rapoartelor extrage informaţie din sistem.
D1 CLIENŢI
D2 GRUPURI DE CLIENŢI
D3 CONVENŢII
D4
COMENZI
D5 COMENZI
AMÂNATE
D6 PRODUSE
D7 ACŢIUNI
PROMOŢIONALE
D8 CONT ÎNCASĂRI
43
Pasul 4. Trasarea unei diagrame de flux de date generale (legătura aplicaţiilor)
E6 E4 E2 E1
CLIENT SERVICIUL GRUP DE D8 CONTURI
FOST POTENŢIAL CLIENţI CLIENŢI ÎNCASĂRI
CLIENT Reducere sau Comandă
Cerere de Plafon şi
înscriere comandă răspuns de
bonitate
Cerere de specială la grup
credit
reînscriere
Statistici analiză
clienţi
APLICAŢIA 1 APLICAŢIA 2
Cerere Comandă de E5
aprobată prelucrat
EVIDENŢĂ PRELUCRARE
CLIENŢI Actualizări COMENZI
Statistici Statistici MAGAZIE
membri, analiză
Actualizare
Informaţii grup
Informaţii vânzări
comenzi comenzi
grup de
existente
clienţi E3
D MODELUL DE DATE SERVICIUL
SERVICII CLIENŢI
MARKETING
Plan de Actualizare Informaţii acţiuni
promo promo existente
noi
clienţi E1
APLICAŢIA 3 Material
MEMBRU
promoţional
ACŢIUNI
GRUP
Acţiune promo
lunară PROMOŢIONALE
E3
Ofertă de
E6
SERVICIUL Statistici analiză
MARKETING acţiuni promo reînscriere
FOST CLIENT
44
Pasul 5: Trasarea diagramelor de flux de date de nivel mediu (Aplicaţia 2, legătura
Unităţilor funcţionale ale cestea)
E1
CLIENT
45
Pasul 5: Trasarea diagramelor de flux de date de nivel mediu (Unitatea funcţională 2,
legătura Unităţilor ei de prelucrare)
E1
MEMBRU
GRUP(CLIENT)
Comandă
răspuns
de la
client UP 2.1.2
Plafon şi bonitate
D8 CONTURI ÎNCASĂRI credit PRELUCRARE
RĂSPUNS
Plafon şi VEZI PE ANT. CLIENT
bonitate
credit Plafon şi Cerere Comandă automată revizuită
bonitate aprobată
credit D4 COMENZI
UP 2.1.1 UP 2.1.3
Reducere sau E1
PRELUCRARE PRELUCRARE comandă
COMENZI COMENZI specială MEMBRU
AUTOMATE SPECIALE GRUP(CLIENT)
Comandă de
Informaţii prelucrat Comandă de
comenzi prelucrat
existente
Comandă de
D4 COMENZI E5 prelucrat
MAGAZIE
46
Pasul 6: Trasarea DFD de nivel jos (primitive, a Unităţii de prelucrare 212, în Module
componente, necesare programării)
Comandă
E1 de la MOD. 2.1.2.1
membru D1 CLIENŢI
MEMBRU REVIZUIRE Adresă şi
GRUP CL. COMANDĂ sold
AUTOMAT CLIENT
Comandă automată Ă MOD .2.1.2.7
revizuită Comandă
CERERE DE
automată Cerere de
PLATĂ ÎN
Membru
D4 COMENZI insolvabil AVANS plată avans
47
B. Proiectarea de detaliu în cazul aplicaţiilor obiectuale.
Introducere privind folosirea UML – ului
1. Ce este un model
2. La ce se folosesc modelele
3. Niveluri de modele
4. Ce conţine un model
5. Ce înseamnă un model
1. Ce este un model
Reprezentarea simplificată a unui sistem, lucru sau fenomen:
capturează aspectele semnificative ale obiectului modelării dintr-un anumit punct de
vedere;
simplifică sau omite restul.
Modalităţi de exprimare:
desene pe hârtie;
machete 3D;
formule (modele matematice);
limbaje de modelare: UML.
2. La ce se folosesc modelele
Pentru capturarea şi exprimarea precisă a cerinţelor şi cunoştinţelor domeniului cu scopul
obţinerii unui nivel comun de înţelegere şi acord pentru stakeholders:
cerinţe despre domeniul aplicaţiei, modul în care va fi folosit sistemul de către
utilizatori, descompunerea în module, şabloane comune folosite la construire;
stakeholders: arhitect, analist, programator, manager de proiect, sponsor, client,
utilizator, operator.
Pentru a permite proiectarea sistemului:
modelul sistemului soft ajută dezvoltătorii să exploreze mai multe arhitecturi şi soluţii
de proiectare înainte de scrierea codului;
un limbaj de modelare bun permite proiectantului să obţină arhitectura generală
înainte de începerea proiectării de detaliu.
Pentru a captura deciziile de proiectare într-o formă mutabilă şi separată de cerinţe:
un model al sistemului soft poate captura comportamentul extern al unui sistem şi
informaţia din domeniul lumii reale reprezentată de sistem;
un alt model al sistemului ilustrează clasele interne şi operaţiile care implementează
comportamentul extern;
există multe modalităţi de implementare a comportamentului extern; modelul final de
proiectare ilustrează acea abordare pe care proiectantul o consideră cea mai potrivită.
Pentru a genera produse utilizabile:
modelul sistemului soft se poate folosi pentru a genera declaraţii de clase, corpuri de
proceduri, interfeţe cu utilizatorul, scheme de baze de date, scenarii de folosire legală,
scripturi de configurare etc..
Pentru organizarea, filtrarea, regăsirea, examinarea şi editarea informaţiei despre
sistemele mari:
48
în modelul sistemului soft informaţia este organizată în mai multe vederi: structura
statică, maşini cu stări, interacţiuni, cerinţe etc. Fiecare vedere este o proiecţie a
informaţiei din modelul complet în raport cu un scop anume:
se foloseşte un editor de diagrame;
informaţia este prezentată în diverse formate;
informaţia nerelevantă în raport cu un anumit scop este ascunsă;
operaţiile înrudite se grupează împreună.
Pentru explorarea cu costuri mici a multiplelor soluţii:
se propun şi se compară mai multe soluţii de proiectare;
modelele nu se construiesc complet, ci doar până la nivelul la care se pot face
comparaţiile.
Pentru construirea de sisteme complexe:
permite tratarea complexităţii;
modelul poate abstractiza până la un nivel comprehensibil pentru om, fără a recurge la
detalii care ascund esenţa;
calculatorul poate face analize complicate pe un model;
modelul poate determina impactul potenţial al unei modificări înainte de efectuarea
acesteia, prin explorarea dependenţelor din sistem;
modelul poate arăta cum se poate restructura sistemul pentru a reduce dependenţele.
3. Niveluri de modele
Nivel înalt: ghid pentru procesul de gândire:
modelele de nivel înalt construite în fazele timpurii ale unui proiect servesc la
focalizarea procesului de gândire pe clienţi şi pe punerea în evidenţă a opţiunilor
posibile:
capturează cerinţele şi reprezintă un punct de plecare pentru proiectare;
ajută dezvoltătorii să exploreze opţiunile (soluţiile) posibile înainte de a converge
spre un concept de sistem;
pe măsură ce proiectarea avansează, modelele timpurii sunt înlocuite de modele
tot mai detaliate;
modelele de nivel înalt folosesc un subset al construcţiilor UML.
Specificări abstracte ale structurii esenţiale a sistemului:
se folosesc în analiză sau proiectarea preliminară;
pun accentul pe conceptele şi mecanismele cheie ale sistemului, pe aspecte semantice;
corespund într-o măsură sistemului final, fără a pune în evidenţă detaliile;
scop: să se obţină corect elementele de nivel înalt înainte de a intra în detaliere.
Specificări complete ale sistemului final:
model de implementare: conţine suficientă informaţie pentru construirea sistemului;
include:
semantica sistemului;
algoritmi, structuri de date şi mecanisme ce asigură performanţa corespunzătoare;
decizii organizaţionale despre artefactele sistem care sunt necesare pentru munca
cooperativă a oamenilor şi sunt prelucrate de instrumente.
Exemple de sisteme tipice sau posibile:
exemple bine alese pot da informaţii suplimentare oamenilor şi pot valida specificările
şi implementările sistemelor;
exemple de structuri de date, secvenţe de interacţiuni, istorii de obiecte tipice pot ajuta
la înţelegerea situaţiilor complicate.
49
Descrieri complete sau parţiale ale sistemelor:
variante: modelul este:
descriere completă a unui singur sistem, fără referinţe exterioare;
mulţime de unităţi distincte şi discrete, fiecare memorată şi manipulată separat ca
parte a unei descrieri integrale:
au terminaţii ce se pot lega cu alte modele, pentru a forma un sistem complet;
reutilizare: piesele au coerenţă şi semantică, putând fi combinate cu alte piese
pentru a forma mai multe sisteme diferite;
modelele evoluează în timp:
modelele mai detaliate sunt obţinute din modele mai abstracte;
modelele mai concrete sunt obţinute din modele mai logice;
exemplu:
nivel înalt: vedere a întregului sistem, cu câteva servicii cheie descrise pe
scurt;
pe urmă: se adaugă detalii, se discută variante ;
pe urmă: accentul se deplasează de la o vedere abstractă front-end, centrată pe
utilizator, la o vedere fizică back-end, centrată pe implementare;
iteraţiile modelului trebuie să acopere toate nivelele, pe măsură ce
dezvoltătorii îl înţeleg mai bine.
4. Ce conţine un model
Două aspecte majore: semantică şi prezentare vizuală:
aspectul semantic:
capturează înţelesul aplicaţiei ca reţea de construcţii logice: clase, asociaţii, stări,
cazuri de utilizare, mesaje;
elementele modelului semantic se folosesc pentru generarea codului, verificarea
validităţii, metricile de complexitate etc.;
informaţia semantică se numeşte de regulă model;
prezentarea vizuală:
ilustrează informaţia semantică într-o formă ce se poate vedea, parcurge şi
modifica de oameni;
elementele de prezentare ilustrează modelul într-o formă uşor de înţeles de către
oameni:
organizează prezentarea într-o formă care accentuează aranjamentul modelului
într-o formă utilizabilă;
semantica elementelor vizuale este derivată din elementele modelului semantic.
Contextul:
organizarea internă a modelului:
folosirea simultană de mai multe grupuri fără interferenţe reciproce;
adnotaţiile despre folosirea fiecărui model în procesul general de dezvoltare;
o mulţime de valori implicite şi de ipoteze privind crearea şi manipularea elementelor;
o relaţie cu mediul în care se folosesc elementele.
5. Ce înseamnă un model
Modelul este generator de configuraţii potenţiale de sisteme.
Modelul este o abstractizare, capturând aspectele esenţiale ale unui sistem.
50
Elemente de discuţie:
Abstractizare versus detaliu:
ce este esenţial depinde de scopul modelului;
limbajul de modelare este de regulă mai imprecis decât cel de programare.
Specificare versus implementare:
specificare: ce trebuie făcut:
prima dată: să ştim ce (fără a şti cum);
separarea specificării de implementare;
implementare: cum trebuie făcut.
Descriere versus instanţă:
modelele sunt descrieri:
instanţele apar în model numai ca exemple;
modelele descriu instanţe:
instanţele reale apar numai la execuţie;
unele instanţe sunt descrieri ale altor date – metadate.
Variaţiuni în implementare:
diverse interpretări ale modelelor într-un limbaj de modelare.
3. Concepte UML
Glosar:
clasă: descriptor pentru o mulţime de obiecte ce au aceleaşi atribute, operaţii, metode,
relaţii şi comportament;
obiect: entitate discretă cu o frontieră bine definită şi cu identitate, ce încapsulează stare şi
comportament; instanţă a unei clase;
instanţă: entitate individuală cu identitate şi valoare proprie; un descriptor specifică forma
şi comportamentul mulţimii instanţelor cu proprietăţi similare;
atribut: descrierea unei poziţii cu nume şi tip specific dintr-o clasă; fiecare obiect al clasei
are o valoare proprie de tipul respectiv;
operaţie: specificarea unei transformări sau interogări pe care un obiect le poate executa;
are un nume şi o listă de parametri;
metodă: implementarea unei operaţii; specifică algoritmul sau procedura care produce
rezultatele operaţiei;
relaţie: conexiune (legătură) semantică între elementele unui model; tipuri de relaţii sunt
asocierea, generalizarea, metarelaţia, fluxul şi relaţii de dependenţă;
relaţii între clase:
asocierea: relaţie semantică între două sau mai multe clasficatoare ce implică
legături între instanţele lor;
generalizarea: relaţie de clasificare între un element mai general şi unul mai
specific:
elementul mai specific este complet consistent cu elementul mai general şi
conţine informaţie suplimentară;
polimorfism: oriunde este se cere folosirea unei instanţe a elementului mai
general se poate folosi o instanţă a elementului mai specific;
dependenţa: relaţie între două elemente în care schimbarea unui element
(furnizorul, elementul independent) poate afecta sau furniza informaţia necesară
celuilalt element (clientul, elementul dependent):
51
realizarea: relaţie între o specificare şi implementarea acesteia; indicaţie a
moştenirii comportamentului fără moştenirea structurii;
folosirea: relaţie de dependenţă în care clientul necesită prezenţa altui element
(furnizorul) pentru funcţionarea sau implementarea corectă a sa - de regulă din
motive de implementare;
comportament: efectele observabile ale unei operaţii sau unui eveniment, inclusiv
rezultatele;
vedere (view): o submulţime de construcţii UML ce reprezintă un aspect al sistemului.
52
Analiza cerinţelor. Diagrame UML
A. Analiza cerinţelor
3. Specificaţie bună
Spune ce trebuie făcut, nu cum:
Este clară (neambiguă);
Este suficient de detaliată;
Este completă.
5. Responsabilităţile analistului:
să extragă şi să clarifice cerinţele clientului;
să ajute la rezolvarea diferenţelor de opinie între clienţi şi utilizatori;
să sfătuiască clientul despre ce este tehnic posibil sau imposibil;
să documenteze cerinţele;
să negocieze şi să obţină o înţelegere cu clientul.
6. Activităţile analistului:
Ascultare: Înregistrează cerinţele clientului.
53
Reflectare: Traduce cerinţele în limbaj tehnic. Verifică pertinenţa.
Scriere: Se cade de acord asupra formulărilor.
Repeta până când se ajunge la o înţelegere cu clientul în ceea ce priveşte
cerinţele.
7. Probleme potenţiale
Procesul iterativ poate fi lung şi complicat:
Negocieri (dure).
Diferenţă culturală dintre client şi analist.
Diferenţe între cerinţele clientului şi ale utilizatorilor.
Filmele SF văzute de client.
Filmele SF văzute de programatori.
8. Rezultatele analizei
Document de specificare a cerinţelor:
Acest document este folosit ca referinţă.
Provocări.
Nivelul de detaliu:
Mare: mai precis, obţinut mai greu, muncă inutilă.
Mic: prea vag, nu poate ghida eficient dezvoltarea.
Audienţa documentelor:
2 versiuni: una pentru client, alta pentru dezvoltători?
Notaţia folosită:
Informală, semiformală, formală
9. Tipuri de cerinţe
Cerinţe funcţionale:
Ce trebuie să facă sistemul.
Cerinţe privind datele:
Formatul datelor la intrare/ieşire.
Formatul datelor din interiorul sistemului.
Constrângeri:
Cerinţe de respectat ad-literam.
Influenţează direct implementarea.
Recomandări:
Ajută la luarea deciziilor de proiectare când sunt mai multe opţiuni.
Exemple:
Cerinţe funcţionale:
Sistemul se va opri în maxim 5 secunde după ce temperatura procesorului
atinge 80 grade Celsius.
Sistemul va permite căutarea şi afişarea titlurilor cărţilor scrise anumit
autor.
Cerinţe privind datele:
Datele vor fi exportate în format XML.
Datele din tampoanele de intrare şi ieşire vor fi criptate.
Constrângeri:
Implementarea se va realiza folosind un limbaj orientat obiect.
Recomandări
54
Se va folosi cât mai puţină memorie.
10. Scenarii:
Prezintă sistemul din perspectiva utilizatorului şi înţelegem ce se cere.
Extragerea cerinţelor, testare.
Frecvenţa de utilizare a scenariilor, deci, priorităţi asignate cerinţelor.
Documentaţia utilizatorilor.
Prezentarea sistemului utilizatorilor.
B. Diagrame UML
UML este un limbaj de modelare bazat pe notaţii grafice şi este folosit pentru a:
specifica, vizualiza, construi , documenta, componentele unui program (sistem software).
55
o Identificarea use case-urilor se face pornind de la cerinţe ale clientului şi
analizând descrierea problemei.
o Atribute:
Nume = indica rolul pe care actorul îl joacă în interacţiunea cu un
UseCase.
Restricţii, doar Numele este unic.
o Relaţii, care se stabilesc între:
Actor - UseCase: asociere
Actor - Actor: generalizare
Use Case – Use Case: asociere, generalizare, dependenta
(<<include>>, <<extend>>)
c. Asociere:
- Modelează o comunicare între elementele pe care le conectează.
- Notaţie:
- Poate să apară între:
o un actor şi un Use Case (actorul iniţiază execuţia cazului de
utilizare sau oferă funcţionalitate pentru realizarea acestuia);
o două Use Case-uri (transfer de date, trimitere de
mesaje/semnale).
Exemplu:
56
d. Generalizare:
o Se realizează între elemente de acelaşi tip de ierarhii.
o Modelează situaţii în care un element este un caz particular al
altui element.
o Elementul particular moşteneşte relaţiile în care este implicat
elementul general.
o Notaţie:
e. Dependenta:
o Apare între două Use Case-uri.
o Notaţie
o Modelează situaţiile în care:
o Un Use Case foloseşte comportamentul definit în alt Use Case
(<<include>>);
o Comportamentul unui Use Case poate fi extins de către un alt
Use Case (<<extend>>).
57
1. Crearea diagramelor UML ale cazurilor de utilizare şi a diagramelor UML de clase
folosind mediul NetBeans IDE 6
58
următoarele: Creează nodul Use Case Diagram sub nodul Model
Afişează noua diagramă în editorul diagramei (diagrama este goală în acest moment)
Deschide (Modeling) Palette.
59
1. Adăugarea şi etichetarea elementelor Actor
Acum veţi adăuga elementele cazurilor de utilizare folosind Palette în IDE-ul
NetBeans.
1 Din secţiunea Basic a Palette, selectaţi pictograma Actor.
2 Facem click o dată în dreapta elementului caz de utilizare Apply for a Loan pentru a
plasa elementul Actor în diagramă. Un element Actor nedenumit este plasat în editorul de
diagrame.
3 Facem click pe ESC pentru a deselecta pictograma.
4 Selectăm elementul Actor pe care tocmai l-aţi plasat în diagramă, scriem Customer
şi apăsăm Enter. Elementul Actor este astfel etichetat.
Observaţie: Când aţi adăugat mai multe elemente diagramei, facem click pe butonul
Fit To Window din bara de instrumente (toolbar-ul) Diagram pentru a rearanja
diagrama astfel încât să puteţi vedea întreaga diagramă în editorul de diagrame.
Apoi:
1 Plasăm încă 5 elemente Actor sub actorul Customer în editorul de diagrame.
2 Deselectăm pictograma Actor făcând click oriunde în editorul de diagrame.
Apoi:
3 Etichetăm noile adăugate elemente Actor după cum urmează: Employees Bank
Teller Loan Officer Technician Bank Computer
4 Click-dreapta pe tab-ul UseCaseDiagram şi alegem Save Document din pop-up
menu.
Diagrama ar trebui să se asemene cu figura următoare.
60
2. Legarea elementelor Actor între ele
În această secţiune veţi lega elementele Actor între ele folosind Generalization.
1. Din secţiunea Basic a Palette, selectăm pictograma Generalization.
2. Facem click pe elementul Bank Teller, apoi click pe elementul Employees. Apare o
legătură (link) între cele două elemente Actor. Informaţiile legate de relaţia Generalization
apar în fereastra Properties.
3. Facem click-drepta oriunde în editorul de diagrame pentru a deselecta pictograma
Generalization.
4. În editorul de diagrame, selectăm legătura Generalization.
5. În fereastra Properties, facem click pe butonul proprietăţii Stereotypes
. Apare expertul Stereotypes.
1 Facem click pe Add, apoi facem click în câmpul gol Name şi scriem
implementation.
2 Click pe OK. legătura este eticheta <<implementation>>.
3 Adăugăm legături Generalization pentru următoarele:
61
4. Utilizarea legăturilor Extend (extindere)
O legătură Extend arată relaţia dintre un Use Case şi altul, specificând felul în care
comportamentul definit pentru cazul de utilizare extins poate fi inserat în
comportamentul definit pentru cazul de utilizare de baza.
1 Din secţiunea Basic a Palette, select[m pictograma Extend.. Faceţi click o singură
dată pe elementul Withdraw Cash From ATM şi click din nou pe elementul Withdraw
Money.
O legătură etichetată <<extend>> este desenată cu o săgeată ce arată spre elementul
Withdraw Money.
2 Repetăm paşii anteriori pentru a desena legături Extend între următoarele Use Cases:
Deposit Cash at ATM > Deposit Money Process a Loan > Apply for Loan.
3 Click-drepta oriunde în editorul de diagrame pentru a deselecta pictograma Extend
Link.
4 Pentru a rearanja diagrama, faceţi click pe butonul Orthogonal Layout
62
Orthogonal Layout din toolbar. Pentru a face aceasta, faceţi dublu-click pe tab-ul Use Case
Diagram. Puteţi deasemenea să facem click-dreapta în editorul de diagrame şi să alegem
Layout > Orthogonal din meniul pop-up. IDE-ul rearanjeză diagrama Use Case Diagram
într-un stil dreptunghiular de aşezare (layout).
Diagrama terminată ar trebui să se asemene cu figura următoare. Diagrama poate avea
însă un layout uşor diferit. Atâta timp cat relaţiile şi elementele sunt corect reflectate, orice
diferenţă uşoară de format este normală.
5. Concluzii
În acest tutorial am învăţat să creaţi o diagrama Use Case pentru o simplă aplicaţie
bancară şi a-ţi învăţat cum să efectuaţi următoarele activităţi:
Să creaţi un proiect UML.
Să creaţi o diagrama Use Case.
Să folosiţi pictogramele UML din Palette pentru a crea cazuri de utilizare
şi actori.
Să conectaţi cazurile de utilizare şi actorii pentru a arăta funcţiile
aplicaţiei.
63
2. Crearea diagramelor UML de clase în NetBeans 6
64
Folosiţi instrucţiunile începând cu secţiunea următoare pentru a desena propria
diagrama de clase.
65
6 Lăsăm setarea implicită în câmpul Namespace şi apăsăm Finish. NetBeans IDE face
următoarele: Creează nodul ClassDiagram sub nodul Model Afişează noua diagramă în
editorul de diagrame (diagrama este goală în acest moment) Deschide Modeling Palette
Observaţie: metodele get() şi set() sunt create pentru că ampăstrat setările implicite.
66
Pe măsură ce facem click pe fiecare parte a atributului sau operaţiei, eticheta acelei
părţi apare evidenţiată cu bold în fereastra combo. Dacă e posibil, partea selectată a operaţiei
sau atributului are o lista drop-down de valori.
De exemplu:
1 Facem dublu-click pe atributul stationID în clasa EntryStation.
2 Facem click pe cuvântul private. Observaţi faptul că visibility apare evidenţiat cu bold.
3 Apăsăm Ctrl + down arrow. O lista drop-down se deschide şi sunt afişate valorile pe
care le putem selecta pentru atributul visibility. Alegem o nouă valoare din lista drop-
down şi apăsăm Enter. Atributul este actualizat cu noua valoare.
Observaţie: Putem scrie direct noua valoare în editor. Dacă nu vedem ceea ce avem
nevoie în lista drop-down, folosim tastele dreapta şi stânga arrow pentru a poziţiona cursorul
şi a scrie valoarea corespunzătoare..
4 Pentru acest material folosim valoarea private şi apăsăm Enter pentru a închide editorul.
67
Apoi deselectăm pictograma Class printr-un click-dreapta oriunde în editorul de
diagrame.
Observaţie: Putem selecta şi trage noile elemente de tip clasă pentru a le aranja aşa
cum apar în figura precedentă, pentru a putea fi distinse una de cealaltă în mod clar.
1 Selectăm primul element fără nume de tip clasă de sub elementul EntryStation şi-l
denumim ATM.
2 Având elementul clasă ATM încă selectat, adăugăm un atribut după cum urmează:
private float cashOnHand.
5. Adăugăm un al doilea atribut clasei ATM şi-l definim după cum urmează:
private float dispensed.
68
1 Selectăm elementul Class din dreapta clasei ATM şi-l denumim CashierStation.
2 Adăugăm 2 metode pentru această clasă după cum urmează:
public int verifyCard();
public float verifyAmountAvailable() .
3 Denumim cele 2 clase ramase Branch şi User. Pentru clasa User nu există atribute sau
metode.
4. Pentru clasa Branch, adăugăm un atribut după cum urmează:
private char connected
Putem utiliza diferite metode pentru a localiza rapid obiecte într-o diagrama sau în
fereastra Projects. Toate atributele şi operaţiile pe care le adăugăm elementelor Class în
editorul de diagrame apar în fereastra Projects. Atributele sunt reprezentate de pictograma
atribut . Operaţiile sunt reprezentate de pictograma operaţie .
69
4 Selectăm legătura Aggregation dintre ATM şi Consortium. Când legătura
este selectată, culoarea ei va deveni albastră.
5 Poziţionăm cursorul în apropierea mijlocului liniei selectate şi facem click-
dreapta.
6 Alegem Labels > Link Name din meniul pop-up.
7 Scriem AccountVerification în câmpul Name şi apăsăm Enter. Legătura
primeşte o etichetă după cum apare în figura următoare.
Apoi din secţiunea Association a Modeling Palette, selectăm pictograma
Association şi desenăm o legătură între CashierStation şi Branch.
8 Efectuăm click-dreapta oriunde în editorul de diagrame pentru a deselecta
pictograma.
70
5.2. Adăugarea unei asocieri calificate între clase
O asociere calificată corelează două clase şi un calificator. Calificatorul este un atribut
special care reduce multiplicitatea efectivă a asocierii. Putem descrie o asociere calificată ca
fiind o căsuţa la capătul liniei de asociere în apropierea clasei pe care o califică. Următorul
pas va arăta cum putem crea o asociere calificata între clasa ATM şi clasa Consortium.
Efectuăm click-dreapta pe legătura Aggregation ce uneşte clasa Consortium şi
alegem Show Qualifier. Un calificator se va ataşa de elementul clasă Consortium ca în
figura:
71
5.3. Adăugarea multiplicităţii unei asocieri
În mod implicit etichetele de multiplicitate sunt ascunse.
Pentru a stabili multiplicitatea unei asocieri trebuie să urmăm paşii de mai jos, pentru
a afişa etichetele pe legătura de asociere corespunzătoare.
1 Facem click-dreapta pe legătura dintre Consortium şi ATM, apoi alegem Labels >
Both End Multiplicities. Meniul pop-up se închide şi apar etichetele pentru legătura.
2. Face click-dreapta pe micul romb din partea superioara a legăturii de agregare (în
apropierea elementului ATM ) şi alegem Set Multiplicity.
Observaţie: Dacă avem dificultăţi în a face să apară meniul pop-up corect, lungim
săgeata de agregare mutând elementul Consortium mai departe de elementul ATM.
2 Selectăm 1..*, observăm că porţiunea inferioară a legăturii este etichetata 1 după cum
apare in figura următore.
3 Executăm aceeaşi procedură şi setăm multiplicitatea pentru legătura de asociere între
CashierStation şi Branch după cum apare în figura următoare.
72
5.4. Adăugarea generalizării şi a moştenirii
Generalizarea este relaţia dintre o clasă şi una sau mai multe versiuni extinse ale
acelei clase. Clasa care va fi extinsă se numeşte superclasă, iar fiecare versiune extinsă va
fi numită subclasă.
Atributele şi metodele din superclasă pot fi utilizate în subclase şi astfel, fiecare
subclasă se spune că moşteneşte toate facilităţile superclasei. Putem organiza clasele
folosind moştenirea astfel încât acestea să aibă o structură comună. O legătură de
generalizare semnifica faptul că o clasă poate moşteni o mulţime de atribute şi metode de la
clasa părinte.
1 Din secţiunea Basic a Modeling Palette, selectăm pictograma Generalization
2. Facem click în interiorul elementului clasă ATM şi apoi click pe elementul clasă
EntryStation. Va apărea fereastra de dialog Select Methods to Redefine.
3. Bifăm căsuţa de lângă nodul ATM pentru a selecta toate metodele şi apăsăm OK.
Metodele selectate sunt adăugate elementului clasa ATM şi apare o legătură de
generalizare între cele 2 clase.
4. Desenăm încă o legătură de generalizare apăsând întâi pe CashierStationş şi apoi pe
EntryStation.
5. În fereastra de dialog Select methods to Redefine, bifăm căsuţa de lângă nodul
CashierStation pentru a selecta toate metodele şi apoi apăsăm OK.
6. Facem click-dreapta oriunde în editorul de diagrame pentru a deselecta pictograma
Generalization.
7. Diagrama finala ar trebui să arate ca în figura următoare:
73
Concluzii
Acest material va învăţat să creaţi o diagramă de clase pentru o aplicaţie bancară
simplă. S-a învăţat cum să realizăm următoarele lucruri: crearea unei diagrame de clase,
utilizarea pictogramelor din Pallete pentru a adăuga elemente în diagrama, adăugarea şi
definirea atributelor şi metodelor pentru elementele de tip clasă, descrierea legăturilor şi
asocierilor între elementele clasă.
74
Exemplu de diagrama UML de clase
Se reiau paşii anteriori pentru a crea următoarea diagrama UML de clase:
Atenţie: La final este de dorit să ştergem proiectele create (click dreapta pe nodul
proiectului în fereastra Projects, selectaţi Delete .
În continuare vom învăţa cum să folosim funcţiile UML ale IDE pentru a crea
diagrame UML de activităţi.
Diagrama UML de activităţi este o formă de organigrama care permite reprezentarea
75
activităţilor oricărui sistem şi a fluxului de date şi/sau de decizii între activităţi.
Diagrama UML de activităţi este o forma de organigrama care poate fi utilizata
pentru:
- Descrierea activităţilor oricărui sistem şi a fluxurilor de date şi/sau decizii între
activităţi.
- O vedere de ansamblu a proceselor aplicaţiei (business process).
- Descrierea activităţilor ce apar în interiorul unui caz de utilizare Ilustrarea
diferitelor tipuri de activităţi utilizând diferite simboluri şi ilustrarea firelor paralele
de execuţie .
76
1.3. Plasarea părtiţiilor
IDE-ul permite adăugarea unor partiţii (coridoare, swimlanes) în diagrama de
activităţi, acestea divizând pe verticală diagrama pentru a putea reprezenta activităţile
efectuate în paralel.
1 Din secţiunea Data a (Modeling) Pallete selectăm pictograma Partition .
2 Click în editorul diagramelor pentru a plasa elementul Partition în diagrama. Un
element Partition fără nume este plasat în editorul diagramelor .
3 Deselectăm pictograma Partition prin click-dreapta în interiorul editorului
diagramelor .
4 Lărgim dreptunghiul elementului către stânga. Cu elementul Partition selectat, click-
dreapta şi selectăm Partitions > Add Partition Column to the Right din meniul pop-up.
5 Lărgim dreptunghiul elementului către dreapta şi in jos.
6 Denumim partiţia prin dublu click pe cuvântul Unnamed aflat central deasupra şi
înlocuirea lui cu Bank, apoi apăsăm Enter.
7 Denumim coloana din stânga a partiţiei prin dublu click pe cuvântul Unnamed aflat
în stânga şi înlocuirea lui cu Bank Lobby.
8 Denumim coloana din dreapta Teller.
77
1.4. Adăugarea elementelor de tip nod
78
79
1.4.3. Adăugarea unui element nod iniţial
1 Din secţiunea Basic a Pallete selectăm pictograma Initial Node.
2 Facem click în subpartiţia Bank Lobby în stânga elementului Approach Teller
Counter.
3 Deselectăm pictograma.
1.4.5. Adăugarea unui element nod activitate finală şi a unui nod decizie
1 Plasăm elementul Final Node sub elementul Horizontal Fork aflat mai jos.
2 Deselectăm pictograma Activity Final Node.
3 Din secţiunea Control a Pallete selectăm pictograma Decisio.n
4 Plasm elementul Decision între elementele Send to Customer Service, Process
Transaction şi Search Customer Info.
5 Deselectăm pictograma
Diagrama ar trebui să arate astfel:
80
1.5. Adăugarea elementelor de tip legături (tranziţie şi dependenţă)
Această secţiune conţine următoarele proceduri:
81
1 În editorul diagramelor click-dreapta pe elementul Activity Group denumit
Customer.
2 În fereastra Properties pe linia proprietăţii GroupKind facem click pe săgeată în jos.
3 Selectăm Structured din lista şi elementul Activity Group denumit Customer este
reetichetat pe diagrama ca grup structurat.
82
3. EXEMPLE DE DIAGRAME UML PENTRU DIFERITE APLICAŢII
Enunţ.
Se cere realizarea unui produs soft care să controleze n lifturi într-o clădire cu m etaje.
Mişcarea lifturilor între etaje respectă următoarele reguli (restricţii):
1. Fiecare lift are m butoane, câte unul pentru fiecare etaj (nivel). La apăsare,
butoanele se luminează şi provoacă deplasarea liftului la etajul corespunzător.
Butonul corespunzător unui etaj se stinge când liftul a ajuns (a oprit) la etajul
respectiv.
2. Fiecare etaj, cu excepţia primului şi a ultimului, are două butoane: Sus (cere un
lift care urcă) şi Jos (cere un lift care coboară). La apăsare, butoanele se luminează
şi provoacă deplasarea liftului la etajul respectiv. Butoanele se sting când liftul
vizitează etajul curent şi se mişcă în direcţia corespunzătoare.
3. Când nu există nici o cerere, liftul rămâne la etajul curent cu uşile închise.
83
Între cazurile de utilizare există relaţii de includere şi extindere:
Un caz de utilizare poate include funcţionalitatea unui alt caz de utilizare. Cazul
de utilizare inclus va fi apelat ori de câte ori se execută cazul ce-l include.
Exemplu: (<listează comenzi>) listarea comenzilor din care să se selecteze
comanda ce se modifică; cazul <listează comenzi> se poate include în <modifică
comandă>.
Un caz de utilizare se poate include într-unul sau mai multe alte cazuri de
utilizare; aceasta ajută la reducerea duplicării funcţionalităţii prin gruparea
comportamentului comun în cazuri de utilizare reutilizabile.
Un caz de utilizare poate extinde comportamentul altuia - de regulă în
circumstanţe excepţionale. De exemplu, înainte de modificarea unui anumit tip de
comandă, utilizatorul ar putea avea nevoie de aprobarea unui şef; prin urmare,
cazul de utilizare <obţine aprobare> ar putea extinde cazul de utilizare obişnuit
<modifică comandă>.
legături
ă caz de utilizare
Lift
84
9. Uşile liftului se închid după ce s-a scurs un timp.
10. Liftul urcă la etajul 7.
11. Butonul din lift pentru etajul 7 se stinge.
12. Uşile liftului se deschid pentru ca utilizatorul A să poată ieşi din lift.
13. Porneşte cronometrul.
Utilizatorul A iese în lift.
14. Uşile liftului se închid după ce s-a scurs un timp.
15. Liftul urcă la etajul 9 cu utilizatorul B în el.
Scenariu de excepţie:
2. Modelarea claselor
Clasa este o construcţie UML standard folosită pentru a detalia planul de construcţie a
obiectelor la execuţie. Clasa este o specificare, iar obiectul este instanţă a clasei.
Clasele pot moşteni de la alte clase (ele moştenesc de la părinţi tot comportamentul şi
toată starea acestora şi adaugă stare şi comportament specific), pot avea ca atribute
alte clase, pot delega responsabilităţile lor la alte clase şi pot implementa interfeţe
abstracte.
Modelul claselor (class model) stă la baza dezvoltării OO. El exprimă atât starea
persistentă a sistemului, cât şi comportamentul acestuia. Clasa încapsulează stare
(atribute) şi oferă servicii pentru manipularea stării (comportament). Practicile de
proiectare OO recomandă ca accesul la atributele claselor să se facă numai prin
intermediul metodelor. Ascunderea datelor şi expunerea serviciilor asigură că
actualizările atributelor se fac numai într-o manieră controlată şi cu verificarea unor
reguli specifice.
O clasă se reprezintă astfel:
nume clasă nume clasă
atribute
metode
numele clasei este un substantiv la singular, scris cu bold;
85
zona de atribute conţine specificaţii de forma Vnume atribut: tip de date;
zona de metode conţine specificaţii de forma Vnume metodă(parametri)[: tip
rezultat];
V indică vizibilitatea:
+ public;
- private;
# protected.
Relaţiile dintre clase:
generalizare (ISA) ; Subclasă Superclasă
asociere;
navigare; Sursă Ţintă
agregare; Întreg Parte
compunere. Întreg Parte
86
se studiază toate scenariile, atât cele normale cât şi cele de excepţie, şi se identifică
componentele care joacă un rol în cazurile de utilizare.
Din scenariile de mai sus, clasele candidate sunt butoanele liftului, butoanele etajelor,
lifturile, uşile şi cronometrele.
Posibile dezavantaje: când sunt multe scenarii, din care rezultă un număr mare de
clase potenţiale. Un dezvoltator neexperimentat ar fi tentat să lucreze cu un număr
mare de clase candidate;
se folosesc card-urile CRC:
dacă dezvoltătorii sunt familiarizaţi cu domeniul problemei;
se extrag substantivele, urmând un procedeu în trei paşi:
1. Definirea concisă a problemei: se defineşte sistemul cât mai concis posibil, de
preferinţă într-o singură propoziţie
Butoanele din lifturi şi de la fiecare etaj controlează mişcarea a n lifturi într-o clădire cu m
etaje.
2. Strategie informală. Trebuie luate în considerare restricţiile (regulile, constrângerile),
aşa cum au fost ele precizate în enunţ. Strategia informală, construită pe baza lor, se poate
acum exprima textual, de preferat într-un singur paragraf.
Butoanele din lifturi şi de la fiecare etaj controlează mişcarea a n lifturi într-o clădire cu m
etaje. Butoanele se luminează la apăsare când se cere ca liftul să oprească la un anumit
etaj; iluminarea se stinge când cererea a fost satisfăcută. Când un lift n-are nici o cerere,
el rămâne la etajul curent cu uşile închise.
3. Formalizarea strategiei. În strategia informală se identifică substantivele, din
care se elimină cele ce nu aparţin domeniului problemei. Substantivele rămase sunt
candidaţi pentru clasele iniţiale. Strategia informală este reprodusă mai jos, cu
substantivele identificate marcate cu bold.
Butoanele din lifturi şi de la fiecare etaj controlează mişcarea a n lifturi într-o clădire
cu m etaje. Butoanele se luminează la apăsare când se cere ca liftul să oprească la un
anumit etaj; iluminarea se stinge când cererea a fost satisfăcută. Când un lift n-are nici
o cerere, el rămâne la etajul curent cu uşile închise.
S-au identificat opt substantive: buton, lift, etaj, mişcare, clădire, iluminare, cerere şi
uşă. Trei dintre ele - etaj, clădire şi uşă - nu aparţin domeniului problemei, deci se pot
ignora. Trei dintre cele rămase - mişcare, iluminare şi cerere - sunt substantive
abstracte. Ele indică idei sau cantităţi care nu au existenţă fizică (de regulă, ele vor fi
atribute ale altor clase; de exemplu iluminare este atribut al lui buton). Rămân două
substantive, deci două clase candidat: Lift şi Buton. Regula UML este ca numele claselor
să fie scris cu bold, iar prima literă să fie majusculă.Diagrama de clase este prezentată
mai jos. Clasa Buton are atributul boolean iluminat pentru a modela evenimentele 2, 4, 8
şi 11 din scenariile prezentate. Problema specifică două tipuri de butoane, deci se vor
defini două subclase ale clasei Buton, ButonLift şi ButonEtaj. Fiecare ButonLift şi
ButonEtaj comunică cu Lift. Ultima clasă are atributul boolean uşi deschise, pentru a
modela evenimentele 5, 9, 12 şi 14 din scenarii.
Figură. Prima iteraţie a diagramei de clase
87
Buton
iluminat: Boolean
ButonLift ButonEtaj
m 2m-2
comunică comunică
cu 1 n cu
Lift
uşi deschise:
Boolean
Din păcate, am început cu stângul. Într-un lift real, butoanele nu comunică cu lifturile,
ci se foloseşte un controler de lift. Acesta decide care lift va răspunde la o cerere anume de la
un etaj. Desigur, enunţul problemei nu face nici o referire la controler, deci această clasă n-a
avut cum să fie identificată printre substantivele din enunţ.
Un al doilea motiv pentru care prima iteraţie a diagramei nu este adecvată este
prezenţa unei asocieri m:n între clasele Lift şi ButonEtaj. Fiecare lift comunică cu cele 2m-2
butoane de la etaje (cîte 2 la etajele 1 - m-1 şi câte unul la parter şi la ultimul etaj). Fiecare
buton de etaj poate comanda oricare dintre cele n lifturi.
Dacă la diagrama de clase anterioară se adaugă clasa ControlerLift, se obţine
diagrama de mai jos.
Buton
iluminat: Boolean
ButonLift ButonEtaj
mn 2m-2
controlează controlează
1 ControlerLift 1
1
controlează
n
Lift
uşi deschise:
Boolean
3. Modelarea dinamică
Scop: producerea unei diagrame de stări, o descriere a sistemului similară cu o maşină
cu stări finite, pentru fiecare clasă
88
[buton apăsat, [nici o cerere,
buton aprins] uşile închise]
Metoda
se pleacă de la scenarii
evenimentele specifice (particulare) se generalizează
1. Utilizatorul A apasă butonul Sus la etajul 3
S-a generalizat la un buton arbitrar de la un etaj arbitrar. Sunt două alternative
a) butonul este deja aprins - nu se petrece nimic
b) butonul nu este aprins - se trece în starea Prelucrează cererea, când se execută
două lucruri (butonul se aprinde - rezultă din pasul 2, apoi se actualizează cererile -
apăsarea butonului la un etaj semnifică o cerere de lift)
3. La etajul 3 se opreşte un lift
S-a generalizat la un lift arbitrar ce se deplasează între etaje. Guardul este
[liftul se mişcă în direcţia d, urmează etajul f] iar starea este Verifică dacă s-a
cerut oprire. Există două alternative:
a) nu s-a cerut oprire (guardul [nici o cerere de la etajul f]) - liftul trece în starea
Continuă deplasarea
89
b) s-a cerut oprire la etajul f (guardul [utilizatorul a cerut oprire la etajul f]). Liftul
intră în starea Opreşte la etaj. Din evenimentul 3 al scenariului rezultă oprirea
liftului, iar din evenimentele 5 şi 6 rezultă deschiderea uşilor şi pornirea
cronometrului. Este necesară, de asemenea, actualizarea cererilor.
4. Butonul Sus de la etajul 3 se stinge.
După ce liftul a oprit la etajul f, butonul corespunzător etajului se stinge (dacă a fost
aprins). Aceasta este modelată de starea Stinge buton lift.
9. Uşile liftului se închid după ce s-a scurs un timp.
S-a generalizat la starea Închide uşile liftului.
10. Liftul urcă la etajul 7.
S-a generalizat la starea Prelucrează cererea următoare.
Starea Treci în aşteptare rezultă din generalizarea unui eveniment dintr-un alt
scenariu, când utilizatorul iese din lift şi în lift nu rămâne nici un buton aprins.
CLASS
ControlerLift
RESPONSIBILITY
1. Aprinde un buton din lift
2. Stinge un buton din lift
3. Aprinde un buton de etaj
4. Stinge un buton de etaj
5. Mută liftul un etaj în sus
6. Mută liftul un etaj în jos
7. Deschide uşile liftului şi porneşte
cronometrul
8. Închide uşile liftului după timeout
9. Verifică cererile
10. Actualizează cererile
COLLABORATION
1. Clasa ButonLift
2. Clasa ButonEtaj
3. Clasa Lift
analiza CRC:
1. nu se respectă paradigma OO:
obiectele clasei ButonLift ştiu singure să se aprindă şi să se stingă;
obiectele clasei ButonEtaj ştiu singure să se aprindă şi să se stingă;
principiul ascunderii informaţiei: ControlerLift nu vede elementele interne ale
claselor ButonLift şi ButonEtaj;
90
responsabilitate corectă: transmitere de mesaje (iteraţia nr. 2 a card-ului CRC
pentru clasa ControlerLift.
2. clasa este aglomerată:
responsabilitatea: 7. Deschide uşile liftului şi porneşte cronometrul:
uşile liftului au stare (deschise, închise);
o componentă care are stare este modelată de regulă ca o clasă;
rezultă că este nevoie de o nouă clasă, UşăLift;
iteraţia nr. 3 a modelului de clase;
responsabilitatea este descompusă în două responsabilităţi.
3. responsabilităţile Verifică cererile şi Actualizează cererişe ale clasei ControlerLift
necesită adăugarea atributului cereri la clasa ControlerLift.
CLASS
ControlerLift
RESPONSIBILITY
1. Trimite mesaj la ButonLift să aprindă butonul
2. Trimite mesaj la ButonLift să stingă butonul
3. Trimite mesaj la ButonEtaj să aprindă butonul
4. Trimite mesaj la ButonEtaj să stingă butonul
5. Trimite mesaj la Lift să mute liftul un etaj în sus
6. Trimite mesaj la Lift să mute liftul un etaj în jos
7. Trimite mesaj la UşăLift să se deschidă
8. Porneşte cronometrul
9. Trimite mesaj la UşăLift să se închidă după
timeout
10. Verifică cererile
11. Actualizează cererile
COLLABORATION
1. Subclasa ButonLift
2. Subclasa ButonEtaj
3. Clasa UşăLift
4. Clasa Lift
A doua iteraţie a card-ului CRC pentru clasa ControlerLift
91
Buton
iluminat: Boolean
ButonLift ButonEtaj
mn 2m-2
controlează controlează
1 UşăLift
1 ControlerLift 1 n uşi deschise:
cereri: tipCerere controlează
Boolean
1
controlează
n
Lift
92
14. Controlerul liftului trimite un mesaj la uşile liftului să se deschidă pentru ca
utilizatorul A să poată ieşi din lift.
15. Controlerul liftului porneşte cronometrul.
Utilizatorul A iese în lift.
16. Controlerul liftului trimite un mesaj la uşile liftului să se închidă după un timp
(timeout).
17. Controlerul liftului trimite o serie de mesaje la lift să se deplaseze în sus spre
etajul 9 cu utilizatorul B în el.
O firmă doreşte realizarea unui program software care să asigure controlul lifturilor
într-o clădire cu m(10) etaje şi mai multe scări. Acest program va trebui să asigure logica
deplasării lifturilor între etaje respectând următoarele constrângeri:
Fiecare lift are un set de m butoane, câte unul pentru etaj. Acestea se aprind în
momentul care sunt apăsate şi determina liftul să se deplaseze la etajul corespunzător.
Butonul se stinge în momentul în care liftul ajunge la etajul corespunzător.
Fiecare etaj, cu excepţia primului şi ultimului are două butoane, unul pentru a chema
liftul pentru a urca şi unul pentru a chema liftul pentru a coborî. Aceste butoane se aprind în
momentul în care sunt apăsate. Butoanele se sting când liftul ajunge la etaj şi apoi liftul se
deplasează în direcţia dorită.
Când un lift nu are nici o cerere, rămâne la etajul curent cu uşile închise.
93
Figura 1: Diagrama Use Case pentru Problema Liftului
Din aceasta diagrama use case putem extrage următorul scenariu de funcţionare al
liftului:
Pasagerul apasă butonul de pe etaj .
Sistemul detectează etajul la care a fost apăsat butonul.
Liftul se deplasează la etajul respectiv.
Se deschid uşile .
Pasagerul intra în lift şi apasă un buton din lift corespunzător etajului la care doreşte
să se deplaseze.
Se închid uşile liftului .
Liftul se deplasează la etajul solicitat.
Se deschid uşile liftului.
Pasagerul iese.
Se închid uşile liftului.
În continuare vă mai propune o variantă de Diagramă use case pentru Lift:
Pers oana
Lift
Cheama
Porneste
94
2. Diagrama de clase
Diagrama de clase arată structura statică a obiectelor, structura lor internă şi relaţiile
dintre acestea. În Figura 2 este prezentată diagrama de clase pentru problema liftului.
Buton
Persoana
(f rom Use Case View)
Lift
(f rom Use Case View)
3. Diagrama de stare
O diagramă de stare arată secvenţa de stări prin care trece un obiect pe parcursul
existentei ca răspuns la stimuli, împreună cu răspunsurile şi acţiunile realizate de acesta, iar
cea de activitate modul de desfăşurare a cestei activităţi, conform figurii următoare:
95
Diagramă de activitate:
Cheama Intra
liftul
96
Diagramă de secvenţă:
: Persoana : Lift
Cauta()
Chemare()
Pornire()
Semnal()
Deschide()
Inchide()
2. Diagrama de colaborare
Diagrama de colaborare: descrie mulţimea de interacţiuni dintre clase sau tipuri arată
relaţiile dintre obiecte.
În Figura 4 este prezentată diagrama de colaborare pentru servirea unui buton din
interiorul unui lift.
97
Vă mai propunem o variantă a acestei diagrame:
Diagramă de colaborare:
1: Cauta()
: Buton
: Persoana
: Usa : Cabina
5: Deschide() 3: Pornire()
: Lift
4: Sem nal()
:
Lumina
3. Diagrama de obiect
Avem nevoie de o diagramă de obiect, deoarece o persoană în acelaşi timp nu poate fi
decât la un etaj:
Ion: Persoana
98
Exemplul 2: Organizarea unui curs de UML de către o firmă specializată
în acest domeniu
O firmă organizează un curs de UML, vom încerca să scriem o aplicaţie ce va permite
înscrierea la curs prin Internet. Conducătorii ce vor coordona cursul se vor arhiva din când în
când.
Aplicaţia se va organiza astfel:
candidat;
conducător;
organizator;
arhivă.
Conducătorul anunţă cursul ce-l poate întrerupe sau arhiva cursul. Candidatul trebuie
să vadă cursul, iar dacă vrea se poate înscrie şi va trebui să primească ştirea dacă a fost înscris
Organizatorul poate definitiva un curs sau îl poate şterge.
Avem următoare diagrame în UML:
Conducator Organizator
Arhiveaza Arhiva
Organizeaza
Intrerupe Defineste
Renunta Sterge
Anunta
<<extend>>
Candidat
<<extend>> <<extend>>
Inscriere
Observare
99
Pachet (Package):
Conducator Organizator
<<System>>
Seminar
Coordonare
Arhivare
Arhiva
Candidat
Observare
Utility
2. Digramă de Clase:
Conducator
*
{Denunta} {Organizeaza}
*
Candidat Arhiva Organizator
* *
{Observare} {Sterge}
* * 1
Curs * 1 Firma
Instintare
100
3. Diagramă de activităţi:
Anunta
Asteptare Observare
[Sunt candidati]
Stergere Finalizare
Inscriere
Se tine
cursul
Terminare
curs
1. Digramă de secvenţă:
: Curs
: Organizator : Candidat
Definitivare()
Inscriere()
Instiintare()
101
2. Digramă de colaborare
1: Definitivare()
: Curs
: Organizator
2: Ins criere()
3: Ins tiintare()
: Candidat
3. Digramă de obiecte:
IOAN : Candidat
OR
{Înscriere} {Înscriere}
1. Diagramă de componente:
Gestionarea
Seminar cursului
Seminar - server
Gestionarea
inscrerii
Inscriere
Web -
browser
Cgi
Seminar -
Gestionarea
online
Cuntinut curs
102
8. Diagrama de exploatare:
Calculat Calc.
Intranet Intranet
-or firma arhiva
Intranet Calac.
mesaje
ANALIZA PROBLEMEI
Cu diagramele: use case sau pachet, clase, stare sau activitate:
Prezentare
Student
103
Pachete:
Persana
Inscrieri Discipline
104
3. Diagrama de stări (State Diagram)
Initializare Deschis
Do / initializare disciplina Entry / admitere student
Student nou Exit / student++
Ştergere
Ştergere
MODELAREA PROBLEMEI
Aici se au în vedere digramele: secvenţă, colaborare şi obiect.
1: Cerere de identificare
2: Nume, Parola
4: Alegerea opetiei
5: [introducere] alegerea discipline (nume, credit)
105
2. Diagrama de colaborare (Collaboration Diagram)
2: Nume, Parola
pwd: Verificare
parola
1: Cerere de identificare
a : Secretar sef 3: [verificare(nume, parola) = TRUE] Parola corecta
4: Alegerea opetiei
t: Gestionarea listei
cu discipline
3. Diagrama de obiect
IOAN : Candidat
OR
Două care
Din 4 opţionale vrea
106
IMPLEMENTAREA PROBLEMEI
Cu diagramele de componente şi exploatare.
Admin_courses.exe
Course
Person
Register.exe
2.
Diagrama de exploatare (Deployment Diagram)
Statie de
administaratie
TCP/IP
Server de date
TCP/IP
Statie de lucru
107
Exemplul 4: Aplicaţie utilă pentru un restaurant
Aplicaţia realizată este o aplicaţie utilă pentru restaurantele mai mici. Numele acesteia
este Restaurant. Se vor realiza operaţii adăugare, ştergere, modificare şi vizualizare pentru
ospătari, produs, comenzi.
Aplicaţia va avea 2 tipuri de utilizatori: Ospătarul şi Administratorul.
Un ospătar va avea distribuite mai multe produse, pe care să le adauge la o comandă,
sau să le şteargă, să realizeze o comandă astfel eliberând masa la care s-a făcut comanda
respectivă, şi oferind posibilitatea că masa respectivă să fie din nou ocupată de alţi clienţi.
Administratorul poate realiza mai multe operaţii asupra datelor din bd. Astfel el poate
vizualiza toţi ospătarii din restaurant împreună cu datele lor personale (nume utilizator şi
parola acestora), poate vizualiza de asemenea şi mesele repartizate fiecărui ospătar în parte,
produsele disponibile restaurantului, comenzile făcute de către ospătari şi lista tuturor
produselor vândute de către restaurant. Administratorul mai are posibilitatea în afară de
vizualizări şi de a face operaţii de adăugare, ştergere sau modificare asupra datelor
vizualizate şi anume asupra ospătarilor din restaurant (asupra numelui de utilizator, sau a
parolei, asupra numelui meselor conţinute de către ospătar) şi produselor deţinute de către
restaurant (numele produselor, sau asupra preţului fiecărui produs în parte).
Un ospătar are un nume de utilizator şi o parolă, date doar de el cunoscute cu care se
va autentifica la intrarea în program. El mai conţine una sau mai multe mese care sunt unice
(aceeaşi masă nu apare la mai mulţi ospătari). Fiecare masă are un nume şi un id personal.
Un produs are un id propriu unic un nume prin care produsul se identifică şi un preţ
care reprezintă valoarea cu care un produs este vândut în restaurantul respectiv.
Un produs vândut are şi el un id propriu, numele produsului, preţul care reprezintă în
cazul în care s-au vândut mai multe produse cu acelaşi nume (id) suma preţurilor acestora, şi
cantitatea reprezentând numărul de produse vândute cu acelaşi nume (id).
O comandă are id personal, conţine id-ul ospătarului care a făcut comanda respectivă,
masa la care s-a făcut comanda şi preţul total reprezentând valoarea comenzii (suma tutror
produselor vândute de către ospătar la masa respectivă.
108
este id-ul mesei la care s-a vândut produsul, pretProdus care este fie preţul produsului vândut
dacă acesta este singurul din comanda respectivă sau suma tuturor produselor de acelaşi
nume din comandă, cantitate care este numărul de produse de acelaşi fel vândute în comanda
noastră.
Fiecare comandă este caracterizată prin: idComanda care este unic pentru fiecare
comandă în parte, idOspatar care este id-ul ospătarului care a efectuat comanda respectivă,
isMasa care este masa la care s-a efectuat comanda respectivă, pretTotal care este preţul
tuturor produselor vândute în cadrul aceleaşi comenzi.
Toate datele necesare problemei vor fi memorate într-o bază de date.
Modelul de analiză
Modelul de utilizare
Actori: Administrator, Ospătar, Login
Cazuri de utilizare:
Login:
- Alege baza de date
- Login
o Pentru ospătar
Vizualizează mesele ospătarului logat
Vizualizează produsele restaurantului
Vizualizează preţul fiecărui produs
Vizualizează cantitatea pentru fiecare produs
o Pentru Administrator
Vizualizează lista ospătarilor
Vizualizează lista meselor fiecărui ospătar
Vizualizează lista produselor
Vizualizează produsele vândute
Vizualizează comenzile
Administrator:
- Gestionează ospătari:
vizualizează ospătar
adaugă ospătar
şterge ospătar
modifică ospătar
- Gestionează mese:
vizualizează masă
adaugă masă
şterge masă
modifică masă
- Gestionează produse
vizualizează produs
adaugă produs
şterge produs
modifică produs
Ospătar:
- Adaugă produs vândut
- şterge produs vândut
- Adaugă comandă
109
Descrierea cazurilor de utilizare
1) Nume: Alege baze de date
Actori: Login
Descriere: Clientul selectează tipul bazei de date la care doreşte să se conecteze.
Introduce datele ce caracterizează fie baza de date din Acces (calea unde se află baza
de date din Acces), fie baza de date din SQL (numele serverului pe care se află baza
de date şi numele acesteia).
Pre: date ne vide;
Post: se stabileşte ce conexiune se va utiliza şi la care baza de date ne vom loga
Desfăşurare normală:
Excepţii: 1. date eronate sau vide => mesaj de atenţionare, revenire pas 1
2) Nume: Login
Actori: Login
Descriere: Clientul introduce numele de utilizator şi parola specifice unui ospătar sau
introduce ca şi nume utilizator “admin”, apasă butonul “Login” şi se deschide fie
fereastra specifică ospătarului fie fereastra specifică administratorului.
Pre: datele introduse să nu fie vide;
Post: se logează
Desfăşurare normală:
Excepţii: 1. datele sunt eronate sau vide => mesaj de atenţionare, revenire pas 1
110
3) Nume: vizualizează ospătar
Actori: Administrator
Descriere: Administratorul selectează un ospătar din lista ospătarilor
Pre: să fie selectat un ospătar
Post: se vizualizează datele personale ale ospătarului selectat şi se actualizează datele
din lista ospătarilor şi lista meselor
Desfăşurare normală:
111
Desfăşurare normală:
Excepţii: 1. numele sau parola sunt vide => mesaj de atenţionare, revenire pas 1
112
8) Nume: Adaugă masă
Actori: Administrator
Descriere: Administratorul apasă butonul “Adaugă” şi introduce datele (numele noi
mese)
Pre: numele noi mese să nu fie vid
Post: se adaugă o nouă masă în baza de date şi se actualizează datele din lista meselor
Desfăşurare normală:
113
Post: se şterge masa din baze de date
Desfăşurare normală:
114
2. în cadrul preţului s-au introdus caractere => mesaj de atenţionare, revenire
pas 1
115
Desfăşurare normală:
116
Diagrama cazurilor de utilizare
Adauga ospatar
Gestioneaza ospatari
Modifica ospatar
Sterge ospatar
Adauga masa
Gestioneaza mese
Administrator
Modifica masa
Sterge masa
Adauga produs
Gestioneaza produse
Modifica produs
Sterge produs
Alege bd Se conecteaza
Vizualizeaza pret/produs
FOspatar
Vizualizeaza cantitate/produs
Client
Login
Admin
117
Adauga produs vandut
Ospatar
Adauga comanda
Diagrama de clase
User
-idUser: Integer
-numeUser: String
-parola: String
Ospatar
-idOspatar: Integer
-nume: String
-parola: String
-listaMese: ArrayList
-listaProduse: ArrayList
Admin -listaComenzi: ArrayList
+are +apartine
-listaProdV: ArrayList
-listaOspatari: ArrayList
1 1..* +Ospatar()
+ListOspatari()
+Nume()
+Parola()
+idOspatar()
+ListMese()
Comanda +ListaProduse()
+listComenzi()
-idComanda: Integer
ProdusVandut +listProduseVandute()
-idOspatar: Integer
-idMasa: Integer
-ID: Integer
-prettotal: Decimal 1 +contine
-idComanda: Integer
+Comanda() +continue -idMasa: Integer
+IdComanda() -idProdus: Integer
+IdOspatar() 1 -numeM: String
+continue-numeP: String
+IdMasa() +apartine
-pretcalc: Decimal 1..*
+PretTotal()
1..* +cantitate: Decimal
0..* Masa
+ProdusVandut()
1 +IdProdusVandut()
1 -idOspatar: Integer
+IdComanda() +apartine
-idMasa: Integer
+contine+IdMasa()
Produs +contine -masa: String
+IdProdus()
1 +NumeM() +Masa()
-idProdus: Integer
-numep: String +NumeP() +IdOspatar()
+contine
-pret: Decimal +PretCalculat() +IdMasa()
+Cantitate() +Masa()
+Produs()
+IdProdus()
+NumeP()
+Pret()
118
Modelul conceptual
Diagrama de secvenţă
Şterge ospătar:
: Administrator
4 : selecteaza "Yes"()
5 : delete ospatar()
6 : delete mese()
119
Modifică masă:
: Administrator
1 : Selecteaza o masa()
Plăteşte:
7 : Afiseaza datele()
120
Bazele de date folosite pentru memorarea datelor sunt identice din punctul de vedere al
structurii, numelor de tabele, câmpurilor din fiecare tabelă, etc…
121
Capitolul 4. Cuprinsul proiectului PSI
Aceste elemente minime ce trebuie să le cuprindă proiectul predat de student în
ultimul laborator.
1. Prezentare generală a aplicaţiei alese
2. Prezentare text flux informaţional şi reprezentarea sa prin ASME sau BISAD
3. Prezentarea generală a aplicaţiei şi a situaţiilor finale aferente
4. Încadrarea aplicaţiei în cadrul sistemului Informatic
5. Machetele situaţiilor finale
6. Analiza datelor şi algoritmii aferenţi
7. Machetele documentelor de culegere date de intrare
8. Organigramele de sistem aferente unităţilor funcţionale
9. Enunţ pe scurt al problemei pentru DFD, apoi elaborarea acestora:
- Diagrama de context.
- Diagrama de descompunere.
- Depozitul general şi componentele sale.
- DFD general.
- DFD subsisteme.
- DFD activităţi.
10. Diagramele UML aferente aplicaţiei alese şi anume:
- Diagrama Use Case
- Diagrama de clase
- Diagrama de secvenţe
- Diagrama de colaborare
- Diagrama de stări
- Diagrama de componente
- Diagrama de exploatare
122
Teme pentru proiect la disciplina P.S.I.
1. Planificarea şi urmărirea investiţiilor
2. Gestiunea obiectelor de inventar şi a echipamentului de lucru la …..
3. Bugetul de venituri şi cheltuieli la banca ………………….
4. Întocmirea planului de aprovizionare
5. Urmărirea disciplinei contractuale în aprovizionare şi desfacere
6. Gestiunea produselor finite
7. Bugetul de venituri şi cheltuieli pentru o administraţie financiară
8. Gestiunea (mijloace fixe) activelor
9. Drepturile şi obligaţiile salariale, la ….
10. Acordarea şi urmărirea creditelor pe termen lung pentru persoană juridice la bancă.
11. Contabilitatea de gestiune a unui agent economic
12. Acordarea şi urmărirea creditelor pe termen scurt pentru persoane juridice la bancă
13. Bilanţul şi anexele sale pentru un agent economic
14. Acordarea şi urmărirea creditelor pe termen lung şi scurt pentru persoane fizice la banca
15. Contabilitatea bancară la banca ……………….
16. Evidenţa populaţiei municipiului sau oraşului …………..
17. Contabilitatea bugetară la administraţia financiară
18. C.A.R (casa de ajutor reciproc) al unităţii economice
19. Bilanţul şi anexele sale la banca ……………
20. Evidenţa şi bursele studenţilor unei facultăţi
21. Casa de schimb valutar a unui agent economic
22. Întocmirea planului de desfacere al unui agent economic
23. Întocmirea unui catalog de bibliotecă şi întreţinerea sa
24. Impozitele şi taxele persoanelor fizice şi juridice către administraţia financiară.
25. Evidenţa consumului de alimente la cantina ……..
26. Gestiunea mărfurilor pentru magazinul ………….
27. Evidenţa mărfurilor EN GROS şi EN DETAIL la un agent economic
28. Acordarea şi urmărirea creditelor pe termen scurt şi lung pentru persoane fizice la C.E.C.
29. Activitatea de vânzare şi cumpărare a acţiunilor la o societate de valori mobiliare
30. Bugetul de venituri şi cheltuieli pentru a unei agenţii mobiliare
31. Bugetul de venituri şi cheltuieli a unui agent economic
32. Bilanţul şi anexele sale la administraţia financiară
33. Gestiunea activităţilor pentru o asociaţie de locatari
34. Contabilitatea financiară la nivelul unui agent economic
35. Sistem expert de atribuire a creditelor la o bancă ..
40. Evidenţa şi urmărirea încasării facturilor telefonice la nivelul unui oraş sau municipiu
41. Sistem expert de examinarea al studenţilor la o anumită disciplină
42. Activitatea de cumpărare şi vânzare pentru o societate de valori imobiliare
43. Bugetul de venituri şi cheltuieli a unei societăţi imobiliare
44. Întocmirea şi modificarea orarului unei facultăţi
45. Urmărirea şi încasarea debitorilor unei administraţii financiare
46. Învăţământul la distanţă, teste, note, taxe, etc.
47. Sistem informatic pentru agenţii economici mici şi mijlocii din domeniul comerţului
48. Analiza economico-financiară a unei societăţi comerciale
49. Alternative de gestiune a portofoliului de acţiuni
50. Lansarea şi urmărirea producţiei la un agent economic…..
51. Gestiunea fondurilor proprii şi împrumutate (trezoreria) la un agent economic.
52. Trezoreria unei bănci.
123
53. Activitatea de compensare a datoriilor între agenţii economici.
54. Activitatea de garantare a creditelor pentru agenţii economici.
55. Gestionarea execuţiei produselor la un agent economic.
56. Gestionarea serviciilor la un prestator de servicii.
57. Calculul şi interpretarea indicatorilor statistici la un agent economic.
58. Sistem expert de administrare a unei clinici.
59. Gestiunea patrimoniului unei instituţii de cultură (muzeu).
60. Gestionarea activităţii unei burse de mărfuri zonală.
61. Gestionarea fondurilor unei primării.
62. Gestionarea fondurilor unei prefecturi.
63. Gestionarea activităţii unei agenţii de vânzări bilete de avion.
64. Gestionarea activităţii unei sucursale judeţene Loto-pronosport.
65. Gestiunea activităţii unui consiliu local.
66. Gestiune activităţii unui consiliu judeţean.
67. Planificarea şi urmărirea activităţilor la o societate de consultanţă economico-socială şi
reflectarea în Bugetul de venituri şi cheltuieli.
68. Gestiune alimentelor la o PIZZERIE cu reţetele aferente acestora.
69. Gestiunea activităţii unei societăţi de asigurare
70. Evaluarea unei societăţi comerciale
71. Proiectarea unui magazine virtual pe internet.
72. Comerţul electronic la o agenţie de turism intern şi internaţional.
73. Soluţia E- Business în domeniul agenţilor imobiliari.
74. Gestiunea activităţii unei societăţi de LEASING.
75. Gestiunea activităţii unei societăţi hoteliere.
76. Gestiunea activităţii societăţilor de cablu.
124
BIBLIOGRAFIE
125