Upload
doankhuong
View
217
Download
0
Embed Size (px)
Citation preview
Software
• Como construir?
Produção de Software
Hoje, temos normas da ISO 9003 quecertificam o processo de produção desoftware bem como o software pronto.
Normas exigem qualidade no gerenciamentoNormas exigem qualidade no gerenciamentodo projeto e tais exigências são convertidasem benefícios para os usuários edesenvolvedores.
Ciclo de Vida do Software
Desenvolvimento de um software �feito em fases.Fases colocadas em seqüência � Ciclo de Vida
Ciclo de Vida começa quando o usuário solicita oCiclo de Vida começa quando o usuário solicita osoftware e ocorre a concepção do problema etermina quando o software cai em desuso.
Ciclo de Vida:Ciclo de Vida:Ciclo de Vida:Ciclo de Vida:“o modo como fazemos as coisas por aqui”“o modo como fazemos as coisas por aqui”“o modo como fazemos as coisas por aqui”“o modo como fazemos as coisas por aqui”
Ciclo de Vida do Software
O ciclo de vida deve viabilizar:• Definição de pontos de controle;• Planejamento e acompanhamento do progresso;• Planejamento e acompanhamento do orçamento• Planejamento e acompanhamento do orçamento• Estimativas• Gerência de riscoPermite detectar os problemas exatos
na hora exata.
Modelos de processos
• Especificam:– atividades que devem ser executadas– a ordem em que devem ser executadas.
• Objetivo:Objetivo:– auxiliar processo de produção para ter:
• produtos de alta qualidade,• produzidos mais rápido• a um custo menor.
Modelos de processo
• Focalizam:– “o que”– “como”– “mudanças”– “mudanças”
“O que” será desenvolvido
Que informação vai ser processada;
Que função e desempenho são desejados;
Que comportamento pode ser esperado;Que comportamento pode ser esperado;
Que interfaces serão estabelecidas;
Que restrições de projeto existem;
Que critérios de validação são exigidos para
definir um sistema bem sucedido
O que – 3 tarefas
• Engenharia de sistemas – conhecer o sistema como um todo para que o software
possa ter boa interoperabilidade
• Planejamento do projeto de software– seqüência de tarefas, datas, documentos a serem gerados– seqüência de tarefas, datas, documentos a serem gerados
• Análise de requisitos – coleta de dados intensificada e concentrada no software
“Como” será desenvolvido
• Como os dados serão estruturados;• Como a função será implementada;• Como as interfaces serão caracterizadas;• Como o projeto será traduzido em uma• Como o projeto será traduzido em uma
linguagem de programação;• Como os teste serão efetuados.
Como – 3 tarefas
• projeto do software– deve ser documentado
• geração do código – em linguagem de programação
• teste do software• teste do software– Definindo nível de corretude, confiabilidade,
robustez, desempenho, amigabilidade...
Qualidades de Software
• Corretude – de acordo com especificação funcionalmente corretos.
• Confiabilidade – usuário pode depender dele. Até quando?
• Robustez – capacidade de recuperar-se de erros não • Robustez – capacidade de recuperar-se de erros não previsto(falha HD, queda energia)
• Desempenho – performance – uso recurso computacional
“Mudanças”
• Correção de erros;• Adaptações exigidas conforme o ambiente dosoftware evolui;• Melhoramentos funcionais ocorridos por alteraçõesnos requisitos do cliente.nos requisitos do cliente.
A fase de manutenção reaplica os passos das fasesde definição e desenvolvimento no contexto de umsoftware existente.
Manutenção de Software
• Custos Hardware x Software
– 1970 = 8:2
– 1991 = 2:8
– Hoje = 1:9
• Custos com manutenção• Custos com manutenção
– HP-Alemanha 50% engenheiros envolvidos com manutenção
– VW 80% engenheiros envolvidos com manutenção
Exemplo de fases
• Solicitação do Usuário
• Validação da Solicitação
• Proposta de Sistema
• Projeto de Sistema • Projeto de Sistema
• Desenvolvimento de Sistema
• Manutenção de Sistema
Fase O1- Solicitação do Usuário
Atividades:1 - Pedido do Usuário: E uma atividade informal, na qual o
usuário expõe a sua necessidade e a natureza do problema.
2 - Avaliação do Problema: Faz-se por meio de contatos com o solicitante e/ou encarregado, definindo-se, em linhas gerais, solicitante e/ou encarregado, definindo-se, em linhas gerais, as informações necessárias, sua amplitude, envolvimentos e compatibilidade com o exposto pelo usuário.
3 - Formalização da Solicitação: Consiste em sintetizar, no formulário "Pedido do Usuário", as informações obtidas na atividade anterior e submetê-las à aprovação do usuário, formalmente.
Fase 02 - Viabilização da SolicitaçãoAtividades:
1 - Estudo do Problema: Consiste em identificar a amplitude e a
abrangência do problema, bem como as possíveis soluções, através
de reuniões e contatos com o usuário.
2 - Disponibilidade de Recursos: Consiste em identificar os recursos
necessários às soluções encontradas para o problema que estão ou
poderão estar disponíveis.poderão estar disponíveis.
3 - Relações Custo/Benefício: São elaboradas de modo a favorecer a
compreensão da exata dimensão das soluções encontradas, em
termos de custo de desenvolvimento, tempo necessário e benefícios
a obter.
4 - Relatório Formal do "Estudo de Viabilidade": Consiste em sintetizar,
em um relatório, o resultado do estudo do problema e da(s)
solução(ões) encontrada(s), visando demonstrar a viabilidade da
solicitação do usuário.
Fase 03 - Proposta de SistemaAtividades:
1 - Planejamento do Projeto: consiste em estabelecer a organização
necessária ao desenvolvimento do projeto.
2 - Levantamento Preliminar: nesta atividade, deverão ser obtidas as
informações preliminares da situação atual, relacionando-se as
expectativas referentes à resolução dos problemas apresentados.
3 - Análise dos Dados: serão identificados Os aspectos relevantes do
levantamento preliminar, selecionando-se as informações que
possibilitem estabelecer os objetivos a serem atendidos pela solução,
considerando-se as premissas e restrições do projeto.
4 - Estratégia de Desenvolvimento: é a determinação das metas para as
diversas atividades que serão executadas, levando-se em
consideração aspectos como: recursos disponíveis, prioridades,
políticas em vigor e necessidades do usuário.
Fase 03 - Proposta de SistemaAtividades:
5- Definições Gerais: consiste em estabelecer:
– As principais funções "Input's" e "Output's" e o envolvimento do usuário com cada uma;
– A amplitude do projeto (áreas envolvidas, abrangência da solução);
– Os objetivos a serem alcançados com a execução do projeto;
– Filosofias e enfoques que caracterizam a solução;
– Um relacionamento ou integração da sistemática atual com a proposta; e
– Os procedimentos necessários à segurança do processamento do sistema proposto.– Os procedimentos necessários à segurança do processamento do sistema proposto.
6 - Relatório Formal - Proposta de Sistema: é a elaboração do documento-base desta
fase. Este tem por finalidade obter a aprovação do usuário à alternativa de solução
mais conveniente e autorizar o seu projeto.
* Ponto de Verificação: Avaliar se a solução proposta atende as necessidades do
usuário e se a estratégia de desenvolvimento proposta está compatível com a
filosofia atual da empresa.
7 - Apresentação da proposta: é feita didática e objetivamente, aos envolvidos.
8 – Aprovação: para isto é distribuída, após a apresentação, uma cópia do relatório
formal, devidamente encadernado, às pessoas autorizadas.
Fase 04 - Projeto do Sistema
Atividades:
1 - Avaliação da Proposta: é dirigida aos procedimentos da alternativa
aprovada, levando-se em consideração as eventuais recomendações
e/ou ressalvas feitas pelo comitê de sistemas, por ocasião da
apresentação/aprovação da proposta. Elaboração de um plano de
ação.ação.
* Ponto de Verificação: consiste em aprovar o planejamento das
atividades necessárias ao desenvolvimento
2 - Planejamento do Projeto: é a organização da equipe e do sistema.
3 - Levantamento Detalhado: visa determinar as necessidades de
informação de cada setor, no que concebe à coleta, processamento,
armazenamento e recuperação.
4 - Analise dos Dados: é a revisão do levantamento e o desenho do
sistema a ser envolvido.
Fase 04 - Projeto do SistemaAtividades:
• 5 - Procedimentos especiais: visam fornecer subsídios as áreas de DB (Bancos de Dados) e
TP (Teleprocessamento) para definição dos procedimentos por elas requeridos.
• * Ponto de Verificação: avaliar se o conjunto de definições atende as necessidades da área
de DB e/ou TP.
• 6 - Elaboração do Relatório Formal: deve descrever, detalhadamente, o modelo do sistema a
ser desenvolvido, tendo por finalidade dar ao usuário conhecimento exato das suas rotinas e
procedimentos, para a sua aprovação.procedimentos, para a sua aprovação.
• * Ponto de Verificação: avaliar se 0 modelo proposto atende as necessidades do usuário e se
a estratégia de desenvolvimento está compatível com a filosofia atual da empresa.
• 7 - Apresentação do Projeto: é feita didática e objetivamente aos elementos envolvidos e
abrange:
– Planejamento da apresentação;
– Preparação do material didático necessário;
– Apresentação interna;
– Obtenção da aprovação.
• 8 – Aprovação: é distribuída uma cópia do relatório formal, logo após a apresentação,
devidamente encadernado, as pessoas autorizadas.
Fase O5 - Desenvolvimento de SistemasAtividades:
1 - Revisão de Procedimentos: consiste na reavaliação dos procedimentos definidos
no projeto e no detalhamento das necessidades funcionais, operacionais e técnicas
para o desenvolvimento do sistema.
2 - Planejamento das Atividades: consiste em organizar e distribuir todas as atividades
a serem cumpridas nesta etapa.
* Ponto de Verificação: aprovar o planejamento das tarefas necessárias ao
desenvolvimento do sistema.desenvolvimento do sistema.
3 - Consolidação da Estrutura de Dados: trata-se da revisão e estabelecimento
definitivo do conteúdo de toda a base de dados do sistema, qualquer que seja a
sua característica.
* Ponto de Verificação: avaliar a revisão e a consolidação da estrutura de dados.
4 - Definição das Rotinas de Processamento: consiste em agrupar, logicamente, todos
os processos do sistema, visando ao desenvolvimento modular, estabelecer os
meios, características e detalhes.
5 – Programação: é a distribuição, definição e acompanhamento dos serviços de
programação do sistema.
Fase O5 - Desenvolvimento de SistemasAtividades:
6 - Elaboração dos Manuais Operacionais: consiste em agrupar, didaticamente, as
informações necessárias ao perfeito entendimento do sistema e à sua correta
operação.
7 - Rotina de Conversão: trata-se da criação do processo necessário à conversão da
informações (para sistemas existentes) ou iniciarão da base de dados.
8 – Simulação: consiste em proceder-se à simulação de todo o sistema, mediante teste
integrados de todos os programas, com informações, fluxos e mapas de integrados de todos os programas, com informações, fluxos e mapas de
acompanhamento, para verificação do perfeito funcionamento das rotinas.
* Ponto de Verificação: aprovar resultados obtidos na simulação pelo usuário.
9 – Treinamento: consiste em orientar todos os envolvidos na maneira de utilizar,
opera e controlar o sistema a ser implantado.
10 – Implantação: é a colocação em prática do sistema desenvolvido e a efetivação da
mudanças organizacionais requeridas para a sua correta operação.
* Ponto de Verificação: realizar uma reunião para formalizar a aceitação do sistema
pele usuários e áreas diretamente envolvidas.
Fase 06 - Manutenção do Sistema
Atividades:
1 – Avaliação: consiste em verificar, periodicamente, a "performance" do sistema implantado, efetuando-se correções, ajustes e implementações.
2 - Pedido de Alteração: onde se aponta a natureza do problema, a necessidade e a urgência da solução.problema, a necessidade e a urgência da solução.
3 - Diagnóstico da Solicitação: traçam-se considerações sobre as causas do problema e sobre a solução requerida, determinando-se, em função do "porte" da alteração, a atividade necessária ao desenvolvimento da solução, aplicando-se as fases da metodologia, desde a solicitação do usuário até a implantação da solução, passando-se, obrigatoriamente, pela atualização da documentação necessária.
Alguns modelos de processos
• Ciclo de vida clássico,• Modelo Evolutivo• Modelo Iterativo e Incremental• Etc.• Etc.
Ciclo de Vida Clássico (Modelo em Cascata)
• É um método sistemático e seqüencial, em que o resultado de uma fase se constitui na entrada da outra fase
• Propicia: disciplina, planejamento e gerenciamento.gerenciamento.
• Utilizado quando requisitos estão claros no início do desenvolvimento.
Ciclo de Vida Clássico (Modelo em Cascata)
Análise e
especificação de
requisitos
Projeto
Implementação
e
Teste unitário
Integração e
Testes do
sistema
Operação e
manutenção
Problemas do Ciclo de Vida Clássico
• Rigidez– desvios são desencorajados pois requerem replanejamento;
• Planejamento é orientado para entrega do produto desoftware em uma data única;software em uma data única;
• Processo de desenvolvimento pode ser longo– aplicação pode ser entregue quando as necessidades já
tiverem sido alteradas
Paradigma Evolutivo
• Baseado no desenvolvimento e implementação de um produto inicial, que é submetido aos comentários e críticas do usuário.
• O produto vai sendo refinado através de múltiplas versões, até que o produto de múltiplas versões, até que o produto de software almejado tenha sido desenvolvido.
Paradigma Evolutivo
• Desenvolvimento e validação executadas paralelamente• Rápido feedback entre elas• Desenvolvimento exploratório
– trabalhar junto com o usuário– trabalhar junto com o usuário– descobrir requisitos de modo incremental
• Começa com partes que são mais bem entendidas, ea partir delas ocorre a evolução, à medida que novascaracterísticas são adicionadas depois de sugeridaspelo usuário.
Paradigma Evolutivo
Descrição
Atividades Paralelas
Desenvolvimento
Versão Inicial
Versão Intermediária
Validação
Versão Intermediária
Versão Final
Evolutivo usa Protótipo descartável
• Entender os requisitos do usuário• Obter melhor definição dos requisitos• Fazer experimentos com os requisitos do usuário quenão estão bem entendidos• Útil quando usuário não consegue identificar detalhesde entrada, processamento e saída• Útil quando usuário não consegue identificar detalhesde entrada, processamento e saída• Possibilita criar um modelo do software que lhepermitirá perceber as reações iniciais do usuário eobter sugestões para mudanças.
Problemas do Modelo Evolutivo
• Processo não é visível– desenvolvimento ocorre de modo rápido, não produz
documentos de cada versão do produto• Pobremente estruturados
– mudanças constantes tendem a corromper a estrutura do– mudanças constantes tendem a corromper a estrutura dosoftware
• Cliente confunde protótipo com o próprio sistemafuncionando
• Princípios:– dividir o trabalho em pacotes de trabalho menores,– ordenar por prioridades, desenvolvendo e
implantando um pacote por vez.
Processo Unificado Modelo Iterativo e Incremental
implantando um pacote por vez.– como o software é entregue aos poucos para o
cliente, cada entrega significa um aumento, emrelação ao cenário anterior.
Iterativo
Nível de detalhe vai aumentando em iterações sucessivas
Incremental
Aumenta pouco-a-pouco o escopo do sistema.
Processo Unificado
Vantagens dos Processos Iterativos
• Entrega de pacotes possibilita feedbacks mais cedo.• AntecipaAntecipaAntecipaAntecipa mudançasmudançasmudançasmudanças - quanto mais tardiamente uma
alteração for disparada, maior o retrabalho econseqüentemente maior o custo envolvido.conseqüentemente maior o custo envolvido.
tempo
cust
o
Custo de Alteração
Vantagens dos Processos Iterativos
• ControlaControlaControlaControla riscosriscosriscosriscos:– riscos do projeto são avaliados a cada nova iteração– Verifica se eles foram atenuados ou não e como esses
riscos foram aceitos pelo cliente podendo assim reavaliar osriscos para as próximas iterações.
• FocaFocaFocaFoca oooo desenvolvdesenvolvdesenvolvdesenvolv.... nononono produtoprodutoprodutoproduto dodododo clienteclienteclientecliente:• FocaFocaFocaFoca oooo desenvolvdesenvolvdesenvolvdesenvolv.... nononono produtoprodutoprodutoproduto dodododo clienteclienteclientecliente:– além do produto final existe a produção de artefatos
intermediários.– focar esforços no produto final reduz o desperdício do
projeto.
Vantagens dos Processos Iterativos
• AumentaAumentaAumentaAumenta aaaa qualidadequalidadequalidadequalidade dodododo produtoprodutoprodutoproduto finalfinalfinalfinal:– Se, de um lado, as mudanças podem ser um
obstáculo para os que desenvolvem e para os quecontrolam prazo e orçamento, elas podem tambémindicar que o produto de software está passandoindicar que o produto de software está passandopor ajustes e vai se aproximando da solução idealpara o cliente. Mudanças permitem melhorar asolução de software.
Método ágil
• Atualmente vem sendo muito utilizados os conceitos de desenvolvimento de software ágil que utilizam o modelo iterativo e incremental
• Em 2001,grupo de 17 pessoas, referências mundiais em desenvolvimento de software mundiais em desenvolvimento de software lança o manifesto ágil
Manifesto ágil - Princípios
• Indivíduos e interações são mais importantes queprocessos e ferramentas;
• Software funcionando é mais importante do quedocumentação detalhada;
• Colaboração com o cliente é mais importante do que• Colaboração com o cliente é mais importante do quenegociação de contrato;
• Adaptação à mudanças é mais importante do queseguir o plano inicial.
Manifesto ágil - Motivações
• Reação às metodologias pesadas• Menos orientação ao documento e mais
orientação ao código• Métodos claros e adaptáveis• Métodos claros e adaptáveis• Processos ágeis (evitar atividades que
consomem e não produzem ganhos visíveis)
Metodologias ágeis
• São uma atitude, não um processo prescritivo• É um suplemento aos métodos existentes e não umametodologia completa.• É uma forma efetiva de se trabalhar em conjunto paraatingir as necessidades das partes interessadas noprojeto.atingir as necessidades das partes interessadas noprojeto.• O cliente faz parte da equipe de desenvolvimento.
Metodologias ágeis
• As metodologias ágeis não são contra adocumentação, pelo contrário, elasaconselham a criação de documentos queaconselham a criação de documentos quetenham valor.
Exemplos de métodos ágeis:
• Extreme Programing(XP);• Scrum;• Feature Driven Development(FDD);Feature Driven Development(FDD);• Crystal/Clear;• Dynamic System Development Method(DSDM);• Adaptive Software Development(ASD).