Какъв е жизненият цикъл на софтуерното разработване (Software Development Life Cycle SDLC)?

+11 гласа
4,433 прегледа
попитан 2016 август 25 от Cvetomira.Peneva (300 точки)
Здравейте,

Нова съм в QA-ството и не съм много добра по английски език. Уча двете паралелно, но може ли някой подробно да обясни какъв е този жизнен цикъл на софтуерното разработване - нещо свързано с методологии е, но не го разбрах напълно.

Благодаря предварително!

2 отговори

+2 гласа
отговорени 2016 август 25 от Daniel Ivanov (11,160 точки)
избран 2016 август 27 от Cvetomira.Peneva
 
Най-добър отговор

Здравей,Цвети,

RoYaL много добре е обяснил/а какво представлява SDLC, но понеже пишеш, че би искала да прочетеш по-подробно, аз реших и да допълня отговора с малко инфо за всяка фаза, с хипервръзки към други въпроси и отговори, които биха ти улеснили процеса на учене. Също така и по някоя дума за това какви модели са водещите, дори само чрез споменаване. Ако искаш можем да направим и отделен въпрос с отговор за самите модели/ методологии (за Agile вече го имаме). Ако има нещо друго, питай :)

Та така, съществуват много на брой и различни подходи на разработване на софтуера и именно те представляват Software Develelopment Life Cycle моделите или на български наречени „ модели на жизнен цикъл на софтуерното разработване“. Примери биха били следните: Waterfall моделът, Incremental (частичният) моделът, Iterative (повтарящият се) модел, RA или Rapid Application model (модел на бързото прилагане), Agile моделът, Spiral (спираловидния) модел, Prototype model (прототипният модел) и др. Всички те следват един жизнен цикъл с цел осигуряване успех в сферата на софтуерния девелъпмънт.

 Моделите на софтуерния жизнен цикъл характеризират фазите на софтуерния цикъл и реда, в който тези фази се изпълняват. Всеки етап снабдява следващият го с нужните резултати в жизнения цикъл. Ето ги и тях:

  1. Събиране на изиксванията и анализ (Requirements gathering and analysis).
  2. Дизайн (Design).
  3. Имплементация или кодиране (Implementation or coding).
  4. Тестване (Testing).
  5. Прилагане (Deployment).
  6. Поддръжка (Maintenance).

Започваме ги подред:

1. Събиране на изиксванията и анализ: По времето на този етап бизнес изиксванията се събират. Главно фокусирани върху този етап са заинтересованите страни или т.н. стейкхолдърите и проектните мениджъри (project managers). Срещите с мениджърите, стейкхолдърите и потребителите се правят с цел определяне на изискванията, например :

 Кой ще използва системата? Как ще я използват? Каква информация ще трябва да бъде сложена в системата? Какво ще трябва да извежда тя? Това са главните въпроси, на които се намират отговори по времето на тази фаза. След като изикванията са събрани, биват анализирани – да се провери валидността им.

И накрая се изготвя документът за спецификация на изиксванията (requirement specification document), който играе ролята на ръководен принцип за следващия етап от модела.

2.Дизайн: В този етап системния и софтуерния дизайн се изготвят от събирането на изиксванията и анализ (предния етап). Системния дизайн спомага в определянето на хардуерните и системните изиксвания, като също така помага в дефинирането на цялостната системна архитектура. Спецификациите на системният дизайн играят ролята на входяща информация (input) за следващия етап на модела.

По времето на този етап тестърите измислят тестинг стратегията си – мисли се по въпросите какво да се тества и как да се тества.

3.Имплементация или кодиране: При получаването на документите за системния дизайн, работата се разделя на модули/ юнити и истинското кодиране започва. Тъй като фокусът е обърнат към кодирането, това е най-важният етап за разработчиците. Това е най- дългият етап в жизненият цикъл за разработване на софтуер.

4.Тестване: След като е на лице кодът, той бива тестван дали отговаря на изиксванията и така бива определян софтуера дали отговаря на нуждите на потребителите. По време на този етап всички видове функционално тестване като unit testing, integration testing, system testing, acceptance testing се правят, също така и не-функнционалното тестване се прави.

5.Приложение: След успешно тестване продуктът се пуска или deploy-ва на потребителите да го използват.

Веднага щом бъде пуснат се прави beta testing (това е първото нещо, което се прави). Ако има нужда от промени или ако са хванати някакви бъгове, те биват репортвани до инженерния екип. Щом всичко бъде оправено, последния или финалния deployment бива извършен.

6.Поддръжка: Щом приложението/ софтуера е готов и пуснат на пазара шансът от други проблеми го има и ако има бъгове или проблеми, те трябва да бъдат оправени чрез пачове или хотфиксове. Самият процес на поддържане на готовия софтуер се нарича поддръжка.

Това е

+2 гласа
отговорени 2016 август 25 от RoYaL (400 точки)
Здравей,

Това е общото понятие за фазите, през които минава едно софтуерно приложение от неговия зародиш до естествения му залез. Със или без методология на работа, софтуерните приложения минават по естествен път през фази, като идея, разработка и поддръжка.

Дори и когато софтуерната разработка не е била до такава степен превърната в професия, приложенията все пак са минавали през някакви фази.

Например някой (или група хора) се сеща колко полезно би било да има програмка с която да навигира по-лесно по файловата система, вместо постоянно да пише команди в терминала за навигация. Тази фаза ще наречем "Идея".

Човекът (или хората) не сядат веднага пред текстов редактор, а обмислят как би могло това да се реализира, евентуално какви инструменти ще са им необходими в допълнение от това, което знаят и могат и какво точно искат да постигнат.  Нека тази фаза наречем "Анализ".

След което пристъпват вече към създаването на приложението, като са събрали нужните изисквания за това. Тази фаза ще наречем "Разработка" или "Имплементация".

Веднъж когато тази фаза приключи, приложението стига крайният потребител. След време обаче нещо налага промяна - било то пазарните условия (например появява се нуждата от навигиране измежду дяловете на файловата система (C, D...)), било то генерирано от клиентите (запитване към собствениците дали не може да се вкара навигиране с мишката, вместо с клавиатурата) или идея на самите собственици.

Когато тази промяна се наложи, жизнененият цикъл се завърта, генерира се нова идея, анализират се изискванията, разработва се новостта.

Съвременните методологии ясно поставят кои са фазите на разработка на софтуер и всяка от тези фази е ясно документирана, планирана и с представа как и кога се изпълнява, включва различни хора и звена. За инжинерът по осигуряване на качеството е важно да е наясно с жизненият цикъл на разработката на софтуера, за да може да се включи в различните фази, през които минава даден софтуер, което допринася за осигуряването на максимално качество и елеминирането на проблеми от най-високо до най-ниско ниво. Тъй като проблеми могат да възникнат както в самото приложение, така и в неправилно поставена среда за разработка, грешно поставени спецификации, различния в системните изисквания, различия в средите за деплоймънт, билдове, потребителски маси и т.н.
коментиран 2016 август 27 от rm (1,220 точки)
Аз бих препоръчал стадият "Разработка" да не се извършва от раз, а да се раздели на два стадия: "Скициране" и "Изпипване". При скицирането нещата трябва да тръгнат по възможно най-бързия начин и да се изчистят най-фрапиращите проблеми. При този стадий може да се ползват и неща, които после ще се махнат в крайния продукт. При осъществяването на "изпипването" вече ще се прави процес който ще е нещо междинно между програмиране и анализ на програмираното.

Това което казвам е само предложение. Почти никой не програмира така. Винаги се започва с правенето на крайният продукт като нещата се лепят както падне. След това започва дълъг процес по отстраняване на огромно количество бъгове.

Това да анализираш не само проблема, но и начина на реализиране на програмата, начина на формиране на структурите, изчисляване (макар и грубо) на ефективността, начина как нещата да подлежат на лесни бъдещи доработки - това си е определено хубаво, но не е за всеки да го прави.
...