Tarkvara disain

Tarkvara disain on protsess, mille käigus disainer loob tarkvara toote spetsifikatsiooni, kasutades hulka primitiivseid komponente, et lahendada ettenähtud ülesannet. Tarkvara disain tavaliselt hõlmab probleemide lahendamist ja tarkvaralahenduse planeerimist. See sisaldab nii madala tasemelist komponentide ja algoritmide disaini kui ka kõrgtasemelist arhitektuuri disaini.
Ülevaade.
Tarkvara disain on tarkvaralahenduste rakendamise protsess ühele või mitmele probleemile. Üks tarkvara disaini põhikomponente on tarkvara nõuete analüüs. Tarkvara nõuete analüüs on osa tarkvara arenduse protsessist, mis määrab spetsifikatsioonid, mida kasutatakse tarkvara arendamisel. Kui tarkvara on pool-automaatne või kasutaja keskne, võib tarkvara disain hõlmata kasutajaliidese kujundamist. Kui aga tarkvara on täis-automaatne (ilma kasutaja või kasutajaliideseta), võib tarkvara disain koosneda kõigest skeemist või tekstist, mis kirjeldab planeeritud sündmuste järjestust.
Põhiline erinevus tarkvara analüüsi ja disaini vahel on see, et tarkvara analüüsi tulem koosneb väiksematest probleemidest, mis vajavad lahendamist. Lisaks, tarkvara analüüs ei tohiks olla koostatud väga erinevalt grupi erinevate liikmete poolt. Seevastu tarkvara disain keskendub disaineri võimetele, mistõttu saab olla mitu disaini sama probleemi lahendamiseks. Disain tihti erineb sõltuvalt sellest, kas see on loodud kasutades üldtuntud raamistikke või sobivaid disainimustreid. Tarkvara disaini näited hõlmavad operatsioonisüsteeme, veebilehekülgi, mobiilseid seadmeid või isegi uusi pilvelahendusi.
Tarkvara disain on nii protsess kui ka mudel. Disaini protsess on järjestus sammudest, mis võimaldavad disaineril kirjeldada kõiki tarkvara ehitamise aspekte. Loovad oskused, varasemad kogemused, teadmine, mis teeb "hea" tarkvara, ja üleüldine pühendumus kvaliteedile on näited kriitilistest edu faktoritest kompetentse disaini jaoks. Küll aga on tähtis välja tuua, et disainimisprotsess ei ole alati üksühene protseduur. Seda saab võrrelda maja arhitektuurilise plaaniga. See algab terviku kujutamisega (maja puhul kolmemõõtmeline mudel), millele ajapikku lisatakse detaile, mis näitavad, kuidas konstrueerida igat selle osa (näiteks torustik maja puhul). Sarnaselt, disaini mudel, mis on loodud tarkvara jaoks, pakub mitut erinevat vaatenurka valmivale tarkvarale. Põhilised disaini printsiibid võimaldavad tarkvara inseneril navigeerida läbi disaini protsessi.
Disaini kaalutlused.
On mitmeid aspekte, mida tuleb kaaluda tarkvara disainides. Iga kaalutluse tähtsus peaks peegeldama eesmärke ja ootusi, mida loodav tarkvara täitma peab. Mõned neist aspektidest on:
Disaini mustrid.
Tarkvara disainer või arhitekt võib märgata disaini probleemi, mida on ka varem kohatud ning mis võib olla isegi kellegi poolt varem lahendatud. Vormi või mustrit, mis kirjeldab lahendust tuntud probleemile nimetatakse disaini mustriks. Selliste mustrite taaskasutus aitab kiirendada tarkvara arendamise protsessi.
Terminit "disain" on tarkvara juures mõneti raske kasutada, kuna mõnel juhul programmi lähtekood ongi disain sellele programmile, mida see toodab. Teatud piirini saab väita, et "tarkvara disain" on disaini disain.