Upload
dangkhuong
View
215
Download
0
Embed Size (px)
Citation preview
CC BY-SA 2017
Engenharia de Computação
CEFET/RJ – campus Petrópolis
Prof. Luis Retondaro – www.retondaro.pro.br
Aula 1
Apresentação
Engenharia de Software
CC BY-SA 20172www.retondaro.pro.br
Introdução
O que é software?– Um programa de computador que
contém estruturas dinâmicas de acesso e armazenamento de dados que manipulam a máquina para processá-los e fornecer resultados formatados e solicitados por uma determinada demanda, seja genérica ou específica, de uma comunidade de usuários.
CC BY-SA 20173www.retondaro.pro.br
Introdução
Qual foi o primeiro software criado?• Se a definição for aceita, o primeiro
software surgiu na Inglaterra em 1948, baseado num sistema criado pelo matemático húngaro John von Neumann (1903-1957).
CC BY-SA 20174www.retondaro.pro.br
Curiosidade
– 100 anos antes de Neumann, esse conceito de software já havia sido imaginado, na teoria, por uma mulher.
– Por isso, muitos estudiosos consideram que a primeira programadora do mundo teria sido a condessa Ada Lovelace (1815-1852)• matemática, filha do célebre poeta romântico inglês Lord Byron.
CC BY-SA 20175www.retondaro.pro.br
Curiosidade
Modelo experimental →
– Tudo começou quando Ada conheceu Charles Babbage, visionário que tentava construir um computador mecânico.
– Entre 1842 e 1843, ela criou notas sobre a máquina analítica de Babbage, que foram republicadas mais de cem anos depois.
– A máquina foi reconhecida como primeiro modelo de computador e as anotações da condessa como o primeiro algoritmo especificamente criado para ser implementado em um computador.
CC BY-SA 20176www.retondaro.pro.br
Histórico
Anos 40– Os primeiros computadores
construídos não possuíam softwares.• os comandos eram implantados na
máquina a partir de conexões físicas entre os componentes
• À medida que se percebeu a necessidade de computadores mais flexíveis, surgiu o software
CC BY-SA 20177www.retondaro.pro.br
Histórico
Anos 50– Foco de pesquisa e desenvolvimento
de hardware.– O UNIVAC I (de UNIVersal Automatic
Computer - Computador Automático Universal) foi o primeiro computador comercial fabricado e comercializado nos Estados Unidos. Era programado ajustando-se cerca de 6.000 chaves e conectando-se cabos a um painel.
CC BY-SA 20178www.retondaro.pro.br
Histórico
1957– O Brasil comprou seu primeiro grande
computador. O governo do estado de São Paulo comprou um mainframe Univac-120, da “Burroughs”, empresa que, depois, se transformaria na “Unisys”.• O equipamento tinha 60 bytes de
memória RAM, e era utilizado para calcular quanta água se gastava no Estado.
CC BY-SA 20179www.retondaro.pro.br
Histórico
1958
– Surgem os primeiros circuitos integrados;– Foi lançado o primeiro computador
transistorizado, com 16 bits, o IBM TX-0. • Era relativamente pequeno, rápido, tinha um
bom monitor de vídeo, possuía dispositivo de saída sonora e até uma caneta ótica.
CC BY-SA 201710www.retondaro.pro.br
Histórico
1958– Um videojogo foi criado pelo físico William
Higinbotham. – É considerado o primeiro jogo criado para ser
jogado em computadores.• Era um jogo de tênis simples, mostrado em um
osciloscópio e processado por um computador analógico.
– Note-se que o objetivo do programador ao criar o jogo tinha sido simplesmente chamar a atenção do público, que visitava as instalações do "Brookhaven National Laboratories", para verificar o poderio nuclear dos E.U.A.
–
–
CC BY-SA 201711www.retondaro.pro.br
Histórico
Anos 60– Surgem os microprocessadores– Grandes sistemas passam a serem desenvolvidos por
várias organizações– Como o software era um construto abstrato, sua
produção não se encaixava perfeitamente em nenhuma das engenharias, nem mesmo na mecânica e na elétrica, que são as mais próximas, por terem relação com as máquinas que efetuam as computações.
– Surgiu, então, o conceito de engenharia de software, inicialmente referindo-se aos processos para a produção desse tipo de construto abstrato.
CC BY-SA 201712www.retondaro.pro.br
Histórico
1968– Aceita-se que a primeira conferência
sobre Engenharia de Software tenha sido a Conferência de Engenharia de Software da OTAN, organizada em Garmish, Alemanha, em 1968.
– Apesar disso, o termo já era usado desde os anos 50.
CC BY-SA 201713www.retondaro.pro.br
Histórico
1960-1980– Período marcado pela chamada “crise do software”
• foram identificados os maiores problemas relacionados à produção de software, especialmente em larga escala
– Inicialmente, a crise referenciava especialmente questões relacionadas com orçamento e cronograma de desenvolvimento,
– mas posteriormente passou também a abranger aspectos de qualidade de software, uma vez que os sistemas, depois de prontos, apresentavam muitos erros, causando prejuízos.
CC BY-SA 201714www.retondaro.pro.br
Histórico
CC BY-SA 201715www.retondaro.pro.br
Histórico
Lei de Brooks
– Um exemplo clássico da crise de software dos anos 1960 foi o projeto do sistema operacional OS/360, que utilizou mais de mil programadores.
– Brooks (1975) afirmou ter cometido um erro que custou milhões à IBM nesse projeto,• por não ter definido uma arquitetura estável antes de
iniciar o desenvolvimento propriamente dito.
– Atualmente, a Lei de Brooks afirma que adicionar programadores a um projeto atrasado faz com que ele fique ainda mais atrasado.
CC BY-SA 201716www.retondaro.pro.br
Histórico
Edsger W. Dijkstra• A expressão “crise do software” foi
usada pela primeira vez com impacto por Dijkstra (1971).
• Ele avaliava que, considerando o rápido progresso do hardware e das demandas por sistemas cada vez mais complexos, os desenvolvedores simplesmente estavam se perdendo, porque a engenharia de software, na época, era uma disciplina incipiente.
CC BY-SA 201717www.retondaro.pro.br
Histórico
Problemas relatados por Dijkstra– Projetos que estouram o cronograma.– Projetos que estouram o orçamento.– Produto final de baixa qualidade ou
que não atenda aos requisitos.– Produtos não gerenciáveis e difíceis
de manter e evoluir.
CC BY-SA 201718www.retondaro.pro.br
Histórico
Mudança de paradigma– Por décadas, a atividade de pesquisa tentou resolver
a crise do software. – Cada nova abordagem era apontada como solução da
crise. Porém, pouco a pouco, chegou-se ao consenso de que tal solução mágica não existia.
– Ferramentas CASE (Computer Aided Software Engineering), especificação formal, processos, componentes etc. foram boas técnicas que ajudaram a engenharia de software a evoluir, mas hoje não se acredita mais em uma solução única e salvadora para os complexos problemas envolvidos com a produção de software.
CC BY-SA 201719www.retondaro.pro.br
Histórico
Anos 90– Surgimento da internet;– Consolidação da orientação a objetos como
paradigma predominante;– Novas necessidades surgiram e sistemas cada vez
mais complexos, acessíveis de qualquer lugar do mundo, substituíram os antigos sistemas stand-alone.
– Com isso, novas preocupações relacionadas à segurança da informação e à proliferação de vírus e spam surgiram e passaram a fazer parte da agenda dos desenvolvedores de software.
CC BY-SA 201720www.retondaro.pro.br
Histórico
Anos 2000– O crescimento da demanda por software em
organizações de pequeno e médio porte levou ao surgimento de soluções mais simples e efetivas para o desenvolvimento de software para essas organizações.
– Assim surgiram os “métodos ágeis”, que procuram desburocratizar o processo de desenvolvimento e deixá-lo mais adequado a equipes pequenas mas competentes, capazes de desenvolver sistemas sem a necessidade de extensas listas de procedimentos ou de “receitas de bolo”
CC BY-SA 201721www.retondaro.pro.br
Histórico
Atualmente...– A área vem tentando se estabelecer como
um corpo de conhecimentos coeso. – O surgimento do SWEBOK (IEEE Computer
Society, 2004) • Guide to the Software Engineering Body of
Knowledge,
– Sua adoção como padrão internacional em 2006 foi um avanço para a sistematização do corpo de conhecimentos da área