Základní modely životního cyklu software, softwarový proces, metodika. 
Wednesday, May 29, 2013
4:49 PM
Základní modely životního cyklu software, softwarový proces, metodika.
Metodika
Konkrétní proces, má stanovené fáze, milníky, artefakty…
Základní modely životního cyklu software
Životní cyklus = proces od zahájení vývoje až po vyřazení z provozu
Sekvenční -> velký třesk
Waterfall = vodopádový model, fáze jdou postupně od inception, elaboration, implementation, transition. Na konci je tzv. velký třesk, předání zákazníkovi – může dopadnout špatně, výsledek se nemusí shodovat s tím, co zákazník chtěl
Cyklický -> přírůstky/evoluce
Agilní -> Evoluce
Pracuje se postupně v iteracích, na konci každé iterace je funkční produkt, jednotlivé iterace jsou jako samostatné malé projekty, které sestávají z několika fází
RUP – rational unified proces – od IBM, je to Framework, složitá implementace, častou chybou je, že se společnost rozhodne implementovat ten Framework celý – to je ale šatně, společnost by si měla vybrat jen to, co se jí hodí
OpenUP – částečně postaven na RUP, bere si z něj ale jen to nejnutnější pro vývoj software, je open source, distribuce formou wiki
SCRUM – daily standups, sprinty (30 dní), iterativní a inkrementální, plánuje jen následující iteraci, není předem jisté kdy projekt skončí
Softwarový proces
Softwarový process je systematická série aktivit, artefaktů a souvisejících rolí vedoucí k vyšší pravděpodobnosti úspěšného dokončení výroby software.
Výsledek = kvalitní software
Aktivity (Technické – modelování, programování, nasazení…, Komunikační – analýza, specifikace, …)
Artefakty (Dokument specifikace, Test protocol…)
Role (Technické = analytik, team leader, developer, architect…, Manažerské = CEO, CIO…, Podpůrné = poradce, lektor…)
Řízené plánem – RUP
Řízené riziky – prototypování
Řízené změnou – SCRUM
Proces – systematická série akcí vedoucí k určitému výsledku
Životní cyklus (meta proces?) – proces od zahájení vývoje až po vyřazení z provozu
Metodika
definovaný proces pro konkrétní účel, tj. fáze, aktivity, role, artefakty, milníky atd. jsou dobře popsány (z přednášky)
souhrn doporučených praktik a postupů, pokrývajících celý životní cyklus vytvářené aplikace
Z <[link]> 
Booch method
SSADM
Rational Unified Process
SCRUM
UML není metodika!
Softwarový proces
systematická série fází a aktivit, souvisejících rolí a artefaktů vedoucí k vyšší pravděpodobnosti úspěšného vytvoření potřebného software.
Výsledek = kvalitní software
Členění: fáze, aktivity
Technické aktivity: komunikace, plánování, modelování, konstrukce, nasazení
Podpůrné aktivity: řízení, kontrola kvality, správa konfigurace, dokumentace
Mezivýsledky: artefakty
Technické: specifikace, dokumentace, testy, modely, ...
Komunikační: specifikace, plán
Obchodní: plán, rozpočet, produkt
Činitelé: role
Technické role: analytik, architekt, vývojář, tester, databázista, ...
Manažerské role: team leader, šéf vývojářů, šéf projektů, CEO, CIO, ...
Podpůrné role: poradce, lektor, uživ. podpora, dokumentace, ...
Varianty SW procesu (modely životního cyklu software):
Varianty a příklady procesů:
Společná snaha = snížení rizika chaotického postupu
Řízené plánem (sledovat plán – hra na jistotu)
Vodopád, V-model
Kontext neměnný, zadání a technologie zřejmé, rozsah malý
Řízené riziky (omezovat rizika)
Průzkumník/prototypování, Spirálový model
Kontext zřejmý, zadání a/nebo technologie nejasné
Řízené změnou (adaptace na změnu)
Iterativní – RUP, agilní – SCRUM
Kontext proměnlivý, zadání a/nebo technologie nejasné
Základní modely životního cyklu
Sekvenční - velký třesk (vztažené na celý produkt, naplánované pro celý projekt, oddělené meziprodukty)
Cyklický - opakování technických aktivit, přírůstky (roste znalost, funkcionalita, kvalita, …)
RUP

Inkrementální (přírůstek je nějaká část (funkcionalita) produktu, produkt je funkční až na konci vývoje)
Iterativní (na konci každé iterace je funkční produkt, např. Na počátku jen se základní funkcionalitou, ale v dalších iteracích se funkcionalita postupně rozšiřuje)
Agilní - evoluce
SCRUM

Důraz na manifest:
Jednotlivci a interakce před procesy a nástroji
Fungující software před vyčerpávající dokumentací
Spolupráce se zákazníkem před vyjednáváním o smlouvě
Reagování na změny před dodržováním plánu
Agile vs Iterative vs Spiral 
Agile Methods are a family of techniques that includes iterative development. Spiral is a type of iterative method that extends Waterfall methods. Spiral tends to be associated with longer iterations and normally involves a full development life cycle including extensive analysis and documentation. 
The modern concept of Agile developed from the Agile Manifesto. Various practitioners from different software disciplines came together to articulate a common set of principles. These ideas incorporated concepts developed from extreme programming, unified process, scrum, test driven development, iterative programming, pair programming, continuous build, and others. To some degree, all of these so-called "practices" assist in the implementation of an Agile method. Every Agile project is somewhat different based on the composition of the team and the familiarity with the various practices used to build software.
Iterative development is a concept that can be applied across the continuum of methodologies ranging from extreme Agile to extreme Waterfall. Iterative development is characterized by the completion of a working system within a subset of time for the whole project and the repeated refinement of the working system based on cycles of development. In extreme programming iterations tend to be short, i.e. one to three weeks. Scrum based development methods advocate longer cycles of 2 to 6 weeks. Spiral development methods may have much longer iterations lasting several months. 
Whether or not an iteration can be categorized as "agile" or "spiral" depends on the components of the iteration. The extreme agile iteration has little or no documentation, has many tests, and has a quick cycle. It may focus on one area of the overall system. A spiral iteration generally incorporates a complete development life cycle including analysis, planning, implementation, testing, and delivery.
From <[link]> 
From <[link]> 
From <[link]> #