Disciplina: Arhitecturi soft	Cod: MI099	

Semestrul	Ore: C+S+L	Tipul	Specializarea	
8	2+0+2	optionala	Informatica	

Cadre didactice indrumatoare	Prof. Dr. PÂRV Bazil, bparv@cs.ubbcluj.ro	
Obiective	Cursul introduce conceptele si principiile de baza ale Cursul introduce conceptele şi principiile de bază ale arhitecturii sistemelor soft, punând accentul pe definirea arhitecturii soft, stilurilor arhitecturale, modelelor de arhitectură, limbajelor de descriere a arhitecturii şi instrumentelor folosite in proiectarea arhitecturii. 
Toate elementele teoretice sunt introduse folosind studii de caz, exemple de aplicaţii reale	
Continut	1. Introducere. De la limbajele de programare la arhitectura sistemelor soft
1.1. Definiţii
1.2. Istoric. Preocupări 'clasice' legate de arhitectura sistemelor soft
1.3. Limbaje de programare de nivel inalt 
1.4. Tipuri abstracte de date
1.5. Arhitectura sistemelor soft
2. Stiluri arhitecturale 
2.1. Magistrale şi filtre 
2.2. Structurarea programelor folosind abstractizarea datelor şi orientarea pe obiecte 
2.3. Apelarea implicită, bazată pe evenimente 
2.4. Sisteme stratificate
2.5. Depozite de date partajate
2.6. Interpretarea dirijată de tabele 
2.7. Alte stiluri 'familiare' de arhitectură
2.8. Arhitecturi heterogene
3. Studii de caz
3.1. Problema 1: KWIC (Key Word in Context, David Parnas) 
3.2. Problema 2: Soft pentru instrumente de măsură 
3.3. Problema 3: Roboţi mobili
3.4. Problema 4: Controlul vitezei (Cruise control)
3.5. Problema 5: Structura stratificată cu stiluri diferite pentru fiecare nivel 
3.6. Problema 6: Interpretor cu diferite stiluri de componente
3.7. Problema 7: Arhitectură blackboard reconsiderată global ca interpretor
4. Sisteme soft bazate pe partajarea datelor între utilizatori
4.1. Partajarea resurselor in sistemele software
4.2. Integrarea bazelor de date
4.3. Integrarea în mediile de programare
4.4. Integrarea în aplicaţiile de proiectare a construcţiilor
4.5. Structuri arhitecturale pentru sistemele informatice bazate pe partajarea datelor
5. Arhitecturi client-server
5.1. Introducere
5.2. Evoluţia arhitecturilor software 
5.2.1. Arhitecturi mainframe 
5.2.2. Arhitecturi bazate pe partajarea fişierelor
5.2.3. Arhitecturi client-server
5.3. Exemple de arhitecturi client-server 
5.3.1. Arhitecturi pe două nivele
5.3.2. Arhitecturi pe trei (mai multe) nivele
5.3.2.1. Arhitecturi pe trei nivele folosind tehnologia monitoarelor pentru prelucrarea tranzacţiilor
5.3.2.2. Arhitecturi pe trei nivele cu server de mesaje
5.3.2.3. Arhitecturi pe trei nivele cu server de aplicaţii
5.3.2.4. Arhitecturi de broker de cereri la obiecte (Object Request Broker, ORB)
5.3.2.5. Arhitectura distribuită/colaborativă de intreprindere
6. Modele şi elemente de arhitectură
6.1. Tipuri de elemente şi modele
6.2. Notaţii arhitecturale tradiţionale
6.3. Limbaje de descriere a arhitecturilor
6.4. Modelul celor 4+1 vederi (Kruchten)
7. Notaţii arhitecturale
7.1. Diagrame informale
7.2. Limbaje de interconectare a modulelor
7.3. SGL (Software Glue Language)
7.4. ADL (Architecture Description Language)
7.5. Limbaje de modelare/specificare (UML, ModeChart)

Activităţi de laborator

Studenţii vor lucra în echipe de 3-5 membri pentru rezolvarea unei probleme concrete, folosind diverse stiluri arhitecturale. Fiecare membru va implementa o soluţie proprie, cu un stil arhitectural specific. 
Principalele activităţi de laborator sunt:
faza de gestiune a proiectului (săpt 1 - 3)
faza de analiză/proiectare (săpt 4 - 7)
faza de implementare/testare (săpt 8 - 11)
demonstraţii live şi documentaţie finală (săpt 12) 

Materialele de curs si de laborator sunt/vor fi disponibile pe serverul Departamentului de Informatica, în directorul ..	
Bibliografie selectiva	1. FUSSELL, MARK L.: A Good Architecture for Object-Oriented Information Systems. Structures, Designs, and Patterns, OOPSLA'96 Tutorial 23, [http://www.chimu.com/ publications/oopsla96tutorial23/oopsla96tutorial23.pdf].
2. KRUCHTEN, PHILIPPE: Architectural Blueprints - The 4+1 View Model of Software Architecture, IEEE Software 12 (6), 1995, pp. 42-50. 
3. MOWBRAY, THOMAS J. - MALVEAU, RAPHAEL: Software Architect Bootcamp, Prentice Hall, (1st ed., 2000, 2nd ed., 2003).
4. SHAW, MARY: The Coming-of-Age of Software Architecture Research, in Proc. of the 23rd ICSE, IEEE Comp. Soc. 2001, 656, [http://www.cs.cmu.edu/afs/cs.cmu.edu/project/vit/ ftp/pdf/shaw-keynote-rev.pdf] 
5. SHAW, MARY - GARLAN, DAVID: Software Architecture: Perspectives on an Emerging Discipline, Prentice-Hall, 1996.
6. Software Architecture Resources, [http://www.bredemeyer.com/papers.htm ]	
Evaluare	Nota finală se calculează astfel: 1 + 4 * MAD / 10 + 5 * MIT / 10, unde
MAD = nota fazei de analiză/proiectare
MID = nota fazelor de implementare/testare/execuţie
Penalizare: se scad 0.5 puncte din fiecare notă pentru fiecare săptămână (sau fracţiune de săptămână) de întârziere