Engenharia de Software Tecnologia em Análise e Desenvolvimento de Sistemas
O que é Engenharia de Software? O que é software? O que é Engenharia de Software? Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas? O que é um processo de software? O que é um modelo de processo de software? Quais os desafios enfrentados pela Engenharia de Software? Quais os atributos de um bom software? Engenharia de Software - Professor Gabriel Baptista
O que é Engenharia de Sistemas? Algumas características dos sistemas? Como se dividem os requisitos de um sistema? Como modelar um sistema? Quais os componentes funcionais dos sistemas? Quais as fases de um processo de Engenharia de Sistemas? Como faço se preciso comprar um sistema? Engenharia de Software - Professor Gabriel Baptista
O que vem a ser um ciclo de vida? Engenharia de Software - Professor Gabriel Baptista
Atividades fundamentais do Software Especificação: Definição de funcionalidades e restrições Projeto (Desenho) e implementação: Produção do software de acordo com o especificado Validação: Garantia que o software faz o que foi especificado Evolução: Evolução natural para atender às necessidades do cliente. Engenharia de Software - Professor Gabriel Baptista
Não existe um processo de software ideal! Observações Não existe um processo de software ideal! Não existem ferramentas mágicas! A melhoria de processo deve ser implementada! Engenharia de Software - Professor Gabriel Baptista
Modelos de processo de software Genéricos Com o objetivo de mostrar as tendências no desenvolvimento do software Diferentes abordagens Evolução Engenharia de Software - Professor Gabriel Baptista
Modelo em “Cascata” Water-Fall (Royce, 1970) Definição dos requisitos Projeto de sistemas e de software Implementação e testes de unidade Integração e testes de sistemas Operação e manutenção (SOMMERVILLE, 2003) Engenharia de Software - Professor Gabriel Baptista
Modelo em “Cascata” Retrato das atividades fundamentais. Idealizado para não existir iteração entre as fases. Porém, na prática, existe uma pequena iteração. Costuma-se “congelar” determinados documentos a partir de um certo ponto do projeto. Engenharia de Software - Professor Gabriel Baptista
Quais as vantagens do modelo em cascata? Quais as desvantagens do modelo em cascata? Em que tipo de projeto você utilizaria o modelo em cascata? Engenharia de Software - Professor Gabriel Baptista
Observações sobre o modelo em “Cascata” Deve ser utilizado se os requisitos forem bem compreendidos. Ao encontrar um erro, deve-se retornar até a fase causadora do erro e reiniciar o projeto daquele ponto. Engenharia de Software - Professor Gabriel Baptista
Versões intermediárias Modelo evolucionário Atividades concorrentes Especificação Versão inicial Versões intermediárias Descrição do esboço Desenvolvimento Validação Versão final (SOMMERVILLE, 2003) Engenharia de Software - Professor Gabriel Baptista
Modelo evolucionário Dois tipos: Exploratório: Evolução a partir de propostas do cliente Protótipos descartáveis: O objetivo é compreender os requisitos Engenharia de Software - Professor Gabriel Baptista
Quais as vantagens do modelo evolucionário? Quais as desvantagens do modelo evolucionário? Em que tipo de projeto você utilizaria o modelo evolucionário? Engenharia de Software - Professor Gabriel Baptista
Observações sobre o modelo evolucionário Facilidade de interação com o cliente Especificação desenvolvida gradativamente Processo não é visível Sistemas mal-estruturados Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento incremental Desenvolvimento espiral Processos iterativos! Possibilidade de repetição de alguns pontos do processo para redimensionamento ou mesmo melhor entendimento do software. Desenvolvimento incremental Desenvolvimento espiral Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento incremental Definir esboço dos requisitos Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento do sistema Validar incremento Integrar incremento Validar sistema Sistema final Sistema incompleto (SOMMERVILLE, 2003) Engenharia de Software - Professor Gabriel Baptista
Observações sobre o desenvolvimento incremental Meio de reduzir o retrabalho Funções prioritárias devem ser entregues primeiro Risco menor de fracasso total Cuidado com o número de incrementos! Cuidado com o número de funções por incremento! Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento em espiral (Boehm, 1988) (SOMMERVILLE, 2003) Engenharia de Software - Professor Gabriel Baptista
Observações sobre o desenvolvimento em espiral Cada loop representa uma fase do processo: viabilidade, requisitos, projeto, etc. Quatro vetores: Definição de objetivos Avaliação e redução de riscos Desenvolvimento e validação Planejamento Consideração explícita dos riscos Abrangência de outros processos para produção de artefatos. Engenharia de Software - Professor Gabriel Baptista
Momento de reflexão Você consegue visualizar algum destes modelos dentro da sua empresa? Existe uma documentação formal sobre este processo de desenvolvimento dentro da sua empresa? Você conseguiria desenhar o processo de sua empresa? Engenharia de Software - Professor Gabriel Baptista
Importante! Precisamos ter o processo que iremos utilizar em um projeto documentado! Isto faz parte do planejamento do projeto! Engenharia de Software - Professor Gabriel Baptista
Obrigado! Engenharia de Software - Professor Gabriel Baptista