EN ESTA ENTREGA


La Propuesta Inicial

Empecemos...

Por Rubby Casallas
Coordinadora Grupo Construcción de Software
Facultad de Ingeniería - Departamento de Sistemas
Universidad de los Andes

La red de Ingeniería de Software de Colombia RISCO pretende reunir un grupo de profesores/investigadores interesados en estar en constante actualización de prácticas, tendencias, metodología y tecnología referentes a la construcción de software de calidad con el fin de mejorar la enseñanza de la ingeniería de software en Colombia.

¿ Por qué crear RISCO ?

Porque somos conscientes del potencial que la industria de software representa para nuestro país y del papel primordial que en este procesos de consolidación deben las facultades de sistemas.

Misión

La misión de RISCO es mejorar la calidad de la práctica y enseñanza de la Ingeniería de Software en Colombia en búsqueda de una industria de software nacional con proyección internacional.

Visión

La visión es ser el principal eje de divulgación de información, estrategias y tecnologías en Ingeniería de Software de Colombia colocándose a la altura de redes similares de nivel internacional.

Objetivos

Los objetivos se pueden organizar en cuatro dimensiones complementarias:

Divulgación: RISCO debe ser un medio de divulgación de información referente a procesos, avances y tecnologías desarrolladas dentro de la comunidad de ingeniería de software en el mundo.

Apoyo Académico: Un objetivo fundamental de RISCO es mejorar la enseñanza de la Ingeniería de Software brindando apoyo académico a las Universidades.

Investigación y Desarrollo: La dimensión de investigación y desarrollo es muy importante para cumplir la misión de RISCO de mejorar la práctica de la Ingeniería de software para apoyar la industria nacional. El objetivo principal en esta dimensión es el acercamiento de la Universidad y las empresas para lograr una sinergia que nos permita estar más al tanto de los problemas industriales y propiciar una transferencia adecuada y oportuna.

Representatividad: RISCO con su pretensión de agrupar todas las universidades del país que trabajan en el área de Ingeniería de Software tiene como objetivo ser el interlocutor oficial ante entidades como:

  • Icfes
  • Colciencias
  • Fedecolsoft
  • Secretaria de informática de la presidencia
  • Planeación Nacional
  • Ministerio de comunicaciones e informática
  • otras entidades privadas y oficiales interesadas en el tema


La Iniciativa RISCO

Hacia la Cooperación Universitaria

Por Rafael J. Barros
Director Centro de Investigación, Desarrollo y Consultoría Sirio
Facultad de Ingeniería - Departamento de Sistemas
Fundación Universitaria San Martín

1997 se puede definir como el año de la inquietud en ingeniería de Software. Existe una gran preocupación por todos los temas de calidad y un gran interés en que se haga consistencia en la importancia de estos temas.

El sector privado está tratando de buscar una solución integral que pueda colocar la industria de software como un sector importante dentro de la economía. Se han realizado investigaciones y misiones a otros países como la India, Alemania, Chile, Canadá y Estados Unidos, entre otros, tratando de buscar una luz que permita aprovechar la experiencia de los paises desarrolladores y aplicarla a nuestra realidad.

Un resultado concreto de todo este trabajo es la reciente creación de la Federación Colombiana de Software FEDECOLSOFT.

Por su parte el gobierno está trabajando intensamente en el Plan Nacional de Informática el cual presentará los lineamientos para los próximos años del futuro de la Electrónica, Telecomunicaciones e Informática  (ETI) en nuestro pa'is, con una participaci'on interesante de todos los sectores.

El salón de Informática, en el marco de Compuexpo, trató el tema de Calidad y Procesos de Software, trayendo invitados de la universidad de Carnegie Mellon y los expositores más importantes en los temas de Ingeniería de Software.

Por su parte el sector académico muestra igualmente su interés en los temas de actualización tecnológica, procesos de software con continuas revisiones de los currículos de sus programas de pregrado, especializaciones, posgrado y educación continuada.

Por otra parte, se logró concretar la iniciativa de conformar un grupo de trabajo cooperativo por parte de los miembros de los grupos de Ingeniería de Software de varias universidades del país. Este grupo denominado RISCO pretende compartir experiencias y mejorar la calidad de la práctica y enseñanza de la Ingeniería de Software en Colombia en busqueda de una industria de software nacional con proyección internacional.

Esta iniciativa, importante dentro de los medios académicos pretende reunir el trabajo realizado de manera inidividual por cada uno de los docentes encargados del área de Ingeniería de Software de las facultades de sistemas y/o computación del país. Se puede ver como una inversión en la cual los profesores pueden compartir materiales e ir enriqueciendo cada uno de sus cursos.

La importancia de la Ingeniería de Software (IS), la gran diversidad de temas involucrados, la constante evolución tecnológica y los grandes volúmenes de información hace imposible estar enterado de todo lo que está pasando en el tema de IS. Es necesaria la existencia de grupos especializados que estén al tando de los avances de su respectiva área y estos se encarguen de divulgarla al resto del grupo.


Hoy el problema no es obtener la información, es la capaciada de procesarla, entenderla, apropiarla o descartarla la que se hace difícil por el volúmen de la misma.

Dentro de los temas de interés en el área tenemos :

  • Administración de Configuraciones
  • Administración de Proyectos de Software
  • Administración de Requerimientos de Software
  • Aseguramiento de Calidad
  • Ciclos de Vida
  • Diseño Cliente / Servidor
  • Diseño de esfuerzo, tamaño y costo
  • Herramienta CASE
  • Herramientas para Ingeniería de Software
  • Industria de Software
  • Interacción Hombre - Máquina
  • Manejo de Riesgo
  • Métodos de Diseño
  • Métodos Formales
  • Métodos Orientados por Objetos
  • Métricas e Indicadores
  • Patrones de Software
  • Personal Software Process
  • Planeación de proyectos de Software
  • Procesos de Software
  • Reutilización de Software
  • Software por Componentes
  • Téncias de Análisis
  • Técnicas de Pruebas
  • Técnicas de Reingeniería
  • Trabajo en grupo

La idea de los miembros de RISCO es elaborar y recolectar material de apoyo a la docencia, conocer las habilidades de los docentes y poder compartir de esta manera nuestro ya difícil trabajo. Aplicando una de las técnicas más famosas en desarrollo de software: "divide y vencerás"

En general, la iniciativa de RISCO es simplemente una forma de colaborar con colegas en la misma área, distribuir un poco el trabajo de adquisición de conocimiento de tal manera que la red se vuelv un instrumento de investigación útil para cada uno de sus integrantes.

El éxito de RISCO depende del nivel de coordinación y cooperación de cada uno de nosotros. Tenemos que apoyar esta iniciativa que al final será para el beneficio de sus integrantes.


El siguiente paso...

Y ahora que hacemos

Por Rafael J. Barros
Director Centro de Investigación, Desarrollo y Consultoría Sirio
Facultad de Ingeniería - Departamento de Sistemas
Fundación Universitaria San Martín

El paso a continuaci'on es buscar un área de interés de las cuatro propuestas en la propuesta inicial, y seleccionar los temas de interés o en los culaes se sienten que pueden aportar más, para hacer una lista de perfiles de Ingeniería de Software para publicación en el boletín de Noviembre.

Necesitamos colaboración para ofrecer más información en la página Web y una mayor participación en la lista de correo RISCO. no hay necesidad de hacer trabajo extra, nos interesa saber los temas de interés en Ingeniería de Software, qué se está dictando, las tendencias y cómo es la visión.

Sería interesante ver discusiones en la lista... generalmente los puntos de vista diferentes enriquecen el conocimiento.

me gustaría adicionar una sección de puntos de vista sobre un tema diferente cada mes. la propuesta para el mes de Noviembre es el Tema de Procesos de Software. Las contribuciones las pueden mandar a rbarros@sanmartin.edu.co


Plan de Proyectos

5...4...Silencio... 2... 1... !Acción!

Por Rubby Casallas
Coordinadora Grupo Construcción de Software
Facultad de Ingeniería - Departamento de Sistemas
Universidad de los Andes

Los siguientes proyectos han sido definidos alrededor de lso objetivos y estrategias definidos por RISCO en el documeno RISCO - Definición de agosto de 1997.

