< Nazad na kurseve
Uvod u softversko inženjerstvo
Učimo razvoj softvera. Učimo da analiziramo zahteve, osmišljamo rešenja i projektujemo softver. Učimo da prepoznajemo obrasce i primenjujemo oprobane metode razvoja softvera.
Znanje programiranja je uslov za efektivno praćenje kursa.
Uvod
- Uvod u softversko inženjerstvo
- Softverska arhitektura i softverski dizajn
- Verovali ili ne
Objektno orijentisano programiranje
- Objektno-orijentisano programiranje
- Nasleđivanje klasa
- Polimorfizam
- Kontrola pristupa
- Ograničenja nasleđivanja
- Softverske komponente
Principi projektovanja
- SOLID principi:
- Princip isključive odgovornosti (Single responsibility principle)
- Otvoreno-zatvoren princip (Open/closed principle)
- Liskovljev princip zamene (Liskov substitution principle)
- Princip podele interfejsa (Interface segregation principle)
- Princip inverzije zavisnosti (Dependency inversion principle)
- DRY (Don’t Repeat Yourself)
- KISS (Keep It Simple, Stupid)
- YAGNI (You Aren’t Gonna Need It)
- Enkapsulacija i skrivanje informacija
- Inverzija kontrole
Projektni obrasci
- Ispravan kod nije dovoljan
- Projektni obrasci
- Tvorbeni
- Jedinac (singleton)
- Prototip
- Fabrika
- Apstraktna fabrika
- Graditelj (builder)
- Strukturni
- Ponašajni
- Ostali
- Objekat za pristup podacima (data access object)
- Objekat za prenos podataka (data transfer object)
- Bazen objekata (object pool)
- Lenjo učitavanje (lazy loading)
Arhitektonski obrasci
- Klijent-server model
- Višeslojna arhitektura (n-tier)
- Model–view–controller (MVC)
- Model–view–presenter (MVP)
- Model–view–viewmodel (MVVM)
- Front kontroler
- Model ravnopravnih partnera (peer-to-peer)
- Mikroservisi
- Mikro frontendi
- Cloud arhitektura
- Arhitektura bez servera (serverless)
Faze razvoja softvera
- Proces razvoja softvera
- Analiza problema
- Slučajevi korišćenja (use cases)
- Korisničke priče (user stories)
- Izrada specifikacije
- Projektovanje modela
- Detektovanje elemenata sistema
- Izgrada dijagrama klasa
- Izrada dijagrama toka
- Pisanje programa
- Prevođenje koncepata u softverske klase
- Testiranje softvera
- Dokumentacija programa
- Održavanje softvera