Can you summarize the following document?
        
  Proces vývoje softwaru (známý také jako metodika, model nebo životní cyklus vývoje softwaru) je rámec používaný pro strukturování, plánování a řízení procesu vývoje informačních systémů. V průběhu let bylo vyvinuto množství metodik, z nichž každá má své silné a slabé stránky. Existuje více přístupů k vývoji softwaru. Některé využívají strukturovanější přístup pro vývoj obchodních řešení, zatímco jiné využívají spíše inkrementální přístup, při kterém je software vyvíjen postupně po částech. Žádná metodika vývoje softwaru nemusí být vhodná pro použití ve všech druzích projektů. Každá z dostupných metodik se hodí pro určitý druh projektů podle technických, organizačních, projektových a týmových kritérií a hledisek.  Většina metodologií sdílí nějaké kombinace následujících fází vývoje softwaru:  Tyto fáze se často souhrnně označují jako životní cyklus vývoje softwaru nebo SDLC. Různé přístupy k vývoji softwaru mohou provádět tyto fáze v různém pořadí a věnovat různým fázím více nebo méně času. Také podrobnost dokumentace vytvářené v každé fázi vývoje softwaru se mění. Tyto fáze mohou být také prováděny postupně (u postupů vycházejících z „vodopádového“ přístupu) nebo mohou být opakovány v různých cyklech nebo iteracích (u „extrémnějších“ postupů). Extrémnější postupy obvykle tráví méně času na plánování a dokumentaci a více času na kódování a vývoj automatizovaných testů. „Extrémnější“ přístupy také prosazují průběžné testování v celém vývojovém životním cyklu, a vždy mají fungující produkt. Postupy strukturovanější nebo založené na na „vodopádovém modelu“ se pokoušejí posoudit většinu rizik a vytvořit podrobný plán softwaru před zahájením implementace (kódování) a vyhýbat se rozsáhlým změnám návrhu a opakovanému kódování v pozdějších fázích plánování životního cyklu vývoje softwaru.  Různé metodologie mají významné výhody a nevýhody a nejlepší přístup k řešení problému pomocí softwaru bude často záviset na typu problému. Pokud je problém dobře pochopen a řešení lze efektivně předem naplánovat, klasický „vodopádový přístup“ může fungovat nejlépe. Pokud je naopak problém jednoznačný (alespoň pro vývojový tým) a strukturu softwarového řešení si nelze snadno představit, pak „extrémnější“ inkrementální přístup může fungovat nejlépe.
Vývoj softwaru je proces koncipování, popisu, specifikace, návrhu, programování, dokumentace, testování a oprav chyb používaný při vytváření a údržbě aplikací, frameworků a jiných softwarových komponent. Jádrem vývoje softwaru je „programování“ – proces vytváření a údržby zdrojových kódů, ale v širším smyslu zahrnuje vše, co se používá od návrhu koncepce požadovaného softwaru až po jeho konečné nasazení, obvykle v plánovaném a strukturovaném procesu. Vývoj softwaru tak může zahrnovat výzkum, nový vývoj, prototypování, úpravy, znovupoužití, re-engineering, údržbu a všechny další činnosti, které přispívají k vytvoření softwarového produktu.