Engenharia de Software e Rapid Application Development Desenvolvimento

  • Slides: 26
Download presentation
Engenharia de Software e Rapid Application Development Desenvolvimento de Aplicações Rápidas e Melhores

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

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);

Desenvolvimento de software no mundo • Uma das maiores razões para o sucesso na

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.

Desenvolvimento de software no mundo • Nos EUA são gastos US$ 250 bi de

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!

Desenvolvimento de software no mundo Uma pesquisa do The Standish Group, o Chaos Report,

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;

Desenvolvimento de software no mundo O Chaos Report em sua última revisão (2009) mostrava

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;

Desenvolvimento de software no mundo Os principais fatores que ajudaram no sucesso dos projetos

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%

Desenvolvimento de software no mundo Os fatores que influenciaram os projetos de sucesso parcial

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%

Desenvolvimento de software no mundo As principais causas do fracasso são: • • •

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

Desenvolvimento de software no mundo

Desenvolvimento de software no mundo

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

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;

Engenharia de Software Ela abrange: • • • Requisitos (Requirements) de Software Projeto (Design)

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

Engenharia de Software Em resumo ela visa: 1. Especificação (requisitos); 2. Desenvolvimento (projeto e

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;

Modelos de Processo de Software • Um Modelo de Processo de Software ou simplesmente

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;

Modelos de Processo de Software Exemplos: • Seqüencial ou cascata (do inglês waterfall): com

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;

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

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;

Ciclo de vida de um software • Definição: estudo de viabilidade, análise de custo

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;

Ciclo de vida de um software O design compreende: 1. Conceitual: idéias e conceitos

Ciclo de vida de um software O 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;

Ciclo de vida de um software • Implementação: compreende a codificação, desenvolvimento em uma

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;

Ciclo e vida de um software • Fase de operação: envolve diferentes tipos de

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;

Gerações de Linguagem A evolução das linguagens de programação pode ser dividida em 5

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

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

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;

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

RAD Vantagens: • 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;

RAD Vantagens (continuação): • Desenvolvimento é conduzido em um nível mais alto de abstração;

RAD Vantagens (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;

Exemplos práticos RAD • Uma aplicação em Visual Studio ASP. NET C#, com muito

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;

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

Referências: • http: //www. async. com. br/~kiko/papers/rad/ • http: //www. criarweb. com/artigos/685. php • http: //engenhariadesoftware. blogspot. com/2 007/03/processo-de-software. html • http: //www. blogcmmi. com. br/geral/chaosreport-como-esta-a-ti-no-mundo