Engenharia de Software

Slides:



Advertisements
Apresentações semelhantes
Introdução a Algoritmos
Advertisements

Gerência de Projetos Wesley Peron Seno Introdução
Engenharia de Software
Engenharia de Software
Prototipação de Software
Análise e Projeto de Sistemas I
Prototipação de Software
Modelos de Processos de desenvolvimento de Software
Engenharia de Software Engenharia de Software Prof. Inês Ap. Gasparotto Boaventura 1. Semestre/2001.
INTRODUÇÃO A INFORMÁTICA
FACULDADE DOS GUARARAPES
FACULDADE DOS GUARARAPES
CK 119: Engenharia de Software DC/CC/UFC © Rossana Andrade, Setembro CK119: Engenharia de Software Rossana Andrade Ph.D, SITE, University of Ottawa,
Processos de Desenvolvimento de Software
Processo Desenvolvimento de Software Tradicional
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Como Desenvolver Sistemas de Informação
Modelos de Processos de Software
Engenharia de Software
Processos de Software II
Métodos Ágeis Agile Modeling, ou AG
Deivison Cheloni e Bernardo Martins
Processo de Software Prof. Dr. rer. nat. Daniel D. Abdala
Técnicas e Projeto de Sistemas
Engenharia de Software
Desafios do desenvolvimento de software
Engenharia de Software I
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
Processos de Desenvolvimento de Software
Processos de Software Profa. Cintia Carvalho Oliveira
Engenharia de Software Professor Mário Dantas
Engenharia de Software
Engenharia de Software
Fundamentos de Engenharia de Software
Software e Engenharia de Software ENGENHARIA DE SOFTWARE - PRESSMAN
Desenvolvimento Rápido de Aplicação (RAD)
Modelos de Processo de Software
PSBD II Projeto de Sistemas de Banco de Dados II
Software – Técnicas e Aplicações
Introdução à Engenharia de Software
Análise e Projeto Orientados a Objetos
Engenharia de Software
Processo de Desenvolvimento de Software
Engenharia de Software
Processos de Software.
Processos de Software.
Requisitos de Software
Técnicas e Projeto de Sistemas
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Modelos de Processos de Software
Métodos Ágeis e Programação Extrema (XP)
Engenharia de Software
Engenharia de Software
Prototipação de Software
Gerenciamento de Requisitos e Modelagem de sistemas
Engenharia de Software
Unidade 2: O Processo Parte I: O Produto e o Processo
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Engenharia de Software Ciclo de Vida do Software: Espiral
Engenharia de Software
Professora: Kelly de Paula Cunha
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
Engenharia de Software
Apresentação Leonardo Brussolo de Paula
Desenvolvimento de Software I
Ciclo de Vida de Sistemas de Informação
Modelos de Processo de Software
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

Engenharia de Software Slide 06 – Modelos de Processos (Continuação) Juliano Amorim de Oliveira juliano.oliveira@metodistademinas.edu.br Instituto Metodista Isabela Hendrix Curso de Análise e Desenvolvimento de Sistemas

Vimos nas aulas anteriores Engenharia de Software: uma tecnologia em camadas (ferramentas, métodos, processos, qualidade) Modelos de processo de sofware Modelo cascata

Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração

Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração 

O Modelo de Prototipação Objetivo: entender os requisitos do usuário possibilita que o desenvolvedor crie um modelo (protótipo) do software que deve ser construído apropriado quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou detalhadamente esses requisitos

O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Construir Protótipo Avaliar Protótipo

protótipo pelo cliente Prototipação Simplificando construa/revise protótipo teste do protótipo pelo cliente ouça o cliente

O Modelo de Prototipação Obter Requisitos Desenvolvedor e cliente: definem os objetivos gerais do software identificam quais requisitos são conhecidos identificam as áreas que necessitam de definições adicionais Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Construir Protótipo Avaliar Protótipo

O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Representação dos aspectos do software que são visíveis ao usuário abordagens de entrada e formatos de saída Elaborar Projeto Rápido Refinamento do Protótipo Construir Protótipo Avaliar Protótipo

O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Construir Protótipo Implementação rápida do projeto Refinamento do Protótipo Construir Protótipo Avaliar Protótipo

O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Avaliar Protótipo Cliente e desenvolvedor avaliam o protótipo Construir Protótipo Avaliar Protótipo

O Modelo de Prototipação Obter Requisitos Elaborar Projeto Rápido Refinamento do Protótipo Cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido Refinamento do Protótipo Construir Protótipo Avaliar Protótipo

O Modelo de Prototipação Obter Requisitos CONSTRUÇÃO DO PRODUTO Elaborar Projeto Rápido Identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade Construir Protótipo Avaliar Protótipo

Prototipação Dificuldades: cliente não sabe que o software que ele vê, não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a idéia de “jogar fora” o que foi feito desenvolvedor freqüentemente desenvolve o protótipo de forma comprometida (utilizando o que está disponível). Depois de um tempo ele se familiariza com essas escolhas, e pode ser que esqueça que elas não são apropriadas para o produto final;

Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração  

O Modelo Incremental Combina elementos do modelo cascata (aplicado repetidamente) com a filosofia iterativa Usado quando é difícil estabelecer a priori uma especificação detalhada dos requisitos Objetivo: trabalhar junto do usuário a fim de descobrir seus requisitos, de maneira incremental, até que o produto final seja obtido

Versões Intermediárias O Modelo Incremental Atividades Paralelas Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Versão Inicial Descrição geral Versões Intermediárias Descrição geral Descrição geral Versão Final

Versões Intermediárias O Modelo Incremental Atividades Paralelas Descrição geral A versão inicial é, freqüentemente, o núcleo do produto o desenvolvimento começa com as partes do produto que são mais bem entendidas um plano é desenvolvido para o próximo incremento, como resultado do uso e/ou avaliação por parte do cliente  são adicionadas novas características à medida que são sugeridas pelo usuário Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Versão Inicial Descrição geral Versões Intermediárias Descrição geral Descrição geral Versão Final

O Modelo Incremental objetiva a elaboração de um produto operacional a cada incremento os testes podem ser mais efetivos é mais fácil testar cada versão do sistema do que o sistema todo no final

Engenharia de Sistemas / Informação O Modelo Incremental Engenharia de Sistemas / Informação incremento 1 Análise Projeto Codificação Testes produto liberado do incremento 1 Análise Projeto Codificação Testes produto liberado do incremento 2 incremento 2 Análise Projeto Codificação Testes produto liberado do incremento 3 incremento 3 Análise Projeto Codificação Testes produto liberado do incremento 4 incremento 4 tempo

O Modelo Incremental Diferentemente do paradigma da prototipação, tem o objetivo de apresentar um produto operacional a cada incremento É útil quando não há mão de obra disponível para uma implementação completa.

Extreme Programming (XP) Programação Extrema (Programação Ágil)  evolução, recente,da abordagem incremental. Desenvolvida por Beck em 1999 Voltada para equipes de até 20 pessoas engajadas no desenvolvimento de software cujos requisitos são vagos ou se encontram em constante mudança Principal atividade  codificação Principal contribuição  aplicação extrema das práticas num modelo coeso e sinérgico

Extreme Programming (XP) Algumas características: o desenvolvimento e a entrega de incrementos de funcionalidade muito pequenos diálogo constante e evolutivo entre programadores e clientes a constante melhoria de código

Extreme Programming (XP) Algumas características: a programação em pares 40 horas de trabalho (muita hora-extra é sinal de problemas com o projeto) requisitos são criados pelo cliente  estórias Refactoring  abordagem disciplinada para tornar o código de um software mais claro e de fácil manutenção, minimizando a probabilidade de inclusão de erros

Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração  

O Modelo Espiral Engloba as melhores características do modelo Cascata e da Prototipação, adicionando um novo elemento: a Análise de Risco Segue a abordagem de passos sistemáticos do modelo Cascata incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real

O Modelo Espiral Usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos O modelo espiral é dividido em uma série de atividades de trabalho ou regiões de tarefa

O Modelo Espiral (com 6 regiões) Planejamento Análise de Riscos Comunicação com Cliente Engenharia Avaliação do Cliente Construção e Liberação

O Modelo Espiral (com 6 regiões) Planejamento Análise de Riscos Comunicação com Cliente As tarefas das regiões são adaptadas às características do projeto Engenharia Avaliação do Cliente Construção e Liberação

Comentários sobre o Ciclo de Vida em Espiral Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso Usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva

Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração  

O que são componentes? Componentes fornecem funcionalidades- alvo com interfaces bem definidas que permitem que sejam integrados ao software Componentes possuem documentação

O Modelo de Montagem de Componentes O modelo de montagem de componentes incorpora características de tecnologias Orientadas a Objetos no modelo espiral Demanda uma abordagem iterativa para a criação do software O modelo compõe aplicações a partir de componentes de software “empacotados”

O Modelo de Montagem de Componentes Planejamento Análise de Riscos Comunicação com Cliente Avaliação do Cliente Engenharia Construção e Liberação

O Modelo de Montagem de Componentes Planejamento Avaliação do Cliente Comunicação com Cliente Identificar componentes candidatos Procurar componentes na biblioteca Extrair componentes se disponíveis Construir os componentes não disponíveis Colocar os novos componentes na biblioteca Construir a 1a iteração do sistema Análise de Riscos Engenharia Construção e Liberação

O Modelo de Montagem de Componentes O modelo de montagem de componentes conduz ao reuso do software A Reusabilidade fornece uma série de benefícios: redução de 70% no tempo de desenvolvimento redução de 84% no custo do projeto Esses resultados dependem da robustez da biblioteca de componentes

Modelos de Processo de Software Modelo Seqüencial Linear (Modelo Cascata) Paradigma de Prototipação Modelo RAD (Rapid Application Development) Modelos Evolutivos de Processo de Software Modelo Incremental Modelo Espiral Modelo de Montagem de Componentes Modelo de Desenvolvimento Concorrente Modelos de Métodos Formais Técnicas de Quarta Geração 

Técnicas de 4a Geração Engloba um conjunto de ferramentas de software que possibilitam que: o sistema seja especificado em uma linguagem de alto nível e o código fonte seja gerado automaticamente a partir dessas especificações

Ferramentas do Ambiente das Técnicas de 4a Geração O ambiente de desenvolvimento de software que sustenta o ciclo de vida de 4a geração inclui as ferramentas: linguagens não procedimentais para consulta de banco de dados geração de relatórios, planilhas e manipulação de dados interação e definição de telas geração de código capacidade gráfica de alto nível geração automática de HTML e linguagens similares para criação de páginas Web

Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Implementação usando 4GL Testes

Obtenção dos Requisitos Técnicas de 4a Geração Obtenção dos Requisitos o cliente descreve os requisitos os quais são traduzidos para um protótipo operacional o cliente pode estar inseguro quanto aos requisitos as 4GLs atuais não são sofisticadas suficientemente para acomodar a verdadeira "linguagem natural" Estratégia do “Projeto” Implementação usando 4GL Testes

Obtenção dos Requisitos Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Pequenas aplicações: é possível mover-se do passo de Obtenção dos Requisitos para o de Implementação usando uma linguagem de quarta geração Grandes projetos: é necessário desenvolver uma estratégia de projeto. De outro modo ocorrerão os mesmos problemas encontrados quando se usa abordagem ad-hoc (baixa qualidade) Implementação usando 4GL Testes

Obtenção dos Requisitos Estratégia do “Projeto” Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Implementação usando 4GL Os resultados desejados são representados de modo que haja geração automática de código Testes

Técnicas de 4a Geração Obtenção dos Requisitos Estratégia do “Projeto” Implementação usando 4GL Testes O desenvolvedor deve efetuar testes e desenvolver uma documentação significativa

Comentários sobre as Técnicas de 4a Geração PROPONENTES: redução dramática no tempo de desenvolvimento do software (aumento de produtividade) Quando combinado com a abordagem de desenvolvimento baseada em componentes, o paradigma 4GT pode se transformar na abordagem predominante para o desenvolvimento de software

Comentários sobre as Técnicas de 4a Geração OPONENTES: as 4GL atuais não são mais fáceis de usar do que as linguagens de programação o código fonte produzido é ineficiente a manutenibilidade de sistemas usando técnicas 4G ainda é questionável

Exercício! Faça uma análise dos modelos de processo de software que já foram vistos em aula: Modelo Cascata Paradigma de prototipação Modelo incremental Programação extrema Modelo espiral Modelo de montagem de componentes Técnicas de quarta geração

Bibliografia PRESSMAN, ROGER S. Engenharia de Software. 6ª edição. Rio de Janeiro: McGraw-Hill, 2006. SOMERVILLE, IAN. Engenharia de Software. 8ª edição. São Paulo: Addison Wesley, 2007. Slides da professora Debora Paiva da UFMS