Software e Engenharia de Software ENGENHARIA DE SOFTWARE - PRESSMAN
EngSW Aula 1 - Introdução Engenharia de Software
-
Upload
caillaud-pereira-guimaraes-rander -
Category
Documents
-
view
62 -
download
11
description
Transcript of EngSW Aula 1 - Introdução Engenharia de Software
1
Prof. Rafael Targino [email protected]
Teoria de Engenharia de Software
Aula 1
Introdução Engenharia de Software
Apresentação do Professor
• Formado em Ciência da Computação pela UFRJ e
Mestrado em Engenharia da Computação pela COPPE/UFRJ
• Experiência de 15 anos em análise, projeto e desenvolvimento de sistemas
– Sistema de Obtenção da Marinha (Marinha do Brasil)
– Sistema de Controle de Combustível nuclear das Usinas de Angra dos Reis (Eletronuclear)
– Software para Planejamento de Contratações do Sistema de Controle do Espaço Aéreo Brasileiro (CISCEA/DECEA)
– Arquitetura de Sistemas para o Plano Diretor de Tecnologia da Informação (Furnas Centrais Elétricas)
• Certificações em RUP, Scrum e diversas ferramentas IBM Rational
2
3
Apresentação dos Alunos:
Curso?
Período?
Área de Interesse na Informática?
Faz Estágio?
4
Engenharia de Software
O que vocês acham que é a Engenharia de Software?
3
5
O que é Software?
• Software é:
– Instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados;
– Estruturas de dados que permitem a manipulação das informações;
– Documentos que descrevem a operação e uso dos programas.
Engenharia de Software
6
Programa x Sistema x Software x Aplicação
• Conceitos as vezes utilizados de maneira diferente dependendo do contexto, mas que no fundo representam a mesma coisa
– Um pedaço de código fonte executado por uma máquina para suportar uma necessidade de um usuário
4
7
Quais softwares vocês usam no
seu dia a dia?
8
Exemplos de Softwares
• Programa de Declaração de Imposto de Renda
• Agendamento de Vistoria de Veículo no Detran
• Compra de Ingresso para Shows e Eventos
• Waze / Google Maps
• Internet Banking
• Caixa automático dos Bancos
• Frequência e Folha de Pagamento
• Controle de Tráfego Urbano
• Controle Acadêmico
• Controle de Elevadores
• Automação de Biblioteca
• Sistema de Alarme em Edificações
Engenharia de Software
5
9
Tipos de Software
• Software Básico
– Software que serve a outro software, hardware, processos, pessoas, etc
– Ex: Sistemas Operacionais
• Sistemas de Informação / Sistemas Corporativos
– Sistemas que gerenciam dados de entrada e saída de uma organização e efetuam o seu processamento
• Aplicações
– Programas isolados que resolvem uma necessidade específica do negócio.
• Tempo Real
– Sistema que deve responder com suficiente rapidez (milisegundos) ou o ambiente ficará fora de controle.
– Ex: Sistema de orientação aérea, monitoração de pacientes.
10
Tipos de Software
• Sistema Distribuídos
– Sistemas que executam de forma distribuída em uma rede de computadores. Ex: torrent para download de arquivos
• Software de Apoio à Tomada de Decisão
– Fornece informações relevantes para tomada de decisão nos níveis Estratégico, Tático e Operacional
– Processo de uma fábrica, controle de estoque, etc.
• Software Científico e de Engenharia (especialista)
– Processamento de grandes cálculos (astronomia, biologia molecular, vulcanologia, etc.).
• Software Embutido
– Reside dentro de um produto ou sistema (microondas, automóveis, etc.)
6
11
Características do Software
• Software não é sensível aos problemas ambientais que fazem com que o hardware se desgaste
– O software é desenvolvido, não manufaturado (no sentido clássico)
– Software não se desgasta
– Toda falha indica erro de projeto ou implementação
• manutenção do SW é mais complicada que a do HW.
Engenharia de Software
12 12
Curva de Defeitos para o Hardware
tempo
“desgaste” “mortalidade infantil”
índice
de
falhas
Engenharia de Software
7
13 13
Curva de Defeitos para Software
índice de
falhas
mudança
curva real
curva idealizada
tempo
Engenharia de Software
14
Qual a importância do Software no mundo atual?
8
15
A Importância do Software
• Durante as 3 primeiras décadas da era do computador, o principal desafio era desenvolver um HARDWARE de baixo custo e alto desempenho.
• O hoje o desafio é melhorar a qualidade (e reduzir os custos) das soluções baseadas em SOFTWARE!
Engenharia de Software
Cliente
Software Mobile
O Software está em todo lugar
Internet das Coisas
Banco de Dados
Servidor
Browser APIs dos Aplicativos
BYOD
Bring Your
Own Device
9
17
Engenharia de Software
O que vocês acham que é a Engenharia de Software?
18
Engenharia
• “Arte de aplicar conhecimentos científicos e empíricos e certas habilitações específicas à criação de estruturas, dispositivos e processos que se utilizam para converter recursos naturais em formas adequadas ao atendimento das necessidades humanas” –
Dicionário Aurélio
10
19
O que é Engenharia de Software
• “Engenharia de Software é a aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, operação e manutenção de software”
IEEE Std 610.12 (1990)
Engenharia de Software
Desenvolvimento Manutenção
Ciclo de Vida de Projeto de Software
Operação
20
O que é Engenharia de Software
Engenharia de Software
• Engenharia de Software é a aplicação de um processo disciplinado, sistemático e quantitativo para o desenvolvimento, operação e manutenção de um software
Pressman
Engenharia de Requisitos
Projeto de Sistemas
Desenvolvi-mento
Testes
Processo de Desenvolvimento de Software
Gerência de Projeto de Software
• Disciplinas na Unicarioca – Engenharia de Requisitos
– Análise e Projeto de Sistemas
– Qualidade de Software
– Desenvolvimento de Aplicações Móveis
– Desenvolvimento de Aplicações Web
– Desenvolvimento de Aplicações com BB
– Desenvolvimento de Aplicações Distribuídas
11
21
Engenharia de Software ainda é uma área muito nova
• Tema relativamente novo no sentido do termo Engenharia de Software, causando muitas discordâncias de conceitos consensualmente aceitos, necessitando ainda de efetivas normas norteadoras do assunto.
• Nesse sentido, a sociedade ainda demanda de profissionais capacitados para elevar o software em termos de sistemas organizacionais, contribuindo de fato com as organizações modernas, sejam privadas ou públicas.
Engenharia de Software
22
Engenharia de Software X Engenharia Civil
• Porque pontes são geralmente construídas a tempo e a um custo conhecido e softwares raramente os são?
• Engenharia Civil:
– 3000 anos de experiência a mais
– Clara separação entre especificação e execução
– Especificação detalhada antes de “colocar a mão na massa”
– Uma vez que a especificação é aceita, pouco se pode fazer para alterar
– Terrenos não estão constantemente mudando
Engenharia de Software
12
23
Engenharia de Software X Engenharia Civil
• Engenharia de Software:
– a especificação faz parte da execução
– Códigos fontes são também especificações
– Tendência a clientes solicitar mudanças constantemente
– Em negócios, mudança é uma necessidade
• Conclusão: Projetos de software possuem maiores riscos e devem ser gerenciados com atenção voltada às mudanças
Engenharia de Software
24
Questões de Concurso
• Sobre a engenharia de software, considere: I. Atualmente todos os problemas na construção de software de alta qualidade no prazo e dentro do orçamento foram solucionados. II. Ao longo dos últimos 50 anos, o software evoluiu de um produto de indústria para um ferramental especializado em solução de problemas e análise de informações específicas. III. Todo projeto de software é iniciado por alguma necessidade do negócio. IV. O intuito da engenharia de software é fornecer uma estrutura para a construção de software com alta qualidade. Está correto o que consta em
a) III e IV, somente.
b) II e III, somente.
c) I, II e IV, somente.
d) II, III e IV, somente.
e) I, II, III e IV.
Engenharia de Software
13
25
Questões de Concurso
• Sobre a engenharia de software, considere: I. Atualmente todos os problemas na construção de software de alta qualidade no prazo e dentro do orçamento foram solucionados. II. Ao longo dos últimos 50 anos, o software evoluiu de um produto de indústria para um ferramental especializado em solução de problemas e análise de informações específicas. III. Todo projeto de software é iniciado por alguma necessidade do negócio. IV. O intuito da engenharia de software é fornecer uma estrutura para a construção de software com alta qualidade. Está correto o que consta em
a) III e IV, somente.
b) II e III, somente.
c) I, II e IV, somente.
d) II, III e IV, somente.
e) I, II, III e IV.
Engenharia de Software
Engenharia de Software
14
27
Crise de Software
28
Casos Clássicos de Insucessos de Software (livro Sommerville)
• Therac-25 – Equipamento de Radioterapia
– Entre 1985 e 1987 se envolveu em 6 acidentes, causando mortes por overdoses de radiação.
• Aeroporto Internacional de Denver
– Erros no sistema automático de transporte de bagagens
– Atraso na abertura do aeroporto com custo total estimado em US$360 Milhões
• Foguete Ariane 5 – Agência Espacial Européia – Explosão 40 segundos após a decolagem.
– Destruição do foguete e carga avaliada em US$ 500 milhões.
15
29
A Realidade no Desenvolvimento de Software
• Porcentagem de projetos que terminam dentro do prazo estimado: 10%
• Porcentagem de projetos que são descontinuados antes de chegarem ao fim: 25%
• Porcentagem de projetos acima do custo esperado: 60%
• Atraso médio nos projetos: um ano.
Chaos report 2004
30
A Realidade no Desenvolvimento de Software
• Software pago mas não entregue: 29.7%
• Software que pode ser usado quando entregue: 2%
• Software entregue mas nunca usado: 47%
• Software usado mas posteriormente modificado ou abandonado: 19%
• Software que podia ser usado após feitas mudanças: 3%
Chaos report 2004
16
31
A Crise de Software - Causas
• Introdução de erros no processo
– Má especificação
– Mau projeto
– Má implementação
– Testes incompletos ou mal feitos
• Problemas na comunicação homem-máquina
• Problemas na gerência
– Falta de treinamento em novas técnicas de desenvolvimento
Engenharia de Software
32
A Crise de Software - Causas
• Complexidade
– Especificar sistemas é uma atividade bastante complexa. Não se trata apenas de fazer uns “programinhas”.
• Insatisfação dos usuários
– usuários sentem-se frustrados com sistemas difíceis de serem operados e/ou cujo desenvolvimento se prolonga por vários anos.
– usuário precisa de sistemas funcionando de acordo com suas necessidades
Engenharia de Software
17
33
A Crise de Software - Causas
• Produtividade
– Costuma estar quase sempre aquém do desejado.
• Confiabilidade do Sistema
– Há diversas estatísticas que provam a pouca confiabilidade de boa parte dos sistemas, ou seja, eles não fazem o que deveriam fazer...
• Manutenibilidade
– Facilidade de se modificar um sistema para adaptar-se a circunstâncias novas, inexistentes à época da implantação.
Engenharia de Software
34
Exercício – Telefone sem fio
• No dia 22 de novembro as 20:00hs, no cruzamento da rua Franco da Rocha com Gomes de Melo, um carro a caminho do aeroporto, de placa do Rio de Janeiro, colidiu com um ônibus da linha 572.
• Estavam no interior do carro, o motorista, um senhor de cabelo grisalho, e mais 4 passageiros, sendo 2 crianças, uma de 5 e outra de 9 anos.
• Não houve vítimas. A polícia chegou, registrou a ocorrência e liberou os motoristas
18
35
Problemas
• Porque leva tanto tempo para terminar programas e sistemas?
• Porque os custos são tão altos?
• Porque temos dificuldade de medir o progresso do desenvolvimento do software?
• Porque não conseguimos detectar todos os erros antes de entregar o software aos nossos clientes?
• Porque os usuários estão sempre insatisfeitos com o software entregue?
Engenharia de Software
36
Precisamos de uma Discipl ina que auxil ie na construção e manutenção
de software
Engenharia de Software
Engenharia de Software
19
37
Objetivo do Curso
• Espera-se que os alunos compreendam que o desenvolvimento de software deve seguir uma disciplina apoiada nos conceitos e técnicas da Engenharia de Software para obter produtos com qualidade e produtividade.
38
Como será o Aprendizado neste Curso
• Estudo adicional além das horas de sala de aula
• Frequência em sala de aula é obrigatória
• Listas de Exercícios
• Dinâmicas em Sala de Aula
• Trabalho Prático
• AVA – Ambiente Virtual de Aprendizado
20
39
Avaliações
• 1ª Avaliação (AV1)
– Prova mista (objetiva + discursiva): 10,0 pontos
• 2ª Avaliação (AV2)
– Prova mista (objetiva + discursiva): 6,0 pontos
– Trabalho de grupo: 4,0 pontos
• 2ª Chamada e Avaliação Final (AVF)
– Prova mista (objetiva + discursiva)
• Arredondamento de nota apenas para aqueles que fizeram todas as listas de exercícios
40
Avaliações
• Todas as provas (AV1, AV2, AVF e 2ª Chamada) serão:
– Presenciais
– Individuais
– Sem Consulta
21
41
Bibliografia
• PRESSMAN, R. Engenharia de Software – Uma Abordagem Profissional – 7a. Edição – ArtMed.
• KARAM, O. Et Al. Fundamentos de Engenharia de Software – LTC - 2a Edição -2013
42
Serviços Disponíveis na Unicarioca
• SOA –Serviço de Orientação à Aprendizagem
• SOC – Serviço de Orientação à Carreia
• SOT – Serviço de Orientação Tecnológica
• Letras e Números e Física e Bits&BYtes
22
Mensagem Final
• Nunca é tarde para aprender
• Em 2014, mulher de 97 anos se forma em direito em MG
http://educacao.uol.com.br/noticias/2014/07/18/nunca-e-tarde-para-aprender-
mulher-de-97-anos-se-forma-em-direito-em-mg.htm
"Sei que a minha idade não me dá muito prazo. Por isso, o que eu quero é ser útil a quem me procurar, compartilhar o conhecimento. Se não souber responder algo, vou orientar a pessoa a procurar quem saiba".