Níveis de Abstração

É difícil escrever sobre níveis de abstração. É um conceito fundamental em ciência da computação porque está diretamente ligado com o conceito de modelagem. No entanto, é difícil de explicar, e difícil de exemplificar. Para o engenheiro de software, saber lidar com diferentes níveis de abstração é ao mesmo tempo um requisito da profissão, e, ao mesmo tempo, um desafio sempre presente.

Qual o nível correto de abstração que devo usar nesse caso? Essa é uma pergunta recorrente para o profissional consciente de que lidar com níveis de abstração é importante.

Afinal o que é abstração? Pura e simplesmente é a subtração de detalhes, ou seja, é a capacidade de expressar algo de maneira concisa, abstrata, sem que os detalhes fiquem a mostra. Em qualquer disciplina que lida com complexidade, abstrair detalhes é de fundamental importância. Por isso em engenharia de software o conceito e seu uso são importantes.

Em uma aula usei o exemplo da palavra árvore no sentido natural. Meu argumento é que quando pensamos em uma árvore, abstraímos vários detalhes e pensamos em uma idéia geral, mesmo sabendo que existem diferentes tipos de árvores. Sem ser por coincidência, a estrutura de dados árvore é fundamental na engenharia de software, mas aí é um outro tipo de árvore, cuja raiz é única e as folhas crescem para o chão (estranho, mas é isso mesmo). Pedi um exemplo da turma, e um voluntário falou “controle remoto”. Sua justificativa é que pensamos sobre e usamos o controle remoto como uma abstração, sem preocupação como ele funciona. Eu sei não é o melhor exemplo, mas ajudou, creio eu, a passar a mensagem.

Vejamos o que garimpei na rede em busca de uma melhor explicação sobre abstração. Alguns desses sítios estão em Inglês.

O primeiro é de dicas para escrever textos técnicos em Inglês. A autora é a Dra. Jan Strever do “Spokane Community College” no estado de Washington nos Estados Unidos. O interessante nessa indicação é a categorização que a professora usa para exemplificar o que é abstração. Gostei. Vejam aqui.

Para uma outra visão, que creio ajuda a melhor entendermos abstração, vale a pena ler o primeiro parágrafo do verbete abstracionismo da enciclopédia Itaú Cultural. Depois disso, visite um museu virtual com obras de Kandinsky e outro com obras de Klee. Vale a pena. Creio que os dois artistas bem expressam o conceito abstrato, isso claro sem falar em Picasso e o cubismo.

Voltando ao mundo da Engenharia de Software. Veja o que diz o popular Joel Spolsky: “But JavaSchools also fail to train the brains of kids to be adept, agile, and flexible enough to do good software design (and I don’t mean OO “design”, where you spend countless hours rewriting your code to rejiggle your object hierarchy, or you fret about faux “problems” like has-a vs. is-a). You need training to think of things at multiple levels of abstraction simultaneously, and that kind of thinking is exactly what you need to design great software” [ref]. O “blog” do Joel é também apresentado em Português.

Para os que gostam da Wikepedia, aqui vai o ponteiro (em Inglês). Em Português o foco da definição do Wikepedia é da área de filosofia, mas vale a pena olhar.

Voltarei a falar sobre o tema.

17/5/08: Voltei a escrever sobre o tema. Confira aqui.

…………

Leia sobre Sistemas de Informação.

Veja a página do autor.

Anúncios

19 Respostas to “Níveis de Abstração”

  1. Aula 5 « Princípios de Engenharia de Software Says:

    […] Sobre níveis de abstração vale a pena ler o que escrevi em outro lugar. […]

  2. Helsen Says:

    Olá, muito interessante o artigo, retirei uma citação sua referente aos níveis de abstração para o meu Trabalho cientifico sobre MDA. Muito obrigado.

  3. jcspl Says:

    Obrigado.

  4. António Gil Hernández Says:

    Tomei estas suas reflexões para redigir um texto que apresentarei aos VI Colóquio Anual da Lusofonia (Bragança, Portugal, 3-6 Outubro 2007).
    Obrigado.

  5. jcspl Says:

    Obrigado. Sucesso na apresentação.

  6. Aula 13 « Princípios de Engenharia de Software Says:

    […] Leiam sobre Abstração. […]

  7. Aula 20 « Princípios de Engenharia de Software Says:

    […] diferentes níveis de abstração, […]

  8. Aula 14 « Princípios de Engenharia de Software Says:

    […] Leiam sobre Abstração. […]

  9. A Necessidade da Abstração (A Visão do Poeta) « Amazing Says:

    […] Necessidade da Abstração (A Visão do Poeta) Em nota anterior, “Níveis de Abstração“, já tinha apontado da importância do conceito de abstração para a engenharia de […]

  10. Aula 3 « Princípios de Engenharia de Software Says:

    […] Sobre níveis de abstração vale a pena ler o que escrevi em outro lugar. […]

  11. Aula 7 « Princípios de Engenharia de Software Says:

    […] diferentes níveis de abstração e […]

  12. Gustavo Says:

    Show de bola esse conteudo……………………………………

  13. Aulas 2 & 3 « Princípios de Engenharia de Software Says:

    […] do filme é o aninhamento dos sonhos (um sonho dentro do sonho) em diferentes níveis de abstração. Isso é feito de maneira espetacular, onde a cada sonho mais profundo, maior é a proporção de […]

  14. francisco xavier jose Says:

    Alo,gostaria imenso que me enviasses conteudos detalhados sobre niveis de abstracao e mecanismos para execucao de programas,cpu e baramentos.sou cursante de engeh.informat.Tete,Mocambique

  15. Escolhendo a próxima linguagem da JVM | Gabriel Amorim Says:

    […] O paradigma funcional é o destaque do artigo. É afirmado que “a chave para a eficácia do paradigma funcional está na habilidade de expressar ideias em um alto nível de abstração”. […]

  16. Obas Says:

    Eu sou aprendiz ainda nao sei nada isso mas ja valeu mesmo por ter postado isso me ajudara para abrir me mais a mente…

  17. subrack Says:

    Thanks , I’ve recently been looking for info about this subject for a while
    and yours is the greatest I’ve came upon till now. However, what concerning the bottom line?
    Are you certain concerning the source?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: