Unità 12 / 12

Confini: sicurezza, privacy, licenza ed etica

Guadagni:

  • Capacità di riconoscere e verificare che l'intelligenza artificiale possa produrre API fasulle, codice non sicuro e contenuti protetti da copyright
  • Capacità di gestire l'uso dell'intelligenza artificiale entro i limiti della riservatezza del codice sorgente, dei dati personali e della politica aziendale
  • Comprendere che la responsabilità ultima della conformità, della sicurezza e dell'etica della licenza spetta all'ingegnere.

Esame del modulo

1. In qualità di ingegnere informatico, quando lavora con uno strumento di generazione di codice AI, la responsabilità ultima di quale dei seguenti dovrebbe rimanere sempre dell'essere umano?

  • A) Approvazione finale di correttezza, sicurezza, revisione e test del codice messo in produzione ✔
  • B) Creazione del primo scheletro di codice per una funzione
  • C) Produrre un elenco di suggerimenti per i nomi delle variabili
  • D) Preparazione di una bozza di testo per i commenti al codice

Descrizione: AI; Può accelerare attività come lo scheletro del codice, la bozza di test e la documentazione. Tuttavia, è responsabilità dell'ingegnere rivedere, testare e approvare il codice generato per garantire che sia corretto, sicuro e conforme ai requisiti e metterlo in produzione; questo non può essere delegato all’AI senza una verifica indipendente.

2. L'intelligenza artificiale ha prodotto una funzione per te e sembra funzionare lungo il percorso felice. Qual è il passo migliore prima di metterlo in produzione?

  • R) Visto che la funzione sembra funzionare, mettetela direttamente in produzione
  • B) Verificare il comportamento scrivendo ed eseguendo piccoli test unitari che includano casi limite ✔
  • C) Basta guardare il numero di righe della funzione
  • D) Rendere più descrittivo il nome della funzione

Spiegazione: Sembrare che funzioni non significa avere ragione. La scrittura e l'esecuzione di piccoli test unitari che coprono casi limite come input vuoto, zero, negativo, valore molto grande e mancata corrispondenza verificano il comportamento effettivo della funzione senza spostarla nell'ambiente live.

3. AI ha suggerito un metodo chiamato "array.sortStable()" che non esiste nella tua lingua e lo ha spiegato in modo chiaro. Qual è la prima azione corretta da intraprendere?

  • A) Usare il metodo direttamente perché l'IA sembra fiduciosa
  • B) Definisci tu stesso il metodo e usa il suo nome esattamente
  • C) Verificare l'esistenza del metodo dalla documentazione ufficiale della lingua/biblioteca ✔
  • D) Chiudere l'avviso del compilatore e continuare

Spiegazione: i modelli linguistici possono plausibilmente creare nomi di librerie, pacchetti o metodi che in realtà non esistono (allucinazioni). Ogni API proposta dovrebbe essere verificata alla lettera rispetto alla documentazione ufficiale e attuale della lingua o della libreria; Se non è incluso nel documento, non deve essere utilizzato.

4. Vuoi incollare il codice sorgente riservato della tua azienda e una chiave API incorporata in uno strumento AI pubblico e chiedere aiuto. Qual è l'approccio più corretto?

  • A) Incollare il codice così com'è con la chiave API per velocità
  • B) E' sufficiente cancellare solo il nome dell'azienda e condividere tutto il resto
  • C) Condividere il codice e quindi chiedere all'IA di eliminarlo
  • D) Rimuovere segreti e logiche nascoste e ridurre il problema ad un esempio rappresentativo o utilizzando uno strumento istituzionale ✔

Descrizione: Codice sorgente segreto e credenziali (chiave API, password, stringa di connessione); È rischioso in termini di segreto aziendale e sicurezza. È necessario eliminare i segreti e la logica aziendale nascosta e ridurre il problema a un esempio anonimo/rappresentativo o utilizzare uno strumento di condivisione aziendale/non di dati.

