Eugenia Bahit

Software Architect

LinkedIn logo Amazon logo Google Play logo Email logo

Ingeniería de Software &
Arquitectura de bibliotecas centrales de alto nivel

El diseño de bibliotecas centrales de alto nivel es una de las partes más importantes del diseño y desarrollo de software, ya que un core deficiente da como resultado un programa poco confiable. Mi trabajo gira, principalmente, en torno a los aspectos de seguridad de las bibliotecas del core para arquitecturas MVC, así como para una amplia gama de bibliotecas de diferentes propósitos.

Portfolio: ejemplos de bibliotecas diseñadas

Aunque la lista de bibliotecas de software de alto nivel que he diseñado es más larga, las más frecuentes han sido las siguientes:

  • Bibliotecas Cliente/Servidor para APIs.
  • Bibliotecas de captura y manejo de errores.
  • Bibliotecas concurrentes: bibliotecas de gestión y programación de subprocesos.
  • Bibliotecas de acceso a datos: mapeadores relacionales de objetos (ORM) y capas de abstracción a bases de datos.
  • Bibliotecas de transformación de datos: bibliotecas de serialización y mapeo de datos.
  • Bibliotecas para la validación de datos.
  • Bibliotecas para el sistema de archivos.
  • Bibliotecas de internacionalización y localización.
  • Bibliotecas de registro (logging): bibliotecas de registro de eventos y errores.
  • Middlewares para el manejo de solicitudes y respuestas HTTP de pre y posprocesamiento.
  • Bibliotecas para arquitecturas MVC: Analizadores de URI/URLs, motores de plantillas (template engines), y clases de base para modelos, vistas, y controladores.
  • Bibliotecas de redes: Clientes HTTP y web sockets.
  • Bibliotecas para sistemas orientados a objetos: clases de base para objetos estándar, colectores y colecciones, compuestos y compositores, conectores lógicos, y patrones factory, adapter, y decorator.
  • Bibliotecas de seguridad: manejadores de sesiones y bibliotecas de autenticación.
  • Bibliotecas generales: manipulación de cadenas, bibliotecas matemáticas, y bibliotecas para el manejo de fechas/horas.

Reserve un servicio de ingeniería/arquitectura de software

Características principales de mis diseños de bibliotecas centrales

  • Todos mis diseños implementan el principio de simplicidad.
  • Diseño la arquitectura de la biblioteca para garantizar la confiabilidad y la mantenibilidad.
  • Baso cada proceso de toma de decisiones en el conocimiento científico.
  • Diseño un conjunto de test unitarios para cada método y función de la biblioteca.
  • Antes de comenzar un diseño, realizo una investigación exhaustiva y recopilo nuevos conocimientos para mantenerme actualizada con los últimos avances en el campo.
  • Nunca hago suposiciones sobre la información faltante, sino que la solicito para garantizar una perfecta alineación con los objetivos y los requisitos.

Arquitectura de bibliotecas centrales

Como arquitecta de bibliotecas centrales, realizo análisis de requisitos y diseño de alto nivel de la arquitectura general y establezco pautas estándares, incluyendo el diseño de pruebas para garantizar la calidad del software.

Ingeniería de bibliotecas centrales

Mi trabajo como ingeniera de software consiste en trazar y documentar un plan detallado para implementar la arquitectura diseñada, supervisar y depurar el código para mejorar la calidad final.

Desarrollo de bibliotecas centrales

El desarrollo de bibliotecas del core se centra en la escritura, mantenimiento y pruebas del código. Si bien el núcleo de mi trabajo radica en la arquitectura y la ingeniería, puedo escribir código garantizando las mejores prácticas de codificación.

Perfil profesional

La ingeniería de software ha sido mi carrera principal desde 1998. Si bien los primeros diez años se centraron en la programación y desarrollo web, desde entonces he evolucionado como arquitecta de software y me he adentrado en el mundo de la informática teórica.

El objetivo de mi trabajo es implementar una metodología hipotético-deductiva que utiliza la lógica formal para asegurar los componentes del software y prevenir vulnerabilidades.

Baso mis diseños en el principio de simplicidad, reduciendo el uso de dependencias para optimizar recursos, maximizar la portabilidad, facilitar la mantenibilidad y mitigar los riesgos de seguridad.

Por otra parte, todos mis proyectos implican el diseño de pruebas unitarias basadas en un modelo de valores tipificados mínimos y máximos permitidos. Este método reduce el tiempo de procesamiento de las pruebas unitarias, a la vez que garantiza la eliminación de componentes que no se ajustan a su definición formal.

Mi metodología de trabajo consiste en un modelo de desarrollo híbrido que integra algunos elementos del modelo en cascada dentro de un modelo iterativo incremental, incorporando técnicas de la programación extrema y el desarrollo ágil.

Credenciales

A lo largo de mi carrera, he participado en diversos proyectos de código abierto como miembro de OWASP, The Free Software Foundation, y la Linux Foundation.

Como ingeniera de software comprometida con la comunidad del software libre, he diseñado y desarrollado una amplia gama de herramientas para implementar, proteger y optimizar servidores Debian GNU/Linux, así como motores de software y bibliotecas para Python y PHP.

He trabajado tanto en el sector público como en privado, y he estudiado una Licenciatura en Ciencias Informáticas. También he participado en proyectos científicos, lo que me ha llevado a formar parte de la European Association for Theoretical Computer Science (EATCS) durante algunos años.