# Desenvolupament de programari

El desenvolupament de programari és la programació informàtica, documentació, proves i correcció d'errors involucrats en la creació i el manteniment d'aplicacions i frameworks donant com a resultat un producte de programari.
El terme es refereix a un procés d'escriure i mantenir el codi font, però en un sentit més ampli del terme, inclou tot el que està involucrat entre la concepció del programari fins a la manifestació final del programari, idealment en un procés estructurat i planificat. Per tant, el desenvolupament de programari pot incloure investigació, desenvolupament, prototipatge, modificació, reutilització, reenginyeria, manteniment o qualsevol altra activitat que es tradueixi en productes de programari.
El programari es pot desenvolupar per una gran varietat de proposits. Més communment: un programari dissenyat específicament per un client/empresa, un programari dissenyat per suplir les necessitats del públic general o per a ús personal.

## Metodologies

El procés de desenvolupament de software (també conegut com a metodologia de desenvolupament de programari o cicle de vida) és un framework que s'utilitza per estructurar, planificar i controlar el procés de desenvolupament de sistemes d'informació. Una gran quantitat de frameworks han evolucionat al llarg dels anys, cada un d'ells amb les seves fortaleses i febleses. Hi ha diverses formes d'aproximar-se al desenvolupament de programari: algunes prenen un enfocament més estructurat (solucions basades en l'enginyeria), mentre que altres prenen un enfocament més incremental (peça per peça). No tots els enfocaments són recomanables per tots els projectes.
La majoria de les metodologies comparteixen alguna combinació dels següents àrees de desenvolupament de software:
* Anàlisi del problema
* Recerca del mercat
* Reunió de requisits
* Implementació del programari
* Testeig del programari
* Publicació
* Manteniment i correcció de bugs
Normalment s'anomena a aquests estats com el cicle de vida del programari. Diferents enfocaments poden executar aquestes fases en ordres diversos o dedicar més o menys temps en cada un d'ells. El nivell de detall de la documentació produïda a cada fase del desenvolupament del software també pot variar.
Hi ha avantatges o desavantatges significants per les diverses metodologies, i el millor enfocament per resoldre el problema dependrà del seu tipus. Si el problema és molt clar i la solució es pot planificar efectivament per endavant, seguir el metode “cascada” pot ser un bona solució. Si no es pot, llavors seguir un mètode més “extrem” (dedicar més temps a codi i menys a la planificació) podria funcionar millor.

## Activitats del desenvolupament de programari
### Reunió de necessitats

Hi ha moltes idees que envolten al programari. Aquestes idees parteixen de l'estudi als clients als que van destinats, possibles nous clients, al pressupost i fins i tot amb la relació amb terceres companyies. Les primeres decisions les pren el sector de marketing que s'encarrega de calcular els costos, econòmics i de temps. També té en compte els objectius de la companyia i quines possibles funcions ha d'incloure.
Ja que el desenvolupament de software pot comprometre o anar més enllà al que requerim del client, alhora de participar en un projecte ha de prescindir d'utilitzar paraules tècniques de cara al client, com per exemple recursos humans, propietat intel·lectual, pressuposts, etc.

### Planificació

L'objectiu de la planificació és la de descobrir elements relacionats amb el projecte. Moltes vegades els clients tenen una vaga idea del que volen com a resultat final, però no saben què és el que el programa hauria de fer.
Una cop ajuntats tots el requeriments essencials, s'ha de determinar analíticament la direcció del desenvolupament.
Algunes funcionalitats poden estar fora del rang del desenvolupament planejat, això pot ser degut al fet que els objectius no són prou clars o massa costosos. És recomanable que els requeriments estiguin escrits en paper per si hi ha futures disputes s'utilitzi com a referència del que es va prometre al client.

### Disseny

Un cop els requeriments han sigut establerts, el disseny del programari es pot plasmar en un document de disseny de programari. Això inclou un preliminar d'un disseny en alt nivell del mòdul principal amb una “foto general” (com un diagrama de bloc) de com ajuntar totes les parts. Tant el llenguatge de programació, com el sistema operatiu, com el hardware s'haurien de saber en aquest moment del desenvolupament. Llavors es procedeix en crear un disseny en baix nivell, potser amb un prototip com a prova de concepte o per firmar els requeriments.

### Implementació, testeig i documentació

La implementació és la part del procés on els enginyers de programari realment programen el codi del projecte.
El testeig és una part integral del procés de desenvolupament de programari. Aquesta part, intenta assegurar detectar totes les imperfeccions per tal de corregir-les.
Documentar el disseny intern del software amb intenció de manteniment i millores futures, també es fa durant el desenvolupament. Això es fa per exemple escrivint una API tant interna com externa.

### Publicació i manteniment

La publicació i manteniment comencen directament després que el codi hagi sigut aprovat i distribuït. Pot incloure instal·lació, personalització, test i possiblement un període agregat d'avaluació.
Les ajudes i servei tècnic també és important, ja que el software només serà útil si se’n fa un ús correcte.
Mantenir i millorar el software amb els errors que poden sorgir, poden requerir temps substancial, ja que possibles requeriments que no s'han tingut en compte poden forçar haver de redissenyar el programari.

## Referències

* ↑ Modelos de desarrollo, técnicas y documentos de planificación temporal y seguimiento de un proyecto informático. Ingenieria en Software - Tema 3

## Vegeu també

* Desenvolupador de programari
* Entropia del programari
* Gestió de versions

## Enllaços externs

* M. Davis, Alan. 201 Principles of Software Development (en anglès). McGraw-Hill, 07/03/1995.
* Jordi Gili Llurba. Aspectes econòmics de l'ús de programari lliure