Enlaces Visitados

jueves, 2 de junio de 2011

LAS HERRAMIENTAS CASE - INGENIERÍA CONCURRENTE.

LAS HERRAMIENTAS CASE.


     Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software.
     Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.

Definiciones:
  • Conjunto de métodos, utilidades y técnicas que facilitan la automatización del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.
  • La sigla genérica para una serie de programas y una filosofía de desarrollo de software que ayuda a automatizar el ciclo de vida de desarrollo de los sistemas.
  • Una innovación en la organización, un concepto avanzado en la evolución de tecnología con un potencial efecto profundo en la organización.

     Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.
     La realización de un nuevo software requiere que las tareas sean organizadas y completadas en forma correcta y eficiente. Las Herramientas CASE fueron desarrolladas para automatizar esos procesos y facilitar las tareas de coordinación de los eventos que necesitan ser mejorados en el ciclo de desarrollo de software.
     La mejor razón para la creación de estas herramientas fue el incremento en la velocidad de desarrollo de los sistemas. Por esto, las compañías pudieron desarrollar sistemas sin encarar el problema de tener cambios en las necesidades del negocio, antes de finalizar el proceso de desarrollo.
     También permite a las compañías competir más efectivamente usando estos sistemas desarrollados nuevamente para compararlos con sus necesidades de negocio actuales. En un mercado altamente competitivo, esto puede hacer la diferencia entre el éxito y el fracaso.
     Las herramientas CASE también permiten a los analistas tener más tiempo para el análisis y diseño y minimizar el tiempo para codificar y probar.
     La introducción de CASE integradas está comenzando a tener un impacto significativo en los negocios y sistemas de información de las organizaciones.
     Con un CASE integrado, las organizaciones pueden desarrollar rápidamente sistemas de mejor calidad para soportar procesos críticos del negocio y asistir en el desarrollo y promoción intensiva de la información de productos y servicios.
     La principal ventaja de la utilización de una herramienta CASE, es la mejora de la calidad de los desarrollos realizados y, en segundo término, el aumento de la productividad. Para conseguir estos dos objetivos es conveniente contar con una organización y una metodología de trabajo, además de la propia herramienta de trabajo, además de la propia herramienta.

Evolución de las Herramientas CASE:


1.   A INICIOS  DE LOS AÑOS 80.

     Ayuda en la documentación por computadora. Diagramación asistida por  computadora. Herramientas de análisis y diseño.

2.    A MEDIADOS DE LOS AÑOS 80.

              Diseño   automático   de   análisis  y pruebas. Repositorios automáticos de
         información de sistemas.

3.   AL FINAL DE LOS AÑOS 80.

            Generación automática de código desde especificaciones de diseño


4.   A INICIO DE LOS AÑOS 90.

            Metodología   Inteligente.  Interface   de   Usuario  reusable   como   una
         metodología desarrollo.

CLASIFICACIÓN DE LAS HERRAMIENTAS CASE

No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:
  • Las Plataformas que soportan.
  • Las fases del Ciclo de Vida del Desarrollo de sistemas que cubren.
  • Las Arquitecturas de las aplicaciones que producen.
  • Su funcionabilidad.

     Las herramientas CASE, en función de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:
    1. HERRAMIENTAS INTEGRADAS, I-CASE (Integrated CASE, CASE
                     Integrado): abarcan  todas   las  fases  del   ciclo  de  vida  del     
                     desarrollo  de sistemas. Son  llamadas también CASE workbench.

    1. HERRAMIENTAS DE ALTO NIVEL, U-CASE (Upper CASE - CASE
                     Superior) o front-end, orientadas a la automatización y soporte de las
                        actividades desarrolladas durante las primeras fases del desarrollo:
                        análisis y diseño.

    1. HERRAMIENTAS DE BAJO NIVEL, L-CASE (Lower CASE - CASE
                     inferior)  o  back-end,    dirigidas   a   las   últimas    fases   del 
                     desarrollo: construcción e implantación.

    1. JUEGOS DE HERRAMIENTAS   o Tools-Case,son el tipo más simple  de herramientas CASE. Automatizan una fase dentro del ciclo de vida.} Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.

ASPECTOS FUNDAMENTALES QUE DEBEN CONAISERARSE CUANDO SE
SELECCIONA UNA HERRAMIENTA CASE.


     Seleccionar una Herramienta CASE no es una tarea simple. No existe una ‘mejor’ herramienta respecto de otra. Hay numerosas historias respecto al uso de CASE y las fallas que pueden producirse. Las fallas o las respuestas satisfactorias están en relación con  las expectativas. Si el proceso de evaluación y selección de las Herramientas CASE falla, entonces la Herramienta no cumplirá con las especificaciones o expectativas del negocio. Esto puede ocurrir durante el proceso de implementación o ejecución del producto.

Hay tres puntos comunes que fallan en el proceso de evaluación y selección:

1. El proceso en sí mismo.
2. Los pre-requisitos necesarios.
3. Conocer la organización.

  1. EL PROCESO EN SÍ MISMO:

      El proceso de evaluación y selección de Herramientas CASE debe aproximarse a un proyecto mayor. El proceso debe definirse cuidadosamente y debe incluir las mejores técnicas de dirección de proyecto. Ninguna selección es igual que otra, porque dos organizaciones no son iguales.
     Por ejemplo, el proceso de selección para el Ministerio de Defensa puede ser completamente diferente que en una corporación comercial. Aunque hay principios básicos, por ejemplo, todos debemos entender el criterio en el que está basado el proceso de selección, todos deben tener una visión común.
     Es adecuado limitar el número de vendedores tanto como sea posible, para poder enfocar y entender realmente una determinada herramienta.

  1. LOS PRE-REQUISITOS NECESARIOS:

     El propósito de las herramientas CASE es apoyar y facilitar el desarrollo de software. Debe haber una comprensión clara del propósito de las herramientas que se propongan dentro del ambiente de desarrollo que es compartido por el equipo de la selección. El equipo debe tener una visión común del ambiente de desarrollo de sistemas, resultando la selección de la herramienta adecuada.
     Otro requisito previo importante sería tener una metodología de desarrollo de sistemas seleccionada. Sin una metodología, ingresará al largo camino del fracaso. Las herramientas implementan la metodología, no la determinan.

         3. CONOCER LA ORGANIZACIÓN:

     Cuando se está evaluando y seleccionando una herramienta CASE, es importante conocer y entender a la organización. Tal como las personas son únicas, así también las organizaciones son únicas a su propio modo, cada una tiene  una personalidad e infraestructura propias. Una empresa podría disciplinarse y alcanzar un nivel alto de madurez en el proceso de diseño de software, mientras otra puede estar en las fases tempranas. Sin tener en cuenta la disciplina y la madurez, es muy importante entender la organización que se verá reflejada en la selección final.

INGENIERÍA CONCURRENTE.

      La Ingeniería concurrente como un medio de integración de expertos de cada área de la empresa en un grupo multidisciplinario conlleva una serie de problemas de control de información, pues al manejar una gran cantidad de información en el proceso de toma de decisiones, es imposible para los participantes de este proceso asimilar los conceptos expuestos por los demás.

Sistemas Expertos en la Ingeniería Concurrente
     Un sistema experto representa un medio de apoyo en la toma de decisiones, dependiendo de la complejidad de estos sistemas, pueden ayudar a niveles administrativos o técnicos. Los sistemas expertos son una recopilación de grandes cantidades de información (Data Warehouse) de forma tal que se tiene una gran cantidad de conocimiento en un solo medio integrado.

     La información contenida en el sistema es referente a cada departamento incluido en el proceso de desarrollo del producto. Aplicado a nuestro caso de estudio, el proceso de producción de un filtro para alberca podría hacer uso de un sistema experto como base para aplicar una metodología de ingeniería concurrente. Los componentes del sistema experto apoyarían el proceso de creación del filtro en todas las etapas, algunos posibles usos de los componentes del sistema experto en este proceso podrían ser los siguientes:

·         Marketing. Se podría contar una base de datos que se alimentara con datos introducidos por lo clientes a través de un sitio web hecho con páginas activas (ASP, JSP, PHP, CGI). Dichos datos podrían consistir en preferencias de los clientes con respecto a las dimensiones de los filtros, su calidad, su durabilidad o su precio. A través del sistema experto se podrían modelar consultas de atributos múltiples con el fin de conocer detalles relevantes del mercado interesado. Las consultas podrían acotar el mercado por edad, sexo, dirección o ingresos con el fin de tener estadísticas que nos dijeran donde vive la gran mayoría de compradores de filtros con el fin de especular sobre nuevos posibles clientes. En el sentido de captar las preferencias del cliente se han desarrollado metodologías que permiten conocer los deseos de los consumidores y transformar estos deseos, expresados en su lenguaje en un conjunto de especificaciones técnicas destinadas a satisfacerles. El QFD (Quality Function Development), es una metodología que en forma matricial nos permite recoger el QUÉ piden los clientes, el CÓMO vamos a responder a estas demandas y en CUÁNTO los vamos a satisfacer. Esta metodología aplicada en cascada a los distintos lenguajes de las distintas áreas de la empresa, nos permite conocer como interacciona entre sí y determinar posibles carencias o duplicidades en nuestro producto como en su valoración por los clientes.

·         Diseño. El sistema experto podría incluir herramientas de diseño asistido por computadora (CAD) con el fin de materializar las expectativas de los clientes y las aptitudes de la empresa en el diseño final. Esto se lograría implementando una base de datos histórica (Data Warehouse) con referencias al desarrollo de otros filtros con el fin de comparar problemas, inconvenientes o ventajas que se tuvieron al desarrollar dichos productos. De igual forma, para la parte de los clientes se podría implementar una interfaz inteligente entre el sistema CAD y la base de datos del marketing que generara un diseño base del filtro que implicara las preferencias más significativas de los clientes. A partir de este diseño, los expertos de cada área podrían empezar a buscar un punto de balance entre lo que el cliente quiere y lo que más le conviene a la empresa para así obtener un diseño final de nuestro filtro.
·         Producción.
·         Ventas.
Ventajas de utilizar un Sistema Experto en la IC
     Como se pudo apreciar con los ejemplos anteriores, los sistemas expertos propician la efectividad de la empresa en todos sus departamentos, al automatizar algunas de las tareas de la empresa y al concentrar toda la información competente al proceso de desarrollo del producto. De esta forma podemos apreciar las siguientes ventajas al usar los sistemas expertos en la ingeniería concurrente lo que generalmente se conoce como ingeniería concurrente asistida por computadora (CACE):
·         Información integrada. Este aspecto es el que persigue principalmente el sistema experto, pues se pretende juntar una gran cantidad de información que nos sirva de base para desarrollar nuestro producto. Esto promueve el hecho de que todos los participantes del equipo multidisciplinario tengan acceso a la información de los demás de manera previa, con el fin de que las juntas se lleven a cabo lo más rápido posible. La arquitectura del sistema experto podría diseñarse como una arquitectura cliente/servidor con el fin de que los participante puedan acceder la información en cualquier momento e inclusive al mismo tiempo.
·         Comunicación eficaz. La gran cantidad de información que se encuentra al alcance de los participantes del equipo, propicia que todos conozcan a cierto nivel el proceso de desarrollo visto desde el punto de vista cada departamento, con esto, se evitan discusiones sobre aspectos poco comprendidos en el proceso de diseño. Con el conocimiento general del proceso de desarrollo del producto, la comunicación se vuelve entonces más eficaz, pues cada participante conoce los inconvenientes y las ventajas que se tendrían para cada departamento en función de algún cambio en el diseño del producto.
·         Rápida toma de decisiones. Con la información integrada en un solo núcleo y con la agilización de la comunicación entre los participantes del proyecto, se obtiene una aceleración en la toma de decisiones, producto de tener un equipo de expertos en cada área pero conocen y comprenden a las demás.
     La Ingeniería Concurrente (IC) es una filosofía orientada a integrar sistemáticamente y en forma simultánea el diseño de productos y procesos, para que sean considerados desde un principio todos los elementos del ciclo de vida de un producto, desde la concepción inicial hasta su disposición final, pasando por la fabricación, la distribución y la venta. Debe otorgar además una organización flexible y bien estructurada, proponer redes de funciones apoyadas por tecnologías apropiadas y arquitecturas comunes de referencia (ej: computadores en red y en bases de datos).
     Retomando lo expuesto anteriormente la ingeniería concurrente es un esfuerzo sistemático para un diseño integrado, concurrente del producto y de su correspondiente proceso de fabricación y de servicio. Pretende que los desarrolladores, desde un principio, tengan en cuenta todos los elementos del ciclo de vida del producto, desde el diseño conceptual, hasta su disponibilidad incluyendo calidad, costo y necesidades de los clientes. Persigue un estudio sistemático, simultáneo, en el momento del desarrollo del producto, de las necesidades de mercado que va a cubrir, de los requisitos de calidad y costos, de los medios y métodos de fabricación, venta y servicio necesarios para garantizar la satisfacción del cliente.
     Involucra el trabajo coordinado y simultáneo de los diversos departamentos de la empresa: Marketing, Ingeniería del Producto, Ingeniería del Proceso, Producción, Calidad, Ventas, Mantenimiento, Costos, etc.
     La ingeniería concurrente sustituye el típico entorno de trabajo en el desarrollo y fabricación del producto basado en un diagrama secuencial de actuación de los distintos departamentos, por un trabajo concurrente, simultáneo, en equipo, de todos a partir del mismo momento en que se inicia el proceso.

BIBLIOGRAFÍA:

