Конструкција на софтвер

**Конструкцијата на софтвер** е дисциплина на софтверското инженерство. Претставува детално создавање на замислен софтвер, со комбинација на кодирање, верификација, испробување на единките и дебагирање. Поврзано е со сите останати дисциплини на софтверското инженерство, но најмногу е поврзано со софтверскиот дизајн и испробувањето на програмска опремаот.

## Основи на конструирањето на софтвер
Основите  на конструирањето на софтвер вклучуваат:
### Намалување на сложеноста
Главен проблем кај луѓето се нивните ограничени можности за извршување на сложени задачи и помнење на информации при работа, особено на долг период. Па според ова, при развивањето  на производот се оди да се намали неговата сложеност колку што е можно помалку.

Помала сложеност се добива доколку  се стави повеќе акцент на создавање на код кој е едноставен и читлив, него паметен. Минимизирањето на комплексноста се постигнува со стандарди, како и преку  многубројни специфични техники. Исто така може да се постигне и со техники кои се фокусирани на конструкцијата.

### Предвидување на промени
Со тек на времето поголем дел од софтверот  ќе претрпи измени, па според тоа предвидувањето на промени  во голема мера би влијаело за лесно и брзо да се изврши промената. Предвидувањето на промени е поддржано од многу техники како:
* **Методите за комуникација** (на пример стандардите за форматот и содржината на документите)
* **[[Програмски јазици|Програмските јазици]]** (стандарди за програмскиот јазик)
* **Платформ**а (на пример стандарди за програмски интерфејс за повици на оперативниот систем)
* Алатки (Шематски стандарди за нотирање како UML (Унифициран јазик за моделирање)

### Верификација при констукција
Верификацијата при конструкција значи создавање на софтверот на таков начин што недостатоците веднаш ќе бидат откривани од страна на програмерите, на сличен начин како што тоа се прави од стана на тимот за испробување. Специфичните техники што ја поддржуваат верификацијата при конструкција ги вклучуваат следните стандарди за кодирање: преглед на код, испробување на единките, уредување на кодот со цел да се овозможи автоматско испробување, избегнување на користење на сложени или тешко разбирливи програмски структури.

### Стандарди при констуирањето
Стандардите коишто директно влијаат на конструкцијата вклучуваат:
***Користење на надворешни стандарди**: Стандардите за јазиците за конструкција, алатките, технички интерфејси, како и интеракција на конструкцијата на софтвер со другите дисциплини.
***Користење на внатрешни стандарди**: Овие стандарди може да бидат дефинирани од страна на тимовите со цел да има подобра координација меѓу нив.

## Раководење со конструкцијата
### Конструкциски модели
Голем број на модели се создадени за развивање на софтвер, некои од нив ставаат повеќе акцент на конструкцијата, за разлика од другите. Во поглед на конструкцијата некои од нив се по линеарни, како што се водопадниот и моделите кои испорачуваат по етапи (англиски: staged-delivery life cycle models. Кај ваквите модели со конструкција се почнува откако другите работи ќе бидат завршени како барањата, дизајнот и планирањето. Останатите модели се повеќе итеративни, како прототип моделот и Скрам моделот и имаат тенденција, конструкцијата  на софтверот како дел од развојната фаза на процесот, да биде истовремено со другите активности како што се: барањата, дизајнот и планирањето.

### Планирање на конструкцијата
Значаен дел кај планирањето на конструкцијата е изборот на конструкциски модел. Изборот на моделот влијае на тоа како задачите ќе бидат исполнувани, каков ќе биде нивниот редослед на извршување, како и нивото до кое тие ќе бидат завршувани пред да почне конструкцијата. Планирањето на конструкцијата исто така го дефинира и редоследот по кои компонентите ќе бидат создадени и интегрирани, процесите за управување со софтверски квалитет, распределба на задачите на софтверските инженери и останатите задачи во зависност од моделот кој е избран.

### Следење на конструкцијата
Скоро секоја активност може да се следи и да се види колку има сработено. Такви активности се: пишување на кодот, негово изменување, негово повторно користење, неговата комплексност, статистика за пронаоѓањето и поправањето на грешките. Ваквите следења се корисни за понатамошното планирање на конструкцијата, се подобрува конструкцискиот модел, се обезбедува квалитет како и друго.

## Практични размислувања
Конструкцијата на софтвер е водена од многу практични размислувања:
### Конструкциски дизајн
Во текот на конструкцијата се наоѓаат некои празнини во софтверскиот дизајн, па поради тоа потребно е да се направат помали или поголеми промени кај дизајнот.
### Конструкциски јазици
Конструкциските јазици ги вклучуваат сите форми на комуникација, со кои човекот може го специфицира решението на некој проблем. Во нив спаѓаат конфигурациските јазици, алатки  и програмските јазици.

**Конфигурациските јазици** – се оние јазици со кој на софтверските инженери одбираат од конечно множество на претходно дефинирани опции за создавање на софтвер за инсталација.

**Алатки** – се користат за градење на апликации и се посложени од конфигурациските јазици.
Програмските јазици се најфлексибилни од конструкциските јазици. Тие користат три генерални типови на нотации:

*Јазични нотации 
*Формални нотации
*Визуелни нотации

### Кодирање
Во оваа активност спаѓаат:
*Техники за пишување на разбирлив изворен код, вклучувајќи имиња и среден код.
*Користење на класи, енумерирани типови, променливи, имиња на константи и слично.
*Користење на контролни структури
*Справување со грешки – планирани грешки и исклучоци (на пример внесување на различен тип на податок од предвидениот)
*Организирање на изворниот код (во искази, наредби, процедури, класи, функции)
*Документирање на кодот

### Испробување при конструкција
Целта на тоа да се врши испробување при конструкцијата е да се намали колку што може бројот на недостатоци уште пред почетокот на фазата испробување. Во некои случаи испробувањето при конструкција се прави откако кодирањето ќе биде завршено, додека пак во други се прават тест случаи пред кодот да биде напишан.  Конструкцијата вклучува две форми на испробување, коишто често се користат од стана на програмерите. Тие форми се:
*Испробување на единката (испробување на компонентите)
*Интеграциско испробување

### Реискористување на софтвер
Реискористувањето на софтверот претставува  искористување на веќе постоечки софтвер или софтверско знаење, за да се изгради нов софтвер. При реискористувањето на софтвер за време на кодирање или испробување треба да се извршат следните задачи:

- Селектирање на компонентите што можат да се реискористат, база на податоци, тест процедури или тест податоци.
- Проценување на кодот или тестот што може да се рескористи.
- Соопштување на информациите за реискористувањето кај новиот код, тест процедурите или тест податоците.

### Квалитет на конструкцијата
Постојат неколку основни техники за проверка на квалитетот на кодот кај конструкцијата, тоа се:

*Испробувањето на единката и интеграциското испробување
*Развој на софтвер воден од испробување
*Користење на предикати
*Дебагирање
*Технички испитување
*Статичка анализа на кодот

## Интеграција
Клучен дел кај конструкцијата е интеграција на одделни процедури, функции, класи, компоненти и подсистеми.  Исто така секој софтверски систем може да биде интегриран со друг софтверски или хардверски систем. При тоа се планира по кој редослед компонентите ќе бидат интегрирани, одделно ќе бидат оценувани како и за тоа од кои софтверски верзии се поддржани.

## Наводи

Категорија:Изработка на програмска опрема