Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia [email protected]...

37
Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia Prof. Luís Fernando Garcia [email protected] [email protected] Engenharia de Engenharia de Software Software

Transcript of Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia [email protected]...

Page 1: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processo Desenvolvimento de Software

Tradicional

Prof. Luís Fernando GarciaProf. Luís Fernando [email protected]@GARCIA.PRO.BR

Engenharia de SoftwareEngenharia de Software

Page 2: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Um conjunto estruturado de atividades Um conjunto estruturado de atividades

necessárias para o desenvolvimento de um necessárias para o desenvolvimento de um sistema de softwaresistema de software• Especificação;Especificação;• Projeto;Projeto;• Validação;Validação;• Evolução.Evolução.

• Um Um modelo de processo modelo de processo de software é de software é uma representação abstrata do processo. uma representação abstrata do processo. Ele apresenta a descrição de um processo a Ele apresenta a descrição de um processo a partir de uma perspectiva particular.partir de uma perspectiva particular.

Page 3: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais

• Processo = Níveis ou etapas• Processo = Ciclo de vida do sw • Foco = Aprimorar o desenvolvimento

• Processos Artesanais ...• Processos Tradicionais (clássicos)• Processos Ágeis ...

Page 4: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA (waterfall)

• Mais antigo/mais tradicional• Clássico• Atualmente existem adaptações e

simplificações dele ...• Rígido ... Linear ...

Page 5: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais

Page 6: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais

Page 7: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA – Sub-processos

Page 8: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA – Sub-processos

Page 9: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA – Sub-processos

Page 10: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA – Sub-processos

Page 11: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA – Sub-processos

Page 12: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA (waterfall)

• A principal A principal desvantagemdesvantagem do modelo cascata é a do modelo cascata é a dificuldade de acomodação das mudanças depois dificuldade de acomodação das mudanças depois que o processo está em andamento. Uma fase que o processo está em andamento. Uma fase tem de estar completa antes de passar para a tem de estar completa antes de passar para a próxima.próxima.

Page 13: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo CASCATA (waterfall)

• Particionamento inflexível do projeto em estágios Particionamento inflexível do projeto em estágios distintos, dificulta a resposta aos requisitos de mudança distintos, dificulta a resposta aos requisitos de mudança do cliente.do cliente.

• Portanto, este modelo é apropriado somente quando os Portanto, este modelo é apropriado somente quando os requisitos são bem compreendidos, e quando as requisitos são bem compreendidos, e quando as mudanças forem bastante limitadas durante o mudanças forem bastante limitadas durante o desenvolvimento do sistema.desenvolvimento do sistema.

• Poucos sistemas de negócio têm requisitos estáveis.Poucos sistemas de negócio têm requisitos estáveis.• O modelo cascata é o mais usado em projetos de O modelo cascata é o mais usado em projetos de

engenharia de sistemas de grande porte, onde um sistema engenharia de sistemas de grande porte, onde um sistema é desenvolvido em várias localidades.é desenvolvido em várias localidades.

Page 14: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Evolutivo/Evolucionário

• Expandir e Incrementar sw• Direção determinada pela experiência

operacional• Desenvolvimento de Protótipos ...• Solidificar requisitos ...

Page 15: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Evolutivo/Evolucionário

Page 16: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Evolutivo/Evolucionário

Page 17: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Evolutivo/Evolucionário

• ProblemasProblemas• Falta de visibilidade de processo;Falta de visibilidade de processo;• Os sistemas são freqüentemente mal estruturados;Os sistemas são freqüentemente mal estruturados;• Habilidades especiais (por exemplo, em linguagens para Habilidades especiais (por exemplo, em linguagens para

prototipação rápida) podem ser solicitadas.prototipação rápida) podem ser solicitadas.

• AplicabilidadeAplicabilidade• Para sistemas interativos de pequeno e médio portes;Para sistemas interativos de pequeno e médio portes;• Para partes de um sistema de grande porte (por exemplo, a Para partes de um sistema de grande porte (por exemplo, a

interface de usuário);interface de usuário);• Para sistema com curto ciclo de vida.Para sistema com curto ciclo de vida.

Page 18: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Baseado em Componentes• Baseado em reuso sistemático onde sistemas são Baseado em reuso sistemático onde sistemas são

integrados a partir de componentes existentes ou de integrados a partir de componentes existentes ou de sistemas COTS (Commercial-of-the-shelf) (soluções sistemas COTS (Commercial-of-the-shelf) (soluções prontas disponíveis no mercado)prontas disponíveis no mercado)

• Estágios do processoEstágios do processo• Análise de componentes;Análise de componentes;• Modificação de requisitos;Modificação de requisitos;• Projeto de sistema com reuso;Projeto de sistema com reuso;• Desenvolvimento e integração.Desenvolvimento e integração.

• Esta abordagem está se tornando cada vez mais usada à Esta abordagem está se tornando cada vez mais usada à medida que padrões de componentes têm surgido.medida que padrões de componentes têm surgido.

Page 19: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Baseado em Componentes

foco em REUSO

Page 20: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo

• Requisitos de sistema SEMPRE evoluem no curso de um Requisitos de sistema SEMPRE evoluem no curso de um projeto e, sendo assim, a iteração de processo, onde projeto e, sendo assim, a iteração de processo, onde estágios iniciais são retrabalhados, é sempre parte do estágios iniciais são retrabalhados, é sempre parte do processo dos sistemas de grande porte.processo dos sistemas de grande porte.

• A iteração pode ser aplicada a qualquer um dos modelos A iteração pode ser aplicada a qualquer um dos modelos genéricos do processo.genéricos do processo.

• Duas abordagens (relacionadas) Duas abordagens (relacionadas) • Entrega incremental;Entrega incremental;• Desenvolvimento espiral.Desenvolvimento espiral.

