martes, 8 de enero de 2013


METRICAS DE DISEÑO DE WEBAPPS

Es una muestra representativa de métricas de diseño webapp que se han propuesto en la literatura. Es importante observar que muchas de ellas todavía no se validan  por lo que deben usarse juiciosamente.

MÉTRICAS DE INTERFAZ
MÉTRICAS ESTÉTICAS (diseño gráfico)
MÉTRICAS DE CONTENIDO
MÉTRICAS DE NAVEGACIÓN

Técnicas para Webapps

OBJETIVO.- auxiliar a los ingenierosweb a desarrollar metricas webapp significativas que proporcionen comprension acerca de la calidad global de una aplicacion.

MECANICA.- la mecanica de las herramientas varia.

HERRAMIENTAS SIGNIFICATIVAS.- Netmechanic Tools, desarrollada por Netmechanic es una colección de herramientas q ayudan a mejorar el desempeño de sitios web y que se enfocan en conflictos específicos de implementacion.
NIST Web Metrics Testbed, desarrollada por The National Institute of Standars and Technology abarca la siguiente colección de útiles herramientas que están disponibles para descarga:
Web Static Analyzer Tool: comprueba el HTML de la pagina web contra lineamientos de usuabilidad tipicos
Web Category Analysis Tool: permite que el ingeniero de usuabilidad construya y realice un análisis de categoría web
Web Variable Instrumenter Program: instrumenta un sitio web para capturar una bitácora de interacción con el usuario
Framework for Logging Usability Data: implenta un formateador de archivo y analizador gramatical para representación de las bitácoras de interacción del usuario
VisVIP Tool: produce una visualización 3D de las rutas de navegación del usuario a través de un sitio web
TreeDec: agrega auxiliares de navegación a las paginas de un sitio web




GESTIÓN DE PROYECTOS DE SOFTWARE



La gestión de proyectos busca las técnicas necesarias para planificar, organizar, supervisar y controlar proyectos de software. El objetivo de gestionar proyectos es tener un producto de alta calidad.

La gestión de un proyecto de software se centra en tres partes como son: 
- Personal
- Problema 
- Proceso

- Personal: El factor humano es importante en la ingeniería de software. Es importante tener la capacidad de gestión del personal con el fin de aumentar la preparación en la organización del software; ayudando a atraer, motivar y retener el talento necesario para mejorar su capacidad de desarrollo de software.

En toda organización que alcanza la madurez en el área de gestión de personal tiene una mayor probabilidad de implementar unas eficaces prácticas de ingeniería de software, esto guía a que las organizaciones tengan un proceso de software maduro.

- El problema: Se establecen los objetivos y se deben considerar soluciones alternativas e identificar las dificultades técnicas y de gestión. Con esta información es posible definir unas estimaciones razonables del costo, una valoración efectiva del riesgo, una subdivisión realista de las tareas del proyecto o una planificación del proyecto asequible que proporcione una indicación fiable del progreso.

El desarrollador de software y el cliente deben reunirse para definir los objetivos del proyecto. Los objetivos identifican las metas generales del proyecto sin considerar cómo se conseguirán.

Se identifican los datos primarios, funciones y comportamientos que caracterizan el problema, intenta abordar estas características de una manera cuantitativa. También se consideran las soluciones alternativas, estas permiten a los gestores y a los profesionales seleccionar el mejor enfoque.

- Proceso: En el proceso de software proporciona la estructura desde la que se puede establecer un detallado plan para el desarrollo del software. Las actividades estructurales se pueden aplicar a todos los proyectos de software, sin tener en cuenta su tamaño o complejidad, además permiten a las actividades estructurales adaptarse a las características del proyecto de software y a los requisitos del equipo del proyecto.




Personal

El proceso de software lo componen participantes que pueden clasificarse en cinco categorías:

- Gestores superiores: definen los aspectos de negocios que a menudo tienen una significativa influencia en el proyecto

- Gestores técnicos del proyecto: deben planificar, organizar y controlar a los profesionales que realizan el trabajo del software.

