Principi projektovanja i upravljanja softverskim sistemima
Enviado por Anónimo y clasificado en Otras materias
Escrito el en
serbocroata con un tamaño de 302,31 KB
Osobine dobro projektovanog softvera
Vrlo je teško definisati šta je dobar projekat. To često zavisi od prioriteta firme koja razvija softver i od prioriteta korisnika (visoka pouzdanost, najkraće vreme, lakoća implementacije...). Osobine dobro projektovanog softvera su:
- Hijerarhija: Dobar projekat bi trebalo da bude organizovan u dobro projektovanu hijerarhiju komponenata.
- Modularnost: Treba izvršiti dekompoziciju sistema u posebne celine tj. module (na primer, razdvojiti podatke i obradu) sa jasno definisanim interfejsom.
- Nezavisnost: Treba grupisati slične stvari u nezavisne module. Ako se kasnije menjaju neke bitne odluke u projektu, posledice će biti lokalizovane.
- Jednostavan interfejs: Treba izbeći komplikovan korisnički interfejs, interfejse sa velikim brojem mogućnosti upotrebe kao i interfejse čija bi izmena mogla izazvati neželjene efekte.
Pristupi projektovanju softvera: Top-down i Bottom-up
1. Top-down projektovanje
Polazi se od vrha sistema, odnosno od najviših slojeva i onda se polako dolazi do podsistema koji su na nižim nivoima. Loša strana ove tehnike je ta što forsira razvoj pojedinih grana sistema dok neke druge nisu ni započete. Takođe, ova tehnika ne sagledava na pravi način već postojeće komponente koje se mogu iskoristiti.
2. Bottom-up projektovanje
Polazi se sa dna sistema, odnosno od najnižih slojeva i onda se polako dolazi do podsistema koji su na višim nivoima. Obično se kreće od gotovih komponenata koje se povezuju kako bi se realizovali neki delovi sistema. Loša strana ove tehnike je ta što se najviši slojevi sistema, koje korisnik direktno vidi, dobijaju u kasnim fazama implementacije.
Arhitekturni modeli softvera
Klijent/Server model
Koristi se kod distribuiranih sistema. Sastoji se od skupa stand-alone servera koji obezbeđuju specifične servise (štampa, Web, baza podataka...), skupa klijenata koji pozivaju te servise i mreže koja omogućuje udaljeni pristup.
- Prednosti: Efikasno korišćenje mrežnih sistema, mogućnost korišćenja slabijeg hardvera za klijente, lako dodavanje novih servera.
- Nedostaci: Neefikasna razmena podataka između klijenata, redundantnost podataka, nepostojanje centralnog registra imena servera.
Skladište (Repository) model
Koristi se kod sistema kod kojih je neophodno deljenje velikih količina podataka. Organizuje se centralno skladište podataka kome pristupaju podsistemi.
- Prednosti: Efikasan način za deljenje velike količine podataka, podsistemi ne moraju da brinu o backup-u i sigurnosti.
- Nedostaci: Podsistemi moraju da se slože oko skladišta, evolucija podataka je skupa, otežana distribucija podataka.
Protočna obrada (Pipe & Filter)
Koristi se kod sistema kod kojih je neophodno izvršiti unapred definisane serije nezavisnih obrada nad podacima.
- Prednosti: Lako razumevanje ponašanja sistema, ponovno korišćenje filtera (reuse), laka izmena ili proširenje sistema.
- Nedostaci: Nije najbolji izbor kod interaktivnih sistema, povećava kompleksnost i smanjuje efikasnost.
Slojeni (Layered) model
Sistem se organizuje u skup slojeva od kojih svaki obezbeđuje funkcionalnosti sloju iznad i služi kao klijent sloju ispod.
- Prednosti: Promena interfejsa jednog sloja utiče na maksimalno još dva sloja, laka zamena slojeva, visok nivo apstrakcije.
- Nedostaci: Ne mogu svi sistemi lako da se organizuju po ovom modelu.
Event-driven model
Koristi se kod sistema upravljanih eksterno generisanim događajima (events).
- Prednosti: Podrška višestrukom korišćenju softvera, laka evolucija sistema.
- Nedostaci: Kada komponenta generiše događaj, ne zna da li će i kada neka komponenta odgovoriti na njega.
Upravljanje softverskim projektima
Upravljanje projektima podrazumeva organizovanje, planiranje i raspoređivanje softverskih projekata kako bi se osigurala isporuka na vreme i u skladu sa zahtevima.
Specifičnosti softverskih projekata:
- Proizvod je nevidljiv.
- Proizvod je fleksibilan.
- Softversko inženjerstvo nema status standardizovane discipline kao mašinstvo.
- Proces razvoja nije standardizovan.
- Mnogi proizvodi su unikatni.
Proces upravljanja rizikom
Sastoji se od četiri koraka: Identifikacija rizika, Analiza rizika, Planiranje rizika i Monitoring rizika.
Testiranje, verifikacija i validacija
Verifikacija: Da li pravimo proizvod kako treba? (U skladu sa specifikacijom).
Validacija: Da li pravimo pravi proizvod? (U skladu sa potrebama korisnika).
Metode testiranja:
- Razvojno testiranje: Jedinično, komponentno i sistemsko testiranje.
- Testiranje izdanja: Testiranje verzije namenjene korisnicima (validaciono testiranje).
- Korisničko testiranje: Alfa, beta i prijemno testiranje.
Održavanje, refaktoring i reinženjering
Tipovi održavanja: Ispravka grešaka, prilagođavanje okruženju i dodavanje novih funkcionalnosti.
Refaktoring vs. Reinženjering:
- Refaktoring: Kontinuirani proces unapređenja strukture koda radi lakšeg održavanja, uz očuvanje funkcionalnosti.
- Reinženjering: Restrukturiranje nasleđenog (legacy) sistema nakon što troškovi održavanja postanu previsoki.