miércoles, 1 de diciembre de 2010

Perfil y Mapa curricular de la carrera de Ingenieria en software

Antecedentes
-Tendencias de la IT a la tercerización (Offshore y nearshore).

-Potencial de México para el desarrollo de la industria de software por su cercanía a los estados Unidos.

-Iniciativas federales, estatales, de la iniciativa privada y de las instituciones educativas de convertir a Sonora en el polo de desarrollo de la industria de software : Corredor de Parques Alta Tecnología, que se ubicarán respectivamente en Ciudad Obregón, Hermosillo y Nogales.

-Las iniciativas estratégicas del ITSON: Parque Tecnológico de Ciudad Obregón: SonoraSoft Technology Park, la fábrica de software Novutek y el Centro de Innovación y Transferencia de Tecnologías de Información (CITTI).

Problema y Justificación

Estas iniciativas generan una demanda de profesionistas especializados en el desarrollo de software que ayuden a consolidar los esfuerzos tendientes a transformar el estado en el polo para el desarrollo de la Industria del Software de México.
  Es preciso crear un programa educativo que satisfaga dicha demanda. Este programa dará sustento al cambio deseado en nuestra región a través de proyectos de investigación, innovación, incubación y consultoría realizados por profesores y alumnos de un programa de estudios enfocado en la Ingeniería de software. 


Objetivo del Programa Educativo

Formar de manera integral recurso humano comprometido con su labor, innovador  y emprendedor, capaz de desarrollar soluciones de software de calidad en forma eficiente, que contribuyan al crecimiento y progreso
de su sociedad.

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 Profesionales

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 desempeño profesional
 
Á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, empresas desarrolladoras de software y su propia empresa.
-Empresas con necesidades en sistemas de información.


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


MAPA CURRICULAR DE LA CARRERA DE INGENIERIA DE 
SOFTWARE








martes, 30 de noviembre de 2010

Responsabilidad y Ética en la Profesión

Hay 3 retos Fundamentales que afronta un ingeniero en Software , que son los siguientes:


El reto de la heterogeneidad. Desarrollar técnicas para construir software confiable que sea lo suficientemente flexible para adecuarse a esta heterogeneidad.  


El reto de la entrega. Reducir los tiempos de entrega para sistemas grandes y complejos sin comprometer la calidad del sistema.


El reto de la confianza. Desarrollar técnicas que demuestren que los usuarios pueden confiar en el software.


Los retos no son independientes. Es necesario desarrollar nuevas herramientas y técnicas, así como formas innovadoras de combinación y uso de métodos de ingeniería del software existentes.




Responsabilidad profesional 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 Iingenieros en software deben aceptar que su trabajo comprende responsabilidades más amplias que simplemente la aplicación de habilidades técnicas.
La responsabilidad es el valor fundamental que deben tener los ingenieros ya que de el dependeran varias empresas debido a proyectos que se tienen que entregar al tiempo.
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.

Puntos muy importantes de la responsabilidad profesional y etica.
Confidencialidad. Respetar la confidencialidad de sus empleadores o clientes, independientemente de que se haya firmado un acuerdo formal de confidencialidad.
Competencia. No debe falsificar su nivel de competencia, ni aceptar conscientemente trabajos que están fuera de su capacidad.
Derechos de propiedad intelectual. Debe ser consciente de las leyes locales que gobiernan el uso de la propiedad intelectual, como las patentes y el copyright. Debe asegurarse de que la propiedad intelectual de los empleadores y clientes está protegida.
Uso inapropiado de las computadoras. No debe emplear sus habilidades técnicas para utilizar de forma inapropiada las computadoras de otras personas. Desde los relativamente triviales (utilizar juegos en la máquina de un empleado, por ejemplo) hasta los extremadamente serios (difusión de virus).

Los ingenieros en Software deberan respetar 8 principios de el codigo de etica.

PÚBLICO - Los Ingenieros de Software deberán actuar consistentemente con el interés público.
CLIENTE Y EMPLEADOR - Los Ingenieros de Software deberán actuar de una forma determinada que esté en los mejores intereses de su cliente y empleador consistente con el interés público.
PRODUCTO- Los Ingenieros de Software deberán asegurar que sus productos y modificaciones relacionadas logren el más alto estándar profesional posible.
         JUICIO - Los Ingenieros de Software deberán mantener integridad e independencia al emitir su juicio profesional.

GERENCIA - Los gerentes y líderes de Ingeniería de Software deberán suscribirse y promocionar un enfoque ético para la gerencia de desarrollo y mantenimiento de software.
PROFESIÓN - Los Ingenieros de Software deberán fomentar la integridad y reputación de la profesión consistente con el interés público.
COLEGAS - Los Ingenieros de Software deberán ser justos y comprensivos con sus colegas.
         INTERÉS PROPIO - Los Ingenieros de Software deberán participar en el aprendizaje de por vida del ejercicio de su profesión y deberán promover un enfoque ético para el ejercicio de la misma.


Problemas éticos.
Tales problemas éticos aparecen en nuestra vida profesional y, afortunadamente, en muchos casos son relativamente menores o se pueden resolver sin mucha dificultad. 
Una situación particularmente difícil para los ingenieros profesionales surge cuando su empleador actúa de una forma no ética.

La posición ética apropiada depende enteramente del punto de vista de los individuos que están involucrados. 


