Engenharia de Software. Introdução. Leitura: Sommerville Pressman - Ariadne

Documentos relacionados
Engenharia de Software. Introdução. Leitura: Cap1: Sommerville Pressman - Ariadne

ENGENHARIA DE SOFTWARE

Refere-se a um conjunto de problemas encontrados no desenvolvimento de software:

Engenharia de Software: Uma Visão Geral. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2017

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2015

CARGA HORÁRIA Engenharia de Software Código: horas PRÉ-REQUISITOS: Paradigmas de Programação

CARGA HORÁRIA Engenharia de Software Código: horas PRÉ-REQUISITOS: Paradigmas de Programação

Engenharia de Software I

wuniversidade FEDERAL DO MARANHÃO CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO CURSO DE CIÊNCIA DA COMPUTAÇÃO

Engenharia de Software Introdução

Introdução. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

Análise de Sistemas CONTEXTUALIZAÇÃO

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

ENGENHARIA DE SOFTWARE

Engenharia de Software I. profa. Denise Neves

Prof. Tiago Alves de Oliveira

Engenharia de Software

Engenharia de Software

Engenharia de Software

Por que estudar Engenharia de Software AULA PROF. ABRAHAO LOPES

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Introdução à Engenharia de Software

Engenharia de Software I

Desenvolvimento de Projetos

Engenharia de Software

Prof. Luiz A. Nascimento

FUNDAMENTOS DE ENGENHARIA DE SOFTWARE. Professor: Paulo Vencio

Definições e ciclo de vida

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Engenharia de Software: Visão Geral

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix

Engenharia de Software

Introdução a Engenharia de Software

CK119: Engenharia de Software

Introdução a Engenharia de Software. Professor Joerllys Sérgio

ENGENHARIA DE SOFTWARE

- 1ª Lista de Exercícios -

Processos de software

Engenharia de Software I

ENGENHARIA DE SOFTWARE. Introdução

Engenharia Software. Ení Berbert Camilo Contaiffer

Ciência da Computação ENGENHARIA DE SOFTWARE. Capítulo 1 Introdução

S11 - Software e Engenharia de Software

Engenharia de Software

Princípios da Engenharia de Software aula 03

Requisitos de Sistemas

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE

Engenharia de Software

ENGENHARIA DE SOFTWARE

Introdução 2014/1 Prof. Luís Fernando Garcia

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

Engenharia de Software. Engenharia de Software. . Atualmente existe um destaque todo especial para a. Engenharia de Software

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

Projeto de Desenvolvimento de Software

Introdução à Engenharia de Software

Processos de Software

Engenharia de Software

Análise e projeto de sistemas

Apresentação da Disciplina de Engenharia de Software II

Crise do Software. Crise de tecnologia - hardware caminha mais rápido que o software

Engenharia de Software. Prof. Me. Clodoaldo Brasilino

Disciplina que reúne metodologias, métodos e ferramentas a serem utilizados, desde a percepção do problema até o momento em que o sistema

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

S12 - Software e Engenharia de Software

MODELOS DE PROCESSOS (PARTE 2)

Engenharia de Software Processo de Desenvolvimento de Software

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

Análise e Projeto de Software

Manutenção Leitura: Sommerville; Pressman

Conceitos de Engenharia de Software. Prof.ª: Érika A. Barrado

ESUCRI. Análise e Projeto de Sistemas

ANÁLISE E PROJETO DE SISTEMAS

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Engenharia de Software

ISO/IEC 12207: Manutenção

FATORES E MÉTRICAS DE QUALIDADE

Engenharia de Software II

14/11/2013. Capítulo 2. Processos de Software. Tópicos apresentados. Oprocessodesoftware. Modelos de processo de software. Atividades de processo.

Engenharia de Software. Princípios da Engenharia de Software. Princípios da Engenharia de Software

Introdução à Engenharia de Software

Introdução à Engenharia de Software

Engenharia de Software 1

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Transcrição:

Engenharia de Software Introdução Leitura: Sommerville Pressman - Ariadne Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 1

Engenharia de Software Ementa Conceitos de Engenharia de Software. Produto e processo de desenvolvimento de software. Extração, análise e especificação de requisitos. Métodos de desenvolvimento de software. Verificação, validação e manutenção de especificações de software. Planejamento e gestão de projetos. Estimativas: métricas e modelos de custo, estudo de viabilidade Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 2

