ENGLISH ESPANOL

Servicios de Outsourcing

Para realizar los servicios de Outsourcing, nuestra empresa cuenta con un conjunto de especialistas altamente calificados para cada una de las etapas del proceso de desarrollo de software, desde la concepción del sistema hasta su despliegue. Además brindamos otras aristas relacionadas como la modelación de los procesos del negocio y la gestión de calidad durante todo el proceso.

A continuación se presentan cada una de las actividades de Outsourcing en que nos especializamos.

  1. Modelación de procesos del negocio
  2. Captura de requisitos del sistema
  3. Diseño ingenieril del sistema
  4. Diseño de Bases de Datos
  5. Propuesta ingenieril de implementación del sistema
  6. Programación
  7. Despliegue del sistema
  8. Arquitectura del sistema
  9. Pruebas
  10. Gestión de la calidad

1. Modelación de procesos del negocio

Para desarrollar un sistema se parte de los procesos del negocio a automatizar. Si no están bien definidos los procesos o no se conocen a fondo, puede traer consecuencias negativas para el desarrollo del sistema y en general para el propio funcionamiento del negocio.

Por lo antes expuesto, un especialista en modelación de los procesos del negocio, como punto de partida para la ingeniería del sistema a construir, y aportando un valor agregado a los clientes al identificar posibles mejoras en sus procesos, es un recurso invaluable para brindar un servicio integral y de máxima calidad.

2. Captura de requisitos del sistema

La correcta definición de los requisitos de un sistema a construir son las bases para obtener los resultados esperados por los clientes al finalizar el desarrollo; pero no siempre los clientes son capaces de expresar lo que necesitan  y en algunos casos existen funcionalidades que aunque le sean muy necesarias, no las han identificado aún como posibles elementos a informatizar.

Un especialista en captura de requisitos o analista de sistemas debe presentar una formación integral para, a través de una conversación sin el uso de lenguaje técnico con el cliente, identificar las necesidades de informatización, ya sean presentadas directamente por el cliente o sugeridas por el propio especialista, pues al tener la visión del cliente debe guiarlo para brindarle un sistema que supere sus expectativas.

3. Diseño ingenieril del sistema

La programación orientada a objetos actualmente ha invadido todos los espacios y lenguajes en el mundo del desarrollo de sistemas. Una de sus grandes ventajas es la organización y estructuración de los sistemas para hacer más clara su codificación, su mantenimiento, y en general, alargar la vida útil del sistema a través de versiones y equipos de desarrollo.

El trabajo de los ingenieros de diseño de un sistema es comprender desde la filosofía de la programación orientada a objetos los procesos a informatizar, para poder crear una estructura de clases bien definida y aplicar los patrones de diseño adecuados que contribuyan a crear una aplicación robusta y escalable, en sincronía con el lenguaje de programación y las herramientas de desarrollo definidas.

4. Diseño de Bases de Datos

Son muy pocas las aplicaciones en la actualidad que no lleven persistencia de datos a través de algún gestor de bases de datos (GBD). Pero una mala definición en la estructura de la base de datos (BD), o de sus procedimientos almacenados y funciones, pueden traer como consecuencia: crecimiento innecesario de la BD en el disco duro, demora en la operación con los datos, problemas de consistencia, entre otros.

Un diseñador de BD construye su estructura a través de las relaciones de concepto del problema, incluso a partir de la definición de la estructura de clases, para tener una representación en la relaciones de los datos lo más cercana a las necesidades del software, donde se eviten redundancia de datos y relaciones innecesarias. Esto debe ser concebido a partir de la correcta normalización de la BD y el uso idóneo de los recursos que brindan los GBD, como la creación de vistas, procedimientos almacenados, funciones, el uso de transacciones, índices, etc.

5. Propuesta ingenieril de implementación del sistema

Cuando se habla de implementación de un sistema entre los desarrolladores, lo primero que viene a la mente es ya la escritura de código fuente, pero ingenierilmente existen algunos elementos a tener en cuenta si se desarrolla bajo ciertos estándares y fundamentalmente en sistemas grandes y de largo alcance.

El ingeniero de componentes concibe la estructuración del sistema desde el punto de vista de los componentes físicos, sean ficheros fuentes, ejecutables, ficheros de configuración o recursos adicionales para el uso del sistema. Esta estructura se concibe partiendo de los módulos e interfaces definidos en el diseño del sistema, creando así diferentes subsistemas. Esto último es traducido luego a la estructura de directorios y ficheros físicos, tanto en etapa de desarrollo, con la organización de los ficheros de código fuente, como en la etapa de producción, con la organización de los ejecutables, bibliotecas binarias y otros recursos del sistema en función de su despliegue.

6. Programación

La programación de un sistema es ya la materialización de toda la concepción ingenieril del mismo. Hacerla de manera correcta o incorrecta puede echar por tierra todo el trabajo del equipo de concepción ingenieril del sistema. La escritura del código debe ser clara, concisa y guiada por las definiciones del equipo de trabajo.

Un programador con la habilidad de entenderse con los ingenieros de software y con el conocimiento para establecer un lenguaje común en la construcción del software es vital para que fluya el desarrollo y el trabajo en equipo. A esto debe adicionársele, la experiencia en el lenguaje de programación definido, en la codificación de algoritmos eficientes y patrones de diseño preestablecidos. Un programador con esas condiciones, crea la confianza para trabajar en proyectos con soluciones de alto nivel profesional.

7. Despliegue del sistema

En la actualidad es muy común tener una arquitectura distribuida para un sistema, ya sea cliente servidor, sistemas orientados a servicios, multicapas, entre otros. Por lo cual el sistema no es un simple ejecutable sobre una PC, sino que tiene partes distribuidas por un conjunto de dispositivos y a su vez, hace uso de otros dispositivos como scanners, impresoras, equipos de automatización, etc.

El ingeniero de despliegue concibe la distribución de cada una de las partes del sistema por los diferentes dispositivos, así como la interacción con otros dispositivos externos. Se encarga luego de empaquetar los componentes y hacer el despliegue del sistema, donde garantiza el correcto funcionamiento y supervisa todo el proceso pruebas y transición del sistema al cliente. Debe tener en cuenta las restricciones de seguridad, respaldo y comunicación en los dispositivos.

8. Arquitectura del sistema

La concepción arquitectónica de un sistema es una de las tareas de más alta responsabilidad y experticia en un equipo de desarrollo. Es la visión integral desde la definición de los procesos a informatizar hasta el despliegue final, y la previsión de las futuras versiones del sistema. Por lo cual el arquitecto es el centro sobre el cual gira la construcción de un sistema.

El arquitecto de software es un rol que se crea en base a la experiencia, llevando la interpretación del sistema desde múltiples aristas. Es su responsabilidad definir la arquitectura base, e interviene en cada una de las etapas de desarrollo identificando los elementos arquitectónicamente significativos, sobre los cuales hay que prestar especial atención para mantener la línea base de la arquitectura. Es su responsabilidad definir las tecnologías y patrones arquitectónicos idóneos para llevar el proceso de desarrollo al término correcto y con las bases para mantenimientos y desarrollos futuros.

9. Pruebas

Las pruebas de software son una de las actividades fundamentales dentro del desarrollo de software pues permiten sacar a la luz diferentes clases de errores antes de su entrega al cliente o de la propia explotación del producto.

Los niveles de pruebas que se manejan son de unidad, integración, regresión, de sistema y de aceptación del cliente, todas ellas en etapas diferentes dentro del ciclo de vida del software pero siguiendo un único objetivo: encontrar errores y diferencias respecto al producto o sistema especificado; utilizándose para ello métodos de pruebas de caja blanca y/o caja negra.

10. Gestión de la calidad

La gestión de calidad dentro del proceso de desarrollo de software abarca cuatro etapas fundamentales: planificación, aseguramiento, control y mejora de la calidad.

En la planificación de calidad se establecen los objetivos de calidad del proyecto, así como las actividades de aseguramiento y control de la calidad de los procesos y productos necesario, para garantizar que al cliente llegue un producto con calidad.

El aseguramiento de la calidad garantiza que los productos o componentes de productos que se desarrollan cumplan con las exigencias de los clientes.

Detectar no conformidades en el proceso y/o producto, de manera que se logre que llegue el producto o componente de producto al cliente con la menor cantidad de no conformidades respecto a los requisitos especificados es responsabilidad de la etapa de control de la calidad.

Por último, la mejora de la calidad pretende diseñar e implantar acciones de mejora en el desempeño de los procesos y de los productos del trabajo generados.