EngSW Aula 1 - Introdução Engenharia de Software

Post on 24-Dec-2015

63 views 11 download

description

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

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

1

Prof. Rafael Targino rtargino@unicarioca.edu.br

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

• 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

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