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:

  1. Proizvod je nevidljiv.
  2. Proizvod je fleksibilan.
  3. Softversko inženjerstvo nema status standardizovane discipline kao mašinstvo.
  4. Proces razvoja nije standardizovan.
  5. Mnogi proizvodi su unikatni.

Proces upravljanja rizikom

Sastoji se od četiri koraka: Identifikacija rizika, Analiza rizika, Planiranje rizika i Monitoring rizika. YNeP2VLtWtFmvzR5Al3JIb8K71IYjBU2y16szdyXVaqGoQgj9CWIvqtwFa7CVbgKV+EqXIWr8O6BqwoBV+EqXIWrcBWuwlW4Cv8B4P8H0GnE2U9MCfAAAAAASUVORK5CYII=

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.

H+euozzC9MCmAAAAAElFTkSuQmCC

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.

Entradas relacionadas: