Softverska konstrukcija
Razvojni ciklus softvera |
---|
Delatnost |
Paradigme i modeli |
Metodologije i okviri |
Podrška discipline |
Alati |
Standardi i knjige |
Softverska konstrukcija je disciplina softverskog inženjeringa. To je detaljno stvaranje radnog smislenog softvera kroz kombinaciju kodiranja, verifikacije, testiranje jedinice, testiranje integracija, i otklanjanje grešaka. To je povezano sa svim ostalim softverskim inženjerskim disciplinama, najoštrije dizajn softvera i testiranje softvera.[1]
Osnove softverske konstrukcije[uredi | uredi izvor]
Minimiziranje kompleksnosti[uredi | uredi izvor]
Smanjena kompleksnost se ostvaruje kroz isticanje stvaranja koda koji je jednostavan i čitljiv a ne samo pametan. Minimiziranje kompleksnosti je ostvareno kroz korišćenje standarda, kao i kroz brojne specifične tehnike u kodiranju. Takođe je podržan od strane tehnika kvalitetne fokusirane gradnje .[1]
Očekivana promena[uredi | uredi izvor]
Očekivana promena je podržana od strane mnogih specifičnih tehnika kodiranja:[1]
- Komunikacione metode: kao što su standardi za formate i sadržaje dokumenata.
- Programski jezik
- Platforme
- Alati: Kao dijagram standarda za oznake kao što je UML.
Izgradnja za verifikaciju[uredi | uredi izvor]
Izgradnja za verifikaciju znači izgradnja softvera na takav način da greške mogu biti izbačene lako od softverskih inženjera pisanjem softvera, kao i tokom nezavisnog testiranja i operativnih aktivnosti. Specifične tehnike koje podržavaju izgradnju za verifikaciju uključuju sledeće standarde kodiranja da podrže kod mišljenja, jedinicu za testiranje, organizovanje koda za podršku automatskog testiranja, i ograničeno korišćenje složenih ili teško razumnih jezičkih struktura, između ostalog. .[1]
Standardi u izgradnji[uredi | uredi izvor]
Standardi koji direktno utiču na građevinska pitanja uključuju:[1]
- Korišćenje eksternih standarda: standardima za izgradnju jezika, alate za konstrukciju, tehničke interfejse i interakcije između izgradnje softvera i drugih disciplina.
- Korišćenje internih standarda: standardi kojima se mogu kreirati na organizacionom nivou da podrži koordinacije grupne aktivnosti,minimiziranje složenosti, očekujući promenu, i izgradnju za verifikaciju.
Upravljanje izgradnjom[uredi | uredi izvor]
Građevinski modeli[uredi | uredi izvor]
Brojni modeli su stvoreni za razvoj softvera, od kojih neki naglašavaju izgradnju više od drugih. Neki modeli su linearni od tačke gledišta izgradnje , kao vodopad i organizovan-isporučen model životnog ciklusa. Ovi modeli tretiraju konstrukciju kao aktivnost koja se javlja tek nakon kada je značajni preduslov posla završen uključujući bliže uslove rada, opsežnog projektovanja i detaljnog planiranja. Ostali modeli su učestali, kao što su evolutivni prototipovi, ekstremno programiranje, i Skram. Ovi pristupi teže da tretiraju konstrukciju kao aktivnost koja se javlja istovremeno sa drugim razvojnim softverskim aktivnosti, uključujući i zahteve, dizajn i planiranje, ili da se preklapaju.[1]
Građevinsko planiranje[uredi | uredi izvor]
Izbor građevinskog metoda je ključni aspekt planiranja izgradnje aktivnosti. Izbor građevinskog metoda utiče na stepen u kojem se obavljaju građevinski preduslovi, redosled kojim se vrše, i stepen do kojeg se očekuje da bude završen pre početka građevinskih radova. Građevinsko planiranje takođe definiše redosled kojim su komponente kreirane i integrisane, proces upravljanja kvaliteta softvera, raspodela radnih zadataka za specifične softverske inženjere, kao i druge poslove, u skladu sa izabranom metodom.[1]
Građevinsko merenje[uredi | uredi izvor]
Brojni građevinski radovi i predmeti mogu se meriti, uključujući razvijeni kod, modifikovan kod , kod za ponovnu upotrebu, uništeni kod, kompleksnost koda, kod inspekcijske statistike, cene fiksnih grešaka i nađenih grešaka, napor i zakazivanje. Ove mere mogu biti korisne za potrebe upravljanja izgradnjom, osiguravanje kvaliteta u toku izgradnje, poboljšanje procesa izgradnje, kao i iz drugih razloga.[1]
Praktični razlozi[uredi | uredi izvor]
Softverska konstrukcija je vođena od strane mnogih praktičnih razloga:
Građevinski dizajn[uredi | uredi izvor]
Da bi se uzele u obzir za nepredviđene praznine u dizajnu softvera, u toku izgradnje softvera neke modifikacije dizajna moraju biti u manjem ili većem obimu softverskog dizajna. [1]
Građevinski jezici[uredi | uredi izvor]
Građevinski jezici uključuju sve oblike komunikacije kojima čovek može da navede izvršenje rešenja problema za računarom. Oni uključuju konfiguraciju jezika, alat jezika i programske jezike: [1]
- Konfiguracijski jezici su jezici na kojima softverski inženjeri biraju iz ograničenog skupa predefinisanih opcija da stvore nove ili prilagođene softverske instalacije.
- Alatni jezici se koriste za izgradnju aplikacija iz kompleta alata i da su složeniji od konfiguracije jezika.
- Programski jezici su najnapredniji tip građevinskih jezika koji koriste tri vrste opšte notacije:
- Jezičke oznake koje se odlikuju naročito korišćenjem reči poput nizova ili teksta da predstave složene softverske konstrukcije, kao i kombinacija tih reči poput strune u obrascima koje imaju rečenice poput sintakse.
- Formalne oznake koje se oslanjaju manje na intuitivu, svakodnevnim značenjem reči i tekst stringovima i više na definicijama rezervne kopije preciznim, nedvosmislenim i formalnim (ili matematičkim) definicijama.
- Vizuelne oznake koje se manje oslanjaju na tekst-orijentisane notacije i jezičke i formalne izgradnje, i umesto toga se oslanjaju na direktnu vizuelnu interpretaciju i plasman vizuelnih entiteta koji predstavljaju osnovni softver.
Kodiranje[uredi | uredi izvor]
Sledeća razmatranja se odnose na softver za izgradnju aktivnosti kodiranja:[1]
- Tehnike za stvaranje razumljivog izvornog koda, uključujući i imenovanje i raspored izvornog koda
- Korišćenje klasa, nabrojanih tipova, varijabli, konstanti navedenih i drugih sličnih subjekata
- Korišćenje kontrolne strukture
- Rukovanje greškama uslova-planirane greške i izuzeci (unos loših podataka, na primer)
- Prevencija narušavanja sigurnosti kod nivoa (tampon prekoračenja ili indeks niz poplava, na primer)
- Korišćenje resursa preko upotrebe mehanizama isključenosti i discipline u pristupu serijskih, za višekratnu upotrebu, resursa (uključujući tema ili brava baze podataka)
- Organizacija izvornog koda (u izjavama, rutini, klasama, paketima, ili drugim strukturama)
- Kod dokumentacija
Testiranje izgradnje[uredi | uredi izvor]
Svrha testiranja izgradnje je da se smanji jaz između vremena u kojem su greške ubačene u kod i vremena kada su te greške otkrivene. U nekim slučajevima, testiranje izgradnje se vrši nakon ispisivanja koda. U testu prvog programa, test slučajevi su stvoreni pre nego što je kod pisan. Izgradnja obuhvata dva oblika testiranja, koja se često obavljaju od strane softverskog inženjera koji je napisao kod:[1]
Ponovna upotreba[uredi | uredi izvor]
Ronovna implementacija softvera podrazumeva više od stvaranja i korišćenja sredstava biblioteke. To zahteva formalizovanje prakse ponovne upotrebe integracijom ponovne upotrebe procesa i aktivnosti u životnom ciklusu softvera. Zadaci koji se odnose na ponovno korišćenje u funkciji konstrukcije tokom kodiranja i testiranja su:[1]
- Izbor za višekratnu upotrebu jedinica, baze podataka, test procedurama ili test podataka.
- Procena koda ili testa upotrebljivosti.
- Izveštavanje o ponovnom korišćenju informacija o novom kodu, test procedurama ili test podataka.
Kvalitetna gradnja[uredi | uredi izvor]
Primarne tehnike koje se koriste da se obezbedi kvalitet koda kao što je konstruisan uključuju: [1]
- Testiranje jedinica i testiranje integracija
- Prvi razvojni test
- Code stepping
- Korišćenje tvrdnji
- Otklanjanje grešaka
- Tehnički komentari
- Statičke analize (IEEE1028)
Integracija[uredi | uredi izvor]
Ključna aktivnost u toku izgradnje je integracija odvojeno izgrađenih rutina, klasa, komponenata i podsistema. Pored toga, poseban softverski sistem će možda morati da bude integrisan sa drugim softver ili hardver sistemom. Zabrinutost u vezi sa građevinskom integracijom uključuje planiranje redosleda u kojem će biti integrisane komponente, stvarajući skele za podršku privremene verzije softvera, određivanje stepena testiranja i kvaliteta obavljenog posla na komponente pre nego što su integrisane, i određivanje tačke u projektu na kome se privremene verzije softvera testiraju.
Vidi još[uredi | uredi izvor]
- Inženjering softvera
- Razvoj softvera
- Softverski dizajn
- Debagovanje
- Softversko raspoređivanje
- Održavanje softvera
- Analiza zahteva
- Testiranje softvera
- Razvojni ciklus softvera
- Softversko inženjerstvo