Software
![](https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/OpenOffice.org_Writer.png/300px-OpenOffice.org_Writer.png)
Software[1] (pronúncia em inglês: ['sɔftwɛəɹ]) é uma coleção de programas e dados que dizem a um computador como executar tarefas específicas.[2] Isso contrasta com o hardware, a partir do qual o sistema é construído e que realmente executa o trabalho.
Software também é o nome dado a essa sequência de instruções quando executada em um dispositivo informático, computador ou máquina semelhante, um produto desenvolvido pela engenharia de software e inclui não só o programa de computador, propriamente dito, mas, também, manuais e especificações.
Um software, normalmente, é composto por diversas funções, bibliotecas e módulos que geram um programa executável no fim do processo de desenvolvimento e este que, quando executado, recebe algum tipo de “entrada” de dados (input), processa as informações segundo uma série de algoritmos ou sequências de instruções lógicas e retorna uma saída (output), como resultado deste processamento.
A maioria dos softwares é escrita em linguagens de programação de alto nível, por exemplo, Python, JavaScript, Visual Basic, Delphi, Perl, PHP, ECMAScript, Ruby, C# e Java. Eles são mais fáceis e eficientes para os programadores porque estão mais próximos das linguagens naturais do que das linguagens de máquina. As linguagens de alto nível são traduzidas para a linguagem de máquina usando um compilador, um intérprete ou uma combinação dos dois. O software também pode ser escrito em uma linguagem assembly de baixo nível, por exemplo, C, C++, Assembly e Fortran. As linguagens de montagem têm uma forte correspondência com as instruções de linguagem de máquina do computador e são traduzidas para a linguagem de máquina usando um assembler.[3]
Este produto passa por várias etapas como: análise econômica, análise de requisitos, especificação, codificação, teste, documentação, Treinamento, manutenção e implantação nos ambientes.[4]
Para fins contabilísticos e financeiros, o software é considerado um bem de capital.[5]
História
[editar | editar código-fonte]Um algoritmo para o que teria sido o primeiro software foi escrito por Ada Lovelace no século 19, para o planejado Analytical Engine.[6] Ela criou provas para mostrar como o motor calcularia os números de Bernoulli. Por causa das provas e do algoritmo, ela é considerada a primeira programadora de computador.[7][8]
A primeira teoria sobre software, anterior à criação 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 decisão).[9] Isso eventualmente levou à criação dos campos acadêmicos de ciência da computação e engenharia de software; Ambos os campos estudam software e sua criação.[10] Ciência da computação é o estudo teórico do computador e do software (o ensaio de Turing é um exemplo de ciência da computação), enquanto a engenharia de software é a aplicação dos princípios da engenharia ao desenvolvimento de software.[11]
Em 2000, Fred Shapiro, bibliotecário 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 eletrônicos do JSTOR, antecedendo a citação do Oxford English Dictionary em dois anos. Isso levou muitos a creditar Tukey por cunhar o termo, particularmente em obituários publicados no mesmo ano, embora Tukey nunca tenha reivindicado crédito por qualquer moeda. Em 1995, Paul Niquette alegou que havia originalmente cunhado o termo em outubro de 1953, embora não tenha encontrado nenhum documento que sustentasse sua afirmação. A primeira publicação 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 | editar código-fonte]Um programa de computador é composto por uma sequência de instruções, que podem ser em linguagem natural ou codificada, 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.[17]
O termo "software" foi criado na década de 1940, e é um trocadilho com o termo hardware. "Hardware", em inglês, significa "ferramenta física". Software seria tudo o que faz o computador funcionar, através de instruções, excetuando-se a parte física dele.
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, conhecido também como código 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 o 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.[18]
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, sistemas de eletrônica embarcada, calculadora etc.
A construção de um programa de computador
[editar | editar código-fonte]Um programa é um conjunto de instruções para o processador (linguagem de máquina). Entretanto, podem-se utilizar linguagens de programação, que traduzam comandos em instruções para o processador.
Normalmente, programas de computador são escritos em linguagens de programação, pois estas foram projetadas para se aproximar das linguagens usadas por seres humanos. Raramente é usada a linguagem de máquina para desenvolver um programa. Atualmente existe uma quantidade muito grande de linguagens de programação, sendo as mais populares no momento Java, Visual Basic, C, C++, PHP, entre outras.[19]
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 o 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.[20]
O programa é, inicialmente, "carregado" na memória principal.[21] 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
[editar | editar código-fonte]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 gráfica que, em conjunto, permitem ao usuário interagir com o computador e seus periféricos.
- 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.
- Software aplicativo: é aquele que permite aos usuários executar uma ou mais tarefas específicas, em qualquer campo de atividade que pode ser automatizado no computador, especialmente no campo dos negócios. Inclui, entre outros:
- Aplicações de controle e sistemas de automação industrial.
- aplicações de informática para o escritório.
- Software educacional.
- Software de negócios.
- Banco de dados.
- Telecomunicações.
- Jogos eletrônicos.
- Software médico.
- Software de cálculo numérico e simbólico.
Atualmente, temos um novo tipo de software. O software como serviço, que é um tipo de software armazenado num computador que se acessa pela internet, não sendo necessário instalá-lo no computador do usuário. O cliente pode acessar esse tipo de software, que tem as mesmas funcionalidades das versões armazenadas localmente, de maneira gratuita ou pagar um valor por ele.
Outra classificação possível é:
- Software de sistema: Seu objetivo é separar usuário e programador de detalhes do computador específico que está sendo usado. O software do sistema lhe dá ao usuário interfaces de alto nível e ferramentas que permitem a manutenção do sistema. Inclui, entre outros:
- Sistemas operacionais
- Drivers
- ferramentas de diagnóstico
- ferramentas de correção e otimização
- Servidores
- Software de programação: O conjunto de ferramentas que permitem ao programador desenvolver programas de computador usando diferentes alternativas e linguagens de programação, de forma prática. Inclui, entre outros:
- Editores de texto
- Compiladores
- Intérpretes
- Linkers
- Depuradores
- Ambientes de Desenvolvimento Integrado : agrupamento das ferramentas anteriores, geralmente em um ambiente visual, de modo que o programador não precisa digitar vários comandos para a compilação, interpretação, depuração, etc. Geralmente equipados com uma interface de usuário gráfica avançada.
Licenças
[editar | editar código-fonte]A maioria dos softwares é publicada sob uma licença de software. Essa licença define e até restringe qual a forma que se pode utilizar o software definido números de licenças, modificações entre outros. Exemplos de licenças:
- GNU General Public License
- Licença BSD
- Licença Apache
- Licença comercial
- Licença de software
- Licença de software livre
- Software livre
- Freeware
- Shareware
- Demo
- Trial
Ver também
[editar | editar código-fonte]Referências
- ↑ Base I: do alfabeto e dos nomes próprios estrangeiros e seus derivados. Disponível 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 março 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 março de 2012
- ↑ Jorge H. C. Fernandes. «O que é um Programa (Software)». UNB. Consultado em 21 de janeiro de 2012
- ↑ Evans 2018, p. 21.
- ↑ 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. ISSN 1058-6180. 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 inglês). 2012. Consultado em 25 de novembro de 2018. Cópia 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. Cópia arquivada (PDF) em 9 de outubro de 2022
- ↑ «What's the Difference Between Computer Science and Software Engineering?». eVidyalam (em inglês). 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 páginas. doi:10.2307/2310294. Consultado em 30 de abril de 2024
- ↑ The Mathematical-Function Computation Handbook (em inglês). [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 inglês) (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 - Função e Tipos». Consultado em 21 de janeiro de 2012
- ↑ Sommerville, Ian. Engenharia de software. São Paulo: Pearson, 1998.
- ↑ Programming Language Popularity - Programming Language Popularity Arquivado em 11 de abril de 2015, no Wayback Machine.
- ↑ InfoEscola. «O que são Linguagens de Programação». Consultado em 21 de janeiro de 2012
- ↑ Clube do Hardware. «Liberando memória RAM». Consultado em 21 de janeiro de 2012
- ↑ Brasil Azul. «Software». Consultado em 21 de janeiro de 2012
Text is available under the CC BY-SA 4.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.