Aumentare la produttività nello sviluppo di microservizi con gli strumenti di intelligenza artificiale

Aumentare produttività sviluppo microservizi con intelligenza artificiale

Costruire API e i loro componenti correlati è spesso un compito tedioso, soprattutto quando si tratta di modelli di dati complessi e architetture come i microservizi. La codifica ripetitiva, la configurazione e l’onere di creare test unitari possono diventare rapidamente una perdita di tempo. Ecco come gli strumenti di intelligenza artificiale, come ChatGPT, possono fare la differenza.

Sfruttare gli Strumenti di Intelligenza Artificiale (Chat GPT) nello Sviluppo di API

Per comprendere le capacità di ChatGPT, approfondiamo un esempio pratico. Abbiamo il compito di sviluppare un’API REST per gestire le informazioni personali identificabili (PII) degli utenti. Il processo comprende:

  1. Creazione di oggetti del database (Stored procedure)
  2. Repository (Interfaccia per l’interazione con il database e oggetto di accesso ai dati)
  3. Service (Livello di logica di business)
  4. REST Controller (Esposizione dei punti di ingresso)

Oggetti del Database

Per creare una stored procedure, fornisci prima la struttura della tabella a ChatGPT. Successivamente, fornisce un esempio di stored procedure. Ciò consentirà a ChatGPT di ancorarsi al modello di stored procedure e costruire una nuova procedura per la tabella specificata. Di seguito è riportata la tabella che abbiamo fornito:

Ecco la stored procedure che è stata generata:

Ecco il link alla conversazione.

Repository (Interfaccia per l’interazione con il database e oggetto di accesso ai dati)

Nel nostro impegno per costruire il livello di repository, abbiamo utilizzato un thread dedicato di ChatGPT. Gli abbiamo fornito la stored procedure e la definizione della tabella precedentemente menzionati. Sfruttando le capacità di ChatGPT, abbiamo generato con successo:

  1. Un’entità JPA.
  2. Una classe Repository completa che comprende sia l’interfaccia che la sua implementazione.

Dopo la generazione, abbiamo chiesto a ChatGPT di creare casi di test unitari. I risultati sono stati impressionanti. Sono state necessarie alcune piccole modifiche, principalmente legate ai namespace e ad alcuni altri dettagli minori.

Di seguito sono riportate le classi e il codice generati:

Interfaccia e Implementazione del Repository

Test Unitari

Durante la nostra esecuzione iniziale, abbiamo riscontrato delle sfide con il codice generato per l’implementazione del repository. I dati memorizzati nel nostro database erano crittografati, quindi era necessario decifrare i valori persistiti. Abbiamo perfezionato il codice del livello di repository per affrontare questo problema, integrando meccanismi di decrittazione.

Dopo aver implementato le modifiche, abbiamo fornito a ChatGPT il codice del repository aggiornato, cercando un caso di test unitario corrispondente. Sorprendentemente, ChatGPT ci ha fornito un caso di test unitario perfettamente funzionante.

Per coloro interessati al dialogo dettagliato, ecco il link al nostro thread di conversazione con ChatGPT.

Costruzione del Livello di Servizio di Business

Per approfondire la nostra esplorazione, abbiamo esteso i nostri requisiti a un esempio di servizio ChatGPT esistente, specificando le dipendenze come l’entità JPA e l’interfaccia del repository.

Lo strumento di intelligenza artificiale ha generato rapidamente le classi. L’interfaccia del servizio ha delineato un chiaro contratto per il recupero dei dati PII dell’utente in base all’utente e agli ID del prestito. La sua implementazione, UserPIIDataServiceImpl, ha utilizzato il repository JPA per recuperare i dati necessari e, se nulli, restituiva una lista vuota – un tocco premuroso per evitare potenziali eccezioni di puntatore nullo.

Il test unitario UserPIIDataServiceImplTest è stato completo. Utilizzando Mockito per gli oggetti mock, il test ha verificato la funzionalità del servizio organizzando i dati mock, chiamando il servizio e verificando i risultati attesi.

Di seguito sono riportate le classi e il codice generati:

Interfaccia e Implementazione del Servizio

Test Unitari

Ecco il thread di chat per la costruzione del livello di servizio.

Ultimo Passo: Generazione del REST Controller

Dopo aver configurato i nostri livelli fondamentali, era il momento di costruire il nostro REST Controller. A tal scopo, abbiamo utilizzato un esempio di REST Controller esistente come modello di base. Abbiamo fornito a ChatGPT questo esempio insieme all’interfaccia di servizio e all’oggetto di entità necessario.

In risposta, ChatGPT ha generato un RestController personalizzato per le nostre esigenze. Di seguito sono riportate le classi e il codice generati:

Una caratteristica distintiva del codice generato automaticamente è l’inclusione di annotazioni, in particolare ApiResponse e ApiOperation. Senza l’intervento di ChatGPT, queste annotazioni essenziali potrebbero essere state trascurate, il che può influire sulla chiarezza e sulla qualità della documentazione dell’API.

Dopo la generazione del REST Controller, abbiamo cercato l’assistenza di ChatGPT nella produzione dei casi di test unitari. Inizialmente, i test generati erano progettati come se stessero chiamando l’API effettiva. Tuttavia, la nostra intenzione era di testare strettamente il codice del controller. Dopo aver fornito le istruzioni necessarie per focalizzare l’attenzione, ChatGPT ha fornito in modo efficace il codice dei test unitari personalizzati. Ecco un’istantanea del test unitario generato:

Infine, per assicurarci che tutto funzionasse come previsto, abbiamo effettuato una verifica del punto di accesso dell’API utilizzando Postman. Con grande soddisfazione, l’API si è comportata esattamente come previsto, dimostrando l’applicabilità pratica e la precisione del codice auto-generato. Ecco il thread della chat.

L’esempio precedente potrebbe sembrare semplice, ma abbiamo anche applicato questo approccio per costruire i punti di accesso dell’API per l’inserimento dei dati, osservando un pattern coerente. Il vero vantaggio si evidenzia quando si lavora con tabelle estese, ad esempio con 30 colonne. Definire manualmente i parametri delle stored procedure e costruire entità con una moltitudine di attributi, ognuno dei quali richiede una mappatura accurata delle colonne, può essere un processo noioso e incline agli errori. Tuttavia, sfruttare strumenti come ChatGPT o altre utility di intelligenza artificiale elimina queste attività ripetitive. Di conseguenza, gli sviluppatori possono produrre codice più efficiente e ben documentato con meno sforzo.

Conclusioni

Il campo tecnologico sta evolvendo rapidamente. Con l’avvento di strumenti di intelligenza artificiale come ChatGPT, gli sviluppatori dispongono ora di potenti alleati nel loro lavoro di codifica. Automatizzando le attività più noiose e ripetitive nello sviluppo delle API, questi strumenti non solo semplificano il processo, ma migliorano drasticamente la qualità e l’accuratezza del codice. Le esperienze condivise in questo articolo sono una testimonianza del fatto che il potenziale dell’intelligenza artificiale per rivoluzionare lo sviluppo del software non è una mera speculazione, ma una realtà che stiamo iniziando ad abbracciare. Mentre andiamo avanti, tali collaborazioni tra esseri umani e macchine ridefiniranno senza dubbio il panorama dell’ingegneria del software, aprendo porte a nuove possibilità e livelli di efficienza precedentemente ritenuti irraggiungibili.