Software
[
1
]
(
pronuncia em ingles:
['s?ftw???]
) e uma colecao de programas e dados que dizem a um computador como executar tarefas especificas.
[
2
]
Isso contrasta com o
hardware
, a partir do qual o sistema e construido e que realmente executa o trabalho.
Software tambem e o nome dado a essa sequencia de instrucoes quando executada em um dispositivo informatico,
computador
ou maquina semelhante, um produto desenvolvido pela
engenharia de
software
e inclui nao so o programa de computador, propriamente dito, mas, tambem, manuais e especificacoes.
Um software, normalmente, e composto por diversas funcoes, bibliotecas e modulos que geram um programa
executavel
no fim do processo de desenvolvimento e este que, quando executado, recebe algum tipo de “entrada” de dados (
input
), processa as informacoes segundo uma serie de algoritmos ou sequencias de instrucoes logicas e retorna uma saida (
output
), como resultado deste processamento.
A maioria dos softwares e escrita em linguagens de programacao de alto nivel, por exemplo,
Python
,
JavaScript
,
Visual Basic
,
Delphi
,
Perl
,
PHP
,
ECMAScript
,
Ruby
,
C#
e
Java
. Eles sao mais faceis e eficientes para os programadores porque estao mais proximos das linguagens naturais do que das linguagens de maquina. As linguagens de alto nivel sao traduzidas para a linguagem de maquina usando um compilador, um interprete ou uma combinacao dos dois. O software tambem pode ser escrito em uma
linguagem assembly
de baixo nivel, por exemplo,
C
,
C++
,
Assembly
e
Fortran
. As linguagens de montagem tem uma forte correspondencia com as instrucoes de linguagem de maquina do computador e sao traduzidas para a linguagem de maquina usando um
assembler
.
[
3
]
Este produto passa por varias etapas como: analise economica,
analise de requisitos
,
especificacao
,
codificacao
,
teste
,
documentacao
,
Treinamento
,
manutencao
e implantacao nos ambientes.
[
4
]
Para fins
contabilisticos
e
financeiros
, o
software
e considerado um
bem de capital
.
[
5
]
Um algoritmo para o que teria sido o primeiro software foi escrito por
Ada Lovelace
no seculo 19, para o planejado
Analytical Engine
.
Ela criou provas para mostrar como o motor calcularia os numeros de Bernoulli. Por causa das provas e do algoritmo, ela e considerada a primeira programadora de computador.
[
7
]
[
8
]
A primeira teoria sobre software, anterior a criacao dos computadores como os conhecemos hoje, foi proposta por Alan Turing em seu ensaio de 1936,
On Computable Numbers, with an Application to the
Entscheidungsproblem
(problema de decisao).
[
9
]
?Isso eventualmente levou a criacao dos campos academicos de ciencia da computacao e engenharia de software; Ambos os campos estudam software e sua criacao.
[
10
]
?Ciencia da computacao e o estudo teorico do computador e do software (o ensaio de
Turing
e um exemplo de
ciencia da computacao
), enquanto a engenharia de software e a aplicacao dos principios da engenharia ao desenvolvimento de software.
[
11
]
Em 2000, Fred Shapiro, bibliotecario da
Yale Law School
, publicou uma carta revelando que o artigo de
John Wilder Tukey
de 1958 "The Teaching of Concrete Mathematics" continha o uso mais antigo conhecido do termo "software" encontrado em uma busca nos arquivos eletronicos do
JSTOR
, antecedendo a citacao do
Oxford English Dictionary
em dois anos. Isso levou muitos a creditar Tukey por cunhar o termo, particularmente em obituarios publicados no mesmo ano, embora Tukey nunca tenha reivindicado credito por qualquer moeda. Em 1995, Paul Niquette alegou que havia originalmente cunhado o termo em outubro de 1953, embora nao tenha encontrado nenhum documento que sustentasse sua afirmacao. A primeira publicacao conhecida do termo "software" em um contexto de engenharia foi em agosto de 1953 por Richard R. Carhart, em um memorando de pesquisa da
Rand Corporation
.
[
12
]
[
13
]
[
14
]
[
15
]
[
16
]
Software
como programa de computador
editar
Um
programa de computador
e composto por uma
sequencia de instrucoes
, que podem ser em linguagem natural ou codificada, que e interpretada e executada por um
processador
ou por uma
maquina virtual
. Em um programa correto e funcional, essa sequencia segue padroes especificos que resultam em um comportamento desejado.
[
17
]
O termo "
software
" foi criado na decada de 1940, e e um trocadilho com o termo
hardware
. "
Hardware
", em
ingles
, significa "ferramenta fisica".
Software
seria tudo o que faz o computador funcionar, atraves de instrucoes, excetuando-se a parte fisica dele.
Um programa pode ser executado por qualquer dispositivo capaz de interpretar e executar as instrucoes de que e formado.
Quando um
software
esta representado como instrucoes que podem ser executadas diretamente por um
processador
, dizemos que esta escrito em
linguagem de maquina
, conhecido tambem como codigo de maquina. A execucao de um
software
tambem pode ser intermediada por um programa
interpretador
, responsavel por interpretar e executar cada uma de suas instrucoes. Uma categoria especial e o notavel de interpretadores sao as
maquinas virtuais
, como a
maquina virtual Java
(JVM), que simulam um
computador
inteiro, real ou imaginado.
[
18
]
O dispositivo mais conhecido que dispoe de um processador e o computador. Atualmente, com o barateamento dos
microprocessadores
, existem outras maquinas programaveis, como
telefone celular
, sistemas de
eletronica embarcada
,
calculadora
etc.
A construcao de um programa de computador
editar
Um programa e um
conjunto de instrucoes
para o processador (
linguagem de maquina
). Entretanto, podem-se utilizar
linguagens de programacao
, que traduzam comandos em instrucoes para o processador.
Normalmente, programas de computador sao escritos em
linguagens de programacao
, pois estas foram projetadas para se aproximar das linguagens usadas por seres humanos. Raramente e usada a linguagem de maquina para desenvolver um programa. Atualmente existe uma quantidade muito grande de linguagens de programacao, sendo as mais populares no momento
Java
,
Visual Basic
,
C
,
C++
,
PHP
, entre outras.
[
19
]
Alguns programas feitos para usos especificos, como por exemplo
software
embarcado
ou
software
embutido, ainda sao feitos em linguagem de maquina para aumentar a velocidade ou diminuir o espaco consumido. Em todo caso, a melhoria dos processadores dedicados tambem vem diminuindo essa pratica, sendo o
C
uma linguagem tipica para esse tipo de projeto. Essa pratica, porem, vem caindo em desuso, principalmente devido a grande complexidade dos processadores atuais, dos sistemas operacionais e dos problemas tratados. Muito raramente, realmente apenas em casos excepcionais, e utilizado o codigo de maquina, a representacao numerica utilizada diretamente pelo processador.
[
20
]
O programa e, inicialmente, "carregado" na
memoria principal
.
[
21
]
Apos carregar o programa, o computador encontra o
Entry Point
ou ponto inicial de entrada do programa que carregou e le as instrucoes sucessivamente
byte
por
byte
. As instrucoes do programa sao passadas para o sistema ou processador onde sao traduzidas da
linguagens de programacao
para a
linguagem de maquina
, sendo em seguida executadas ou diretamente para o
hardware
, que recebe as instrucoes na forma de linguagem de maquina.
Tipos de programas de computador
editar
Qualquer computador moderno tem uma variedade de programas que fazem diversas tarefas.
Eles podem ser classificados em duas grandes categorias:
[
22
]
- Software
de sistema
que incluiu o
firmware
(A
BIOS
dos computadores pessoais, por exemplo),
drivers de dispositivos
, o
sistema operacional
e tipicamente uma
interface grafica
que, em conjunto, permitem ao usuario interagir com o computador e seus
perifericos
.
- Software
aplicativo
, que permite ao usuario fazer uma ou mais tarefas especificas. Aplicativos podem ter uma abrangencia de uso de larga escala, muitas vezes em ambito mundial; nestes casos, os programas tendem a ser mais robustos e mais padronizados. Programas escritos para um pequeno mercado tem um nivel de padronizacao menor.
Ainda e possivel usar a categoria
Software
embutido
ou
software
embarcado
, indicando
software
destinado a funcionar dentro de uma maquina que nao e um computador de uso geral e normalmente com um destino muito especifico.
- Software
aplicativo
: e aquele que permite aos usuarios executar uma ou mais tarefas especificas, em qualquer campo de atividade que pode ser automatizado no computador, especialmente no campo dos negocios. Inclui, entre outros:
Atualmente, temos um novo tipo de
software
. O
software
como servico
, que e um tipo de software armazenado num computador que se acessa pela internet, nao sendo necessario instala-lo no computador do usuario. O cliente pode acessar esse tipo de
software, que tem as mesmas funcionalidades das versoes armazenadas localmente,
de maneira gratuita ou pagar um valor por ele.
Outra classificacao possivel e:
- Software
de sistema
: Seu objetivo e separar usuario e programador de detalhes do computador especifico que esta sendo usado. O
software
do sistema lhe da ao usuario interfaces de alto nivel e ferramentas que permitem a manutencao do sistema. Inclui, entre outros:
- Software
de programacao: O conjunto de ferramentas que permitem ao programador desenvolver programas de computador usando diferentes alternativas e linguagens de programacao, de forma pratica. Inclui, entre outros:
- Editores de texto
- Compiladores
- Interpretes
- Linkers
- Depuradores
- Ambientes de Desenvolvimento Integrado?: agrupamento das ferramentas anteriores, geralmente em um ambiente visual, de modo que o programador nao precisa digitar varios comandos para a compilacao, interpretacao, depuracao, etc. Geralmente equipados com uma interface de usuario grafica avancada.
A maioria dos
softwares
e publicada sob uma
licenca de
software
. Essa licenca define e ate restringe qual a forma que se pode utilizar o software definido numeros de licencas, modificacoes entre outros. Exemplos de licencas:
Referencias
- ↑
Base I
: do alfabeto e dos nomes proprios estrangeiros e seus derivados. Disponivel em
http://umportugues.com/acordo/alfabeto
. Acesso em 25 de setembro de 2012.
- ↑
≪ISO - ISO/IEC 2382:2015 - Information technology ? Vocabulary≫
.
web.archive.org
. 16 de marco de 2023
. Consultado em 30 de abril de 2024
- ↑
≪Vak-informatie Informatica en Informatiekunde≫
.
web.archive.org
. 2 de novembro de 2013
. Consultado em 30 de abril de 2024
- ↑
Cefet RN.
≪Aula 1≫
(PDF)
. Consultado em 21 de janeiro de 2012
. Arquivado do
original
(PDF)
em 24 de marco de 2012
- ↑
Jorge H. C. Fernandes.
≪O que e um Programa (Software)≫
. UNB
. Consultado em 21 de janeiro de 2012
- ↑
Fuegi, J.; Francis, J. (2003).
≪Lovelace & Babbage and the creation of the 1843 'notes
'
≫
(PDF)
.
Annals of the History of Computing
.
25
(4): 16?26.
doi
:
10.1109/MAHC.2003.1253887
. Arquivado do
original
(PDF)
em 15 de fevereiro de 2020
- ↑
≪Ada Lovelace honoured by Google doodle≫
.
The Guardian
(em ingles). 2012
. Consultado em 25 de novembro de 2018
.
Copia arquivada em 2018
- ↑
Turing, Alan Mathison (1936).
≪On Computable Numbers, with an Application to the Entscheidungsproblem≫
(PDF)
.
Journal of Mathematics
.
58
: 230?265
. Consultado em 28 de agosto de 2022
.
Copia arquivada
(PDF)
em 9 de outubro de 2022
- ↑
≪What's the Difference Between Computer Science and Software Engineering?≫
.
eVidyalam
(em ingles)
. Consultado em 24 de outubro de 2023
- ↑
Lorge Parnas, David (1 de novembro de 1984).
≪Software Engineering Principles≫
.
INFOR: Information Systems and Operational Research
.
22
(4): 303?316.
ISSN
0315-5986
.
doi
:
10.1080/03155986.1984.11731932
- ↑
Tukey, John W. (janeiro de 1958).
≪The Teaching of Concrete Mathematics≫
.
The American Mathematical Monthly
(1). 1?paginas.
doi
:
10.2307/2310294
. Consultado em 30 de abril de 2024
- ↑
The Mathematical-Function Computation Handbook
(em ingles). [S.l.: s.n.]
- ↑
Buchholz, W.; Shapiro, F.R. (outubro de 2000).
≪Origin of the term "personal computer": evidence from the JSTOR electronic journal archive≫
.
IEEE Annals of the History of Computing
(em ingles) (4): 70?71.
ISSN
1058-6180
.
doi
:
10.1109/MAHC.2000.887997
. Consultado em 30 de abril de 2024
- ↑
≪John Tukey, 85, Statistician; Coined the Word 'Software' - The New York Times≫
.
web.archive.org
. 16 de junho de 2021
. Consultado em 30 de abril de 2024
- ↑
≪Softword≫
.
web.archive.org
. 8 de agosto de 2019
. Consultado em 30 de abril de 2024
- ↑
UFPA.
≪Programas - Funcao e Tipos≫
. Consultado em 21 de janeiro de 2012
- ↑
Sommerville, Ian. Engenharia de software. Sao Paulo: Pearson, 1998.
- ↑
Programming Language Popularity -
Programming Language Popularity
Arquivado em
11 de abril de 2015, no
Wayback Machine
.
- ↑
InfoEscola.
≪O que sao Linguagens de Programacao≫
. Consultado em 21 de janeiro de 2012
- ↑
Clube do Hardware.
≪Liberando memoria RAM≫
. Consultado em 21 de janeiro de 2012
- ↑
Brasil Azul.
≪Software≫
. Consultado em 21 de janeiro de 2012