Buscar

Introdução à Engenharia de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução à Engenharia de Software
Sobre mim
Graduação: Ciência da Computação no Centro Universitário de Formiga – UNIFOR;
Pós-Graduação: Engenharia de Software centrada em Métodos Ágeis na UNA – BH;
Experiência de trabalho: 12 anos na área de tecnologia, atuando como professor, desenvolvedor, analista e coordenador de TI. Nos últimos 5 anos atuando como analista de sistemas na Federação das Unimeds de Minas Gerais em Belo Horizonte;
Sobre vocês
Para conhecê-los:
Apresente-se;
Diga se está trabalhando na área de tecnologia ou se já teve experiência na área de tecnologia, especialmente com engenharia de software;
Contrato – Objetivos
Ter uma compreensão dos fundamentos, métodos e padrões da Engenharia de Software;
Perceber os benefícios no uso de Engenharia de Software Ágil;
Trabalhar com artefatos de elaboração requisitos, desenvolvimento, desenho e documentação de usuário, baseados em processo;
Formar a base em processos, modelos, técnicas, práticas e ferramentas que auxiliarão no desenvolvimento de software com qualidade;
Referências
PRESSMAN, Roger S. Engenharia de Software. 6. ed. São Paulo: McGraw Hill, 2006.
SOMMERVILLE, Ian. Engenharia de Software. 6. ed. São Paulo: Pearson Addison Wesley, 2005. 
BOOCH, Grady; JACOBSON, Ivar. UML Guia do Usuário. 2. ed. Rio de Janeiro: Campus, 2000. 
SHORE, James; WARDEN, Shane. A arte do Desenvolvimento Ágil. Rio de Janeiro: Alta Books, 2008.
Ementa
Introdução à Engenharia de Software;
Desenvolvimento Ágil;
Engenharia de Requisitos;
UML;
Ementa
Introdução à Engenharia de Software;
Desenvolvimento Ágil;
Engenharia de Requisitos;
UML;
"Aquele que pergunta é um tolo por cinco minutos, mas aquele que não pergunta permanece um tolo para sempre.“
Provérbio
O que é engenharia?
O que é Engenharia?
Conforme o Dicionário Aurélio, engenharia é:
s.f. Ciência, técnica e arte da construção de obras de grande porte, mediante a aplicação de princípios matemáticos e das ciências físicas.
O que um engenheiro faz?
As funções do engenheiro consistem na materialização de uma ideia na realidade. 
Em outros termos, através de técnicas, desenhos e modelos e com o conhecimento proveniente das ciências, a engenharia pode resolver problemas e satisfazer necessidades humanas.
O que é software?
Qual o conceito de software
Conforme o Dicionário Aurélio, software é:
s.m. (pal. ing.) Conjunto de instruções armazenadas em disco(s) ou em chips internos do computador que determinam os programas básicos, utilitários ou aplicativos, que ele tem para serem usados.
Qual o conceito de software?
Em 1970, menos de 1% da público conseguiria definir o que é um software de computador;
Hoje, a maioria dos profissionais e do público em geral pensam que entendem o que é um software;
São instruções que quando executadas fornecem as características, funções e desempenho desejados; estruturas de dados que permitem aos programas manipular adequadamente a informação; documentos que descrevem a operação e o uso dos programas;
Qual o conceito de software?
Software de computador é um produto que os profissionais de software constroem, e depois, mantém ao longo do tempo;
Abrange programas que executam em computadores de qualquer tamanho e arquitetura;
Documentos tanto em forma impressa quanto virtual que combinam todas as formas de mídia eletrônica;
O que é engenharia de software?
O que é a engenharia de software
Trata de aspectos relacionados ao estabelecimento de processos, métodos, técnicas, ferramentas e ambientes de suporte ao desenvolvimento de software;
Abordagem sistemática para o desenvolvimento de software;
Disciplina da 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 desse sistema, depois que ele entrou em produção;
É a criação e utilização de sólidos princípios de engenharia a fim de obter softwares econômicos que sejam confiáveis e que trabalhem eficientemente em máquinas reais;
O que é a engenharia de software
Software não é mais desenvolvido de maneira artesanal;
São passos claros e com uma sequência lógica desses passos para que o software seja desenvolvido com qualidade e critérios e para que se haja controle entre todos os envolvidos no processo sobre o que está sendo desenvolvido;
Engenharia de software veio para melhorar a qualidade dos softwares, devido a falta de credibilidade dos mesmos;
Objetivos da Engenharia de software
Controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados;
Produtividade no desenvolvimento, operação e manutenção de software;
Qualidade x Produtividade;
Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados;
Características da Engenharia de software
Refere-se a softwares desenvolvidos por grupos ao invés de indivíduos;
Usa princípios da engenharia ao invés da arte;
Inclui tanto aspectos técnicos quanto não-técnicos;
A importância do software
Um software é considerado bem-sucedido quando satisfaz as necessidades das pessoas que o usam;
Tem desempenho sem falhas durante um longo período de tempo;
É fácil de modificar e ainda mais fácil de usar;
O software não é bem-sucedido quando os usuários ficam insatisfeitos;
Demora na entrega ou custos acima dos planejados;
Com tendência a erros;
Difíceis de modificar e mais difíceis de usar
Desenvolvimento x Programação
Programação de software envolve escrever código;
Desenvolvimento de software não é apenas escrever código. 
Envolve todo um processo:
Comunicação com o cliente;
Especificação dos requisitos;
Escrita do código;
Testes;
Documentação;
Entrega;
etc.;
Software não se desgasta, mas deteriora
Diferentemente do hardware que se desgasta, o software se deteriora;
Durante sua vida, o software passará por modificações;
Conforme modificações são feitas, é provável que erros sejam introduzidos causando falhas;
Falhas indicam um erro no projeto, ou no processo pelo qual o projeto foi traduzido para código de máquina executável;
Categorias de software
Software de sistemas;
Software de aplicação;
Software científico e de engenharia;
Software embutido;
Software para linha de produtos;
Aplicações da Web;
Software para inteligência artificial;
Software de sistemas
Programas escritos para servir a outros programas (compiladores, editores e utilitários para gestão de arquivos);
Interação intensa com o hardware do computador;
Uso intenso de múltiplos usuários;
Operação concorrente que requer ordenação, compartilhamento de recursos e sofisticada gestão de processos;
Estruturas de dados complexas e interfaces externas múltiplas;
Software de aplicação
Programas isolados que requerem uma necessidade específica do negócio;
Processam dados comerciais ou técnicos de modo que facilitam as operações e gestão de decisões do negócios;
Controle de funções do negócio em tempo real: processamento de transações de PDV, controle de processo de fabricação em tempo real;
Software científico e de engenharia
Softwares que vão da astronomia à vulcanologia;
Análise automotiva de tensões à dinâmica orbital do ônibus espacial;
Biologia molecular;
Manufatura automatizada;
Software embutido
Reside dentro de um produto ou sistema;
É utilizado para implementar e controlar características e funções para o usuário final;
Funções limitadas e particulares;
Teclado de forno micro-ondas, funções digitais de um automóvel;
Software para linhas de produtos
Fornecer capacidade específica a ser usada por muitos clientes diferentes;
Softwares para controle de estoque;
Processamento de texto, planilhas, gráficos, multimídia, entretenimento, gestão de banco de dados, aplicações financeiras pessoais e empresariais;
Aplicações da Web
Cobrem uma ampla gama de aplicações;
Conjunto de arquivos ligados por hipertexto (HTML) que apresentam informações usando texto e poucos gráficos;
E-commerce;
Sofisticados ambientes computacionais que fornecem não apenas características isoladas, funções de computação e conteúdo para o usuário final, mas também integradasa bancos de dados de empresas e às aplicações do negócio;
Software para inteligência artificial
Faz uso de algoritmos não-numéricos para resolver problemas complexos que não são passíveis de computação ou análise direta;
Incluem robótica, sistemas especialistas, reconhecimento de padrões (imagem e voz), redes neurais artificiais, prova de teoremas e jogos;
Software legado
Softwares criados sem engenharia de software;
Softwares antigos, muito antigos;
Foram desenvolvidos a décadas atrás e têm sido continuamente modificados para satisfazer a mudanças nos requisitos do negócio e nas plataformas de computação;
Dispendiosos de manter e arriscados de evoluir;
Má qualidade;
Documentação pobre ou inexistente;
Mitos do software
“Se eu decidir terceirizar um projeto de software vou poder relaxar e deixar que aquela firma o elabore”;
“O estabelecimento geral de objetivos é suficiente para iniciar a escrita de programas, podemos fornecer os detalhes posteriormente”;
“Os requisitos de projeto mudam continuamente, mas as mudanças podem ser facilmente acomodadas porque o software é flexível”;
Mitos do software
“Quando escrevemos um programa e o fazemos funcionar, nosso trabalho está completo”;
“Até que eu esteja com o programa “rodando” não tenho como avaliar sua qualidade”;
“O único produto de trabalho que pode ser entregue para um projeto de software bem-sucedido é o programa executável”;
“A engenharia de software vai nos fazer criar documentação volumosa e desnecessária que certamente nos atrasará”;
Mitos do Software
“Se nos atrasarmos no cronograma, podemos adicionar mais programadores e ficar em dia”;
FALSO!!!
Mitos do Software
9 meses
1 mês???
Mitos do Software
Mitos do Software
Se colocarmos mais pessoas, os atrasos podem ser ainda maiores;
O agregados precisam aprender o sistema e quem irá treiná-los? As pessoas que estavam fazendo o trabalho. Se estão ensinando os novatos, não podem fazer o trabalho e o projeto atrasa ainda mais;
Outro problema é a comunicação. Com mais pessoas, aumenta a quantidade de canais de comunicação e a complexidade de comunicação do projeto como um todo;
Comunicação é essencial, mas cada novo membro requer esforço adicional e tempo adicional;
Evolução da engenharia de software
1968: Crise do software;
Década de 70: Programação estruturada e Projeto Estruturado;
Década de 80: Análise Estruturada (surgimento das ferramentas CASE);
Década de 90: Análise e Projetos Orientados a Objetos;
Crise do software
Termo utilizado no final dos anos 60 para descrever as dificuldades enfrentadas no desenvolvimento de software, quando a engenharia de software não existia;
Expressa as dificuldades do desenvolvimento de software frente ao rápido crescimento da demanda, a complexidade dos problemas a serem resolvidos e a inexistência de técnicas estabelecidas para o desenvolvimento de sistemas que funcionassem adequadamente;
Possíveis causas da crise
Estimativas de prazo e custo frequentemente são imprecisas;
Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software;
Com poucos dados históricos como guia, as estimativas tem sido a olho, com resultados previsivelmente ruins;
A produtividade das pessoas não tem acompanhado a demanda por seus serviços;
Projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente;
Possíveis causas da crise
Qualidade de software as vezes é menos que adequada;
Software existente é difícil de manter;
Necessidades incompreendidas, expectativas não realistas, estimativas infundadas;
Incapacidade de negociar conflitos entre os envolvidos (equipe, clientes, usuários e qualquer outro afetado pelo projeto);
Mudanças contínuas;
Manifestação da crise do software
Projetos estourando o orçamento;
Projetos estourando o prazo;
Software de baixa qualidade;
Software que não atinge os requisitos;
Projetos ingerenciáveis;
Código difícil de manter;
Muitos projetos atuais continuam com estes problemas, ou seja, a crise do software continua na atualidade;
Crise do software
1968: NATO Software Engineering Conference;
Conferência da OTAN sobre Engenharia de Software;
Objetivo era estabelecer práticas mais maduras para o processo de desenvolvimento;
É considerado o nascimento da disciplina de Engenharia de Software;
Chaos report 1995
Em 1995, a organização The Standish Group publicou um estudo analisando as estatísticas sobre o sucesso e fracasso dos projetos de desenvolvimento de software: o Chaos Report;
84% dos projetos de software são mal-sucedidos, sejam cancelados, fora do prazo ou fora do orçamento, ou com menos funcionalidades que o planejado;
Agências governamentais e companhias privadas americanas gastaram US$ 81 bilhões apenas em projetos cancelados e mais US$ 59 bilhões em projetos concluídos fora do prazo;
Chaos report 2006
Em 2006, 35% dos projetos foram bem sucedidos;
65% dos projetos ainda eram mal sucedidos;
50 anos de experiência no desenvolvimento de software não bastaram para melhorar efetivamente a qualidade do software;
Seria a dificuldade existente no desenvolvimento de software uma característica inerente ao próprio software?
Chaos report 2009
24%
32%
44%
Uso das funcionalidades
45%
19%
13%
16%
7%
Crise do Software
“Muito da crise de software é auto-infligida, como quando um executivo-chefe de informática diz: ‘Eu preferia ter isso errado do que atrasado. Podemos sempre corrigir isso depois.”
Mark Paulk

Outros materiais

Perguntas Recentes