En aquest tema, explorarem els principis fonamentals que guien el disseny de sistemes tecnològics. Aquests principis són essencials per garantir que els sistemes siguin escalables, segurs, eficients i capaços de satisfer les necessitats del negoci.

  1. Principis de Disseny

1.1. Simplicitat

  • Definició: Mantenir el disseny tan simple com sigui possible.
  • Beneficis:
    • Facilita la comprensió i el manteniment del sistema.
    • Redueix la probabilitat d'errors.
    • Millora la capacitat de resposta davant de canvis.
  • Exemple: Utilitzar estructures de dades senzilles i evitar la complexitat innecessària en el codi.

1.2. Modularitat

  • Definició: Dividir el sistema en components o mòduls independents.
  • Beneficis:
    • Facilita la gestió i el manteniment del sistema.
    • Permet la reutilització de components.
    • Millora l'escalabilitat.
  • Exemple: Separar la lògica de negoci, la capa de presentació i la capa de dades en diferents mòduls.

1.3. Escalabilitat

  • Definició: Dissenyar el sistema perquè pugui manejar un augment de càrrega sense degradar el rendiment.
  • Beneficis:
    • Permet el creixement del sistema a mesura que augmenten les necessitats del negoci.
    • Millora la capacitat de resposta del sistema.
  • Exemple: Utilitzar tècniques de balanceig de càrrega i emmagatzematge en memòria cau.

1.4. Robustesa

  • Definició: Assegurar que el sistema pugui manejar errors i situacions inesperades sense fallar.
  • Beneficis:
    • Millora la fiabilitat del sistema.
    • Redueix el temps d'inactivitat.
  • Exemple: Implementar mecanismes de recuperació d'errors i proves exhaustives.

1.5. Seguretat

  • Definició: Protegir el sistema contra amenaces i accessos no autoritzats.
  • Beneficis:
    • Protegeix la integritat i la confidencialitat de les dades.
    • Assegura el compliment de les normatives.
  • Exemple: Utilitzar autenticació i autorització adequades, xifrat de dades i auditories de seguretat.

1.6. Eficiència

  • Definició: Optimitzar l'ús dels recursos del sistema per maximitzar el rendiment.
  • Beneficis:
    • Redueix els costos operatius.
    • Millora l'experiència de l'usuari.
  • Exemple: Optimitzar les consultes a la base de dades i utilitzar algoritmes eficients.

  1. Exemples Pràctics

Exemple 1: Disseny Modular

# Mòdul de lògica de negoci
def calcular_preu(producte, quantitat):
    return producte.preu * quantitat

# Mòdul de presentació
def mostrar_preu(preu):
    print(f"El preu total és: {preu}€")

# Mòdul de dades
class Producte:
    def __init__(self, nom, preu):
        self.nom = nom
        self.preu = preu

# Ús dels mòduls
producte = Producte("Llibre", 20)
preu_total = calcular_preu(producte, 3)
mostrar_preu(preu_total)

Exemple 2: Escalabilitat amb Balanceig de Càrrega

# Configuració d'un balancejador de càrrega simple
servidors = ["servidor1", "servidor2", "servidor3"]

def balancejar_càrrega(petició):
    servidor = seleccionar_servidor()
    enviar_petició(servidor, petició)

def seleccionar_servidor():
    # Selecció simple de servidor (round-robin)
    servidor = servidors.pop(0)
    servidors.append(servidor)
    return servidor

def enviar_petició(servidor, petició):
    print(f"Enviant petició a {servidor}")

# Ús del balancejador de càrrega
balancejar_càrrega("Petició 1")
balancejar_càrrega("Petició 2")
balancejar_càrrega("Petició 3")

  1. Exercicis Pràctics

Exercici 1: Disseny Modular

Descripció: Crea un sistema modular per gestionar una biblioteca. El sistema ha de tenir mòduls per afegir llibres, eliminar llibres i llistar llibres disponibles.

Solució:

# Mòdul de dades
class Llibre:
    def __init__(self, titol, autor):
        self.titol = titol
        self.autor = autor

# Mòdul de lògica de negoci
class Biblioteca:
    def __init__(self):
        self.llibres = []

    def afegir_llibre(self, llibre):
        self.llibres.append(llibre)

    def eliminar_llibre(self, titol):
        self.llibres = [llibre for llibre in self.llibres if llibre.titol != titol]

    def llistar_llibres(self):
        return self.llibres

# Mòdul de presentació
def mostrar_llibres(llibres):
    for llibre in llibres:
        print(f"Títol: {llibre.titol}, Autor: {llibre.autor}")

# Ús dels mòduls
biblioteca = Biblioteca()
biblioteca.afegir_llibre(Llibre("1984", "George Orwell"))
biblioteca.afegir_llibre(Llibre("Brave New World", "Aldous Huxley"))
mostrar_llibres(biblioteca.llistar_llibres())
biblioteca.eliminar_llibre("1984")
mostrar_llibres(biblioteca.llistar_llibres())

Exercici 2: Implementació de Seguretat

Descripció: Implementa un sistema d'autenticació simple que permeti als usuaris iniciar sessió amb un nom d'usuari i una contrasenya.

Solució:

# Mòdul de dades
usuaris = {
    "usuari1": "contrasenya1",
    "usuari2": "contrasenya2"
}

# Mòdul de lògica de negoci
def autenticar(nom_usuari, contrasenya):
    if nom_usuari in usuaris and usuaris[nom_usuari] == contrasenya:
        return True
    return False

# Mòdul de presentació
def iniciar_sessió():
    nom_usuari = input("Nom d'usuari: ")
    contrasenya = input("Contrasenya: ")
    if autenticar(nom_usuari, contrasenya):
        print("Inici de sessió correcte")
    else:
        print("Nom d'usuari o contrasenya incorrectes")

# Ús dels mòduls
iniciar_sessió()

  1. Conclusió

En aquesta secció, hem explorat els principis fonamentals del disseny de sistemes tecnològics, incloent simplicitat, modularitat, escalabilitat, robustesa, seguretat i eficiència. Aquests principis són essencials per crear sistemes que siguin fàcils de mantenir, segurs i capaços de satisfer les necessitats del negoci. Hem proporcionat exemples pràctics i exercicis per ajudar a comprendre i aplicar aquests principis en situacions reals. En el proper tema, aprofundirem en els components d'una arquitectura tecnològica.

© Copyright 2024. Tots els drets reservats