Разработка на софтуер: Разлика между версии

частична корекция машинен превод, препратки към статии на български
(→‎Методологии: без препратки към англ.)
(частична корекция машинен превод, препратки към статии на български)
{{обработка|коригиране на машинен превод}}
'''Разработката на софтуер''' (среща се и като '''разработка на приложения''', '''софтуерен дизайн''', '''проектиране на софтуер''', '''разработване на приложен софтуер''') е разработването на [[софтуер]]ен продукт съобразен с нуждите на дадена целева група или маркетинга на един софтуерен продукт. Терминът „разработка на софтуер“ може да се използва, за да опише [[програмиране|компютърното програмиране]], което е процес на писане и поддържане на [[сорс код]], но в по-широк смисъл на понятието се включва всичко – от концепцията на желания софтуер до крайната проява на софтуера, което в идеалния случай е планиран и структуриран процес. Следователно, разработката на софтуер може да включва [[изследвания]], нови разработки, прототипиране, модификация, повторно използване, ре-инженеринг, поддръжка, или всякакви други дейности, чийто краен резултат е софтуерният продукт.
 
[[Софтуер]] може да бъде разработен по множество от причини. Трите най-общи са да отговаря на конкретните нужди на клиент/фирма ([[:{{lang-en:|custom software|custom software]]}}), да отговаря на възприетите нужди на група от потенциални потребители (рекламен и [[:en:openсофтуер sourceс software|openотворен source softwareкод]]) или за лична употреба (например някой учен може да напише програма за автоматизиране на сложни задачи). ВграденатаПонякога разработка на софтуерсе еналага разработката на вграден софтуер. Например, аконапример е използван софтуер за контрол на консуматорските продукти,когато се изисква процесът на разработка да бъде интегриран с разработката на контролиран физически продукт. [[Системен софтуер|Системният софтуер]] засяга апликацииприложните програми и самия процес на [[програмиране]], поради което често се разработва отделно.
 
Нуждата от по-добро качество на процеса на софтуерна разработка води до началото на [[Софтуерно инженерство|софтуерното инженерство]], което се стреми да приложи систематичния подход, илюстриран в инженерната парадигма, към разработката на софтуер.
 
Съществуват много подходи към управлението на софтуерниясофтуерни проектпроекти, известни като циклични модели в живота на софтуерната разработка, методологии, процеси или модели. Моделът„Моделът на [[:водопада“ {{lang-en:Waterfall_model|waterfall]]}} е стандартнатрадиционният версияподход, контрастиращаа нат.нар. по-скоро[[гъвкава иновиранатаметодология]] {{lang-en|agile}} разработка на софтуер е по-модерен подход.
 
== Методологии ==
Софтуерната методология при разработката на [[софтуер]] (още известна още като процес на разработка на софтуер, модел или цикъл от живота) е рамка, която се използва за структуриране, планиране и контролиране процеса на разработка на [[информационни системи]]. През годините са еволюирали много разновидности на такива платформи, всяка със своите отличителни предимства и недостатъци. Има няколко различни подхода в разработката на софтуер: някои използват по-структуриран, инженерен подход за разработка на бизнес решения, докато други могат да приематвъзприемат по-частични подходи, къдетокато софтуерът се развива на части в процеса на разработка. Една системна методология на разработка на софтуер не винаги е подходяща за всички проекти. Всяка от възможните методологии е най-подходяща за определен тип проекти, в зависимост от различните технически, организационни, проектни и екипни спецификации.
 
Повечето методологии споделят някои от следните комбинации в разработката на софтуер:
* Внедряване
* Поддръжка и оправяне на [[бъг]]ове
Тези етапи често се свързват с цикъла на живот на софтуерната разработка. Различните подходи в разработката на софтуер  ги използват в различна последователност или посвещават повече, или по-малко време на някои от тях. Детайлите в документацията на всеки етап също може да варират. Посочените етапи могат да се свържат с подхода на „водопада“ или може да бъдат повтаряни в различни цикли (малко „по-екстремен“ подход). По-екстремният подход обикновено включва по-малко отделено време вза планиранетопланиране и документиранетодокументиране, но повече време в писанетописане на програмен код и разработкатаразработка на автоматизирани тестове. По-екстремните подходи също предлагат също непрекъснато тестване по време на живота на разработка, както и работещ (или без бъгове) продукт през цялото време. По-структурираните или подходи на „водопада“ се стремят да бъдатоценяват преценени повечето рисковерисковете и да серазработят разработидетайлен план в детайли за софтуера, преди писането на програмен код, иза да се избегнат значителни промени в дизайна и програмния код вна по-късен етап от планирането на софтуерната разработка.
 
ТоваКой са значителни предимства и недостатъци за различните методологии ие най-добрият подход в разрешаването на проблем, използвайки софтуер, често зависи от типа на проблема. Ако проблемът е добре разбран и може да бъде планирано решение за дълъг период от време напред, то подходите на „водопада“ често са най-удачни. От друга страна, ако проблемът е уникален (или е такъв поне за екипа от разработчици) и структурата на софтуерното решение не може да бъде лесно визуализирана, то тогава „по-екстремните“, частични подходи биха свършили по-добра работа.
 
== Дейности напо разработката на софтуер ==
=== Спецификация ===
Източниците на идеи за софтуерни продукти са много. Тези идеи могат да дойдат от [[:en:Market_research|пазарнипазарно проучванияпроучване]], включващивключващо [[:en:Demographics|демография]]та на потенциално нови клиенти, съществуващи клиенти, друг вътрешен персонал от разработчици или креативна трета страна. Идеите за софтуерни продукти са първосе оценениоцеяват от [[:en:Marketing|маркетинговмаркетинг]]ов личенспециалист съставпо заотношение на икономическа изпълнимост, както и за съчетаване със съществуващи канали на разпределение, за възможни ефекти върху съществуващи продуктови линии, за нужнинеобходими допълнения и за съчетаване с интересите на компанията. Цената и определеното време се преценятпреценяват във фазата на пазарно оценяване, . РаноСъщо в тази фаза се решава дали проектът трябва да бъде осъществен, в зависимост от по-детайлната информация, предоставена от маркетинговия състав и софтуерните разработчици, се решава  дали проектът трябва да бъде осъществен.
 
Тъй като разработката на софтуер може да включва компромиси или пък да надмине исканията на клиента, софтуерната разработка на един проект може да изостава в нетехнически въпроси, като човешки ресурси, управление на риска, интелектуална собственост, бюджетиране и други. Тези процеси може също да причинят бизнес разработката да се застъпи за софтуерната разработка.
 
=== Планиране ===
Планирането е обект на всяка дейност, когато искаме да открием нещата, от които проектът има нужда. Важна задача в създаването на софтуерна програма е извличането на [[:en:Requirement|изискванията]] и техния анализ. Клиентите обикновено имат обща представа за това, какво искат като краен резултат, но не знаят какво трябва да прави софтуерът. В този етап умели и опитни софтуерни инженери разпознават непълните, двусмислени и понякога противоречиви изисквания.
 
След като основните изисквания са събрани от клиента, започва техния по-задълбочен анализ. Определя се обхвата на разработения продукт като се поставят конкретни задачи на проекта и се изработва съответната документация (scope document).
 
=== Дизайн ===
Когато изискванията се установят, дизайнът на софтуера може също да бъде установен в [[:en:Software_design_document|документ на софтуерен дизайн]] ({{lang-en|Software_design_document}}). Това включва предварителен или дизайн на високо ниво на главните модули с обща картина (например [[:en:Block_diagram|блок-диаграмасхема]]) на това как частите се съчетават частите. [[Език за програмиране|Езикът]], [[Операционна система|операционната система]] и хардуерните компоненти трябва да са ясни до този момент. След товакато е създаден детайлен дизайн или дизайн на ниско ниво е създаден, може бида ссе прототипипристъпи катокъм доказателство за концепцията, или да се потвърдят изискванията с [[прототип]].
<!-- проверено дотук -->
 
=== Имплементация, тестване и документация ===
[[:en:Implementation|Имплементацията]] е процесът, в който софтуерните инженери пишат програмния код на проекта.
 
[[:en:Software testing|Софтуерното тестване]] е интегрална и важна фаза в процеса на софтуерна разработка. Тази част от процеса осигурява разпознаването на дефектите възможно най-рано. В някои процеси, известни като тестово разработване, тестовете може да бъдат разработени преди писането на програмен код и да служат като показател за коректна имплементация.