domingo, 9 de abril de 2017

Investigacion Ingenieria de Software

Recopilación de Requerimientos
Se divide en 7 conceptos:
-Concepción. ¿Cómo inicia un proyecto de software? ¿Existe un solo evento que se convierte en el catalizador de un nuevo sistema o producto basado en computadora o la necesidad evoluciona en el tiempo? No hay respuestas definitivas a estas preguntas. En ciertos casos, una conversación casual es todo lo que se necesita para desencadenar un trabajo grande de ingeniería de software. Pero en general, la mayor parte de proyectos comienzan cuando se identifica una necesidad del negocio o se descubre un nuevo mercado o servicio potencial.
-Indagación. En verdad que parece muy simple: preguntar al cliente, a los usuarios y a otras personas cuáles son los objetivos para el sistema o producto, qué es lo que va a lograrse, cómo se ajusta el sistema o producto a las necesidades del negocio y, finalmente, cómo va a usarse el sistema o producto en las operaciones cotidianas. Pero no es simple: es muy difícil.
Se han identificado cierto número de problemas que se encuentran cuando
Ocurre la indagación:
• Problemas de alcance.
• Problemas de entendimiento.
• Problemas de volatilidad.
-Elaboración. La elaboración está motivada por la creación y mejora de escenarios de usuario que describan cómo interactuará el usuario final (y otros actores) con el sistema. Cada escenario de usuario se enuncia con sintaxis apropiada para extraer clases de análisis, que son entidades del dominio del negocio visibles para el usuario final.
-Negociación. No es raro que los clientes y usuarios pidan más de lo que puede lograrse dado lo limitado de los recursos del negocio. También es relativamente común que distintos clientes o usuarios propongan requerimientos conflictivos con el argumento de que su versión es “esencial para nuestras necesidades especiales”. 
-Especificación. En el contexto de los sistemas basados en computadora (y software), el término especificación tiene diferentes significados para distintas personas. Una especificación puede ser un documento escrito, un conjunto de modelos gráficos, un modelo matemático formal, un conjunto de escenarios de uso, un prototipo o cualquier combinación de éstos.
-Validación. La calidad de los productos del trabajo que se generan como consecuencia de la ingeniería de los requerimientos se evalúa durante el paso de validación. La validación de los requerimientos analiza la especificación a fin de garantizar que todos ellos han sido enunciados sin ambigüedades; que se detectaron y corrigieron las inconsistencias, las omisiones y los errores, y que los productos del trabajo se presentan conforme a los estándares establecidos para el proceso, el proyecto y el producto.
-Administración de los requerimientos. Los requerimientos para sistemas basados en computadora cambian, y el deseo de modificarlos persiste durante toda la vida del sistema. La administración de los requerimientos es el conjunto de actividades que ayudan al equipo del proyecto a identificar, controlar y dar seguimiento a los requerimientos y a sus cambios en cualquier momento del desarrollo del proyecto.

Preguntas de Formulación
Antes de preocuparse por las preguntas de formulación que debe hacer, debe identificar quién será el objetivo de las preguntas. Necesitará identificar a las partes interesadas. Una parte interesada puede definirse como "cualquier persona que se beneficia directa o indirectamente del sistema que se está desarrollando" -Ian Sommerville.
En el mejor de todos los mundos, una persona será el centro de sus preguntas. Este individuo tendrá una experiencia empresarial adecuada, un buen conocimiento técnico y la autoridad para negociar las necesidades en términos de tiempo de entrega y recursos. Sin embargo, es más probable que se ocupe de un número de diferentes partes interesadas, cada una con un punto de vista diferente, a veces necesidades divergentes y conocimientos técnicos y de negocios sustancialmente diferentes. En general, las partes interesadas se basan en las siguientes categorías: gerentes de negocios, gerentes de producto, personas de marketing, clientes internos y externos, usuarios finales, consultores, ingenieros de productos, ingenieros de Web y personal de soporte y mantenimiento.