1.    AHMED, H.S. AI-Ashaab. [ngeniería Concurrente. Morelos, mayo de 1997.

2.    ARMANDO BARRERA COAPONGO “Evaluación de las Prácticas de Diseño y su Factibilidad de Implementación de un Ambiente de Ingeniería Concurrente en la Industria Mexicana”, México, D.F., diciembre de 1995.

3.    BIREN PRASAD “Concurrent Engineering Fundamentals”, Upper Saddle River, N.J., Prentice Hall 1996-1997.

4.    BROWNE J., HUNTY  I. , andJ. ZHANG. T/¡e Extended Enterprise. Galway, Ireland, 1997.

5.    ESPINOZA, RAFAEL. El Tiempo. «El drama del desempleo». Bogotá, 1 abril de 1999.

6.    HALL, D. Concurrent Engineering: dcfinitfons tenns and tecnlliqlles in Concurren! Engineering. IEEE Spectrum, julio de 1991.

7.    HARTLEY, JOHN R. Concurrellt Engineering. Industrial Newsletters Ltda"     Reino Unido, 1990.


9.    IDA, Institutefoy Defense Analysis. Report R-338. Bastan, Julio de 1986.

10. KRUGLIANSKAS, ISAK. Ingeniería Simultánea: Organización e implementación CIl¡?/Il empresas  brasileñas. Brasil 1993.

11. KRUGLIANSKAS, ISAK. [ngeniería Simultánea y Técnicas Asociadas en empresas.

12. LENGUAJES DE PROGRAMACIÓN, Soraya María, Alberto delgado, Alberto Rubio, Santiago Aira, Jesús Herrero y Luis Mozo.


Participante: Wolfgang Montero

INGENIERÍA CONCURRENTE

INGENIERÍA CONCURRENTE.
HISTORÍA.
      La gran realidad que no sólo vive nuestro país sino todos aquellos que no estaban preparados para la globalización que abiertamente se dio al inicio de la década del 90, ocasiono que el orden económico cambió y las empresas se vieron obligadas a competir en los mercados mundiales y a abandonar el provincialismo al que estaban acostumbradas por el esquema proteccionista que hasta ese momento se venía aplicando.
    El incremento de la competencia y la incesante demanda del mercado, que pide innovaciones aceleradamente, son características del entorno actual, que exige a todos los sectores, especialmente a las compañías manufactureras, un cambio drástico hacia productos de alta calidad, de bajos costos y con tiempos de entrega mínimos. Por tanto, adoptar un enfoque orientado al cliente es la vía certera para lograr estas metas. La filosofía de Ingeniería Simultánea ha mostrado excelentes resultados en la mejora del desarrollo del producto en muchas compañías en diferentes países y sectores.
     No en vano empresas como Toyota, Honda, Mazda, Nissan o Matsushita en Japón; Chrysler, Ford, General Motors, Xerox o el Departamento de Defensa (000) en Estados Unidos; los grupos Wolkswagen, Rover, Perkins Engines oFiatenEuropa; el grupo Vitro, Pond's, o Fammasa en México; Equipos Clark Metal Leve!, Cofap o Freios Varga en Brasil, entre otras, y todas ellas consideradas de excelencia mundial, han integrado la Ingeniería Simultánea en sus prácticas de gestión tecnológica, con excelentes resultados en cuanto a calidad y reducción en el costo, pero especialmente en la disminución del tiempo para llegar al mercado entre un 30 y 70%. Pero ¿qué es la Ingeniería Simultánea o Concurrente?
     La Ingeniería Concurrente, también llamada Ingeniería Simultánea (especialmente en Brasil, donde el término «concurrente» es asociado con competencia), Ingeniería Paralela, Ingeniería Total o Diseño Integrado de Producto, entre otros nombres, es una filosofía que incide directamente sobre la cultura de las organizaciones y replantea la forma convencional de trabajar los proyectos.
     El término de Ingeniería Concurrente surgió inicialmente en el verano de1986 cuando fue utilizado en el reporte R-338 del Innstitute for Defense Analysis (IDA) y es una de las definiciones más universalmente aceptadas: "Un esfuerzo sistemático para un diseño integrado, concurrente del producto y de su correspondiente proceso de fabricación y servicio.”
CONCEPTO:
     La Ingeniería Concurrente (IC) es una filosofía orientada a integrar sistemáticamente y en forma simultánea el diseño de productos y procesos, para que sean considerados desde un principio todos los elementos del ciclo de vida de un producto, desde la concepción inicial hasta su disposición final, pasando por la fabricación, la distribución y la venta. Debe otorgar además una organización flexible y bien estructurada, proponer redes de funciones apoyadas por tecnologías apropiadas y arquitecturas comunes de referencia (ej: computadores en red y en bases de datos).
     Retomando lo expuesto anteriormente la ingeniería concurrente es un esfuerzo sistemático para un diseño integrado, concurrente del producto y de su correspondiente proceso de fabricación y de servicio. Pretende que los desarrolladores, desde un principio, tengan en cuenta todos los elementos del ciclo de vida del producto, desde el diseño conceptual, hasta su disponibilidad incluyendo calidad, costo y necesidades de los clientes. Persigue un estudio sistemático, simultáneo, en el momento del desarrollo del producto, de las necesidades de mercado que va a cubrir, de los requisitos de calidad y costos, de los medios y métodos de fabricación, venta y servicio necesarios para garantizar la satisfacción del cliente.
     Involucra el trabajo coordinado y simultáneo de los diversos departamentos de la empresa: Marketing, Ingeniería del Producto, Ingeniería del Proceso, Producción, Calidad, Ventas, Mantenimiento, Costos, etc.
     La ingeniería concurrente sustituye el típico entorno de trabajo en el desarrollo y fabricación del producto basado en un diagrama secuencial de actuación de los distintos departamentos, por un trabajo concurrente, simultáneo, en equipo, de todos a partir del mismo momento en que se inicia el proceso.
          Esta metodología de trabajo se conoce también como:
·         Ingeniería simultánea
·         Equipos de diseño
·         Desarrollo integrado de producto
·         Ingeniería total

Objetivos

     Para alcanzar los objetivos la IC utiliza una serie de principios, los cuales son empleados en un enfoque sistematizado y están relacionados con la introducción de cambios culturales, organizacionales, y tecnológicos en las compañías, a través de una serie de una serie de metodologías, técnicas y tecnologías de información.
     Los objetivos globales que se persiguen con la implementación de la IC son:
1. Acortar los tiempos de desarrollo de los productos.
2. Elevar la productividad.
3. Aumentar la flexibilidad.
4. Mejor utilización de los recursos.
5. Productos de alta calidad.
6. Reducción en los costos de desarrollo de los productos.
7. Establecer conocimiento y cultura de Ingeniería Concurrente
8. Integrar los departamentos de la empresa
9. Asegurar el cumplimiento de los requerimientos y expectativas del cliente

Principales orientaciones de la Ingeniería Concurrente
     La Ingeniería Concurrente es un nuevo enfoque que está en pleno proceso de desarrollo. Incorpora una gran variedad de nuevas concepciones y metodologías en relación con proyectos. Algunos de ellos son:
·         DFF: Diseño para la función
·         DFM: Diseño para la fabricación
·         DFA: Diseño para el montaje
·         DFQ: Diseño para la calidad
·         DFMT: Diseño para el mantenimiento
     Estas metodologías, y otras más, pueden englobarse en dos orientaciones principales:
·         Ingeniería Concurrente en relación a la Productividad (Fabricación, costo, calidad, comercialización)
·         Ingeniería en relación al entorno (Ergonómica, Seguridad, Medio Ambiente, reciclaje)
     La Ingeniería Concurrente en relación a la productividad postula dos grandes principios:
1.     El diseño de un producto precisa tener en cuenta el mercado al que se dirige.
2.     El diseño de un producto debe tener en cuenta los procesos de fabricación.
     Entonces, en el equipo de diseño debe participar:
·         El Departamento de Marketing y los clientes para asegurar que el producto responda a las necesidades de los clientes.
·         El Departamento de Producción, proveedores incluidos, para asegurar la posibilidad de fabricación del producto.
·         El Departamento de Calidad para asegurar que el producto y proceso están dentro de los valores de calidad necesarios.
La Ingeniería Concurrente en relación al entorno busca mejorar el valor, la aceptación del producto, teniendo en cuenta:
·         Ergonomía para facilitar la relación hombre-máquina
·         Diseño industrial para hacer atractivo el producto a los clientes.
·         Seguridad para evitar riesgos y daños personales.
·         Medio ambiente para economizar consumo de material y energía y evitar la emisión de contaminantes.
·         Reciclaje para facilitar la reutilización o eliminación de los residuos.
Necesidades que cubre la Ingeniería Concurrente.
     La globalización de los mercados implica una competencia cada vez más feroz. Sólo las empresas capaces de ofrecer los productos de mejor calidad en precio adecuado y en un tiempo más corto sobreviven.
     El reducir el tiempo de respuesta, la adecuación del producto a las necesidades del cliente, un mantenimiento eficaz, a bajo precio, un estándar de calidad y costo adecuado son los objetivos que pretende cubrir la Ingeniería Concurrente.
Líneas de actuación en la Ing. Concurrente.
     La Ingeniería Concurrente genera un nuevo entorno de trabajo. Utiliza una gran variedad de tecnología y metodología que pueden agruparse en cuatro líneas de actuación:
·         Organización
·         Comunicaciones
·         Especificación
·         Desarrollo de producto
1.- Organización.
     Busca la creación de equipos de trabajo multifuncionales y pluridisciplinarios para el desarrollo de un proyecto.  Es importante estar consiente de que el cambio de una organización funcional con jerarquías a una estructura por equipos de trabajo requiere de técnicas y métodos de motivación, de trabajo en equipo, de consenso en la toma de decisiones, de delegación y asunción de responsabilidades, de dirección, planificación y seguimiento de proyectos, de dirección de reuniones y lo que es más difícil de conseguir, un lenguaje común que elimine el lenguaje técnico de las diferentes especialidades.
     Para llevar acabo la implementación de las técnicas descrita anteriormente debemos considerar que las personas que colaborarán dentro del equipo de trabajo pertenecen a diferentes áreas de la empresa. Se tendrá que fomentar una comunicación constante entre ellos a través de juntas semanales, en las cuales se tomen decisiones y se deleguen responsabilidades, turnándose cada semana un representante de cada departamento. En nuestro caso, esto mejorará mucho la situación actual en la que los representantes de departamento son siempre los mismos y abusan de la jerarquía que se les ha otorgado.
     Se hará una planificación en base a información proporcionada por ventas y mercadotecnia, la cual será respetada sin tomar en cuenta casos especiales. El plan de producción de los filtros se hará tomando en cuenta el orden de pedido de los diferentes clientes sin importar la supuesta urgencia de uno u otro caso. Los empleados serán tratados por igual entre todos los departamentos sin importar el cargo, se utilizará un lenguaje simple que permita a cualquier persona entender lo que se esta planteando y poder participar. En caso de que se requiera el uso del lenguaje técnico se deberá definir el concepto para evitar que algunos de los presentes en la reunión mal interpreten o reciban información errónea lo cual entorpece la toma de decisiones.
2.- Comunicaciones
     El éxito de la Ingeniería Concurrente se basa en que exista una misma información para los distintos componentes del equipo, es decir, un lenguaje estandarizado.
     Es esencial tener una base de datos del producto, tanto geométricos como alfanuméricos, y de fácil acceso. Para esto, los sistemas de CAD-CAE-CAM pueden ser una buena opción.
     Los softwares de planificación de proyectos pueden proporcionar un buen sistema de monitoreo y seguimiento, sin embargo, es importante contar con un flujo eficiente y corto de información, para tomar las decisiones suficientemente rápido. Para lograr esto, se debe dar un cambio de estructuras jerárquicas de muchos niveles a otras estructuras más planas con líneas horizontales de comunicación y decisión.
     El hecho de involucrar a la computadora dentro de la Ingeniería Concurrente le ha dado el nombre de Ingeniería Concurrente Asistida por Computadora (Computer Aided Concurrent Engineering, CACE)
     Para realizar un sistema de Ingeniería Concurrente Asistido por Computadora es necesario contar con los siguientes elementos:
  Modelado de Información, que se relaciona con la identificación y composición de los datos, información y conocimiento que describe por completo un objeto real y permite la construcción de modelos de información que apoyen las necesidades de formación del ciclo de vida del producto.
Existen dos áreas complementarias:
  Representación de la información del producto: Es el modelado de la información asociada con un producto y sus componentes a través de su ciclo de vida.
  Representación de la información del proceso de manufactura: Es el modelado de información de los recursos de manufactura, procesos, características y capacidades en una empresa.
  Aplicaciones de ingeniería integradas (o aplicaciones de apoyo a la decisión), son las aplicaciones relacionadas a la implementación e integración de un conjunto de herramientas de software para atacar un diseño específico, problemas de ingeniería o manufactura que ayudarán a la realización del producto.
  Arquitectura del sistema de información, es la arquitectura que permite la integración de los dos modelos de información y de las aplicaciones de ingeniería integrada dentro de un ambiente amigable para el usuario.
3.- Especificaciones
     La Ingeniería Concurrente ha ampliado el concepto de especificación. De una relación de parámetros técnicos de diseño ha pasado a ser un conjunto de atributos que debe tener el producto para satisfacer las necesidades o preferencias de los clientes.
·         Problema Informativo de la Ingeniería Concurrente
La Ingeniería concurrente surge como una metodología que pretende resolver los aspectos más problemáticos en el desarrollo de un producto o servicio. Estos problemas atienden al hecho de que tradicionalmente se contaba con núcleos aislados que se encargaban de cada etapa de desarrollo del producto, lo que impactaba al producto en el sentido de costos, calidad y satisfacción del cliente y de los departamentos de la empresa.
La Ingeniería concurrente como un medio de integración de expertos de cada área de la empresa en un grupo multidisciplinario conlleva una serie de problemas de control de información, pues al manejar una gran cantidad de información en el proceso de toma de decisiones, es imposible para los participantes de este proceso asimilar los conceptos expuestos por los demás.
·         Sistemas Expertos en la Ingeniería Concurrente
     Un sistema experto representa un medio de apoyo en la toma de decisiones, dependiendo de la complejidad de estos sistemas, pueden ayudar a niveles administrativos o técnicos. Los sistemas expertos son una recopilación de grandes cantidades de información (Data Warehouse) de forma tal que se tiene una gran cantidad de conocimiento en un solo medio integrado.
     La información contenida en el sistema es referente a cada departamento incluido en el proceso de desarrollo del producto. En algunos casos podría hacer uso de un sistema experto en el proceso de producción como base para aplicar una metodología de ingeniería concurrente. Los componentes del sistema experto apoyarían el proceso de creación de producción en todas las etapas, algunos posibles usos de los componentes del sistema experto en este proceso podrían ser los siguientes: Marketing, Diseño, Producción y Ventas.
4.- Desarrollo del producto.
     En el desarrollo del producto la Ingeniería Concurrente utiliza un gran número de metodologías para conseguir sus objetivos de productividad, calidad, costo y funcionalidad. A partir de la especificación del producto se comienzan a generar soluciones, para esto se utilizan:
     Métodos convencionales: Bibliografía, patentes, competencia, productos análogos, etc.
     Métodos intuitivos: Brainstorming (lluvia de ideas), DELPHI, Idea Writting y Grupos Nominales.
     Métodos deductivos: Estudios sistemáticos de procesos físicos.
     Para la valoración de las distintas variantes y selección de los más apropiados existen diferentes métodos. Estimación cualitativa o cuantitativa de diferentes parámetros: funciones, costos de la innovación, riesgos, etc... pero quizás la metodología más interesante es la del Análisis del Valor.
     En el diseño de materialización del proyecto se utilizarán distintas técnicas de análisis y simulación que se incluyen dentro de los softwares de CAD-CAE.
     Para estandarizar, tanto componentes como procesos de fabricación se utilizará la Tecnología de Grupos. Para asegurar la calidad se construyen prototipos y bancos de ensayo en laboratorio y se usan técnicas de pruebas aceleradas. Se utiliza también el diseño de experimentos basado en los trabajos de G. Taguchi para obtener diseños más robustos.
     Para aumentar la productividad en los talleres la Ingeniería Concurrente utiliza técnicas de simulación de procesos, de programación de máquinas automáticas de fabricación flexible, de robotización, de automatización de la manutención y transporte, de reducción de tiempos muertos y de preparación, sin olvidar las técnicas de gestión de la producción, y ahorro de recursos materiales, energía, mano de obra, espacio, etc.
LENGUAJE DE PROGRAMACIÓN.

Concepto.
     Los programas indican al ordenador qué tienes que hacer, y éste únicamente realiza las operaciones que el programa incluye. Un programa y las sentencias que lo constituyen se construyen con unos símbolos, y de acuerdo con unas reglas, que constituyen la gramática del lenguaje de programación.

     Se puede definir un lenguaje de programación como el conjunto de símbolos y de reglas para combinarlos, que se usan para expresar algoritmos. Los lenguajes de programación a semejanza de los lenguajes que usan los humanos para comunicarse, poseen un léxico (vocabulario o conjunto de símbolos permitidos), una sintaxis que indica cómo realizar construcciones del lenguaje y una semántica que determina el significado de cada construcción correcta.

Historia y evolución de los lenguajes de programación.
     Los primeros lenguajes de programación surgieron de la idea de Charles Babagge, la cual se le ocurrió a este hombre a mediados del siglo XIX. Consistía en lo que él denominaba la maquina analítica, pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizó programas para aquélla supuesta maquina de Babagge, en tarjetas perforadas. En cuanto se empezó a programar, los programadores utilizaron las técnicas diseñadas por Charles Babagge, y Ada, que consistían entre otras, en la programación mediante tarjetas perforadas.

Paradigmas de programación.
􀁹 Definición Teórica
Un paradigma está constituido por los supuestos teóricos generales, las leyes y las técnicas para su aplicación que adoptan los miembros de una determinada comunidad científica.
Paradigmas de Programación: Representan un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro sino que cada uno tiene ventajas y desventajas. También hay situaciones donde un paradigma resulta más apropiado que otro.

􀁹 Tipos de Paradigmas de Programación
1. Paradigmas Imperativo:
Son aquellos que facilitan los cálculos por medio de cambios de estado, entendiendo como estado la condición de una memoria de almacenamiento. Los lenguajes estructurados en bloques, se refieren a los ámbitos anidados, es decir los bloques pueden estar anidados dentro de otros bloques y contener sus propias variables. La RAM representa una pila con una referencia al bloque que está actualmente activo en la parte superior.

Paradigma Heurístico: Define un modelo de resolución de problemas en el que se incorpora algún componente heurístico, sobre la base de una representación más apropiada de la estructura del problema, para su resolución con técnicas heurísticas.
Paradigma concurrente: La programación distribuida ha sido dividida en dos amplias categorías, sistemas acoplados en forma débil o fuerte. El término distribuido se refiere por lo general a lenguajes para sistemas acoplados débilmente que soportan un grupo de programadores trabajando en un programa particular de manera simultánea y comunicándose a través de paso de mensajes mediante un canal de comunicación. Un sistema acoplado fuertemente permite que más de un proceso en ejecución tenga acceso a la misma ubicación de memoria. Un lenguaje acoplado con el sistema debe sincronizar el uso compartido de la memoria, de modo que solo un proceso escriba una variable compartida a la vez, y de modo que un proceso pueda esperar hasta que ciertas condiciones se satisfagan por completo antes de continuar la ejecución. La memoria compartida tiene la ventaja de la velocidad, por que no se necesita pasar mensajes.
2. Paradigmas Procedimentales:
     Modelos de Desarrollo: Orientado a Objetos, a Eventos, y a Agentes. Secuencia computacional realizada etapa a etapa para resolver el problema. Su mayor dificultad reside en determinar si el valor computado es una solución correcta del problema.
3. Paradigmas Declarativos:
     Modelos de Desarrollo: Funcional, Lógico y de Flujo de Datos. Se construye señalando hechos, reglas, restricciones, ecuaciones, transformaciones y otras propiedades derivadas del conjunto de valores que configuran la solución.
4. Paradigmas Demostrativos:
     Modelos de Desarrollo: Genético. Cuando se programa bajo un paradigma demostrativo (también llamada programación por ejemplos), el programador no especifica procedimentalmente cómo construir una solución sino que presentan soluciones de problemas similares.
5. Paradigmas Funcional:
     Modelo matemático de composición funcional donde el resultado de un cálculo es la entrada del siguiente, y así sucesivamente hasta que una composición produce el valor deseado.
6. Paradigma Orientado a Objeto:
     Disciplina de ingeniería de desarrollo y modelado de software que permite construir más fácilmente sistemas complejos a partir de componentes individuales. Objetos + Mensajes = Programa.
     En teoría, no se puede decir que este mal relacionar un paradigma con un modelo aunque puede dar lugar a alguna confusión, es natural que los lenguajes de programación puros nos establecen paradigmas claros (C, Haskell, Smalltalk, Prolog), pero también nos confunden los lenguajes híbridos al incorporar a sus nuevas versiones paradigmas o seudoparadigmas nuevos (C++, Visual Fox, Builder, Scheme, Lisp).
Algunas clasificaciones de los lenguajes de programación.

LENGUAJE MÁQUINA:
     El lenguaje máquina es el único que entiende directamente la computadora, ya que esta escrito en lenguajes directamente inteligibles por la máquina), utiliza el alfabeto binario, que consta de los dos únicos símbolos 0 y 1, denominados bits. Sus instrucciones son cadenas binarias que especifican una operación y, las posiciones de memoria implicadas en la operación se denominan instrucciones de máquina o código maquina. Fue el primer lenguaje utilizado en la programación de computadoras, pero dejo de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores. Generalmente, en la codificación de los programas se empleaba el sistema hexadecimal para simplificar el trabajo de escritura. Todas las instrucciones preparadas en cualquier lenguaje máquina tienen por lo menos dos partes. La primera es el comando u operación, que dice a las computadoras cual es la función que va a realizar.

LENGUAJES DE BAJO NIVEL (ensamblador):
     Son más fáciles de utilizar que los lenguajes máquina, pero al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. El lenguaje ensamblador es el primer intento de sustituir el lenguaje maquina por otro más similar a los utilizados por las personas. A principios de la década de los 50 y con el fin de facilitar la labor de los programadores, se desarrollaron códigos mnemotécnicos para las operaciones y direcciones simbólicas. Los códigos mnemotécnicas son los símbolos alfabéticos del lenguaje maquina. La computadora sigue utilizando el lenguaje maquina para procesar los datos, pero los programas ensambladores traducen antes los símbolos de código a lenguaje maquina. Estos programas de ensamble o ensambladores permiten a la computadora convertir las instrucciones en lenguaje ensamblador del programador en su propio código maquina.
     Un programa de instrucciones escrito en lenguaje ensamblador por un programador se llama programa fuente. Después de que el ensamblador convierte el programa fuente en código maquina a este se le denomina programa objeto. Para los programadores es más fácil escribir instrucciones en un lenguaje ensamblador que en código de lenguaje maquina.
     Un modo más fácil de comprender el código máquina es dando a cada instrucción un mnemónico, como por ejemplo STORE, ADD o JUMP.
Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son, a menudo, difíciles de aprender. Más importante es el hecho de que los programas escritos en un bajo nivel sean altamente específicos de cada procesador.
     Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran básicamente en aplicaciones de tiempo real, control de procesos y de dispositivos electrónicos.

LENGUAJES DE ALTO NIVEL:
     Estos lenguajes son los mas utilizado por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensamblador. Un programa escrito en lenguaje de alto nivel es independiente de la máquina. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.
     Son lenguajes de programación en los que las instrucciones enviadas para que el ordenador ejecute ciertas órdenes son similares al lenguaje humano. Dado que el ordenador no es capaz de reconocer estas órdenes, es necesario el uso de un intérprete que traduzca el lenguaje de alto nivel a un lenguaje de bajo nivel que el sistema pueda entender.
    Por lo general se piensa que los ordenadores son máquinas que realizan tareas de cálculos o procesamiento de texto. La descripción anterior es sólo una forma muy esquemática de ver una computadora. Hay un alto nivel de abstracción entre lo que se pide a la computadora y lo que realmente comprende. Existe también una relación compleja entre los lenguajes de alto nivel y el código máquina.
     Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, el lenguaje de alto nivel más conocido, los comandos como “IF CONTADOR=10 THEN STOP” pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a diez.
     Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática.
     Los lenguajes de alto nivel, también denominados lenguajes evolucionados, surgen con posterioridad a los anteriores (lenguaje máquina, lenguajes de bajo nivel o ensamblador) con los siguientes objetivos, entre otros:
     Lograr independencia de la maquina, pudiendo utilizar un mismo programa en diferentes equipos con la única condición de disponer de un programa traductor o compilador, que es suministrado por el fabricante, para obtener el programa ejecutable en lenguaje binario de la maquina que se trate. Además, no se necesita conocer el hardware especifico de dicha maquina. Aproximarse al lenguaje natural, para que el programa se pueda escribir y leer de una forma más sencilla, eliminando muchas de las posibilidades de cometer errores que se daban en el lenguaje maquina, ya que se utilizan palabras (en ingles) en lugar de cadenas de símbolos sin ningún significado aparente.
      Incluir rutinas de uso frecuente, como las de entrada / salida, funciones matemáticas, manejo de tablas, etc., que figuran en una especie de librería del lenguaje, de manera que se puedan utilizar siempre que se quiera sin necesidad de programarlas cada vez.

Ventajas de los lenguajes de alto nivel:
     El tiempo de formación de los programadores es relativamente corto comparado con otros lenguajes. La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos, nombres de las instrucciones tales como READ, WRITE, PRINT, OPEN, etc. Las modificaciones y puestas a punto de los programas son más fáciles. Reducción del costo de los programas. Transportabilidad. Permiten tener una mejor documentación. Son más fáciles de mantener.

Desventajas de los lenguajes de alto nivel:
     Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo. No se aprovechan los recursos internos de la maquina que se explotan mucho mejor en lenguajes máquina y ensambladores. Aumento de la ocupación de memoria. El tiempo de ejecución de los programas es mucho mayor.
     Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la gran cantidad de ellos que existen actualmente en uso, además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.
     Es difícil establecer una clasificación general de los mismos, ya que en cualquiera que se realice habrá lenguajes que pertenezcan a más de uno de los grupos establecidos. Una clasificación muy extendida, atendiendo a la forma de trabajar de los programas y a la filosofía con que fueron concebidos, es la siguiente:
Lenguajes imperativos. Utilizan instrucciones como unidad de trabajo de los programas (Cobol, Pascal, C, Ada).
Lenguajes declarativos. Los programas se construyen mediante descripciones de funciones o expresiones lógicas (Lisp, Prolog).
Lenguajes orientados a objetos. El diseño de los programas se basa más en los datos y su estructura. La unidad de proceso es el objeto y en el se incluyen los datos (variables) y las operaciones que actúan sobre ellos (Smalltalk, C++).
Lenguajes orientados al problema. Diseñados para problemas específicos, principalmente de gestión, suelen ser generadores de aplicaciones.
Lenguajes naturales. Están desarrollándose nuevos lenguajes con el principal objetivo de aproximar el diseño y construcción de programas al lenguaje de las personas.
   
     Otra clasificación que se puede hacer es la de atendiendo al desarrollo de los lenguajes desde la aparición de las computadoras, que sigue un cierto paralelismo con las generaciones establecidas en la evolución de las mismas:
Primera generación. Lenguajes maquina y ensambladores.
Segunda generación. Primeros lenguajes de alto nivel imperativo (FROTRAN,
COBOL).
Tercera generación. Lenguajes de alto nivel imperativo. Son los más utilizados y siguen vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA).
Cuarta generación. Orientados básicamente a las aplicaciones de gestión y al manejo de bases de datos (NATURAL, SQL).
Quinta generación. Orientados a la inteligencia artificial y al procesamiento de los lenguajes naturales (LISP, PROLOG).

