|
|
| | Motius que fan que el programari sigui complex | | Motius que fan que el programari sigui complex |
| | :* Complexitat del '''domini del problema''' | | :* Complexitat del '''domini del problema''' |
| − | :: Imatge que del domini del problema té el client | + | ::* Imatge que del domini del problema té el client |
| − | :: Imatge que del domini del problema té el desenvolupador | + | ::* Imatge que del domini del problema té el desenvolupador |
| − | :: El domini del problema en sí | + | ::* El domini del problema en sí |
| | :* La dificultat de la gestió del procés de '''desenvolupament''' | | :* La dificultat de la gestió del procés de '''desenvolupament''' |
| | :* La '''flexibilitat''' del desenvolupament programari | | :* La '''flexibilitat''' del desenvolupament programari |
| − | :: Necessitat de grans tasques d''''abstracció''' | + | ::* Necessitat de grans tasques d''''abstracció''' |
| − | :: Manca d''''estàndards''' | + | ::* Manca d''''estàndards''' |
| | :* Problemes en la '''caracterització''' del comportament de sistemes discrets | | :* Problemes en la '''caracterització''' del comportament de sistemes discrets |
| − | :: Gran volum de '''variables''' | + | ::* Gran volum de '''variables''' |
| − | :: '''Interaccions''' entre les mateixes | + | ::* '''Interaccions''' entre les mateixes |
| | | | |
| | === Peculiaritats del programari === | | === Peculiaritats del programari === |
| | | | |
| − | :* El producte programari és completament conceptual. | + | :* El producte programari és completament '''conceptual'''. |
| − | :* No té propietats físiques com pes, color o voltatge, i, en conseqüència no està subjecte a lleis físiques o elèctriques. | + | :* No té '''propietats físiques''' com pes, color o voltatge, i, en conseqüència no està subjecte a lleis físiques o elèctriques. |
| − | :* La seva naturalesa conceptual crea una distància intel·lectual entre el programari i el problema que el programari resol. | + | :* La seva naturalesa conceptual crea una '''distància intel·lectual''' entre el programari i el problema que el programari resol. |
| | :* Difícil per a una persona que entén el problema entendre el sistema programari que ho resol. | | :* Difícil per a una persona que entén el problema entendre el sistema programari que ho resol. |
| − | :* Per provar és necessari disposar d'un sistema físic. | + | :* Per provar és necessari disposar d'un '''sistema físic'''. |
| − | :* El manteniment no és només una substitució de components. | + | :* El '''manteniment''' no és només una substitució de components. |
| | | | |
| | === Errors al maquinari i al programari === | | === Errors al maquinari i al programari === |
|
|
| | == Mites del programari == | | == Mites del programari == |
| | | | |
| − | Els mites del programari són creences que poden arruïnar el desenvolupament d'un projecte software. Es poden dividir en mites de gestió, mites de client, | + | Els mites del programari són '''creences que poden arruïnar el desenvolupament''' d'un projecte software. Es poden dividir en mites de gestió, mites de client, |
| | mites de desenvolupadors i mites d'administració. Alguns dels mites del client són que: | | mites de desenvolupadors i mites d'administració. Alguns dels mites del client són que: |
| | :* Una mala definició inicial és la principal causa de la feina erm en software. Aquestes característiques es poden determinar només després d'una exhaustiva comunicació entre el client i l'analista. | | :* Una mala definició inicial és la principal causa de la feina erm en software. Aquestes característiques es poden determinar només després d'una exhaustiva comunicació entre el client i l'analista. |
|
|
| | | | |
| | "Si es falla en la planificació, es pot afegir més programadors i avançar el temps perdut." | | "Si es falla en la planificació, es pot afegir més programadors i avançar el temps perdut." |
| − |
| |
| | | | |
| | == El procés == | | == El procés == |
|
|
| | Les distincions entre les activitats esmentades fins ara no sempre són clares com es volgués en les teories clàssiques d'enginyeria de programari. El disseny, en particular, pot descriure el funcionament intern d'un sistema en diferents nivells de detall, cadascuna d'ells es col·loca en una posició intermèdia entre l'anàlisi i codificació. | | Les distincions entre les activitats esmentades fins ara no sempre són clares com es volgués en les teories clàssiques d'enginyeria de programari. El disseny, en particular, pot descriure el funcionament intern d'un sistema en diferents nivells de detall, cadascuna d'ells es col·loca en una posició intermèdia entre l'anàlisi i codificació. |
| | | | |
| − | Normalment s'entén per "'''disseny de l'arquitectura'''" al disseny de "molt alt nivell", que només defineix l'estructura del sistema en termes de la mòduls de programari que es compon i les relacions macroscòpiques entre ells. A aquest nivell de disseny pertanyen fórmules com client-servidor o "tres nivells", o, més generalment, les decisions sobre l'ús de l'arquitectura de maquinari especial que s'utilitzi, el sistema operatiu, DBMS, Protocols de xarxa, etc. | + | Normalment s'entén per "'''disseny de l'arquitectura'''" al disseny de "molt alt nivell", que només defineix l'estructura del sistema en termes de la mòduls de programari que es compon i les relacions macroscòpiques entre ells. A aquest nivell de disseny pertanyen fórmules com client-servidor o "tres nivells", o, més generalment, les decisions sobre l'ús de l'arquitectura de maquinari especial que s'utilitzi, el sistema operatiu, sistema gestor de bases de dades, protocols de xarxa, etc. |
| | | | |
| | Un nivell intermedi de detall pot definir la '''descomposició''' del sistema en mòduls, però aquesta vegada amb una referència més o menys explícita a la manera de descomposició que ofereix el particular llenguatge de programació amb el que el desenvolupament s'implementarà, per exemple, en un disseny realitzat amb la tecnologia d'objectes, el projecte podria descriure el sistema en termes de classes i les seves interrelacions. | | Un nivell intermedi de detall pot definir la '''descomposició''' del sistema en mòduls, però aquesta vegada amb una referència més o menys explícita a la manera de descomposició que ofereix el particular llenguatge de programació amb el que el desenvolupament s'implementarà, per exemple, en un disseny realitzat amb la tecnologia d'objectes, el projecte podria descriure el sistema en termes de classes i les seves interrelacions. |
|
|
| | === Codificació del programari === | | === Codificació del programari === |
| | | | |
| − | Durant aquesta etapa es realitzen les tasques que comunament es coneixen com '''programació''', que consisteix, essencialment, a portar a codi font, en el llenguatge de programació triat, tot el dissenyat en la fase anterior. Aquesta tasca la realitza el programador, seguint del tot les línies impostos en el disseny i en consideració sempre als requisits funcionals i no funcionals (ERS) especificats en la primera etapa. | + | Durant aquesta etapa es realitzen les tasques que comunament es coneixen com '''programació''', que consisteix, essencialment, a portar a codi font, en el llenguatge de programació triat, tot el dissenyat en la fase anterior. Aquesta tasca la realitza el programador, seguint del tot les línies impostos en el disseny i en consideració sempre als requisits funcionals i no funcionals especificats en la primera etapa. |
| | | | |
| | És comú pensar que l'etapa de programació o codificació (alguns l'anomenen '''implementació''') és la que requereix la major part del treball de desenvolupament del programari, però, això pot ser relatiu (i generalment aplicable a sistemes de petit port) ja que les etapes prèvies són crucials, crítiques i poden portar bastant més temps. Se sol fer estimacions d'un 30% del temps total consumit en la programació, però aquesta xifra no és consistent ja que depèn en gran mesura de les característiques del sistema, la seva criticitat i el llenguatge de programació escollit. Mentre menor és el nivell del llenguatge major serà el temps de programació requerit, així per exemple es trigaria més temps a codificar un algorisme en llenguatge assemblador que el mateix programat en llenguatge C. | | És comú pensar que l'etapa de programació o codificació (alguns l'anomenen '''implementació''') és la que requereix la major part del treball de desenvolupament del programari, però, això pot ser relatiu (i generalment aplicable a sistemes de petit port) ja que les etapes prèvies són crucials, crítiques i poden portar bastant més temps. Se sol fer estimacions d'un 30% del temps total consumit en la programació, però aquesta xifra no és consistent ja que depèn en gran mesura de les característiques del sistema, la seva criticitat i el llenguatge de programació escollit. Mentre menor és el nivell del llenguatge major serà el temps de programació requerit, així per exemple es trigaria més temps a codificar un algorisme en llenguatge assemblador que el mateix programat en llenguatge C. |
| | | | |
| − | Mentre es programa l'aplicació, sistema, o programari en general, es realitzen també tasques de '''depuració''', això és la tasca d'anar alliberant al codi dels errors factibles de ser trobats en aquesta fase (de semàntica, sintàctica i lògica). Hi ha una mena de solapament amb la fase següent, ja que per depurar la lògica és necessari realitzar proves unitàries, normalment amb dades de prova, clar és que no tots els errors seran trobats només en l'etapa de programació, hauran altres que es trobaran durant les etapes subsegüents. L'aparició d'algun '''error funcional''' (mala resposta als requeriments) eventualment pot portar a retornar a la fase de disseny abans de continuar la codificació. | + | Mentre es programa l'aplicació, sistema, o programari en general, es realitzen també tasques de '''depuració''', això és la tasca d'anar alliberant al codi dels errors factibles de ser trobats en aquesta fase (de semàntica, sintàctica i lògica). Hi ha una mena de solapament amb la fase següent, ja que per depurar la lògica és necessari realitzar proves unitàries, normalment amb dades de prova, clar és que no tots els errors seran trobats només en l'etapa de programació, hi haurà altres que es trobaran durant les etapes següents. L'aparició d'algun '''error funcional''' (mala resposta als requeriments) eventualment pot portar a retornar a la fase de disseny abans de continuar la codificació. |
| | | | |
| | Durant la fase de programació, el codi pot adoptar diversos estats, depenent de la forma de treball i del llenguatge triat, a saber: | | Durant la fase de programació, el codi pot adoptar diversos estats, depenent de la forma de treball i del llenguatge triat, a saber: |
|
|
| | :* '''Proves d'integració:''' Es realitzen una vegada que les proves unitàries van ser concloses amb èxit, amb aquestes s'intenta assegurar que el '''sistema complet''', fins i tot els sotsistemes que componen les peces individuals grans del programari funcionin correctament en operar i interoperar en conjunt. | | :* '''Proves d'integració:''' Es realitzen una vegada que les proves unitàries van ser concloses amb èxit, amb aquestes s'intenta assegurar que el '''sistema complet''', fins i tot els sotsistemes que componen les peces individuals grans del programari funcionin correctament en operar i interoperar en conjunt. |
| | | | |
| − | Les proves normalment s'efectuen amb els anomenats dades de prova: | + | Les proves normalment s'efectuen amb les anomenades dades de prova: |
| | :* '''dades típiques''' a les quals es pot veure sotmès el sistema, els mòduls o els blocs de codi; | | :* '''dades típiques''' a les quals es pot veure sotmès el sistema, els mòduls o els blocs de codi; |
| | :* dades que porten a '''condicions límits''' al programari per tal de provar la seva tolerància i robustesa; | | :* dades que porten a '''condicions límits''' al programari per tal de provar la seva tolerància i robustesa; |
|
|
| | :* dades que provoquen '''condicions eventuals''' o particulars poc comuns, a les quals el programari normalment no estarà sotmès però poden ocórrer. | | :* dades que provoquen '''condicions eventuals''' o particulars poc comuns, a les quals el programari normalment no estarà sotmès però poden ocórrer. |
| | | | |
Exception encountered, of type "Error"