Documente Academic
Documente Profesional
Documente Cultură
4. Faza de proiectare
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
Faza de proiectare
1. Introducere
2. Arhitectura software
3. Proiectarea modulelor
4. Metrici de proiectare
5. Principii de proiectare
6. abloane de proiectare
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Faza de proiectare
1. Introducere
2. Arhitectura software
3. Proiectarea modulelor
4. Metrici de proiectare
5. Principii de proiectare
6. abloane de proiectare
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Simplitate i complexitate
Proiectarea i programarea
Nivelurile proiectrii
Arhitectura sistemului
Module / componente
Nivelurile proiectrii
Funcii / metode
Calitatea proiectrii
Presiunea comercial
Este complet?
Compromisuri
Abordarea recomandat
Iterativ
Prudent
Realist
Proiectare incremental
Informat
Simplitatea
Elegana
Extensibilitatea
Modularitatea
Lipsa duplicrilor
Proiectare idiomatic
Portabilitatea
Calitatea descompunerii
Metode de proiectare
Proiectarea structurat
Proiectarea se nva
Necesit nvarea principiilor pentru evitarea greelilor i apoi
experien practic
Descompunere funcional
Presupune determinarea unei ierarhii de rutine
Abordri top-down, bottom-up sau aplicarea lor n tandem
Notaii
Documentare formal
Scheme logice
Pseudocod
Proiectare n cod
Faza de proiectare
1. Introducere
2. Arhitectura software
3. Proiectarea modulelor
4. Metrici de proiectare
5. Principii de proiectare
6. abloane de proiectare
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Arhitecii software
Responsabilitate mare
Pot fi:
Arhitectura
18
Componente i conexiuni
Componentele
Conexiunile
Rolul arhitecturii
Compromis:
Arhitectura influeneaz:
Validare
Comunicare
Reutilizare
Construcie i evoluie
Calitatea arhitecturii
Arhitectura i marketingul
Oportunitile de afaceri
Strategia de vnzare i liceniere
Poziia pe pia
Faza de proiectare
1. Introducere
2. Arhitectura software
3. Proiectarea modulelor
4. Metrici de proiectare
5. Principii de proiectare
6. abloane de proiectare
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Interfeele
Cuplarea
27
Niveluri de cuplare
28
29
31
33
35
37
Coeziunea
Niveluri de coeziune
40
Coeziunea ntmpltoare
(prin coinciden)
Coeziunea logic
42
Coeziunea temporal
43
Coeziunea procedural
44
Coeziunea comunicaional
45
Coeziunea secvenial
46
Coeziunea funcional
47
Comparaie
48
Coeziunea n sisteme OO
Coeziunea metodelor
Fiecare metod implementeaz o funcie clar definit (coeziune
funcional)
Coeziunea claselor
De ce sunt mpreun atributele i operaiile n aceeai clas
O clas reprezint un concept
Coeziunea motenirilor
Coeziunea este mare dac ierarhia urmrete generalizareaspecializarea unui concept
Coeziunea este mic dac scopul ierarhiei este partajarea
codului
49
Faza de proiectare
1. Introducere
2. Arhitectura software
3. Proiectarea modulelor
4. Metrici de proiectare
5. Principii de proiectare
6. abloane de proiectare
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Metrici de proiectare
Metrici:
Complexitatea ciclomatic
Metrica de coeziune
51
Complexitatea ciclomatic
Ideea de baz:
Complexitatea ciclomatic: M = e n + 2p
Exemplul 1
M = 10 7 + 1 = 4
53
Exemplul 2
M=7
M=3
54
Efecte
Recomandare: M < 10
55
unde:
dim(S) este numrul tuturor cilor independente de la I la T
care includ cel puin o instruciune din mulimea S
G este mulimea tuturor instruciunilor din modul care
refereniaz cel puin o variabil
Dac S = G, atunci dim(S) este complexitatea ciclomatic a
modulului
Altfel, dim(S) este numrul de decizii din mulimea de instruciuni
+ 1 (complexitatea ciclomatic a mulimii)
57
59
Faza de proiectare
1. Introducere
2. Arhitectura software
3. Proiectarea modulelor
4. Metrici de proiectare
5. Principii de proiectare
6. abloane de proiectare
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Principii fundamentale
Principiul deschis-nchis
Principiul substituiei
SOLID
Principiul deschis-nchis
62
Exemplu: problem
Se adaug
alte forme
geometrice
63
Exemplu: soluie
64
Principiul substituiei
65
66
Cazul 1
68
Cazul 1
69
Cazul 2
notaie inconsistent
(de fapt, conceptul de
raz unic nu este
aplicabil unei elipse)
70
Cazul 2
71
Cazul 2
72
Soluia 1
73
Soluia 1
74
Soluia 1
75
76
Soluia 2
77
78
Exemplu: problem
79
Exemplu: soluie
80
81
Exemplu: problem
82
Exemplu: soluie
83
84
Exemplu
85
Exemplu
86
Principii suplimentare
87
Euristici de proiectare
Ingineria proiectrii
Nu mare ci 42
Argumente raionale i
sistematice
Fapte, nu proiectare
informal
89
Faza de proiectare
1. Introducere
2. Arhitectura software
3. Proiectarea modulelor
4. Metrici de proiectare
5. Principii de proiectare
6. abloane de proiectare
7. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
abloane de proiectare
91
abloane software
Numele
Problema: obiectivele
Contextul: pre-condiiile
Forele: constrngerile
care indic un
compromis, de unde i
apare nevoia de ablon
Soluia: cum se ating
obiectivele
Contextul rezultant
Justificarea: cum
funcioneaz intern i
de ce (soluia extern)
abloanele nrudite
Exemple
Moduri de utilizare
cunoscute
93
Tipuri de abloane
abloane arhitecturale
abloane de proiectare
Nivelul arhitecturii
Nivelul modulelor/claselor
Idiomuri
94
Arhitectura multi-strat
poate fi la rndul
su multi-strat
95
Arhitectura multi-nivel
Multi-strat = descompunere fizic:
dll, exe, maini separate
Multi-nivel = descompunere logic:
namespace-uri, clase
96
Arhitectura MVC
97
Varianta clasic
Variante modern
99
100
Pipeline
Browsere
Aplicaii de grafic
Interfee grafice pentru programe consol portabile
102
Pipeline
Programare funcional, F#
enumFilesRec
(filterOutPaths ["c:\\Windows";"c:\\ProgramData";"c:\\Program Files"])
(filterExt [".jpg"; ".gif"])
"c:\\Multimedia"
|> Seq.groupBy (fun pth -> (Path.GetExtension pth, (FileInfo pth).Length))
|> Seq.filter (fun (_, s) -> (Seq.length s) > 1)
|> Seq.map (fun (_, sq) -> [for path in sq -> path])
|> Seq.map groupEqualFiles
|> Seq.map filterOutSingletons
|> Seq.collect Seq.ofList
|> Seq.iter (fun lst -> printfn "%A" lst)
http://bartoszmilewski.com/2011/01/05/using-f-sequences-and-pipelines/
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
103
Platforma
engl. framework
Pentru o bibliotec tradiional, programul
apeleaz funciile din bibliotec
ntr-o platform, apelul codului client este fcut
de platform
De exemplu platforma multi-agent JADE
104
Blackboard (tabl)
Roboi mobili
105
Blackboard (tabl)
abloane de proiectare
Trei clase:
107
Clasificare
108
Idiomuri
Basic: i = i + 1
C: i += 1, i++, ++i
C: temp = a; a = b; b = temp;
Python: a, b = b, a
109
Anti-abloane
Abstraction inversion
Input kludge
Permite de exemplu
code injection (vezi slide-ul urmtor)
Interface bloat
Magic pushbutton
Race hazard
Stovepipe system
BaseBean
Circle-Ellipse problem
God object
Object orgy
Poltergeists
Yo-yo problem
111
Concluzii