Como a engenharia de software surgiu de uma crise científica

23
Como a Engenharia de Software surgiu de uma crise científica Seminário de um ensaio em Filosofia das Ciências, abordando a Estrutura das Revoluções Científicas de Thomas Kuhn, e reflexões complementares Universidade Federal da Paraíba (UFPB) Centro de Ciências Humanas, Letras e Artes Departamento de Filosofia – Filosofia das Ciências Aislan Fernandes - 2015.1 27/04/2016 (v2)

Transcript of Como a engenharia de software surgiu de uma crise científica

Page 1: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma

crise científicaSeminário de um ensaio em Filosofia das Ciências, abordando a

Estrutura das Revoluções Científicas de Thomas Kuhn, e reflexões complementares

Universidade Federal da Paraíba (UFPB)Centro de Ciências Humanas, Letras e Artes

Departamento de Filosofia – Filosofia das CiênciasAislan Fernandes - 2015.1

27/04/2016 (v2)

Page 2: Como a engenharia de software surgiu de uma crise científica

RoteiroPrimeira parte• Ensaio: resumo, conceitos preliminares e introdução• A Gift from Pandora's Box: The Software Crisis, tese de María Eloína Peláez Valdez

Segunda parte• Conceitos de A Estrutura das Revoluções Científicas, de Thomas Kuhn

Terceira parte• Can Thomas Kuhn’s Paradigms Help Us Understand Software Engineering (WERNICK,

Paul; HALL, Tracy)• Tractatus, Wittgenstein (5.1361)• Propedêutica Lógico-Semântica, Ernst Tugendhat (14.5. Necessidade causal)• Ciência e Dialética em Aristóteles, Oswaldo Porchat• Psicanálise, Merleau Ponty (Fenomenologia da Percepção)• Modelo Relativístico do Cérebro, Miguel Nicolelis• Sobre as leis da física, Richard Feynman.

Page 3: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científica

Este ensaio apresenta diferentes faces da Crise do Software, de modo a entender não apenas a relação, estreitamente íntima, com a Engenharia de Software, mas fornecer subsídios para analisar movimentos recentes pós-agilidade, ou melhor, pós-engenharia, como o Software Craftsman, como também, a chamada Crise do Software 2.0, a partir da estrutura das revoluções científicas de Thomas Kuhn, especialmente sua noção de crise científica, por meio de uma pesquisa exploratória bibliográfica e qualitativa. Essa pesquisa contempla um levantamento histórico das forças que moldaram a Crise do Software, com base nas descobertas de María Eloína Peláez Valdez, em seguida compara os entendimentos principais dessa crise com o conceito de crise científico-revolucionário, de modo a validar o surgimento da engenharia de software de uma crise científica, mas não como resposta científica, por fim, analisa movimentos recentes à agilidade.

Resumo do artigo 1 Introdução

2 A Crise do Software

3 A Crise Científico-Revolucionária

4 Crise do Software 2.0

5 Software Craftsman

Page 4: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científicaConceitos preliminares• Objetivo da Engenharia de Software poder entregar o que o cliente precisa (novo ou

modificado)• Fundamentos da Engenharia de Software

• Ciência da Computação base tecnológica• Administração base gerencial• Outros

• Fundamentos da Engenharia Civil• Física• Química• Administração• Outros

Page 5: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científicaIntrodução• Desde a década de 1960, engenharia de software é tradicionalmente tida como

um paradigma• No sustento de várias comunidades acadêmicas, profissionais, públicas e

empresariais• Quando passou a ser tida como o modelo de solução-problema ao que se

denominou nessa época de Crise do Software• Passou por evoluções, gerando leis (“ciência do software”) e modelos de

processo• Problemas movimentos controversos

• Movimento ágil é dito revolucionário aos modelos de engenharia• Software Craftsman é dito pós-agilidade e pós-engenharia, e propõe uma arte

do software e não uma ciência• Crise do Software 2.0

EvoluçãoLei da

Modificação Contínua (1974)

Lei da Complexidade

Crescente (1974)

Lei da Auto-Regulação (1974)

Lei a Conservação da

Estabilidade Organizacional

(1980)

Lei da Conservação da

Familiaridade (1980)

Page 6: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científica: A Crise do Software

Material didático clássico

Perigo de uma nova crise

Engenharia: substrato do

software

Conferência internacional da

OTAN, na Alemanha, em 1968

Crise do software: atraso, $$$, difícil, lento, inseguro etc

Page 7: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científica: A Crise do Software

A Gift from Pandora's Box: The Software Crisis

(María Eloína Peláez Valdez)

Prática “comercial” americana (FORTRAN) x

Prática “científica” europeia (ALGOL)

Linguagem proprietária de máquina (IBM) x

Linguagem universal de algoritmo

Hardware > softwareDécada de 40 (tubos) >

50 (transistors) > 60 (software) > 68 (IBM

360)!

Imprudência dos fabricantes americanos =

Imprudência de Epimeteu

Page 8: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científica: A Crise do SoftwareDécada de 60: hiatos internos e externos +

pressões

Promessa de fabricante x

Habilidade de programador

Capacidade do hardware x

Habilidade do software

Demandas de usuários x

Desempenho de produtores

Desejo de usuários (fetiche) x

Necessidade reais de usuários (solução)

Ciências da Administração:

computador informa, até pensa!

Gerente x Programador =>

Analista de Sistemas

Software houses (30%-50%): software

como algo próprio

Hiatos PressõesConferência OTAN

1968: o que é o software?

(não havia “software” antes de 1960)

Page 9: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científica: A Crise do SoftwareConferência 1968 (Alemanha)• Comitê de Ciência da OTAN: Grupo de

Estudos em Ciência da Computação (1967)• Proposta: “Engenharia de Software”

(análogo às engenharias)

• Sucesso: reconhecimento comum dos problemas• Uso público: “crise do software”• Segurança da vida das pessoas• Baixa confiança dos clientes• Natureza do software e da “engenharia”

• Crise científica?

Conferência 1969 (Roma)• Fracasso: sem reconhecimento comum para

solução da crise• Paradigma atual (FORTRAN-IBM) com problemas• Conflito de comunidades de praticantes

• Acadêmicos crise como um resultado de métodos não científicos e das técnicas mais baixas usadas por pessoas da indústria

• Industrialistas acadêmicos como amadores arrogantes sem capacidades gerenciais em projetos de larga escala

• Fracasso de plano piloto com diferentes visões• Crise científica?

Page 10: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científica: A Crise do SoftwareProgramação Estruturada• Modelo liderado por Edsger Dijkstra • Engenheiro matemático (Alemanha)

• Habilidades por ciência• Foco científico no resultado

• Pensamento matemático• Após 70, perde força e até sentido

original.

Engenharia de Software• Modelo liderado por Fred Brooks• Engenheiro técnico (EUA)

• Habilidades por experiência• Foco prático no resultado

• “Lógica” intuitiva• Lições aprendidas de dentro dos

fracassos da IBM• Prevalece como prática de mercado e

estudo de academia

Este conflito não se encontra em material didático clássico.

O mundo após 1969 estava dividido entre 2 modelos.

Page 11: Como a engenharia de software surgiu de uma crise científica

Como a Engenharia de Software surgiu de uma crise científica: As CrisesCrise do software =

Crise científica?

Uma ciência (prática ou teórica?) da

computabilidade em “crise” (pq?)

Comunidades em conflito por divergência

de modelos (pq?)

“Mudança de paradigma” como

“revolução” na maneira como pensam

(!?)

Forças sociais e psicológicas =

compromissos (não é razão científica)

Valdez não conhece Thomas Kuhn em sua tese

Fim da primeira