Engenharia de Software Programa 1. INTRODUÇÃO 1.1 Definições e Objetivos 1.2 Conceitos Básicos 1.3 Características do Software 1.4 Componentes e Aplicações do Software 2. PROCESSO DE SOFTWARE 2.1 Modelo de Processo 2.2 Ciclo de Vida Clássico/O Modelo Cascata 2.3 Modelo Evolucionário 2.4 Modelo Espiral 2.5 Técnicas de Quarta Geração 2.6 Desenvolvimento Rápido de Software 2.7 Combinando Paradigmas Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 3

Engenharia de Software Programa 3. REQUISITOS DE SOFTWARE 3.1 Classificação de requisitos 3.2 Técnicas de extração de requisitos 3.3 Documento de requisitos de software 3.4 Processos de Engenharia de Requisitos 4. GERENCIAMENTO DE CUSTO 4.1 Planejamento 4.2 Estudo de Viabilidade 4.3 Estimativa 4.4 Gerenciamento de Pessoal 4.6 Gerenciamento de Grupos Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 4

Engenharia de Software Programa 5. MODELOS DE SISTEMA 5.1 Modelos de Contexto 5.2 Modelos de Comportamento 5.3 Métodos Estruturados 5.4 Métodos Orientado a Objeto Casos de Uso 6. MODELO PARA PROJETO 6.1 Hierarquia de módulos e objetos 6.2 Estratégias para derivar o projeto 6.3 Qualidade do projeto: coesão, acoplamento Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 5

Engenharia de Software Programa 7. MODELO DE DADOS 7.1 Diagrama de Entidade e Relacionamento 7.2 Tipos de Entidades 7.3 Tipos de Relacionamento 7.4 Normalização 8. VERIFICAÇÃO, VALIDAÇÃO E TESTE 8.1 Planejamento de verificação e validação 8.2 Inspeções de Software 8.3 Teste de Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 6

Engenharia de Software Programa 9. EVOLUÇÃO DE SOFTWARE 9.1 Manutenção de Software 9.2 Tipos de Manutenção 9.3 Previsão de mudanças 9.4 Processo de Evolução 9.5 Evolução de Sistemas Legados 10. GERENCIAMENTO DE QUALIDADE 10.1 Qualidade de Processo e de Produto 10.2 Padrões de Qualidade 10.3 Controle de Qualidade 10.4 Métricas de Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 7

Engenharia de Software Bibliografia Básica BIBLIOGRAFIA Sommerville, Ian, Engenharia de Software. Ed. Addison Wesley, 8º Edição PRESSMAN, ROGER, Engenharia de Software. Ed. Mc-Graw Hill, 6º Edição, 2006. POMPILHO, S. Análise Essencial Guia Prático de Análise de Sistemas. Ed. Infobook, 1995. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 8

Engenharia de Software Bibliografia de Apoio BIBLIOGRAFIA DAVIS, W. S. Análise e Projeto de Sistemas Uma Abordagem Estruturada. Ed Livros Técnicos e Científicos. 1987. YOURDON, E. AND CONSTANTINE, L Structured Design. Ed. Yourdon Press, 1978 NETO, ACÁCIO F.. Engenharia da Informação. McGraw,1988. MARTIN, JAMES & MCCLURE C. Técnicas Estruturadas e CASE. McGraw,1971 http://wps.prenhall.com/br_pfleeger_engsoftware_2 www.aw.com/sommerville_br Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 9

Objetivos Compreender o que é Engenharia de Software e por que ela é importante. Mostrar as distinções e relacionamentos entre sistema e software. Mostrar as principais questões sobre engenharia software. Compreender questões profissionais e éticas relevantes para os engenheiros de software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 10

Por que? Por que tanta demora para entregar o sistema? Por que os prazos se atrasam? Por que os custos são altos? Por que não achar todos os erros antes de entregar? Por que é difícil medir o progresso do desenvolvimento de um software? Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 11

Desafio No mercado atual, não há dúvida de que os profissionais de TI envolvidos com projetos de desenvolvimento de software e soluções corporativas têm um claro desafio: PRODUZIR soluções mais rápidas, melhores e mais baratas que antes (melhor ainda ser mais rápidas, melhores e mais baratas que a concorrência) Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 12

Desafio Desenvolver software é um problema de métodos e técnica, em suma, de atividade humana. Hoje a TI está comprometida com o SUCESSO - significa COMPETITIVIDADE, fazer mais, melhor e mais barato. Gerenciar projetos de TI é gerenciar riscos assumidos e vencidos por seres humanos inteligentes. PESSOAS precisam de investimentos massivos!!! (SOLUÇÃO). Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 13

Evolução do Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 14

!" #$

Aplicação do Software Básico Coleção de programas escritos para apoio a outros programas. Tempo Real Comercial Científico e de engenharia Software que monitora / analisa / controla eventos do mundo real. Processa informações comerciais, reestruturação de dados para tomada de decisões. Algoritmos de processamento de números(astronomia à vulcanologia). Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 15

Aplicação do Software Embutido usado para controlar produtos e sistemas para os mercados industriais e de consumo. Computador Pessoal Processamento de textos,planilhas, computação gráfica. Inteligência Artificial faz uso de algoritmos não numéricos para resolver problemas que não sejam favoráveis à computação ou à análise direta. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 16

Componentes do Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 17

O que é Sistema? Um sistema é um conjunto de elementos interdependentes que realizam operações visando atingir metas especificadas. Sistema de Computação baseado em computador, é aquele destinado ao suporte ou automação de tarefas através de processamento de informações. Cada vez mais os sistemas possuem componente computacional, controlado por software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 18

Componentes de Sistemas de Computação Hardware Computadores, periféricos e redes Software Os programas e arquivos de dados Informações Coleção de informações organizadas e sistematizadas necessárias ao desempenho das tarefas e procedimentos Usuários Usuários e operadores que realizam as tarefas e procedimentos. Procedimentos Atividades realizadas pelos usuários e operadores, bem como pelos programas (procedimentos automatizados). Documentação Manuais e formulários que descrevem as operações do sistema. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 19

Exemplos de Sistemas Computacionais Automação Bancária Freqüência e Folha de Pagamento Controle de Tráfego Urbano Controle Acadêmico Editoração de Jornais e Revistas Controle de Elevadores Automação de Biblioteca Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 20

O que é Software? Programas de computadores associados a documentação. Um programa é um conjunto de soluções algorítmicas, codificadas numa linguagem de programação, executado numa máquina real. Tipos de produtos de software: Genéricos (COTS Commercial Off-The Shelf) - tipo stand-alone, pacotes de software, como por exemplo, processadores de texto, ferramentas de gerenciamento. Sob encomenda ( personalizado) desenvolvido para um cliente em particular. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 21

O que é Software? Analisar as características que o tornam diferente dos outros produtos: Hardware: produto em forma física Software: elemento de sistema lógico Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 22

Características do Software Complexidade Software é mais complexo do que qualquer outro produto construídos por seres humanos Mutabilidade Existe sempre uma pressão para se fazer mudanças em um software Conformidade O software deve ser desenvolvido conforme o ambiente. Não é o ambiente que deve se adaptar ao software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 23

Características do Software Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico (industrial) sucesso é medido pela qualidade e não quantidade Não se desgasta, mas se deteriora devido as mudanças A maioria é feita sob medida em vez de ser montada a partir de catálogos de componentes existentes (reusabilidade de software). Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 24

Falhas do Hardware Defeitos de projeto e manufatura índice de falhas mortalidade infantil desgaste Problemas Ambientais (poeira, vibração, abuso, temperaturas,...) tempo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 25

Falhas do Software mudanças índice de falhas curva real curva idealizada tempo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 26

Falhas do Hardware/Software Quando um componente de hardware se desgasta é substituído por uma peça de reposição Não existe peça de reposição para software Toda falha indica um erro no projeto ou no processo de tradução para o código executável Manutenção do software é mais complexa do que a do hardware Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 27

Formas do Software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 28

Crise do Sofware Refere-se a um conjunto de problemas encontrados no desenvolvimento de software: (problemas não se limitam a softwares que não funcionam adequadamente) Prazos ultrapassados Custos acima do previsto Não atendimento dos requisitos do usuário Elevado custo de manutenção 1/3 dos projetos são cancelados 2/3 dos projetos extrapolam o orçamento Custo hardware x software» 1970 = 8:2» 1991 = 2:8» Hoje = 1:9 Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 29

Crise do Sofware As estimativas de prazo e de custo são imprecisas Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software Estimativas são feitas a olho, com resultados ruins Os prazos arrastam-se por meses Causa insatisfação para o cliente e falta de confiança Sem nenhuma indicação sólida de produtividade, não podemos avaliar com precisão a eficácia de novas ferramentas, métodos ou padrões Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 30

Crise do Sofware A produtividade das pessoas da área de software não tem acompanhado a demanda por seus serviços Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente A comunicação entre o cliente e o desenvolvedor de software é muito fraca Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 31

Crise do Sofware A qualidade de software frequentemente é inadequada Não uso de técnicas de teste sistemáticas e completas Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 32

Crise do Sofware O software existente é muito difícil de manter A tarefa de manutenção devora o orçamento destinado ao software A facilidade de manutenção não foi enfatizada como um critério importante ===================================== Solução para a Crise do Sofware Engenharia de software aliada a técnicas e ferramentas Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 33

Falhas Famosas de Software - Ariane 5, 1996 Ariane O foguete explodiu 40 segundos após a sua primeira decolagem. Prejuízo de US$ 500 milhões Foi aproveitado um pacote de software de navegação do Ariane 4 que não tinha erros. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 34

Falhas Famosas de Software - Ariane No módulo Sistema de Referencia Inercial uma conversão de valores de 16-bits para 64-bits causou um operando inválido que o interrompeu A falha no SRI levou o computador de bordo a modificar a trajetória do foguete levando à ruptura de juntas e isto causou a ativação da auto-destruição. No Ariane 5, o módulo SRI só deveria ter sido utilizado antes do lançamento. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 35

Falhas Famosas de Software - - LAS London Ambulance System - despacho de ambulâncias em Londres, 1992. Morte de pessoas que não foram socorridas em tempo. Problema de Gerência de Software: Responsáveis contrataram uma empresa desconhecida cujo valor cobrado era menor que os cobrados pelas empresas de renome. Colocaram o sistema no ar sem os devidos testes. Não foi feita uma migração correta do sistema antigo para o novo. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 36

Falhas Famosas de Software - - Therac-25 Máquina de radioterapia com software controlador (1985-87). O controle de segurança feito pelo hardware em máquinas anteriores foi removido e passou a ser feito pelo software. O software falhou na tarefa de, ao mesmo tempo, manter invariantes essenciais: o feixe de elétrons e o dispositivo que controla a concentração do feixe em níveis seguros. Diversas mortes em decorrência de queimaduras. O programador não tinha experiência em programação concorrente. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 37

Falhas Famosas de Software - Denver Sistema de triagem/controle de bagagem do aeroporto internacional de Denver (EUA) Objetivo: Sistema para controlar 4000 "telecars" ao longo de 21 milhas de trilhos, transportando a bagagem entre os portões e as áreas de retirada de bagagem de 20 companhias aéreas. Características: Uma rede de cerca de 100 computadores, 5000 "olhos eletrônicos", 400 receptores de rádio e 56 leitores de códigos de barra, organizando o transporte e entrega segura de cada mala ou valise desde a chegada ao aeroporto até a entrega ao passageiro e respectiva conferência. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 38

Falhas Famosas de Software - Denver Problemas: Atrasou a inauguração do aeroporto. Custo do sistema: US$ 193 milhões Inauguração estava prevista para Out/1993. Em Junho/1994 o sistema ainda não estava funcionando e causava prejuízos de US$ 1,1 milhão/dia No começo de 1995 um controle MANUAL de bagagem foi instalado para que o aeroporto pudesse ser inaugurado (com atraso de mais de um ano) Problema de planejamento e gerenciamento. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 39

Causas dos problemas associados à crise de software FILOSOFIA DO SOFTWARE FALHAS DAS PESSOAS RESPONSÁVEIS PELO DESENVOLVIMENTO DE SOFTWARE MITOS DO SOFTWARE Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 40

Causas PRÓPRIO PRIO CARÁTER DO SOFTWARE O software é um elemento de sistema lógico e não físico. Conseqüentemente o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas. FALHAS DAS PESSOAS RESPONSÁVEIS PELO DESENVOLVIMENTO DE SOFTWARE Gerentes sem nenhum background em software Os profissionais da área de software têm recebido pouco treinamento formal em novas técnicas para o desenvolvimento de software Resistência a mudanças. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 41

Mitos do Software O estabelecimento de objetivos gerais é suficiente para se começar a escrever programas. Mudanças no software podem ser feitas facilmente porque ele é "flexível". Um projeto é bem sucedido se conseguirmos um programa funcionando corretamente. Administrativos, do Cliente e do Profissional Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 42

Mitos Administrativos Gerentes se encontram sob pressão manter orçamentos evitar que os prazos sejam ultrapassados melhorar a qualidade Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 43

Mitos Administrativos Mito: Já temos um manual repleto de padrões e procedimentos para a construção de software. Realidade: Será que o manual é usado? Os profissionais sabem que ele existe? Ele reflete a prática moderna de desenvolvimento de software? Ele é completo? Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 44

Mitos Administrativos Mito: Meu pessoal tem ferramentas de desenvolvimento de software de última geração; afinal compramos para eles os mais novos computadores. Realidade: É preciso muito mais do que os mais recentes computadores para se fazer um desenvolvimento de software de alta qualidade. Ferramentas de engenharia e software auxiliada por computador CASE (Computer-Aided Software Engineering) são mais importantes do que o hardware Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 45

Mitos do Clientes Mito: Uma declaração geral dos objetivos é suficiente para se começar a escrever programas - podemos preencher os detalhes mais tarde. Realidade: Uma definição inicial ruim é a principal causa de fracassos dos esforços de desenvolvimento de software. É fundamental uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições de projeto e critérios de validação. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 46

Mitos do Clientes Mito: Os requisitos de projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível. Realidade: Requisitos podem ser mudados, mas o impacto varia de acordo com o tempo que é introduzido (projeto e custo) Um mudança, quando solicitada tardiamente num projeto, é mais dispendiosa do que a mesma mudança solicitada nas fases iniciais Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 47

Mitos do Profissional Mito: Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo. Realidade: Os dados da indústria indicam que entre 50 e 70% de todo esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 48

Mitos do Profissional Mito: Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade. Realidade: Mecanismo (Revisão Técnica Formal) de garantia de qualidade de software é aplicado desde o começo do projeto Revisões de software são um filtro de qualidade - descobre erros/defeitos Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 49

Mitos do Profissional Mito: A única coisa a ser entregue em um projeto bem-sucedido é o programa funcionando. Realidade: Um programa funcionando é somente uma parte de uma Configuração de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software. A DOCUMENTAÇÃO é o alicerce Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 50

Categorias de Tamanho de Softwares Categoria Tamanho da Equipe Duração Tamanho do Fonte (linhas de código) Trivial 1 1-4 semanas 500 Pequeno 1 1-6 meses 1000 a 2000 Médio 2-5 1-2 anos 5 mil a 50 mil Grande 5-20 2-3 anos 50 mil a 100 mil Muito grande 100-200 4-5 anos 1 milhão Extremamente grande 2000-5000 5-10 anos 1 a 10 milhões ex: O Win 95: teve 11 milhões de linhas e 200 programadores / O Nestscape teve 3 milhões de linhas e 120 programadores Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 51

SOLUÇÃO Reconhecer os problemas e suas causas e desmascarar os mitos do software são os primeiros passos Métodos e Técnicas para o disciplinar o processo de desenvolvimento do software. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 52

Aspectos históricos da Engenharia de Software 1968 Conferência da OTAN Objetivo: resolver a Crise do Software Software é entregue Atrasado Com orçamento estourado Com falhas residuais Eles não encontraram uma solução, mas definiram uma meta: Engenharia de Software (aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software) Custo do hardware decrescente e custo do software em ascensão Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 53

O que é Engenharia de Software? Fritz Bauer 1969 ( primeira definição) O 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 Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 54

O que é Engenharia de Software? IEEE, 1993 A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software. O estudo de abordagens e princípios a fim de obter economicamente softwares confiáveis e que executem de forma eficiente nas máquinas reais Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 55

O que é Engenharia de Software? É uma disciplina de engenharia que se ocupa de todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção. Os engenheiros de software adotam uma abordagem sistemática e organizada em seu trabalho e usam ferramentas e técnicas apropriadas dependendo do problema a ser resolvido. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 56

O que é Engenharia de Software? Programador (técnicas) Engenheiro (técnicas) 1. Paradigma de tentativa e erro 1. Paradigma adaptado ao escopo do sistema 2. Estrutura de Dados 2. Análise e Projeto 3. Linguagens de Programação 3. Ferramentas CASE e SGBD s Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 57

O que é Engenharia de Software? É uma disciplina que integra métodos, ferramentas e procedimentos para o desenvolvimento de software de computador. Possibilitar ao gerente o controle do processo de desenvolvimento Oferecer ao profissional uma base para a construção de software de alta qualidade. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 58

Engenharia de Software - Método Métodos: proporcionam os detalhes de como fazer para construir o software. Envolvem um amplo conjunto de tarefas Um método de ES é uma aproximação estruturada para o desenvolvimento de software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 59

Engenharia de Software - Método Objetivo: Produção de software de alta qualidade de um modo cost-effective (custo-beneficio). Início na década de 70 (DeMarco e Jackson): Identificação dos componentes funcionais básicos de um sistema; Orientado à função; Métodos ainda muito utilizados. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 60

Engenharia de Software - Método 80s-90s Métodos orientados a objeto (Booch e Rumbaugh). classes,objetos. Atualmente os diferentes métodos estão integrados numa aproximação unificada baseada em Unified Modeling Language (UML). Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 61

Engenharia de Software - Método Todos os métodos pretendem Criar modelos do sistema que possam ser representados graficamente; Usar estes métodos como especificação Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 62

Engenharia de Software - Método Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 63

Engenharia de Software - Método Métodos devem incluir os seguintes componentes: Descrição gráficas Regras Recomendações Diretrizes de processo Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 64

Engenharia de Software - Método Descrição gráficas. Descrições dos modelos do sistema que deverão ser desenvolvidos e da notação usada para os definir. Ex. Modelos de objetos, fluxos de dados etc. Regras Restrições que se aplicam a modelos de sistema. Ex.Cada entidade deve ter um único nome. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 65

Engenharia de Software - Método Recomendações Conselho em prática de projeto. Ex. Nenhum objeto deve ter mais que sete sub-objetos. Diretrizes de processo Descrição das atividades que podem ser seguidas. Atributos de objetos devem ser documentados. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 66

Engenharia de Software - Ferramentas Ferramentas : fornecem suporte automatizado ou semi aos métodos. Existem atualmente ferramentas para sustentar cada um dos métodos Quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 67

O que é CASE (Computer-Aided Software Engineering) Sistemas de software automatizado utilizados para apoiar as atividades de processo de software. Upper-CASE Ferramenta para dar apoio às fases iniciais do processo de software. Lower-CASE Ferramenta para dar apoio à implementação a aos testes. Ex.(Poseidon para UML, ArgoUML...) Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 68

Engenharia de Software - Procedimentos Métodos Procedimentos Resultados Ferramentas Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 69

Engenharia de Software - Procedimentos Procedimentos : constituem o elo de ligação que mantém juntos os métodos e as ferramentas para desenvolvimento do software. Seqüência em que os métodos serão aplicados Produtos (deliverables) que se exige que sejam entregues Controles que ajudam assegurar a qualidade e coordenar as alterações Marcos de referência que possibilitam administrar o progresso do software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 70

Princípios da Engenharia de Software Todo engenheiro de software deve desenvolver com: Rigor e Formalidade Separação de interesses Modularidade Abstração Antecipação de mudanças Generalidade Possibilidades de evolução Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 71

Princípios da Engenharia de Software Rigor e Formalidade O rigor é a abordagem que produz produtos mais confiáveis pelo controle das variáveis envolvidas. Formalidade é o requisito de que o processo seja dirigido e avaliado por leis matemáticas. Separação de interesses Separar conceitos permite-nos trabalhar com aspectos individuais e diferentes de um mesmo problema. Esta separação facilita o entendimento, focando a atenção em certas características mais significativas. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 72

Princípios da Engenharia de Software Modularidade Consiste na divisão de sistemas complexos em partes menores e mais simples (módulos) com características desejáveis (coesão e acoplamento). Decomposição é o ato de dividir um problema original em subproblemas recursivamente. Composição é o ato de juntar os elementos componentes de um problema até chegar ao sistema completo. Ajuda na manutenção do sistema. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 73

Princípios da Engenharia de Software Antecipação de mudanças Sistemas de softwares são desenvolvidos enquanto seus requisitos ainda não estão totalmente claros. Quando o sistema é finalmente liberado, novos requisitos podem ser descobertos e velhos requisitos atualizados através do feedback do usuário. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 74

Princípios da Engenharia de Software Generalidade / Especialidade Soluções genéricas tendem a ser mais caras em termos de recursos e em tempo de desenvolvimento, ao contrário das soluções específicas. No processo de produção de software estas questões devem ser cuidadosamente analisadas. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 75

Princípios da Engenharia de Software Incrementabilidade Caracteriza o processo em modo passo a passo, incrementalmente. O objetivo desejado é atingido por aproximações sucessivas. Útil quando os requisitos iniciais não foram todos obtidos antes do início do desenvolvimento da aplicação. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 76

Quais os custos da Engenharia de Software? Não existe uma resposta direta. A distribuição dos custos através do processo de software depende do processo usado e do tipo de software a desenvolver. Custos de desenvolvimento de um software complexo quando se conseguem definir custos separadamente para especificação, desenho, implementação, integração e testes Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 77

Quais os custos da Engenharia de Software? Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 78

Custo em relação a falhas Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 79

Quais os custos da Engenharia de Software? 0 25 50 75 100 Especificação Desenho Desenvolvimento Integração e Teste Custos segundo aproximação evolutiva 0 25 50 75 100 Especificação Desenvolvimento Evolutivo Testes do Sistema Custos relativos entre desenvolvimento e manutenção do software 0 25 50 75 100 Desenvolvimento Manutenção Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 80

Quais os custos da Engenharia de Software? Custos de desenvolvimento de produtos de software genéricos: 0 25 50 75 100 Especificação Desenvolvimento Teste Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 81

Impacto dos custo de manutenção Diferentes tipos de manutenção Manutenção corretiva [aproximadamente 20%] 60 a 70% das necessidades de correção são falhas de especificação ou design Manutenção evolutiva (melhoria) Aperfeiçoamento [aproximadamente 60%] Adaptação [aproximadamente 20%] Grande parte dos esforços em qualidade de software têm sido em melhoria dos processos de software de maneira a diminuir os custos da manutenção. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 82

Quais são os principais desafios enfrentados pela Engenharia de Software? Sistemas de legado Devem ser mantidos e devem ser atualizado Heterogeneidade Operar com sistemas distribuídos e incluem uma mistura de hardware e software Fornecimento Entrega mais rápida de software Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 83

Responsabilidade profissional e ética Confiabilidade respeitar a confiabilidade de seus empregadores ou clientes. Competência os engenheiros não devem aceitar serviços que estejam for a do seu limite de competência. Direito de propriedade intelectual os engenheiros devem estar cientes das leis locais que regulam o uso da propriedade intelectual, como patentes e direitos autorais. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 84

Resumindo Engenharia de Software Aplicação de teoria, modelos, formalismos, técnicas e ferramentas da ciência da computação e áreas afins para o desenvolvimento sistemático de software. Aplicação de métodos, técnicas e ferramentas para o gerenciamento do processo de desenvolvimento. Produção da documentação formal destinada a comunicação entre os membros da equipe de desenvolvimento bem como aos usuários. Encontrar caminhos para se "construir" softwares de qualidade; Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 85

Resumindo Engenharia de Software Ao invés de ser um fator único, a qualidade deve ser vista como a conjunção entre um conjunto de metas; Fatores externos, perceptíveis aos usuários e clientes, devem ser distinguidos dos fatores internos, perceptíveis aos projetistas e implementadores; A manutenção de software, que consome grande parte dos custos do software, é penalizada pela dificuldade em se implementar mudanças no software produto, e pela excessiva dependência dos programas da estrutura física dos dados que eles manipulam. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 86

Prática Visualizando a informática na sua empresa, cite exemplos de: Mitos utilizados pelo analista ou pelo administrador de sua empresa. Falhas que ocasionaram grandes custos. Falhas que ocasionaram mudanças de projetos. Auxiliadora Freire Fonte: Engenharia de Software 8º Edição / Ian Sommerville 2000 Slide 87