PLANO DE AVALIAÇÕES Engenharia de Software 1ª AP: 08 de setembro 2ª AP: 13 de outubro 3ª AP: 10 de novembro NAF: 17 de novembro Referência bibliográfica: SOMMERVILLE, I. Engenharia de Software. 8ª ed. São Paulo: Pearson, 2007. Prof. Raquel Silveira PRESSMAN, R.S. Engenharia de Software. 6ª ed. São Paulo: McGraw-Hill, 2006. INFORMAÇÕES IMPORTANTES Grupo da disciplina: http://groups.google.com.br/group/ieducare-engenharia-desoftware E-mail de contato: raquel.vsilveira@hotmail.com Resultado: Média: 1AP + 2AP + 3AP >= 7,0 3 Presença >= 75% Software: Definição e Características NAF 4,0 <= Média < 7,0 (NAF + Média) >= 5,0 2 O que é software? O que é engenharia de software? Não é apenas o programa, mas também toda a documentação associada e os dados de configuração necessários para fazer com que esses programas operem corretamente. (SOMMERVILLE, 2007) Tipos de software Produtos genéricos Produtos sob encomendas (personalizados) É uma disciplina da engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios inicias de especificação do sistema até a manutenção desse sistema, depois que ele entrou em operação. (SOMMERVILLE, 2007) 1
O que é CASE? Computer-aided software engineering (engenharia de software com o auxílio de computador). Se refere a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades de processo de software, como a análise de requisitos, modelagem de sistema, a depuração e os testes. Upper-CASE: Apoio as atividades iniciais (requisitos e projeto); Lower-CASE: Apoio as atividades finais (programação, debuggind e teste). Quais são os atributos de um bom software? O software deve fornecer a funcionallidade e o desempenho requeridos para o usuário e deve ser manutenível, confiável e aceitável. Facilidade de manutenção Confiança Eficiência Usabilidade Quais são os desafios enfrentados pela engenharia de software? Heterogeneidade: Técnicas de desenvolvimento para construção de software que podem lidar com plataformas heterogêneas e ambientes de execução. Entrega: Técnicas de desenvolvimento para conduzir a entrega mais rápida. Confiança: Técnicas de desenvolvimento que mostram que o software deve ter a confiança dos usuários. Processo de Software O que é um processo de software? O que é um modelo de processo de software? Conjunto de atividades e resultados associados que geram um produto de software. Há quatro atividades de processos fundamentais comuns a todos os processos de software: Especificação do software; Desenvolvimento do software; Validação do software; Evolução do software. Representação abstrata do processo. Ele apresenta a descrição de um processo a partir de uma perspectiva particular. 2
Ciclo de Vida de Desenvolvimento de Software Descreve como o software deve ser desenvolvido. Define a ordem global das atividades e propõe uma estratégia de desenvolvimento. Modelo em cascata: Fases separadas e distintas de especificação e desenvolvimento. Desenvolvimento evolucionário: Especificação, desenvolvimento e validação são intercalados. Desenvolvimento orientado a reuso: O sistema é montado a partir de componentes existentes. Modelo Cascata Características do Modelo Cascata O resultado envolve um ou mais documentos que são aprovados; A fase seguinte não deve se iniciar até que a fase precedente tenha sido concluída; Na prática os estágios se sobrepõem e trocam informações entre si; Fases do Modelo Cascata Análise e definição de requisitos; Projeto de sistema e software; Implementação e teste de unidade; Integração e teste de sistema; Operação e manutenção; A principal desvantagem do modelo em cascata é a dificuldade de acomodação das mudanças depois que o processo está em andamento. Uma fase tem de estar completa antes de passar para a próxima. Problemas do Modelo Cascata Particionamento inflexível do projeto em estágios distintos, dificulta a respota aos requisitos de mudança do cliente. Este modelo é apropriado somente quando os requisitos são bem compreendidos, e quando as mudanças forem bastante limitadas durante o desenvolvimento do sistema. Poucos sistemas de negócio têm requisitos estáveis. 3
Problemas do Modelo Cascata Pode não permitir a visão real do processo em andamento. Dois universos: Universo que se refere ao processo em andamento; Universo que se refere às mudanças que deveriam ser aplicadas, mas não são pelo fato do modelo não incorporar em sua dinâmica. Difícil mensuração. Atividades não concluídas são rotuladas como concluídas. Tem como base a idéia de desenvolver uma implementação inicial, expôr resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas versões, até que um sistema adequado tenha sido desenvolvido. Modelo Evolucionário Tipos de Modelo Evolucionário Desenvolvimento exploratório: - O objetivo é trabalhar com os clientes e desenvolver um sistema final a partir de uma especificação inicial. Deve iniciar com requisitos bem compreendidos e adicionar novas características à medida que forem propostas pelo cliente. Tipos de Modelo Evolucionário Prototipação descartável: - O objetivo é compreender os requisitos de sistema. Deve iniciar com requisitos mal compreendidos para esclarecer o que é realmente necessário. Tipos de Modelo Evolucionário Prototipação descartável: Problemas do Modelo Evolucionário -Falta de visibilidade de processo; -Os sistemas são frequentemente mal estruturados; -Habilidades especiais (por exemplo, linguagems para prototipação rápida) podem ser solicitadas. 4
Desenvolvimento orientado a reuso Vantagem do Desenvolvimento Orientado a Reuso Baseado em reuso sistemático onde sistemas são integrados a partir de componentes existentes. Estágios do processo Análise de componentes; Modificação de requisitos; Projeto de sistema com reuso; Desenvolvimento e integração. -Reduzir a quantidade de software a ser desenvolvida; -Reduzir custos; -Reduzir riscos. Problema do Desenvolvimento Orientado a Reuso -Perda do constrole sobre a evolução do sistema. Iteração de Processo Entrega Incremental -Requisitos de sistema SEMPRE evoluem no curso de um projeto e, sendo assim, a iteração de processo, onde estágios iniciais são retrabalhados, é sempre parte do processo dos sistemas de grande porte. -A iteração pode ser aplicada a qualquer um dos modelos genéricos do processo. -Duas abordagens (relacionadas) -Entrega incremental; -Desenvolvimento espiral. -Ao invés de entregar o sistema como uma única entrega, o desenvolvimento e a entrega são separados em incrementos, sendo que cada incremento fornece parte da funcionalidade solicitada. -Os requisitos de usuário são priorizados e os requisitos de prioridade mais alta são incluídos nos incrementos iniciais. Entrega Incremental Vantagens da Entrega Incremental -Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são congelados, embora os requisitos para os incrementos posteriores possam continuar evoluindo. -O valor pode ser entregue para o cliente com cada incremento e, desse modo, a funcionalidade de sistema é disponibilizada mais cedo. -O incremento inicial age como um protótipo para auxiliar a elicitar os requisitos para incrementos posteriores do sistema. -Riscos menores de falha geral do projeto. -Os serviços de sistema de mais alta prioridade tendem a receber mais testes. 5
Extreme programming Desenvolvimento em Espiral -Uma abordagem baseada no desenvolvimento e na entrega de incrementos de funcionalidade muito pequenos. -Baeia-se no aprimoramento constante de código, no envolvimento do usuário na equipe e no desenvolvimento e programação em pares. -O processo é representado como uma espiral ao invés de uma sequência de atividades como realimentação. -Cada loop na espiral representa uma fase no processo. -Sem fases definidas, tais como especificação ou projeto os loops na espiral são escolhidos dependendo do que é requisitado. -Os riscos são explicitamente avaliados e resolvidos ao longo do processo. Desenvolvimento em Espiral Desenvolvimento em Espiral -O processo é representado como uma espiral ao invés de uma sequência de atividades como realimentação. -Cada loop na espiral representa uma fase no processo. -Sem fases definidas, tais como especificação ou projeto os loops na espiral são escolhidos dependendo do que é requisitado. -Os riscos são explicitamente avaliados e resolvidos ao longo do processo. Setores do Desenvolvimento em Espiral -Definição de objetivos: -Objetivos específicos para a fase são identificados. -Avaliação e redução de riscos: -Riscos são avaliados e atividades são realizadas para reduzir os riscos-chave. -Desenvolvimento e validação -Um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genéricos, é escolhido. -Planejamento -O projeto é revisado e a próxima fase da espiral é planejada. Atividades de Processo -Especificação de software; -Projeto e implementação de software; -Validação de spftwrae -Evolução de software. 6
-Como definir o modelo de processo do software? -Como definir a iteração do projeto? Exercício Uma empresa de produção de calçados deseja automatizar o setor de estoque e contrata um serviço terceirizado para desenvolver um software que atenda as necessidades. A princípio, existem muitos riscos no projeto, pois o setor de estoque apresenta requisito pouco definido. O cliente pretende esclarecer o quanto antes os requisitos que ainda não estão claros. Exercício Uma rede de hotéis deseja renovar o sistema de controle de hospedagem e contrata um serviço terceirizado para desenvolver um software que atenda as necessidades. A princípio, os requisitos estão muito bem definidos, pois a empresa possui um sistema anterior que facilita o entendimento. O cliente pretende ter um acompanhamento modular do desenvolvimento do software. 7