- Profesionales: proporcionan las capacidades técnicas para la ingeniería de un producto

- Clientes: especifica los requisitos para la ingeniería de software.

- Usuarios finales: interaccionan con el software una vez que se ha entregado para la producción.


Para gestionar un proyecto de software, se requiere que el jefe del equipo humano tenga motivación, organización, ideas o innovación. El gestor del proyecto debe concentrarse en entender el problema a resolver, gestionando el flujo de ideas. Existen otras características como dotes de gestión, incentivo de los logros, espíritu de equipo.

Hay muchos motivos por los que los proyectos de software pueden tener problemas como son: 
- La escala del desarrollo es grande, esto conduce a tener complejidades y dificultades para coordinar a los miembros del equipo. 
- La incertidumbre se dan cambios continuos que impactan en el equipo del proyecto
- La interoperatividad es una característica de los sistemas

El software nuevo debe comunicarse con el anterior y ajustarse a las limitaciones predefinidas impuestas por el sistema. Los miembros de un equipo de ingeniería del software comparten ideas, piden ayudas a medida que surgen los problemas e interactúan los unos con los otros.




Problema

Busca un análisis detallado de los requisitos del software proporcionaría la información necesaria para las estimaciones, claro esta que puede llevar semanas o meses. Se debe examinar el problema al inicio de proyecto, establecer el problema y delimitándolo.
La primera gestión un proyecto de software es determinar el ámbito del software. Se define el contexto, que limitaciones se imponen; el objetivo de la información, que datos se obtienen del software; y la función, que realiza el software para transformar la información.

Para la descomposición del problema tiende a aplicarse la estrategia de divide y vencerás, cuando se enfrenta a problemas complejos, es decir el problema se parte en problemas más pequeños y con esto se busca que sean manejables.



Proceso

Las fases que caracterizan el proceso de software se encuentran la definición, el desarrollo y el mantenimiento. El gestor del proyecto decide qué modelo es el más adecuado para desarrollar el proyecto, luego debe definir un plan preliminar, para luego continuar con la descomposición del proceso. Se debe tener en cuenta la maduración del problema, descomposición del proceso. Es importante invertir tiempo al principio del proyecto para tener un plan con buenas bases que se evidencian durante el desarrollo del proyecto y llevar el control de calidad de dicho proyecto.


Modelos de Ciclo de Vida de Software


Define el estado de las fases a través de las cuales se mueve un proyecto de desarrollo de software


MODELO EN CASCADA



Este es el más básico de todos los modelos. su visión  dice que el desarrollo de software es a través de una secuencia simple de fases. Cada fase tiene un conjunto de metas bien definidas. Utiliza punto de control para pasar a la siguiente fase: Análisis, Diseño, Codificación, Pruebas, Implementación, Mantenimiento. Se tarda mucho tiempo en pasar todo el ciclo. El fracaso del software es la comunicación con el usuario final. Se utiliza en proyectos con requerimientos bien definidos. Las flechas muestran el flujo de información entre las fases. 
este modelo se enfrasca en los en: Planear un proyecto antes de embarcarse en él. Definir el comportamiento externo antes de diseñar su arquitectura interna. Documentar los resultados de cada actividad. Diseñar un sistema antes de codificarlo. Testear el sistema después de construirlo.


MODELO DE DESARROLLO INCREMENTAL




Existen riesgos en el desarrollo de sistemas largos y complejos. La forma de reducir los riesgos es construir una parte del sistema. 
Un sistema pequeño es siempre menos riesgoso que construir un sistema grande.es más fácil determinar si los requerimientos para los niveles subsiguientes son correctos.
Reduciendo el tiempo de desarrollo de un sistema decrecen las probabilidades que esos requerimientos de usuarios puedan cambiar durante el desarrollo. Los errores de desarrollo realizados en un incremento, pueden ser arreglados antes del comienzo del próximo incremento



MODELO DE DESARROLLO EVOLUTIVO



