• Nenhum resultado encontrado

Aula1-VisaoGeral

N/A
N/A
Protected

Academic year: 2021

Share "Aula1-VisaoGeral"

Copied!
29
0
0

Texto

(1)

Introdução à Engenharia de

Software – Aula 1

(2)

Roteiro

Software

Importância de Software na Sociedade Atual

Definições de Software

Tipos de Software

Uso de Software

Engenharia de Software

Motivação para Engenharia de Software

Crise de Software

Razões para Falhas em Projetos de Software

Dificuldades Inerentes a Software

(3)

Importância de Software na

Sociedade Atual

A economia das nações é altamente dependente

de software

Vários sistemas são controlados por software

Um celular típico contém cerca de 2 milhões de linhas de código de software (este número deve ser 10 vezes maior em 2010) [1]

A General Motors estima que em 2010 seus carros terão, cada, 100 milhões de linhas de código de software [1]

Um Boeing 787 Dreamliner, que deve ficar pronto em 2010, terá cerca de 6,5 milhões de linhas de código de software [1]

(4)

Importância de Software na

Sociedade Atual

Exemplos de componentes de carros em que há

software embutido:

(5)

Importância de Software na

Sociedade Atual

Custos de software são significativos

Custos de software em um PC são freqüentemente maiores do que os custos de hardware

No caso de carros, por exemplo, os custos de software e eletrônicos foram de 5% em 1970 para 15% em 2005. Em alguns carros atualmente estes custos chegam a 45%. Estima-se que em 10 anos estes custos subam para 80% [1]

(6)

Definições de Software

Programas de computador e documentação

associada [2]

Novo software pode ser criado

Pelo desenvolvimento de novos programas

Pela configuração de sistemas de software genéricos Pelo reuso de software existente

(7)

Definições de Software

De acordo com Brooks [3]:

Um programa é um software

Um programa-produto é um programa que

● Tem documentação e pode ser executado, testado, modificado e estendido por qualquer pessoa

Um sistema de programas é um software que

● Envolve vários programas, projetados para funcionarem integrada e cooperativamente

Sistemas de programa-produto são o objeto da Engenharia de Software

(8)

Tipos de Software

Software de sistema

Programas escritos para servir outros programas

Software aplicativo

Programas standalone que satisfazem uma necessidade de negócio específica

Software científico e de engenharia

Programas que apóiam atividades científicas e de engenharia (design, simulação, cálculos)

(9)

Tipos de Software

Software embarcado

Programas embutidos em produtos e sistemas, que implementam e controlam características e funções para o usuário final ou para o próprio sistema

Software não-determinístico ou de IA

Programas que resolvem problemas complicados e que não são resolvidos diretamente por análise e computação

Software para Web (WebApps)

Programas desenvolvidos para a Web (exemplo: software para e-commerce)

(10)

Uso de Software

Para quê as organizações desenvolvem e

utilizam software?

Reduzir custos, substituindo processos manuais e sujeitos a erros

Aumentar a produtividade das pessoas

Obter capacidades anteriormente não possíveis Aumentar a capacidade de tomar decisões

(11)

Motivação para Engenharia de

Software

(12)

Roteiro

Tópico 1

Subtópico 1

Subtópico 2

Tópico 2

Subtópico 1

Subtópico 2

Tópico 3

Subtópico 1

Subtópico 2

(13)

Crise de Software

Conferências NATO de 1968 e 1969

Uso “oficial” do termo engenharia de software

O propósito era a busca de uma solução para a

crise de software

“The computer industry has a great deal of trouble in

producing large and complex software systems” [4]

Problemas: estouro de orçamento, entrega atrasada,

sistemas não confiáveis e não satisfatórios, sistemas

nunca

entregues,

sistemas

nunca

usados,

dificuldade de manutenção...

(14)

Crise de Software

Segundo Dijkstra, em artigo publicado em 1972: “As

long as there were no machines, programming was no

problem at all; when we had a few weak computers,

programming became a mild problem, and now we have

gigantic computer, programming has become an equally

gigantic problem” [5]

(15)

Crise de Software

Em 1994, Gibbs publica na Scientific American:

Para cada 6 grandes projetos de software que são operacionalizados, 2 são cancelados

Em média, os projetos de desenvolvimento de software estouram seus cronogramas em 50%

¾ dos sistemas de grande porte não fornecem a funcionalidade requerida [6]

(16)

Crise de Software

Os relatórios do Standish Group também mostram dados

(17)

Crise de Software

E atualmente?

2005: O Inferno de Software!

“Software debacles are routine. And the more ambitious the project, the higher the odds of disappointment.”[7]

Apenas 34% dos projetos são entregues dentro

(18)

Caso real: Aeroporto de Denver

Centro de conexões nos EUA

Com área de aterrissagem para três jatos ao mesmo tempo

Software para sistema de controle de bagagem

29 km de esteira para transportar bagagens de 20 cias aéreas

Controle feito por 100 computadores ligados em rede, 5000 sensores, 400 receptores de rádio, 56 leitoras de código de barra

Tudo orquestrado para enviar as bagagens aos seus destinos de forma correta, segura e rápida, por meio de

(19)

Planejamento

Data de inauguração: Outubro/1993

Valor do contrato do sistema: US$ 234 milhões Custo do atraso? US$ 1 milhão/dia

Realização

Inauguração: Fevereiro/1995 (com um sistema provisório) Custo do sistema provisório: US$ 63 milhões

(20)

FBI

Início em 2001: Base de dados com suspeitos de terrorismo

Em Janeiro de 2005: Gastos de US$ 170 milhões: “not

even close to having a working system”

Ford Motors

Início em 2000: Projeto Everest, para substituição de sistema legado

Em Agosto de 2004: US$ 200 milhões acima do orçamento; cancelado (versão beta mais lenta do que o legado)

McDonald's

Início em 1999: Projeto Innovate, com orçamento previsto

(21)

Vôo 965 da American Airlines, de Miami para

Cali

Projeto do sistema feito para melhorar a interação homem-computador → causou um erro e a tripulação não percebeu

Este erro implicou em uma mudança de rota Atingiram uma montanha

159 pessoas de 163 morreram

(22)

Razões de Falhas em Projetos de

Software

Por quê projetos falham?

Prazos não realistas

Mudanças de requisitos

Esforço honestamente subestimado

Riscos não contingenciados (previsíveis ou não) Dificuldades técnicas

Falhas na comunicação da equipe Falta de gerência no projeto

(23)

Razões de Falhas em Projetos de

Software

Software é considerado, por muitos executivos, uma

das áreas com maiores problemas em organizações de

grande porte

Questões críticas para os executivos sêniores

Projetos de software não são estimados nem planejados com precisão aceitável

O relato de status geralmente é errado e pode induzir a erros

A qualidade e confiabilidade de software são geralmente inaceitavelmente baixas

(24)

Razões de Falhas em Projetos de

Software

Reclamações contra os executivos sêniores

Executivos geralmente rejeitam estimativas precisas e cautelosas

Executivos aplicam uma pressão nociva em relação aos cronogramas, que geralmente prejudica a qualidade

Executivos adicionam novos requisitos significativos durante o desenvolvimento

(25)

Dificuldades Inerentes a Software

Projetos de software são como lobisomens

Mas será que há uma “bala de prata” para

software?

“Not only are there no silver bullets now in view, the very nature of software makes it unlikely that there will be any” [3]

Há dificuldades

Inerentes → fazem parte da própria natureza do software Acidentais → presentes atualmente na produção de software, mas que não são parte da essência

(26)

Dificuldades Inerentes a Software

Dificuldades inerentes:

Complexidade (complexity) Conformidade (conformity) Modificabilidade (changeability) Invisibilidade (invisibility)

(27)

Definições de Engenharia de

Software

Sommerville:

“Engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining tthe system after it has gone into into use” [2]

Glossário Padrão de Engenharia de Software da

IEEE:

(1) “The application of a systematic, disciplined and quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software”

(28)

Desenvolver software de forma efetiva

Objetivo da Engenharia de Software

Custo Tempo

(29)

Referências

[1] Charette, R. N. (2009) This Car Runs on Code. Disponível em http://www.spectrum.ieee.org/feb09/7649

[2] Sommerville, I. (2007) Software Engineering. Oitava Edição. Addison-Wesley

[3] Brooks Jr, F. P. (1995) The Mythical Man-Month: Essays on Software Engineering. Edição de Aniversário. Addison-Wesley

[4] Naur, P. e Randell, B. (1969) Software Engineering: Report of a Conference Sponsored by the NATO Science Committee. Germany. Scientific Affairs Division, NATO

[5] Djikstra, E. W. (1972) The Humble Programmer. Communications of the ACM. 15(10), págs 859-866

[6] Gibbs W. W. (1994) Software's Chronic Crisis. Scientific American

Referências

Documentos relacionados

Primeiro, numa biblioteca especializada em História e Ciências Militares localizada na Escola de Comando e Estado-Maior do Exército (ECEME), na Praia Vermelha, Rio

Como visto neste Trabalho de Conclusão de Curso o pátio do Instituto Benjamin Constant deveria refletir uma intensa interação social, pois, é local de acesso tanto dos

All lambs presented a significant drop (P<0.05) in their heart rates (HR) at the points in time evaluated in each group according to gender, number of pups and types of delivery

Em face desta situação, a Emater - MG em parceria com instituições de pesquisa como a Universidade Federal de Viçosa e Embrapa tem buscado a divulgação de alternativas

Assim, o consenso (SBPT, 1996) admite a importância da implantação de um programa de educação em asma que teria como objetivos: informar a população sobre asma, educar

Os resultados da análise multitemporal da vegetação em vigor por meio da diferença normalizada do índice de vegetação (NDVI) foram divididos em resultados gerais da

O objetivo deste estudo foi avaliar a efetividade da citologia de nódulos tireoidianos em um grupo populacional na região nordeste do estado de São Paulo,

Esta imagem ainda nos mostr 00000000000 a o barramento, que funciona como o canal de comunicação entre os diversos dispositivos de um computador. Mas não se