Engenharia de Software e Rapid Application Development

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Sistemas
Advertisements

Os projetos.
Objetivos do Capítulo Utilizar o processo de desenvolvimento de sistemas delineado neste capítulo e o modelo de componentes de SI, do Capítulo 1, como.
Rational Unified Process
Gerência de Projetos Wesley Peron Seno Introdução
Engenharia de Software
Prototipação de Software
Identificando requisitos
Análise e Projeto de Sistemas I
Gerenciamento de Projetos
Engenharia de Software
Rational Unified Process(RUP)
INTRODUÇÃO A INFORMÁTICA
FACULDADE DOS GUARARAPES
Mitos e Problemas Relacionados ao Software
RUP Rational Unified Process (Processo Unificado de Desenvolvimento da Rational) 1.
Processos de Desenvolvimento de Software
Processo Desenvolvimento de Software Tradicional
Análise e Projeto de Sistemas
O processo do design da interação
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Como Desenvolver Sistemas de Informação
Modelos de Processos de Software
Sistemas Multimídia e Interface Homem-Máquina
Processo de Software Prof. Dr. rer. nat. Daniel D. Abdala
Gestão de Projetos.
Desafios do desenvolvimento de software
Visão Geral PRO.NET.
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
Universidade São Marcos Curso: Gestão de Negócios Internacionais
Processos de Desenvolvimento de Software – Parte 2
Fase de Elaboração: Fluxo de Requisitos
Metolodogia de Desenvolvimento de Data Warehouse
Processos de Software Profa. Cintia Carvalho Oliveira
Engenharia de Software
Engenharia de Software
Oficina Mecânica TADS 2011.
Rapid Application Development (RAD)
Análise e Projeto de Sistemas
GESTÃO DE PROJETOS Aula 5 1.
Engenharia de Software
Desenvolvimento Rápido de Aplicação (RAD)
Técnicas e Projeto de Sistemas
Fase de Concepção (Início, Planejamento)
PSBD II Projeto de Sistemas de Banco de Dados II
Marcio de Carvalho Victorino Processo Unificado. Unidade VI: Teste.
Análise e Projeto Orientados a Objetos
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Modelo para Design de Interfaces
Processos de Software.
Processos de Software.
Técnicas e Projeto de Sistemas
Engenharia de Software
Integração de Ferramentas CASE
Gestão de projetos de Software GTI-16
Engenharia de Software
Engenharia de Software
Fase de Concepção (Início, Planejamento)
Engenharia de Software
Engenharia de Software
Erton W. Vieira Metodologias Ágeis, Qualidade de Software e Design Centrado no usuário: Pontos de Interação Erton W. Vieira.
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
Apresentação Leonardo Brussolo de Paula
Desenvolvimento de Software I
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Mauricio Barbosa e Castro.  A construção de um produto multimídia se faz através de um projeto.  O escopo e a complexidade de um projeto de multimídia.
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
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 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: Pontes normalmente são entregues no prazo, dentro do orçamento e não caem; 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 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 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, classificou os projetos em três tipos: Sucesso: projeto dentro do prazo, dentro do orçamento e com boa parte do escopo; Sucesso parcial: projeto funcionando, mas entregue sem atender ou custo, ou esforço ou com o escopo parcial; Fracassos: projetos cancelados ou não utilizados;

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 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 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: 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

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) 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: Especificação (requisitos); Desenvolvimento (projeto e desenvolvimento); Manutenção; Uso de Modelos de Processo de Software;

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 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 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 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: 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; Interface com o usuário: formulários, menus, botões, mensagens, etc; Algoritmos e estrutura de dados;

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

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 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; 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 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 http://engenhariadesoftware.blogspot.com/2007/03/processo-de-software.html http://www.blogcmmi.com.br/geral/chaos-report-como-esta-a-ti-no-mundo