martes, 1 de diciembre de 2009

Ingeniero en software y mapa curricular...


Programa educativo

Ingeniero en Software


Perfil de Egreso
El ingeniero en software es un profesionista que desarrolla soluciones de software, mediante la aplicación de procesos, modelos y estándares de calidad de la industria del software, las cuales contribuyen al crecimiento y progreso de su sociedad, en un ambiente que provee vida sustentable y oportunidades a sus habitantes.


Competencias Profecionales
Diseñar Soluciones de Software a través de la aplicación de metodologías, herramientas y estándares apropiados al problema.

Producir aplicaciones de software a partir de especificaciones de diseño y haciendo uso de las mejores prácticas que aseguren la calidad del producto.

Administrar Proyectos de Desarrollo de Software mediante la aplicación de procesos, modelos y estándares que contribuyan a la calidad total del producto.

Áreas y Lugares de Trabajo

Áreas
Análisis, Diseño, Construcción y Pruebas en el desarrollo de software
Administración de Bases de Datos
Administración de Proyectos de Desarrollo de Software

Lugares
Empresas con áreas de Desarrollo de Software, Fábricas de Software,  Su Propia Empresa.
Empresas con necesidades en Sistemas de Información.
Empresas con áreas de Desarrollo de Software, Fábricas de Software,  Su Propia Empresa.

Mapa curricular 



Competencia de Análisis y Diseño
  • Análisis de Sistemas
  • Análisis y Modelado de Software
  • Diseño de Software I c/Práctica Profesional I
  • Diseño de Software II
  • Diseño de Sistemas Interactivos
  • Diseño y Desarrollo de Aplicaciones Empresariales

Análisis de Sistemas
Este curso provee los conocimientos para realizar una correcta identificación de problemas susceptibles de ser corregidos mediante una aplicación software, mediante la aplicación de técnicas y métodos obtenidos del área de la Ingeniería Industrial.


Análisis y Modelado de Software.
Provee los conocimientos que permitan a los alumnos identificar y documentar adecuadamente los requerimientos de Software con los que debe cumplir una solución de software para un problema en particular



Diseño de Software I c/Práctica Profesional I
Esta materia complementa a la materia de Análisis y Modelado de Software. Está enfocada a resolver dos aspectos básicos del desarrollo de software:  el modelado de la arquitectura del sistema y el diseño detallado de la solución, aunque esto no exime a los estudiantes de tener que programar su diseño para poder corroborar que es el adecuado.



Diseño de Software II
Esta materia complementa a la materia de Diseño de Software I con Práctica Profesional.   Considera que los alumnos cuentan con los conocimientos previos para identificación, documentación y análisis de requerimientos, así como del conocimiento de técnicas y métodos para el diseño arquitectónico y detallado. Profundiza en las técnicas de diseño de software, al analizar la construcción de sistemas de patrones, que permitan optimizar el diseño de soluciones de software a través de la reutilización de estructuras completas de patrones.



Diseño de Sistemas Interactivos
Esta materia complementa el proceso de diseño de software, al proporcionar elementos teóricos y prácticos que sustenten el diseño de las interfaces que permitan a los usuarios finales utilizar una solución de software de forma efectiva,  al cumplir con los criterios de usabilidad requeridos.



Diseño y Desarrollo de Aplicaciones Empresariales
Esta materia, siendo una clase integradora, busca lograr el desarrollo de una aplicación completa dentro de un entorno empresarial similar a los existentes en la vida comercial.  Un reto importante en esta materia, es la agilización del proceso de diseño y desarrollo de soluciones mediante la aplicación de marcos de trabajo existentes.



Competencia de Construcción de Software
Producir aplicaciones de software a partir de especificaciones de diseño y haciendo uso de las mejores prácticas que aseguren la calidad del producto.


  • Programación I c/Lab.
  • Programación II c/Lab.
  • Estructura de Datos
  • Base de Datos I
  • Programación III
  • Métodos Numéricos Computacionales
  • Pruebas de Software
  • Base de Datos II
  • Aplicaciones Web
  • Sistemas Distribuidos
  • Cómputo Móvil
  • Optativa I
  • Optativa II


Programación I con/Lab
Este curso provee las bases para solucionar problemas de computadoras utilizando el enfoque estructurado, centrándose principalmente en el desarrollo de las capacidades lógicas del alumno para  enfocarla a la solución de problemas.



Programación II con/Lab
En este curso se presentan los principios de la programación orientada a objetos.
Se estudia el manejo de excepciones, algunas de clases de la API de Java como las colecciones y las clases que nos permiten construir interfaces de usuario gráficas.
Se desarrollan aplicaciones de escritorio


Estructura de Datos
Este curso provee los conceptos y técnicas fundamentales para crear y mantener estructuras de datos que le permitan al alumno almacenar, manipular y organizar la información; a la vez que le permite hacer un uso eficiente de los recursos y facilita la programación de los sistemas de información.


Base de Datos I
Este curso provee los aspectos básicos de las bases de datos para que el estudiante, empleando las metodologías más comunes y un DBMS comercial, realice su diseño y  lo implemente.


Programación III
En este curso se presentan los principios de concurrencia (programación multi-hilos), el manejo de archivos y los mecanismos de persistencia


Métodos Numéricos Computacionales
En este curso se analizan métodos para aproximar, de forma eficiente, la solución de problemas expresados matemáticamente. También se estima el error máximo que puede introducirse con cada método.


Pruebas de Software
Ofrecer a los alumnos el conocimiento teórico y las técnicas necesarias que les permitan realizar funciones referentes a la calidad técnica de los proyectos, control de timing, resolución de incidencias, realización de pruebas software, mantenimiento de aplicaciones informáticas y desarrollo de aplicativos.


Base de Datos II
Este curso provee los aspectos básicos de tópicos avanzados en sistemas manejadores de base de datos. El curso cubre modelación de datos  desde el punto de vista semántico y orientado a objetos. Así mismo se cubren aspectos fundamentales de base de datos orientadas a objetos y aspectos de interoperabilidad en base de datos en el WWW. Otras nuevas tecnologías en base de datos serán brevemente introducidas.


Aplicaciones Web
Esta materia proporciona los conocimientos para el desarrollo de aplicaciones Web bajo la plataforma Java. Estudia los principios y limitaciones de este tipo de aplicaciones y las soluciones que se han desarrollado.


Sistemas Distribuidos
Esta materia proporciona los conocimientos para el desarrollo de aplicaciones en entornos distribuidos, donde es necesario crear soluciones de software escalables, altamente configurables y extensibles.


Cómputo Móvil
Esta materia intenta proporcionar a los alumnos las herramientas necesarias para el desarrollo de aplicaciones  en entornos móviles con el fin de integrarlas a aplicaciones empresariales nuevas o pre-existentes.


Optativa I
Este curso provee los conocimientos y habilidades necesarias para iniciar al alumno en el desarrollo de aplicaciones utilizando el ambiente administrado que brinda la plataforma de desarrollo Visual Studio .NET y su marco de ejecución .NET Framework. Busca fortalecer y diversificar el conocimiento de los alumnos respecto a las herramientas de desarrollo que  existen en la actualidad.


Optativa II
Diseño y desarrollo de aplicaciones Web con ASP.NET y C#




Competencia de Administración de Proyectos de Software

Administrar Proyectos de Desarrollo de Sw mediante la aplicación de procesos, modelos y estándares que contribuyan a la calidad total del producto.

  • Ingeniería de Software
  • Administración
  • Administración de Proyectos
  • Evaluación de Proyectos de Software
  • Administración de Proyectos de Software I y Práctica Profesional
  • Administración de Proyectos de Software II
  • Tecnologías de Información para los Negocios
  • Calidad del Software
  • Evaluación del Software

Ingeniería de Software
Este curso provee los fundamentos sobre la ingeniería de software: definición de Ingeniería de Software, el software como producto y como proceso, tipos de sistemas de información, modelos de desarrollo, ciclo de vida de desarrollo de software, herramientas que automatizan el desarrollo de software.


Administración
Este curso proporciona el fundamento para identificar las técnicas y herramientas utilizadas en cada uno de los elementos del proceso administrativo, que permitan ejercitar habilidades de análisis y razonamiento para descubrir problemas.


Administración de Proyectos
Este curso provee los fundamentos sobre la administración de proyectos, analiza a detalle las etapas de la administración de proyectos (PMI), así como las herramientas utilizadas como apoyo en cada etapa.


Evaluación de Proyectos de Software
Este curso proporciona el conocimiento para evaluar la factibilidad económica de un proyecto de desarrollo de software: entender el valor del dinero a través del tiempo, elaborar los flujos netos de efectivo que habrá de producir período tras período; métodos que existen para determinar la factibilidad económica de un proyecto de desarrollo de software; distintos análisis concernientes a la sensibilidad económica.



Administración de Proyectos de Software I y Práctica Profesional
Este curso provee los fundamentos sobre la administración de proyectos de software (RUP), analiza las fases de desarrollo y las disciplinas implicadas, así como las herramientas y productos que se generan durante la administración de proyectos.


Administración de Proyectos de Software II
Este curso provee conocimientos para realizar el monitoreo y control de un proyecto de software. Además analiza la administración de proyectos de software siguiendo una metodología ágil (XP).


Tecnologías de Información para los Negocios
Este curso provee al alumno la visión sobre la contribución de los sistemas de información a la estrategia competitiva de la empresa, con el fin de generar propuestas de mejora basadas en tecnologías de información, que contribuyan a dar forma a la estrategia competitiva de la organización. Para ello se abordan diversas herramientas para el diagnóstico empresarial y se revisa el proceso de planeación estratégica.


Calidad del Software
El curso provee conocimientos para la aplicación de las normas internacionales para la certificación de la calidad en el desarrollo del software. Se revisan los fundamentos de la calidad del software, estandarización de procesos y estándares de calidad vigentes (CMMI, ISO, Moprosoft).


Evaluación del Software
Este curso provee herramientas para el diseño y aplicación de medidas de evaluación tendientes a apoyar la mejora de la calidad de un proceso de desarrollo de software, en la etapa de propuesta, en producción, y operación y mantenimiento.



Responsabilidad profecional y ética...

-La ingeniería del software se lleva a cabo dentro de un marco legal y social que limita la libertad de los ingenieros.
-Los ISW deben aceptar que su trabajo comprende responsabilidades más amplias que simplemente la aplicación de habilidades técnicas.
-Deben comportarse de una forma ética y moral responsable.
-No basta con poseer estándares normales de honestidad e integridad.
-No debería utilizar su capacidad y sus habilidades para comportarse de forma deshonesta o de forma que deshonre la profesión de la ingeniería del software.
-Existen áreas donde los estándares de comportamiento aceptable no están acotados por las leyes, sino por la responsabilidad profesional.

Modelo RUP y sus Fases

¿Qué es RUP?
Es un proceso de ingeniería de software, que hace una propuesta orientada por disciplinas para lograr las tareas y responsabilidades de una organización que desarrolla software.
Su meta principal es asegurar la producción de software de alta calidad que cumpla con las necesidades de los usuarios, con una planeación y presupuesto predecible.


Diseñado para:
  • Profesionales en el desarrollo de software
  • Interesados en productos de software
  • Profesionales en la ingeniería y administración de procesos de software

¿Por qué usar RUP?
  • Provee un entorno de proceso de desarrollo configurable, basado en estándares
  • Permite tener claro y accesible el proceso de desarrollo que se sigue
  • Permite ser configurado a las necesidades de la organización y del proyecto
  • Provee a cada participante con la parte del proceso que le compete directamente, filtrando el resto



Sus caracteristicas:
  • Dirigido por Casos de Uso 
Los casos de uso son los artefactos primarios para establecer el comportamiento deseado del sistema
  • Centrado en la Arquitectura
La arquitectura es utilizada para conceptualizar, construir, administrar y evolucionar el sistema en desarrollo
  • Iterativo e Incremental
Maneja una serie de entregas ejecutables
Integra continuamente la arquitectura para producir nuevas versiones mejoradas

  • Conceptualmente amplio y diverso
  • Enfoque orientado a objetos
  • En evolución continua
  • Adaptable
  • Repetible
  • Permite mediciones
Estimación de costos y tiempo, nivel de avance, etc.

 Conceptos



Diagrama general de RUP



Fases del  Ciclo de vida



Inicio (Inception)

Establecer un acuerdo entre todos los interesados acerca de los objetivos del proyecto.
Significativamente importante para el desarrollo de nuevo software, ya que se asegura de identificar los riesgos relacionados con el negocio y requerimientos.

Elaboración
El objetivo en esta fase es establecer la arquitectura base del sistema.
La arquitectura debe abarcar todas las consideraciones de mayor importancia de los requerimientos y una evaluación del riesgo.

Construcción
El objetivo de la fase de construcción es clarificar los requerimientos faltantes y completar el desarrollo del sistema basados en la arquitectura base.

Transición
Esta fase se enfoca en asegurar que el software esté disponible para sus usuarios.
Se puede subdividir en varias iteraciones, además incluye pruebas del producto para poder hacer el entregable del mismo, así como realizar ajuste menores de acuerdo a ajuste menores propuestos por el usuario.

Disciplinas del modelo RUP

Primero que nada ¿Qué es una disciplina?, claro está que en este ámbito.

Una disciplina es una colección de actividades relacionadas con un área de atención dentro de todo el proyecto.
El grupo de actividades que se encuentran dentro de una disciplina principalmente son una ayuda para entender el proyecto desde la perspectiva clásica de cascada.
Están inspiradas en las etapas de un proceso de desarrollo en cascada
Es una secuencia parcialmente ordenada de actividades que son realizadas para lograr un resultado particular, representado en un conjunto de artefactos.