1. Apoyo Académico

    Los siguientes proyecots van encaminados a mejorar la enseñanza de la Ingeniería de Software, ya sea en cursos específicos sobre el tema o en aspectos para ser incluidos a lo largo de los cursos de la carrera.

    Entre las estrategias definidas para alcanzar este objetivo están la capacitación y actualización permanente de profesores y la elaboración de material de apoyo a la enseñanza así como la realización de talleres docentes.

1.1 Capacitación y actualización de docentes

    En nuestro medio, con frecuencia confundimos la ingeniería de software con simples cursos de aplicación de productos informáticos que no trascienden la selección, instalación y adaptación de tecnologías existentes en el mercado para ser utilizadas en alguna entidad. Asimismo, en las universidades no siempre reconocemos que la ingeniería de software va mucho más allá de una mera exposición discursiva sobre los diferentes métodos existentes para construir software y evitamos o relegamos a un segundo plano, la necesidad de promover actividades de aprendizaje y pr'actica grupal sostenidad y continua a lo largo del desarrollo del curriculum del programa de ciencias de la computación.

    La tarea de enseñar a producir software se constituye en un verdadero desafío por los múltiples aspectos que están involucrados en ella. En primera instancia, se requiere el esfuerzo adicional y simultáneo de que profesores y estudiantes realicen propuestas, investiguen y experimenten, trabajando en equipo para definir esquemas de cooperación, colaboración y sincronización entre todos los involucrados.

    Además, cada etapa del trabajo implica lograr una definición y diseños claros, precisos y metódicos, expresados en documentos que requieren un uso competente de lenguajes formales, lo cual permite llegar a la siguiente fase: la definición correcta de los procesos requeridos para el desarrollo del software. En cada aspecto se deben ir desarrollndo las herramientas que permitan realizar las tareas de manera profesional. Por otro lado, enseñar el tema requiere, además de lo anterior, habilidades y destrezas en el manejo de grupos en los cuales cada persona debe aprender de los propios errores y colaborar en la identificación de los errores de los demás, asumiendo responsabilidades individuales y compromisos con el grupo.

    El propósito de este proyecto de capacitación y actualización es el de realizar diversos seminarios - talleres sobre temas relacionados con los programs de sistemas y específicamente con la ingeniería de software. Estos seminarios deben ser un espacio de conocimiento y reflexión, frente a los desafíos acutales de la ingeniería de software y de los procesos de enseñanza - aprendizaje con miras a la generación de una cultura de construcción de software en sus respectivas institutciones en Colombia.

1.1.1 Objetivos globales del proyecto

    Evaluar y definir el curriculum de la carrera de sistemas relacionado con el área de Ingeniería de Software.

    Incluir en sus cursos de la carrera aspectos de Ingeniería de Software los temas tratados en los seminarios.

    Definir prácticas de los cursos de Ingeniería de Software utilizando amibentes adecuados siguiendo estándares internacionales de calidad.

    Fomentar en dichas prácticas, el trabajo en grupo y la interacción con los estudiantes.

1.1.2 Descripción

    Seminarios deonde se estudian contenidos de cursos, metodología de enseñanza, utilización de herramientas como apoyo a la enseñanza.

    Los seminarios están divididos en dos grupos. El primero pretende cubrir temas considerados básicos, según los diferentes estudios curriculares y los resultados del estudio realizado por la ACOFI sobre la carrera de sistemas. El segundo grupo pretende cubrir temas de más actualidad.


1.1.3 Seminarios de capacitación

    Áreas básicas de ciencias de la computación:

    • Enseñanza de la Programación
    • Estructuras de datos
    • Especificación de algoritmos
    • Compiladores
    • Eficiencia de algoritmos
    • Fundamentos de Ingeniería de Software
    • ....

1.1.4 Seminarios de actualización

    Tecnologías orientadas a objetos:

    • Desarrollo de software orientado-objeto
    • Programación orientada por objetos (C++,Java)
    • Ambientes y herramientas para el desarrollo de software orientado-objeto
    • Intranets/internets
    • Calidad de procesos de software
    • Reingeniería de programas
    • Administración de configuraciones
    • .....

1.2 Elaboración de material de apoyo para la enseñanza

