EngSW Aula 1 - Introdução Engenharia de Software

22
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

description

Material do curso de engenharia de software da faculdade unicarioca- rio de janeiro

Transcript of EngSW Aula 1 - Introdução Engenharia de Software

Page 1: 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

Page 2: EngSW Aula 1 - Introdução Engenharia de Software

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?

Page 3: EngSW Aula 1 - Introdução 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

Page 4: EngSW Aula 1 - Introdução Engenharia de Software

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

• Facebook

• 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

Page 5: EngSW Aula 1 - Introdução 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.)

Page 6: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 7: EngSW Aula 1 - Introdução 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?

Page 8: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 9: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 10: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 11: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 12: EngSW Aula 1 - Introdução 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

Page 13: EngSW Aula 1 - Introdução 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

Page 14: EngSW Aula 1 - Introdução 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.

Page 15: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 16: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 17: EngSW Aula 1 - Introdução 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

Page 18: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 19: EngSW Aula 1 - Introdução 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

Page 20: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 21: EngSW Aula 1 - Introdução Engenharia de Software

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

Page 22: EngSW Aula 1 - Introdução Engenharia de Software

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".