Unidad 12 / 12

Límites: seguridad, privacidad, licencia y ética

Ganancias:

  • Capacidad para reconocer y verificar que la IA puede producir API falsas, código inseguro y contenido protegido por derechos de autor.
  • Capacidad para gestionar el uso de la IA dentro de los límites de la confidencialidad del código fuente, los datos personales y la política corporativa.
  • Comprender que la responsabilidad final del cumplimiento de la licencia, la seguridad y la ética sigue siendo del ingeniero.

Examen del módulo

1. Como ingeniero informático, cuando trabaja con una herramienta de generación de código de IA, ¿la responsabilidad final de cuál de las siguientes debería ser siempre del ser humano?

  • A) Aprobación final de corrección, seguridad y revisión y prueba del código puesto en producción ✔
  • B) Crear el primer esqueleto de código para una función
  • C) Producir una lista de sugerencias para nombres de variables.
  • D) Preparar un borrador de texto para comentarios de código.

Descripción: IA; Puede acelerar tareas como el esqueleto del código, el borrador de prueba y la documentación. Sin embargo, es responsabilidad del ingeniero revisar, probar y aprobar el código generado para garantizar que sea correcto, seguro y cumpla con los requisitos, y ponerlo en producción; esto no se puede delegar a AI sin una verificación independiente.

2. La IA ha creado una función para usted y parece estar funcionando en el camino feliz. ¿Cuál es el mejor paso antes de ponerlo en producción?

  • A) Dado que la función parece funcionar, póngala directamente en producción.
  • B) Verificar el comportamiento escribiendo y ejecutando pruebas unitarias pequeñas que incluyan casos extremos ✔
  • C) Solo mirando el número de líneas de la función.
  • D) Hacer que el nombre de la función sea más descriptivo.

Explicación: Aparentar trabajar no significa tener razón. Escribir y ejecutar pruebas unitarias pequeñas que cubran casos extremos como entrada vacía, cero, valor negativo, muy grande y falta de coincidencia verifican el comportamiento real de la función sin moverla al entorno real.

3. AI sugirió un método llamado 'array.sortStable()' que no existe en su idioma y lo explicó de manera clara. ¿Cuál es la primera acción correcta a tomar?

  • A) Usar el método directamente porque la IA parece segura
  • B) Defina el método usted mismo y use su nombre exactamente
  • C) Verificar la existencia del método a partir de la documentación oficial del idioma/biblioteca ✔
  • D) Cierre la advertencia del compilador y continúe

Explicación: Es posible que los modelos de lenguaje inventen nombres de bibliotecas, paquetes o métodos que en realidad no existen (alucinan). Cada API propuesta debe verificarse palabra por palabra con la documentación oficial y actual del idioma o biblioteca; Si no está incluido en el documento, no se debe utilizar.

4. Quiere pegar el código fuente confidencial de su empresa y una clave API integrada en una herramienta pública de inteligencia artificial y pedir ayuda. ¿Cuál es el enfoque más correcto?

  • A) Pegar el código tal cual con la clave API para mayor velocidad
  • B) Basta con borrar el nombre de la empresa y compartir todo lo demás.
  • C) Compartir el código y luego pedirle a la IA que lo elimine
  • D) Quitar secretos y lógicas ocultas y reducir el problema a un ejemplo representativo o utilizar una herramienta institucional ✔

Descripción: Código fuente secreto y credenciales (clave API, contraseña, cadena de conexión); Es arriesgado en términos de secreto empresarial y seguridad. Es necesario eliminar los secretos y la lógica empresarial oculta y reducir el problema a un ejemplo anónimo/representativo o utilizar una herramienta empresarial/que no comparta datos.

5. AI dijo que la complejidad de una función de búsqueda que escribió era O(n); pero hay dos bucles anidados en el código. ¿Cuál es el comportamiento de ingeniería correcto?

  • A) Analice el código manualmente, extraiga usted mismo la complejidad y mídala si es necesario ✔
  • B) Aceptar O(n) y continuar porque AI dijo
  • C) Asumir que el número de ciclos no tiene nada que ver con el rendimiento.
  • D) Simplemente cambie el nombre de la función.