Definición de las Categorías de Usuario
-Gerentes y altos ejecutivos. Son los que se les permite controlar, controlar y, en general, gestionar los procesos institucionales. Son sistemas de apoyo a las personas y equipos que tienen que estar pendientes si las "cosas funcionan bien". Algunas características clásicas de estos tipos de usuarios requieren que organicen y resuelvan las decisiones semiestructuradas, realicen la gestión de riesgos bajo diversos escenarios y lleven a cabo la planificación con un horizonte a la escala de meses, trimestre o año.
-Operadores. Ellos son responsables de acceder a la información crítica de negocios y tener la capacidad de distribuir dicha información a las diferentes personas de la organización y los usuarios para asegurar la toma de decisiones basadas en información precisa, confiable y oportuna que puede afectar el desarrollo y el éxito del negocio.

Desarrollo de Casos de Uso
En ésta es posible identificar a los actores principales, y a los secundarios cuando se sabe más del sistema. Los actores principales interactúan para lograr la función requerida del sistema y obtienen el beneficio previsto de éste. Trabajan con el software en forma directa y con frecuencia. Los actores secundarios dan apoyo al sistema, de modo que los primarios puedan hacer su trabajo.
Una vez identificados los actores, es posible desarrollar casos de uso. Se sugieren varias preguntas que debe responder un caso de uso:
• ¿Quién es el actor principal y quién(es) el(los) secundario(s)?
• ¿Cuáles son los objetivos de los actores?
• ¿Qué precondiciones deben existir antes de comenzar la historia?
• ¿Qué tareas o funciones principales son realizadas por el actor?
• ¿Qué excepciones deben considerarse al describir la historia?
• ¿Cuáles variaciones son posibles en la interacción del actor?
• ¿Qué información del sistema adquiere, produce o cambia el actor?
• ¿Tendrá que informar el actor al sistema acerca de cambios en el ambiente externo?
• ¿Qué información desea obtener el actor del sistema?
• ¿Quiere el actor ser informado sobre cambios inesperados?

miércoles, 5 de abril de 2017

Mejores Practicas de la Ingeniería Web

Nosotros sabemos que los equipos de ingeniería web a veces están bajo una enorme presión de tiempo y tratará de tomar atajos. También aceptamos el hecho de que algunos equipos de WebE quieren mantener las cosas muy informales y rechazar la noción de un marco de proceso y definir métodos como una cuestión de filosofía. Se cree que ese tipo de razonamiento es erróneo, pero es una llamada hecha, esperando que se pase suficiente tiempo evaluando cada una de las prácticas que se describen a continuación, aceptando aquellas que parezcan aplicables y rechazar a los que no lo hacen. Como un mínimo absoluto, también se espera que se adopten las siguientes prácticas recomendadas cuando desarrollen WebApps de cualquier índole:

1.    Debe tomarse el tiempo para entender las necesidades del negocio y los objetivos del producto. Muchos WebApp erróneamente creen que los requisitos comunes les libera de la necesidad de asegurarse de que el sistema acerca de ingeniero tiene un propósito comercial legítimo. El resultado final es el buen trabajo técnico que da lugar al sistema incorrecto que es construido por las razones equivocadas y por el público equivocado. Si las partes interesadas no pueden enunciarse como una necesidad de negocio para el WebApp, debe procederse con extrema precaución. Si las partes interesadas luchan por identificar un conjunto de objetivos claros para el producto (WebApp), no debe procederse hasta que puedan.

2.    Describir cómo los usuarios interactuarán con el WebApp utilizando un enfoque. Se debe convencer a las partes interesadas de que desarrollen escenarios que reflejan cómo los distintos usuarios interactuarán con la Aplicación Web. Estos escenarios pueden ser utilizados: para la planificación de proyectos y para orientar el análisis y modelado del diseño, y más importante, para el diseño de pruebas.

3.    Debe desarrollarse un plan de proyecto, aunque sea muy breve. Base el plan en un marco de proceso que sea aceptable para todas las partes interesadas. Debido a que las líneas de tiempo del proyecto son muy cortas, utilice una granularidad "buena" para su programarla; es decir, en muchos casos, el proyecto debe programarse y rastreado sobre una base diaria.

