Saltar ao contido

Software

Este é un dos 1000 artigos que toda Wikipedia debería ter
1000 12/16
Na Galipedia, a Wikipedia en galego.

Diagrama que amosa como o usuario interactúa coasaplicacións informáticasnunordenador persoaltípico. A capa da aplicación informática relaciónase cosistema operativo,que á súa vez comunícase cohardware.As frechas indican o fluxo de información.

Eninformática,a palabra inglesasoftwareutilízase para describir a parte non física ( "lóxica" ) doordenador,tamén chamadaprogramaouaplicacióninformática.

Chámase así en contrapartida á parte física da computadora, ohardware(monitor,teclado,rato,escáner...etc), que é o que fai que os programas se poidan executar e o usuario poidainteraccionarco ordenador. O software é o códigocompiladoque se transforma enaplicaciónsutilizables, que poden serofimáticas,de deseño,multimediaetc.

O software de ordenador (ou sinxelamente, software) refírese a un ou máisprogramas de ordenadore osdatosalmacenados para algún propósito concreto. O software permite o funcionamento programado previamentecodificado,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 outrosoftware de programa.

O termosoftwarefoi usado por primeira vez neste senso porJohn W. Tukeyen1957;de xeito coloquial, o termo utilízase frecuentemente para designar aplicacións,utilidades,osistema operativoetc.. Eninformáticaeenxeñaría de software,software é toda ainformaciónprocesada polosistema informático,programasedatos.

Definición de software

[editar|editar a fonte]
Retrato deCharles Babbage,introdutor do concepto deprograma.

Existen varias definicións similares aceptadas para software, pero probablemente a máis formal sexa a seguinte:

É o conxunto dos programas de cómputo, procedementos, regras, documentación e datos asociados, que forman parte das operacións dun sistema de computación.
Extraído do estándar 729 doIEEE[1]

Considerando esta definición, o concepto de software vai máis aló dos programas de computación nos seus distintos estados:código fonte,binarioouexecutable;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 en1957.Na enxeñaría de software e asciencias da computación,o software é toda ainformaciónprocesada polossistemas informáticos:programas edatos.

O conceptode ler diferentes secuencias de instrucións (programa) desde amemoriadun dispositivo para controlar os cálculos foi introducido porCharles Babbagecomo parte da súamáquina diferencial.A teoríaque forma a base da maior parte do software moderno foi proposta porAlan Turingno 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.

Estatua en homenaxe a Alan Turing, situada nos Xardíns de Whitworth,Manchester(Inglaterra).

A primeira teoría sobre o software foi proposta porAlan Turingno seu ensaio do 1935 denominado "On Computable Numbers, with an application to the Entscheidungsproblem" (Sobre os números calculables, cunha aplicación óEntscheidungsproblem)[2][3]O termo "software" foi utilizado por primeira vez nun documentoimpresoen1958porJohn Tukeynun artigo publicado na revista de matemáticasAmerican Mathematical Monthly.Coloquialmente, o termo utilízase a miúdo no sentido de software de aplicación. Eninformáticae enenxeñaría de software,o software é toda ainformaciónprocesada por unsistema informático,os programas e osdatos.[4]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 primeiroerro de software,en 1946. Como que cada vez hai máis programas que pasan a formar parte do mundo dofirmwaredebido a que ohardwarefaise 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 dosenxeñeirosque crean oscircuítos impresos.

Do mesmo xeito que o fixo aindustria automotriz,aindustria do softwareevolucionou a partir duns poucos visionarios que traballaban conprototiposno seu garaxe.Steve JobseBill Gatesforon oHenry Forde oLouis Chevroletda súa época, que aproveitaron e capitalizar as ideas xa coñecidas antes de que iniciasen o seu negocio. No caso dodesenvolvemento de software,acéptase de maneira xeneralizada que o momento inicial foi a publicación nadécada de 1980das especificacións doIBM Personal Computerpor parte do empregado deIBMDon Estridge.Hoxe este movemento podería verse como un tipo decrowdsourcing(subcontratación aberta).