Explicación: La complejidad del tiempo (Big-O) muestra cómo aumenta el número de operaciones a medida que crece la entrada. Dos bucles anidados suelen significar O(n^2). La afirmación de complejidad de la IA debe verificarse analizando manualmente el código y midiendo con entradas cada vez mayores si es necesario; Confiar en el reclamo produce una suposición falsa de desempeño.

6. Código generado por IA que inserta directamente la entrada del usuario en una consulta SQL mediante la concatenación de texto. ¿Cuál es el principal problema y la solución correcta aquí?

  • A) No hay problema; la combinación de texto es el método más rápido
  • B) Existe riesgo de inyección SQL; Se debe utilizar una consulta parametrizada (declaración preparada) que separe la entrada ✔
  • C) Con convertir la consulta a mayúsculas es suficiente
  • D) Escribir la consulta más corta resolverá el problema.

Descripción: Agregar la entrada del usuario directamente al texto de la consulta crea una vulnerabilidad de inyección SQL; El atacante puede modificar la consulta con la entrada. La solución correcta es utilizar una consulta parametrizada (declaración preparada) que separe la entrada del texto de la consulta. Este es uno de los errores de seguridad que más comúnmente se pasan por alto en el código de IA.

7. Tiene tiempo limitado para revisar un fragmento de código producido por IA. ¿Qué temas es mejor priorizar?

  • A) Sólo dé formato a detalles como sangría y espaciado.
  • B) Sólo la longitud de los nombres de las variables.
  • C) Corrección lógica, vulnerabilidades y comportamiento de casos extremos ✔
  • D) Sólo el número total de líneas del archivo.

Descripción: Mayor riesgo en la revisión de código; Se trata de cuestiones que causan graves daños, como errores lógicos, vulnerabilidades de seguridad y fugas de información confidencial. Los problemas de formato y estilo se solucionan con herramientas automáticas; La atención humana principal debe dedicarse a la precisión, la seguridad y el comportamiento de los casos extremos.

8. Quieres que la IA resuelva un error. ¿Qué información ayudaría mejor a la IA a encontrar la causa raíz?

  • A) Solo digo "el código no funciona, arréglalo"
  • B) Solo da el nombre del archivo.
  • C) Simplemente diciendo el resultado esperado, sin el texto de error.
  • D) Proporcione el mensaje de error completo, el seguimiento de la pila, el código relevante y un ejemplo de reproducción mínimo ✔

Explicación: Para una depuración eficaz, es necesario proporcionar a la IA el mensaje de error completo, el seguimiento de la pila, el fragmento de código relevante y la muestra reproducible más pequeña que produce el error. La vaga afirmación "no funciona" obliga a la IA a adivinar y hacer recomendaciones generales.

9. Todas las pruebas unitarias producidas por AI pasan en la primera ejecución. ¿Qué riesgo no se debe ignorar en esta situación?

  • A) Las pruebas pueden confirmar el estado actual del código pero no el comportamiento real/esperado ✔
  • B) El código está absolutamente libre de errores porque todas las pruebas pasaron
  • C) La calidad está garantizada si el número de pruebas es grande.
  • D) Pasar la prueba demuestra que la cobertura está completa.

Explicación: Las pruebas pueden estar validando el comportamiento actual (quizás con errores) del código, no su comportamiento previsto; o puede que no contenga ninguna afirmación significativa y siempre se pasa. Para ver que las pruebas están verificando la expectativa real, es necesario descifrar conscientemente el código y confirmar que la prueba se vuelve roja.

