ENGENHARIA DE SOFTWARE PROFº Luiz Fernando de Oliveira Nunes Aula 03: Conceitos e Princípios de Engenharia de Software O que é Engenharia? Engenharia do latim ingeniu = faculdade inventiva, talento. O que é Engenharia? Seria a arte, a ciência e a técnica de bem conjugar os conhecimentos especializados (científicos) de uma dada área do saber com a sua viabilidade técnico-econômica, para produzir novas utilidades e/ou transformar a natureza, em conformidade com idéias bem planejadas e em observância à preservação e conservação ambiental, na escala que se fizer necessária O que é Software? Alguma definição da sala? O que é Software? “Conjunto de instruções, programas e dados a eles associados, empregados durante a utilização do computador” “Programas de computador, entidade abstrata e ferramentas que exploramos recursos de hardware, resolução de problemas, interação com a máquina tornando o computador operacional” Mais amplamente inclui também: Instruções que executam uma função desejada. Estrutura de dados para manipular informações. Documentos para desenvolver, operar e manter os programas. O que é Engenharia de Software? Desenvolvimento multi-versional de software multi-pessoal Abordagem sistemática, disciplinada e quantificada ao desenvolvimento, operação e manutenção de software. O que é Engenharia de Software? Tem por objetivo definir e exercitar processos, métodos (planos de processo), ferramentas e ambientes (máquinas apoiando processos e métodos) para construção de software que satisfaça necessidades de cliente e usuário dentro de prazos e custos previsíveis. Visão Macro da Engenharia de Software Dificuldades para desenvolvimento de Software Saber o que o software deve fazer: requisitos Ferramentas, linguagem, SO Tempo e custo elevado para desenvolvimento Dificuldades para desenvolvimento de Software Prever falhas Tratar versões e manutenções Produtividade não cresce com a demanda de serviços Características do Software não é manufaturado custos estão relacionados ao desenvolvimento e não à manufatura não é um elemento físico e sim lógico ( não visualizamos, medimos, etc) Características do Software o processo de gerenciamento é diferente, pois o relacionamento entre pessoas é diferente não há peças de reserva para manutenção, correção e aperfeiçoamento não se utiliza componentes prontos em sua construção Características do Software existem abordagens distintas para se chegar no produto final Por fim, o software não se desgasta com o uso, mas sim deteriora-se Fundamentos de Engenharia de Software: Objetivos: Melhorar a qualidade do software Como? Utilizando um conjunto de métodos, técnicas e ferramentas para analisar, projetar e gerenciar o desenvolvimento e manutenção de software. Fundamentos de Engenharia de Software: Em suma: Engenharia de Software seria: Princípios<Métodos e Técnicas<Metodologias<Ferramentas Fundamentos de Engenharia de Software: Métodos e Técnicas: como fazer Metodologia: como aplicar Ferramentas: automatizam os métodos, dando apoio à utilização dos mesmos Princípios da Engenharia de Software: - Formalidade: reduz inconsistências - Abstração: aspectos importantes, ignorar detalhes - Decomposição: lidar com complexidade - Generalização: reutilização, custo - Flexibilidade: mudanças, processo incremental Engenharia de Software para que? Quadrinhos sobre desenvolvimento de Software O cliente queria isto: Isso foi como ele explicou para o lider de projeto O analista especificou assim O programador entendeu assim E desenvolveu o aplicativo assim Resultado do teste de carga Os beta testers receberam isso O suporte instalou isso no cliente E cobrou isso Como os patches devem ser aplicados O projeto foi todo documentado assim Os consultores em marketing descreveram assim E o software foi anunciado assim Quando ele foi entregue Solução do suporte para alguns problemas Resultado do efeito Digg no site do aplicativo A versão Open Source