Programari
De Viquipèdia
El programari (software, en anglès) és un terme general emprat per descriure el conjunt dels programes informàtics, procediments i documentació que fan alguna tasca en un ordinador. Comprèn el conjunt sistemàtic dels programes d’explotació i dels programes informàtics que serveixen per a aplicacions determinades.[1] El terme inclou aplicacions com els processadors de text, programari de sistema com el sistema operatiu, que fa d'interfície entre el maquinari i les aplicacions, i finalment el middleware, que controla i coordina sistemes distribuïts.
Taula de continguts |
[edita] Definició de Programari
Probablement, la definició més formal de programari sigui la seguent:
| « | És el conjunt dels programes de computació, procediments, regles, documentació i dades associades que formen part de les operacions d'un sistema de còmput. | » |
En aquesta definició, el concepte de programari va més enllà dels programes de computació en els seus diferents estats: codi font, binari o executable; també la seva documentació, les dades a processar i la informació d'usuari forma part del software: es a dir, abarsta tot allò intangible, tot el "no físic" relacionat.
El terme «software» va ser utilitzar per primera vegada en aquest sentit per John W. Tukey el 1957. En informàtica i en l'enginyeria de programari, el programari és tota la informació processada pels sistemes informàtics: programes i dades. El concepte de llegir diferents seqüències d'instruccions des de la memòria d'un dispositiu per a controlar els càlculs va ser introduït per Charles Babbage com una part de la seva màquina diferencial. La teoria que forma la base de la major part del programari modern va ser proposada per primera vegada per Alan Turing en el seu assaig del 1936, Els nombres computables, amb una aplicació al problema de la decisió.
[edita] Classificació
Si bé aquesta distinció és, en certa manera, arbitrària, i de vegades confusa, prioritzant la finalitat pràctica de l'objecte, el programari es pot classificar en tres grans grups:
- Programari de sistema
- Programari de programació
- Programari d'aplicació
- Programari de sistema. El seu objectiu és desvincular adequadament l'usuari i el programador dels detalls de l'ordinador que s'usi en particular, aïllant-lo especialment del processament referit a les característiques internes com poden ser la memòria, els discs, els ports i els dispositius de comunicacions, la impressora, la pantalla, o el teclat. El programari de sistema us procura l'usuari i programador adequades interfícies d'alt nivell, eines i utilitats de suport que permeten el seu manteniment. Inclou entre altres:
-
- Sistemes operatius. És el programari que s'inicia en engegar un ordinador, i que controla l'execució de tots els altres programes.
- Controladors de dispositiu
- Eines de diagnòstic
- Eines de correcció i optimització
- Servidors
- Utilitats
- Programari de programació. És el conjunt d'eines que permeten al programador desenvolupar programes informàtics, utilitzant diferents alternatives i llenguatges de programació, d'una manera pràctica. Inclou entre altres:
-
- Editors de text
- Compiladors
- Intèrprets
- Enllaçadors
- Depuradors
- Entorns de Desenvolupament Integrats (IDE). Agrupen les anteriors eines, normalment en un entorn visual, de manera que el programador no necessiti introduir múltiples ordres per, entre altres coses, compilar, interpretar, i depurar. Habitualment compten amb una avançada interfície gràfica d'usuari (GUI).
- Programari d'aplicació. És aquell que permet als usuaris dur a terme una o diverses tasques específiques, en qualsevol camp d'activitat susceptible de ser automatitzat o assistit, amb especial èmfasi en els negocis. Inclou entre altres:
-
- Aplicacions de sistema de control i automatització industrial
- Aplicacions ofimàtiques
- Programari educatiu
- Programari empresarial
- Bases de dades
- Telecomunicacions (com per exemple internet i tota la seva estructura lògica)
- Videojocs
- Programari mèdic
- Programari de càlcul numèric
- Programari de disseny assistit (CAD)
- Programari de Fabricació assistida per ordinador(CAM)
Con a complement al que s'ha dit, hi ha altres possibles tipus de programari que es poden considerar:
- El microprogramari (firmware, en anglès) és el programari específic que controla un dispositiu (un mòdem, una unitat de DVD, un microprocessador...)
- El programari portàtil és aquell que es pot ubicar normalment en un medi que es pot extreure i que pot executar-se en qualsevol maquinari.
- Les biblioteques contenen funcions comunes del sistema operatiu, que són utilitzades des d'altres programes.
- Les aplicacions són programes que executa un usuari amb una funció concreta; calculadora, processador de textos, gestors de fulls de càlcul, videojocs, missatgeria...
[edita] Procés de creació de programari
Es defineix un procés al conjunt ordenat de passos a seguir per arribar a la solució d'un problema o obtenció d'un producte, en aquest cas particular, per aconseguir l'obtenció del programari que resolgui un problema o satisfaci una necessitat.
Aquest procés de creació de programari pot arribar a ser molt complex, depenent del seu port i de les característiques del mateix. Per exemple, la creació d'un sistema operatiu és una tasca que requereix un projecte, gestió, nombrosos recursos i tot un equip de treball ben disciplinat. A l'altre extrem, si es tracta d'un programa senzill, com per exemple un per a la resolució d'una equació de segon ordre, aquest pot ser realitzat fàcilment per un sol programador, fins i tot per un programador aficionat. Normalment, els ports es divideixen en tres categories segons la mida del programari (les línies de codi) i/o el cost: de petit, mitjà i gran port. Hi ha diverses metodologies per fer les estimacions pertinents; una de les més populars és el sistema COCOMO que proveeix mètodes i un programa que calcula i proporciona una estimació de tots els costos de producció en un "projecte programari" on hi ha, entre altres coses, una relació d'hores per individu, el cost econòmic i la quantitat de línies font d'acord amb llenguatge usat.
Considerant els de gran port, és necessari realitzar moltes tasques i molt complexes, tècniques, de gerència, amb una intensa gestió, i calen anàlisis diverses per al seu estudi i realització i tot el suport de l'enginyeria: l'enginyer de programari.
En tant que en els de port mitjà, petits equips de treball, que fins i tot pot consistir en un avesat i solitari analista-programador, pot realitzar la tasca. Encara que, sempre en casos de mitjà i gran port –i de vegades, segons la seva complexitat, també en alguns petit port–, s'han de seguir certes etapes que són necessàries per a la construcció del programari. Aquestes etapes, si bé han d'existir, són flexibles en la seva forma d'aplicació, d'acord a la metodologia o Procés de Desenvolupament escollit i utilitzat per l'equip de desenvolupament o analista-programador solitari (si és el cas).
Els "processos de desenvolupament de programari" posseeixen regles preestablertes, i han de ser aplicats en la creació del programa de mitjà i gran port, ja que en cas contrari el més segur és que el projecte o no aconsegueixi concloure o acabi sense complir els objectius previstos i amb varietat d'errors inacceptables (fracassen, en poques paraules). Entre aquests "processos" n'hi ha d'àgils o lleugers, com per exemple la programació extrema (XP), pesats i lents com l'RUP, i variants intermèdies; i normalment s'apliquen d'acord al tipus i porte i tipologia del programari a desenvolupar, a criteri del líder (si ho hi ha) de l'equip de desenvolupament. Alguns d'aquests processos són l'Extreme Programming (XP) (Programació extrema), el Rational Unified Process (RUP), i el Feature Driven Development (FDD).
Qualsevol que sigui el "procés" utilitzat i aplicat en un desenvolupament de programari (RUP, FDD, etc), i gairebé independentment d'ell, sempre s'ha d'aplicar un "model de cicle de vida".
S'estima que, del total de grans projectes de programari iniciats, un 28% fracassen, un 46% cauen en severes modificacions que retarden l'acabament del projecte, i un 26% es desenvolupen de manera adequada. Quan un projecte fracassa, poques vegades és degut a falles tècniques; la principal causa d'errors i fracassos és la manca d'una bona metodologia o d'un adequat desenvolupament. Entre altres, des de fa poques dècades, una clara tendència és la de millorar les metodologies o processos de desenvolupament, o crear-ne de noves i conscienciar als professionals perquè la seva utilització sigui l'adequada. Normalment, els especialistes en l'estudi i desenvolupament d'aquestes metodologies i àrees afins (com ara models i fins a la gestió mateixa dels projectes) són els enginyers de programes. Els especialistes en qualsevol altra àrea de desenvolupament informàtic (analista, programador, llicenciat en informàtica, enginyer en informàtica, enginyer de sistemes, etc.) Normalment apliquen els seus coneixements especialitzats però utilitzant models, paradigmes i processos ja elaborats.
És normal que per al desenvolupament de programari de port mitjà els equips humans que hi participen apliquin les seves pròpies metodologies, que normalment són un híbrid dels processos anteriors i de vegades es fan servir amb criteris propis.
El procés de desenvolupament pot involucrar nombroses i variades tasques, des de l'àmbit administratiu, passant pel tècnic i la gestió i la gerència. Però gairebé, de manera rigorosa, sempre es compleixen unes determinades etapes, que es poden resumir en:
- Captura, elicitació,[3] Especificació i Anàlisi de requisits (ERS)
- Disseny
- Codificació
- Proves (unitàries i de integració)
- Instal·lació i pas a Producció
- Manteniment
En les anteriors etapes poden variar lleugerament els seus noms, o ser més globals, o contràriament més refinades; per exemple indicar com una única fase (als fins documentals i interpretatius) de "Anàlisi i Disseny", o indicar com a "Implementació" el que està dit com "Codificació"; però en rigor, totes existeixen i inclouen, bàsicament, les mateixes tasques específiques.
Hi ha molts llenguatges de programació, com són el C, PHP, Perl, Python, Java, BASIC, etc. que es poden utilitzar per escriure programes. Les eines mínimes que es necessiten són un editor de text i un compilador o intèrpret del llenguatge que s'utilitzi.
Es pot crear programari seguint diferents paradigmes, com per exemple la programació estructurada o la programació orientada a objectes
[edita] Drets d'autor
Freqüentment es classifica el programari segons les llibertats que ofereix (lliure o propietari) o si és de pagament o no (programari de prova (shareware), abandonware...).
[edita] Referències
- ↑ «Programari». Diccionari de l'Institut d'Estudis Catalans (DIEC). Institut d'Estudis Catalans. [Consulta: 18 de juliol de 2009].
- ↑ IEEE Std, IEEE Software Engineering Standard: Glossary of Software Engineering Terminology. IEEE Computer Society Press, 1993
- ↑ «Término "Elicitar"».