820 likes | 1.39k Views
Dizajn softvera (01.01-Arhitektura Softvera). xx.10.2007. Prof. dr Branko Peri šić perisic@uns.ns.ac.yu. Specifikacija zahteva. Specifikacija dizajna. veza zavisnosti. veza zavisnosti. Implementacija. Softverski proi z vod – opšti model.
E N D
Dizajn softvera (01.01-Arhitektura Softvera) xx.10.2007 Prof. dr Branko Perišić perisic@uns.ns.ac.yu
Specifikacija zahteva Specifikacija dizajna veza zavisnosti veza zavisnosti Implementacija Softverski proizvod – opšti model
Modeling Languages for Systems Engineering (Statemate) The different “views” to a system
Arhitektura • povezuje osobine sistema navedene u specifikaciji zahteva sa sistemskim komponentama koje će ih implementirati. Komponente su obično moduli, a arhitektura takođe opisuje njihove međusobne veze. Osim toga, arhitektura definiše operatore kojima se od podsistema prave sistemi. • Dizajn koda • obuhvata algoritme i strukture podataka, a komponente su elementi programskog jezika, kao što su brojevi, znakovi, pokazivači i niti kontrole. Tu su takođe elementarni operatori uključujući osnovne jezičke primitive za aritmetiku i manipulaciju podacima, kao i mehanizmi za kompoziciju kao što su matrice, datoteke i procedure. • Izvršni dizajn • još detaljnija pretstava - dizajn koda. On opisuje dodelu memorije, formate podataka, šablone i sl. Arhitektura softvera
Arhitektura softvera “Kvalitet arhitekture definiše konceptualni integritet sistema koji dalje definiše ukupni kvalitet sistema. Dobra arhitektura olakšava proces konstrukcije. Loša arhitektura nekada konstrukciju čini nemogućom.” Steve McConnell, Code Complete, p 35;
Arhitektura softvera – Zašto? 1. Povečanje obima i kompleksnosti softverskih sistema. 2. Dizajn i specifikacija strukture celokupnog sistema. 3. Složenost organizacija i globalna kontrola strukture sistema. 4. Skaliranje i performansa. 5. Izbor varijanti dizajna.
Arhitektura psetarnice Može je izgraditi jedan čovek Zahteva Monimalno modeliranje Jednostavne procese Jednostavne alate
Arhitektura kuće Timski se najefikasnije i najbrže gradi Zahteva Modeliranje Dobro definisan proces Močne alate
Prosečan softverski projekat: - 5-10 ljudi - 10-15 meseci trajanja - 3-5 spoljašnjih interfejsa - Malo nepoznanica i rizika Defense Weapon System Telecom Switch National Air Traffic Control System Commercial Compiler Embedded Automotive Software CASE Tool Large-Scale Organization/Entity Simulation Small Scientific Simulation IS Application Distributed Objects (Order Entry) Defense MIS System Enterprise IS (Family of IS Applications) IS Application GUI/RDB (Order Entry) Business Spreadsheet Dimenzije kompleksnosti softvera Visoka tehnička složemost - Sadržani, real-time, distribuirani, fault-tolerant - Podesivi, nepredvidivi, promena postojeće arhitekture - Zahtevna performansa Niska složenost upravljanja - Mali - Neformalni - Jedan korisnik - “Proizvodi” Visoka složenost upravljanja - Veliki sistemi - Ugovori - Veliki broj interesenata - “Projekti” Niska tehnička složenost - Uglavnom 4GL, komponent-bazirana rešenja - Reinžinjering aplikacije - Interaktivni rad, interaktivna performansa
Kapacitet Sigurnost Raspoloživost Otpornost na greške Performansa Propusnost Tehnologije Zaštita Prinude u SE Funkcionalnost Trošak Kompatibilnost The challenge over the next 20 years will not be speed or cost or performance;it will be a question of complexity. (Izazov za sledećih 20 godina neće predstavljati brzina, cena ili performansa već složenost) Bill Raduchel, Chief Strategy Officer, Sun Microsystems Our enemy is complexity, and it’s our goal to kill it.(Naš protivnik je složenost a naš zadatak je da je uništimo.) Jan Baan
Domen arhitekture “zašto” “šta” Svojstva sistema Kvalitet arhitekture Zadovoljava Arhitektura Softverski zahtevi Ograničava Pretstavljanje arhitekture Atributi kvaliteta Tehnologija Proizvodi Definiše “kako” “ko” Sledi ArArhitekta Proces Veštine Organizacija Učesnici Definiše pravila
Šta je arhitektura softvera? • Radna definicija arhitekture softvera: “ Arhitektura softvera pretstavlja opis podsistema i komponenti softverskog sistema zajedno sa njihovim međusobnim vezama. Podsistemi i komponente mogu biti specificirane iz više uglova sa ciljem ilustrovanja funkcionalnih i nefunkcionalnih osobina softverskog sistema. Softverska arhitektura sistema pretstavlja PROIZVOD koji je posledica aktivnosti projektovanja softvera.”
Arhitektura – def.2. • Arhitektura softvera obuhvata niz značajnih odluka vezanih za organizaciju softverskog sistema • izbor gradivnih elemenata i njihovih interfejsa • ponašanje u skladu sa specifikacijom i saradnju gradivnih elemenata • kompoziciju elemenata strukture i elemenata ponašanja u SISTEM • arhitektonski stil kojim se rukovodi
Arhitektura(nastavak) • Arhitektura softvera obuhvata: • način korišćenja • funkcionalnost • performansu • pouzdanost • ponovnu iskoristivost • ekonomska i tehnološka ograničenja • estetske aspekte
Arhitektonski stilovi • Arhitektonski stil definiše familiju sistema uz oslonac na šablone koji grade organizacionu strukturu • Arhitektonski stil definiše: • rečnik komponenti i tipove konektora • ograničenja vezana za način povezivanja komponenti • jedan ili više semantičkih modela koji specificiraju kako se opšta svojstva sistema mogu izgraditi na bazi svojstava sastavnih delova.
Gde se arhitektura softvera uklapa u Model životnog ciklusa razvoja softvera? Konstrukcija softvera Inženjerstvo zahteva Arhitektonski dizajn Detaljnidizajn Isporuka Testiranje Kodiranje Održavanje
Šta obuhvata arhitektura softvera? • Opis gradivnih elemenata softverskog sistema. • Interakcije među elementima. • Šablone (paterne)koji upravljaju kompozicijom elemenata softverskog sistema. • Ograničenja vezana za šablone (paterne) • Sistem se može koristiti kao kompozitni element pri dizajnu drugih sistema.
Važna terminologija arhitekture softvera • Komponente • Konektori ili veze • Pogledi • Funkcionalna svojstva • Nefunkcionalna svojstva
Komponenta. • Enkapsulirani deo softverskog sistema. • Služi kao gradivni blok sistema i poseduje interfejs. • Na programskom nivou pretstavlja – module, klase, objekteili povezane funkcije. • Kategorizacija komponenti: • Obradni element • Element podataka • Vezni element.
Konektori ili veze Pretstavljaju veze između komponenti. • Mogu biti statičke ili dinamičke. • Statičke veze • Pozicija komponente u sklopu arhitektonskog modela (npr. Agregacija i Nasleđivanje) • Dinamičke veze – Privremen veze i interakcije među komponentama. (npr. – Kreiranje objekataikomunikacija među objektima.)
Pogledi • Delovi arhitekture softvera koji demonstriraju specifična svojstva softverskog sistema. • npr. - Dijagram prelaza stanja, Dijagram toka podataka. • Soni, Nord, Hofmeister - Specificiraju 4 pogleda na SA 1. Konceptualnu arhitekturu 2. Arhitekturu modela 3. Arhitekturu koda 4. Izvršnu arhitekturu. • P.B. Kruchten 4 pogleda na Arhitekturu softvera: 1. Logički pogled 2. Procesni pogled 3. Fizički pogled 4. Pogled raspoređenosti
Funkcionalna svojstva • Bave se posebnim aspektima funkcionalnosti sistema. • U sprezi su sa odgovarajućim funkcionalnim zahtevima. • Retko su eksplicirani u sklopu softverske arhitekture i uglavnom se implicitno podrazumevaju. • Eksplicitno iskazivanjefunkcionalnih svojstavapomaže pri povezivanjuelemenata arhitekture sarelevantnim funkcionalnim zahtevom.
Nefunkcionalna svojstva • Nisu pokrivena funkcionalnim specifikacijama. • Odnose se napouzdanost, kompatibilnost, mogućnost održavanja, saradnju u radu , mogućnost zamene, efikasnost, mogućnost testiranjaiponovne upotrebesoftberskog sistema.
Kupac Korisnik 1. Planiranje i procena budžeta. 2. Izvodivost i analiza rizika. 3. Praćenje zahteva. 4. Praćenje progresa 1. Usklađenost sa zahtevima i scenarijima upotrebe. 2. Buduće narastanje potreba i prilagođavanje 3. Performansa, pouzdanost, interoperativnost. SA Arhitekta Projektant 1. Praćenje zahteva 2. Podrška varijantama. 3. Kompletnost. 4. Konzistentnost 1. Dovoljno detalja za dizajn. 2. Izbor i asembliranje komponenti . 3. Očivanje interoperativnosti sa postojećim sistemom. Uputstvaza menjanje softvera, razvoj arhitekturei interoperativnst Serviser Nadležnosti Učesnika u specificiranju arhitekture
Arhitektonski stilovi a. Šta su arhitektonski stilovi? Arhitektonski stil : • definiše familiju sistema • u terminima šablona i organizacione strukture • obezbeđuje rečnik komponenti i tipova veza • skup ograničenjavezanih za kombinovanje komponenti • Može postojatisemantički model koji specificira način određivanja opštih osobina sistema na osnovu osobuna njegovih delova.
Arhitektonski stilovi b.Vrste arhitektonskih stilova i.Cevi i filtri ( Arhitekture bazirane na tokovima podataka) ii. Objekt orijentisani i apstraktni tipovi. iii. Bazirane na događajima i implicitnom pozivanju. • Ugnježdeni sistemi. • Repozitorijumi. • Interpreteri. • Procesima upravljani
Heterogene arhitekture • Kombinacija više stilova. • Komponente hijerarhijskog sistema mogu internu strukturu razviti na bazi različitih metoda. • Konektorimogu biti dekomponovanina druge sisteme (npr. cevimogu biti interno implementirane kao FIFO redovi čekanja). • Pojedinačne komponente mogu koristiti mešavinuarhitektonskoh konektora. Primer: Unix pipes-and-filter sistem - Sistem datoteka se ponaša kao repozitorijum, - Prima kontrole prekoinicijalizacionihprekidača, - Sa drugim komponentama interagira preko cevi.
HETEROGENI STILOVI Sistem ne mora biti zasnovan samo na jednom stilu! Na visokom nivou: događajima upravljan Na niskom nivou: ugneždeni