parte

Page 12: Como a engenharia de software surgiu de uma crise científica

A Estrutura das Revoluções Científicas

• Reunião cumulativa de fatos, teorias e métodos !?

Progresso

• Acúmulo gradual de conhecimentos e/ou experimentos !?Revoluções

• Não acidental• Razão de ser das

revoluçõesEstrutura(KUHN, 2013, p. 14; 42-43; 61)

Fonte: História da Física e da Química

Page 13: Como a engenharia de software surgiu de uma crise científica

A Estrutura das Revoluções Científicas“Ciência normal”

sem crise

• Funciona bem sob um paradigma

“Ciência normal” em

crise

• Não funciona bem sob sérias anomalias

Resolução da crise

• Sob um novo paradigma

(p. 14; 42-43; 60)

Crise

Não conseguir

mais manipular

com competência seus próprios

problemas

Progresso

Afastar-se do que funciona

bem na “ciência normal”

Estereótipo de

progresso

Reunião cumulativa de fatos, teorias

e métodos

[Como] Incomensurabilidade das teorias conflitantes

[Então] Mudança de concepção do mundo (conversão) do que uma escolha de uma nova teoria

Ciência normal? Paradigma? Anomalias? Incomensurabilidade?

Page 14: Como a engenharia de software surgiu de uma crise científica

A Estrutura das Revoluções CientíficasParadigma Estrito• Razão de união da comunidade

• Forma uma tradição coerente• Servem de compromissos

• Interno (mais técnico)• Realizações científicas, universalmente

reconhecidas, ao longo do tempo, fornecedoras de problemas e soluções modelares

• Modelos = exemplos aceitos de prática científica, incluindo leis, teorias, aplicações, experimento e instrumentação

Paradigma Abrangente• Partilhado pela comunidade• Constelação de crenças, valores,

técnicas e semelhantes

Sociedade

Paradigma abrangente

Comunidade

Paradigma estrito

Paradigma = estrito + abrangente

Sucesso de uma teoria = torna-se paradigma

promessa de sucesso de seu paradigma mais persuasivo!

Nenhuma teoria explica todos os fatos (Popper)

(p. 53; 28; 280, 286; 80; 88)

Page 15: Como a engenharia de software surgiu de uma crise científica

A Estrutura das Revoluções Científicas• Ciência normal = pesquisa científica firmemente baseada, no paradigma

• Atualização da promessa de sucesso do paradigma• Espécie de trabalho de acabamento, articulação e reforço do próprio paradigma• Ocupam-se a maioria dos cientistas, em boa parte de sua carreira, em três classes de foco (teoria e

prática)• Aumentar a precisão da teoria paradigmática• Desenvolver a aparelhagem capaz de resolver o problema-modelo• Resolver ambiguidades residuais (numa geração anterior)

• Pesquisa normal = alcançar o antecipado de uma nova maneira• Rejeitar problemas não redutíveis ao seu modelo solução-problema ou demasiadamente

problemáticos, com termos e conceitos de um paradigma• Novidade inesperada é um fracasso

• Resolução de quebra-cabeças, cujas peças e ações já estão comprometidas com as regras do jogo

(p. 88-89; 90-92; 100; 104-106; 112)

“Progresso normal”

Page 16: Como a engenharia de software surgiu de uma crise científica

A Estrutura das Revoluções Científicas• Ciência normal bem-sucedida não descobre novidades, mas as suprime

• Cientistas não trabalham, com segurança, sem os modelos paradigmáticos, nos quais foram educados, mesmo sem ter consciência plena das características que formam o paradigma de sua própria comunidade

• Segurança abalada quando problemas extraordinários se tornam sérias anomalias• Tentativa de ajustar a teoria ao fato, convertendo o anômalo em esperado, não é suficiente ou satisfatório (fracassos cada vez mais

frequentes do aditivo teórico)• Enquanto não convertido, o fato extraordinário não é visto como completamente científico

