DEFINIÇÃO
O software é a componente lógica do computador, ou seja, é a denominação para um conjunto vasto e diferenciado de funções de comandos ou tarefas que definem o comportamento, as actividades, a sua sequência e os dados intervenientes. Cada tarefa é composta por uma ou mais instruções básicas de processamento de informação, como sejam operações matemáticas, lógicas, entrada/saída de informação. Por outras palavras, o software é uma sequência de instruções a serem seguidas e/ou executadas na manipulação, no redireccionamento ou na modificação de um dado, informação ou acontecimento.
Como sabemos, as instruções são executadas pelo hardware; apenas aquelas por este "compreendidas" são executadas, daí a forte ligação do software ao hardware. Por outro lado, o software é alterável e evolutivo, daí a separação.
O software tem como função tornar útil o hardware e estabalecer a relação homem/máquina. Tem evoluído de forma a tornar mais simples a utilização dos equipamentos e a potenciar a troca de dados e informação entre diferentes programas, equipamentos e suportes.
SOFTWARE DE SISTEMA
Como peça fundamental para o bom e correcto funcionamento do computador, o software de sistema tem como função a transição entre o hardware e as aplicações.
Este software não tem aplicação prática, apenas fornece mecanismos de simplificação e generalização do hardware às aplicações. Através do software de sistema, a máquina (hardware) pode ser entendida pelo software de igual forma independentemente do equipamento utilizado ou dos pormenores de implementação.
Distinguem-se dois tipos de software de sistema:
- Sistema Operativo (ou de exploração): é responsável pela grande parte das características do software de sistema e por "gerir" os recursos do hardware, estabelecendo níveis de acesso e utilização. É a parte mais importante deste software já que consiste, tal como o software em si, numa série de programas e aplicações que gerem realmente os recursos do computador. Ou seja, disponibiliza um conjunto de serviços, construindo como que uma nova máquina de natureza virtual, para simplificar as diferentes tarefas de operação a diferentes níveis. Assim, os serviços estão disponíveis:
- ao administrador de sistema
- aos programadores
- aos utilizadores
- ao próprio software aplicacional

Funções básicas do sistema operativo
- Driver's: é responsável pela simplificação da utilização de componentes físicos específicos. Fornece ao sistema operativo e ao software aplicacional, um conjunto fixo de formas de aceder às suas funcionalidades.
SOFTWARE DE APLICAÇÃO
Todos nós conhecemos os processadores de texto, as folhas de cálculo, as enciclopédias interactivas, os dicionários, os programas de tratamento de imagem, vídeo ou som. Estes são conhecidos como exemplos de software de aplicação.
O software de aplicação é criado, em regra, para executar tarefas específicas tal como o processamento de texto ou a reprodução de áudio. Ao contrário do software de sistema, estas tarefas não são indispensáveis ao normal funcionamento do computador visto só serem executadas a pedido do utilizador.
Podemos englobar todo o software que, não fazendo parte do sistema operativo, permite resolver os problemas dos utilizadores. Assim sendo, consideramos as próprias linguagens de programação, que permitem aos técnicos desenvolverem programas ou aplicações informáticas para as mais variadas áreas de utilização.
Um programa é um conjunto de instruções logicamente encadeadas que, obedecendo a um algoritmo, permite ao computador realizar determinadas tarefas. As instruções, por sua vez, obedecem a um conjunto de regras (sintaxe) e são compostas por um leque de elementos de significado nativo (semântica). Um programa de computador é escrito com o suporte de uma linguagem de programação, com um conjunto de intruções mais ou menos rico e dirigido a diferentes objectivos de utilização.
A geração da linguagem é independente da máquina, possibilitando a portabilidade de software, desde que se tenha um tradutor adequado para cada equipamento específico. Dá-se usualmente o nome de compilador ao programa que traduz a codificação de alto nível para linguagem máquina executada pelo computador. Durante este processo, o compilador verifica a lexicografia e a sintaxe do programa fonte e só constrói o programa executável pelo computador se estiver ausente de erros, pois os eventuais erros de lógica têm de ser detectados numa fase posterior de teste efectuada pelo computador. Podem ainda ocorrer os chamados erros de execução relativos a operações matemáticas sem solução, tais como divisões por zero.

Estrutura simplificada de um compilador