5. AI ha detto che la complessità di una funzione di ricerca da lui scritta era O(n); ma ci sono due cicli nidificati nel codice. Qual è il comportamento ingegneristico corretto?

  • A) Analizza manualmente il codice ed estrai tu stesso la complessità e misurala se necessario ✔
  • B) Accetta O(n) e continua perché ha detto AI
  • C) Supponendo che il numero di cicli non abbia nulla a che fare con le prestazioni
  • D) Basta cambiare il nome della funzione

Spiegazione: La complessità temporale (Big-O) mostra come il numero di operazioni aumenta man mano che l'input cresce. Due cicli nidificati solitamente significano O(n^2). L'affermazione di complessità dell'IA dovrebbe essere verificata analizzando manualmente il codice e misurando con input crescenti, se necessario; Basarsi sulla pretesa produce una falsa presunzione di prestazione.

6. Codice generato dall'intelligenza artificiale che inserisce direttamente l'input dell'utente in una query SQL concatenando il testo. Qual è il problema principale e la soluzione giusta qui?

  • R) Nessun problema; l'unione del testo è il metodo più veloce
  • B) Esiste il rischio di SQL injection; Dovrebbe essere utilizzata una query parametrizzata (istruzione preparata) che separa l'input ✔
  • C) È sufficiente convertire la query in maiuscolo
  • D) Scrivere la query più breve risolverà il problema

Descrizione: l'aggiunta dell'input dell'utente direttamente al testo della query crea una vulnerabilità SQL injection; L'attaccante può modificare la query con l'input. La soluzione corretta consiste nell'utilizzare una query con parametri (istruzione preparata) che separa l'input dal testo della query. Questo è uno degli errori di sicurezza più comunemente trascurati nel codice AI.

7. Hai un tempo limitato per rivedere un pezzo di codice prodotto dall'intelligenza artificiale. A quali questioni è meglio dare priorità?

  • A) Solo i dettagli del formato come rientro e spaziatura
  • B) Solo la lunghezza dei nomi delle variabili
  • C) Correttezza logica, vulnerabilità e comportamento nei casi limite ✔
  • D) Solo il numero totale di righe del file

Descrizione: rischio più elevato nella revisione del codice; Si tratta di problemi che causano gravi danni, come errori logici, vulnerabilità della sicurezza e fughe di informazioni riservate. I problemi di formato e stile vengono risolti con strumenti automatici; L’attenzione umana principale dovrebbe essere rivolta all’accuratezza, alla sicurezza e al comportamento nei casi limite.

8. Vuoi che l'intelligenza artificiale risolva un bug. Quale input aiuterebbe meglio l’IA a trovare la causa principale?

  • A) Dico solo "il codice non funziona, risolvilo"
  • B) Basta dare il nome del file
  • C) Dire semplicemente il risultato atteso, senza il testo dell'errore
  • D) Fornire il messaggio di errore completo, l'analisi dello stack, il codice pertinente e l'esempio di riproduzione minima ✔

Spiegazione: per un debug efficace, è necessario fornire all'intelligenza artificiale il messaggio di errore completo, l'analisi dello stack, lo snippet di codice pertinente e il campione riproducibile più piccolo che produce l'errore. La vaga affermazione "non funziona" costringe l'intelligenza artificiale a indovinare e formulare raccomandazioni generali.

9. Tutti i test unitari prodotti dall'IA superano la prima esecuzione. Quale rischio non dovrebbe essere ignorato in questa situazione?

  • A) I test possono confermare lo stato attuale del codice ma non il comportamento effettivo/previsto ✔
  • B) Il codice è assolutamente privo di errori perché tutti i test sono stati superati
  • C) La qualità è garantita se il numero di test è elevato
  • D) Il superamento del test dimostra che la copertura è completa

Spiegazione: i test potrebbero convalidare il comportamento corrente (forse difettoso) del codice, non il comportamento previsto; oppure potrebbe non contenere alcuna asserzione significativa e viene sempre superato. Per vedere che i test stanno verificando la reale aspettativa, è necessario decifrare consapevolmente il codice e confermare che il test diventa rosso.

10. L'intelligenza artificiale ti ha prodotto un blocco di codice già pronto per un problema. Sospetti che il codice possa essere stato copiato alla lettera da un progetto open source. Qual è l'approccio giusto?

  • A) Usare la licenza senza pensare perchè il codice funziona
  • B) Controllare la fonte/licenza del codice, riscriverlo se necessario e rispettare la politica aziendale ✔
  • C) Basta cambiare i nomi delle variabili e considerare il problema risolto
  • D) Partendo dal presupposto che la concessione di licenze riguardi solo le grandi aziende

Descrizione: l'intelligenza artificiale può riprodurre alla lettera il codice protetto da copyright/concesso in licenza nei dati di addestramento. La violazione della licenza in un prodotto commerciale crea seri rischi legali. È necessario verificare la fonte e la licenza del codice, riscriverlo con parole tue se necessario e rispettare la politica di licenza dell'istituzione.

11. L'intelligenza artificiale ti ha suggerito di passare immediatamente all'architettura dei microservizi per il tuo progetto. Qual è l'approccio ingegneristico più appropriato nel valutare questa proposta?

  • A) Dividere immediatamente l’intero sistema in microservizi come suggerisce l’AI
  • B) Supponendo che il microservizio sia sempre la scelta migliore
  • C) Valutare la proposta in base alle reali necessità, carico, struttura del team e saldo plus-minus ✔
  • D) Prendere la decisione basandosi esclusivamente sulla popolarità dell'architettura

Spiegazione: le decisioni architettoniche dipendono dal contesto; I microservizi aggiungono valore in termini di esigenze quali la scalabilità e la separazione dei team, ma comportano costi quali complessità operativa, debug distribuito e costi. Valutare la proposta in base alle reali necessità, al carico, alla struttura del team e al bilancio dei pro e dei contro; I consigli generali non dovrebbero essere seguiti ciecamente.

12. AI ha prodotto una documentazione README e API semplificata per il tuo codice; ma alcuni endpoint e parametri non corrispondono nel codice. Qual è il comportamento corretto?

  • A) Pubblicare il documento così com'è perché il testo è scorrevole
  • B) Correggi semplicemente il titolo e lascia il resto così com'è
  • C) Aggiungere il documento al magazzino senza leggerlo
  • D) Confronta ciascun endpoint e parametro con il codice effettivo e correggi quelli che non corrispondono ✔

Descrizione: la documentazione deve riflettere accuratamente il codice effettivo; Il documento sbagliato spinge gli sviluppatori che lo leggono ad utilizzarlo in modo errato. Ogni endpoint, parametro e valore restituito deve essere verificato rispetto al codice effettivo e eventuali discrepanze devono essere corrette.

13. Quale approccio di input è adatto per ottenere un output di massima qualità quando si richiede codice all'intelligenza artificiale?

  • A) Fornire chiaramente lingua/versione, contratto input-output, vincoli e situazioni di errore ✔
  • B) Basta dire "scrivimi del codice funzionante"
  • C) Scrivi la richiesta più breve senza fornire alcun contesto
  • D) Basta specificare quante righe di codice ci saranno

Descrizione: Prompt potente; Comprende la lingua e la versione utilizzata, il contratto input-output, i vincoli di prestazione e stile, le condizioni di errore e l'istruzione "rimanere solo nell'ambito richiesto". Una richiesta "scrivimi una funzione" senza contesto è generica e spesso produce codice inappropriato.

14. L'intelligenza artificiale ha generato una configurazione per la pipeline CI/CD (integrazione/distribuzione continua) e ha incorporato la password del database in testo semplice. Qual è la soluzione corretta?

  • A) Lasciare la password come testo normale perché funziona
  • B) Spostamento dei segreti tramite variabile di ambiente o strumento di gestione dei segreti, non inserimento di testo in chiaro nel repository ✔
  • C) Spostare la password solo nella riga dei commenti
  • D) Cambiare il nome del file risolve il problema

Spiegazione: La scrittura di segreti come password e chiavi in testo semplice nel file di configurazione comporta il rischio di perdita del controllo della versione e accesso non autorizzato. Segreti; Dovrebbe essere tenuto fuori dalle variabili di ambiente o da uno speciale gestore dei segreti e non dovrebbe mai entrare nel repository in testo semplice.