Opis kursa: Software design je aktivnost životnog ciklusa software engineering-a u kome se softverski zahtevi analiziraju u cilju proizvodnje opisa interne strukture softvera, koja će služiti kao osnova za konstrukciju. Software design mora opisati softversku arhitekturu, tj. kako je softver razložen i organizovan u komponente i kakav je interface izmedju ovih komponenti. Takodje, mora da opiše komponente na nivou detalja koji omogućavaju njihovu konstrukciju. Prema IEEE standardima softverski dizajn se sastoji iz dve aktivnosti: Software architectural design (nekada se naziva i top-level design) i Software detailed design.
Sadržaj kursa:
- Fundamenti softverskog dizajna
- Proces softverskog dizajna
- Ključne teme u softverskom dizajnu
- Softverska struktura i arhitektura
- Arhitekturalna struktura i pogledi
- Arhitekturalni stilovi (makroarhitektura)
- Dizajn paterni (mikroarhitektura)
- Evaluacija i analiza kvaliteta softverskog dizajna
- Atrubuti kvaliteta
- Notacija softverskog dizajna
- Strukturalni opisi
- Dinamički opisi
- Strategije i metode softverskog dizajna
- Function-Oriented (Structured) Design
- Object-Oriented Design
- Data-Structure-Centered Design
- Component-Based Design (CBD)