viernes, 27 de febrero de 2009

Métrica V3



La metodología MÉTRICA Versión 3 ofrece a las Organizaciones un instrumento útil para la sistematización de las actividades que dan soporte al ciclo de vida del software dentro del marco que permite alcanzar los siguientes objetivos:

Proporcionar o definir Sistemas de Información que ayuden a conseguir los fines de la Organización mediante la definición de un marco estratégico para el desarrollo de los mismos.
Dotar a la Organización de productos software que satisfagan las necesidades de los usuarios dando una mayor importancia al análisis de requisitos.
Mejorar la productividad de los departamentos de Sistemas y Tecnologías de la Información y las Comunicaciones, permitiendo una mayor capacidad de adaptación a los cambios y teniendo en cuenta la reutilización en la medida de lo posible.
Facilitar la comunicación y entendimiento entre los distintos participantes en la producción de software a lo largo del ciclo de vida del proyecto, teniendo en cuenta su papel y responsabilidad, así como las necesidades de todos y cada uno de ellos.
Facilitar la operación, mantenimiento y uso de los productos software obtenidos.

La nueva versión de MÉTRICA contempla el desarrollo de Sistemas de Información para las distintas tecnologías que actualmente están conviviendo y los aspectos de gestión que aseguran que un Proyecto cumple sus objetivos en términos de calidad, coste y plazos.

Anexo un link bastante completo de Metrica 3

http://www.csi.map.es/csi/metrica3/index.html

Metodologia Iweb

La Ingeniería Web es una metodología enfocada a la creación, implantación y manutención de aplicaciones y sistemas Web, la cual se relaciona con establecer y utilizar principios científicos, de ingeniería y de gestión, y con enfoques sistemáticos y disciplinados del éxito del desarrollo, manejo y mantenimiento de sistemas y aplicaciones basados en Web de alta calidad.
La metodología IWeb no es un clon de la ingeniería de software aunque ambas incluyen desarrollo de software y programación, pues a pesar de que la Ingeniería de la Web utiliza principios de ingeniería de software, incluye nuevos enfoques, metodologías, herramientas, técnicas, guías y patrones para cubrir los requisitos únicos de las aplicaciones Web.
La metodología IWeb contiene etapas las cuales se describen a continuación:
  • Formulación: Se identifican las metas y objetivos.
  • Planificación: Se estiman los costos del proyecto de forma global, los riesgos, las etapas y sub-etapas.
  • Análisis: Se establecen los requerimientos técnicos, de diseño y se identifican los elementos del contenido.
  • Ingeniería: Esta etapa se divide en :

Diseño del Contenido: Se realizan por el mismo personal no técnico. Recopilación de información, medios audiovisuales a integrar en la aplicación.
Producción: Se considera el formato final de la publicidad y de los comentarios.
Diseño Arquitectónico: Definición de la estructura global y de las configuraciones de diseño y plantillas.
Diseño de Navegación: Se identifican los componentes de la arquitectura.
Diseño de la Interfaz: Se crean escenarios de usuario y se generan los formatos de pantalla y el desarrollo junto con las modificaciones de prototipos.

  • Generación de Páginas: Se integran la aplicación Web con el software.
  • Pruebas: Se revisa la aplicación con el fin de encontrar y corregir los errores.
  • Evaluación del Cliente: Es una fase a ejecutar cada vez que se termina alguna de las anteriores. Los cambios se hacen efectivos por el flujo incremental del proceso.

Para mayor información visita los siguientes link:

http://www.triotec.cl/index.php?option=com_content&view=article&id=52&Itemid=66

http://www.informandote.com/jornadasIngWEB/articulos/jiw01.pdf

miércoles, 18 de febrero de 2009

Gestión de Proyectos de Software

  • Paradigma orientado a objetos:

El paradigma orientado a objetos, se basa en los conceptos de objetos y clases de objetos. Un objeto es una variable equipada con un conjunto de operaciones que le pertenecen o están definidas para ellos. El paradigma orientado a objetos actualmente es el paradigma más popular y día a día los programadores, estudiantes y profesionales tratan de tomar algún curso que tenga que ver con este paradigma.

Una de las bondades importantes de los lenguajes orientados a objetos es que las definiciones de los objetos pueden usarse una y otra vez para construir múltiples objetos con las mismas propiedades o modificarse para construir nuevos objetos con propiedades similares pero no exactamente iguales.

  • Conceptos de orientación a objetos:
  1. Clase: Es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características.
  2. Atributo: Los Atributos están asociados a clases y objetos, ellos describen la clase y el objeto de alguna manera.
  3. Método: Consiste generalmente de una serie de sentencias (interacciones) con los objetos para llevar a cabo una acción, un juego de parámetros de entrada que regularán dicha acción y, posiblemente, un valor de salida
  4. Abstracción: Consiste en captar las características esenciales de un objeto, así como su comportamiento.
  5. Encapsulamiento: consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad.
  6. Ocultamiento: Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer sólo los detalles que sean necesarios para el resto del sistema.
  7. Herencia: Es uno de los conceptos más cruciales en la POO. La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase.
  8. Paso de Mensajes: La comunicación con el objeto se realiza a través del paso de mensajes. El envío de un mensaje a una instancia de una clase produce la ejecución de un método. El paso de mensajes es el termino utilizado para referirnos a la invocación o llamada de una función miembro de un objeto. La noción de paso de mensajes es fundamental en todos los lenguajes de programación Orientada a Objetos.
  • Identificación de los elementos de un modelo de objeto:

Existen diferentes maneras que nos permiten identificar los elementos de un modelo de objetos. Podemos identificarlos examinando interpretando el planteamiento del problema a la función que desempeña aquel objeto. Los objetos pueden ser de diferentes tipos:

  1. Entidades Externas (dispositivos, personas) que maneja informaciones a usar por sistema computacional
  2. Ocurrencias o eventos (transformaciones de una serie de movimientos) que ocurren dentro del contexto de operación del sistema
  3. Papeles o roles (Ing. Vendedor) desempeñados por personas que interactúan con el sistema
  4. Cosas (Partes del dominio del problema)
  5. Lugares (Establece el contexto del problema y la función general del sistema)
  • Gestión de proyectos de software orientado a objeto:

Las técnicas modernas de gestión de proyectos de software se pueden dividir de las siguientes actividades:

  1. Establecimiento de un marco de proceso común para el proyecto.
  2. Uso métricas
  3. Especificación de productos de trabajo y avances.
  4. Definición de puntos de comprobación.
  5. Gestión de los cambios que ocurren invariablemente.
  6. Seguimiento.

Para aplicar estas actividades hay que tomar en cuenta que todas hay que enfocarlas usando un modelo propio.

Marco de proceso común para OO. (Orientado a objeto)
Define un enfoque organizativo para el desarrollo y mantenimiento del software. Identifica el paradigma de Ing. De software aplicado para construir y mantener software. Tiene la cualidad de ser adaptable, de forma que cumpla con las necesidades individuales del equipo de proyecto.
Para el desarrollo de proyectos de esta naturaleza no se pueden aplicar modelos lineales (ciclo de vida), sino que es necesario aplicar un modelo que contemple un desarrollo iterativo. Iterativo significa que el software evolucione a través de un número de ciclos. El software OO debe ser evolutivo por naturaleza

Para la gestión de un proyecto de POO se necesita:

  1. Realizar los análisis suficientes para aislar las clases de problemas y las conexiones más importantes.
  2. Realizar un pequeño diseño para determinar si las clases y pueden ser implementadas de forma practica.
  3. Extraer objetos reutilizables.
  4. Conducir alguna prueba para descubrir errores.
  5. Obtener retroalimentación del cliente.
  6. Modificar el modelo de análisis basándose en lo que se ha aprendido.
  7. Refinar el diseño.
  8. Construir objetos especiales.
  9. Ensamblar un nuevo prototipo.
  10. Realizar pruebas para descubrir errores del prototipo
  11. Obtener retroalimentación del cliente.





miércoles, 11 de febrero de 2009

Introducción a la ingenieria de Software

  • Ingeniería de Software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)
  • Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como Desarrollo de Software o Producción de Software ( Bohem, 1976).
  • Ingeniería de Software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
  • Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; es decir, la aplicación de la ingeniería al software (IEEE, 1993).


Evolución del Software:


1era Era Finales de los 50
Durante los primeros años de la era de la computadora, el software se contemplaba como un añadido. Existían pocos métodos sistemáticos. El desarrollo del software se realiza virtualmente sin ninguna planificación. El software se diseñaba a medida para cada aplicación y tenía una distribución relativamente pequeña.

2da Era – 1965-1977
La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre – maquina. Se estableció el software como producto y las llegas de las casas de software. Se comenzaron a realizar las actividades llamadas “Mantenimiento del software”

3era Era 1978-1979
El sistema distribuido, múltiples computadoras, cada una ejecutando funciones concurrentes y comunicándose con alguna otra, incrementó notablemente la complejidad de los sistemas informáticos

