Powered By Blogger

miércoles, 11 de mayo de 2011

¡Bienvenidos!

Están entrando a nuestro pequeño blog perteneciente de la carrera de ISW de ITSON.Este blog comenzó debido a un Proyecto de la clase de Ingeniería de Software, el cual nos pide crear un blog para dar a conocer el ámbito de la carrera,los Modelos de Desarrollo de software y las Responsabilidades que tenemos nosotros como aspirantes a ingenieros en software.

Así que ya saben , si visitan este blog y les gusto dejen un comentario o tómense una foto con el gadget que tenemos en el menú de la izquierda.

¡Gracias!

viernes, 6 de mayo de 2011

Responsabilidad y Ética en la Profesión

Retos que afronta la Ingenieria En Software
El Reto de la heterogeneidad:
Desarrollar tecnicas para desarrollar un software confiable.
Reto de la entrega:
Reducir el tiempo de la entrega para sistemas grandes y complejos.
Reto de la confianza:
Desarrollar tecnicas que demuestren a los usuarios puedan confiar en el software.
Responsabilidad profesional y etica
La ingenieria del software se lleva acabo dentro de un marco legal y social. Los ISW deben aceptar que su trabajo comprende responsabilidades mas amplias que simplemente la aplicacion de hablidades tecnicas.
Existen areas donde los estandares de comportamiento aceptable no estan acotados por las leyes, si no por la responsabilidad profesional.
Algunas de estas son:
  • Confidencialidad.
  • Competencia.
  • Derechos de propiedad intelectual (Copyright).
  • Uso inapropiado de las computadoras.
Organizaciones como la ACM (Association for Computing Machinery), IEEE (Instituto de Ingenieros Electricos y Electronicos), British Computer Society publican un codigo de conducta profecional o de etica.
ACM y IEEE
El codigo contiene 8 principios relacionados con el comportamiento y con las deciciones hechas por ingenieros de software profesionales.
Codigo Etica
Los ingenieros de software deberan de comprometerse consigo mismo en convertir el analisis, especificacion, diseño, desarrollo, prueba y mantenimiento de software en una profesion respetable y beneficiosa.
Principios del Codigo
Publico: Los ISW deberan actuar consistentemente con el interes publico.
Cliente y Empleador: Los ISW deberan actuar en una forma determinada que este en los mejores intereses de su cliente y empleador.
Producto: Los ISW deberan asegurar que sus productos y modificaciones relacionadas logren el mas alto estandar profesional posible.
Juicio: Los ISW deberan mantener integridad e independencia al emitir su jucio profesional.
Gerancia: Los gerentes y lideres de ISW deberan suscribirse y promocionar un enfoque etico para la gerencia de desarrollo y mantenimiento de software.
Profesion: Los ISW deberan fomentar la integridad y reputacion de la profesion.
Colegas: Los ISW deberan ser justos y comprensivos con sus colegas.
Interes Propio: Los ISW deberan participar en el aprendizaje de por vida del ejercicio de su profesion y deberan promover un enfoque etico para el ejercicio de la misma.
Problemas Eticos
Situaciones en las que diferentes personas tienen distintos puntos de vista y objetivos. Si usted esta en desacuerdo con las politicas de un directivo de categoria superior en la compañia, ¿como deberia reaccionar?.
Esto depende de cada individuo y de la naturaleza de la discordancia. ¿Es mejor argumentar a favor de su posicion dentro de la organizacion o renunciar de acuerdo con sus principios?
Si piensa que existen problemas con un proyecto de software, ¿Cuando se deben de comunicar estos al gerente?
Si estos se discuten cuando son solo es una sospecha, puede ser una sobre-reaccion a la situacion, si lo deja para mas tarde, puede ser imposible resolver las dificultades.
Tales prblemas eticos aparecen en nuestra vida profesional y, afortunadamente, en muchos casos son relativamente menores o se pueden resolver sin mucha dificultad.
Cuando no se puedan resolver, los ingenieros se enfrentan, quizas, con otro problema. La accion con base a sus principios podria ser renunciar a su trabajo, pero esto puede afectar a otros.
El area de etica y responsabilidad profecional ha recibido creciente atencion en los pasados años.
Los principios de etica se pueden considerar desde un punto de vista filosofico, y la etica de la ingenieria de software se debe tratar con referencia a estos principios basicos.

Perfil del Ingeniero de Software


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.



Será capaz de desempeñarse en cualquiera de los roles involucrados en un proceso de desarrollo de software como: Administrador de proyecto, líder de proyecto, arquitecto del software, analista, programador, ingeniero de requerimientos, ingeniero de pruebas, etc. Podrá además definir alcances, costos, tiempos, recursos y factibilidad para un proyecto de software, así como proponer soluciones de software, globales o parciales, que permitan el control de los procesos, la mejora en el proceso de toma de decisiones o soluciones innovadoras para la industria y el entretenimiento.