4.    Pase algún tiempo modelando lo que es lo que vas a construir. Generalmente, no se desarrolla una documentación exhaustiva de análisis y diseño. Como parte del trabajo de ingeniería web. Sin embargo, los gráficos bien orientados modelos pueden iluminar ingeniería importante cuestiones.

5.    Revise los modelos de consistencia y calidad. Pasos a través de parejas y otros tipos de revisiones deben realizarse en un WebE proyecto. El tiempo dedicado a los exámenes paga dividendos importantes porque elimina la reelaboración y da como resultado una WebApp de alta calidad, lo que le da satisfacción al cliente.

6.    Utilice herramientas y tecnología que le permitan construir el sistema con tantos componentes reutilizables como sea posible. Una amplia gama de las herramientas de WebApp están disponibles para casi todos los aspectos de la construcción de WebApp. Muchas de estas herramientas permiten a un ingeniero de red construir significa -De la aplicación utilizando componentes reutilizables.

7.    No se debe reinventar cuando se puede reutilizar. Una amplia gama de patrones de diseño han sido desarrollados para WebApps. Estos patrones permiten a un equipo WebE Desarrollar detalles de arquitectura, navegación y componentes a Plantillas probadas.

8.    No confíe en los primeros usuarios para depurar el diseño WebApp las pruebas y ejecutarlas antes de liberar el sistema. Usuarios de un WebApp a menudo le dará una oportunidad. Si no funciona, se mueven en otro lugar, no se debe volver. Es por esta razón que "primero pruebe, después despliegue". Ésta, debe ser una filosofía primordial, incluso si los plazos deben ser estirados.


Referencias:

Roger S. Pressman , “Web Engineering: A Practioner's Approach”. 

domingo, 2 de abril de 2017

Atributos de las WebApps

Intensivas de Red. Por su propia naturaleza, una WebApp es intensiva de red. Reside en una red y debe dar servicio a las necesidades de una comunidad diversa de clientes. Una WebApp puede residir en Internet (haciendo posible así una comunicación abierta par todoel mundo). De forma alternativa, una aplicación se puede ubicar en una Intranet (implementando la comunicación a través de redes de una organización) o una Extranet (comunicación entre redes).

Controlada por el contenido. En muchos casos, la función primaria de una WebApp es utilizar hipermedia para presentar al usuario el contenido de textos, gráficos, sonido y vídeo.
Evolución continua. A diferencia del software de aplicaciones convencional, que evoluciona con una serie de versiones planificadas y cronológicamente espaciadas, las aplicaciones Web están en constante evolución. No es inusual que algunas WebApps (específicamente, su contenido) se actualicen cada hora. Un cuidado y una alimentación continua permite que un sitio Web crezca (en robustez y en importancia). Pero a diferencia de un jardín, las aplicaciones Web deben de servir (y adaptarse a) las necesidades de más de un jardinero, Las siguientes características de WebApps son las que conducen el proceso:

Inmediatez. Las aplicaciones basadas en Web tienen una inmediatez [NOR99] que no se encuentra en otros tipos de software. Es decir, el tiempo que se tarda en comercializar un sitio Web completo puede ser cuestión de días o semanas3. Los desarrolladores deberán utilizar los métodos de planificación, análisis, diseño, implementación y comprobación que se hayan adaptado a planificaciones apretadas en tiempo para el desarrollo de WebApps.

Seguridad. Dado que las WebApps están disponibles a través de1 acceso por red, es difícil, si no imposible, limitar la población de usuarios finales que pueden acceder a la aplicación. Con objeto de proteger el contenido confidencial y de proporcionar formas seguras de transmisión de datos, deberán implementarse fuertes  medidas de seguridad en toda la infraestructura que apoya una WebApp y dentro de la misma aplicación.

Estética. Una parte innegable del atractivo de una WebApp es su apariencia e interacción. Cuando se ha diseñado una aplicación con el fin de comercializarse o vender productos o ideas, la estética puede tener mucho que ver con el éxito del diseño técnico.

Categorias de los WebApps

