19
ENG1000 – Introdução à Engenharia Edirlei Soares de Lima <[email protected]> Aula 01 – Processo de Desenvolvimento de Software

ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

  • Upload
    lamnhu

  • View
    222

  • Download
    1

Embed Size (px)

Citation preview

Page 1: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

ENG1000 – Introdução à Engenharia

Edirlei Soares de Lima

<[email protected]>

Aula 01 – Processo de Desenvolvimento de Software

Page 2: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Processo de Software

• O processo de software consiste em um conjunto estruturado de atividades necessárias para construir um sistema de software:

– Especificação - o que o sistema deve fazer e as restrições de

desenvolvimento;

– Desenvolvimento - produção do sistema de software;

– Validação - avaliar se o software produzido confere com o esperado;

– Evolução - mudar o software em resposta às novas necessidades.

Page 3: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Ciclo de Desenvolvimento

Page 4: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Ciclo de Desenvolvimento

Page 5: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo de Processo de Software

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

• Alguns modelos: – Waterfall (Modelo em Cascata): Fases distintas e separadas de

especificação e desenvolvimento;

– Desenvolvimento evolucionário (Modelo de Prototipação): Especificação e desenvolvimento são inter-relacionadas;

– Desenvolvimento incremental: Processo dividido em etapas que produzirão incrementalmente o sistema até a sua versão final;

– Desenvolvimento baseado em reuso: O sistema é montado a partir dos seus componentes;

Page 6: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo em Cascata

Definição de Requisitos

Projeto do Software

Implementação e Teste de Unidades

Integração e teste do Sistema

Implantação e Manutenção

Page 7: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo em Cascata

• Problemas do Modelo em Cascata:

– A principal desvantagem do modelo em cascata é a dificuldade em se acomodar mudanças uma vez que o processo se iniciou - uma fase deve terminar antes que a fase seguinte possa se iniciar;

– Apropriado apenas quando os requisitos são claros desde o início do projeto;

– Poucos sistemas possuem requisitos estáveis;

– Ainda assim, cerca de 40% de todos os projetos de software utilizam este modelo!

Page 8: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo de Prototipação

Descrição em Alto Nível

Especificação

Desenvolvimento

Validação

Versão Inicial

Versão Intermediária

Versão Final

Page 9: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo de Prototipação

• Desenvolvimento Exploratório: – O objetivo é trabalhar com os clientes para criar iterativamente um

sistema final a partir de uma especificação inicial;

– Deve-se iniciar o processo com um conjunto de requisitos muito bem entendidos;

– Novas características são adicionadas a medida que vão sendo propostas pelo usuário

• Protótipo Descartável: – Tem como objetivo o entendimento dos requisitos do sistema

Page 10: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo de Prototipação

• Problemas: – Falta de visibilidade;

– Sistemas possuem geralmente uma estrutura pobre;

– Habilidades em linguagens de prototipação rápida podem ser necessárias.

• Aplicabilidade – Em projetos de pequenos e de médio tamanho;

– Em partes de sistemas mais complexos (ex: interfaces do usuário);

– Em programas de curto ciclo de vida.

Page 11: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo de Desenvolvimento Incremental

Definição de requisitos iniciais

Atribuição de requisitos à iterações

Projeto da arquitetura do sistema

Desenvolvimento do incremento do

sistema

Validação do Incremento

Integração do Incremento

Validação do Sistema

Sistema Final

Page 12: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Modelo de Desenvolvimento Incremental

• Vantagens: – Uma parte usável do sistema é entregue ao cliente a cada iteração

(incremento);

– Incrementos iniciais podem ser usados como protótipos para clarificação de requisitos;

– Baixo risco de falha geral do projeto;

– Os sub-sistemas de mais alta prioridade tendem a passar por testes mais intensos.

• Problemas: – Número de iterações não pode ser definido no início do processo;

– O fim do processo não pode ser previamente definido.

Page 13: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Métodos Ágeis

• Baseados no modelo incremental, porém mais “leves” e centrados no ponto de vista das pessoas envolvidas: – Cada fase demora dias e não semanas;

– Envolvidos ficam presentes numa mesma sala;

• Enfatizam trabalho no software como uma medida primária de progresso: – Utiliza feedback ao invés de planejamento como mecanismo primário

de controle;

– Disponibilização regular de versões do software;

Page 14: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Métodos Ágeis - Exemplos

• Extreme Programming (XP): – Fases pequenas e rápidas (alguns dias);

– Testes são automatizados: metas para desenvolvimento;

– Programação feita em duplas;

– Projeto e arquitetura surgem por refactoring;

• SCRUM: – Usado no gerenciamento de projetos de software;

– Ciclos formados por várias interações;

– Breves reuniões diárias (daily scrum);

Page 15: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Métodos Ágeis

• Aplicabilidade: – Mais adequados quando os requisitos estão emergindo e

mudando rapidamente;

– Mais adequados para projetos com pequenos times, em torno de 20 pessoas;

– Não são aplicáveis em sistemas críticos;

Page 16: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Arquitetura de Software

• O processo de projeto para identificação de subsistemas do sistema principal e a definição da comunicação destes subsistemas chama-se de projeto arquitetural.

• O resultado deste processo é a descrição da arquitetura do software.

• Decomposição modular: – Os subsistemas identificados são decompostos em módulos.

Page 17: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Arquitetura de Software

• Um módulo é um componente de um sistema que dá suporte, através de um conjunto de serviços, para outros componentes, mas não é considerado como um sistema em separado.

• Os módulos de um sistema podem ser projetados de varias formas: – Cliente-Servidor

– Camadas

– Pipes e Filtros

– Plugins

Page 18: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Exemplo de Módulos

Page 19: ENG1000 Introdução à Engenharia - edirlei.3dgb.com.bredirlei.3dgb.com.br/aulas/intro-eng_2014_1/IntroEng_Aula_01... · –Em programas de curto ciclo de vida. Modelo de Desenvolvimento

Bibliografia

• Sommerville, I. Engenharia de Software; Prentice Hall: Addison-wesley, 2003.