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.

16 Respostas para “Níveis de Abstração”

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

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

  2. Helsen Disse:

    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 Disse:

    Obrigado.

  4. António Gil Hernández Disse:

    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 Disse:

    Obrigado. Sucesso na apresentação.

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

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

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

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

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

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

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

    [...] 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 Disse:

    [...] 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 Disse:

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

  12. Gustavo Disse:

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

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

    [...] 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 Disse:

    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

Deixe uma resposta

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

Gravatar
WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.