Engenharia de Software

Slides:



Advertisements
Apresentações semelhantes
Engenharia de Software
Advertisements

Gerência de Projetos Wesley Peron Seno Introdução
Modelos de Ciclo de Vida
Engenharia de Software
Engenharia de Software
Prototipação de Software
Gerenciamento de Projetos
Engenharia de Software
Processos de Software Introdução
Prototipação de Software
Rational Unified Process(RUP)
Modelos de Processos de desenvolvimento de Software
INTRODUÇÃO A INFORMÁTICA
FACULDADE DOS GUARARAPES
Mitos e Problemas Relacionados ao Software
Prof. Aruanda Simões - Análise e Projeto OO Processo de Desenvolvimento n As grandes fases: –Planejamento e elaboração –Construção –Implantação Sistema.
Adélia Barros Introdução à Engenharia de Software Modelos de Processo Adélia Barros
Processos de Desenvolvimento de Software
Processo Desenvolvimento de Software Tradicional
SISTEMA DE INFORMAÇÕES DESENVOLVIMENTO DE SISTEMAS
O processo do design da interação
Como Desenvolver Sistemas de Informação
Modelos de Processos de Software
Processos de Software II
Processo de Software Prof. Dr. rer. nat. Daniel D. Abdala
Adélia Barros Revisão Adélia Barros
Desafios do desenvolvimento de software
Prof.Alfredo Parteli Gomes
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
Processos de Desenvolvimento de Software
Metolodogia de Desenvolvimento de Data Warehouse
Processos de Software Profa. Cintia Carvalho Oliveira
Engenharia de Software
Engenharia de Software
Desenvolvimento Rápido de Aplicação (RAD)
Modelos de Processo de Software
Técnicas e Projeto de Sistemas
Análise e Projeto Orientados a Objetos
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE – PDS VALIDAÇÃO.
Bruno Silva Desenvolvido a partir de
Processo de Desenvolvimento de Software
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Engenharia de Software
Processos de Software.
Processos de Software.
Técnicas e Projeto de Sistemas
Visão Geral sobre Ciclo de Vida de Software, Processos e RUP
Engenharia de Software e Rapid Application Development
Gestão de projetos de Software GTI-16
Modelos de Processos de Software
Engenharia de Software
Engenharia de Software
©Jaelson Castro 2000Engenharia de Sofware, Capítulo 1 Slide 1 Engenharia de Software u Projetando, construindo e mantendo grande sistemas de software.
Prototipação de Software
Análise e Projeto de Sistemas I Profa. Ana Karina Barbosa Fevereiro/2007.
Engenharia de Software Ciclo de Vida do Software: Espiral
Engenharia de Software
Engenharia de Software
Aula 02 de Eng. de Requisitos
Professora: Kelly de Paula Cunha
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
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 Modelos de Ciclo de Vida de Software Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Modelos de ciclo de vida de software Conjunto de fases, atividades, marcos e artefatos que guiam o desenvolvimento, operação e manutenção de um sistema Ferramenta para planejamento e gerenciamento! Não existem modelos certos ou errados, apenas adequados ou não a uma determinada situação Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Modelos de ciclo de vida de software Força bruta, code and fix, nike-way Cascata Espiral Prototipagem Programação exploratória Iterativo … Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Modelo Cascata Um dos mais antigos, e ainda um dos mais usados! Várias atividades executadas de forma sistemática e seqüencial Espec. de Requisitos Análise e Projeto Implementação Integração e testes Implantação Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Modelo Cascata Fixa pontos específicos para a entrega de artefatos É simples e fácil de aplicar, facilitando o planejamento Na prática, existe uma interação entre as atividades e cada atividade pode levar a modificações nas anteriores na maioria dos casos existe interação e superposição! Pressupõe que os requisitos ficarão estáveis Atrasa a redução de riscos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Desenvolvimento cascata atrasa a redução de riscos Início da integração 100% Tempo Progresso do projeto (% codificado) Deadline original Fonte: Software Project Management, Walker Royce O grande problema do desenvolvimento cascata é que os riscos do projeto são adiados para a fase final do desenvolvimento, onde é mais custoso realizar alterações no mesmo. A fase de testes de todo o sistema, onde a maioria dos problemas são detectados, é realizada apenas na última etapa do desenvolvimento. A descoberta tardia de defeitos de projeto, em geral, resulta em orçamento estourado e, em alguns casos, cancelamento do projeto. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Modelo Iterativo Aplicação do modelo cascata iterativamente As iterações iniciais atacam os maiores riscos Req A&P Imp I/T Iteração 1 Req A&P Imp I/T Iteração 2 Req A&P Imp I/T Iteração 3 O processo iterativo propõe a aplicação do desenvolvimento cascata de forma iterativa, isto é, o sistema é desenvolvido por incrementos (subconjuntos da funcionalidade do sistema). Características do modelo: O desenvolvimento ocorre em várias iterações, cada uma delas resultando em extensão de funcionalidade e/ou maior conhecimento do sistema Os maiores riscos devem ser tratados nas primeiras iterações Cada iteração inclui integração e teste. Uma versão executável é produzida ao final de cada iteração, sendo testada e integrada com o resto do sistema. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho TEMPO

