Processo de So*ware

42
Processo de So*ware Leonardo Gresta Paulino Murta [email protected]ff.br

Transcript of Processo de So*ware

ProcessodeSo*ware

[email protected]

Histórico(erapré-ES)•  1940s:Primeirocomputadoreletrônicodeusogeral–ENIAC–  CustoesLmadodeUS$500.000,00–  Iníciodaprogramaçãodecomputadores

•  1950s:Primeiroscompiladoreseinterpretadores•  1960s:PrimeirograndesoUwarerelatadonaliteratura–OS/360– Maisde1000desenvolvedores–  CustoesLmadodeUS$50.000.000,00porano

•  1968:CrisedosoUware–nasceaEngenhariadeSoUware

Leonardo Murta Processo de Software 2

Histórico(erapós-ES)•  1970s:

–  Lower-CASEtools(programação,depuração,colaboração)–  Ciclodevidacascata–  Desenvolvimentoestruturado

•  1980s:–  Ciclodevidaespiral–  Desenvolvimentoorientadoaobjetos

•  1990s:Upper-CASEtools–  Processos–  Modelagem

•  Atualmente:–  Métodoságeis–  Desenvolvimentodirigidopormodelos–  Linhasdeproduto–  Experimentação

Leonardo Murta Processo de Software 3

ElementosdaES

EngenhariadeSoUware

Ferramentas

Métodos

Processo

Leonardo Murta Processo de Software 4

ElementosdaES•  Processo

– DefineospassosgeraisparaodesenvolvimentoemanutençãodosoUware

– Servecomoumaestruturadeencadeamentodemétodoseferramentas

•  Métodos– Sãoos“howto’s”decomofazerumpassoespecíficodoprocesso

•  Ferramentas– AutomaLzamoprocessoeosmétodos

Leonardo Murta 5 Processo de Software

ElementosdaES•  Cuidadocomo“desenvolvimentoguiadoporferramentas”– Éimportanteusaraferramentacertaparaoproblema

– Oproblemanãodeveseradaptadoparaaferramentadisponível

Leonardo Murta Processo de Software 6

“Para quem tem um martelo, tudo parece prego”

ElementosdaES

1.Coloqueemumapanelafundaoleitecondensado,amargarinaeochocolateempó.

2.Cozinhe[nofogão]emfogomédioemexasempararcomumacolherdepau.

3.Cozinheatéqueobrigadeirocomeceadesgrudardapanela.

4.Deixeesfriarbem,entãounteasmãoscommargarina,façaasbolinhaseenvolva-asemchocolategranulado.

Leonardo Murta Processo de Software 7

http://tudogostoso.uol.com.br/receita/114-brigadeiro.html

O que é processo, método ou

ferramenta?

ElementosdaES

1.Coloqueemumapanelafundaoleitecondensado,amargarinaeochocolateempó.

2.Cozinhe[nofogão]emfogomédioemexasempararcomumacolherdepau.

3.Cozinheatéqueobrigadeirocomeceadesgrudardapanela.

4.Deixeesfriarbem,entãounteasmãoscommargarina,façaasbolinhaseenvolva-asemchocolategranulado.

Leonardo Murta Processo de Software 8

http://tudogostoso.uol.com.br/receita/114-brigadeiro.html

Processo

ferramenta

método

OSupermercadodeES

•  ESforneceumconjuntodemétodosparaproduzirsoUwaredequalidade

•  Pensecomoemumsupermercado...–  Emfunçãodoproblema,seescolheoprocesso,osmétodoseasferramentas

•  Cuidado– Menosdoqueonecessáriopodelevaradesordem

– Maisdoqueonecessáriopodeemperraroprojeto

Leonardo Murta Processo de Software 9

Processosimplícitosxexplícitos•  Lembrem-se:Processossempreexistem,sejadeformaimplícitaouexplícita!– Processosimplícitossãodioceisdeseremseguidos,emespecialpornovatos

– Processosexplícitosestabelecemasregrasdeformaclara

Leonardo Murta Processo de Software 10

Processodequalidade•  ÚlLmapalavraparamediraqualidadedeumprocesso:Sa?sfaçãodoCliente

•  Outrosindicadoresimportantes– Qualidadedosprodutosgerados– Custorealdoprojeto– Duraçãorealdoprojeto

Leonardo Murta Processo de Software 11

Modelosdeciclodevida•  Existemalgunsprocessospré-fabricados

– Essesprocessossãoconhecidoscomomodelosdeciclodevida

– EssesprocessosapresentamcaracterísLcaspredefinidas

•  Devemseradaptadosparaocontextorealdeuso– CaracterísLcasdoprojeto– CaracterísLcasdaequipe– CaracterísLcasdocliente

Leonardo Murta Processo de Software 12

CiclodevidaCascata

Comunicação Planejamento Modelagem Construção Implantação

Leonardo Murta Processo de Software 13

CiclodevidaIncremental

Leonardo Murta Processo de Software 14

Comunicação Planejamento Modelagem Construção Implantação

Comunicação Planejamento Modelagem Construção Implantação

Comunicação Planejamento Modelagem Construção Implantação

...

tempo

func

iona

lidad

es

CiclodevidaRAD

Leonardo Murta Processo de Software 15

Comunicação Planejamento

Modelagem Construção

IntegraçãoeImplantação

...

tempo

Modelagem Construção

Modelagem Construção

ProtoLpação

Comunicação

Planejamentorápido

Modelagemrápida

ConstruçãodeprotóLpo

Implantaçãoefeedback

Leonardo Murta Processo de Software 16

CiclodevidaEspiral

Leonardo Murta Processo de Software 17

Comunicação

Planejamento (análise de riscos)

Modelagem

Construção Implantação

CascataxEvoluLvo

Processo de Software 18

Ciclodevidacascata

Leonardo Murta

CascataxEvoluLvo

Processo de Software 19

CiclodevidaevoluLvo

Leonardo Murta

CascataxEvoluLvo

•  ObjeLvo:ProcessoUnificadocomaspectosde...– DesenvolvimentoiteraLvo– DesenvolvimentoevoluLvo– Desenvolvimentoágil

Processo de Software 20

Ciclo de vida cascata

Ciclo de vida evolutivo

Leonardo Murta

DesenvolvimentoIteraLvo•  Odesenvolvimentoéorganizadoem“mini-projetos”

–  Cada“mini-projeto”éumaiteração–  Cadaiteraçãotemduraçãocurtaefixa(de2a6semanas)–  CadaiteraçãotemaLvidadesdeanálise,projeto,programaçãoetestes

–  OprodutodeumaiteraçãoéumsoUwareparcial

Processo de Software 21

X semanas X semanas X semanas

Software Software Software

...

Leonardo Murta

DesenvolvimentoIteraLvo•  Aiteraçãodeveserfixa

–  Tarefaspodemserremovidasouincluídas–  AiteraçãonuncadevepassardaduraçãopreviamenteesLpulada

•  OresultadodecadaiteraçãoéumsoUware...–  Incompleto–  Emdesenvolvimento(nãopodesercolocadoemprodução)– MasnãoéumprotóLpo!!!

•  EssesoUwarepodeserverificadoevalidadoparcialmente–  Testes–  Usuários

•  Podemsernecessáriasdiversasiterações(e.g.10a15)paraterumaversãodosistemaprontaparaentraremprodução

Processo de Software 22 Leonardo Murta

DesenvolvimentoIteraLvo•  Iteraçõescurtasprivilegiamapropagaçãodeconhecimento

–  AumentodoconhecimentosobreosoUware–  Diminuiçãodasincertezas,quelevamàsmudanças

Processo de Software 23 Leonardo Murta

DesenvolvimentoEvoluLvo•  Asespecificaçõesevoluemacadaiteração

–  Acadaiteração,umapartedosoUwareficapronta–  OconhecimentosobreosoUwareaumenta–  Asespecificaçõessãoevoluídaspararetrataresseaumentode

conhecimentosobreoqueéosoUware

Processo de Software 24 Leonardo Murta

DesenvolvimentoEvoluLvo• MudançassempreacontecememprojetosdesoUware– Requisitosmudam– OambienteemqueosoUwareestáinseridomuda– AspessoasqueoperamosoUwaremudam

•  Estratégiasparalidarcommudanças– Evitarasmudanças(correLvas)fazendousodeboastécnicasdeengenhariadesoUware

– AcolhermudançaspormeiodeumprocessoevoluLvo

Processo de Software 25 Leonardo Murta

DesenvolvimentoÁgil•  Sãodadasrespostasrápidaseflexíveisamudanças

–  OprojetoéreplanejadoconLnuamente–  SãofeitasentregasincrementaiseconstantesdosoUware,refleLndoasmudançassolicitadas

Processo de Software 26 Leonardo Murta

DesenvolvimentoÁgil•  Princípioságeis

–  SaLsfazerocliente–  Acolhermodificaçõesnosrequisitos–  EntregarosoUwarecomfrequência–  Trabalharjuntoaocliente–  ManterosindivíduosmoLvados–  Promoverconversasfaceaface–  MediroprogressocomsoUwarefuncionando–  Manterumritmoconstantedetrabalho–  Cuidardaqualidade–  Buscarporsimplicidade–  Trabalharcomequipesauto-organizadas–  AjustarocomportamentodaequipebuscandomaisefeLvidade

Processo de Software 27 Leonardo Murta

ProcessoUnificado

ProcessoUnificado

Ágil

IteraLvoEvoluLvo

Processo de Software 28 Leonardo Murta

ProcessoUnificado(beneociosesperados)

•  MiLgaçãoderiscosprecoce•  Visibilidadedoprogresso•  EnvolvimentoecompromeLmentodousuário•  Controlesobreacomplexidade•  Aprendizadoincremental•  Menosdefeitos•  MaisproduLvidade

Processo de Software 29 Leonardo Murta

ProcessoUnificado(exemplo)•  Analisarosrequisitosnoiníciodoprojeto

–  Casosdeuso–  Listaderequisitosnãofuncionais

•  Priorizaroscasosdeuso–  SignificaLvosparaaarquiteturacomoumtodo–  Altovalordenegócio–  Altorisco

•  Emcadaiteração–  Selecionaralgunscasosdeusoporordemdeprioridadeparaseremanalisadosem

detalhes–  AtribuirtarefasparaaiteraçãoaparLrdaanálisedetalhadadessescasosdeuso–  FazerprojetoeprogramaçãodepartedosoUware–  TestarapartedosoUwarerecémprojetadaeprogramadaecriarabaselineda

iteração–  Apresentarabaselinedaiteraçãoaousuário

Processo de Software 30 Leonardo Murta

ProcessoUnificado(exemplo)

Processo de Software 31 Leonardo Murta

ProcessoUnificado(fases)•  Odesenvolvimentopodeserdecompostoemfase,comointuitoderetrataraênfaseprincipaldasiterações–  Concepção–  Elaboração–  Construção–  Transição

•  Planodafase– Abrangenteesuperficial

•  Planodaiteração–  Específicoedetalhado

Processo de Software 32 Leonardo Murta

ProcessoUnificado(exemplo)

Processo de Software 33

A?vidade Esforço

Análise 10%

Projeto 15%

Programação 30%

Testes 15%

Gerência 30%

Leonardo Murta

ProcessoUnificado(concepção)•  Consistede

–  IdenLficaçãoderiscos–  Listageminicialdosrequisitos–  Esboçodoscasosdeuso–  IdenLficaçãodearquiteturascandidatas–  EsLmaLvasiniciaisdecronogramaecusto

•  PrincipaiscaracterísLcas–  Menorfasedoprojeto–  Escopoaindavago–  EsLmaLvasaindavagas

•  Esforçoeduraçãoaproximados–  5%doesforçodoprojeto–  10%daduraçãodoprojeto

Processo de Software 34 Leonardo Murta

ProcessoUnificado(elaboração)•  Consistede

– MiLgaçãodosriscos–  Detalhamentodamaioriadosrequisitosecasosdeuso–  EstabelecimentoevalidaçãodaarquiteturadosoUware–  DetalhamentodasesLmaLvasdecronogramaecusto

•  PrincipaiscaracterísLcas–  GrandepartedasaLvidadesdeanáliseeprojetojáconcluída–  DiminuiçãosignificaLvadasincertezas–  Baselinedaarquiteturaéestabelecida

•  Esforçoeduraçãoaproximados–  20%doesforçodoprojeto–  30%daduraçãodoprojeto

Processo de Software 35 Leonardo Murta

ProcessoUnificado(construção)•  Consistede

–  Implementaçãodosdemaiscomponentesdaarquitetura–  Preparaçãoparaaimplantação

•  PrincipaiscaracterísLcas– Maiorfasedoprojeto–  Baselinedetestesdoprodutoéestabelecida

•  Esforçoeduraçãoaproximados–  65%doesforçodoprojeto–  50%daduraçãodoprojeto

Processo de Software 36 Leonardo Murta

ProcessoUnificado(transição)•  Consistede

– Execuçãodetestesfinais–  Implantaçãodoproduto– Treinamentodosusuários

•  PrincipaiscaracterísLcas– Baselinedeliberaçãodoprodutoéestabelecida

•  Esforçoeduraçãoaproximados– 10%doesforçodoprojeto– 10%daduraçãodoprojeto

Processo de Software 37 Leonardo Murta

ProcessoUnificado(caracterísLcas)•  Osrequisitosnãosãocompletamentedefinidosantesdoprojeto

•  Oprojetonãoécompletamentedefinidoantesdaprogramação

•  Amodelagemnãoéfeitadeformacompletaeprecisa

•  Aprogramaçãonãoéumatraduçãomecânicadomodeloparacódigo

•  Asiteraçõesnãodurammeses,massimsemanas•  OplanejamentonãoéespeculaLvo,massimrefinadoduranteoprojeto

Leonardo Murta Processo de Software 38

Exercício•  AnalisecomoseugrupocomooprocessounificadoseráuLlizadonotrabalho– Qualseráaduraçãodeumaiteração?– Oquevocêspretendementregaremcadaiteração?– ComoequandovocêsvãosereunirparaaLngiresseobjeLvo?

– Qualseráopapeldecadamembrodogrupo?– Quaissãoosriscosenvolvidos?– Quaisdecisõesarquiteturaisprecisamsertomadas(linguagem,SO,etc.)?

Leonardo Murta Processo de Software 39

Leonardo Murta Processo de Software 40

Bibliografia•  Larman,C.;2007.ULlizandoUMLePadrões:umaintroduçãoàanáliseeaoprojetoorientadosaobjetoseaodesenvolvimentoiteraLvo.3ed.Bookman.

•  Pressman,R.S.;2004.SoUwareEngineering:APracLLoner’sApproach.6ed.McGraw-Hill.

Leonardo Murta Processo de Software 41

ProcessodeSo*ware

[email protected]