Tornar a la portadaTecnologia i Enginyeria I · 1r Batx. Ciències · Canviar d'assignatura
Començar gratis
BATX1 tecno · Tecnologia i Enginyeria I
Sistemes informàtics · Programació textual

El procés de desenvolupament

Cap programa neix acabat ni funciona a la primera. Entre la idea inicial i el programa fiable hi ha un procés amb etapes que es repeteixen: editar, executar, provar i corregir. Dominar aquest procés —i no només saber escriure codi— és el que distingeix qui programa de manera professional.

Et convé dominar: Programació textual (3r d'ESO)
Et convé dominar: Algorismes i pensament computacional (2n d'ESO)

El cicle de desenvolupament

Diagrama de flux del cicle de desenvolupament amb les etapes d'editar, executar, provar i depurar. Editar el codi Executar i provar funciona bé? Depurar l'error Publicar el programa no sí
Practica★☆☆Sense començar
Aquestes fases del desenvolupament d'un programa estan desordenades: (a) provar el programa amb diferents dades, (b) editar el codi font, (c) depurar els errors trobats,…

Aquestes fases del desenvolupament d'un programa estan desordenades: (a) provar el programa amb diferents dades, (b) editar el codi font, (c) depurar els errors trobats, (d) executar el programa. Ordena-les de manera raonable i explica què es fa en cadascuna, tenint en compte que en provar pot ser necessari tornar enrere.

Resoldre
Practica★☆☆Sense començar
Explica què és un «bug» en un programa i què és depurar. Posa un exemple senzill d'error que podria tenir el programa d'un caixer automàtic i quina conseqüència tindria…

Explica què és un «bug» en un programa i què és depurar. Posa un exemple senzill d'error que podria tenir el programa d'un caixer automàtic i quina conseqüència tindria per a l'usuari.

Resoldre
Practica★☆☆Sense començar
La figura mostra el cicle de treball del desenvolupament d'un programa, però una de les seves etapes està tapada amb un signe d'interrogació, com es mostra a la figura.…

La figura mostra el cicle de treball del desenvolupament d'un programa, però una de les seves etapes està tapada amb un signe d'interrogació, com es mostra a la figura.

Editar el codi Executar i provar funciona bé? ? Publicar el programa no sí

Indica quina etapa falta dins del cicle, en què consisteix i per què la fletxa de «no» retorna la feina a l'edició del codi.

Resoldre

Tipus d'error

Comparació entre error de sintaxi i de lògica: amb un error de forma al codi el programa s'atura i no arrenca; amb un error de raonament (dividir entre 4 en lloc d'entre 3) el programa s'executa i dona 5,25 en lloc de 7. error de sintaxi no arrenca media ← (a + b + c / 3 ! error de lògica arrenca, resultat erroni media ← (a + b + c) / 4 5,25 esperat: 7
Practica★☆☆Sense començar
Distingeix entre un error que apareix en compilar (el programa ni tan sols arrenca) i un error que apareix en execució (arrenca però falla amb certes dades), amb un…

Distingeix entre un error que apareix en compilar (el programa ni tan sols arrenca) i un error que apareix en execució (arrenca però falla amb certes dades), amb un exemple de cada tipus.

Resoldre
Practica★★☆Sense començar
Explica la diferència entre un error de sintaxi i un error de lògica, amb un exemple de cada tipus en un programa que calcula la mitjana de tres notes. Quin dels dos…

Explica la diferència entre un error de sintaxi i un error de lògica, amb un exemple de cada tipus en un programa que calcula la mitjana de tres notes. Quin dels dos tipus impedeix executar el programa i quin deixa executar-lo però dona resultats incorrectes?

Resoldre

Dissenyar casos de prova

Recta numèrica amb els casos de prova: un valor erroni fora del rang, dos valors límit als extrems del rang vàlid i un valor normal a l'interior. erroni límit normal límit rang de valors vàlids
Practica★☆☆Sense començar
Explica què és un cas de prova i escriu dos casos per a un programa que suma dos nombres: un amb valors normals i un altre amb algun valor especial, indicant l'entrada i…

Explica què és un cas de prova i escriu dos casos per a un programa que suma dos nombres: un amb valors normals i un altre amb algun valor especial, indicant l'entrada i el resultat esperat de cadascun.

Resoldre
Practica★★☆Sense començar
Un programa que divideix dos nombres funciona bé en gairebé totes les proves, però falla quan el divisor és 0. Explica què són els valors límit o casos especials en les…

Un programa que divideix dos nombres funciona bé en gairebé totes les proves, però falla quan el divisor és 0. Explica què són els valors límit o casos especials en les proves, per què cal provar-los sempre i esmenta dos valors més amb què provaries aquest programa.

Resoldre
Practica★★☆Sense començar
Per provar un programa que aplica un descompte a persones de 65 anys o més, defineix tres casos de prova: un amb un valor normal, un amb el valor límit exacte i un amb…

Per provar un programa que aplica un descompte a persones de 65 anys o més, defineix tres casos de prova: un amb un valor normal, un amb el valor límit exacte i un amb un valor erroni (edat negativa o impossible), amb el resultat esperat de cadascun. Justifica les teves eleccions.

Resoldre
Practica★★★Sense començar
Un company d'equip et mostra la funció següent en C++ per calcular el preu final amb IVA i aplicar un descompte si el client és soci, assegurant: «Si compila sense…

Un company d'equip et mostra la funció següent en C++ per calcular el preu final amb IVA i aplicar un descompte si el client és soci, assegurant: «Si compila sense errors ni advertiments, és impossible que falli en execució; no cal provar-la»:

float calcularPrecioFinal(float base, bool esSocio) {

    float total = base;

    if (esSocio = true) {

        total = total * 0.90f;

    }

    total = total * 1.21f;

    return total;

}
  1. Prediu raonadament la sortida de la funció per a un client no soci (esSocio = false) amb una base de 100,00 €. Coincideix amb el comportament esperat? Explica per què el compilador no ho rebutja com a error.

  2. Justifica, a partir d'aquest exemple, la diferència entre el que garanteix la verificació sintàctica del compilador i el que demostren les proves dinàmiques de programari.

  3. Proposa la correcció del codi i escriu un cas de prova concret que evidenciï la fallada si la correcció no estigués aplicada.

Resoldre
Practica★★★Sense començar
Dissenya un pla de proves per a un programa que demana dos nombres i mostra la seva divisió: fes una taula amb almenys sis casos de prova (parells de valors d'entrada,…

Dissenya un pla de proves per a un programa que demana dos nombres i mostra la seva divisió: fes una taula amb almenys sis casos de prova (parells de valors d'entrada, incloent valors normals, límit i erronis), el resultat esperat de cadascun i què hauria de fer el programa si l'entrada no és vàlida. Justifica l'elecció de cada cas.

Resoldre
Practica★★★Sense començar
La intranet del centre educatiu implementa un mòdul d'autenticació amb els requisits següents: Nom d'usuari: de 4 a 12 caràcters alfanumèrics, insensible a…

La intranet del centre educatiu implementa un mòdul d'autenticació amb els requisits següents:

  • Nom d'usuari: de 4 a 12 caràcters alfanumèrics, insensible a majúscules/minúscules.

  • Contrasenya: entre 8 i 16 caràcters, sensible a majúscules/minúscules, amb almenys un dígit i un caràcter especial.

  • Seguretat: bloqueig temporal del compte durant 15 minuts després de tres intents fallits consecutius.

Dissenya un pla de proves rigorós mitjançant una taula amb almenys sis casos de prova dissenyats per tu. Per a cada cas has d'especificar: identificador, valors d'entrada (usuari i contrasenya), estat previ del sistema, resultat esperat i quin risc específic de lògica, frontera o seguretat estàs validant.

Resoldre
Practica★★★Sense començar
Un programador sosté que «una funció d'una sola línia no necessita proves perquè és autoevident» i presenta aquesta funció escrita en C++: 1. Prediu la sortida de la…

Un programador sosté que «una funció d'una sola línia no necessita proves perquè és autoevident» i presenta aquesta funció escrita en C++:

bool esImpar(int n) {

    return (n % 2 == 1);

}
  1. Prediu la sortida de la funció per a n = 7, n = 0 i n = -7. Explica tècnicament per què es produeix un resultat inesperat en un d'ells basant-te en com implementa l'operador mòdul (%) els operands negatius en aquest llenguatge.

  2. Corregeix l'expressió perquè la funció sigui matemàticament correcta amb qualsevol nombre enter.

  3. Recolzant-te en aquest cas, rebat amb dos arguments tècnics la idea de prescindir de proves unitàries en algorismes breus o aparentment trivials.

Resoldre

Tècniques de depuració

Cicle de depuració: reproduir l'error, inserir traces per veure per on passa el programa, corregir la causa i tornar a provar amb les mateixes dades. 1. reproduirl'error2. traces: veureper on passa3. corregirla causa4. tornar a provari treure traces registre: volta 1: n = 5 volta 2: n = 5 volta 3: n = 5 … n no canvia → falta «n ← n − 1» dins del bucle
Practica★☆☆Sense començar
Explica què és un missatge de traça o registre (log) en un programa i com ajuda a trobar un error (permet veure per on ha passat el programa i amb quins valors).

Explica què és un missatge de traça o registre (log) en un programa i com ajuda a trobar un error (permet veure per on ha passat el programa i amb quins valors).

Resoldre
Practica★★☆Sense començar
Un bucle d'un programa no s'atura mai. Explica on col·locaries missatges d'escriptura temporals per diagnosticar-lo (dins del bucle, mostrant la variable de control a…

Un bucle d'un programa no s'atura mai. Explica on col·locaries missatges d'escriptura temporals per diagnosticar-lo (dins del bucle, mostrant la variable de control a cada volta) i què observaries en aquests missatges per trobar la causa.

Resoldre
Practica★★★Sense començar
En el sistema de cobrament d'una cooperativa escolar s'ha detectat que, en emetre la factura mensual, el total a pagar d'alguns socis és erroni. Disposes dels registres…

En el sistema de cobrament d'una cooperativa escolar s'ha detectat que, en emetre la factura mensual, el total a pagar d'alguns socis és erroni. Disposes dels registres del sistema següents:

  • Soci 101: 2 compres de 15,00 € -> Total cobrat: 30,00 € (esperat: 30,00 €).

  • Soci 102: 1 compra de 50,00 € amb descompte promocional del 10 % (5,00 €) i recàrrec per despeses de gestió de 3,00 € -> Total cobrat: 47,50 € (esperat: 48,00 €).

  • Soci 103: 1 compra de 20,00 € i devolució d'1 article de 5,00 € (-5,00 €) -> Total cobrat: 25,00 € (esperat: 15,00 €).

  • Formula una hipòtesi justificada sobre la fallada lògica o d'ordre d'operacions que explica l'error en el Soci 102 i en el Soci 103.

  • Dissenya l'estratègia de depuració per confirmar les teves hipòtesis: indica quines dades de prova mínimes introduiries per aïllar la fallada, en quins punts del flux situaries punts d'interrupció (breakpoints) i quines variables concretes hauries d'inspeccionar pas a pas.

Resoldre
Practica★★★Sense començar
Un script de simulació meteorològica falla aproximadament una de cada vint execucions llançant una excepció inesperada, però en executar-lo manualment pas a pas mai no…

Un script de simulació meteorològica falla aproximadament una de cada vint execucions llançant una excepció inesperada, però en executar-lo manualment pas a pas mai no reprodueix la fallada (el programa utilitza peticions a una API en temps real i una funció de generació de nombres aleatoris).

  1. Justifica per què aquest error es classifica com a no determinista (heisenbug) i identifica les dues fonts de variabilitat que impedeixen reproduir-lo a voluntat.

  2. Dissenya un pla d'actuació tècnic per forçar la reproducció controlada de la fallada sense esperar passivament que passi a l'atzar (explica com tractaries el generador de nombres pseudoaleatoris i com desacoblaries les crides de xarxa externes).

  3. Un cop localitzat i corregit el defecte, quin procediment de prova aplicaries per certificar que l'error ha desaparegut per complet i no ha estat simple casualitat estadística?

Resoldre

Modularitzar, refactoritzar i documentar

Esquema de modularització: una funció gegant de 400 línies es divideix en quatre funcions independents: leer_datos, validar_datos, calcular_resultado i mostrar_resultado. funció gegant de 400 línies es divideix en leer_datos validar_datos calcular_resultado mostrar_resultado cada funció, una tasca concreta
Practica★☆☆Sense començar
Els programes tenen versions (1.0, 1.1, 2.0...). Explica per a què serveix guardar versions del codi i què pots fer si l'última versió funciona pitjor que l'anterior.

Els programes tenen versions (1.0, 1.1, 2.0...). Explica per a què serveix guardar versions del codi i què pots fer si l'última versió funciona pitjor que l'anterior.

Resoldre
Practica★☆☆Sense començar
La documentació acompanya el programa. Explica quines dues coses hauria d'explicar com a mínim (què fa el programa i com s'utilitza) i per què un programa sense…

La documentació acompanya el programa. Explica quines dues coses hauria d'explicar com a mínim (què fa el programa i com s'utilitza) i per què un programa sense documentar «envelleix» malament quan treballa un equip.

Resoldre
Practica★★☆Sense començar
Explica què és la modularització d'un programa (dividir-lo en funcions o mòduls) i analitza dos avantatges que aporta quan el desenvolupament el fa un equip de diverses…

Explica què és la modularització d'un programa (dividir-lo en funcions o mòduls) i analitza dos avantatges que aporta quan el desenvolupament el fa un equip de diverses persones: pensa en el repartiment de la feina, en les proves i en la localització d'errors.

Resoldre
Practica★★☆Sense començar
Explica què és refactoritzar (millorar el codi sense canviar el que fa) i descriu dues refactoritzacions típiques (canviar el nom de variables per noms clars, extreure…

Explica què és refactoritzar (millorar el codi sense canviar el que fa) i descriu dues refactoritzacions típiques (canviar el nom de variables per noms clars, extreure una funció a partir de codi repetit), amb un exemple de cadascuna.

Resoldre
Practica★★☆Sense començar
Un fragment de codi utilitza les variables x, y2 i zzz per guardar el preu, l'IVA i el total. Reescriu aquests noms de manera significativa i explica per què l'elecció…

Un fragment de codi utilitza les variables x, y2 i zzz per guardar el preu, l'IVA i el total. Reescriu aquests noms de manera significativa i explica per què l'elecció de noms és una eina contra els errors (el codi s'autodocumenta).

Resoldre
Practica★★☆Sense començar
Dues persones d'un equip editen alhora el mateix fitxer del projecte i, en unir els canvis, apareix un conflicte. Explica què és un conflicte de fusió, com es resol…

Dues persones d'un equip editen alhora el mateix fitxer del projecte i, en unir els canvis, apareix un conflicte. Explica què és un conflicte de fusió, com es resol (revisar ambdues versions i decidir) i quins dos hàbits de treball en equip el prevenen (repartir la feina per mòduls, integrar els canvis sovint).

Resoldre
Practica★★★Sense començar
El sistema de supervisió d'un hivernacle s'ha programat en un únic fitxer dins d'una sola funció de 400 línies. El codi llegeix de manera seqüencial tres sensors…

El sistema de supervisió d'un hivernacle s'ha programat en un únic fitxer dins d'una sola funció de 400 línies. El codi llegeix de manera seqüencial tres sensors analògics d'humitat de sòl, calcula la mitjana, avalua llindars, acciona una electrovàlvula mitjançant un pin digital, guarda el registre històric en un fitxer de text i envia un correu d'alerta si la humitat cau per sota del 30 %.

  1. Justifica detalladament tres problemes tècnics greus que genera aquesta arquitectura quan es necessita depurar una fallada intermitent o realitzar proves unitàries automatitzades.

  2. Dissenya una refactorització modular del programa: descompon la funció en almenys quatre funcions independents. Per a cadascuna defineix el seu nom, paràmetres d'entrada amb tipus, valor retornat i la seva responsabilitat única.

  3. Explica com permetria el teu disseny provar l'algorisme de decisió de reg mitjançant simulació de dades, sense tenir els sensors físics connectats a la placa.

Resoldre
Practica★★★Sense començar
Un grup de tres estudiants desenvoluparà durant deu setmanes una aplicació de control d'assistència per al centre educatiu. Per evitar retards i lliuraments fallits…

Un grup de tres estudiants desenvoluparà durant deu setmanes una aplicació de control d'assistència per al centre educatiu. Per evitar retards i lliuraments fallits d'última hora, has d'estructurar la metodologia de treball de l'equip:

  1. Dissenya un cronograma organitzat en quatre fites o lliurables verificables, explicant quins criteris objectius s'han de complir abans d'autoritzar el pas a la fita següent.

  2. Defineix un protocol formal de revisió per parells (code review): estableix qui revisa el codi de qui, quina llista de comprovació de qualitat mínima s'ha de superar abans d'acceptar qualsevol canvi i com es gestionen els desacords.

  3. Estableix i justifica una política de «congelació de codi» (code freeze): en quina setmana s'ha d'activar, quin tipus de modificacions queden terminantment prohibides a partir d'aquell moment i quines tasques exclusives ha d'assumir l'equip fins al lliurament final.

Resoldre

Resum

Veure tots els exercicis d'aquest apartat