Desenvolvimento iterativo antecipa a redução de riscos 100% Tempo Progresso do projeto (% codificado) Fonte: Software Project Management, Walker Royce Ciclo de vida tradicional iterativo “Throw away a little as you go along, so you do not have to throw it all away at the end.” Grady Booch, Object Solutions – Managing the Object-Oriented Project. “Jogue fora um pouco do trabalho durante o caminho, para não ter que jogar todo o trabalho fora ao final.” Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Modelo Iterativo Testes e integração são realizados desde o início, de forma contínua Riscos críticos são resolvidos antes que grandes investimentos sejam realizados Permite feedback dos usuários desde cedo Pequenos objetivos, foco em curto-prazo Progresso é medido de forma mais concreta Implementações parciais podem ser implantadas Utiliza as vantagens do modelo cascata, sem atrasar a resolução de riscos! Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Programação Exploratória Idéia geral: Desenvolvimento da primeira versão do sistema o mais rápido possível; Modificações sucessivas até que o sistema seja considerado adequado; Após o desenvolvimento de cada uma das versões do sistema ele é mostrado aos usuários para comentários. Adequado para o desenvolvimento de sistemas onde é difícil ou impossível de se fazer uma especificação detalhada do sistema; Principal diferença para os outros modelos é a ausência da noção de programa correto. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Programação Exploratória Tem sido mais usada no desenvolvimento de sistemas de inteligência artificial -- geralmente sistemas que tentam emular capacidades humanas; Em geral este tipo de desenvolvimento exige ferramentas de alto nível e máquinas poderosas e dedicadas; A maioria dos sistemas desenvolvidos com sucesso usando a programação exploratória foi implementada usando pequenos grupos de profissionais altamente qualificados e motivados. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Programação Exploratória É raramente usada no desenvolvimento de sistemas de grande porte e de vida longa. Principais razões: Mudanças contínuas tendem a produzir sistemas cuja estrutura é desorganizada. Como conseqüência, a manutenção tende a ser mais difícil e cara. O gerenciamento de projetos de software normalmente se baseia em modelos nos quais deve-se produzir relatórios regulares, usados para avaliar o progresso do projeto. Como na programação exploratória o sistema é modificado com freqüência, não é razoável produzir muita documentação. Ainda não se sabe como utilizar grandes grupos de pessoas eficientemente neste tipo de desenvolvimento. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Prototipagem descartável O objetivo é entender os objetivos do sistema. Começa com requisitos vagamente entendidos. Como na programação exploratória, a primeira fase prevê o desenvolvimento de um programa para o usuário experimentar. No entanto, o objetivo aqui é estabelecer os requisitos do sistema. O software deve ser reimplementado na fase seguinte. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Prototipagem descartável A construção de protótipos com os quais os usuários possam brincar é uma idéia bastante atrativa: Para sistemas grandes e complicados. Quando não existe um sistema anterior ou um sistema manual que ajude a especificar os requisitos. Os objetivos do protótipo devem estar bem claros antes do início da codificação. Possíveis objetivos: Entender os requisitos dos usuários. Definir a interface com os usuários. Demonstrar a viabilidade do sistemas para os gerentes. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Prototipagem descartável Uma decisão importante a ser tomada é escolher o que será e o que não será parte do protótipo. Não é economicamente viável implementar todo o sistema! Os objetivos do protótipo são o ponto de partida. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Prototipagem: o que incluir no protótipo? Algumas possibilidades: Implementar todas as funções do sistema mas com um número reduzido de detalhes. Implementar um subconjunto das funções, possivelmente com um número maior de detalhes. Desconsiderar requisitos associados a velocidade, espaço, confiabilidade, etc. A menos que o objetivo do protótipo seja definir a interface com o usuário, desconsiderar a parte de manipulação de erros. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Prototipagem: possíveis vantagens Protótipos contribuem para melhorar a qualidade da especificação dos futuros programas, o que leva à diminuição dos gastos com manutenção. O treinamento dos usuários pode ser feito antes do produto ficar pronto. Partes do protótipo podem ser usadas no desenvolvimento do sistema final. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Prototipagem: possíveis desvantagens Em geral o grande argumento contra a construção de protótipos é o custo. A construção do protótipo atrasa o início da implementação do sistema final. Atrasos são um dos maiores problemas dos projetos de software. Construir um protótipo pode não ser tão mais rápido assim do que construir o sistema final. Se os ambientes utilizados forem diferentes este custo será um custo extra. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Prototipagem: possíveis desvantagens O cliente vê algo que parece ser uma versão do software desejado e não entende porque o produto precisa ser reconstruído. A tendência é o cliente exigir que pequenos acertos sejam feitos para que o protótipo se transforme no sistema final. Freqüentemente a gerência cede ... Muitas das concessões feitas na implementação do protótipo visando a construção rápida podem vir a fazer parte do sistema final. Utilização de linguagens, ferramentas, algoritmos, etc. que sejam inadequados e/ou ineficientes. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

