POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

SOLID en la práctica con Python y UML 2025

SOLID en la práctica con Python y UML 2025

Publicado el 29/08/2025

Introducción

SOLID no es teoría vacía, es la póliza que evita que odies tu propio código. En este artículo reescribimos y actualizamos los principios SOLID para 2025 con ejemplos en Python y esquemas UML sencillos. Verás ejemplos malos y buenos para SRP, OCP, LSP, ISP y DIP. También explicamos cómo estos principios encajan en proyectos reales de software a medida, aplicaciones a medida e iniciativas avanzadas de inteligencia artificial, ciberseguridad y servicios cloud aws y azure que desarrolla Q2BSTUDIO.

Sobre Q2BSTUDIO

Q2BSTUDIO es una empresa de desarrollo de software especializada en software a medida y aplicaciones a medida. Somos especialistas en inteligencia artificial, ia para empresas, agentes IA, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y soluciones como power bi. Aplicamos buenas prácticas de diseño como SOLID para reducir bugs, mejorar mantenimiento y acelerar entregas en proyectos de integración de IA, analítica y ciberseguridad.

Principio SRP Single Responsibility Principle

Idea clave SRP: cada módulo o clase debe tener una sola responsabilidad. Evita clases multifunción que mezclan persistencia, lógica de negocio y notificaciones.

Ejemplo malo SRP en Python

class UserService: def __init__(self, db, mailer): self.db = db self.mailer = mailer def create_user(self, user): self.db.insert(user) self.mailer.send_welcome_email(user) def export_users_csv(self, path): users = self.db.get_all() with open(path, 'w') as f: for u in users: f.write(f'{u.id},{u.email}\\n')

Problema: UserService hace persistencia, envío de correo y exportación. Cambiar cualquiera de estas responsabilidades obliga a modificar la misma clase.

Ejemplo bueno SRP en Python

class UserRepository: def __init__(self, db): self.db = db def add(self, user): self.db.insert(user) def get_all(self): return self.db.get_all() class Mailer: def send_welcome_email(self, user): pass class UserExporter: def export_csv(self, users, path): with open(path, 'w') as f: for u in users: f.write(str(u.id) + ',' + u.email + '\\n') class UserService: def __init__(self, repo, mailer): self.repo = repo self.mailer = mailer def create_user(self, user): self.repo.add(user) self.mailer.send_welcome_email(user)

UML SRP simple

[UserService] --> [UserRepository] [UserService] --> [Mailer] [UserExporter] -- separate responsibility

Principio OCP Open Closed Principle

Idea clave OCP: las entidades deben estar abiertas a extensión pero cerradas a modificación. Añade comportamientos sin tocar código probado.

Ejemplo malo OCP en Python

def calculate_discount(order, customer_type): if customer_type == 'regular': return order.total * 0.05 elif customer_type == 'vip': return order.total * 0.15

Problema: cada nuevo tipo de cliente requiere modificar la función.

Ejemplo bueno OCP en Python mediante polimorfismo

class DiscountPolicy: def apply(self, order): raise NotImplementedError class RegularDiscount(DiscountPolicy): def apply(self, order): return order.total * 0.05 class VIPDiscount(DiscountPolicy): def apply(self, order): return order.total * 0.15 def calculate_discount(order, policy: DiscountPolicy): return policy.apply(order)

UML OCP

[DiscountPolicy] <|-- [RegularDiscount] <|-- [VIPDiscount] [Order] --> [DiscountPolicy]

Principio LSP Liskov Substitution Principle

Idea clave LSP: las subclases deben ser sustituibles por sus superclases sin alterar el comportamiento esperado.

Ejemplo malo LSP en Python

class Rectangle: def __init__(self, w, h): self.w = w self.h = h def set_width(self, w): self.w = w def set_height(self, h): self.h = h def area(self): return self.w * self.h class Square(Rectangle): def set_width(self, w): self.w = w self.h = w def set_height(self, h): self.h = h self.w = h

Problema: Square rompe expectativas de Rectangle cuando código cliente cambia width sin prever que height también cambiará.

Ejemplo bueno LSP en Python

class Shape: def area(self): raise NotImplementedError class Rectangle(Shape): def __init__(self, w, h): self.w = w self.h = h def area(self): return self.w * self.h class Square(Shape): def __init__(self, side): self.side = side def area(self): return self.side * self.side

UML LSP

[Shape] <|-- [Rectangle] <|-- [Square]

Principio ISP Interface Segregation Principle

Idea clave ISP: prefiera muchas interfaces específicas a una interfaz general que obliga a implementar métodos innecesarios.

Ejemplo malo ISP en Python

class Worker: def work(self): pass def eat(self): pass class Robot(Worker): def work(self): pass def eat(self): raise Exception('no come')

Problema: Robot no puede cumplir eat pero está obligado por la interfaz Worker.

Ejemplo bueno ISP en Python

class Workable: def work(self): raise NotImplementedError class Eatable: def eat(self): raise NotImplementedError class Human(Workable, Eatable): def work(self): pass def eat(self): pass class Robot(Workable): def work(self): pass

UML ISP

[Workable] <|-- [Human] [Eatable] <|-- [Human] [Workable] <|-- [Robot]

Principio DIP Dependency Inversion Principle

Idea clave DIP: dependa de abstracciones, no de implementaciones. Facilita testing, substitución y despliegues en servicios cloud aws y azure cuando integras adaptadores externos.

Ejemplo malo DIP en Python

class MySQLDatabase: def connect(self): pass class UserService: def __init__(self): self.db = MySQLDatabase() def save(self, user): self.db.connect() self.db.insert(user)

Problema: UserService está acoplado a MySQLDatabase.

Ejemplo bueno DIP en Python

class Database: def connect(self): raise NotImplementedError class MySQLDatabase(Database): def connect(self): pass class UserService: def __init__(self, db: Database): self.db = db def save(self, user): self.db.connect() self.db.insert(user)

UML DIP

[UserService] --> [Database] [MySQLDatabase] --|> [Database]

Patrones prácticos y aplicabilidad en proyectos reales

Integrar SOLID con prácticas DevOps, arquitecturas cloud y soluciones de inteligencia artificial mejora la escalabilidad y seguridad. En Q2BSTUDIO aplicamos SOLID en proyectos de software a medida, implementamos microservicios en servicios cloud aws y azure, y diseñamos agentes IA y pipelines de datos compatibles con power bi y servicios inteligencia de negocio. Esto reduce deuda técnica y facilita auditorías de ciberseguridad.

Consejos para equipos

1. Revisiones de código enfocadas en responsabilidades y acoplamiento. 2. Tests que detecten violaciones a LSP y OCP. 3. Documentación UML mínima para comunicar límites de responsabilidad. 4. Usar inyección de dependencias para facilitar deploys en servicios cloud aws y azure y pruebas con mocks en proyectos de inteligencia artificial.

Beneficios para clientes de Q2BSTUDIO

Al aplicar SOLID en soluciones de software a medida, Q2BSTUDIO entrega productos más robustos y mantenibles, reduce tiempo de resolución de incidencias en ciberseguridad, acelera adopción de ia para empresas y mejora la integración con herramientas de inteligencia de negocio y power bi. Nuestras soluciones de agentes IA y servicios de consultoría en inteligencia artificial garantizan modelos modulares y fáciles de evolucionar.

Resumen rápido

SRP separar responsabilidades. OCP extender sin modificar. LSP garantizar sustituibilidad. ISP interfaces específicas. DIP depender de abstracciones. Aplicando estos principios en Python y representándolos con UML ligero se reduce la complejidad en proyectos de software a medida, aplicaciones a medida e iniciativas de inteligencia artificial y ciberseguridad.

Contacta con Q2BSTUDIO

Si buscas un partner para desarrollar software a medida, aplicaciones a medida, soluciones de inteligencia artificial, agentes IA, servicios cloud aws y azure, ciberseguridad o proyectos de servicios inteligencia de negocio con power bi, en Q2BSTUDIO te ayudamos a aplicar SOLID desde la arquitectura hasta los tests.

Palabras clave

aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio