lunes, 26 de agosto de 2013

A propósito de Ingeniería de Sistemas y desarrollo de software


En diferentes entornos profesionales y académicos, cada vez que se intenta establecer la causa del bajo nivel de desarrollo de la industria de software en el país, se sugieren algunas explicaciones como las siguientes: no hay inversión en este campo; hacen falta profesionales calificados que puedan generar desarrollos; las herramientas requeridas para los desarrollos son importadas y los costos son muy altos; los ingenieros de sistemas no saben vender sus productos y sus servicios; hay un alto grado de desconfianza en el cliente por la mala calidad en los desarrollos.

Las grandes organizaciones, tanto privadas como estatales hacen inversiones significativas en Tecnologías de la Información y a pesar de que no se ha alcanzado alta conectividad aún, también la pequeña empresa está dispuesta y le da un fuerte valor a la inversión en este campo. El acertado manejo de la información representa una ventaja competitiva.
No hay que dudar de la suficiente capacidad y creatividad del ingeniero colombiano, lo cual se refleja en los egresados de universidades del país que trabajan desarrollando software en el exterior y en el interés de empresas extranjeras fabricantes de software por la ingeniería nacional.

Ante avances tan rápidos como los que hay en las Tecnologías de la información, en el desarrollo de software es necesario partir de productos y estándares ya establecidos en el mercado. Esto hace necesario la importación de insumos y a costos muy altos. Sin embargo, ¿cómo explicar que en la India se desarrolle software de buena calidad y de bajo costo, a pesar de que en este sentido se encuentre en iguales condiciones que en Colombia? Sería útil estudiar la estrategia que los ha llevado a ocupar un lugar privilegiado en el mundo, en la producción de software y de servicios de tecnologías de información.

Al hablar de “saber vender” los servicios de ingeniería de sistemas,  se puede pensar que la dificultad se encuentra en la venta de intangibles. Siendo así, es fundamental estudiar cual es el método que utilizan otros profesionales exitosos que realizan este tipo de ventas y con esto se estaría diciendo que una vez superada la barrera de la comercialización de servicios, se tendrían en el mercado productos de software.

Pero el escenario que se presenta es diferente. Los servicios de ingeniería de sistemas y los productos de software se compran a firmas extranjeras. Se desarrolla a la medida para vender una sola vez. La producción de software empaquetado es mínima y los clientes desconfían de la calidad de estos productos. Aun en la implantación de software  se presentan fallas que generan desconfianza. Las empresas compran costosas soluciones de clase mundial, con implantaciones complejas pero no se logran los resultados esperados. Con frecuencia se dice: “el sistema no funciona”, “los sistemas son inestables”, “nuestro proceso tiene dificultades por fallas en el sistema”.  Con esto el cliente se está refiriendo indistintamente al software y al computador.

La asociación que hace el cliente de la ingeniería de sistemas con el comercio de computadores y de software, hace pensar que no se está identificando el servicio o el producto que se vende y que en esto radica la dificultad para vender y por supuesto si no vendemos para que producimos.

Es común escuchar la referencia que se hace del profesional de la ingeniería de sistemas como quien conoce  marcas de computadores, programas o  paquetes de software. El ingeniero que opera bien el computador, el que hace programas. Quien le dice al cliente cual fue el último programa que se publicó en una página de Internet  y le sugiere adquirirlo para mejorar su producción o para vender mas o quizá le mejorará la imagen de la organización. ¿Son esas las necesidades reales del cliente? ¿Estamos ofreciendo soluciones o estamos generando problemas al cliente?

Siendo conscientes de nuestras debilidades y nuestras fortalezas, pienso que  lo importante es identificar claramente el servicio y el producto que se está vendiendo y establecer esa diferencia competitiva, entendiendo y rescatando la verdadera esencia de la ingeniería de sistemas para generar la estrategia que nos permita desarrollar una industria de software.  Quizá diseñando el modelo de nuestro propio sistema.

Si se quiere hacer claridad respecto a las diferencias entre el comercio de computadores y software y la profesión que se asocia con estas actividades, lo primero que se puede plantear es la definición de esta.  ¿Qué es la Ingeniería de Sistemas? Se puede decir inicialmente que como otras disciplinas de ingeniería, se ocupa de llevar el conocimiento científico al uso práctico. La ingeniería de Sistemas consiste en adquirir conocimiento para crear un conjunto de procesos en procura de lograr un objetivo definido por el cliente o el patrocinador.



Hay un valor agregado en esta práctica y se refiere al sistema considerado como un todo y la contribución independiente de sus partes, que nos dice como se relacionan o como están conectadas internamente. 

Se pueden  identificar dos objetivos en el proceso de la Ingeniería de Sistemas. Los diseñadores de un sistema dirigen el objetivo de este a lo que están tratando de lograr en la fase de diseño. El sistema que está siendo desarrollado tiene como objetivo, lo que hace.

La Ingeniería de Sistemas, como la define Bayhill2, es una disciplina de ingeniería holística, orientada al producto, cuya responsabilidad es crear y ejecutar un proceso interdisciplinario para asegurar que las necesidades del cliente y socios interesados sean satisfechas con alta calidad, confiabilidad, costos eficientes y cumplimiento de acuerdo con los planes establecidos durante todo el ciclo de vida del sistema. 

Con el concepto anterior, ¿Qué brinda realmente la Ingeniería de Sistemas?  La respuesta tiene que ver con su orientación al producto y el proceso interdisciplinario que se crea. En este sentido, la Ingeniería de Sistemas brinda dos elementos que usualmente no están presentes en el desarrollo de un proyecto:
a) Una disciplina para enfocar el producto final, que contempla los productos disponibles y un ambiente operacional interno y externo. El producto final, es el objeto que ejecuta la misión del sistema.   Los productos disponibles son los que utiliza quien desarrolla para producir, probar, desarrollar, instalar, operar y mantener el producto final. El ambiente operacional son todas las interacciones que cruzan las fronteras del sistema.
 b) Una visión consistente de las expectativas del cliente y de los socios interesados, independientemente de las demandas que presenta el proyecto diariamente. Las expectativas se pueden agrupar en tres categorías: costo, agenda y desempeño.





El proceso interdisciplinario que crea y ejecuta la ingeniería de sistemas, es de descubrimiento y muy diferente a un proceso de manufactura. En este último, el enfoque va orientado a ejecutar tareas repetitivas para obtener salidas de alta calidad con el mínimo tiempo y costo. El proceso de ingeniería de sistemas, comienza descubriendo y definiendo el problema real  que necesita ser resuelto. Después de esto, se procede a descubrir una solución basada en las necesidades y expectativas del cliente y socios interesados, teniendo en cuenta una apropiada mezcla de costo, tiempo y medidas de desempeño. Una gran falla que puede tener un ingeniero de sistemas es encontrar una solución elegante para el problema equivocado. Durante el ciclo de vida de la solución, se pueden tener otro tipo de descubrimientos relacionados con el desarrollo, construcción, entrenamiento, depuración, afinamiento y retiro del sistema. El proceso es ejecutado por personas quienes pueden ayudarse con herramientas de soporte automatizado.


Existen unos principios pragmáticos en el proceso de la ingeniería de sistemas:

1) Conocer el Problema, el Cliente y el Consumidor
2) Usar criterios efectivos, basados en necesidades, para la toma de decisiones del sistema
3) Establecer y administrar requerimientos
4) Identificar y evaluar alternativas, así como converger a una solución
5) Verificar y validar requerimientos y ejecutar la solución
6) Mantener la integridad del sistema
7) Administrar con base en un Plan

Las actividades del proceso de ingeniería de sistemas se realizan en forma paralela y repetitiva según sean requeridas por el sistema objetivo. Estas actividades se pueden sintetizar en las siguientes siete tareas o funciones: Definir del problema, Investigar alternativas, Modelar el sistema, Integrar, Implantar el sistema, Evaluar desempeño y volver a Valorar.

La relación que existe con el desarrollo de software se presenta en la implantación del sistema. Esta fase comprende el diseño de detalle, desarrollo y producción. Los diferentes componentes pueden ser construidos o comprados, integrados en sub-sistemas y probados. Es un proceso iterativo que incorpora y ajusta nuevo conocimiento al sistema en el transcurso de su desarrollo.  

El proceso iterativo es entonces, el motor básico de la ingeniería de sistemas y se caracteriza por una estrategia de sentido común:
1) entender un problema antes de intentar resolverlo,
2) examinar soluciones alternativas (no saltar al diseño) y
3) verificar que la solución seleccionada es correcta antes de continuar con la definición de actividades o proceder con el siguiente problema.

Así como la ciencia y la ingeniería tradicional establecen aspectos diferentes para el desarrollo de la humanidad, la ingeniería de sistemas también identifica o determina algo muy particular. La ciencia a través del desarrollo de hipótesis teóricas y experimentación y por las leyes que la rigen, determina lo “que es”. Todas las disciplinas de ingeniería aplican conocimiento y conceptos de ciencias y matemáticas. El diseño de componentes de la ingeniería tradicional utiliza principios científicos para crear soluciones a una especificación o lo “que puede ser”. La ingeniería de sistemas actúa como la interfaz entre la ingeniería de componentes (las personas en búsqueda de soluciones físicas) y la sociedad (las personas con una necesidad). Los ingenieros de sistemas, trabajan con ambos grupos, en un conjunto coordinado de equipos para determinar lo “que debería ser”.  Es decir, el conjunto de requerimientos para la solución de la necesidad.

El ingeniero de sistemas tiene la responsabilidad de diseñar e integrar el sistema. Debe tener una visión del sistema total, así como de sus elementos y las interrelaciones entre ellos. Su contribución con el desarrollo de la industria de software, está directamente relacionada con encontrar la solución apropiada al problema definido, para brindar al cliente un sistema exitoso. El cliente quedará satisfecho porque se han identificado sus necesidades. El sistema le será útil y le parecerá sencillo. Esto es más que la compraventa de tecnología. Es más que el genial desarrollo de un programa.



Espero haber ayudado en algo. Hasta la próxima oportunidad!

2 comentarios:

  1. Uno de los problemas, (al menos lo veo como estudiante), es la gran cantidad de asignaturas que se ve en la universidad y la casi nula acoplación entre los contenidos de las asignaturas. De igual forma es demasiado complicado dominar un lengua de programación, con escasas 64 horas dictadas por un profesor en el mejor de los casos, que es ingeniero, pero que de docencia sabe poco.

    ResponderEliminar
    Respuestas
    1. Hola, comparto totalmente los dos puntos que planteas y a ello le agregaría la presencia de profesionales que no se formaron como ingenieros de sistemas dirigiendo la escuela, cuya gestión a veces se refleja en un plan curricular muy pobre.

      Bien Henry Garcia Ospina, gracias por la visita y el aporte de tu comentario.

      Éxitos!! Hasta cualquier momento...

      Eliminar

       

Etiquetas

Academy (23) Accediendo a datos con ADO .NET (31) Acceso a la red (30) Algoritmo (34) Algoritmos en JAVA (2) Ampliación de clases (2) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (3) APRENDA A PROGRAMAR COMO SI ESTUVIERA EN PRIMERO - Autores : IKER AGUINAGA (10) Aprendiendo a desarrollar en Windows 8 (5) Aprendiendo UML en 24 Horas (Autor : Joseph Schmuller ) (30) Arquitectura (29) Arquitectura del Computador (3) Arquitectura del Computador - Historia de la informática (1) Asignación de direcciones IP (18) Aspectos fundamentales de bases de datos (5) Auditoría de la dirección (2) Auditoría de Sistemas (3) Auditoría Informática - Un enfoque práctico - Mario G . Piattini y Emilio del Peso (7) Avanzado (23) Base de Datos (67) Básico (23) Bios (29) Business Productivity Online Suite - BPOS (3) Capa de Red (22) Capa de Transporte (16) Capítulo 1 - Documentos HTML5 (6) Capítulo 10. API Web Storage (2) Capítulo 11. API IndexedDB (4) Capítulo 12. API File (1) Capítulo 2. Estilos CSS y modelos de caja (7) Capítulo 3. Propiedades CSS3 (4) Capítulo 4. Javascript (6) Capítulo 5. Video y audio (6) Capítulo 6. Formularios y API Forms (8) Capítulo 7. API Canvas (5) Capítulo 8. API Drag and Drop (2) Capítulo 9. API Geolocation (2) CCNA1 v5.0 (195) CCNA1 v6.0 (23) CCNA2 v5.0 (26) CCNA3 v5.0 (25) CCNA4 v5.0 (23) CD-ROM (3) Chapter 1 How does Xamarin.Forms fit in? (7) Chapter 2 Anatomy of an app (5) Cisco (297) Cloud Computing (3) CNNA v5.0 Routing & Switching (216) CNNA v6.0 Routing & Switching (2) Codigo (2) Computadora (32) Configuración (29) Configuración de un sistema operativo de red (21) Control (29) Creación de tipos de datos y tablas (3) Creación y Administración de bases de datos (3) Creando la Interface de la Aplicación Windows (50) Creating Mobile Apps with Xamarin.Forms (13) Cuenta (29) Curso (32) Curso Aprendiendo a Programar (25) Datos (3) Desarrollando en Windows 8 - AVANZADO (2) Desarrollando en Windows 8 - BÁSICO (3) Desarrollando en Windows 8 - INTERMEDIO (2) Desarrollo (2) Desarrollo .Net (21) Desarrollo avanzado de Windows Store Apps usando C# (1) Desarrollo basado en conceptos de Ingeniería de Software para Visual Studio (2) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (37) DESARROLLO DE APLICACIONES WINDOWS CON MICROSOFT .NET (Autor: Luis Dueñas Huaroto) (29) Desarrollo en Microsoft Visual Studio (44) Desarrollo en Microsoft Visual Studio - AVANZADO (15) Desarrollo en Microsoft Visual Studio - BÁSICO (14) Desarrollo en Microsoft Visual Studio - INTERMEDIO (18) Desarrollo en Windows Phone 8 (13) Diagnostico (4) Diagrama (3) Diagramas de actividades (2) Diagramas de colaboraciones (2) Diagramas de secuencias (2) Digital (2) Diplomado (2) Disco (29) Disco Duro (4) Diseño de aplicaciones de Windows 8 en HTML 5 (7) Dispositivos Electrónicos (11) Doctorado (2) Ejemplos (3) Ejemplos de algoritmos (27) El camino hacia el CSS3 (3) El diseño web flexible (6) El elemento de diseño Canvas (3) El enfoque de los sistemas (3) El flujo de un programa (2) El gran libro de HTML5 - CSS3 y Javascript - Autor: Juan Diego Gauchat (55) El principio de organicidad (7) Electrónica (2) Elementos de un sistema (5) Empresas (2) Entrada y salida (4) Entropía y neguentropía (7) Estrategia (2) Estructura de un programa Java (12) Estructuras de almacenamiento (10) Estructuras de control (6) Estructuras de las tablas en SQL Server (2) Estructuras fundamentales de los datos (2) Ethernet (21) Evolución y Familias de los Microprocesadores (15) Exámen (23) Exploración de la red (23) Extensión de clases (4) Facebook (4) Familia Intel (15) Forefront (8) Función (3) Funciones de una red (12) Funciones de una red informática (1) Fundamentos de C# para absolutos principiantes (17) Fundamentos de programación en Java (50) Generaciones de la computadora (5) Gestión (3) Gestión de riesgos - Auditoría de Sistemas (1) GONZALO MARTÍNEZ (1) Grupos Facebook (1) Harvard (29) Historia de las computadoras (11) HTML5 y CSS3 - Autor: Christophe Aubry (99) HTML5 y CSS3 aplicadal texto (7) HTML5 y CSS3 para los formularios (15) Imágenes (2) Implementación de Windows 7 (11) Información (31) Informática (29) Ingeniería (4) Instalar (29) Inteligencia (2) Inteligencia de Negocios con SQL Server (3) Intermedio (23) Internet (29) Internet Explorer 9 (3) Introducción a ASP.NET 5 (8) Introducción a Java (7) Introducción a jQuery (8) Introducción a la Auditoría de Sistemas (2) Introducción a la teoría general de sistemas (Oscar Johansen Bertoglio) (39) Introducción a Networking (2) Introducción a Window Forms (5) Introducción al acceso a datos con ADO .NET (9) Investigación de Operaciones (12) Java (52) Jump Start de consultas en las bases de datos de Microsoft SQL Server 2012 (8) La definición de un Sistema (6) La evolución del HTML y del CSS (3) La nueva sintaxis HTML5 (12) LA QUINTA DISCIPLINA en la práctica (Autor : Peter Senge) (28) Las animaciones en CSS3 (5) Las transformaciones CSS3 (11) Las transiciones con CSS3 (8) Licenciamiento Microsoft (3) Local Area Network (LAN) - Red de Area Local (2) Lógico (2) Los elementos de la estructura en html5 (9) Los elementos multimedia: audio y vídeo (2) Los estilos de caja en CSS3 (13) Los nuevos selectores de CSS3 (6) Maestría (2) Mantenimiento de Mouse y Teclado (2) Manual de Microsoft SQL Server - Full Transact SQL (68) Manual de soporte técnico para escuelas sobre windows 7 (42) Marco Teorico de Investigación de Operaciones (6) Medios de Almacenamiento (11) Medios de Networking (2) Mejorando la Interface de las Aplicaciones Windows (26) Memoria Tipos y Clases (5) Método (2) Metodología (1) Microsoft (324) Microsoft Lync 2010 (7) Microsoft Silverlight 4.0 (2) Microsoft Virtual Academy (356) Modelo (2) Modelo OSI y TCP-IP (2) Modelos con poco grado de dificultad de Programación Lineal - Investigación de Operaciones (13) Modelos con razonable grado de dificultad de Programación Lineal - Investigación de Operaciones (10) Modelos de desafio de Programación Lineal - Investigación de Operaciones (5) Modelos difíciles de Programación Lineal - Investigación de Operaciones (5) Modelos Fáciles de Programación Lineal - Investigación de Operaciones (13) Modelos lineales con solver (3) Modulo (23) Movimiento (2) Mozilla (29) MS SQL Server (77) MS Virtualization para Profesionales VMware - Gestión (3) MS Virtualization para Profesionales VMware- Plataforma (4) MVA (263) Negocio (2) Nivel Avanzado Desarrollo .Net (6) Nivel Básico Desarrollo .Net (11) Nivel Intermedio Desarrollo .Net (8) Normas técnicas peruanas y su evolución - Auditoría de Sistemas (1) Nube Privada - Avanzado (6) Nube Privada - Básico (6) Nube Privada - Intermedio (6) Office 365 (3) Optimización de Escritorio (10) Optimización de Escritorio - Avanzado (4) Optimización de Escritorio - Básico (3) Optimización de Escritorio - Intermedio (3) ORACLE 10g - ADMINISTRACIÓN Y ANÁLISIS (3) Oracle 10g y el Grid Computing (3) Organización aleatoria y secuencial (1) Partes principales de la Mainboard (12) Perceptron (2) Perfil (2) Periféricos de Entrada / Salida (15) Pesi (2) PHP y MySQL - Manual de aprendizaje para crear un sitio web - Autor : Olivier ROLLET (79) Plan (2) Plataforma (29) PMBOK (24) PMBOK - Guía de los fundamentos para la dirección de proyectos (24) PMBOK - INFLUENCIA DE LA ORGANIZACIÓN Y CICLO DE VIDA DEL PROYECTO (6) PMBOK - Introducción (11) PMBOK - PROCESOS DE LA DIRECCIÓN DE PROYECTOS (5) Prevención - Herramientas e Instrumentos de Medida (9) Principios básicos de enrutamiento y switching (169) Proceso (2) Proceso de auditoría de sistemas informáticos (2) Programación en Android - Auor : Salvador Gómez Oliver (46) Programación paso a paso de C# - Autor : Nacho Cabanes (16) Protocolos y comunicaciones de red (17) Proyecto (2) Qué es un sistema (4) Red de Área Local Inalámbrica (WLAN) (4) Redes (30) Redes inalámbricas - WIRELESS - Conocimiento general (15) Redes neuronales (2) Redes y Comunicaciones (45) Reparación de Fuentes - UPS - Estabilizadores (10) Reparación de Impresoras (9) Reparación de Monitores (16) Router (29) Seguridad en la Nube (3) Seminario (23) Server (24) Sharepoint 2010 - Nivel Básico (6) Sharepoint 2010 - Niveles Avanzados (18) Sharepoint 2010 - Niveles Avanzados - Básico (8) Sharepoint 2010 - Niveles Avanzados - Intermedio (9) Sinergia y recursividad (4) Sistema (33) Sistema de Cableado Estructurado (9) Software (30) SOLUCIÓN GRÁFICA DE MODELOS DE PROGRAMACIÓN LINEALES - INVOPE (8) Soporte a Infraestructura (3) SQL (38) SQL Azure - Introducción (3) Subsistemas de control (4) Tablas (4) Tarjeta Principal del Sistema (10) Tarjetas de Interfaces (7) Tecnología (31) Tecnologías LAN (1) TEORÍA GENERAL DE SISTEMAS (1) Tic (2) Tipo (2) TML5 y CSS3 - Autor: Christophe Aubry (12) Trabajando con el Formulario (7) Un diseño HTML5/CSS3: dConstruct 2011 (3) Un diseño HTML5/CSS3: FlipThru (2) Un diseño HTML5/CSS3: The Cat Template (2) Usando Controles Windows Forms (12) Usando Herramientas de Datos de Visual Studio (6) Ventas (2) Virtualización Hyper - V Nivel Básico (5) Virtualización Hyper - V Nivel Intermedio (5) What’s New in Windows 8.1 Security (4) Window (29) Windows 7 Segunda Fase - AVANZADO (4) Windows 7 Segunda Fase - BÁSICO (6) Windows 7 Segunda Fase - INTERMEDIO (4) Windows 8 - Vista Previa (4) Windows 8.1 To Go (2) Windows Azure (3) Windows Phone 7 (2) Windows Server 2008 R2 (3) Windows Server 2012 - Gestión y Automatización (3) Windows Server 2012 R2 Essentials (7) Windows Server 2012: Almacenamiento (5) Windows Server 2012: Identidad y Acceso (4) Windows Server 2012: Revisión Técnica (7) Xamarin (1)

Páginas vistas en total según Google