Categoría
Descripción
Informativa
El contenido de solo lectura con navegación.
Descarga
Descarga información del servidor apropiado.
Personalizable
El usuario personaliza sus necesidades especificas.
Interacción
La interacción entre una comunidad de personas lo que se le conoce como relaciones sociales a través de Internet
Entrada de usuario
La entrada un registro para una base de datos un mecanismo para la comunicación.
Orientación a transacciones
El usuario realiza una solicitud por ejemplo hace un pedido aquí podemos poner muchos ejemplos como la compra de ebay o el encardo de supermercado pero también las transacciones de base de datos.


Proceso de Scrum


Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos.

Hablando del proceso, un proyecto se ejecuta en bloques temporales cortos y fijos (iteraciones que normalmente son de 2 semanas, aunque en algunos equipos son de 3 y hasta 4 semanas, límite máximo de feedback y reflexión). Cada iteración tiene que proporcionar un resultado completo, un incremento de producto final que sea susceptible de ser entregado con el mínimo esfuerzo al cliente cuando lo solicite. El proceso parte de la lista de objetivos/requisitos priorizada del producto, que actúa como plan del proyecto. En esta lista el cliente prioriza los objetivos balanceando el valor que le aportan respecto a su coste y quedan repartidos en iteraciones y entregas.

Planeacion de iteracion

Primera parte de la reunión:
-Se realiza en un timebox de cómo máximo 4 horas.
-El cliente presenta al equipo la lista de requisitos priorizada del producto o proyecto, pone nombre a la meta de la iteración (de manera que ayude a tomar decisiones durante su ejecución) y propone los requisitos más prioritarios a desarrollar en ella.
-El equipo examina la lista, pregunta al cliente las dudas que le surgen, añade más condiciones de satisfacción y selecciona los objetivos/requisitos más prioritarios que se compromete a completar en la iteración, de manera que puedan ser entregados si el cliente lo solicita.

Segunda parte de la reunión.
-Se realiza en un timebox de cómo máximo 4 horas.
-El equipo planifica la iteración, elabora la táctica que le permitirá conseguir el mejor resultado posible con el mínimo esfuerzo. Esta actividad la realiza el equipo dado que ha adquirido un compromiso, es el responsable de organizar su trabajo y es quien mejor conoce cómo realizarlo.
-Define las tareas necesarias para poder completar cada objetivo/requisito, creando la lista de tareas de la iteración (Sprint Backlog) basándose en la definición de completado.
-Realiza una estimación conjunta del esfuerzo necesario para realizar cada tarea.
-Cada miembro del equipo se autoasigna a las tareas que puede realizar.

Ejecucion de la iteracion

Cada iteración tiene que proporcionar un resultado completo, un incremento de producto que sea potencialmente entregable, de manera que cuando el cliente (Product Owner) lo solicite sólo sea necesario un esfuerzo mínimo para que el producto este disponible para ser utilizado. Para ello, durante la iteración el equipo colabora estrechamente y se llevan a cabo las siguientes dinámicas:

-Cada día el equipo realiza una reunión de sincronización, donde cada miembro inspecciona el trabajo de los otros para poder hacer las adaptaciones necesarias, comunica cuales son los impedimentos con que se encuentra, actualiza el estado de la lista de tareas de la iteración (Sprint Backlog) y los gráficos de trabajo pendiente (Burndown charts).
-El Facilitador (Scrum Master) se encarga de que el equipo pueda cumplir con su compromiso y de que no se merme su productividad.
    *Elimina los obstáculos que el equipo no puede resolver por sí mismo.
    *Protege al equipo de interrupciones externas que puedan afectar su compromiso o su       productividad.

El último día de la iteración se realiza la reunión de revisión de la iteración.
Tiene dos partes:
1. Demostración (4 horas máximo). El equipo presenta al cliente los requisitos completados en la iteración, en forma de incremento de producto preparado para ser entregado con el mínimo esfuerzo.
2. Retrospectiva (4 horas máximo). El equipo analiza cómo ha sido su manera de trabajar y cuáles son los problemas que podrían impedirle progresar adecuadamente, mejorando de manera continua su productividad.

Referencias
https://es.wikipedia.org/wiki/Scrum_(desarrollo_de_software)
http://juan-garcia-carmona.blogspot.mx/2012/08/mi-resumen-de-scrum.html