View
39
Download
2
Embed Size (px)
Citation preview
Engenharia de Softwares e Gerência de Projetos
Prof. Rudson Kiyoshi Souza Carvalho Anhanguera - 2015
Engenharia de Software - Parte 2
Engenharia de Softwares e Gerência de Projetos.
Processos de Software
O que é um processo de Software?
• Um processo de software é um conjunto de atividades relacionadas que levam à produção de um produto de software. Essas atividades podem envolver o desenvolvimento de software a partir do zero em uma linguagem padrão de programação como C# ou Java.
Processo de Software
Modelos de Processos de Software
• O modelo de um processo de software é uma representação simplificada de um processo de software, e existem vários modelos de processo de software (ou paradigmas de engenharia de software)
Obs. cada uma representa uma tentativa de colocar ordem em uma atividade inerentemente caótica
Modelos de Processos de Software
Modelo em Cascata (Waterfall)
Modelo em Cascata• Popularizado na década de 1970;
• Características:
• Composto por uma sequência de atividades;
• Uma atividade começa a executar quando a outra termina;
• Resultado de uma etapa é utilizado na etapa seguinte;
• Guiado por documentos;
• Ciclo de vida mais antigo e mais utilizado.
Modelo em Cascata• Análise e definição de requisitos
• Objetivos, funções e restrições são definidos, com á ajuda de clientes e usuários, e servem como uma especificação do sistema, indicando o que deve ser implementado.
• Design de sistemas e software
• Envolve a descrição do sistema e do software em termos de unidades abstratas e de suas relações, indicando como o software deve ser implementado.
• Implementação e testes de unidade
• As unidades do software devem ser codificadas e testadas individualmente.
• Integração e testes de sistema
• As unidades são integradas e testadas
• Entrega, operação e manutenção
• O sistema é instalado e colocando em operação. A manutenção envolve a correção de erros e evolução do sistema para atender a novos requisitos.
Engenharia de Software © 2008 Jair C Leite
Problemas Comuns no Modelo em Cascata
• Projetos reais raramente seguem o fluxo sequencial que o modelo propõe;
• ︎ Logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural;
• ︎ O cliente deve ter paciência. Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento (na instalação);
• ︎ Difícil identificação de sistemas legados (não acomoda a engenharia reversa).
Desenvolvimento Incremental
Desenvolvimento Incremental
• O desenvolvimento incremental é baseado na ideia de desenvolver uma implementação inicial, expô-la aos comentários dos usuários e continuar por meio da criação de várias versões até que um sistema adequado seja desenvolvido.
Desenvolvimento Incremental
Problemas Comuns no Desenvolvimento Incremental• Do ponto de vista de gerenciamento, a abordagem
incremental tem dois problemas:
• O processo não é visível. Os gerentes precisam de entregas regulares para mensurar o progresso.
• A estrutura do sistema necessita de diversas refatorações para acomodar as mudanças, e esta tarefa consome tempo e dinheiro.
Engenharia de Software Orientada a Reuso
• Códigos, componentes ou sistemas completos que possuem semelhanças com a implementação desejada são identificados, modificados/adaptados para serem incorporados ao projeto.
Engenharia de Software Orientada a Reúso
Atividades do Processo
• Processos reais de software são intercalados com sequências de atividades técnicas, de colaboração e de gerenciamento, com o intuito de especificar, projetar, implementar e testar um sistema de software.
Especificação do Software
• É o processo de compreensão e definição dos serviços requisitados do sistema e identificação de restrições relativas à operação e ao desenvolvimento do sistema.
Especificação de Software
Projeto e Implementação• É o processo de conversão de uma especificação do sistema
em um sistema executável. Sempre envolve processo de projeto e programação de software, mas, se for usada um abordagem incremental para o desenvolvimento, também pode envolver o refinamento da especificação do software.
• Definição da arquitetura
• Projeto de Interfaces e Componentes
• Modelo de Dados
• Codificação
Validação de Software• Tem a intenção de mostrar que um software se
adequa à suas especificações ao mesmo tempo que satisfaz as especificações do cliente.
• Testes de desenvolvimento
• Testes de sistema (integrado)
• Teste de aceitação
Evolução do Software• Com o decorrer do tempo o software pode mudar,
e o mesmo deverá ser flexível para acomodar futuras mudanças.
Prototipação
• O objetivo é entender os requisitos do usuário e, obter uma melhor definição dos requisitos do sistema.
• Podendo ajudar a validar requisitos e estudar soluções especificas para apoiar o projeto de interface do usuário.
Prototipação
Entrega Incremental• É uma abordagem para desenvolvimento de
software na qual alguns dos incrementos desenvolvidos são entregues ao cliente e implementados para uso em um ambiente operacional.
Estudo de Caso Faz Site
• Atividade individual.
• Para o estudo de caso Faz Site, crie um processo de software que na concepção de vocês garantiriam a entrega do projeto em questão com sucesso.