Page 21: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo - Incremental

• Ao invés de entregar o sistema como uma única entrega, o Ao invés de entregar o sistema como uma única entrega, o desenvolvimento e a entrega são separados em desenvolvimento e a entrega são separados em incrementos, sendo que cada incremento fornece parte da incrementos, sendo que cada incremento fornece parte da funcionalidade solicitada.funcionalidade solicitada.

• Os requisitos de usuário são priorizados e os requisitos de Os requisitos de usuário são priorizados e os requisitos de prioridade mais alta são incluídos nos incrementos iniciais.prioridade mais alta são incluídos nos incrementos iniciais.

• Uma vez que o desenvolvimento de um incremento é Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são congelados, embora os iniciado, os requisitos são congelados, embora os requisitos para os incrementos posteriores possam requisitos para os incrementos posteriores possam continuar evoluindo.continuar evoluindo.

Page 22: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo - Incremental

Page 23: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo - Incremental

• O valor pode ser entregue para o cliente com cada O valor pode ser entregue para o cliente com cada incremento e, desse modo, a funcionalidade de sistema é incremento e, desse modo, a funcionalidade de sistema é disponibilizada mais cedo.disponibilizada mais cedo.

• O incremento inicial age como um protótipo para auxiliar O incremento inicial age como um protótipo para auxiliar a elicitar os requisitos para incrementos posteriores do a elicitar os requisitos para incrementos posteriores do sistema.sistema.

• Riscos menores de falha geral do projeto.Riscos menores de falha geral do projeto.• Os serviços de sistema de mais alta prioridade tendem a Os serviços de sistema de mais alta prioridade tendem a

receber mais testes.receber mais testes.

Page 24: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo - Incremental

• INÍCIO dos Métodos Ágeis ...INÍCIO dos Métodos Ágeis ...• Extreme Programming e outros ...Extreme Programming e outros ...

Page 25: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo – Espiral

• O processo é representado como uma espiral ao invés de O processo é representado como uma espiral ao invés de uma seqüência de atividades com realimentação.uma seqüência de atividades com realimentação.

• Cada loop na espiral representa uma fase no processo.Cada loop na espiral representa uma fase no processo.• Sem fases definidas, tais como especificação ou projeto – Sem fases definidas, tais como especificação ou projeto –

os loops na espiral são escolhidos dependendo do que é os loops na espiral são escolhidos dependendo do que é requisitado.requisitado.

• Os riscos são explicitamente avaliados e resolvidos ao Os riscos são explicitamente avaliados e resolvidos ao longo do processo.longo do processo.

Page 26: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo – Espiral

Page 27: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo – Espiral

Page 28: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Modelo Iterativo – Espiral

• Definição de objetivosDefinição de objetivos• Objetivos específicos para a fase são identificados.Objetivos específicos para a fase são identificados.

• Avaliação e redução de riscosAvaliação e redução de riscos• Riscos são avaliados e atividades são realizadas para Riscos são avaliados e atividades são realizadas para

reduzir os riscos-chave.reduzir os riscos-chave.• Desenvolvimento e validaçãoDesenvolvimento e validação

• Um modelo de desenvolvimento para o sistema, que pode Um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genéricos, é escolhido.ser qualquer um dos modelos genéricos, é escolhido.

• PlanejamentoPlanejamento• O projeto é revisado e a próxima fase da espiral é O projeto é revisado e a próxima fase da espiral é

planejada.planejada.

Page 29: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• RUP – Rational Unified Process

Page 30: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• RUP – Rational Unified Process

• Desenvolvimento de Software InterativoDesenvolvimento de Software Interativo• Gerenciamento de requisitosGerenciamento de requisitos• Uso de arquitetura baseada em componentesUso de arquitetura baseada em componentes• Modelagem visualModelagem visual• Verificação contínua da qualidadeVerificação contínua da qualidade• Gerenciamento de mudançasGerenciamento de mudanças

Page 31: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• RUP – Rational Unified Process• Conjunto de atividadesConjunto de atividades• bem definidas bem definidas • com responsáveiscom responsáveis• com artefatos de entrada e saídacom artefatos de entrada e saída• com dependências entre as mesmas e ordem de com dependências entre as mesmas e ordem de

execuçãoexecução• com modelo de ciclo de vidacom modelo de ciclo de vida• descrição sistemática de como devem ser descrição sistemática de como devem ser

realizadasrealizadas• UMLUML

Page 32: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

• RUP – Rational Unified Process

Page 33: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais

Page 34: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• RUP – Rational Unified Process

Page 35: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais

Page 36: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais

Page 37: Processo Desenvolvimento de Software Tradicional Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR Engenharia de Software.

Processos TradicionaisProcessos Tradicionais• Pontos Chave:

Processos de software são atividades envolvidas na produção Processos de software são atividades envolvidas na produção e na evolução de um sistema de software. e na evolução de um sistema de software.

Modelos de processo de software são representações abstratas Modelos de processo de software são representações abstratas destes processos.destes processos.

Atividades gerais incluem especificação, projeto e Atividades gerais incluem especificação, projeto e implementação, validação e evolução de software.implementação, validação e evolução de software.

Modelos genéricos de processo descrevem a organização dos Modelos genéricos de processo descrevem a organização dos processos de software. Exemplos incluem o modelo cascata, o processos de software. Exemplos incluem o modelo cascata, o desenvolvimento evolucionário e engenharia de software desenvolvimento evolucionário e engenharia de software baseada em componentes.baseada em componentes.

Modelos de processo iterativos apresentam o processo de Modelos de processo iterativos apresentam o processo de software como um ciclo de atividades. software como um ciclo de atividades.