4ta Era – Inicio de los 90
Los sistemas informáticos se alejan de las computadoras individuales y de los programas de computadoras, dirigiéndose al impacto colectivo de las computadoras y del software. La industria del software ya es la cuna de la economía del mundo. Las técnicas de la cuarta generación para el desarrollo del software están cambiando en la forma en que la comunidad del software construye programas informáticos. Las tecnologías orientadas a objetos están desplazando rápidamente los enfoques de desarrollo de software más convencionales en muchas áreas de desarrollo de software

El producto y el proceso de software:
Proceso de software: Conjunto estructurado de actividades requeridas para desarrollar un sistema de software.

  • Especificación.
  • Diseño.
  • Validación.
  • Evolución.


Características del Proceso
Entendible
• ¿Se encuentra el proceso bien definido y es entendible?
Visible
• ¿El proceso es visible al exterior?
Soportable
• ¿Puede el proceso ser soportado por herramientas CASE?
Aceptable
• ¿El proceso es aceptado por aquellos involucrados en el?.
Confiable
• ¿Los errores del proceso son descubiertos antes de que se conviertan en errores del producto?
Robusto
• ¿Puede continuar el proceso a pesar de problemas inesperados?
Mantenible
• ¿Puede el proceso evolucionar para cumplir con los objetivos organizacionales?
Rapidez
• ¿Qué tan rápido puede producirse el sistema?

Desarrollo basado en componentes

  • Un componente es una pieza de código preelaborado que encapsula alguna funcionalidad expuesta a través de interfaces estándar.
  • Los componentes son los "ingredientes de las aplicaciones", que se juntan y combinan para llevar a cabo una tarea.


El paradigma de ensamblar componentes y escribir código para hacer que estos componentes funcionen se conoce como Desarrollo de Software Basado en Componentes. El uso de este paradigma posee algunas ventajas:

  • Reutilización del software. Nos lleva a alcanzar un mayor nivel de reutilización de software.
  • Simplifica las pruebas. Permite que las pruebas sean ejecutadas probando cada uno de los componentes antes de probar el conjunto completo de componentes ensamblados.
  • Simplifica el mantenimiento del sistema. Cuando existe un débil acoplamiento entre componentes, el desarrollador es libre de actualizar y/o agregar componentes según sea necesario, sin afectar otras partes del sistema.
  • Mayor calidad. Dado que un componente puede ser construido y luego mejorado continuamente por un experto u organización, la calidad de una aplicación basada en componentes mejorará con el paso del tiempo.


Métodos Formales
"Método formal es cualquier técnica que trate la construcción y/o el análisis de modelos matemáticos que contribuyen a la automatización del desarrollo de sistemas informáticos"
Los métodos formales se basan en el empleo de técnicas, lenguajes y herramientas definidos matemáticamente para cumplir objetivos tales como facilitar el análisis y construcción de sistemas confiables independientemente de su complejidad, delatando posibles inconsistencias o ambigüedades que de otra forma podrían pasar inadvertidas.
En los últimos años, la idea de que la formalización matemática del SW es el enfoque más apropiado para conseguir mejorar su calidad va adquiriendo cada vez más fuerza. Los partidarios de los métodos formales defienden que su empleo, a lo largo de todo el ciclo de vida, facilita el desarrollo de especificaciones claras, concisas y no ambiguas, permite el análisis funcional de la especificación y posibilita el desarrollo de implementaciones correctas respecto a su especificación. Sin embargo los detractores aseguran que el empleo de métodos formales supone un volumen de trabajo considerable, aumento en los costes y tiempo de desarrollo y que debe quedar supeditado a herramientas que lo automaticen.


Ventajas de los métodos formales

  • Se comprende mejor el sistema.
  • La comunicación con el cliente mejora ya que se dispone de una descripción clara y no ambigua de los requisitos del usuario.
  • El sistema se describe de manera más precisa.
  • El sistema se asegura matemáticamente que es correcto según las especificaciones.
  • Mayor calidad software respecto al cumplimiento de las especificaciones.
  • Mayor productividad


Técnicas de cuarta generación
El termino de técnicas de cuarta generación (T4G) Abarca un amplio espectro de herramientas de software que tienen algo en común: todas facilitan al ingeniero del software la especificación de algunas características del software a alto nivel. Luego, la herramienta genera automáticamente el código fuente basándose en la especificación del técnico. Cada vez parece más evidente que cuanto mayor sea el nivel en la que se especifique el software, mas rápido se podrá conseguir el programa