Saltar para o conteúdo

Software

Origem: Wikipédia, a enciclopédia livre.
Nota:Para outros significados, vejaSoftware (desambiguação).
OpenOffice.orgwriter

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 ohardware,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,computadorou máquina semelhante, um produto desenvolvido pelaengenharia desoftwaree 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 programaexecutávelno 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#eJava.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 umalinguagem assemblyde baixo nível, por exemplo,C,C++,AssemblyeFortran.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 umassembler.[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çãoe implantação nos ambientes.[4]

Para finscontabilísticosefinanceiros,osoftwareé considerado umbem de capital.[5]

História[editar|editar código-fonte]

Um algoritmo para o que teria sido o primeiro software foi escrito porAda Lovelaceno século 19, para o planejadoAnalytical 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 theEntscheidungsproblem(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 deTuringé um exemplo deciê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 daYale Law School,publicou uma carta revelando que o artigo deJohn Wilder Tukeyde 1958 "The Teaching of Concrete Mathematics" continha o uso mais antigo conhecido do termo "software" encontrado em uma busca nos arquivos eletrônicos doJSTOR,antecedendo a citação doOxford English Dictionaryem 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 daRand Corporation.[12][13][14][15][16]

Softwarecomo programa de computador[editar|editar código-fonte]

Umprograma de computadoré composto por umasequência de instruções,que podem ser em linguagem natural ou codificada, que é interpretada e executada por umprocessadorou por umamá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 termohardware."Hardware",eminglês,significa "ferramenta física".Softwareseria 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 umsoftwareestá representado como instruções que podem ser executadas diretamente por umprocessador,dizemos que está escrito emlinguagem de máquina,conhecido também como código de máquina. A execução de umsoftwaretambém pode ser intermediada por um programainterpretador,responsável por interpretar e executar cada uma de suas instruções. Uma categoria especial e o notável de interpretadores são asmáquinas virtuais,como amáquina virtual Java(JVM), que simulam umcomputadorinteiro, real ou imaginado.[18]

O dispositivo mais conhecido que dispõe de um processador é o computador. Atualmente, com o barateamento dosmicroprocessadores,existem outras máquinas programáveis, comotelefone celular,sistemas deeletrônica embarcada,calculadoraetc.

A construção de um programa de computador[editar|editar código-fonte]

Um programa é umconjunto de instruçõespara o processador (linguagem de máquina). Entretanto, podem-se utilizarlinguagens de programação,que traduzam comandos em instruções para o processador.

Normalmente, programas de computador são escritos emlinguagens 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 momentoJava,Visual Basic,C,C++,PHP,entre outras.[19]

Alguns programas feitos para usos específicos, como por exemplosoftwareembarcadoousoftwareembutido, 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 oCuma 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" namemória principal.[21]Após carregar o programa, o computador encontra oEntry Pointou ponto inicial de entrada do programa que carregou e lê as instruções sucessivamentebyteporbyte.As instruções do programa são passadas para o sistema ou processador onde são traduzidas dalinguagens de programaçãopara alinguagem de máquina,sendo em seguida executadas ou diretamente para ohardware,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]

  1. Softwarede sistemaque incluiu ofirmware(ABIOSdos computadores pessoais, por exemplo),drivers de dispositivos,osistema operacionale tipicamente umainterface gráficaque, em conjunto, permitem ao usuário interagir com o computador e seusperiféricos.
  2. Softwareaplicativo,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 categoriaSoftwareembutidoousoftwareembarcado,indicandosoftwaredestinado a funcionar dentro de uma máquina que não é um computador de uso geral e normalmente com um destino muito específico.

  • Softwareaplicativo:é 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:

Atualmente, temos um novo tipo desoftware.Osoftwarecomo 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 desoftware, que tem as mesmas funcionalidades das versões armazenadas localmente,de maneira gratuita ou pagar um valor por ele.

Outra classificação possível é:

  • Softwarede sistema:Seu objetivo é separar usuário e programador de detalhes do computador específico que está sendo usado. Osoftwaredo sistema lhe dá ao usuário interfaces de alto nível e ferramentas que permitem a manutenção do sistema. Inclui, entre outros:
  • Softwarede 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 dossoftwaresé publicada sob umalicença desoftware.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:

Ver também[editar|editar código-fonte]

Referências

  1. Base I:do alfabeto e dos nomes próprios estrangeiros e seus derivados. Disponível emhttp://umportugues /acordo/alfabeto.Acesso em 25 de setembro de 2012.
  2. «ISO - ISO/IEC 2382:2015 - Information technology — Vocabulary».web.archive.org.16 de março de 2023.Consultado em 30 de abril de 2024
  3. «Vak-informatie Informatica en Informatiekunde».web.archive.org.2 de novembro de 2013.Consultado em 30 de abril de 2024
  4. Cefet RN.«Aula 1»(PDF).Consultado em 21 de janeiro de 2012.Arquivado dooriginal(PDF)em 24 de março de 2012
  5. Jorge H. C. Fernandes.«O que é um Programa (Software)».UNB.Consultado em 21 de janeiro de 2012
  6. Evans 2018,p. 21.
  7. 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 dooriginal(PDF)em 15 de fevereiro de 2020
  8. «Ada Lovelace honoured by Google doodle».The Guardian(em inglês). 2012.Consultado em 25 de novembro de 2018.Cópia arquivada em 2018
  9. 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
  10. «What's the Difference Between Computer Science and Software Engineering?».eVidyalam(em inglês).Consultado em 24 de outubro de 2023
  11. Lorge Parnas, David (1 de novembro de 1984).«Software Engineering Principles».INFOR: Information Systems and Operational Research.22(4): 303–316.ISSN0315-5986.doi:10.1080/03155986.1984.11731932
  12. 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
  13. The Mathematical-Function Computation Handbook(em inglês). [S.l.: s.n.]
  14. 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.ISSN1058-6180.doi:10.1109/MAHC.2000.887997.Consultado em 30 de abril de 2024
  15. «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
  16. «Softword».web.archive.org.8 de agosto de 2019.Consultado em 30 de abril de 2024
  17. UFPA.«Programas - Função e Tipos».Consultado em 21 de janeiro de 2012
  18. Sommerville, Ian. Engenharia de software. São Paulo: Pearson, 1998.
  19. Programming Language Popularity -Programming Language PopularityArquivado em11 de abril de 2015, noWayback Machine.
  20. InfoEscola.«O que são Linguagens de Programação».Consultado em 21 de janeiro de 2012
  21. Clube do Hardware.«Liberando memória RAM».Consultado em 21 de janeiro de 2012
  22. Brasil Azul.«Software».Consultado em 21 de janeiro de 2012