U ovoj lekciji obrađivaćemo:
Analiza problema podrazumeva razlaganje problema na delove koje možemo lakše da rešimo. Jedan veliki problem možemo opisati kao skup manjih međusobno povezanih potproblema. Razlaganje problema nije uvek jednostavno. Važno je da zapamtimo da su veze jednako važne kao i sami potproblemi. Ponekad su upravo relacije, a ne priroda potproblema ključni faktori u iznalaženju rešenja složenog problema.
Na slici je prikazan postupak analize:
Slika 1.
Kada smo analizirali problem, moramo da sastavimo rešenje iz delova koji se bave različitim aspektima problema. Kao što se vidi na slici, sinteza je sklapanje veće strukture na osnovu manjih gradivnih elemenata. Kao i kod analize, sklapanje pojedinačnih rešenja može da bude podjednako izazovno kao i postupak traženja rešenja. Stoga, svaka tehnika rešavanja problema mora da sadrži dva dela: analizu problema radi određivanja njegove prirode i, na analizi zasnovanu, sintezu rešenja.
Slika 2.
Metode, alati, procedure i paradigme
U rešavanju problema koriste se različite metode, alati, procedure i paradigme. Metod ili tehnika je formalna procedura za pravljenje nekog ishoda. Alat je instrument ili automatizovani sistem koji služi da bi se nešto postiglo na bolji način. Procedura je kao recept: kombinacija alata i tehnika, koji, u međusobnom skladu, proizvode dati proizvod. Paradigma je kao stil kuvanja, predstavlja poseban pristup ili filozofiju gradnje softvera.
Softverski inženjeri koriste alate, tehnike, procedure i paradigme da bi poboljšali kvalitet softverskih proizvoda. Njihov cilj je da koriste efikasne i produktivne pristupe za generisanje efektivnih rešenja problema.
Da bismo razumeli kako se softverski inženjer uklapa u svet računarske nauke, pogledaćemo kao primer jednu drugu disciplinu. Razmotrićemo proučavanje hemije i njenu upotrebu za rešavanje problema. Hemičar istražuje hemikalije: njihovu strukturu, uzajamno delovanje i teoriju koja stoji iza njihovog ponašanja. Hemijski inženjeri primenjuju rezultate hemijskog proučavanja na razne probleme. Hemičari posmatraju hemiju kao predmet proučavanja. Za hemijskog inženjera, hemija je alat koji se koristi za bavljenje opštim problemom (koji možda čak i nije „hemijski“ po svojoj prirodi).
Računarstvo možemo da posmatramo u sličnom svetlu. Možemo da se fokusiramo na računare i programske jezike ili možemo da ih gledamo kao alate koji se koriste u projektovanju i primeni rešenja nekog problema. Softversko inženjerstvo, kao što je prikazano na slici, predstavlja ovaj drugi pogled. Umesto da istražujemo dizajn hardvera ili da dokazujemo teoreme koje opisuju rad algoritama, softverski inženjer se usredsređuje na računar kao sredstvo za rešavanje problema. Softverski inženjer koristi funkcije računara kao delove generalnog rešenja, umesto da se bavi organizacijom ili teorijom rada računara.
Slika 3.