O que é software?

Se consultarmos a literatura, obteremos a seguinte definição:

Segundo Sommerville, software é caracterizado como um programa de computador e toda a documentação associada a ele. Já Pressman define software como um elemento de sistema lógico, e não físico que não se desgasta.

De posse destas duas definições questiono: O desenvolvimento de parte de um processador pode ter características de software em algum momento de seu ciclo de vida?

Antes de emitirmos qualquer resposta gostaria que todos analisassem o seguinte exemplo:

Os engenheiros da Intel estão trabalhando, ativamente, na implementação de um conjunto de circuitos integrados de um novo processador, estes circuitos devem ser conectados seguindo uma sistematização lógica, estabelecida em um projeto arquitetônico. Posteriormente, os projetistas de mascaras entram em ação e, por fim a fabricação do processador é concebida na sala limpa, aquela velha história que todos nós conhecemos.

De posse do exemplo podemos concluir que uma grande parte da fabricação de um processador possui as características do desenvolvimento de software. O exemplo deixa isso claro – É necessário definir os requisitos do processador, desenvolver o documento arquitetônico, implementar os circuitos e as mascaras, simular a implementação e, posteriormente, materilizar o “projeto programado do processador” sobre o silício (é somente neste ponto que o hardware é concebido).

Para sustentar minha posição, parto das definições propostas por Stallings (2002, pg. 341) e Ercegovac et. al. (2000)

hwsw

“O conjunto de instruções da máquina constitui o limite que o projetista e o programador de computadores enxergam uma mesma máquina. Do ponto de vista do projetista, o conjunto de instruções de máquina fornece os requisitos funcionais para CPU: implementar CPU é uma tarefa que envolve, em grande parte, implementar o conjunto de instruções de máquina”.

Implementar instruções de máquina é construir software.

O estudo ou implementação de qualquer sistema digital envolve sua especificação e implementação. A especificação de um sistema refere-se a uma descrição de sua função e de outras características, necessárias para seu uso, como por exemplo: A velocidade e tecnologia a ser utilizada – Ercegovac et. al. (2000).

Especificação de documento e implementação  são características intrínsecas de software.

Enfim, ao analisar o exemplo que tem como personagem principal os engenheiros da Intel e as definições extraídas de Stallings e Ercegovac é possível concluir que a fronteira entre software e hardware é extremamente tênue. Aquilo que encaramos como hardware hoje, um dia teve algumas características de um projeto de software. Ressalto, nosso processador se configurou como hardware após ser materializado fisicamente. Antes disso ele teve que ser, no mínimo, documentado e implementado.

Será que apresentamos essa visão aos nossos alunos nos cursos de engenharia de software?

José Augusto Fabri

Fontes de consulta:

Ercegovac M. et. al. “Introdução aos Sistemas Digitais”, Porto Alegre. Bookman. 2000.

PRESSMAN, R. S. Engenharia de Software. Rio de Janeiro: McGraw-Hill, 2002.

SOMMERVILLE I. Engenharia de Software. 6ª Edição. Addison Wesley, 2003.

Stallings W. Arquitetura e Organização de Computadores. São Paulo. Prentice Hall. 2002.

Fabri. J. A. slides de assembly

One Response to “O que é software?”

  1. Hector Rodriguez Says:

    Considero, que no último paragrafo está a chave desta questao. A “materializacao física” é o que da “tangivilidade” e a possibilidade do “desgaste fisico”. Esse sería o limite entre hardware e software. Isto implicaría, que o hardware pode conter intrinsecamente diversos tipos de software, em diversos níveis de materializacao. Poderiamos até fazer uma analogía com a filosofía de Platao e seu mundo das ideias.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: