Софтверска конструкција
Развојни циклус софтвера |
---|
Делатност |
Парадигме и модели |
Методологије и оквири |
Подршка дисциплине |
Алати |
Стандарди и књиге |
Софтверска конструкција је дисциплина софтверског инжењеринга. То је детаљно стварање радног смисленог софтвера кроз комбинацију кодирања, верификације, тестирање јединице, тестирање интеграција, и отклањање грешака. То је повезано са свим осталим софтверским инжењерским дисциплинама, најоштрије дизајн софтвера и тестирање софтвера.[1]
Основе софтверске конструкције
[уреди | уреди извор]Минимизирање комплексности
[уреди | уреди извор]Смањена комплексност се остварује кроз истицање стварања кода који је једноставан и читљив а не само паметан. Минимизирање комплексности је остварено кроз коришћење стандарда, као и кроз бројне специфичне технике у кодирању. Такође је подржан од стране техника квалитетне фокусиране градње .[1]
Очекивана промена
[уреди | уреди извор]Очекивана промена је подржана од стране многих специфичних техника кодирања:[1]
- Комуникационе методе: као што су стандарди за формате и садржаје докумената.
- Програмски језик
- Платформе
- Алати: Као дијаграм стандарда за ознаке као што је UML.
Изградња за верификацију
[уреди | уреди извор]Изградња за верификацију значи изградња софтвера на такав начин да грешке могу бити избачене лако од софтверских инжењера писањем софтвера, као и током независног тестирања и оперативних активности. Специфичне технике које подржавају изградњу за верификацију укључују следеће стандарде кодирања да подрже код мишљења, јединицу за тестирање, организовање кода за подршку аутоматског тестирања, и ограничено коришћење сложених или тешко разумних језичких структура, између осталог. .[1]
Стандарди у изградњи
[уреди | уреди извор]Стандарди који директно утичу на грађевинска питања укључују:[1]
- Коришћење екстерних стандарда: стандардима за изградњу језика, алате за конструкцију, техничке интерфејсе и интеракције између изградње софтвера и других дисциплина.
- Коришћење интерних стандарда: стандарди којима се могу креирати на организационом нивоу да подржи координације групне активности,минимизирање сложености, очекујући промену, и изградњу за верификацију.
Управљање изградњом
[уреди | уреди извор]Грађевински модели
[уреди | уреди извор]Бројни модели су створени за развој софтвера, од којих неки наглашавају изградњу више од других. Неки модели су линеарни од тачке гледишта изградње , као водопад и организован-испоручен модел животног циклуса. Ови модели третирају конструкцију као активност која се јавља тек након када је значајни предуслов посла завршен укључујући ближе услове рада, опсежног пројектовања и детаљног планирања. Остали модели су учестали, као што су еволутивни прототипови, екстремно програмирање, и Скрам. Ови приступи теже да третирају конструкцију као активност која се јавља истовремено са другим развојним софтверским активности, укључујући и захтеве, дизајн и планирање, или да се преклапају.[1]
Грађевинско планирање
[уреди | уреди извор]Избор грађевинског метода је кључни аспект планирања изградње активности. Избор грађевинског метода утиче на степен у којем се обављају грађевински предуслови, редослед којим се врше, и степен до којег се очекује да буде завршен пре почетка грађевинских радова. Грађевинско планирање такође дефинише редослед којим су компоненте креиране и интегрисане, процес управљања квалитета софтвера, расподела радних задатака за специфичне софтверске инжењере, као и друге послове, у складу са изабраном методом.[1]
Грађевинско мерење
[уреди | уреди извор]Бројни грађевински радови и предмети могу се мерити, укључујући развијени код, модификован код , код за поновну употребу, уништени код, комплексност кода, код инспекцијске статистике, цене фиксних грешака и нађених грешака, напор и заказивање. Ове мере могу бити корисне за потребе управљања изградњом, осигуравање квалитета у току изградње, побољшање процеса изградње, као и из других разлога.[1]
Практични разлози
[уреди | уреди извор]Софтверска конструкција је вођена од стране многих практичних разлога:
Грађевински дизајн
[уреди | уреди извор]Да би се узеле у обзир за непредвиђене празнине у дизајну софтвера, у току изградње софтвера неке модификације дизајна морају бити у мањем или већем обиму софтверског дизајна. [1]
Грађевински језици
[уреди | уреди извор]Грађевински језици укључују све облике комуникације којима човек може да наведе извршење решења проблема за рачунаром. Они укључују конфигурацију језика, алат језика и програмске језике: [1]
- Конфигурацијски језици су језици на којима софтверски инжењери бирају из ограниченог скупа предефинисаних опција да створе нове или прилагођене софтверске инсталације.
- Алатни језици се користе за изградњу апликација из комплета алата и да су сложенији од конфигурације језика.
- Програмски језици су најнапреднији тип грађевинских језика који користе три врсте опште нотације:
- Језичке ознаке које се одликују нарочито коришћењем речи попут низова или текста да представе сложене софтверске конструкције, као и комбинација тих речи попут струне у обрасцима које имају реченице попут синтаксе.
- Формалне ознаке које се ослањају мање на интуитиву, свакодневним значењем речи и текст стринговима и више на дефиницијама резервне копије прецизним, недвосмисленим и формалним (или математичким) дефиницијама.
- Визуелне ознаке које се мање ослањају на текст-оријентисане нотације и језичке и формалне изградње, и уместо тога се ослањају на директну визуелну интерпретацију и пласман визуелних ентитета који представљају основни софтвер.
Кодирање
[уреди | уреди извор]Следећа разматрања се односе на софтвер за изградњу активности кодирања:[1]
- Технике за стварање разумљивог изворног кода, укључујући и именовање и распоред изворног кода
- Коришћење класа, набројаних типова, варијабли, константи наведених и других сличних субјеката
- Коришћење контролне структуре
- Руковање грешкама услова-планиране грешке и изузеци (унос лоших података, на пример)
- Превенција нарушавања сигурности код нивоа (тампон прекорачења или индекс низ поплава, на пример)
- Коришћење ресурса преко употребе механизама искључености и дисциплине у приступу серијских, за вишекратну употребу, ресурса (укључујући тема или брава базе података)
- Организација изворног кода (у изјавама, рутини, класама, пакетима, или другим структурама)
- Код документација
Тестирање изградње
[уреди | уреди извор]Сврха тестирања изградње је да се смањи јаз између времена у којем су грешке убачене у код и времена када су те грешке откривене. У неким случајевима, тестирање изградње се врши након исписивања кода. У тесту првог програма, тест случајеви су створени пре него што је код писан. Изградња обухвата два облика тестирања, која се често обављају од стране софтверског инжењера који је написао код:[1]
Поновна употреба
[уреди | уреди извор]Роновна iмплементација софтвера подразумева више од стварања и коришћења средстава библиотеке. То захтева формализовање праксе поновне употребе интеграцијом поновне употребе процеса и активности у животном циклусу софтвера. Задаци који се односе на поновно коришћење у функцији конструкције током кодирања и тестирања су:[1]
- Избор за вишекратну употребу јединица, базе података, тест процедурама или тест података.
- Процена кода или теста употребљивости.
- Извештавање о поновном коришћењу информација о новом коду, тест процедурама или тест података.
Квалитетна градња
[уреди | уреди извор]Примарне технике које се користе да се обезбеди квалитет кода као што је конструисан укључују: [1]
- Тестирање јединица и тестирање интеграција
- Први развојни тест
- Code stepping
- Коришћење тврдњи
- Отклањање грешака
- Технички коментари
- Статичке анализе (IEEE1028)
Интеграција
[уреди | уреди извор]Кључна активност у току изградње је интеграција одвојено изграђених рутина, класа, компонената и подсистема. Поред тога, посебан софтверски систем ће можда морати да буде интегрисан са другим софтвер или хардвер системом. Забринутост у вези са грађевинском интеграцијом укључује планирање редоследа у којем ће бити интегрисане компоненте, стварајући скеле за подршку привремене верзије софтвера, одређивање степена тестирања и квалитета обављеног посла на компоненте пре него што су интегрисане, и одређивање тачке у пројекту на коме се привремене верзије софтвера тестирају.
Види још
[уреди | уреди извор]- Инжењеринг софтвера
- Развој софтвера
- Софтверски дизајн
- Дебаговање
- Софтверско распоређивање
- Одржавање софтвера
- Анализа захтева
- Тестирање софтвера
- Развојни циклус софтвера
- Софтверско инжењерство