Enginyeria de programari
De WikiLingua.net
L'Enginyeria de programari designa el conjunt de tècniques destinades a la producció d'un programa de computadora, més enllà de la sola activitat de programació. Formen part d'aquesta disciplina les ciències computacionales i el maneig de projectes, entre altres camps, propis de la branca més genèrica denominada Enginyeria informàtica.
El programari és el conjunt d'instruccions que permet al maquinari de la computadora exercir treball útil. En les últimes dècades del segle XX, les reduccions de costo en maquinari van portar al fet que el programari fos un component que participa en molts dels dispositius usats per les societats industrialitzades. Així mateix, es considera part del programari a la documentació generada durant el desenvolupament del projecte.
En el 2004, en els Estats Units, l'Oficina d'Estadístiques del Treball (O. S. Bureau of Labor Statistics) va explicar 760.840 enginyers de programari de computadora amb treball.[1] El terme "enginyer de programari", no obstant això, s'utilitza en forma genèrica en l'ambient empresarial, i no tots els enginyers de programari posseeixen realment títols d'Enginyeria d'universitats reconegudes.
Algunes persones pensen que Desenvolupament de Programari és un terme més apropiat que Enginyeria de Programari per al procés de crear programari. Persones com Pete McBreen (autor de "Programari Craftmanship") creu que el terme IS implica nivells de rigor i prova de processos que no són apropiats per a tot tipus de desenvolupament de programari.
Taula de continguts |
[editar] Implicacions socioeconómicas
L'enginyeria de programari afecta a l'economia i les societats de moltes maneres.
[editar] Econòmicament
En els EUA, el programari va contribuir a 1/4 de tot l'increment del PIB durant els 90's (al voltant de 90,000 milions de dòlars per any), i 1/6 de tot el creixement de productivitat durant els últims anys de la dècada (al voltant de 33,000 milions de dòlars per any). L'enginyeria de programari va contribuir a $1 bilió de creixement econòmic i productivitat en aquesta dècada. Al voltant del globus, el programari contribueix al creixement econòmic en formes similars, encara que és difícil de trobar estadístiques fiables.
[editar] Socialment
L'enginyeria de programari canvia la cultura del món a causa de l'estès ús de la computadora. El correu electrònic (I-mail), la WWW i la missatgeria instantània permeten a la gent interactuar en noves formes. El programari baixa el costo i millora la qualitat dels serveis de salut, els departaments de bombers, les dependències governamentals i altres serveis socials. Els projectes reeixits on s'han usat mètodes d'enginyeria de programari inclouen a Linux, el programari del transbordador espacial, els caixers automàtics i molts uns altres.
L'enginyeria de programari es pot considerar com l'enginyeria aplicada al programari, això és sobre la base d'eines preestablecidas, l'aplicació de les mateixes de la forma més eficient i òptima; objectius que sempre busca l'enginyeria. No és només de la resolució de problemes, sinó més bé tenint en compte les diferents solucions, triar la més apropiada.
[editar] Metodologia
Un objectiu de dècades ha estat el trobar processos o metodologies predecibles i repetibles que millorin la productivitat i la qualitat.
[editar] Etapes del procés
L'enginyeria de programari requereix dur a terme nombroses tasques, dintre d'etapes com les següents:
[editar] Anàlisi de requisits
Extreure els requisits d'un producte de programari és la primera etapa per a crear-ho. Mentre que els clients pensen que ells saben el que el programari ha de fer, es requereix d'habilitat i experiència en l'enginyeria de programari per a reconèixer requisits incomplets, ambigus o contradictoris. El resultat de l'anàlisi de requisits amb el client es plasma en el document ERS, Especificació de Requeriments del Sistema, l'estructura del qual pot venir definida per diversos estàndards, tals com CMM-I. Així mateix, es defineix un diagrama d'Entitat/Relació, en el qual es plasmen les principals entitats que participaran en el desenvolupament del programari.
La captura, anàlisi i especificació de requisits (fins i tot proves d'ells), és una part crucial; d'aquesta etapa depèn en gran mesurada l'assoliment dels objectius finals. S'han ideat models i diversos processos de treball per a aquestes fins. Encara que àdhuc no està formalitzada, ja es parla de l'Enginyeria de Requisits.
La IEEE Std. 830-1998 normalitza la creació de les Especificacions de Requisits Programari (Programari Requirements Specification).
[editar] Especificació
És la tasca de descriure detalladamente el programari a ser escrit, en una forma matemáticamente rigorosa. En la realitat, la majoria de les bones especificacions han estat escrites per a entendre i afinar aplicacions que ja estaven desenvolupades. Les especificacions són més importants per a les interfaces externes, que han de romandre estables.
[editar] Disseny i arquitectura
Es refereix a determinar com funcionarà de forma general sense entrar en detalls. Consisteix a incorporar consideracions de la implementación tecnològica, com el maquinari, la xarxa, etc. Es defineixen els Casos d'Ús per a cobrir les funcions que realitzarà el sistema, i es transformen les entitats definides en l'anàlisi de requisits en classes de disseny, obtenint un model proper a la programació orientada a objectes.
[editar] Programació
Reduir un disseny a codi pot ser la part més òbvia del treball d'enginyeria de programari, però no és necessàriament la porció més llarga. La complexitat i la durada d'aquesta etapa està intimamente lligada a l'o als llenguatges de programació utilitzats.
[editar] Prova
Consisteix a comprovar que el programari realitzi correctament les tasques indicades en l'especificació. Una tècnica de prova és provar per separat cada mòdul del programari, i després provar-ho de forma integral,per a asi arribar a l'objectiu. Es considera una bona practica el qual les proves siguin efectuades per algú distint al desarrollador que la va programar, idealmente un area de proves; sense perjudici de l'anterior el programador ha de fer les seves pròpies proves. En general hi ha dues grans formes d'organitzar un area de proves, la primera és que estigui composta per personal inexperto i que desconegui el tema de proves, d'aquesta forma s'avalua que la documentació lliurada sigui de qualitat, que els processos descrits són tan clars que qualsevol pot entendre'ls i el programari fa les coses tal com estan descrites. El segon enfocament és tenir un area de proves conformada per programadores amb experiència, persones que saben sense majors indicacions en què condicions pot fallar una aplicacion i que poden posar atencion en detalls que personal inexperto no consideraria.
[editar] Documentació
Tot el concerniente a la documentació del propi desenvolupament del programari i de la gestió del projecte, passant per modelaciones (UML), diagramas, proves, manuals d'usuari, manuals tècnics, etc; tot amb el propòsit d'eventuals correccions, usabilidad, manteniment futur i ampliacions al sistema. mmmm falta
[editar] Manteniment
Mantenir i millorar el programari per a enfrontar errors descoberts i nous requisits. Això pot portar més temps fins i tot que el desenvolupament inicial del programari. Al voltant de 2/3 de tota l'enginyeria de programari ha de veure amb donar manteniment. Una petita part d'aquest treball consisteix a arreglar errors, o bugs. La major part consisteix a estendre el sistema per a fer noves coses. De manera similar, al voltant de 2/3 de tota l'enginyeria civil, arquitectura i treball de construcció és donar manteniment.
[editar] Models de desenvolupament de programari
L'enginyeria de programari té diversos models o paradigmes de desenvolupament en els quals es pot recolzar per a la realització de programari, dels quals podem destacar a aquests per ser els més utilitzats i els més complets:
- Model en esquerdada o Clàssic (model tradicional)
- Model en espiral (model evolutiu)
- Model de prototips
- Desenvolupament per etapes
- Desenvolupament iterativo i creixent o Interativo Incremental
- RAD (Rapid Application Development)
[editar] Naturalesa de la IS
L'Enginyeria de Programari ha de veure amb diversos camps en diferents formes:
[editar] Matemàtiques
Els programes tenen moltes propietats matemàtiques. Per exemple la correcció i la complexitat de molts algoritmos són conceptes matemàtics que poden ser rigurosamente provats. L'ús de matemàtiques en la IS és anomenat mètodes formals. Edsger Dijkstravistas pragmáticos i les característiques esperades dels enginyers. Anàlisi, documentació, i codi comentat són signes d'un enginyer. Bazzano i Ostrichi han argumentat que és una enginyeria.
[editar] Creació
Els programes són construïts en una seqüència de passos. El fet de definir pròpiament i dur a terme aquests passos, com en una línia d'ensamblaje, és necessari per a millorar la productivitat dels desarrolladores i la qualitat final dels programes. Aquest punt de vista inspira els diferents processos i metodologies que trobem en la IS.
[editar] Gestió de Projectes
El programari comercial (i molt no comercial) requereix gestió de projectes. Hi ha pressupostos i establiment de temps. Gent per a liderar. Recursos (espai d'oficina, computadores) per adquirir. Tot això encaixa apropiadamente amb la visió de la Gestió de Projectes.
[editar] Art
Els programes contenen molts elements artístics. Les interfaces d'usuari, la codificació, etc. Fins i tot la decisió per a un nom d'una variable o una classe. Donald Knuth és famós perquè ha argumentat que la programació és un art.
[editar] Organitzacions
- Programari Engineering Institute (SaI)
- Association for Computing Machinery (ACM)
- British Computer Society (BCS)
- IEEE Computer Society
- RUSSOFT Association
- Society of Programari Engineers
[editar] Bibliografía
- Enginyeria de Programari (sisena edició), Ian Sommerville. Addison Wesley. Lloc en Engonals
[editar] Referències
- ↑ Bureau of Labor Statistics, O.S. Department of Labor, USDL 05-2145: Occupational Employment and Wages, November 2004, Table 1.
[editar] Vegi's també
- Enginyeria de Sistemes
- Enginyeria informàtica
- Gestió de la configuració
- Manteniment de programari
- Fragilitat del programari
- Error de programari
- Usabilidad