10. La IA le ha producido un bloque de código listo para usar para un problema. Sospechas que el código puede haber sido copiado palabra por palabra de un proyecto de código abierto. ¿Cuál es el enfoque correcto?

  • A) Usar la licencia sin pensar porque el código funciona
  • B) Comprobar la fuente/licencia del código, reescribirlo si es necesario y cumplir con la política corporativa ✔
  • C) Simplemente cambie los nombres de las variables y considere el problema resuelto.
  • D) Suponiendo que la concesión de licencias sólo concierne a las grandes empresas

Descripción: La IA puede reproducir palabra por palabra el código con licencia o con derechos de autor en los datos de entrenamiento. La violación de la licencia en un producto comercial crea graves riesgos legales. Es necesario verificar la fuente y la licencia del código, reescribirlo con sus propias palabras si es necesario y cumplir con la política de licencias de la institución.

11. AI sugirió que cambiara inmediatamente a la arquitectura de microservicios para su proyecto. ¿Cuál es el enfoque de ingeniería más apropiado al evaluar esta propuesta?

  • A) Divida inmediatamente todo el sistema en microservicios porque la IA sugiere
  • B) Asumir que el microservicio es siempre la mejor opción
  • C) Evaluar la propuesta según la necesidad real, carga, estructura del equipo y equilibrio más-menos ✔
  • D) Tomar la decisión basándose únicamente en la popularidad de la arquitectura.

Explicación: Las decisiones arquitectónicas dependen del contexto; Los microservicios agregan valor en necesidades como la escala y la separación de equipos, pero conllevan costos como complejidad operativa, depuración distribuida y costos. Evaluar la propuesta de acuerdo con la necesidad real, la carga, la estructura del equipo y el equilibrio de pros y contras; Los consejos generales no deben seguirse a ciegas.

12. AI produjo una documentación README y API optimizada para su código; pero algunos puntos finales y parámetros no coinciden en el código. ¿Cuál es el comportamiento correcto?

  • A) Publicar el documento tal cual porque el texto es fluido
  • B) Simplemente arregla el título y deja el resto como está.
  • C) Agregar el documento al almacén sin leerlo
  • D) Compare cada punto final y parámetro con el código real y corrija los que no coincidan ✔

Descripción: La documentación debe ser un reflejo preciso del código real; Un documento incorrecto empuja a los desarrolladores que lo leen a utilizarlo incorrectamente. Cada punto final, parámetro y valor de retorno debe verificarse con el código real y se debe corregir cualquier discrepancia.

13. ¿Qué enfoque de entrada es el adecuado para obtener resultados de la más alta calidad al solicitar código de IA?

  • A) Proporcionar claramente idioma/versión, contrato de entrada-salida, restricciones y situaciones de error ✔
  • B) Solo digo 'escríbeme un código de trabajo'
  • C) Escriba la solicitud más corta sin dar ningún contexto.
  • D) Simplemente especificando cuántas líneas de código habrá

Descripción: Aviso potente; Incluye el idioma y la versión utilizados, el contrato de entrada-salida, restricciones de rendimiento y estilo, condiciones de error y la instrucción "permanecer sólo dentro del alcance solicitado". Una solicitud sin contexto de "escríbeme una función" es genérica y, a menudo, produce código inapropiado.

14. AI generó una configuración para su canal de CI/CD (integración/implementación continua) e incorporó la contraseña de la base de datos en texto sin formato. ¿Cuál es la solución correcta?

  • A) Dejar la contraseña en texto plano porque funciona
  • B) Mover secretos a través de una variable de entorno o una herramienta de administración de secretos, sin colocar texto sin formato en el repositorio ✔
  • C) Mover la contraseña solo a la línea de comentarios
  • D) Cambiar el nombre del archivo resuelve el problema.

Explicación: Escribir secretos como contraseñas y claves en texto sin formato en el archivo de configuración plantea el riesgo de filtrar el control de versiones y el acceso no autorizado. Misterios; Debe mantenerse fuera mediante variables de entorno o un administrador de secretos especial, y nunca debe ingresar al repositorio en texto plano.