engenharia de software e rapid application development desenvolvimento de aplicações rápidas e...

26
Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Upload: vitor-ennes

Post on 07-Apr-2016

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Engenharia de Software eRapid Application Development

Desenvolvimento de Aplicações Rápidas e Melhores

Page 2: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no Mundo

Em 1986 foi publicado um paper comparando a construção de pontes com a construção de software, como premissa foi utilizado:

1.Pontes normalmente são entregues no prazo, dentro do orçamento e não caem;

2.Softwares raramente são entregues no prazo ou dentro do orçamento. E normalmente eles tem bugs (falhas);

Page 3: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

• Uma das maiores razões para o sucesso na construção de pontes é o alto nível de detalhe no projeto. Porém, o projeto é fixo e o contratante tem pouquíssima flexibilidade de mudanças.

• O mundo dos negócios é dinâmico, não sendo apropriado um projeto de software fixo, que tenderia a não acomodar as mudanças do negócio. Portanto, um modelo flexível deve ser aplicado.

Page 4: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

• Nos EUA são gastos US$ 250 bi de dólares anuais no desenvolvimento projetos de software;

• Aproximadamente 175.000 projetos de software;

• O custo médio de um projeto:– Empresa de grande porte é de US$ 2.3 mi;– Empresa de médio porte é de US$ 1.4 mi;– Empresa de pequeno porte US$ 434.000;

• A grande maioria destes projetos falha!

Page 5: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

Uma pesquisa do The Standish Group, o Chaos Report, classificou os projetos em três tipos:

1.Sucesso: projeto dentro do prazo, dentro do orçamento e com boa parte do escopo;2.Sucesso parcial: projeto funcionando, mas entregue sem atender ou custo, ou esforço ou com o escopo parcial;3.Fracassos: projetos cancelados ou não utilizados;

Page 6: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

O Chaos Report em sua última revisão (2009) mostrava que:

•24% dos projetos fracassam;•44% dos projetos são entregues com sucesso parcial;•E apenas 32% dos projetos obtêm sucesso;

Page 7: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

Os principais fatores que ajudaram no sucesso dos projetos foram:

• Envolvimento do usuário: 15.9%• Apoio executivo: 13.9%• Declaração de requisitos clara e limpa: 13%• Planejamento apropriado: 9.6%• Expectativas realistas: 8.2%• Equipe competente: 7.2%• Propriedade: 5.3%• Visão e objetivos claros: 2.9%• Trabalho duro e equipe focada: 2.4%• Outros: 21.6%

Page 8: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

Os fatores que influenciaram os projetos de sucesso parcial foram:

• Falta de insumos do usuário: 12.8%• Requisitos & Especificações incompletas: 12.3%• Mudanças nos requisitos & especificações: 11.8%• Falta de apoio executivo: 7.5%• Ambiente tecnológico incompleto: 7.0%• Falta de recursos: 6.4%• Expectativas irrealistas: 5.9%• Objetivos nebulosos: 5.3%• Ciclos (tempo) irrealistas: 4.3%• Novas tecnologias: 3.7%• Outras: 23%

Page 9: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

As principais causas do fracasso são:

• Requisitos Incompletos: 13.1%• Falta de envolvimento do usuário: 12.4%• Falta de recursos: 10.6%• Expectativas não realistas 9.9%• Falta de apoio executivo: 9.3%• Mudanças de requisitos: 8.7%• Falta de planejamento: 8.1%• Não precisa mais daquilo: 7.5%• Falta de gestão da TI: 6.2%• Analfabetismo tecnológico: 4.3%• Outros: 9.9%

O estudo mostrou também que quanto maior o tamanho do projeto, maior a probabilidade de fracasso

Page 10: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Desenvolvimento de software no mundo

Page 11: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Engenharia de Software

• Termo criado na década da 1960 e oficializado em 1968;

• Objetivos: a aplicação de teoria, modelos, formalismos e técnicas e ferramentas da ciência da computação e áreas afins para a produção (ou desenvolvimento) sistemático de software;

Page 12: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Engenharia de Software

Ela abrange:

• Requisitos (Requirements) de Software• Projeto (Design) de Software• Construção (Construction) de Software• Teste (Testing) de Software• Manutenção (Maintenance) de software• Qualidade (Quality) de Software

Page 13: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Engenharia de Software

Em resumo ela visa:

1.Especificação (requisitos);2.Desenvolvimento (projeto e

desenvolvimento);3.Manutenção;4.Uso de Modelos de Processo de Software;

Page 14: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Modelos de Processo de Software