• Força para suprimir = força de eclosão de um estado de crise (paradoxalmente)• Crise é um sentimento geral técnico, de funcionamento defeituoso,• Mesmo havendo um sucesso de popularidade da teoria enquanto atacada – por isso observadores externos, não impactados

tecnicamente pela crise, julgam-na como etapas normais de um desenvolvimento científico linear• Só quem melhor conhece os detalhes com precisão, sabe o que é a anomalia

• Sintomas da crise Muitas teorias concorrentes Número maior de casos anômalos Crescente indeterminação Decrescente utilidade Proliferação de versões distintas da teoria

Crise abre caminho para uma mudança de paradigma, não para seu abandono, do contrário não haveria ciência ou cientista!

(p. 119, 121; 127-128; 141-143; 178; 151,

163; 162)

Page 17: Como a engenharia de software surgiu de uma crise científica

A Estrutura das Revoluções Científicas

• Revolução = reconstrução dos compromissos do grupo

• Processo revolucionário• Consciência comum de que algo saiu errado (estado da crise) apresenta uma adesão ou atenção maior de cientistas• Padrão passa a ser questionado (os mesmos problemas modelos, anteriormente aceitos, passam a ser questionados)• Processo de transição, de intensa pesquisa ou ciência extraordinária• Pode tomar tempo considerável, desde a consciência do fracasso (descontentamento explícito) ao novo paradigma

• Estado da crise• Intensificam-se polarizações, desacordo entre escolas, recusas obstinadas das anomalias e disputas na sociedade, inclusive com

persuasão de massa, nos quais os procedimentos da própria ciência normal simplesmente não conseguem ser usados para defendê-la (exemplo: Cartas Abertas de Sociedades).

• Fim da crise• Nem sempre quando surge um novo candidato a paradigma e a subsequente batalha por sua aceitação• Não há mudança de paradigma só porque existem surpresas e dificuldades• Algumas vezes ou a ciência normal acaba sendo capaz de resolver o problema provocador da crise ou os cientistas rotulam o

problema, colocando-o de lado, para ser resolvido, por uma geração futura, com instrumentos mais elaborados• Lembre de uma das classes de foco da ciência normal!

(p. 165, 171; 175-176; 179-180; 168)

Page 18: Como a engenharia de software surgiu de uma crise científica

A Estrutura das Revoluções Científicas

• Mudança de percepção com a mudança de paradigma• Os mesmos dados são vistos sob diferentes relações, com mesma acuracidade de antes, não como uma mera

reinterpretação dos dados• O cientista passa a trabalhar em um mundo novo, apesar de ser o mesmo mundo, porém de conceitos

reformulados (incompatíveis e incomensuráveis com os anteriores), dos quais depende para interpretar os dados

• Numa mudança de definição não há um aprendizado gradual

• Exemplo de Dalton• Não se interessava por Química, nem era químico, mas como metereologista, contudo, revolucionou a

maneira de praticar a química, com seu novo sistema de filosofia química, apesar de fortes oposições• Ilustra a falta da neutralidade lógica ou experimental numa transição – Max Planck acreditava, com muito

pesar, no fato de uma nova verdade científica triunfar, sob seus oponentes, quando a geração corrente morresse e uma nova se familiarizasse com ela

• Revolução = conversão• Persuasão dos melhores argumentos, contendo a alegação de resolver os problemas, mesmo não resolvendo

de fato, numa decisão de fé, baseada na promessa de sucesso do novo e crescente paradigma

(p. 211, 214, 217; 226-227; 249-250; 258-259; 315-316)

Page 19: Como a engenharia de software surgiu de uma crise científica

Fim da segunda

parte

A Estrutura das Revoluções Científicas• Revolução = mudança de paradigma, mediante um processo persuasivo• Prevalência das paixões dos cientistas, em detrimento da cientificidade, para preservar sua

