Software

Softwarelogiciário ou suporte lógico é uma sequência de instruções a serem seguidas e/ou executadas, na manipulação, redirecionamento ou modificação de um dado/informação ou acontecimento.

Software também é o nome dado ao comportamento exibido por essa seqüência de instruções quando executada em um computador ou máquina semelhante.

Software também é um produto e é desenvolvido pela Engenharia de software, e inclui não só o programa de computador propriamente dito, mas também manuais e especificações. Para fins contábeis e financeiros, o Software é considerado um bem de capital.

Este produto passa por várias etapas como: Análise econômica, Análise de requisitosEspecificaçãoCodificaçãoTesteDocumentaçãoTreinamento e Manutenção.


Software como programa de computador

Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um programa correto e funcional, essa sequência segue padrões específicos que resultam em um comportamento desejado.

Um programa pode ser executado por qualquer dispositivo capaz de interpretar e executar as instruções de que é formado.

Quando um software está representado como instruções que podem ser executadas diretamente por um processador dizemos que está escrito em linguagem de máquina. A execução de um software também pode ser intermediada por um programa interpretador, responsável por interpretar e executar cada uma de suas instruções. Uma categoria especial e notável de interpretadores são as máquinas virtuais, como a Máquina virtual Java (JVM), que simulam um computador inteiro, real ou imaginado.

O dispositivo mais conhecido que dispõe de um processador é o computador. Atualmente, com o barateamento dos microprocessadores, existem outras máquinas programáveis, como telefone celular, máquinas de automação industrialcalculadora, etc.


A construção de um programa de computador 

Um programa é um conjunto de instruções para o processador (linguagem de máquina). Entretanto, pode-se utilizar linguagens de programação, que traduza comandos em instruções para o processador.

Normalmente, programas de computador são escritos em linguagens de programação, pois estas foram projetadas para aproximar-se das linguagens usadas por seres humanos. Raramente a linguagem de máquina é usada para desenvolver um programa.

Alguns programas feitos para usos específicos, como por exemplo software embarcado ou software embutido, ainda são feitos em linguagem de máquina para aumentar a velocidade ou diminuir o espaço consumido. Em todo caso, a melhoria dos processadores dedicados também vem diminuindo essa prática, sendo a C uma linguagem típica para esse tipo de projeto. Essa prática, porém, vem caindo em desuso, principalmente devido à grande complexidade dos processadores atuais, dos sistemas operacionais e dos problemas tratados. Muito raramente, realmente apenas em casos excepcionais, é utilizado o código de máquina, a representação numérica utilizada diretamente pelo processador.

O Programa é inicialmente "carregado" na memória principal. Após carregar o programa, o computador encontra o 'Entry Point' ou ponto inicial de entrada do programa que carregou e lê as instruções sucessivamente byte por byte. As instruções do programa são passadas para o sistema ou processador onde são traduzidas da linguagens de programação para a linguagem de máquina, sendo em seguida executadas ou diretamente para o hardware, que recebe as instruções na forma de linguagem de máquina.


Tipos de programas de computador

Qualquer computador moderno tem uma variedade de programas que fazem diversas tarefas.

Eles podem ser classificados em duas grandes categorias:

  1. Software de sistema que incluiu o firmware (O BIOS dos computadores pessoais, por exemplo), drivers de dispositivos, o sistema operacional e tipicamente uma interface gráfica que, em conjunto, permitem ao usuário interagir com o computador e seusperiféricos.
  2. Software aplicativo, que permite ao usuário fazer uma ou mais tarefas específicas. Aplicativos podem ter uma abrangência de uso de larga escala, muitas vezes em âmbito mundial; nestes casos, os programas tendem a ser mais robustos e mais padronizados. Programas escritos para um pequeno mercado têm um nível de padronização menor.
Ainda é possível usar a categoria Software embutido ou Software embarcado, indicando software destinado a funcionar dentro de uma máquina que não é um computador de uso geral e normalmente com um destino muito específico

Atualmente temos um novo tipo de software. O software como serviço, que é um tipo que roda diretamente na internet, não sendo necessário instalar nada no computador do usuário. Geralmente esse tipo de software é gratuito e tem as mesmas funcionalidades das versões desktop.

LicençasA maioria do software é publicado sob uma licença. Essa licença define (e até restringe) qual a forma que se pode utilizar o software (números de licenças, modificações, etc.). Exemplos de licenças: