Randell, Brian. "Fifty Years of Software Engineering -or- The View from Garmisch." (2018).

https://arxiv.org/abs/1805.02742

Quem é Brian Randell?

Cientista da computação, professor na Newcastle University, nos anos 60 esteve envolvido na NATO Software Engineering Conferences, conferência que popularizou o termo Engenharia de Software.

https://en.wikipedia.org/wiki/Brian_Randell

NATO Software Engineering Conference

Aconteceu em 68 e 69, contou com a participação de experts do software que aceitaram o desafio de definir as melhores práticas de software.

https://en.wikipedia.org/wiki/NATO_Software_Engineering_Conferences

Neste artigo, apresentado no ICSE 2018, Brian Randell faz uma revisão histórica da Engenharia de Software partindo dessas duas edições da NATO.

Randell começa o artigo lembrando que foi convidado a relembrar as conferências NATO e o surgimento da Engenharia de Software ainda em 79 no ICSE em homenagem ao 10º aniversário da conferência NATO.

http://www.icse-conferences.org

Esta foi a primeira ocasião onde aceitou falar no tema Engenharia de Software pois ficou tão desiludido com a NATO 69 que por anos evitou o uso do termo.

O artigo apresentado na conferência ICSE 79 tinha o título “Software Engineering As It Was In 1968” com foco na primeira edição da NATO 68.

Randell, B.: "Software Engineering: As It Was": "4th International Conference on Software Engineering. Munich, Germany" (IEEE Computer Society, 1979), pp. 1-10.

Entre os outros autores convidados para esta mesma edição do ICSE 1979 estavam:

  • Barry Boehm: “Software Engineering As It Is”
  • Edsger Dijkstra: “Software Engineering As It Should Be”
  • Wlad Turski: “Software Engineering As It Will Be”

O mundo da computação no final dos anos 60:

  • Computadores do tamanho de salas, caros
  • Os primeiros mini-computadores começam a aparecer
  • A idéia de computadores pessoais ainda não tinha surgido
  • Redes locais ainda eram desconhecidas
  • Surge o termo “software”
  • Software era desenvolvido específicamente para o hardware, mudar o hardware significava reescrever todo o software

Os projetos de software eram quase todos projetos sob encomenda, desenvolvidos para clientes específicos, e muitos dos maiores projetos eram caracterizados por “subestimativas e excessivas expectativas”, como disse Licklider.

Licklider, J.C.R.: "Underestimates and Overexpectations": "ABM: An Evaluation of the Decision to Deploy an Antiballistic Missile System" (Harper and Row, 1969), pp. 118-129.

Foi apenas em 1969 quando a IBM “separou” seu software do hardware, precificando-o separadamente, que o software se tornou uma commodity e uma indústria de software e a noção de software de pacotes começou a existir.

Nesta época o termo Engenharia de Software era praticamente desconhecido e a escolha do nome para a primeira conferência NATO foi usado muito mais como uma provocação (uma necessidade) do que uma realidade.

Muitos participantes tem dito sobre a primeira conferência NATO como uma das mais estimulantes conferências que eles já participaram.

Muito do estímulo se deve a atmosfera empolgante que se desenvolveu na conferência quando os participantes perceberam o grau de preocupação comum com o que alguns estavam dispostos a chamar de “crise de software”.

Depois da conferência ICSE 1979 Brian Randell voltou ao seu auto-embargo de não falar sobre Engenharia de Software até 1996 quando Schloss Dagstuhl o convidou para falar sobre o tema.

Randell, B.: "The 1968/69 NATO Software Engineering Reports", IEEE Annals of the History of Computing, 1998, 20, (1), pp. 51-64.

Diferentemente da primeira conferência em 68 onde o termo Engenharia de Software foi posto como uma provocação e necessidade, em 69 havia uma tendência de alguns participantes em falar no termo como se já fosse uma realidade.

Um outro grande contraste entre 68 e 69 foi o enorme abismo entre os cientistas e praticantes.

Ficou claro durante a conferência que os organizadores tinham uma agenda secreta de ter o apoio da NATO na criação de uma entidade chamada:

International Software Engineering Institute

