Un análisis del desarrollo de una herramienta CLI en Python
El objetivo de este ejercicio fue crear una aplicación de línea de comandos (CLI) en Python capaz de clasificar la descripción de un servicio en la nube. La herramienta debía identificar si el servicio correspondía a uno de los cuatro modelos principales: IaaS, PaaS, SaaS o FaaS, utilizando un sistema basado en reglas y palabras clave. El proceso de desarrollo fue guiado y acelerado mediante el uso de un asistente de Inteligencia Artificial.
El desarrollo comenzó con una simple solicitud a un asistente de IA. A partir de ahí, el código fue refinado iterativamente para construir una solución robusta y completa.
Se utilizó el siguiente prompt para generar el código base:
"Genera un código en Python que reciba un texto y clasifique si corresponde a IaaS, PaaS, SaaS o FaaS usando reglas básicas"
La IA no solo generó el código, sino que también estructuró el proyecto en varios archivos para separar responsabilidades, creando una solución mucho más profesional.
El corazón del proyecto es la clase CloudServiceClassifier
. Este módulo contiene toda la lógica para preprocesar texto, calcular puntajes basados en palabras clave y patrones (expresiones regulares), y finalmente, determinar la clasificación más probable con un porcentaje de confianza.
# Contenido de: cloud_classifier.py
import re
from typing import Dict
class CloudServiceClassifier:
"""
Clasificador de servicios en la nube basado en reglas.
Identifica si un texto corresponde a IaaS, PaaS, SaaS o FaaS.
"""
def __init__(self):
# Definir palabras clave extensas para cada tipo de servicio
self.keywords = {
'IaaS': ['infraestructura', 'servidor virtual', 'vm', 'storage', 'red', 'ec2', 'azure vm'],
'PaaS': ['plataforma', 'desarrollo', 'deployment', 'runtime', 'app engine', 'heroku'],
'SaaS': ['software', 'aplicación', 'app', 'crm', 'erp', 'office 365', 'suscripción'],
'FaaS': ['función', 'serverless', 'sin servidor', 'lambda', 'evento', 'trigger']
}
# Los patrones con expresiones regulares añaden más precisión
self.patterns = {
'IaaS': [r'servidor virtual', r'máquina virtual'],
'PaaS': [r'plataforma de desarrollo', r'despliegue automático'],
'SaaS': [r'software como servicio', r'aplicación web'],
'FaaS': [r'función como servicio', r'código sin servidor']
}
def preprocess_text(self, text: str) -> str:
text = text.lower()
text = re.sub(r'\\s+', ' ', text)
return text.strip()
def calculate_score(self, text: str, service_type: str) -> float:
score = 0.0
for keyword in self.keywords[service_type]:
if keyword in text:
score += 1.0
for pattern in self.patterns[service_type]:
matches = re.findall(pattern, text, re.IGNORECASE)
score += len(matches) * 2.0
return score
def classify(self, text: str) -> Dict[str, any]:
processed_text = self.preprocess_text(text)
scores = {st: self.calculate_score(processed_text, st) for st in self.keywords.keys()}
best_service = max(scores, key=scores.get)
max_score = scores[best_service]
total_score = sum(scores.values())
confidence = (max_score / total_score * 100) if total_score > 0 else 0
is_cloud_service = max_score > 0
return {
'classification': best_service if is_cloud_service else 'No clasificado',
'confidence': round(confidence, 2),
'scores': scores,
'is_cloud_service': is_cloud_service
}
Para validar el funcionamiento, se crearon dos scripts adicionales: test_classifier.py
para pruebas automatizadas y interactive_classifier.py
para pruebas manuales. Los resultados demuestran la efectividad del clasificador, mostrando la categoría, el nivel de confianza y un desglose de los puntajes.
Además, el script de pruebas genera un archivo classification_results.json
que resume los resultados de las pruebas básicas, facilitando la verificación y el análisis posterior.
Como estudiante de ITC, este ejercicio ha sido una revelación sobre el futuro del desarrollo de software. La Inteligencia Artificial actuó como un "copiloto", acelerando drásticamente el proceso. En lugar de invertir horas en la sintaxis básica y la estructura del proyecto, pude centrarme en la lógica de negocio: ¿qué palabras clave definen mejor a IaaS? ¿Cómo podemos calcular un "nivel de confianza" de manera efectiva?
La IA me proporcionó un andamiaje robusto, incluyendo preprocesamiento de texto y el uso de expresiones regulares, conceptos que habría tardado más en implementar desde cero. Mi rol se transformó del de un simple programador al de un arquitecto de sistemas. Mi trabajo consistió en guiar a la IA, validar sus resultados, identificar áreas de mejora y tomar decisiones de diseño estratégicas.
Esta experiencia me confirma que la habilidad más importante para un ingeniero de software moderno no es solo saber codificar, sino saber cómo formular las preguntas correctas y cómo integrar soluciones generadas por IA en un producto final coherente y de alta calidad. La IA no nos reemplaza, sino que eleva el nivel de abstracción en el que trabajamos, permitiéndonos resolver problemas más complejos de manera más eficiente.