Se suele definir como sistema a un conjunto relacionado de partes que operan en combinación para obtener un resultado deseado. Este resultado se denomina propósito. Esto significa que esta compuesto de partes que se conectan de manera definida o determinada; y que cada parte ejecuta una tarea específica. Por ejemplo, un reloj.

Todo sistema tiene una estructura y una lógica interna, como también mecanismos que permite la comunicación entre los elementos constituyentes.

Para controlar un sistema, se debe trabajar con cada uno de las partes que lo constituyen, de manera “local”; y se debe trabajar en la forma en que se interrelacionan todas estas partes, de manera general. Siguiendo nuestro ejemplo, esta tarea la realiza el relojero.

En un sistema, la alteración de uno de los elementos afecta a todas las partes. Esto se llama globalismo o totalidad; y el conjunto final resultante es diferente. Es decir, se modifica el propósito.

Sistemas Empresariales

Una de las estrategias mas usadas para el gerenciamiento y control de empresas, se basa en el correcto uso de la informática como herramienta principal, modelando un sistema donde “la gerencia es el relojero” y “las partes son los procesos de negocios” de la empresa.

El propósito de estos sistemas es producir negocios (la empresa existe para producir dinero) y toda la estructura se conforma para lograr este objetivo; por eso es importante entender algunos conceptos básicos de la teoría general de sistemas.

Las características principales de todos los sistemas (sistemas mecánicos, económicos, biológicos, etc.) son:

  • Propósito: todo sistema tiene un objetivo. En la mayoría de los casos existe más de un propósito definido y las prioridades de esos objetivos formas parte esencial de las respuestas del sistema.
  • Totalidad: Los cambios en los elementos repercuten en el resto del sistema, produciendo alteraciones de diversa índole.
  • Entropía: todo sistema tiende a desgastarse o desintegrarse. Es directamente proporcional al lapso de vida de un sistema, es decir que aumenta con el tiempo transcurrido.
  • Negentropía: Establece que la información es el único elemento que permite disminuir o controlar la entropía.
  • Adaptabilidad: Es el proceso por el cual el sistema se organiza, adquiere información, la organiza y procesa. Para el caso de sistemas informáticos, dejó de ser un concepto teórico y paso a ser el elemento clave para el desarrollo de métodos ágiles de gestión de proyectos y técnicas de desarrollo de software.
  • Homeostasis: Es el equilibrio existentes entre las partes del sistema. La adaptación para la supervivencia hace que se modifique, que se organice internamente a partir de sus elementos para las alteraciones externas.

Según su constitución, los sistemas se clasifican en

  • Físicos: Conformado por elementos materiales reales y concretos, perfectamente identificables. Por ejemplo, el motor de un carro.
  • Abstractos: Se refieren a conceptos, ideas, hipótesis. Generalmente se utilizan símbolos para definir sus atributos. Por ejemplo, el sistema económico.
  • Mixtos: Tienen componentes físicos y abstractos. Los sistemas de empresas que buscan generar dinero sin, generalmente, mixtos.
  • Cerrados: Carecen de conexión con el medio. No se relacionan con elementos situados fuera de ellos. Se dice que los sistemas cerrados son conceptos teóricos, que no existen en la naturaleza. El reloj es un ejemplo de estos sistemas.
  • Abiertos: Son los sistemas que tienen permanente intercambio con el exterior en forma de entradas y salida de materia y energía. Las empresas son sistemas estrictamente abiertos.

Parámetros de los sistemas

Todos los sistemas tienen parámetros en común:

  • Entrada: material, energía o información que permite el inicio de la operación del sistema. Se la denomina generalmente como INPUT
  • Salida: Es el producto resultante para el cual fue creado el sistema. Se denomina OUTPUT
  • Proceso: es el conjunto de operaciones realizadas por el sistema para transformar una entrada en una salida.
  • Feedback: Es la función de retroalimentación del sistema, que puede ser sobre el propósito, o la comparación de este con un criterio determinado.
  • Entorno: Es el ambiente donde esta inmerso el sistema. En sistemas abiertos opera directamente “junto” al sistema; y puede funcionar de manera nociva para el sistema. El entorno le exige adaptabilidad al sistema, y que lo logre o no depende de la homeostasis propia de cada sistema.

Conociendo los conceptos más elementales de la teoría general de sistemas, podemos comenzar a introducirnos en sistemas informáticos de empresas.

Los sistemas empresariales tienen por propósito el modelado de sus procesos internos de producción, gestión y administración. Son sistemas mixtos, abiertos, que requieren de:

  • Hardware: Computadoras y equipamiento para funcionar.
  • Software: Como responsables del funcionamiento de las partes.
  • Personas: Todos los que interactúan con alguna parte, desde usuarios hasta programadores.
  • Documentos: reglas sobre uso, normas documentación técnica.
  • Gerencia: Entidad máxima del sistema que define cada uno de los componentes y establece las reglas con las cuales se interrelacionan cada una de las partes.

Características

Se dice que el software para empresas tiene tres características esenciales 

  • Se desarrolla, no se fabrica.
  • No se estropea.
  • La mayor parte se hace a medida.

El software se desarrolla

Las diferencias entre la producción de un objeto y el desarrollo de un software son notables, y la falta de percepción de esto hace que muchos de los proyectos sean mal administrados.

El costo de un producto se centra en su fabricación; no así para el caso del software. Puede decirse que es económico de hacer, pero tiene grandes costos en sus procesos de ingeniería.

Existen aplicativos de software que se asemeja en su proceso de elaboración, a cualquier otro producto industrial, a los cuales puede imitar en su fabricación para lograr el éxito.

Las mayores similitudes se dan con aquellos que tienen un alto grado de innovación. Por ejemplo, aplicaciones para teléfonos inteligentes, software de gestión de componentes electrónicos, sistemas operativos, etc.

Al mencionar que el costo de fabricación es despreciable, hacemos referencia a la tendencia que considera la elaboración del software como el proceso de creación del ejecutable, que como todos sabemos es casi gratuito.

El verdadero costo del software empresarial se ubica mucho antes, en el proceso de creación y tiene que ver con los conocimientos, tiempos, personas y recursos que deben destinarse a él.

El software no se estropea

Los errores de software tienen distinto impacto y su manifestación no es igual que en el hardware.  Generalmente, el software no es susceptible a los males del entorno que si provocan destrucción o deterioro en otros elementos.

La posibilidad de corrección de fallas en el software no lo deja exento de volver a sufrir problemas, ya sea por viejos errores no conocidos o por los nuevos creados en su mantenimiento correctivo.

Veamos, una vez más, que la necesidad de un software desacoplado es indispensable para evitar la introducción de elementos basura en el código. La alta cohesión de los componentes es vital para que el desacople se de cómo un proceso natural del desarrollo.

A medida que iteremos en el ciclo de vida aparecerán nuevos detalles de construcción, que pueden ser mejor identificados y ubicados en aquel software cuyos desarrolladores se han tomado el trabajo, desde un principio, de pensar en un diseño susceptible de ser mantenido.

La mayor parte del software se hace a medida

Casi todo el software empresarial se desarrolla para situaciones muy específicas y, por lo tanto, se hace a medida o se lo modifica para adaptarlo a la realidad.

No existen los componentes estándar a los que la gerencia pueda recurrir y de los cuales se tienen referencias y especificaciones aceptables.

Esto transforma el proceso de desarrollo en un conjunto de pasos casi artesanales donde un líder con mayor capacidad puede marcar una diferencia entre el éxito y el fracaso.

Actualmente, todas las metodologías y tendencias de desarrollo apuntan y preparan un escenario para tener un conjunto de componentes que pueda ser altamente reutilizable. El desarrollo orientado a objetos ha sido uno de los pilares de este tipo de premisas.

Estas características son los factores principales que provocan la alta tasa de fracasos en el desarrollo de software a nivel empresarial. Teniendo presente estos elementos, se corren menos riesgos y se puede alterar el circuito sin insertar posibles puntos débiles.

Complejidad inherente

El software empresarial se caracteriza por sus grandes dimensiones y por la ejecución de múltiples tareas críticas. Son aplicaciones que tienen un conjunto muy amplio de comportamientos, que deben ser tratados particularmente y de manera global, en forma simultánea.

Para esta integración se deben realizar muchas tareas que caracterizan este tipo de desarrollos:

  • Análisis de requisitos complejos: El sistema de una empresa pone al desarrollo “frente a la empresa”. Esto genera limitantes tanto para el desarrollador del sistema, como para la empresa, donde no siempre es claro y obvio el mecanismo de sus procesos internos. Esto, sumado a las tareas que deberá cumplir el sistema, dificulta el conocimiento de todo el dominio. Es difícil formular, explicar y transmitir los detalles intrínsecos de una empresa. Es imposible desarrollar un sistema empresarial sin conocer estos detalles.
  • Ciclo de construcción largo: La naturaleza del sistema hace que el desarrollo requiera de varios meses o incluso años para completarse.
  • Amplia cantidad de usuarios: Generalmente estos sistemas serán operados por una amplia variedad de usuarios con distintos niveles de conocimientos, interacción, acceso, compromiso asumido, grados de responsabilidad dentro de la empresa y deseo de cambiar su forma de trabajar.
  • Distintos tipos de profesionales en su desarrollo: La interacción de distintos tipos de disciplinas es común y puede dar como resultado dificultades de comunicación de tipo de técnicas o interpersonales.

 Una característica del software empresarial es que resulta sumamente difícil para el programador comprender todas las sutilezas de su diseño.

La capacidad intelectual humana se ve desbordada por los pequeños mecanismos necesarios existentes dentro de una empresa, imprescindibles para que el software funcione y lo haga realmente como los usuarios lo esperan.

Para minimizar los problemas que comienzan a aparecer ante estas dificultades, se han creado disciplinas que nos permiten analizar, gestionar, desarrollar y entregar sistemas de software de forma eficiente.

La ingeniería de software resuelve la problemática del programador; una ves que comprende el dominio del sistema.

La gestión de proyectos resuelve la problemática de la empresa para transmitir el dominio del sistema el equipo de desarrollo.

El proyecto de desarrollo

La complejidad inherente al software obliga a que el desarrollo se realice a través de un proyecto formal; liderado y gestionado con técnicas precisas y especializadas para el cumplimiento de metas.

El proceso de creación de software es cíclico. Todo software tiene su propio ciclo de vida, que se define en función del proyecto.  Los ciclos dependen del paradigma de desarrollo seleccionado. Por ejemplo, el paradigma clásico de los años sesentas

  • Análisis de requisitos
  • Diseño
  • Programación
  • Pruebas
  • Implementación

El software empresarial se desarrolla de manera cíclica dentro de un proyecto. Este proyecto es el nexo operativo entre dos entidades: la empresa que requiere el sistema y la que lo desarrolla.

Cada ciclo de vida da por resultado “una versión del sistema”.

La diferencia entre el software, el proyecto y los procesos es notoria y fundamental.

Entenderlas es vital para el éxito de un software; porque las nuevas técnicas de ingeniería están pensadas para que en un mismo proyecto (mismos tiempos y misma inversión) las empresas resuelvan, simultáneamente, la formulación, elaboración y perfeccionamiento de sus procesos.

Los procesos son la vista de más alta abstracción bajo la cual se organizan todas las tareas de ingeniería para obtener software de calidad, como también todas las reglas de negocios que rigen al funcionamiento de los negocios de la empresa.

Los procesos son un mapa conceptual que indican sin ambigüedad “cómo se hacen las cosas” en la empresa.

Establecen mecanismos de trabajo y definen relaciones entre las diferentes áreas. Se usan para representar un modelo de “cómo hacemos las cosas actualmente” y evaluar “cómo quiero que se hagan a partir de este proyecto”.

El Proyecto de desarrollo incluye estos procesos y también otros que pueden tener que ver con tareas relacionadas, o ser procesos externos a la empresa, necesarios para el cumplimiento de metas.

El software empresarial tiene un ciclo de vida que esta dividido en fases. Cada fase debe ser completada mediante la aplicación de tareas, técnicas y herramientas de ingeniería de software.

Existen innumerables metodologías para gestión de proyectos y ejecución del ciclo de vida del software.

Cada una posee sus ventajas y desventajas; y conviene usar lo mejor de cada una, en función de lo que más le convenga al proyecto en general. Pero lo más importante a destacar es la necesidad de establecer un proyecto de desarrollo de software.

El éxito de un software empresarial depende estrictamente de 

  • El diseño del proyecto elaborado para su desarrollo.
  • La correcta abstracción y modelado de cada uno de sus procesos.
  • La buena administración de plazos establecidos.
  • La justa cantidad y calidad de las comunicaciones entre los participantes.

El proyecto de desarrollo.

Desarrollar sistemas para empresas implica planificar, organizar y controlar una gran cantidad de recursos de manera simultanea; recursos que generan gastos; y que requieren de una inteligente y firme coordinación durante el desarrollo.

Las actividades de desarrollo se contraponen con las operaciones normales de la empresa, agregándole a esto que el recurso más valioso de estos proyectos, es el tiempo de la gerencia invertido en transformar know how interno en elementos constitutivos del sistema.

Controlar el desarrollo, simultáneamente con las actividades cotidianas de la empresa,  requiere de habilidades técnicas variadas, y de un gerenciamiento estratégico eficiente, que deben convivir durante todo el proceso, en perfecta armonía entre las partes participantes.

Se dice que el éxito de un proyecto se corresponde con la consecución de sus objetivos de plazos, coste, tiempo y calidad. Por suerte, la gestión de proyectos es hoy en día (casi) una ciencia exacta donde no hay mucho por inventar. Solo hay que seguir ciertos lineamientos, establecidos y mas que demostrados como eficientes.

Existen incontables herramientas y bibliografía a consultar. Se han desarrollado estándares muy eficientes. La industria ha invertido años de investigación y desarrollo buscando la disminución de riesgos de un proyecto.

A la fecha, podemos decir que en proyectos de desarrollo de sistemas empresariales, el éxito reside en tres puntos esenciales.

  • El equilibrio entre la empresa y el equipo de desarrollo, para la gestión de los recursos asignados.
  • La comunicación eficiente entre la empresa y el equipo.
  • Desarrollar software basado en los principios de “gestión por procesos”.

Porque es en la “Gestión por Procesos” donde se resumen todas las herramientas y técnicas que unifican estos tres puntos.