Tales problemas éticos aparecen en nuestra vida profesional y, afortunadamente, en muchos casos son relativamente menores o se pueden resolver sin mucha dificultad. 


La posición ética apropiada depende enteramente del punto de vista de los individuos que están involucrados.


 En este caso, el potencial para el daño, el grado del daño y la gente afectada por el deben influir en la decisión. 


El área de ética y responsabilidad profesional ha recibido creciente atención en los pasados años.


Los principios de ética se pueden considerar desde un punto de vista filosófico, y la ética de la ingeniería del software se debe tratar con referencia a estos principios básicos. 

Todo aserca del modelo de desarrollo RUP

Que 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.
Cual es la meta del RUP?
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.
Algunos puntos del por que 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
Caracteristicas del modelo RUP.
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.

A continuacion se presenta una imagen del ciclo de vida de un producto explicado mediante el modelo RUP con sus fases.



La metodología RUP, llamada así por sus siglas en inglés Rational Unified Process, divide en 4 fases el desarrollo del software:
FASE DE INICIO
Durante la fase de inicio las iteraciones hacen ponen mayor énfasis en actividades modelado del negocio y de requisitos.

Modelado del negocio
En esta fase el equipo se familiarizará más al funcionamiento de la empresa, sobre conocer sus procesos.
-Entender la estructura y la dinámica de la organización para la cual el sistema va ser desarrollado
-Entender el problema actual en la organización objetivo e identificar potenciales mejoras.
-Asegurar que clientes, usuarios finales y desarrolladores tengan un entendimiento común de la organización objetivo.


Requisitos
En esta línea los requisitos son el contrato que se debe cumplir, de modo que los usuarios finales tienen que comprender y aceptar los requisitos que especifiquemos.
·  Establecer y mantener un acuerdo entre clientes y otros stakeholder s sobre lo que el sistema podría hacer.
·Proveer a los desarrolladores un mejor entendimiento de los requisitos del sistema.
· Definir el ámbito del sistema.
· Proveer una base para estimar costos y tiempo de desarrollo del sistema.
· Definir una interfaz de usuarios para el sistema, enfocada a las necesidades y metas del usuario.

FASE DE ELABORACIÓN

En la fase de elaboración, las iteraciones se orientan al desarrollo de la baseline de la arquitectura, abarcan más los flujos de trabajo de requerimientos, modelo de negocios (refinamiento), análisis, diseño y una parte de implementación orientado a la baseline de la arquitectura.

Análisis y Diseño
En esta actividad se especifican los requerimientos y se describen sobre como se van a implementar en el sistema.
   ·  Transformar los requisitos al diseño delsistema.
·  Desarrollar una arquitectura para el sistema.
·  Adaptar el diseño para que sea consistente con el entorno de implementación.

FASE DE CONSTRUCCIÓN

Implementación
Se implementan las clases y objetos en ficheros fuente, binarios, ejecutables y demás. El resultado final es un sistema ejecutable.
   ·Planificar qué subsistemas deben ser implementados y en que orden deben ser
·integrados, formando el Plan de Integración.
·Cada implementador decide en que orden implementa los elementos del subsistema.
·Si encuentra errores de diseño, los notifica.
·Se integra el sistema siguiendo el plan.

Pruebas
Este flujo de trabajo es el encargado de evaluar la calidad del producto que estamos desarrollando, pero no para aceptar o rechazar el producto al final del proceso de desarrollo, sino que debe ir integrado en todo el ciclo de vida.

·Encontrar y documentar defectos en la calidad del software.
·Generalmente asesora sobre la calidad del software percibida.
·Provee la validación de los supuestos realizados en el diseño y especificación de
·requisitos por medio de demostraciones concretas.
·Verificar las funciones del producto de software según lo diseñado.
·Verificar que los requisitos tengan su apropiada implementación.

FASE DE TRANSMICION

Despliegue
Esta actividad tiene como objetivo producir con éxito distribuciones del producto y distribuirlo a los usuarios. Las actividades implicadas incluyen:

·Probar el producto en su entorno de ejecución final.
·Empaquetar el software para su distribución.
·Distribuir el software.
·Instalar el software.
·Proveer asistencia y ayuda a los usuarios.
·Formar a los usuarios y al cuerpo de ventas.
·Migrar el software existente o convertir bases de datos
  
Cada una de estas etapas es desarrollada mediante el ciclo de iteraciones, la cual consiste en reproducir el ciclo de vida en cascada a menor escala. Los Objetivos de una iteración se establecen en función de la evaluación de las iteraciones precedentes.

Vale mencionar que el ciclo de vida que se desarrolla por cada iteración, es llevada bajo dos disciplinas: 
1. Disciplina de Desarrollo
 Ingeniería de Negocios: Entendiendo las necesidades del negocio.
Requerimientos: Trasladando las necesidades del negocio a un sistema automatizado.
Análisis y Diseño: Trasladando los requerimientos dentro de la arquitectura de software.
Implementación: Creando software que se ajuste a la arquitectura y que tenga el comportamiento deseado.
Pruebas: Asegurándose que el comportamiento requerido es el correcto y que todo los solicitado esta presente.

2. Disciplina de Soporte
Configuración y administración del cambio: Guardando todas las versiones del proyecto.
Administrando el proyecto: Administrando horarios y recursos.
Ambiente: Administrando el ambiente de desarrollo.
Distribución: Hacer todo lo necesario para la salida del proyecto.





Cuando puedes 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