El modelo de desarrollo evolutivo construye versiones sucesivas de un producto, el modelo evolutivo asume que los requerimientos no son completamente conocidos al inicio del proyecto.
Basada en esta retro alimentación, la especificación de requerimientos es actualizada. El desarrollo de software en forma evolutiva requiere un especial cuidado en la manipulación de documentos, programas, datos de test, etc. desarrollados para distintas versiones del software.


MODELO PROTOPITADO DE REQUERIMIENTOS




El prototipado de requerimientos es la creación de una implementación parcial de un sistema, para el propósito explícito de aprender sobre los requerimientos del sistema. Un prototipo es construido de una manera rápida tal como sea posible.



MODELO ESPIRAL


Basada en la necesidad continúa de refinar los requerimientos y estimaciones del proyecto.Efectivo para proyectos pequeños donde con la retro alimentación dada por el cliente, se aprueba las diferentes etapas, puede ocurrir el riesgo que no se defina bien los objetivos por el cual el desarrollo puede ser caótico.
Modelo Concurrente
El modelo concurrente provee una meta-descripción del proceso software, tiene la capacidad de describir las múltiples actividades del software ocurriendo simultáneamente.
Los requerimientos son denominadas "líneas de base", es decir que cuando una mayoría de los requerimientos comienzan a ser bien entendidos, en este tiempo se dedica un esfuerzo considerable al diseño. Sin embargo, una vez que comienza el diseño, cambios a los requerimientos son comunes y frecuentes. 





INGENIERÍA DE SOFTWARE

Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software.

Etapas del proceso

La ingeniería de software requiere llevar a cabo numerosas tareas agrupadas en etapas, al conjunto de estas etapas se le denomina ciclo de vida. Las etapas comunes a casi todos los modelos de ciclo de vida se pueden son las siguiente

Análisis de requisitos


Extraer los requisitos de un producto de software es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere habilidad y experiencia para reconocer requisitos incompletos, ambiguos o contradictorios. 


Especificación

La especificación de requisitos describe el comportamiento esperado en el software una vez desarrollado. Gran parte del éxito de un proyecto de software radicará en la identificación de las necesidades del negocio (definidas por la alta dirección), así como la interacción con los usuarios funcionales para la recolección, clasificación, identificación, priorización y especificación de los requisitos del software.
Entre las técnicas utilizadas para la especificación de requisitos se encuentran:
  • Caso de uso
  • Historias de usuarios
Siendo los primeros más rigurosas y formales, los segundas más ágiles e informales.

Arquitectura

La integración de infraestructura, desarrollo de aplicaciones, bases de datos y herramientas gerenciales, requieren de capacidad y liderazgo para poder ser conceptualizados y proyectados a futuro, solucionando los problemas de hoy. El rol en el cual se delegan todas estas actividades es el del Arquitecto.
El arquitecto de software es la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas.
La arquitectura de sistemas en general, es una actividad de planeación, ya sea a nivel de infraestructura de red y hardware, o de software.
La arquitectura de software consiste en el diseño de componentes de una aplicación (entidades del negocio), generalmente utilizando patrones de arquitectura. El diseño arquitectónico debe permitir visualizar la interacción entre las entidades del negocio y además poder ser validado, por ejemplo por medio de diagramas de secuencia. Un diseño arquitectónico describe en general el cómo se construirá una aplicación de software. Para ello se documenta utilizando diagramas, por ejemplo:
  • Diagramas de clases
  • Diagramas de base de datos
  • Diagramas de despliegue
  • Diagramas de secuencia

Programación

Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no necesariamente es la que demanda mayor trabajo y ni la más complicada. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.

Prueba

Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral, para así llegar al objetivo.

Documentación

Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML),diagramas de casos de uso, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema


Mantenimiento

Fase dedicada a mantener y mejorar el software para corregir errores descubiertos e incorporar nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo del software inicial. Alrededor de 2/3 del tiempo de ciclo de vida de un proyecto está dedicado a su mantenimiento. Una pequeña parte de este trabajo consiste eliminar errores siendo que la mayor parte reside en extender el sistema para incorporarle nuevas funcionalidades y hacer frente a su evolución.