Upload
michael-lawrence
View
4
Download
0
Embed Size (px)
DESCRIPTION
Razvoj velikih softverskih sistema
Citation preview
PREDMET
SE440 RAZVOJ VELIKIH SOFTVERSKIH SISTEMA
Predavanje broj 3
SE440-P03
Arhitektura sistema
Nedelja Čas Tematska jedinica
Predavanja Lekcija ili aktivnost
Rezultat – znanja ili veštine koje student treba da
dobije
1 Arhitektura sistema
Povezanost i kohezija Analiza kvaliteta arhitekture sistema
3
2 UML paketski dijagrami, Arhitektonski šabloni
Primena UML , primena šablona
Copyright © 2010 – UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija, transfer, distribucija ili memorisanje nekog dela ili čitavih sadržaja ovog dokumenta., kopiranjem, snimanjem, elektronskim putem, skeniranjem ili na bilo koji drugi način.
Copyright © 2010 BELGRADE METROPOLITAN UNIVERSITY. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, without the prior written permission of Belgrade Metropolitan University.
Oktobar, 2013.
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
2/13
SADRŽAJ
Contents
Uvod ........................................................................................................................................................ 3
1] Povezanost i kohezija.......................................................................................................................... 4
2] Softverska arhitektura.......................................................................................................................... 5
3] Paketski dijagrami ............................................................................................................................... 7
4] Tipična arhitektonska rešenja.............................................................................................................. 8
5] Uloga modelovanja arhitekture softverskog sistema......................................................................... 10
Zaključci................................................................................................................................................. 11
Pitanja/Zadaci ........................................................................................................................................ 12
Reference/Linkovi.................................................................................................................................. 13
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
3/13
Predavanje br. 3
Arhitektura sistema
Uvod
U ovom predavanju prodiskutovaćemo prvo osobinu povezanosti i kohezije softverskih sistema. Zatim,
bavićemo se UML paketskim dijagramima. Na kraju ćemo specificirati arhitektonske šablone
relevantne za velike softverske sisteme.
Ključna pitanja:
1) Kako se definiše kvalitetna arhitektura softverskog sistema?
2) Kako se koriste UML paketski dijagrami da prikažu arhitekturu velikih softverskih sistema?
3) Navesti tipična arhitektonska rešenja velikih softverskih sistema?
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
4/13
1] Povezanost i kohezija
Arhitektura sistema se može opisati kao skup povezanih blokova tj. modula. Kvalitetna arhitektura se može opisati sa
• Minimizira se povezanost medju modulima
• Maksimizira se kohezija svakog modula
Slika : arhitektura sistema od tri povezana modula
Slika: nekvalitetna i kvalitetna povezanost dva bloka
Slika: kvalitetna kohezija modula
Slika: nekvalitetna kohezija modula
Module 1
Module 2 Module 3
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
5/13
2] Softverska arhitektura
Pomenimo zakon koji je formulisao Conway (Conway’s Law):
Struktura softverskog sistema liči (slična je) na strukturu poslovne organizacije koja ima taj softverski sistem.
Slika: struktura softverskog sistema sa 4 modula
Slika: struktura poslovne organizacije sa 4 organizacione celine
Softverska arhitektura definiše:
• Komponente softverskog sistema
• Povezanost komponenti
• Upravljanje vezom izmedju komponenti
Postoje tipične softverske arhitekture tj. arhitektonski šabloni, npr.
• Klijent-server arhitektura
• 3-slojna arhitektura (prezentacioni sloj+ aplikacioni sloj +memorijski sloj)
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
6/13
Kod klijent-server arhitekture, server pruža neku vrstu usluge koju klijenti koriste. Klijenti ne moraju da
budu stalno povezani sa serverom, već se po potrebi povezuju. A server ne mora da zna koji klijenti
će i kada zatražiti servis. Dakle, veza izmedju servera i klijenta se na odredjeni način kontroliše.
Slika: klijent-server arhitektura
Slika: 3-slojna arhitektura
Server
Klijent
Klijent
Klijent
Prezentacioni sloj
Aplikacion sloj
Memorijski sloj
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
7/13
3] Paketski dijagrami
Pojedine grupe UML elementata mogu se grupisati u pakete. Elementi paketi mogu biti :
• Klase
• Drugi paketi
• Modeli (npr. use-case model ili interakcioni dijagram ili dijagram stanja, itd.)
Napomenimo da se paketski dijagrami mogu prikazati sa ili bez interfejsa.
Sistem se deli na pakete koristeći različite kriterijume, npr.
• Skupovi klasa sa jakom kohezijom mogu da se grupišu u pakete
• Različite primene pojedinih paketa
• itd
Npr. 3-slojna arhitektura se može prikazati kao skup od 3 paketa:
• prezentacioni paket
• aplikacioni paket
• memorijski paket
Na donjoj slici je 3-slojna arhitektura prikazana preko UML paketskog dijagram.
Slika: 3-slojna arhitektura prikazana preko UML paketskog dijagrama
Slika : dva paketa povezana sa interfejsom
Prezentacioni paket
Aplikacion paket
Memorijski paket
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
8/13
4] Tipi čna arhitektonska rešenja
Pomenućemo nekoliko tipičnih arhitektonskih rešenja koja su relevantna za velike softverske sisteme, npr.
• slojna arhitektura
• objektno orijentisana arhitektura (Kod o.o. arhitekture, sistem je predstavljen kao skup klasa.)
• skladišna arhitektura (npr. baze podataka)
Npr., primeri slojevitih softverskih sistema su operativni sistemi i komunikacioni protokoli. Ova arhitektura ima svojih prednost, npr. reupotreba slojeva i abstrakcija pojedinih slojeva, ali ponekad je teško identifikovati slojeve koji su jasno razdvojeni. Postoji otvorena slojevita arhitektura (samo susedni slojevi su povezani) i zatvorena slojevita arhitektura (ne moraju samo susedni slojevi da budu u vezi). Kod 2-slojne arhitekture imamo npr. aplikacioni sloj (klijent) i server (baza podataka). Kod 3-slojne arhitekture imamo primer: user-interface, poslovna logika i baza podataka. Primer 4-slojne arhitekture: UI, aplikacije, domenski entiteti i baza podataka.
Slika: 4-slojna otvorena arhitektura
Sloj 4
Sloj 3
Sloj 2
Sloj 1
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
9/13
Slika: o.o. arhitektura
Slika: skladišna arhitektura
klasa klasa klasa
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
10/13
5] Uloga modelovanja arhitekture softverskog sistem a
Modelovanje arhitekture sistema je neophodno za dizajn sistema i implementaciju sistema. Ali, isto tako, je vrlo korisno za proces planiranja projekta i upravljanja projektom. Naime, sledeći aspekti
• rokovi
• raspodela posla
• analiza troškova
• analiza rizika
su svi zavisni od arhitekture sistema, i modelovanje arhitekture sistema direktno doprinosi rešavanju pomenutih problema. Potsetimo se da arhitektura sistema identifikuje značajne komponente sistema i relacije medju njima.
Posmatrajmo UML komponentni dijagram na donjoj slici, gde imamo prikazane 4 komponente i zavisnosti medju njima. Ako planiramo implementaciju sistema sa donje slike, moramo uzeti u obzir UML relacije zavisnosti (UM dependencies). Na osnovu relacija zavisnosti komponenti sa donje slike, jasno je da prvo moramo implementirati komponentu Komp4, jer ostale komponente koriste komponentu Komp4. Zatim, komponente Komp2 i Komp3 se mogu implementirati paralelno, jer su medjusobno nezavisne. I komponenta Komp1 može se implementirati posle implementacije Komp2 i Komp3. Na osnovu ovoga se može nacrtati Gantt dijagram, koji jje dole prikazan. Napomenimo, da je moguće napraviti parcijalne tj. „stubbed“ („odsečene“) implementacije komponenti Komp2, Komp3 i Komp4, tako da je u realnosti moguće imati implementaciju komponenti Komp1,Komp2, Komp3, Komp4 paralelno, ili delimično paralelno, što znači da je donji Gantt dijagram pojednostavljen.
Slika: UML komponentni dijagram za sistem od 4 komponente
Komp4
Komp2, Komp3
Komp 1
Slika: Gantt dijagram za gornji sistem
<component>
Komp1
<component>
Komp2
<component>
Komp3
<component>
Komp4
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
11/13
Zaklju čci
• Pomenimo zakon koji je formulisao Conway (Conway’s Law):Struktura softverskog sistema liči (slična je) na strukturu poslovne organizacije koja ima taj softverski sistem.
• Primeri slojevitih softverskih sistema su operativni sistemi i komunikacioni protokoli. Ova arhitektura ima svojih prednost, npr. reupotreba slojeva i abstrakcija pojedinih slojeva, ali ponekad je teško identifikovati slojeve koji su jasno razdvojeni. Postoji otvorena slojevita arhitektura (samo susedni slojevi su povezani) i zatvorena slojevita arhitektura (ne moraju samo susedni slojevi da budu u vezi). Kod 2-slojne arhitekture imamo npr. aplikacioni sloj (klijent) i server (baza podataka). Kod 3-slojne arhitekture imamo primer: user-interface, poslovna logika i baza podataka. Primer 4-slojne arhitekture: UI, aplikacije, domenski entiteti i baza podataka.
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
12/13
Pitanja/Zadaci
1) Šta je to objektno orijentisana arhitektura?
2) Objasniti slojevitu arhitekturu?
3) Nacrtati jedan UML paketski dijagram?
4) dati jedan primer o.o. arhitekture?
SE440 Razvoj velikih softverskih sistema Predavanje br. 3
Naziv predavanja: Arhitektura sistema
13/13
Reference/Linkovi
1] http://www.cs.toronto.edu/~sme/CS302
2] http://en.wikipedia.org/wiki/Software_system
3] http://www.websphereusergroup.org.uk/wug/files/presentations/25/25_19_ArchitectLargeSystems.pdf
4) The Benefits of Software Architecting, http://www.ibm.com/developerworks/rational/library/may06/eeles/index.html