Contar con buen material para apoyar la docencia es fundamental para garantizar su calidad. En el caso de las áreas relacionadas con la Ingeniería de Software este material de apoyo debe permitir que el estudiante por una parte, desarrolle su capacidad y fomente su creatividad para construir software y, por otra, lo haga siguiendo las pautas metodológicas y los estándares de calidad internacionales requeridos.

1.2.1 Enseñanza de la programación

El proyecto MULTIVERSIDAD propone la construcción de múltiples bibliotecas de software que funcionen en ambientes de programación multimedia (musicales, gráficos, procesadores de imagen y color) que hagan pleno uso de los recursos con que cuentan los computadoras hoy en día para atraer la atención y el interés del estudiante y le permitan reutilizar los componentes de dichas bibliotecas como cajas negras de una manera progresiva y sistemática.

Este enfoque permitir'a la enseñanza silmultánea de diferentes áreas del saber (música, principios estéticos, artes gráficas, temas en las diferentes ciencias exactas y naturales) y de los principios básicos y fundamentales de la ciencia de computación y en general de la informática.

Existen muchas artes y disciplinas con temas de alto contenido metódico y algorítmico que se prestarían para el doble propósito de enseñar los principios de la programación y construcción de software además de la introducción y culturización del estudiante en diferentes áreas del arte y el conocimiento.

Se trata de que con este enfoque, los estudiantes comiencen a construir aplicaciones significativas que los inciten a dar sus primeros pasos en acitividades creativas y de investigación en múltiples artes y disciplinas. Su tarea en un principio consistirá en combinar los componentes de las bibliotecas y ensamblar diferentes sistemas con ellos. A medida que los estudiantes progresen, se dará un proceso de apertura paulaina de las "cajas negras".Los estudiantes se sentirán inclinados e interesados en comenzar a mirar dentro de las componentes mismas. Por múltiples razones, esta estrategia de enseñanza dará lugar a una introducción a los retos y satisfacciones del desarrollo de software definitivamente superior a los ejemplos de juguete que tradicionalmente han constituido parte integral de los cursos de introducción a la construcción de software.

1.2.2 Taller de Software

El objetivo del taller de software es que los estudiantes construyan software de calidad siguiendo procesos definidos, medibles, evaluables y controlados. Para que esto sea posible, se requiere contar con material de apoyo que de soporte a las distintas actividades. Si se toma como marco de referencia las áreas claves de proceso definidas en el nivel 2 del CMM, el material de apoyo debe ayudar a ponerlas en práctica durante la construcción del software. Estas áreas son:

  • Administración de requerimientos
  • Planeación de proyectos
  • Seguimiento de proyectos
  • Administración de configuraciones
  • Aseguramiento de Calidad


1.2.3. - Laboratorio de estructuras de datos

El objetivo del Laboratorio de Estructuras de Datos (LED) es desarrollar un conjunto de herramientas computacionales de apoyo a la enseñanza de la programación en el tema de algorítmica de estructuras de datos en memoria principal. Estas herramientas soportan el manejo de vectores, matrices, listas encadenadas, pilas, colas, árboles binarios, árboles ordenados, árboles balanceados, árboles n-arios, grafos, tablas de hashing, etc.

Dicho laboratorio debe permitir animar los algoritmos de manejo de estructuras de datos, permitiendo al estudiante su visualización y comprensión. Este debe incluir: editor de texto, compilador del lenguaje, depurador gráfico, intérprete gráfico del código, generador gráfico de datos de prueba, tutoriales, herramientas de medición de tiempo, herramientas de validación de estilo, formateadores de texto, etc. Se espera que el estudiante pueda desarrollar cualquier rutina (iterativa o recursiva) de manejo de estructuras de datos y evaluar su funcionamiento de manera gráfica, para cualquiera de las estructuras de datos planteadas anteriormente.

1.2.4. - Tipos abstractos de datos

El estudio de tipos abstractos de datos (TADs) es fundamental en el aprendizaje de estructuras de datos y su utilización desde un punto de vista formal, con lo que se tiene la posibilidad de construir software correcto de manera sistemática. Los TADs pueden considerarse como módulos de programación independientes, consistentes en estructuras de datos provistas de operaciones que las manipulan. Su importancia es reconocida si se habla de programación modular o, más modernamente, de programación orientada por objetos.

El objetivo de este proyecto es desarrollar ManTa (Manejador de Tipos abstractos de datos) un ambiente de diseño que debe permitir la definición formal de un TAD, la verificación de propiedades semánticas interesantes de la estructura de datos subyacente y la implementación (automática y/o guiada por el usuario) del diseño en un lenguaje de programación. De esta forma se tendrá la posibilidad de generar código fuente de manera automática, manteniendo la semántica y corrección de las estructuras de datos cuyo diseño haya sido previamente verificado en el ambiente.

1.2.5. - Taller de patrones de arquitectura y diseño

La Biblioteca Real de Software: Haciendo realidad la utopía de la Reutilización de programas.

La reutilización es una condición indispensable para cualquier concepto de progreso en software. De ninguna manera una condición suficiente pero sí, una sin la cual las otras: mejores métodos, mejores herramientas de desarrollo, hardware más rápido, enfoques más formales, técnicas superiores de administración no pueden satisfacer sus promesas. Mientras los constructores de software continúen consumiendo su tiempo en sinfines de variantes individuales de los mismos patrones básicos de programación el estado del software mundial no cambiará mucho, sin importar la cantidad de dinero que se invierta en grandiosas iniciativas estratégicas para la tecnología de la información.

Aunque en la literatura especializada en software, se acostumbra rendirle homenaje a la reutilización, muy pocas referencias mencionan bibliotecas bien conocidas de software y muchas menos proporcionan orientación sobre para una adecuada reutilización.

La Biblioteca Real de Software es un proyecto que se propone una reconstrucción intelectual y sistemática de las estructuras fundamentales de software inspirándose en el ejemplo de los naturalistas del siglo dieciocho Lineo y Buffon, quienes emprendieron esta clasificación para plantas y animales haciendo posible la definición como ciencia de la Zoología y la Botánica. Una empresa de esta naturaleza en nuestro país resulta fundamental para el despegue y consolidación de comunidades productoras de software de gran escala.

Entre las temáticas más básicas que deben orientar la construcción de bibliotecas de software se encuentran:

La biblioteca de estructuras de Datos: La más importante y que abarcaría algoritmos y estructuras de datos fundamentales organizados con una cuidadosa estructura taxonómica como la de Lineo.

La biblioteca de Iteradores: proporcionaría facilidades para realizar recorridos por ciertas estructuras de datos (las compuestas de partes)

La biblioteca de Visión: Permitiría construir sistemas interactivos avanzados apoyándose en interfaces gráficas de usuario.

La biblioteca de análisis sintáctico. La biblioteca de Persistencia: mecanismos de persistencia de propósito general.


1.2.6. - Métricas y estimación

Material de apoyo a la labor de construir bases históricas de experiencias en desarrollo de software así como apoyar la utilización de métodos de estimación de esfuerzo en el desarrollo de proyectos.

Para que estos métodos de estimación sean aplicables y válidos se requiere contar con datos históricos reales de esfuerzo invertido en construcción de software.

2 - Investigación y Desarrollo

La dimensión de investigación y desarrollo es muy importante para cumplir la misión de RISCO de mejorar la práctica de la ingeniería de software para apoyar la industria nacional. El objetivo principal en esta dimensión es el acercamiento de la Universidad y las empresas para lograr una sinergia que nos permita estar mas al tanto de los problemas industriales y propiciar una transferencia de tecnología adecuada y oportuna.

Se han identificado varias líneas de investigación cuyos proyectos tienen una aplicabilidad inmediata en la industria. Estas líneas, que consideramos estratégicas para el desarrollo de la industria son: Calidad en el proceso de desarrollo de Software, Comprensión y reestructuración de programas y reutilización de componentes de software.

2.1. - Mejoramiento de los procesos de desarrollo de software

Estudiar y definir la manera de implementar en las empresas de Colombia los estándares y normas de calidad de procesos de construcción de software. En particular, se quiere poder definir planes de mejoramiento de procesos en empresas pequeñas de construcción de software.

2.2. - Ambientes de desarrollo de software guiados por los procesos

Uno de los objetivos de definir modelos de procesos de software es que estos puedan ser usados para guiar las actividades de los usuarios. El propósito de este proyecto es pretende desarrollar ambientes cooperativos que faciliten la construcción de software. Aspectos como la integración y la inter-operabilidad entre herramientas son parte de la problemática de este proyecto.

2.3. - Reestructuración de programas

La evolución tecnológica es un reto para la industria de software. Una tecnología que se acepta como buena para el desarrollo de nuevos sistemas, no lo es tanto si no puede ser aplicada a sistemas existentes. A través de esta línea se podrá hablar de modernización y renovación. Una aplicación de este proyecto es estudiar la problemática generada en el software existente con el cambio de siglo (el problema "del año 2000") y espera crear alianzas con empresas para aportar soluciones en el medio colombiano.

2.4. - Herramientas de comprensión de programas

El objetivo de este proyecto es mejorar la labor de mantenimiento de Software. Según diversos estudios, el 80% de la tarea de mantenimiento (corrección, adaptación, extensión de programas) se gasta en comprender los programas (código mal estructurado, sin documentación, en diversos lenguajes, sin estándares, etc.). Este proyecto pretende crear herramientas visuales y de interrogación que faciliten el entendimiento de los programas.

2.5. - Biblioteca de Componentes de Software

Reutilizar en lugar de reinventar cada vez es una preocupación mayor. Se pretende proveer soluciones a problemas comunes reutilizando esquemas de arquitectura de software, de diseño y de programas.

3 - Divulgación

RISCO debe ser un medio de divulgación de información referente a procesos, avances y tecnologías desarrolladas dentro de la comunidad de ingeniería de software en el mundo.

3.1. - Revista RISCO

Editar una revista que reúna resultados de proyectos, casos de estudio de los integrantes de la Red o personas externas invitadas para tal fin. Esta publicación deberá contar con un comité editorial cuya responsabilidad será velar por la pertinencia y calidad de los artículos publicados.


Preguntas y Respuestas

P: ¿Cómo hago para participar en RISCO?

R: RISCO es un grupo de trabajo cooperativo en el cual
participan personas interesadas en el tema de Ingeniería de Software. Para participar simplemente hay que tener ganas para hacerlo.

En RISCO no hay presión por proyectos, simplemente hay ganas de compartir, aprender y guiar para mejorar la calidad de la práctica y enseñanza de la Ingeniería de Software en Colombia en búsqueda de una industria de software nacional con proyección internacional.

P: ¿Qué tipo de participación es útil?

En general cualquier tipo de aporte para RISCO

es aceptado de buena voluntad. En este momento estamos buscando personas de empuje que se encarguen de impulsar cada uno de los cuatro frentes de trabajo propuestos en los objetivos: Divulgación, Apoyo Académico, Investigación y Desarrollo y Representatividad.

P: ¿Cómo puedo aportar a RISCO?

RISCO cuenta en este momento con tres medios de divulgación: Una lista de correo llamada RISCO, la página Web y este boletín mensual.

Colaboración a la página Web con Rubby Casallas en la Universidad de los Andes.

3.2 - Sitio Web

Mantener actualizado un sitio Web sobre RISCO con la información acerca de su misión, visión, objetivos, estrategias, actividades, miembros y con enlaces a otras redes, universidades, centros de investigación, contactos externos, eventos, etc.

Las contribuciones las pueden mandar a rcasalla@uniandes.edu.co

E-mail: rcasalla@uniandes.edu.co

Dirección: http://agamenon.uniandes.edu.co/rcasalla

Colaboración al boletín con Rafael J. Barros en la Fundación Universitaria San Martín.

E-mail: rbarros@sanmartin.edu.co

Para subscribirse a RISCO mandar un e-mail a: listserv@uniandes.edu.co

Con el mensaje:

subscribe RISCO mi_cuenta@servidor.com

Para retirarse de la lista:

unsubscribe RISCO mi_cuenta@servidor.com

Para enviar un mensaje a la lista, enviarlo a la dirección: Risco@uniandes.edu.co

Sugerencias, comentarios y contribuciones al boletín con Ing. Rafael J. Barros, rbarros@sanmartin.edu.co o rbarros@uniandes.edu.co

Gracias, y nos vemos en el próximo número

[Ir a Actividades]