O plano não deu certo e a conferência foi marcada por muitas discussões, o que levou um dos participantes, Tom Simpson da IBM, a escrever e apresentar uma explêndida sátira.

http://homepages.cs.ncl.ac.uk/brian.randell/NATO/NATOReports/index.html#Appendix

Masterpiece Engineering (Engenharia de Obra-prima)

Lamentavelmente, nenhum dos avanços parecia ter qualquer impacto na produção de obras-primas e, por isso, o grupo decidiu que a dificuldade básica era claramente um problema de gestão. Um dos alunos mais brilhantes (com o nome L. da Vinci) foi imediatamente promovido a gerente do projeto, encarregando-o da aquisição de tintas, telas e pincéis para o restante da organização.

Alguns tipos distintos de indústria de software surgiram, em particular, aqueles que projetam ou adaptam software “sob medida”, e aqueles que produzem pacotes de software “off-the-peg” (de prateleira)

O primeiro tipo de software (sob medida) ainda está sujeito a muitos dos mesmos desafios relativos ao custo de implementação, cronograma, desempenho e (especialmente) confiabilidade.

O segundo tipo (de prateleira) oferece um mercado maravilhoso de sistemas de software, utilitários e aplicativos utilizáveis e úteis.

Ian Sommerville define Engenharia de Software como:

Engenharia de software é uma disciplina de engenharia que está preocupada com todos os aspectos da produção de software desde os estágios iniciais da especificação até a manutenção do sistema após a sua implantação.

Sommerville, I.: "Software Engineering (10th ed.)" Pearson (2016) 810 pp. [ISBN 13:978-1-292-09613-1].

Quando o termo “Engenharia de Software” foi introduzido muitos fizeram uma pergunta simples:

“De que forma Engenharia de Software é diferente de Programação?”

Engenharia de Software é:

“O desenvolvimento de programas com múltiplas-versões realizado por múltiplas-pessoas.”

O projeto NPfIT de 2005 do UK National Health Service consumiu £20 bilhões e foi um fracasso!

O projeto foi o maior fiasco dos contratos do setor publico até então.

Aquilo que Licklider chamou de “subestimativas e expectativas excessivas” quase quarenta anos antes ainda ocorre (às vezes de forma espetacular) hoje!

Outra preocupação expressada há dez anos atrás na COMPSAC sobre o mundo da engenharia de software é a multiplicidade de “padrões”, algo que leva a uma enorme fragmentação de tecnologias, linguagens e ferramentas.

Artigo de Les Hatton:

“Nós incentivamos ativamente os estudantes a trabalhar em projetos reais para a indústria e, como resultado, um dos meus colegas este ano teve estudantes submetendo projetos em C, C#, C++, Java, PHP, MySQL, XML, HTML, XHTML, VB.Net em XP, Mac OS X, Linux e até Vista com Eclipse, Netbeans, Ant, JWSDP, Glassfish, DreamWeaver, Developer Studio, .Net e talvez alguns em Etruscan.”

Online Historical Encyclopaedia of Programming Languages

8945 linguagens de programação diferentes

http://hopl.info

Ian Sommerville:

“Não existem métodos e técnicas universais de engenharia de software que sejam adequados para todos os sistemas e para todas as empresas. Em vez disso, um conjunto diversificado de métodos e ferramentas de engenharia de software evoluiu nos últimos 50 anos.”

Geoffrey Elton, historiador de Cambridge:

“O futuro é sombrio, o presente é penoso. Apenas o passado, morto e acabado, traz contemplação. Aqueles que olham sobre ele sobrevivem; estes são seu resultado e seus vencedores. Não é de admirar, portanto, que os homens se preocupem com a história”.

George Santayana:

“Aqueles que não conseguem lembrar do passado estão condenados a repeti-lo”.

https://youtu.be/YdEGNpbD8FY

Obrigado!

joenio@joenio.me


Esta apresentação está disponível em:

http://joenio.me/50-anos-de-engenharia-de-software

(código-fonte: http://github.com/joenio/joenio.me)

Licença Creative Commons

Histórico de apresentações

Onde e quando esta apresentação foi realizada

  • 22 de Abr 2019, UnB Gama - Brasília, apresentação na MiniLappisConf