teoria• Não são preparados para as crises (assim como estudantes)• Não há em sua educação, especialmente em ciências exatas e naturais, o conhecimento de história e

filosofia• Razão pela qual muitas crises e revoluções são invisíveis a muitos praticantes e leigos, tendo em seu lugar a história da

ciência como um desenvolvimento cumulativo e linear

• Depreciação dos fatos históricos• Próprio dos compromissos de uma ciência normal• Principais manuais científicos, junto a obras filosóficas e textos de divulgação, referem-se a um corpo já

articulado de problemas, pertencentes a paradigmas aceitos por uma comunidade científica, na época em que foram escritos

• Esses manuais fazem os estudantes e profissionais se sentirem participantes de uma longa tradição, que de fato nunca existiu, ou pior, sugerem uma acumulação gradual de fatos, conceitos, leis ou teorias, pelos cientistas, desde os primeiros empreendimentos científicos, porém muitos dos avanços só existiram após revoluções científicas

(p. 267-268; 231-235)

Page 20: Como a engenharia de software surgiu de uma crise científica

Reflexões das primeiras partes• Pressman (2010) e Sommerville (2011), fontes de autoridade histórica da

ciência normal, desenham uma linearidade irreal, da história do software, comparado ao levantamento de Valdez (1988), como se houvesse o entendimento pacífico ou unânime, de um desenvolvimento gradual, da crise à engenharia, e não revolucionário.• Contornos da crise do software

• Como crise científico-revolucionária• Como tipos de fracassos de projetos de software• Como histórico na década de 60• Como ameaça ou até realidade na atualidade

• Movimentos pós-agilidade e pós-engenharia são retrocessos à comunidade da engenharia de software, mas são anomalias.

Page 21: Como a engenharia de software surgiu de uma crise científica

Reflexões complementares• “Na generalização de Einstein para a gravitação, a descrição de Newton é

inadequada e complicada” (Feynman. p. 59)• “Matematicamente, as três diferentes formulações (...) têm as mesmas consequências”

(p. 58)• “Psicologicamente elas são diferentes porque fornecem pontos de partida

completamente distintos” (p. 59)• “O físico sempre está interessado no caso especial, nunca no caso geral” (p. 61)

• “A ciência ficaria estagnada se só fizéssemos experimentos nos domínios cujas leis conhecemos. Mas os físicos experimentais investigam, com diligência e esforço, exatamente aqueles domínios em que parece mais provável encontrar erros nas teorias. Em outras palavras, estamos sempre tentando provar que estamos errados, pois só dessa maneira podemos progredir.” (Feynman. p. 164)

Page 22: Como a engenharia de software surgiu de uma crise científica

Reflexões complementares• “Os eventos do futuro, não podemos derivá-los dos presentes. A crença no

nexo causal é a superstição.” (Wittgenstein. Tractatus. 5.1361)• Hume: leis naturais são co-ocorrências regulares • “Mas o fato de podermos continuar a aplicar esse aparato conceitual não é

garantido pelas necessidades naturais, sendo, antes, simplesmente algo em que nós confiamos” (Ernst Tugendhat. Propedêutica Lógico-Semântica. p. 199)• Hume: toda regularidade é acidental• Algumas regularidades são explicadas por estruturas (Strawson, Quine, Madden, Ernst)• Regularidade fática e universal, mas não há nenhuma razão para ser necessariamente

assim

Page 23: Como a engenharia de software surgiu de uma crise científica

Reflexões complementares• O caso da Psicanálise• Fenomenologia da Percepção (1945), Merleau Ponty• Sujeito da percepção objeto científico

• Causalidade psíquica inconsciente = “o outro sensível”• Método analítico: um-a-um

• Construção do caso clínico preparação do objeto científico• Desconstruir valores (paradigmáticos) na análise aberto a anomalias

• Psicologia mente, comportamento e a consciência