miniatura|Diagrama que amosa como o usuario interactúa coas aplicacións informáticas nun ordenador persoal típico. A capa da aplicación informática relaciónase co sistema operativo, que á súa vez comunícase co hardware. As frechas indican o fluxo de información. En informática, o soporte lóxico, ou do inglés software, utilízase para describir a parte lóxica ("non física") do ordenador, tamén chamada programa ou aplicación informática.
Chámase así en contrapartida ao soporte físico ou hardware (procesador, memoria, placa base, etc), que é o que fai que os programas se poidan executar e o usuario poida interaccionar co ordenador. O software é o código compilado que se transforma en aplicacións utilizables, que poden ser ofimáticas, de deseño, multimedia etc.
O software de ordenador (ou sinxelamente, software) refírese a un ou máis programas de ordenador e os datos almacenados para algún propósito concreto. O software permite o funcionamento programado previamente codificado, xa sexa dando instrucións de xeito directo, a través de instrucións ao hardware (a parte física), ou servindo como entrada a outro programa. O software de tratamento de datos existe só para o seu uso eventual por outro software de programa.
O termo software foi usado por primeira vez neste senso por John W. Tukey en 1957; de xeito coloquial, o termo utilízase frecuentemente para designar aplicacións, utilidades, o sistema operativo etc.. En informática e enxeñaría de software, software é toda a información procesada polo sistema informático, programas e datos.
Definición de software miniatura|Retrato de Charles Babbage, introdutor do concepto de programa. Existen varias definicións similares aceptadas para software, pero probablemente a máis formal sexa a seguinte:
Considerando esta definición, o concepto de software vai máis aló dos programas de computación nos seus distintos estados: código fonte, binario ou executable; tamén a súa documentación, os datos a procesar e mesmo a información de usuario forman parte do software: é dicir, abarca todo o intanxible, todo o «non físico» relacionado.
O termo «software» foi usado por primeira vez neste sentido por John W. Tukey en 1957. Na enxeñaría de software e as ciencias da computación, o software é toda a información procesada polos sistemas informáticos: programas e datos.
O concepto de ler diferentes secuencias de instrucións (programa) desde a memoria dun dispositivo para controlar os cálculos foi introducido por Charles Babbage como parte da súa máquina diferencial. A teoría que forma a base da maior parte do software moderno foi proposta por Alan Turing no seu ensaio de 1936, «On Computable Numbers, with an Application to the Entscheidungsproblem» (en galego, "Os números computables, cunha Aplicación ó Entscheidungsproblem"), cunha aplicación ao problema de decisión.
Historia miniatura|Estatua en homenaxe a Alan Turing, situada nos Xardíns de Whitworth, Manchester (Inglaterra). A primeira teoría sobre o software foi proposta por Alan Turing no seu ensaio do 1935 denominado "On Computable Numbers, with an application to the Entscheidungsproblem" (Sobre os números calculables, cunha aplicación ó Entscheidungsproblem)Hally, Mike (2005:79). Electronic brains/Stories from the dawn of the computer age. British Broadcasting Corporation and Granta Books, Londres. ISBN 1-86207-663-4. (e ) O termo "software" foi utilizado por primeira vez nun documento impreso en 1958 por John Tukey nun artigo publicado na revista de matemáticas American Mathematical Monthly. Coloquialmente, o termo utilízase a miúdo no sentido de software de aplicación. En informática e en enxeñaría de software, o software é toda a información procesada por un sistema informático, os programas e os datos. No ámbito académico o estudo do software inclúese dentro dos campos da informática e a enxeñaría de software actual.
A miúdo considérase que a historia dos programas informáticos remóntase ata o primeiro erro de software, en 1946. Como que cada vez hai máis programas que pasan a formar parte do mundo do firmware debido a que o hardware faise cada vez máis pequeno, máis barato e máis rápido debido á lei de Moore, hai elementos que antes eran considerados como software que hoxe en día pasaron ao dominio do hardware. A maioría das compañías de hardware actuais teñen máis programadores de software en nómina que deseñadores de hardware, posto que as ferramentas de software automatizaron moitas das tarefas dos enxeñeiros que crean os circuítos impresos.
Do mesmo xeito que o fixo a industria automotriz, a industria do software evolucionou a partir duns poucos visionarios que traballaban con prototipos no seu garaxe. Steve Jobs e Bill Gates foron o Henry Ford e o Louis Chevrolet da súa época, que aproveitaron e capitalizar as ideas xa coñecidas antes de que iniciasen o seu negocio. No caso do desenvolvemento de software, acéptase de maneira xeneralizada que o momento inicial foi a publicación na década de 1980 das especificacións do IBM Personal Computer por parte do empregado de IBM Don Estridge. Hoxe este movemento podería verse como un tipo de crowdsourcing (subcontratación aberta).
Ata este momento, o software era empaquetado xunto co hardware polos OEM (fabricantes de equipos orixinais), como Data General, Digital Equipment ou IBM. Naquel momento, cando un cliente compraba un miniordenador, o ordenador máis pequeno da época, o equipo non viña con ningún software preinstalado, senón que tiña que ser instalado por enxeñeiros empregados polo OEM. A maioría das empresas tiñan o seu software nos catálogos sen prezo, de forma que non se podía considerar como un activo (de maneira similar a algúns casos de música popular de hoxe en día). Cando Data General presentou o seu miniordenador de 16 bits chamado Data General Nova, unha compañía chamada Digidyne quixo utilizar o seu sistema operativo RDOS (Real-time Disk Operating System) no seu propio clon do hardware. Data General negouse a licenciar o seu software (cousa que era difícil, posto que era publicado como un ben libre), e reclamou os seus dereitos. A Corte Suprema creou un precedente chamado Digidyne v. Data General in 1985 e finalmente Data General viuse obrigada á concesión de licenzas de software do sistema operativo, posto que se fallou que a restrición da licenza ao hardware de Data General era ilegal. Pouco despois, IBM publicaba o código fonte do seu sistema operativo de disco de maneira gratuíta, e naceu Microsoft. Data General acabou sendo absorbida por EMC Corporation ao ser incapaz de soportar as perdas causadas polos honorarios dos avogados. A decisión da Corte Suprema permitiu valorar o software e tamén comprar patentes de software. Naquel momento a decisión de IBM de publicar o código era case como unha protesta. Poucos dentro da industria crían que alguén fóra da mesma IBM (grazas á publicidade gratuíta da súa decisión) podería chegar a sacar algún beneficio. Microsoft e Apple foron capaces de sacar proveito dos produtos software. Hoxe en día faise difícil de imaxinar que houbo unha vez que a xente pensaba que o software non valía nada sen unha máquina. Hoxe en día hai moitas empresas de éxito que venden só produtos de software, a pesar de que habitualmente aínda hai moitos problemas relacionados coa concesión de licenzas debido á complexidade dos deseños e á pouca documentación, o que leva ás patentes trol.
Coas especificacións de software de código aberto e a posibilidade de concesión de licenzas de software, apareceron novas oportunidades para ferramentas de software que despois se converteron en estándares de facto, por exemplo DOS para os sistemas operativos, pero tamén diferentes sistemas propietarios de tratamento texto e follas de cálculo. Seguindo un patrón de similar, os métodos de desenvolvemento propietarios xeraron metodoloxías estándar de desenvolvemento de software.
Clases de software miniatura|Logo do sistema operativo Linux. Calquera ordenador moderno de uso xeral (en oposición aos sistemas embebidos) ten varias "capas" de software que realizan cada unha certas tarefas determinadas. Divídense habitualmente en tres categorías principais: Software de sistema O software de sistema inclúe o sistema básico de entrada e saída ("BIOS", chamado tamén firmware en vez de software), os controladores dos dispositivos, un sistema operativo e, normalmente, unha interface gráfica de usuario ("GUI") que, en conxunto, lle permiten ao usuario poder interaccionar co ordenador e os seus periféricos. O software de sistema ven normalmente co ordenador e quen ten coñecementos de informática só "a nivel de usuario" non é consciente sequera de que existe. Software de aplicación O software de aplicación permítelle ao usuario realizar unha ou máis tarefas concretas, como as aplicacións de ofimática coas que é posíbel redactar documentos (procesador de textos), realizar cálculos en follas de cálculo, ou xogar cos videoxogos. O software de aplicación cómprase á parte ou descárgase de Internet. Nas aplicacións é no que a maior parte da xente pensa cando se fala de software. Software de usuario O software de usuario adecúa os sistemas ás necesidades específicas de cada usuario. Inclúe os modelos de follas de cálculo, as macros dos procesadores de texto, as simulacións científicas, os gráficos e os guións. Mesmo os filtros de correo son un tipo de software de usuario. É fácil pasar por alto a súa importancia real.
Linguaxes de programación
miniatura|Código fonte dun programa escrito na linguaxe de programación java. Para introducir ordes na computadora temos que usar unha linguaxe específica coñecida como linguaxe máquina, que consiste en longas cadeas de números binarios (1s e 0s). Esta linguaxe, que a computadora entende directamente, é excesivamente complicada para unha persoa. Para facer o traballo máis fácil os primeiros operadores de computadoras decidiron pór nomes mnemónicos ás instrucións que antes só se especificaban con códigos binarios. Esta nova linguaxe denominárona linguaxe ensambladora. Así por exemplo, para sumar úsase a instrución "add". Escribir en linguaxe ensamblador é equivalente a facelo en linguaxe máquina, pero as instrucións son máis fáciles de lembrar xa que non se se escriben como unha serie de números.
A medida que foi aumentado a complexidade dos programas escritos en ensamblador fíxose necesario dispor dunha linguaxe máis potente e sinxela. Entón, creáronse as linguaxes de alto nivel. Unha tarefa tan sinxela como sumar dous números pode necesitar varias instrucións nunha linguaxe de baixo nivel como o ensamblador, pola contra nunha linguaxe de alto nivel só é necesaria unha.
Unha vez escrito un programa, tanto en linguaxes de baixo como de alto nivel, é necesario compilalos, isto é, traducilos a linguaxe máquina (un executable), que é o único que un computador entende. Isto non é así con linguaxes interpretadas como C#, Java ou Javascript.
A creación do software Cando falamos de procesos de creación ou desenvolvemento de software estámonos a referir a un conxunto ordenado de pasos para chegar a obtención dun produto de software, que resolva un problema ou satisfaga unha necesidade.
Complexidade dos procesos Os procesos de creación de software poden chegar a ser moi complexos, dependendo das súas características. Por exemplo, a creación dun sistema operativo é unha tarefa que require o deseño dun proxecto, unha xestión, numerosos recursos económicos e materiais, e todo un equipo de traballo moi disciplinado traballando durante varios anos. No outro extremo, desenvolver un programa sinxelo para resolver unha ecuación de segundo grao é unha tarefa que pode facer doadamente unha persoa soa, que nin sequera ten que ser unha programadora profesional, e con medios moi accesibles.