Ata este momento, o software eraempaquetadoxunto co hardware polosOEM(fabricantes de equipos orixinais), comoData General,Digital Equipmentou IBM. Naquel momento, cando un cliente compraba unminiordenador,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 unactivo(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 chamadoData General Nova,unha compañía chamada Digidyne quixo utilizar o seusistema operativoRDOS (Real-time Disk Operating System) no seu propio clon do hardware. Data General negouse alicenciar 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 chamadoDigidyne v. Data General in 1985e 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.[5]Pouco despois, IBM publicaba ocódigo fontedo seusistema operativo de discode maneira gratuíta, e naceuMicrosoft.Data General acabou sendo absorbida porEMC Corporationao ser incapaz de soportar as perdas causadas polos honorarios dosavogados.A decisión da Corte Suprema permitiu valorar o software e tamén comprarpatentes 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 eAppleforon capaces de sacar proveito dos produtossoftware.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 áspatentes 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ándaresde facto,por exemploDOSpara os sistemas operativos, pero tamén diferentes sistemas propietarios detratamento textoefollas 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

[editar|editar a fonte]
Logo dosistema operativoLinux.

Calquera ordenador moderno de uso xeral (en oposición aossistemas embebidos) conta con varias "capas" de software que realizan cada unha certas tarefas determinadas. Divídense habitualmente en tres categorías principais:

Software de sistema
Osoftware de sistemainclúe osistema básico de entrada e saída( "BIOS", chamado taménfirmwareen vez desoftware), oscontroladoresdos dispositivos, unsistema operativoe, normalmente, unhainterface gráfica de usuario( "GUI" ) que, en conxunto, lle permiten ao usuario poderinteraccionarco ordenador e os seusperifé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
Osoftware de aplicaciónpermítelle ao usuario realizar unha ou máistarefasconcretas, como as aplicacións deofimáticacoas que é posíbel redactar documentos (procesador de textos), realizar cálculos enfollas de cálculo,ou xogar cosvideoxogos.O software de aplicación cómprase á parte ou descárgase deInternet.Nas aplicacións é no que a maior parte da xente pensa cando se fala de software.
Software de usuario
Osoftware de usuarioadecúa os sistemas ás necesidades específicas de cada usuario. Inclúe os modelos de follas de cálculo, asmacrosdos procesadores de texto, as simulacións científicas, os gráficos e osguións.Mesmo osfiltros de correoson un tipo de software de usuario. É fácil pasar por alto a súa importancia real.

Linguaxes de programación

[editar|editar a fonte]
Artigo principal:Linguaxe de programación.
Código fonte dun programa escrito nalinguaxe de programación java.

Para introducir ordes na computadora temos que usar unha linguaxe específica coñecida comolinguaxe máquina,que consiste en longas cadeas de númerosbinarios(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áronalinguaxe 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, é necesariocompilalos,isto é, traducilos a linguaxe máquina (un executable), que é o único que un computador entende. Isto non é así con linguaxesinterpretadascomo C#, Java ou Javascript.

A creación do software

[editar|editar a fonte]

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

[editar|editar a fonte]

Os procesos de creación de software poden chegar a ser moi complexos, dependendo das súas características. Por exemplo, a creación dunsistema 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 unhaecuació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.

Normalmente[Cómpre referencia],os proxectos divídense en tres categorías segundo o tamaño do software (as liñas de código) ou o custo: de pequeno, medio e gran tamaño. Existen varios métodos para determinar o volume dun proxecto; unha das máis populares é o sistemaCOCOMO,ou Modelo Construtivo de Custos (MOCOCU), que realiza unha relación de horas por individuo, o custo económico e a cantidade de liñas de código necesarias, que dependen dalinguaxe de programaciónque se empregue.

Nos proxectos de desenvolvemento de grande tamaño cómpre realizar moitas tarefas e moi complexas, tanto técnicas como de xestión, e fan falta análises diversas e todo o apoio da enxeñaría especializada, aenxeñaría de software.Nos proxectos de tamaño mediano e pequeno, estes traballos poden realizalos equipos de menor tamaño, ás veces mesmo só compostos por unha persoa que sexa analista-programadora. Pero, en calquera caso, sexa de forma intuitiva ou planificada, hai que seguir certas etapas necesarias de construción do software. Estas etapas varían en número e orde dependendo da metodoloxía de desenvolvemento de software que se decida empregar.

Metodoloxías de creación de software

[editar|editar a fonte]

Os procesos de desenvolvemento de software posúen regras preestablecidas: o non seguimento dunhametodoloxíaconcreta fai que aumenten as posibilidades de que o proxecto non se conclúa ou remate sen cumprir os obxectivos previstos e con variedade de erros inaceptables (fracasan, en poucas palabras).

Do total de grandes proxectos de software iniciados, un 28% fracasan, un 46% vense sometidos a modificacións moi importantes que atrasan o remate do proxecto, e un 26% desenvólvense de maneira adecuada. Cando un proxecto fracasa, poucas veces é debido a erros técnicos; a principal causa de erros e fracasos é a carencia dunha boa metodoloxía ou dun desenvolvemento axeitado. Desde os anos noventa as metodoloxías de desenvolvemento cobraron unha maior importancia nos proxectos. Normalmente, a área de especialización no estudo e desenvolvemento destas metodoloxías é a enxeñaría de software.

Entre outras, existen metodoloxías lineais, como odesenvolvemento en fervenza,enuve,ou endentes de serra,onde unha fase comeza cando remata a anterior e onde non se regresa ao principio, ou modelos iterativos como os modelosen espiralou a maior parte dos procesosáxiles,comoscrum,aprogramación extrema,olean,o Proceso Unificado Racional (RUP), e o desenvolvemento por aspectos (FDD). É habitual que para o desenvolvemento de software de tamaño medio os equipos humanos que participan apliquen as súas propias metodoloxías, que normalmente son un híbrido dos procesos anteriores e que ás veces se modifican para axeitarse a proxectos concretos con criterios propios.

Modelo dedesenvolvemento en fervenzapara a creación dun software.

O proceso de desenvolvemento pode involucrar distintas persoas con diferentes papeis, desde o ámbito administrativo, pasando polo técnico e a xestión ou a comercialización. Pero de forma moi xeral podemos enumerar unha serie de etapas, que se poden resumir en:

  • Especificación e análise de requisitos (captura e obtención de información)
  • Deseño
  • Programación
  • Testaxe (testaxes unitarias e de integración)
  • Instalación e produción
  • Mantemento

Estas etapas poden mudar lixeiramente de nome, ser máis globais, ou máis concretas; agrupárense ou escindírense en etapas máis específicas.

Linguaxes e paradigmas

[editar|editar a fonte]

Hai moitaslinguaxes de programación,como son oC,PHP,Perl,Python,Java,BASICetc. que se poden utilizar para escribir programas. As ferramentas mínimas que se necesitan son un editor de texto e uncompiladorouintérpreteda linguaxe que se utilice.

Pódese crear software seguindo diferentesparadigmas,por exemplo aprogramación estruturadaou aprogramación orientada a obxectos

Dereitos de autor

[editar|editar a fonte]

Frecuentemente clasifícase o software segundo as liberdades que ofrece (libre ou propietario) ou se é de pago ou non (software de proba (shareware),abandonware,freeware...).

Software libre

[editar|editar a fonte]
Artigo principal:Software libre.
Firefox,un dos programas máis coñecidos de software libre.

O software libre (en inglésfree software) é o software que pode ser utilizado, estudado e modificado sen restricións, e que pode ser copiado e redistribuído ben nunha versión modificada ou sen modificar sen ningunha restrición, ou ben cunhas restricións mínimas para garantir que os futuros destinatarios tamén terán estes dereitos.

En xeral, pódese dicir que un programa é libre se permite catro liberdades definidas polaFree Software Foundation:

  • A liberdade de executar o software para calquera propósito (liberdade 0).
  • A liberdade de ver como funciona o programa e adaptalo ás propias necesidades (liberdade 1). Isto implica o acceso aocódigo fontecomo requisito.
  • A liberdade de redistribuír copias (liberdade 2)
  • A liberdade de mellorar o programa e de distribuílo de novo coas melloras realizadas, para que toda a comunidade se poida beneficiar (liberdade 3). Igual que no caso da liberdade 1, o acceso aocódigo fonteé un requisito imprescindible.

Como que este tipo de software pode redistribuírse libremente, en xeral pódese atopar gratuitamente enInternet,ou cun custo baixo se o adquirimos por medio doutros apoios (Cd-romouDVDpor exemplo). Debido a iso, os modelos de negocio baseados en software libre normalmente baséanse a proporcionar servizos de valor engadido por exemplo apoio técnico, cursos de formación, personalización, integración, ou certificación.

Software propietario

[editar|editar a fonte]
Artigo principal:Software propietario.

O software propietario ounon libreé calquera software sometido a restricións na súa utilización, modificación privada, ou con restricións na copia e publicación de versións modificadas ou non modificadas. Normalmente o seucódigo fontenon está dispoñible, ou só baixo restricións. As restricións derivadas dosdereitos de autor,patentes,propiedade intelectualetc., do propietario aplícanse por medios legais pero ás veces tamén técnicos. Aínda que o código fonte poida facerse público, o software pode continuar sendo de propiedade se se manteñen as restricións antes mencionadas.

Software gratuíto

[editar|editar a fonte]

Osoftware gratuíto( "freeware" en inglés) é un software que se distribúe sen ningún custo. Ás veces inclúese ocódigo fonte,pero non é un requisito necesario. O software gratuíto adoita incluír unha licenza de uso, que permite que se redistribúa, pero con algunhas restricións como a prohibición de modificar a aplicación ou vendela, ou que só pode usarse para uso persoal, non comercial, académico etc. É habitual a utilización deste tipo de software para dar a coñecer un produto e poder conseguir usuarios dispostos a pagar por unha versión máis completa ou avanzada.

Software de proba

[editar|editar a fonte]

Osoftware de probaousharewareé un tipo de software que ten permiso de redistribución, pero que advirte a todo o mundo que o uso continuado da copia recibida implica o pago dunha licenza de uso.

Software descatalogado

[editar|editar a fonte]
Artigo principal:Abandonware.

O software descatalogado (abandonware) é un software que xa non se desenvolve nin se mantén polo titular dos seus dereitos (copyright). Habitualmente trátase de xogos ou programas sen funcións avanzadas que teñen máis de 5 anos de antigüidade e que poden ser descargados e utilizados.

Industria do software

[editar|editar a fonte]
Software de navegación con GPS para móbiles co sistema operativoAndroid.

Aindustria do softwareestá constituída por unha gran variedade de empresas de software e programadores. O software pode ser unha industria moi rendible,Bill Gates,o fundador deMicrosoft,foi a persoa máis rica do mundo en 2009 en gran parte grazas ás vendas deMicrosoft WindowseMicrosoft Office,dous produtos de software. O mesmo pasa conLarry Ellison,que obtén en gran parte as súas ganancias a través do seu software de base de datos denominadoOracle Database.

Ao longo do tempo a industria do software foise especializando cada vez máis e hai varios tipos de negocios. Atopamos campos como o do software de sistemas e infraestrutura, que inclúe ossistemas operativos,software intermediario(middleware) e bases de datos, e créano empresas comoMicrosoft,IBM,Sybase,EMC,OracleouVMware.O software empresarial que automatiza os procesos empresariais nas finanzas, a produción, a loxística, as vendas e a mercadotecnia fano empresas como Oracle Corporation,SAP AG,SageouInfor.O software de seguridade está feito por empresas comoSymantec,Comodo,Trend MicroouKaspersky.

Varios fabricantes de software específico para a industria tamén se atopan entre as maiores compañías de software do mundo:SunGardfai software para bancos,BlackBoarfai software para as escolas, e empresas comoQualcommouCybervisionfan software para empresas detelecomunicacións.Outras empresas realizan contratos de programación para desenvolver un software único e a medida para unha empresa en particular, ou céntranse na configuración e personalización dos paquetes de grandes fabricantes como SAP ou Oracle.

Tamén hai organizacións sen ánimo de lucro que se dedican á creación de software, neste grupo inclúense aFree Software Foundation,GNU(GNU/Linux) ou aFundación Mozilla(creadora do navegadorFirefoxentre outros populares produtos). Xunto a estas hai outras organizacións dedicadas á estandarización do software como aW3Cou aIETFque desenvolven e promoven estándares de software de forma que a maior parte do software poida interaccionar a través de estándares por exemploXML,HTML,HTTPouFTP.

  1. IEEE Std, IEEE Software Engineering Standard: Glossary of Software Engineering Terminology. IEEE Computer Society Press, 1993
  2. 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.
  3. Turing, A.M. (1936).On Computable Numbers, with an Application to the Entscheidungsproblem.Proceedings of the London Mathematical Society.242.pp. 230–65.doi:10.1112/plms/s2-42.1.230.(eTuring, A.M. (1938).On Computable Numbers, with an Application to the Entscheidungsproblem: A correction.Proceedings of the London Mathematical Society.243.pp. 544–6.doi:10.1112/plms/s2-43.6.544.)
  4. Leonhardt, David (28 xullo de 2000)."John Tukey, 85, Statistician; Coined the Word 'Software'".New York Estafes.
  5. Myers, Gary (1985)."Tying Arrangements and the Computer Industry: Digidyne Corp. v. Data General Corp.".Duke Law Journal1985(5): 1027–1056.ISSN0012-7086.doi:10.2307/1372482.

Véxase tamén

[editar|editar a fonte]

Outros artigos

[editar|editar a fonte]