INTRODUÇÃO A INFORMÁTICA Introdução à Engenharia de Software
Engenharia de Software “Estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais”. Pressman (1995)
Engenharia de Software Todas as definições reforçam a exigência da engenharia no desenvolvimento do software. Ela abrange um conjunto de três elementos fundamentais: - métodos; - ferramentas; - procedimentos.
Métodos Proporcionam os detalhes de “como fazer” para construir o software. Envolvem um conjunto de tarefas: - Planejamento e estimativa de projeto. - Análise de requisitos de software e de sistemas. - Projeto de estrutura de dados. - Programas e algoritmos de processamento. - Codificação. - Teste. - Manutenção.
Ferramentas Proporciona apoio automatizado ou semi-automatizado aos métodos. Engenharia de software auxiliada por computador. CASE (Computer - Aided Software Engeneering). São ferramentas integradas de forma que a informação criada por uma ferramenta possa ser utilizada por outra ferramenta.
Procedimentos Constituem o elo de ligação que mantém juntos os métodos e as ferramentas. Definem : - A seqüência em que os métodos serão aplicados. - Os produtos que ajudam a assegurar a qualidade e coordenar as mudanças. - Marcos de referência que possibilitam os gerentes de software avaliar o progresso.
Engenharia de Software Engenharia de Software compreende um conjunto de etapas que envolve : Métodos, Ferramentas e Procedimentos. Essas etapas são conhecidas como componentes do Ciclo de Vida do Software.
Engenharia de Software Ciclos de Vida mais conhecidos : Ciclo de Vida Clássico; Prototipação; Modelo Espiral; Técnicas de quarta geração
Engenharia de Software Um ciclo de vida é escolhido tendo-se como base : a natureza do projeto e da aplicação; os métodos e as ferramentas a serem usados; os controles e produtos que precisam ser entregues.
Ciclo de Vida Clássico (Cascata) Requer uma abordagem sistemática seqüencial ao desenvolvimento de software. Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutenção
Análise e engenharia de sistemas Ciclo de Vida Clássico Análise e engenharia de sistemas Estabelecimento dos requisitos para todos os elementos do sistema. Envolve a coleta dos requisitos em nível do sistema, com uma pequena quantidade de projeto e análise de alto nível.
Análise de requisitos de software Ciclo de Vida Clássico Análise de requisitos de software O processo de coleta dos requisitos é intensificado e concentrado especificamente no software. O engenheiro de software deve compreender o domínio da informação para o software, bem como a função, desempenho e interface exigidos. Os requisitos tanto para o sistema como para o software, são documentados e revistos com o cliente.
Ciclo de Vida Clássico Projeto Se concentra em quatro atributos distintos do programa: estrutura de dados; arquitetura de software; detalhes procedimentais; caracterização de interface. Traduz as exigências numa representação do software que pode ser avaliada quanto à qualidade antes que a codificação se inicie. É documentado e torna-se parte da configuração do software.
Ciclo de Vida Clássico Codificação O projeto é traduzido em instruções executáveis pelo computador. Se o projeto estiver bem detalhado, a codificação pode ser executada mecanicamente.
Ciclo de Vida Clássico Testes Concentra-se : Nos aspectos lógicos internos do software, garantindo que todas as instruções tenham sido testadas. Nos aspectos funcionais externos, garantindo que a entrada definida produza resultados reais que concordem com os resultados exigidos.
Ciclo de Vida Clássico Manutenção O software sofrerá mudanças depois que for entregue ao cliente. Causas: erros foram encontrados; o software deve ser adaptado a fim de acomodar mudanças em seu ambiente externo. A manutenção de software reaplica cada uma das etapas precedentes do ciclo de vida a um programa existente, e não a um novo.
Ciclo de Vida Clássico É o mais antigo e o mais amplamente usado da engenharia de software. Problemas: Projetos reais raramente seguem fluxo seqüencial que o modelo propõe. Muitas vezes é difícil para o cliente declarar todas as exigências explicitamente. Uma versão de trabalho não estará disponível até um ponto tardio do cronograma do projeto.
Ciclo de Vida Clássico Embora o ciclo de vida clássico tenha fragilidades, ele é significativamente melhor do que uma abordagem casual ao desenvolvimento de software.
Uma visão genérica O processo de desenvolvimento de software contém três fases genéricas, independente do paradigma de software escolhido: 1. DEFINIÇÃO, 2. DESENVOLVIMENTO e 3. MANUTENÇÃO.
Uma visão genérica
Uma visão genérica Definição: “o que” será desenvolvido. Análise do sistema : define o papel de cada elemento num sistema baseado em computador, atribuindo, em última análise, o papel que o software desempenhará. Planejamento do projeto de software : assim que o escopo do software é estabelecido, os riscos são analisados, os recursos são alocados, os custos são estimados e as tarefas e a programação de trabalho, definidas.
Uma visão genérica Definição: “o que” será desenvolvido. Análise de requisitos : o escopo definido para o software proporciona uma direção, mas uma definição detalhada do domínio da informação e da função do software é necessária antes que o trabalho se inicie.
Uma visão genérica Desenvolvimento: “como” será desenvolvido. Projeto de software : traduz os requisitos do software num conjunto de representações que descrevem a estrutura de dados, a arquitetura, o procedimento algorítmico e as características de interfaces. Codificação : as representações do projeto devem ser convertidas numa linguagem artificial que resulte em instruções que possam ser executadas pelo computador. A etapa de codificação realiza essa conversão.
Uma visão genérica Desenvolvimento: “como” será desenvolvido. Realização de testes do software : logo que é implementado numa forma executável por máquina, o software deve ser testado para que se possa descobrir defeitos de função, lógica e implementação.
Uma visão genérica Manutenção:“mudanças” que estão associadas à: CORRECÃO DE ERROS, ADAPTAÇÕES, e AMPLIAÇÕES. Três tipos de mudanças são encontradas durante a fase de manutenção:
Uma visão genérica Correção : mesmo com as melhores atividades de garantia da qualidade, é possível que o cliente descubra defeitos no software. A manutenção corretiva muda o software para corrigir defeitos. Adaptação : com o passar de tempo, o ambiente original para o qual o software foi desenvolvido provavelmente mudará. A manutenção adaptativa resulta em modificações no software a fim de acomodar mudanças em seu ambiente.
Uma visão genérica Melhoramento funcional : à medida que o software é usado, o cliente/usuário reconhecerá funções adicionais que oferecerão benefícios, estendendo o software para além de suas exigências funcionais originais.
Uma visão genérica Atividades de proteção : complementam as fases e passos descritos na visão genérica da Engenharia de Software. Revisões : são feitas para garantir que a qualidade seja mantida à medida que cada etapa é concluída.
Uma visão genérica Documentação : desenvolvida e controlada para garantir que informações completas sobre o sistema e o software estejam disponíveis para uso posterior. Controle das mudanças : é instituído de forma que elas possam ser aprovadas e acompanhadas.