Engenharia de Software Tecnologia em Análise e Desenvolvimento de Sistemas 1. O que é software? 2. O que é Engenharia de Software? 3. Qual é a diferença entre Engenharia de Software e Engenharia de Sistemas? 4. O que é um processo de software? 5. O que é um modelo de processo de software? 6. Quais os desafios enfrentados pela Engenharia de Software? 7. Quais os atributos de um bom software? Engenharia de Software - Professor Gabriel Baptista 1. O que é Engenharia de Sistemas? 2. Algumas características dos sistemas? 3. Como se dividem os requisitos de um sistema? 4. Como modelar um sistema? 5. Quais os componentes funcionais dos sistemas? 6. Quais as fases de um processo de Engenharia de Sistemas? 7. 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 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) (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 Modelo evolucionário (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 • Processos iterativos! o 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 (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