Las características que le permitirán alcanzar el perfil descrito serán:
Conocimientos sobre:
  1. Metodologías y técnicas para el desarrollo de software a pequeña y gran escala, tales como desarrollo de requerimientos, interacción humano-computadora, diseño, construcción, evolución, pruebas y aquellos relacionados con la administración, como el aseguramiento de la calidad y la administración de proyectos.
  2. Las ciencias computacionales, que le permitan la aplicación viable de algoritmos, estructuras de datos y lenguajes de programación en el desarrollo de software.
  3. Las herramientas para la especificación y el modelado de sistemas de software, así como para la evaluación de los procesos y productos de software para su mejora.
  4. Administración y optimización de tiempo y costo de los recursos involucrados en el desarrollo de software.
  5. El entorno social para comprender los factores sociales, políticos, ecológicos y éticos relacionados con el desarrollo tecnológico y el desempeño profesional.
  6. Las áreas de investigación relacionadas con la Ingeniería en Software.
Habilidades para:
  1. Trabajar como parte de un equipo en el desarrollo y evolución de productos de software.
  2. Comprender, aplicar y comunicar el proceso para determinar las necesidades del cliente y traducirlos a requisitos de software.
  3. Conciliar objetivos en conflicto, considerando compromisos con las limitaciones de costo, tiempo, conocimiento, sistemas existentes y de las organizaciones involucradas.
  4. Diseñar soluciones apropiadas en una o más áreas de concentración, usando enfoques de ingeniería que integren temas éticos, sociales, legales y económicos.
  5. Entender y aplicar teorías, modelos y técnicas que provean una base para el diseño, desarrollo, verificación e implantación del software.
  6. Negociar y trabajar profesionalmente, liderar cuando sea necesario y comunicarse efectivamente con los interesados en un ambiente de Ingeniería en Software.
Actitudes de:
  1. Liderazgo en equipos de trabajo multidisciplinarios.
  2. Perseverancia en la solución de problemas.
  3. Capacidad de mantenerse actualizado en su área de trabajo.
  4. Afán de superación.
  5. Responsabilidad y ética en su desempeño profesional.
  6. Conducta emprendedora e innovadora.
  7. Conciencia de la realidad social y responsabilidad ecológica.
  8. Aprendizaje autodidacta.


Modelo RUP

De entre todos los modelos de Ciclo de Vida , exist el Modelo RUP que asegura la producción de software de alta calidad que cumpla con las necesidades de los usuarios, con una planeación y presupuesto predecible.


Este modelo viéndolo rápidamente se podría ver como un modelo cascada, ya que contiene las mismas partes del ciclo de vida como diseño, análisis, etc.



Pero la diferencia esta en las fases en las que se encuentran las anteriores actividades como son:

-La concepción en la que se verifica el alcance ,costos ,beneficios y riesgos.
-La elaboración que es la base de la construcción, donde se deben identificar los requerimientos.
-La construcción donde se elaboran componentes del producto (se pueden introducir formas de desarrollo como componentes), y se desarrollan las versiones del producto.
-La transición donde se traslada el producto a los usuarios y se empieza a trabajar en la versión beta (funcional pero no entregable) que luego pasara a la modificación de los últimos detalles para la entrega final, también es necesario capacitar a los usuarios y a las personas que se encargaran del soporte del sistema.


En la imagen se puede apreciar las fases de desarollo y el tiempo
aproximado que toman cada una de ellas


Caracteristicas:

Las caracterisiticas , o podria desirse de otra manera como ventajas son muy variadas, lo cual hase de este modelo como uno de los mas rentables:


1.-Provee un entorno de proceso de desarrollo configurable, basado en estándares


2.-Permite tener claro y accesible el proceso de desarrollo que se sigue

3.-Permite ser configurado a las necesidades de la organización y del proyecto

4.-Provee a cada participante con la parte del proceso que le compete directamente, filtrando el resto

5.-Conceptualmente amplio y diverso

6.-Enfoque orientado a objetos

7.-En evolución continua

8.-Adaptable

9.-Repetible

10.-Permite mediciones

11.-Estimación de costos y tiempo, nivel de avance, etc.

12.-Dirigido por Casos de Uso:
Los casos de uso son los artefactos primarios para establecer el comportamiento deseado del sistema

13.-Centrado en la Arquitectura:
La arquitectura es utilizada para conceptualizar, construir, administrar y evolucionar el sistema en desarrollo

14.-Iterativo e Incremental:
Maneja una serie de entregas ejecutables
Integra continuamente la arquitectura para producir nuevas versiones mejoradas



Después de toda esa explicasión viene ahora lo que le importa realmente a los desarolladores y es: ¿Cúando puedo usar RUB?


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

Una "desventaja" del Modelo RUB seria que ocupa una buena cantidad de personas que se involucren y comprometan al proyecto a realizar.




CONCLUSIONES


Es un modelo de proceso de desarrollo de software
-Es una base para procesos particulares

El objetivo es asegurar el desarrollo
-De productos de software de alta calidad
-Que satisfagan los requerimientos
-En tiempo y presupuesto predecible

Permite un vocabulario común entre equipos de desarrollo