O Modelo Espiral Foi criado visando abranger as melhores características do modelo clássico e da prototipagem. Acrescenta aspectos gerenciais ao processo de desenvolvimento de software. análise de riscos em intervalos regulares do processo de desenvolvimento de software; planejamento; controle; tomada de decisão. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Fases do modelo espiral Definição dos objetivos Objetivos específicos para a fase do projeto são identificadas Avaliação e redução do risco Os riscos principais são identificados, analisados e busca-se informações para reduzir estes riscos Desenvolvimento e validação Escolha de um modelo apropriado para a fase do desenvolvimento Planejamento O projeto é revisto e planos são feitos para o próximo passo da espiral Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

O Modelo Espiral Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

O Modelo Espiral Observações: De um certo modo este modelo é semelhante à programação exploratória. A cada ciclo da espiral, versões progressivamente mais completas do software são construídas; Antes de cada ciclo, uma análise de riscos é feita; Ao fim de cada ciclo é feita uma avaliação se deve-se prosseguir para o próximo ciclo. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Vantagem do modelo espiral Foca atenção nas opções de reuso Foca atenção em eliminação precoce de erros Qualidade desde o início Integra desenvolvimento e manutenção Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Problemas do modelo espiral Contrato de desenvolvimento geralmente já especifica o modelo de processo e produtos (deliverables) É difícil convencer gerentes de que todo este processo é controlável Requer experiência em avaliação de risco Precisa de refinamento para uso geral Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Transformação Formal Idéia geral: Uma especificação formal (definição matemática, não ambígua) do software é desenvolvida e posteriormente transformada em um programa através de regras que preservam a corretude da especificação (passos de refinamento). Graficamente: esp. 1 esp. 2 implement. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Transformação Formal: passos de refinamento Um passo de refinamento transforma especificações abstratas em outras especificações mais concretas através de regras matemáticas predefinidas. Aplicações sucessivas do passo: o processo pára quando a especificação gerada é um programa executável. Teoricamente, a cada passo de refinamento deve-se provar que as novas especificações mantêm todas as propriedades das anteriores. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Transformação Formal: motivação A grande motivação por trás da idéia de refinamento formal é a possibilidade de gerar automaticamente programas que são corretos por construção. O próprio processo de desenvolvimento garantiria que o programa faz exatamente o que foi especificado. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Transformação Formal: problemas O uso de refinamento não é adequado para o desenvolvimento de sistemas de grande porte, pelo menos atualmente. Provadores de teoremas atuais são muito lentos e rudimentares. Distância entre as linguagens de especificação e programação ainda é muito grande. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Transformação Formal: perspectivas Não é certo que vá ser realmente possível gerar programas de grande porte baseando-se em uma plataforma ilimitada. Possibilidades mais realistas incluem: Domínios específicos de aplicações. Linguagens de programação mais poderosas. Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho