Documente Academic
Documente Profesional
Documente Cultură
CURS 1
STRUCTURA CURSULUI
Descompunerea pe componente POO (Java) UML (Tool) Principii de Proiectare Orientat - Obiect (POO) abloane de proiectare software (DESIGN PATTERNS) Arhitecturi software Exemple
2
Bibliografie
James Cooper: The design patterns Java companion; Bruce Eckel: Thinking in patterns; Curs Java: grafic i fire de execu ie, liste nl n uite i iteratori; UML 2 for dummies- Wiley; Robert Martin: Principii de proiectare orientat obiect; etc.
3
Cum se joac ?
Ce nseamn de calitate?
Etapele nv
nva Regulile!
rii
nva
Principiile!
Software design, diferite paradigme de programare; Importan a coeziunii, cuplajului, ascunderii informa iei, controlul dependen elor;
nva
abloanele!
Unde ne afl m?
Am auzit de Principii
1-2 limbaje OO (Java, C++) Pu in experien n programare Deschis-nchis, Principiul substitu iei Liskov etc. Am aplicat ntmpl tor unele dintre ele;
tim Regulile
Dorim s devenim mae tri n design dar Credem c scrierea de software de calitate este magic (rezervat geniilor)
7
O hart
Ce nseamn design de calitate?
Scopurile design-ului Concepte cheie i principii Criterii ale calit ii design-ului Principii i reguli ale design-ului de calitate Reguli, euristici, criterii
Ce nseamn calitate?
design orientat-obiect de
complexit ii
Modularizarea
Descompunerea
DE CE? Pentru a reduce complexitatea prin mp r irea problemelor mari n componente mai mici, dup principiul divide et impera.
1. Selecteaz o parte a problemei componentele acestei p r i 2. Determin folosind o paradigm de design (func ional , OO, etc.) 3. Descrie interac iunile ntre componente 4. Repet 1-3 pn la satisfacerea unui anumit criteriu de terminare
12
O component este
o entitate SW ce nglobeaz reprezentarea unei abstrac iuni o metod de a ascunde cel pu in o decizie de design o sarcin de lucru (pentru un programator/ grup de programatori) o unitate de cod care:
Are un nume Are grani e identificabile Poate fi (re-)folosit de alte componente ncapsuleaz date Ascunde detaliile ne-necesare Poate fi compilat separat (eventual)
13
Exporturi
Servicii oferite altor componente
Controlul accesului
Ex. private/protected/public
14
15
Modularitatea
Un sistem este modular dac este structurat n abstrac iuni identificabile numite componente
Componentele trebuie s aib interfe e abstracte bine specificate Componentele trebuie s se caracterizeze prin coeziune ridicat i cuplaj slab
O metod de construire SW este modular dac ajut designerii s produc sisteme SW alc tuite din elemente autonome, conectate printr-o structur simpl i coerent .
16
B.Meyer
Avantajele modularit ii
Modularitatea faciliteaz fi: Extensibilitatea Reutilizabilitatea Portabilitatea factorii de calitate software, cum ar
Interfe e abstracte, bine definite Cuplaj slab, coeziune ridicat Independen a de ma in
Modularitatea este important pentru un design de calitate deoarece: Spore te gradul de separa ie a preocup rilor (programatorilor ntr-un proiect) Reduce complexitatea sistemului prin arhitecturi sw descentralizate Spore te scalabilitatea ntruct suport o dezvoltare concurent i independent de c tre mai multe persoane
17
Continuitatea Protec ia
Efectele anomaliilor din timpul execu iei sunt limitate la un num r mic de componente rela ionate?
18
1. Decompozabilitatea
Descompune i problema n subprobleme mai mici ce pot fi rezolvate separat
Exemplu: design top-down Contra-exemplu: modul de ini ializare
Ini ializeaz tot pentru toat lumea
19
2. Compozabilitatea
Modulele se pot combina liber pentru a produce noi sisteme
Componente- n medii diferite; Exemplu: bibliotecile de func ii matematice; Contra-exemplu: utilizarea de biblioteci non-POSIX
20
3. Claritatea
Modulele individuale sunt inteligibile unui cititor uman; Contra-exemplu: dependen ele secven iale (A|B|C).
21
4. Continuitatea
Modific ri mici n specifica ie rezult n:
Modific ri n pu ine module; Nu afecteaz arhitectura; Exemplu: constantele simbolice; Contra-exemplu: tablourile statice
22
5. Protec ia
Efectele unei condi ii anormale la execu ie sunt limitate doar la cteva module
Exemplu: validarea intr rilor la surs ; Contra-exemplu: excep ii haotice
23
Interfe e explicite
Cnd dou componente A i B comunic , aceasta trebuie s fie evident din textul lui A sau B sau din al ambelor
24
1. Coresponden a direct
P stra i structura solu iei compatibil cu structura domeniului problemei modelate Impact asupra: Continuit ii
O coresponden
Decompozabilit ii
i limitat impactul
Descompunerea domeniului problemei modelate este un bun punct de plecare pentru descompunerea sw
25
2. Interfe e pu ine
Fiecare modul trebuie s comunice cu un num r minim de alte module
Mai bine n-1 dect n(n-1)/2 Afecteaz ? Continuitatea, protec ia, compozabilitatea
claritatea,
26
3. Interfe e mici
Dac dou module comunic , ele trebuie s schimbe ct mai pu in informa ie
Continuitatea i protec ia
27
4. Interfe e explicite
Cnd dou module A i B comunic , aceasta trebuie s fie evident din textul lui A sau B sau din al ambelor
Decompozabilitatea i compozabilitatea Continuitatea, claritatea
de a
29
30
n continuare
Ce nseamn design orientat obiect de calitate? De la criterii i reguli la design OO; Principii ale design-ului OO (R. Martin) Euristici de design (A.J. Riel)
31