y las Disciplinas son:

  • Modelado de Negocios
  •  Requerimientos
  •  Análisis y Diseño
  •  Implementación
  •  Pruebas
  •  Transición
  •  Configuración y Administración del Cambio
  •  Administración de Proyectos
  •  Ambiente


Modelado de Negocios
Los propósitos que tiene el Modelo de Negocios son:
Entender los problemas que la organización desea solucionar e identificar mejoras potenciales.
Medir el impacto del cambio organizacional.
Asegurar que clientes, usuarios finales, desarrolladores y los otros participantes tengan un entendimiento compartido del problema.
Derivar los requerimientos del sistema de software, necesarios para dar soporte a los objetivos de la organización.
Entender como el sistema a ser desarrollado entra dentro de la organización.

Requerimientos
Esta disciplina tiene el propósito de:
Establecer y mantener un acuerdo con los clientes y los otros interesados acerca de que debe hacer el sistema.
Proveer a los desarrolladores del sistema de un mejor entendimiento de los requerimientos del sistema.
Definir los límites (o delimitar) del sistema.
Proveer un base para la planeación de los contenidos técnicos de las iteraciones.
Proveer una base para la estimación de costo y tiempo necesarios para desarrollar el sistema.
Definir una interfaz de usuario para el sistema, enfocada en las necesidades y objetivos del usuario.

Análisis y Diseño
El propósito del Análisis y Diseño es:
Transformar los requerimientos a diseños del sistema.
Desarrollar  una arquitectura robusta para el sistema.
Adaptar el diseño para hacerlo corresponder con el ambiente de implementación y ajustarla para un desempeño esperado.

Implementación
El propósito de la implementación es:
Definir la organización del código, en términos de la implementación de los subsistemas organizados en capas.
Implementar el diseño de elementos en términos de los elementos (archivos fuente, binarios, ejecutables y otros)
Probar los componentes desarrollados como unidades.
Integrar los resultados individuales en un sistema ejecutable.

Pruebas
Actúa como un proveedor de servicios a las otras disciplinas en muchos aspectos. Se enfoca principalmente en la evaluación y aseguramiento de la calidad del producto, desarrollado a través de las siguientes prácticas:
Encontrar fallas de calidad en el software y documentarlas.
Recomendar sobre la calidad percibida en el software.
Validar y probar las suposiciones hechas durante el diseño y la especificación de requerimientos de forma concreta.
Validar que el software trabaja como fue diseñado.
Validar que los requerimientos son implementados apropiadamente.

Trancisión
Esta disciplina describe las actividades asociadas con el aseguramiento de la entrega y disponibilidad del producto de software hacia el usuario final.

Administración y Configuración del Cambio
Consiste en controlar los cambios y mantener la integridad de los productos que incluye el proyecto.
Incluye:
Identificar los elementos configurables.
Restringir los cambios en los elementos configurables.
Auditar los cambios hechos a estos elementos.
Definir y mantener las configuraciones de estos elementos.
Los métodos, procesos y herramientas usadas para proveer la administración y configuración del cambio pueden ser consideradas como el sistema de administración de la configuración.

Administración de Proyectos
El propósito de la Administración de Proyectos es:
Proveer un marco de trabajo para administrar los proyectos intensivos de software.
Proveer guías prácticas para la planeación, soporte, ejecución y monitoreo de proyectos.
Proveer un marco de trabajo para la administración del riesgo.

Ambiente
Se enfoca en las actividades necesarias para configurar el proceso al proyecto.
Describe las actividades requeridas para desarrollar las líneas guías de apoyo al proyecto.
El propósito de las actividades de ambiente es proveer a las organizaciones de desarrollo de software del ambiente necesario (herramientas y procesos) que den soporte al equipo de desarrollo.




Disciplinas

Workflow
Detalles del workflow
Actividades
Artefactos
Guías de aplicación














Roles
Definen el comportamiento y responsabilidades de individuos o grupos de individuos.

Son descripciones abstractas de:
Conjuntos de actividades realizadas
Responsabilidad sobre artefactos

Actividades
Una actividad es algo que un rol hace y que provee un resultado de interés en el contexto del proyecto.
Es una unidad de trabajo que individuos jugando cierto rol pueden ser llamados a realizar.
Son utilizadas para detallar los workflows.
Toman artefactos como entrada y producen artefactos (o nuevas versiones) como salida.

Artefactos
Unidades de información creadas, producidas, cambiadas o utilizadas en el proceso de desarrollo.



Cuando usar RUP?
RUP puede utilizarse:
En proyectos de nuevos productos de software
En ciclos de desarrollo subsecuentes
Consideraciones que alteran cuándo y cómo usar partes de RUP
El ciclo de vida del proyecto
Los objetivos del negocio, la visión, el alcance y los riesgos
El tamaño del esfuerzo de desarrollo.