BIBLIOGRAFÍA:

1.    AHMED, H.S. AI-Ashaab. [ngeniería Concurrente. Morelos, mayo de 1997.

2.    ARMANDO BARRERA COAPONGO “Evaluación de las Prácticas de Diseño y su Factibilidad de Implementación de un Ambiente de Ingeniería Concurrente en la Industria Mexicana”, México, D.F., diciembre de 1995.

3.    BIREN PRASAD “Concurrent Engineering Fundamentals”, Upper Saddle River, N.J., Prentice Hall 1996-1997.

4.    BROWNE J., HUNTY  I. , andJ. ZHANG. T/¡e Extended Enterprise. Galway, Ireland, 1997.

5.    ESPINOZA, RAFAEL. El Tiempo. «El drama del desempleo». Bogotá, 1 abril de 1999.

6.    HALL, D. Concurrent Engineering: dcfinitfons tenns and tecnlliqlles in Concurren! Engineering. IEEE Spectrum, julio de 1991.

7.    HARTLEY, JOHN R. Concurrellt Engineering. Industrial Newsletters Ltda"     Reino Unido, 1990.


9.    IDA, Institutefoy Defense Analysis. Report R-338. Bastan, Julio de 1986.

10. KRUGLIANSKAS, ISAK. Ingeniería Simultánea: Organización e implementación CIl¡?/Il empresas  brasileñas. Brasil 1993.

11. KRUGLIANSKAS, ISAK. [ngeniería Simultánea y Técnicas Asociadas en empresas.

12. LENGUAJES DE PROGRAMACIÓN, Soraya María, Alberto delgado, Alberto Rubio, Santiago Aira, Jesús Herrero y Luis Mozo.


Participante: Wolfgang Montero