• Um Modelo de Processo de Software ou simplesmente Modelo de Processo é um conjunto de atividades, métodos, ferramentas e práticas que são utilizadas para construir um produto de software;

• Oferece uma forma mais abrangente e fácil de representar o gerenciamento de processo de software e conseqüentemente o progresso do projeto;

Page 15: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Modelos de Processo de Software

Exemplos:

• Seqüencial ou cascata (do inglês waterfall): com fases distintas de especificação, projeto e desenvolvimento, testes e uso;

• Desenvolvimento iterativo e incremental: é iniciado com um subconjunto simples de requisitos e interativamente alcança evoluções subseqüentes das versões até o sistema todo estar implementado;

Page 16: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Modelos de Processo• Espiral: evolução através de vários ciclos completos de

especificação, projeto e desenvolvimento. Quando um ciclo termina outro se inicia;

• Modelo Ágil: regido por iterações, onde cada iteração contempla uma funcionalidade. Uma iteração é como um mini-projeto e inclui todas as tarefas necessárias (análise de requisitos, projeto, codificação, etc). Uma iteração tem curta duração e quando termina ela e avaliada e novas iterações são definidas;

• RAD: é um modelo de processo de iterativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto;

Page 17: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Ciclo de vida de um software

• Definição: estudo de viabilidade, análise de custo x benefício, análise de requisitos software, proposta de desenvolvimento, contrato de desenvolvimento, entre outros;

• Desenvolvimento: design, implementação e a verificação e validação do software;

Page 18: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Ciclo de vida de um softwareO design compreende:

1.Conceitual: idéias e conceitos de software. Ex: mensagem, caixa de entrada, caixa de saída são conceito de um software de correio eletrônico;

2. Interface com o usuário: formulários, menus, botões, mensagens, etc;

3.Algoritmos e estrutura de dados;

Page 19: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Ciclo de vida de um software

• Implementação: compreende a codificação, desenvolvimento em uma linguagem de programação;

• Validação: verificar se o sistema está de acordo com as especificações;

Page 20: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Ciclo e vida de um software• Fase de operação: envolve diferentes tipos de atividades:– Distribuição e entrega;– Instalação e configuração;

• Utilização: usabilidade, suporte e robustez;

• Manutenção: corretiva e evolutiva;

• Fase de retirada: evolução para novas plataformas operacionais, troca de SO’s, etc;

Page 21: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Gerações de Linguagem

A evolução das linguagens de programação pode ser dividida em 5 etapas ou gerações:

•Primeira geração: linguagem de máquina, binária;

•Segunda geração: as primeiras linguagens Assembler;

•Terceira geração: as primeiras linguagens de alto nível. Ex: C, Pascal, Cobol;

Page 22: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Gerações de Linguagem• Quarta geração: são linguagens capazes de gerar código

por si só, são as chamadas RAD, com o qual pode-se desenvolver aplicações de maneira bem mais rápida. Aqui também se encontram as linguagens orientadas a objetos, tornando possível a reutilização de partes do código para outros programas. Ex: Visual Basic, Delphi, etc;

• Quinta geração: são as linguagens orientadas à inteligência artificial. Estas linguagens ainda estão pouco desenvolvidas. Ex: LISP;

Page 23: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

RADVantagens:

• Permite o desenvolvimento rápido e/ou a prototipagem de aplicações;

• Enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias);

• Cada função principal pode ser direcionada para a uma equipe RAD separada e então integrada a formar um todo;

• Criação e reutilização de componentes;• Usado principalmente para aplicações de sistemas de

informações;• Comprar pode economizar recursos se comparado a

desenvolver;

Page 24: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

RADVantagens (continuação):

• Desenvolvimento é conduzido em um nível mais alto de abstração;

• Visibilidade mais cedo: protótipos;• Maior flexibilidade: o desenvolvedor pode re-projetar

praticamente a vontade;• Grande redução de codificação manual (wizards);• Envolvimento maior do usuário;• Provável custo reduzido: menor tempo e também devido ao

reuso;• Aparência padronizada: as API’s e outros componentes

reutilizáveis permitem uma aparência consistente;

Page 25: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Exemplos práticos RAD

• Uma aplicação em Visual Studio ASP.NET C#, com muito pouca codificação;

• Uma aplicação em Delphi codeless, ou seja, sem código;

Page 26: Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

Referências:• http://www.async.com.br/~kiko/papers/rad/• http://www.criarweb.com/artigos/685.php• http://engenhariadesoftware.blogspot.com/

2007/03/processo-de-software.html• http://www.blogcmmi.com.br/geral/chaos-

report-como-esta-a-ti-no-mundo