jueves, 20 de agosto de 2015

Internacionalizacion y Localización de aplicaciones




Términos

  • Internacionalization (I18n), Globalization, son sinónimos
  • Localization, Regionalización (L10n)
  • Translation (Traducción)



Globalization (Internacionalization)
La internacionalización es el proceso mediante el cual se prepara un elemento o producto para permitir su adaptación a diferentes regiones. En el caso de los programas informáticos implica prepararlo para poder ser traducido a en varios idiomas, utilizar monedas diferentes o usar distintos formatos de fecha, por citar unos ejemplo. En algunos casos puede implicar pantallas o procesos de negocio diferentes. Así se puede decir que un programa informático esta internacionalizado cuando permite su adaptación a diferentes regiones.
Making sure that software displays numbers and other formats according to country or regional conventions, which can be done by querying the operating system, is part of the globalization process.

La internacionalización es el diseño y desarrollo de un producto, una aplicación o el contenido de un documento de modo tal que permita una fácil localización con destino a audiencias de diferentes culturas, regiones o idiomas.
La palabra internacionalización a veces se escribe "i18n", donde 18 es la cantidad de letras entre la i y la ene.
La internacionalización generalmente implica:
1. Un modo de diseño y desarrollo que elimine obstáculos a la localización o la distribución internacional. Esto incluye cuestiones tales como (entre otras) usar Unicode o asegurar, allí donde corresponda, un correcto tratamiento de las codificaciones de caracteres anticuadas; controlar la concatenación de cadenas; o evitar que la programación dependa de valores de cadenas pertenecientes a la interfaz de usuario.
2. Habilitar características que tal vez no sean usadas hasta el momento de la localización. Por ejemplo, añadir en la DTD etiquetas para habilitar el texto bidireccional o la identificación de idiomas. O hacer la CSS compatible con texto vertical u otras características tipográficas ajenas al alfabeto latino.
3. Preparar el código para hacer frente a las preferencias locales, regionales, lingüísticas o culturales. Por lo general, esto supone incorporar características y datos de localización predefinidos a partir de bibliotecas existentes o de las preferencias del usuario. Algunos ejemplos son: formatos de fecha y hora, calendarios locales, formatos y sistemas de números, ordenamiento y presentación de listas, uso de nombres personales y formas de tratamiento, etc.
4. Separar del código o contenido fuente los elementos localizables, de modo que puedan cargarse o seleccionarse alternativas localizadas según determinen las preferencias internacionales del usuario.
Obsérvese que esta lista no incluye necesariamente la localización del contenido, la aplicación o el producto hacia otro idioma; se trata más bien de prácticas de diseño y desarrollo que facilitan esa migración en el futuro, pero que también pueden tener una utilidad considerable aunque la localización jamás se produzca.


Localization
La localización o regionalización es el proceso mediante el cual un producto internacionalizado se configura para una determinada región, aprovechando las opciones que la internacionalización previa de este producto ha permitido. Por ejemplo, la internacionalización puede permitir usar distintos formatos de fecha, y la localización es seleccionar el adecuado para una región. Así no tiene sentido decir "un programa internacionalizado a España", ya que la internacionalización es genérica, o decir "un programa localizado" sin indicar a qué región se ha localizado.

Se entiende por localización la adaptación de un producto, una aplicación o el contenido de un documento con el fin de adecuarlos a las necesidades (lingüísticas, culturales u otras) de un mercado destinatario concreto (una "localidad" o "local" [locale]).
La palabra localización a veces se escribe "l10n", donde 10 es la cantidad de letras entre la ele y la ene.
Aunque se la considera a menudo sinónimo de traducción de la interfaz de usuario y de la documentación, la localización suele ser un asunto considerablemente más complejo, que puede implicar la adaptación del contenido en relación con:
1.formatos numéricos, de fecha y de hora;
2.uso de símbolos de moneda;
3.uso del teclado;
4.algoritmos de comparación y ordenamiento;
5.símbolos, iconos y colores;
6.texto y gráficos que contengan referencias a objetos, acciones o ideas que, en una 7.cultura dada, puedan ser objeto de mala interpretación o considerados ofensivos;
diferentes exigencias legales;
8.y muchas otras cuestiones.
La localización puede requerir incluso una reelaboración exhaustiva de la lógica, el diseño visual o la presentación, si la forma de hacer negocios (por ejemplo, las normas contables) o el paradigma aceptado de aprendizaje (por ejemplo, énfasis en el individuo o en el grupo) en la localidad de destino difieren mucho en relación con la cultura originaria.


Localization is the process of adapting software for a local market, which includes translating the User Interface (if necessary), resizing dialog boxes, and customizing features.
Translating the UI is part of localization.

adjusting software to local cultural conventions. While white represents weddings in some cultures, it represents death in others.

  • Globalization is the process of making a product multi-lingual. All language-related aspects of the program are separated from the code, and all aspects, which vary with target country, are handled in a country-independent way.
  • Localization is the process of adapting a global product for a particular language and country. Localization includes translations and other conversion, and takes into account local practices and culture, providing a product, which is comfortable to use in the target country.
  • Translation is involved in most aspects of localization. Accuracy and appropriateness of translation are key to overall product quality.
  • Retrofitting is an informal term for localization of a product, which was not designed to be global. It is the first step taken by most companies entering the global marketplace.
- See more at: http://www.opticentre.net/FAQ/Globalization/What-is-the-difference-between-globalization-and-localization/#sthash.hVJdlR8v.dpuf



https://en.wikipedia.org/wiki/Internationalization_and_localization
https://es.wikipedia.org/wiki/Internacionalizaci%C3%B3n_y_localizaci%C3%B3n
Overview of Globalization and Localization
https://www.linkedin.com/grp/post/4075324-69639068

https://www.youtube.com/watch?v=7W7yy-CpmXY
https://msdn.microsoft.com/en-us/library/ms788718(v=vs.100).aspx
http://www.w3.org/International/questions/qa-i18n (muy bueno)
http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx
http://www.opticentre.net/FAQ/Globalization/What-is-the-difference-between-globalization-and-localization/
https://www.linkedin.com/grp/post/4075324-69639068( discusión importante acerca)
https://www.youtube.com/watch?v=SF5EdGRhRLc (Webinar)
http://www.hanselman.com/blog/GlobalizationInternationalizationAndLocalizationInASPNETMVC3JavaScriptAndJQueryPart1.aspx (VER LOS ARTICULOS QUE ESTAN ARRIBA)
http://pensandoensoa.com/2010/12/05/logica-de-negocio-adiomatica/ (ver esto)

martes, 17 de marzo de 2015

Patrones de diseño realizados por un fabricante comercial

http://www.dofactory.com/products/net-design-pattern-framework

Aquí es importante la visión de esta herramienta, en su alcance e impacto para el usuario

Con esto se puede comenzar a estudiar los patrones de diseño con los ejemplos que aparecen en su página web, están muy interesantes para comenzar a estudiar dicho tema

http://www.dofactory.com/net/design-patterns (Leer esto importante!!)


http://www.dofactory.com/products/pro-net-design-pattern-framework

(Versión Pro de la aplicación, está intersante para entender a muy gran escala las capas que debe tener la aplicación, en grandes rasgos)

viernes, 6 de febrero de 2015

Leyendo UML y Patrones Larman 2da Edición 2003 (INICIO)

Cap. 4 Inicio

La mayoría de los proyectos requieren una etapa inicial breve en la que se estudian las siguientes preguntas:

* Cuál es la visión y el análisis del negocio para este proyecto?
* Es viable? 
* Comprar y/o construir?
* Estimación aproximada del coste: 
* Deberíamos abordarlo o no seguir?

El objetivo de la etapa de inicio no es definir todos los requisitos, o generar una estimación creíble o plan de proyecto. Aún a riesgo de simplificar demasiado, la idea es hacer la investigación justa para informar una opinión racional y justificable  del propósito global y la viabilidad del nuevo sistema potencial, y decidir si merece la pena invertir en un estudio más profundo (el objetivo de la fase de elaboración).

La fase de inicio en una frase:
Vislumbrar el alcance del producto, visión y análisis del negocio.

El principal problema resuelto en una frase:
¿Está de acuerdo el personal involucrado en la visión del proyecto, y merece la pena invertir en un estudio serio?

Inicio: una analogía

En el negocio petrolero, cuando se está considerando una nueva zona, algunos de los pasos que hay que abordar son:

1.- Decidir si hay evidencias suficientes o un análisis del negocio que justifique perforaciones de exploración.
2.- De ser así, llevar a cabo medidas y perforaciones de exploración.
3.- Proporcionar información del alcance y estimación.
4.- Pasos adicionales...

La fase de inicio es como el primer paso en esta analogía. En el primer paso, no se predice cuánto petróleo hay, o el coste o esfuerzo para extraerlo. Es prematuro ( no hay suficiente información). 
En términos del UP, el paso de exploración realista se corresponde con la fase de elaboración. La fase de inicio que la precede es parecida a un estudio de viabilidad para decidir si incluso merece la pena invertir en perforaciones de exploración. Por lo tanto, en el desarrollo iterativo y el UP, los planes y estimaciones de la fase de inicio no deben considerarse fiables. Simplemente proporcionan una percepción del orden de la magnitud del grado de esfuerzo, para ayudar en la decisión de continuar o no.

La fase de inicio podría ser muy breve

El propósito de la fase de inicio es establecer una visión inicial de los objetivos del proyecto, determinar si es viable y decidir si merece la pena llevar a cabo algunas investigaciones serias en la fase de elaboración. Si esta decidido de antemano que el proyecto se hará sin ninguna duda, y es claramente viable (quizás porque el equipo ha desarrollado proyectos parecidos antes), entonces la fase de inicio será especialmente breve. Podría incluir los primeros talleres de requisitos, planificación de la primera iteración y, entonces, rápidamente, cambiar  a la elaboración.


¿Qué artefactos podrían crearse en la fase de inicio?


Una idea clave con respecto al desarrollo iterativo es comprender que estos artefactos sólo se completan parcialmente en esta fase, se refinarán en iteraciones posteriores, e incluso no deberían crearse a menos que se considere probable que añadirán valor práctico real. 
Por ejemplo, el Modelo de Casos de Uso podría listar los nombres de la mayoría de los casos de uso y actores esperados, pero quizás sólo describiría en detalle el 10% de los casos de uso -hecho con el pro-pósito de desarrollar una visión de alto nivel y sin detalles del alcance, objetivo y riesgos del sistema.
Nótese que en la fase de inicio se podrían realizar algunas tareas de programación con el objeto de crear prototipos de "pruebas de conceptos", para clarificar unos pocos requisitos mediante (generalmente) prototipos orientados a la interfaz de usuario, hacer experimentos de programación para cuestiones técnicas críticas.

¿No es eso mucha documentación?

Hay que recordar que los artefactos se deberían considerar opcionales. Se debe elegir sólo aquellos que realmente añadan valor al proyecto, y desecharlos si no se aprueba que merezcan la pena.
Lo importante de un artefacto no es el documento o el diagrama es sí mismo, sino el pensamiento, análisis y disposición activa (y entonces se registra, para evitar re-inventar o tener que repetir las cosas de palabra).

##Es recomendable almacenar digitalmente los artefactos en lugar de papel ## 

Obsérvese también que los artefactos UP de los proyectos anteriores se pueden utilizar en otros posteriores. Es normal que haya muchas similitudes entre proyectos en cuanto a los artefactos de riesgos, gestión del proyecto, pruebas y entorno. Todos los proyectos UP organizarán los artefactos de la misma manera, con los mismos nombres (Lista de Riesgos, Marco de Desarrollo, etc)



No se entendió el inicio cuando...
........


--------------------------------------------------------------------------------------------------------------------------


Cap. 5 Comprensión de Requisitos

Los requisitos  son capacidades y condiciones con las cuales debe ser conforme el sistema, y más ampliamente el proyecto. El primer reto del trabajo de los requisitos es encontrar, comunicar, y recordar (que normalmente significa registrar) lo que se necesita realmente, de manera que tenga un significado claro para el cliente y los miembros del equipo de desarrollo.

El UP fomenta un conjunto de buenas prácticas, una de las cuales es la gestión de requisitos. "Un enfoque sistemático para encontrar, documentar, organizar y seguir la pista de los requisitos cambiantes del sistema" ; en concreto, haciéndolo con destreza y sin ser descuidado. Fíjese en la palabra cambiantes; el UP acepta el cambio en los requisitos como un motor fundamental del proyecto. Otro término importante es encontrar, es decir, extraer cuidadosamente mediante técnicas tales como escritura de casos de uso y talleres de requisitos.

Como se indica en la figura siguiente, un estudio sobre los costes reales en diferentes empresas reveló que el 37% de ellos estaban relacionados con los requisitos, de manera que las cuestiones de requisitos constituyen la principal causa de problemas... La respuesta iterativa es utilizar un proceso que acepte el cambio y la retroalimentación como motores centrales en el descubrimiento de los requisitos.


Tipos de requisitos

En el UP, los requisitos se clasifican de acuerdo con el modelo FURPS+, un nemotécnico que significa los siguientes tipos de requisitos:

* (Functional) Funcional: características, capacidades y seguridad.
* (Usability) Facilidad de uso: factores humanos, ayuda, documentación.
* (Realiability) Fiabilidad: frecuencia de fallos, capacidad de recuperación de un fallo y grado de previsión.
* (Performance) Rendimiento: tiempos de respuesta, productividad, precisión, disponibilidad, uso de recursos.
*(Supportability) Soporte: adaptabilidad, facilidad de mantenimiento, internacionalización, configurabilidad.

El "+" en FURPS+ indica requisitos adicionales, tales como:

* Implementación:  limitación de recursos, lenguajes y herramientas, hardware...
* Interfaz: restricciones impuestas para la interacción con sistemas externos.
* Operaciones: gestión del sistema en su puesta en marcha. <------- (no sé qué esto)
* Empaquetamiento: <------- (definir esto)
* Legales: licencias, etc.

Algunos de estos requisitos se denominan colectivamente atributos de calidad, requisitos de calidad, o las "-ilities" de un sistema. Éstos comprenden: facilidad de uso (usability), fiabilidad (reliability), rendimiento (performance) y soporte (supportability). Lo normal es dividir los requisitos en funcionales (comportamiento) y no funcionales (todos los demás); a algunos no les gusta esta amplia generalización, pero se utiliza de manera muy extendida.

Los requisitos funcionales se estudian y recogen en el Modelo de Casos de Uso y en la lista de características del sistema del artefacto Visión. Los otros requisitos se pueden recoger en los casos de usos con los que están realcionados, o en el artefacto Especificación Complementaria. El artefacto Visión resume los requisitos de alto nivel que se elaboran en estos otros documentos. El Glosario agrupa y clarifica los términos que se utilizan en los requisitos. El Glosario en el UP también comprende el concepto de diccionario de datos, que reúne los requisitos relacionados con los datos, como reglas de validación, valores aceptables, etc. Los prototipos son un mecanismo para clarificar qué es lo que se quiere o es posible.

Como veremos cuando estudiemos el análisis arquitectural, los requisitos de calidad influyen fuertemente en la arquitectura de un sistema. Por ejemplo, un requisito de alto rendimiento y alta fiabilidad influirá en la elección de componentes software y hardware, y en sus configuraciones. La necesidades de fácil adaptación , debido a cambios frecuentes en los requisitos funcionales, igualmente dará forma al diseño del software.

Lecturas adicionales

Textos orientados a los casos de uso, como Writting Effective Use Cases, Cockburn

Acerca de requisitos, Cuerpo de Conocimientos en Ingeniería del Software (SWEBOK, Software Engineering Body of Knowledge) disponible en www.swebok.org

El SEI (www.sei.cmu.edu) tiene varias propuestas relacionadas con los requisitos de calidad. ISO e IEEE

Algunas advertencias con respecto a los libros generales sobre requisitos y casos de uso no enfocados en UP, e inclusive enfocados en UP.

1. La mayoría están escritos bajo la influencia de un ciclo de vida en cascada planteando la definición "precisa" de los requisitos por adelantado, antes de pasar al diseño y la implementación.
2. ... la idea principal de los casos de uso, tal y como la concibe Ivar Jacobson y el UP, es hacer los casos de uso el elemento central del enfoque de requisitos global (sustituyendo a otros documentos de requisitos como elemento central); los casos de uso impregnan y dirigen el trabajo de requisitos, en lugar de considerarse como una técnica de apoyo auxiliar a nivel inferior o medio, añadida a los documentos o enfoques de requisitos tradicionales.


--------------------------------------------------------------------------------------------------------------------------


Cap. 6  Modelo de casos de uso: escritura de requisitos en contexto


La escritura de casos de uso (historias de uso de un sistema) es una técnica excelente para entender y describir los requisitos. 
El UP define el Modelo de Casos de Uso en la disciplina Requisitos. Básicamente, es el conjunto de todos los casos de uso; es un modelo de la funcionalidad y entorno del sistema.

Los clientes y los usuarios finales tienen objetivos (también conocidos como necesidades) y quieren sistemas informáticos que les ayuden a conseguirlos. 

Los casos de uso son un mecanismo son un mecanismo para ayudar a mantenerlo simple y entendible para todo el personal involucrado. De manera informal, son historias del uso de un sistema para alcanzar objetivos. A continuación presentamos un ejemplo de caso de uso en formato breve:

p. 44

Procesar Venta: Un cliente llega a una caja con artículos para comprar. El cajero utiliza el sistema PDV para registrar cada artículo comprado. El sistema presenta una suma parcial y detalles de cada línea de venta. El cliente introduce los datos del pago, que el sistema valida y registra. El sistema actualiza el inventario. El cliente recibe un recibo del sistema y luego se va con los artículos.

Antecedentes
...


p. 45


Casos de uso y valor añadido

En primer lugar, algunas definciones informales: un actor es algo con comportamiento, como una persona (identificada por un rol), sistema informatizado u organización; por ejemplo un cajero.

Un escenario es una secuencia específica de acciones e interacciones entre actores y el sistema objeto de estudio; también se denomina instancia de caso de uso. Es una historia particular del uso de un sistema, o camino a través del caso de uso; por ejemplo, el escenario de éxito de compra de artículos con pago en efectivo, o el escenario de fallo al comprar debido al rechazo de la transacción de pago con la tarjeta de crédito.

Informalmente entonces, un caso de uso es una colección de escenarios con éxito y fallo relacionados, que describe a los actores utilizando un sistema para satisfacer un objetivo. Por ejemplo, a continuación presentamos un caso de uso en formato informal que incluye algunos escenarios alternativos.

Un conjunto de instancias de casos de uso, donde cada instancia es una secuencia de acciones que se un sistema ejecuta, produciendo un resultado observable de valor para un actor particular [RUP]

La expresión "un resultado observable de valor" es sutil pero importante, porque destaca el hecho de que el comportamiento del sistema debería preocuparse de proporcionar valor al usuario.

NOTA: una actitud clave en el trabajo con casos de uso es centrarse en la pregunta: ¿Cómo puedo, utilizando el sistema, proporcionar un valor observable al usuario, o cumplir sus objetivos? en lugar de simplemente, pensar en los requisitos del sistema en términos de una "lista de lavandería" de características o funciones. <------no entiendo esto!!!!


Casos de uso y requisitos funcionales

Los casos de uso son requisitos; ante todo son requisitos funcionales que indican qué hará el sistema. En términos de los tipos de requisitos FURPS+, los casos de uso se refieren fundamentalmente a la "F" (funcional o de comportamiento), pero también pueden utilizarse para otros tipos, especialmente cuando esos otros tipos están estrechamente relacionados con un caso de uso. 

Para ser claros: los casos de uso son requisitos (aunque no todos los requisitos). Algunos piensan en requisitos sólo como listas de características y funciones de la forma "el sistema deberá hacer...". No es así, y una idea clave de los casos de uso (por lo general) reducir la importancia o el uso de las listas de características detalladas al estilo antiguo y más bien, escribir casos de uso para los requisitos funcionales.

Los casos de uso son documentos de texto, no diagramas, y el modelo de casos de uso es, sobre todo, una acción de escribir texto, no dibujar. Sin embargo, UML define un diagrama de casos de uso para ilustrar los nombres de casos de uso y actores, y sus relaciones.


Tipos de casos de uso y formatos

Casos de uso de caja negra y las responsabilidades del sistema

Los casos de uso de caja negra.  Son la clase más común y recomendada; no describen el funcionamiento interno del sistema, sus componentes o diseño, sino que describe el sistema en base a las responsabilidades que tiene, que es una metáfora común y unificadora en el pensamiento orientado a objetos (los elementos de software tiene responsabilidades y colaboran con otros elementos que tienen responsabilidades).

A través de la definición de las responsabilidades del sistema con casos de uso de caja negra, es posible especificar "qué" debe hacer el sistema (los requisitos funcionales) sin decidir "cómo" lo hará el diseño se resume algunas veces como el "qué" frente al "cómo". Este es un tema importante en un buen desarrollo de software: evite durante el análisis de requisitos tomar decisiones acerca del "cómo", y especifique el comportamiento externo del sistema, como una caja negra. Después, durante el diseño, cree una solución que satisfaga la especificación.
Ejemplo:


Tipos de formalidad

Los casos de uso se escriben con formatos diferentes, dependiendo de la necesidad. Además del tipo de visibilidad, de caja negra frente a caja blanca, los casos de uso se escriben con varios grados de formalidad:

* Breve:  resumen conciso de un párrafo, normalmente del escenario principal con éxito. El anterior ejemplo de Procesar Venta.
* Informal: formato de párrafo en un estilo informal. Múltiples párrafos que comprenden varios escenarios. El anterior ejemplo de Gestionar Devoluciones.
* Completo: el más elaborado. Se escriben con detalle todos los pasos y variaciones, y hay secciones de apoyo como precondiciones y garantías de éxito.


Ejemplo completo: Procesar Venta


El formato usecases.org
El formato más extendido, uno de los más extendidos esté en www.usecases.org



La variación de dos-columnas
....


Explicación de las secciones


Elementos del prólogo

Actor principal: el actor principal que recurre a los servicios del sistema para cumplir un objetivo.
El [sistema] funciona siguiendo un contrato entre el personal involucrado, donde los casos de uso detallan la parte de comportamiento del contrato... El caso de uso, como contrato de comportamiento, captura captura y sólo el comportamiento relacionado con la satisfacción del personal involucrado.


Importante: Personal involucrado y lista de intereses

Esto contesta la pregunta: ¿Qué debería estar en un caso de uso? La respuesta es: lo que satisfaga los intereses de todo el personal involucrado. Además, empezando con el personal involucrado y sus intereses antes de antes de escribir el resto del caso de uso, tenemos un modo de recordarnos cuáles deberían ser las responsabilidades más detalladas del sistema. Por ejemplo, ¿habría identificado una responsabilidad para gestionar la comisión del vendedor si no hubiese listado en primer lugar la persona involucrada vendedor y sus intereses? En el mejor de los casos al final, pero quizás no lo habría tenido en cuenta durante la primera sesión de análisis. El punto de vista del interés personal del interés personal involucrado proporciona un procedimiento metódico y completo para el descubrimiento y registro de todos los comportamientos requeridos.


Precondiciones y garantías de éxito (postcondiciones)

Las precondiciones establecen lo que siempre debe cumplirse antes de comenzar un escenario en el caso de uso. Las precondiciones no prueban en el caso de uso, sino que son condiciones que se asumen que son verdad. #que ya se cumplen# Normalmente, una precondición implica un escenario de otro caso de uso que se ha completado con éxito, como inicio de sesión. Nótese que hay condiciones que deben ser verdad pero no tienen un valor práctico para que se escriban como "el sistema tiene energía". Las precondiciones comunican suposiciones importantes de las que el escritor del caso de uso piensa que los lectores deberían ser avisados.

Las garantías de éxito (o postcondiciones) establecen que debe cumplirse cuando el caso de uso se completa con éxito (o bien el escenario principal de éxito o algún camino alternativo). La garantía debería satisfacer las necesidades de todo el personal involucrado.


Escenario principal de éxito y pasos (o Flujo Básico)

También recibe el nombre de escenario del "camino feliz", o más prosaico "Flujo Básico". Describe el camino de éxito típico que satisface los intereses del personal involucrado. Nótese que, a menudo, no incluye ninguna condición o bifurcación. Aunque no incorrecto o ilegal.

Sugerencia: Posponga todas las sentencias condicionales y de bifurcación  a la sección Extensiones.

El escenario recoge los pasos, que pueden ser tres tipos:
1. Una interacción entre actores.
2. Una validación (normalmente a cargo del sistema)
3. Un cambio de estado realizado por el sistema (por ejemplo, registrando o modificando algo).

El primer paso de un caso de uso, normalmente no está incluido en esta clasificación, sino que se indica el comienzo del escenario.

Un estilo habitual es poner con mayúsculas los nombres de los actores para facilitar la identificación. También podemos observar el estilo que se utiliza para indicar una repetición.

NOTA: El Sistema que se está estudiando en sí mismo debería considerarse un actor cuando juega un rol de actor colaborando con otros sistemas.



Extensiones (o Flujo Alternativos)

Las extensiones son muy importantes. Indican todos los otros escenarios o bifurcaciones, tanto de éxito como de fracaso.

En la escritura de casos de uso completos, la combinación del camino feliz y los escenarios de extensión deberían satisfacer "casi" todos los intereses del personal involucrado. Este punto está limitado, puesto que algunos intereses se podrían capturar mejor como requisitos no funcionales escritos en la Especificación Complementaria en lugar de en los casos de uso.

Los escenarios de extensión son bifurcaciones del escenario principal de éxito y, por lo tanto, pueden ser etiquetados de acuerdo con él.

Una extensión tiene dos partes: la condición y manejo.

Guía: Escriba la condición como algo que pueda ser detectado por el sistema o un actor. Para contrastar:

5.a  El sistema detecta un fallo en la comunicación con el servicio externo del sistema de cálculo de impuestos.

Cuando el manejo incluya una serie de pasos:

3-6.a. El Cliente le pide al Cajero que elimine un artículo de la compra:
     1. El Cajero introduce el identificador del artículo para eliminarlo de la compra.
     2. El Sistema muestra la suma parcial actualizada.

Al final del manejo del manejo de la extensión, por defecto, el escenario se une de nuevo con el escenario principal de éxito, a menos que la extensión indique otra cosa (como interrumpir el sistema).

(Ver caso bastante complejo de "pago de crédito") Inclusive esto pudiera ser un motivo para expresar la extensión como un caso de uso aparte.
Y otras notaciones para la extensiones.


Requisitos especiales

Si un requisito no funcional, atributo de calidad o restricción se relaciona de manera específica con un caso de uso, se recoge en el caso de uso. Esto incluye cualidades tales como rendimiento, fiabilidad y facilidad de uso, y restricciones de diseño ( a menudo, en dispositivos de entrada/salida) que son obligados o se consideran probables.


* Interfaz del usuario con pantalla táctil en un gran monitor de pantalla plana. El texto debe ser visible a un metro de distancia.
* Tiempo de respuesta para la autorización de crédito 30 segundos 90 % de las veces.
* Internacionalización del lenguaje del texto que se muestra.
* Reglas de negocio que se puedan añadir en ejecución en los pasos 3 y 7.

Un consejo clásico del UP es registrar estos requisitos con el caso de uso, y constituye un lugar razonable al escribir primero el caso de uso. Sin embargo, muchos expertos encuentran útil reunir al final todos lo requisitos no funcionales en la Especificación Complementaria, para favorecer la gestión del contenido, comprensión y legibilidad que, normalmente, se tienen que considerar estos requisitos en conjunto durante el análisis arquitectural.


p.56

Lista de tecnología y variaciones de datos

A menudo, encontramos variaciones técnicas en cómo se debe hacer algo, pero no en qué, y es importante registrarlo en el caso de uso. Un ejemplo típico es una restricción técnica impuesta por el personal involucrado con respecto a las tecnologías de entrada o salida de datos. Por ejemplo, uno de los interesados podría decir, "El sistema PDV debe soportar la entrada de la cuenta de crédito utilizando un lector de tarjetas y el teclado". Nótese que éstos son ejemplos de decisiones o restricciones de diseño prematuras, pero algunas veces son obvias e inevitables, especialmente en relación con las tecnologías de entrada/salida.

También es necesario entender las variaciones en los esquemas de los datos, como utilizar UPCs o EAN para los identificadores de los artículos, codificados mediante el código de barras.


SUGERENCIA. Esta sección no debería contener múltiples pasos para representar la variación de comportamiento en diferentes casos. Si es necesario, dígalo en la sección Extensiones.


6.8 Objetivos y alcance de un caso de uso

¿Cómo deberían descubrirse los casos de uso? Es típico no estar  seguro si algo es un caso de uso válido. Las tareas se pueden agrupar a muchos niveles de granularidad, desde uno o pocos pasos pequeños, hasta actividades de nivel de empresa. 

¿A qué nivel y alcance deberían expresarse los casos de uso?

#Lo siguiente ayuda a dicha identificación adecuada#


Casos de uso para los procesos del negocio elementales

¿Cuál de éstos es un caso de uso válido?

* Negociar un Contrato con el Proveedor.
* Gestionar las Devoluciones.
* Iniciar Sesión.

Podría argumentarse que todos ellos son casos de uso a diferentes niveles, dependiendo de los límites del sistemas, actores y objetivos. La evaluación de estos candidatos se presenta después de una introducción a los procesos del negocio elementales.

Es por ello que es indicado preguntar ¿cuál es el nivel útil para expresar los casos de uso en el análisis de requisitos de la aplicación?

Guía: El caso de uso EBP
Para el análisis de requisitos de una aplicación informática, céntrese en los casos de uso al nivel de procesos de negocio elementales (EBPs, Elementary Business Processes)

(EBP es un término parecido a tarea de usuario)

EBP se podría definir como:

Una tarea realizada por una persona en un lugar, en un instante, como respuesta a un evento del negocio, que añade un valor cuantificable para el negocio y deja los datos en un estado consistente, ej. Autorizar Crédito, o Solicitar Precio (se perdió la fuente original) <---- no entiendo esto último

No se trata de un pequeño paso como "eliminar una línea de pedido" o "imprimir el documento". Sino que el caso de uso está formado probablemente por cinco o diez pasos. Probablemente dura entre unos pocos minutos y una hora. Como con la definición, hace hincapié en añadir valor observable y cuantificable al negocio, y llega a un acuerdo en ele que el sistema y los datos se encuentran en un estado estable y constante.

NOTA: Un error típico de los casos de uso es definir muchos casos de uso a un nivel muy bajo; es decir, como un paso simple, subfunción o subtarea en un EBP.


Violaciones razonable de la guía EBP

Aunque los casos de uso "base" de una aplicación deberían satisfacer la guía EBP, normalmente es crear un "sub" casos de uso separados que representan subtareas, o pasos, en un caso de uso base. 

Por ejemplo, una subtarea o extensión como "pago a crédito" podría repetirse en varios casos de uso base. Es conveniente separarlo en un caso de uso propio (que no satisface la guía EBP) y conectarlo a varios casos de uso base, para evitar duplicaciones del texto.

Casos de uso y objetivos

Los actores tienen objetivos (o necesidades) y utilizan las aplicaciones para ayudarles a satisfacerlos. En consecuencia, un caso de uso de nivel EBP se denomina caso de uso de nivel de objetivo de usuario, para remarcar que sirve (o debería servir) para satisfacer un objetivo de un usuario del sistema, o el actor principal.

Esto nos lleva a recomendar el siguiente procedimiento: 

1. Encontrar los objetivos del usuario
2. Definir un caso de uso para cada uno

En lugar de preguntar "¿Cuáles son los casos de uso?", uno comienza preguntando: "¿Cuáles son tus objetivos?". De hecho, el nombre del caso de uso para un objetivo debería reflejar dicho objetivo, para resaltar este punto de vista. Objetivo: capturar o procesar una venta; caso de uso: Procesar Venta.

Nótese que debido a esta simetría, la guía EBP se puede aplicar igualmente para decidir si un objetivo o un caso de uso se encuentran a un nivel adecuado.

#Dicho de otro modo#

Imagine que estamos en un taller de requisitos. Nos podríamos preguntar:

* "¿Qué haces?" (una pregunta bastante orientada al caso de uso) o
* "¿Cuáles son tus objetivos?"

Es más probable que las respuestas a la primera pregunta reflejen soluciones y procedimientos actuales, y las complicaciones asociadas a ellos. # Esto debe evitarse #

Las respuestas a la segunda pregunta, especialmente combinada con una investigación para ascender en la jerarquía de objetivos ("¿cuál es el objetivo de ese objetivo?"), abren la visión de soluciones nuevas y mejoradas, centradas en añadir valor al negocio, y llegar al corazón de los que el personal involucrado quiere del sistema que se está estudiando.

Ejemplo: aplicación de la guía EBP

Descubriendo los requisitos del PDV


Obsérvese que la estrategia del analista de buscar de manera ascendente en la jerarquía de objetivos para encontrar los objetivos de usuario de un nivel superior que todavía satisfagan la guía EBP, para obtener el objetivo real detrás de la acción, y también para entender el contexto de los objetivos.

"Evitar robos..." es de un nivel superior a un objetivo de usuario; podría llamarse objetivo de la empresa, y no es un EBP. ... esto lo vamos a dejar de lado por ahora.

Disminuyendo el nivel del objetivo a "identificarme en el sistema y ser validado" se acerca al nivel de objetivo de usuario. ¿Pero es el nivel EBP? No añade valor observable o cuantificable al negocio. Si el responsable del comercio pregunta: "¿Qué hiciste hoy?" y dices "¡Inicie sesión 20 veces!", no se impresionaría. En consecuencia, es un objetivo secundario, siempre disponible para hacer algo útil, y no es un EBP u objetivo del usuario. En cambio, "capturar una venta" cumple el criterio para ser un EBP u objetivo de usuario.

Otro ejemplo podría ser, en algunas tiendas existe un proceso denominado "abrir caja", en el cual un cajero inserta su propia bandeja del cajón de caja en el terminal, inicia la sesión, e indica al sistema el dinero que hay en caja. Abrir caja es un caso de uso de nivel EBP (o nivel de objetivo de usuario); el paso de inicio de sesión; en lugar de un caso de uso de EBP, es un objetivo de subfunción para llevar a cabo el objetivo de abrir caja.

p.60

Objetivos y casos de uso de subfunción

Aunque "identificarme y ser validado" (o "iniciar sesión") se ha eliminado como objetivo de usuario, es un objetivo de nivel más bajo, denominado objetivo de subfunción.

No es ilegal escribir casos de uso para objetivos de subfunción, pero no siempre es útil, ya que añade complejidad al modelo de casos de uso; puede haber cientos de objetivos de subfunción (o casos de uso de subfunción) en un sistema.

Un punto importante es que el número y granularidad de los casos de uso influyen en el tiempo y la dificultad para entender, mantener y gestionar los requisitos.

Un motivo válido, más común para representar un objetivo de subfunción como caso de uso, es cuando la subfunción se repite o es una precondición en muchos casos de uso de nivel de objetivos de usuario. Este hecho se cumple probablemente en el caso de uso de "identificarme y ser validado", que es una precondición de la mayoría, si no todos, los otros casos de uso de nivel de objetivos de usuario.

En consecuencia, podría escribirse como el caso de uso Autenticar Usuario.


Objetivos y casos de uso pueden ser compuestas

Normalmente, los objetivos son compuestos, desde el nivel de empresa ("ser rentable"), que incluyen muchos objetivos intermedios a nivel de uso de la aplicación ("se capturan las ventas"), que a su vez incluyen objetivos de subfunción dentro de las aplicaciones ("la entrada válida").

De manera análoga, los casos de uso se pueden escribir a niveles diferentes para satisfacer estos objetivos, y pueden estar compuestos de casos de uso de nivel inferior.

Estos diferentes niveles de objetivos y casos de uso son una fuente típica de confusión en la identificación del nivel adecuado de los casos de uso de una aplicación. La guía EBP proporciona una orientación para eliminar casos de uso de nivel excesivamente bajo.


6.9 Descubrimiento de actores principales, objetivos y casos de uso

Los casos de uso se definen para satisfacer los objetivos del usuario de actores principales.

1. Elegir los límites del sistema ¿Es sólo una aplicación de software, el hardware y la aplicación como un todo, que lo utiliza más de una persona o una organización completa?
2. Identificar los actores principales (aquellos que tienen objetivos de usuario que se satisfacen mediante el uso de los servicios del sistema).
3. Para cada uno, identificar sus objetivos de usuario. Elevarlos al nivel de objetivos de usuario más alto que satisfaga la guía EBP. 
4. Definir los casos de uso que satisfagan los objetivos del usuario; nombrarlos de acuerdo con sus objetivos. Normalmente, los casos de uso del nivel de objetivo de usuario se corresponderán uno a uno con los objetivos de usuario, aunque hay al menos una excepción.

p.61

Paso 1: Elegir el límite del sistema

Para este caso de estudio, el propio sistema PDV es el sistema que se está diseñando; todo lo que queda fuera de él, está fuera de los límites del sistema, incluyendo el cajero, el servicio de autorización de pagos, etc.

Si no está clara la definición de los límites del sistema que se está diseñando, se puede aclarar definiendo lo que está fuera (los actores principales externos y de apoyo). Una vez identificados los actores externos, los límites se vuelven más claros. Por ejemplo, ¿se encuentra la responsabilidad de autorización de pagos completa en los límites del sistema? No, hay un actor del servicio externo de autorización de pagos.


Pasos 2 y 3: Identificar los actores principales y objetivos

Es artificial establecer de manera estricta que la identificación de los actores principales es antes que los objetivos de usuario; en un taller de requisitos, la gente pone en común sus ideas y dan lugar a una mezcla de ambos. Algunas veces los objetivos ponen de manifiesto a los actores, o viceversa.

Guía: Centrar la discusión en los actores principales en primer lugar, ya que establece ya que establece el marco de las investigaciones posteriores.

Preguntas útiles para encontrar los actores principales y objetivos

Además de los actores principales y objetivos obvios, las preguntas siguientes ayudan a identificar otros que se podrían haber pasado:

¿Quién arranca y para el sistema?                ¿Quién se encarga de la administración del sistema?
¿Quién gestiona a los usuarios y la seguridad?   ¿Existe un proceso de control que reinicie el sistema                                                                               si falla?
¿Existe un proceso de control que reinicie el sistema si falla?    ¿Quien evalúa la actividad o el                                                                                                                rendimiento?
¿Cómo se gestionan las actualizaciones de software?     ¿Quién evalúa los registros?
¿Actualizaciones automáticas o no?                                ¿Se recuperan de manera remota?


p. 62


Actores principales y de apoyo

Recordemos que los actores principales tienen objetivos de usuario que se satisfacen mediante el uso de servicios del sistema. Acuden al sistema para que les ayude. Al contrario que los actores de apoyo, que proporcionan servicios al sistema que se está diseñando. 

Recordemos también que los actores principales pueden ser (entre otras cosas) otros sistemas informáticos, como procesos software "guardianes" ("watchdog").

Sugerencia: Desconfía si ninguno de los actores principales se corresponde con un sistema informático externo.


La lista actor-objetivo

Recoge los actores principales y sus objetivos de usuario en una lista actor-objetivo. En términos de los artefactos UP, debería corresponderse con una sección del artefacto Visión.

Por ejemplo:

El Sistema de Actividades de Ventas es una aplicación remota a la que se le solicitará con frecuencia datos de ventas desde cada nodo PDV en la red.

Dimensión de la planificación del proyecto
A esta lista se le añaden las columnas prioridad, esfuerzo y riesgo.

La complicada realidad
Son necesarias muchas "tormentas de ideas" y discusiones durante los talleres de requisitos. Consideremos el ejemplo anterior que ilustraba la aplicación de la regla EBP al objetivo "iniciar sesión". Durante el taller, mientras se crea esta lista, el cajero podría proponer "iniciar sesión" como objetivo del usuario. El analista de sistemas profundizará y se da cuenta que no cumple la guía EBP, y lo descarta como objetivo del usuario. Por supuesto, la realidad es incluso algo diferente a esto puesto que un analista con experiencia cuenta con un conjunto de heurísticas, procedentes de experiencias o estudios anteriores, una de las cuales es "la autenticación es rara vez un EBP", y de este modo es probable que se elimine rápidamente.


El actor principal y los objetivos de usuario dependen del límite del sistema

¿Por qué es el cajero, y no el cliente, el actor principal del caso de uso de Procesar Venta? ¿Por qué no aparece el cliente en la lista actor-objetivo?

La respuesta depende del límite del sistema que se esté diseñando, como se ilustra en la siguiente figura. Si consideramos la empresa o el servicio de caja como un sistema agregado (<-----no entiendo esta frase), el cliente es un actor principal, con el objetivo de obtener artículos o servicios, y marcharse. Sin embargo, desde el punto de vista de únicamente el sistema PDV (que es la elección del límite del sistema para este caso de estudio), éste atiende el objetivo del cajero (y de la tienda) de procesar la venta del cliente.



Actores y objetivos por medio del análisis de eventos

Otro enfoque para ayudar en la búsqueda de los actores, objetivos y casos de uso, es identificar los eventos externos. ¿Cuáles son, de dónde proceden y por qué? A menudo, un grupo de eventos pertenecen al mismo objetivo o caso de uso de nivel EBP. Por ejemplo:





MUY IMPORTANTE (ING SOFTWARE) ---> IEEE

https://www.ieee.org/membership-catalog/index.html?N=0

http://www.computer.org/web/education/online-courses

http://webstore.computer.org/Computer-Digital-Publications/b/5368193011?ie=UTF8&title=Computer

http://www.computer.org/web/computingnow


Revista muy fina!!
http://spectrum.ieee.org/

http://www.computer.org/cms/professional-education/images/model-of-a-profession.jpg

http://www.computer.org/cms/professional-education/pdf/IT%20White%20Paper%20-%20rev0.pdf

importante de como acceder cursos en linea
https://supportcenter.ieee.org/app/answers/detail/a_id/131/kw/online%20course

jueves, 5 de febrero de 2015

Requirement Workshop (Taller de Requerimientos)

http://blog.learningtree.com/business-analysis-technique-requirements-workshop/
http://www.business-analysis-excellence.com/requirement-gathering.html
http://ebgconsulting.com/Services/MoreInfoOnWorkshops-EBG.pdf
http://businessanalystlearnings.com/blog/2013/2/28/organizing-effective-requirements-workshops-before-during-after

Importante Herramientas, presentaciones
http://www.requirementsquest.com/resources/free-tools-templates

http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_requisitos
http://sg.com.mx/content/view/360
http://gabrielalmeida.com.mx/259/como-llevar-a-cabo-un-taller-de-requerimientos-primera-parte/

http://elprofegarcia-ads.blogspot.com/2013/03/taller-ingenieria-de-requerimientos.html
http://www.cs.uns.edu.ar/~td/ayds-doku/lib/exe/fetch.php?media=publico:texto06.pdf

Por clasificar
http://gabrielalmeida.com.mx/247/los-5-pasos-mas-importantes-para-ser-un-analista-de-negocio-%C2%A1exitoso/

http://sg.com.mx/revista/29/diseno-la-arquitectura#.VNUzSWiG_9s

Comparaciones de Metodologías de Desarrollo

http://scrum-xp-rup-barrionuevo-torres.blogspot.com/

http://desarrollodesoftware-mauricio-ventura.blogspot.com/2012/04/scrum-y-xp.html

miércoles, 4 de febrero de 2015

Leyendo UML y Patrones Larman 2da Edición 2003 (INTRODUCCION)

Cap. 1 Análisis y Diseño Orientado a Objetos

p.3

El probervio "tener un martillo no te hace un arquitecto"

UML es una notación visual estándar. Tan útil como aprender una notación, hay cosas orientadas a objetos importantes que aprender; concretamente, cómo pensar en objetos (cómo diseñar sistemas orientados a objetos). UML no es A/DOO o un método, es simplemente una notación. No es tan útil aprender a hacer diagramas UML sintácticamente correctos y quizás una herramienta CASE para UML, si no se es capaz de crear un diseño excelente o evaluar uno existente. Ésta es la habilidad más difícil y valiosa.

El Proceso Unificado es un proceso iterativo.

Asignación de responsabilidades
Esto es habilidad fundamental e Inevitable. Se presentan y aplican nueve principios fundamentales en el diseño de objetos y asignación de responsabilidades. Se organizan en una ayuda al aprendizaje denominada patrones GRASP.

p.6

¿Qué es Análisis y qué es Diseño?

El Análisis pone énfasis en una investigación del problema y los requisitos, en vez de ponerlos en la solución.
Ejm. Si se desea un nuevo sistema de información informatizado para una biblioteca ¿Cómo se utilizará?

Análisis de requisitos (un estudio de los requisitos)
Análisis de objetos (un estudio de los objetos de dominio)

El Diseño pone énfasis en la solución conceptual que satisface los requisitos, pero no así en la implementación

Diseño de objetos
Diseño de bases de datos

En otras palabras,
El Análisis: hacer lo correcto           El Diseño: hacerlo correcto
"el qué"                                             "el cómo (conceptualmente)"


Análisis y Diseño Orientados a Objetos

Durante el Análisis Orientado a Objetos, se presta especial atención a encontrar y describir los objetos (o conceptos) en el dominio del problema. 
Ejm. En una biblioteca, libro, socio, etc.

Durante el Diseño Orientado a Objetos, se presta especial atención a la definición de objetos de software y como colaboran para satisfacer los requisitos.
Ejm. Libro: título (atributo), ObtenerCapitulo(método)

p.7

Un ejemplo

Se presenta de un modo superficial, unos pocos pasos y diagramas claves.
* Definición de casos de uso
* Definición del modelo del dominio
* Definición de diagramas de interacción
* Definición de diagramas de clases de diseño


Def. Casos de Uso, son simplemente historias escritas (no son artefactos orientados a objetos)

El Análisis de los Requisitos, podría incluir una descripción de los procesos del dominio relacionados, que podrían representarse como casos de uso
Ejm. Jugar una partida de dados: (descripción del caso de uso)

Def. Modelo del Dominio

La finalidad del análisis orientado a objetos es crear una descripción del dominio desde la perspectiva de la clasificación de objetos. Una descomposición del dominio conlleva identificación de conceptos, atributos y asociaciones que se consideran significativas.

El resultado se puede expresar en un modelo de dominio, que se ilustra mediante un conjunto de diagramas que muestran los objetos o conceptos del dominio.

p.8 



Nótese que un modelo de dominio no es una descripción de los objetos de software, es una visualización de los conceptos en el dominio del mundo real.


Def. Diagramas de Interacción

Estas son las vistas dinámicas de las colaboraciones entre objetos.

La finalidad del análisis orientado a objetos: es crear una descripción del dominio desde la perspectiva de la clasificación de objetos.

La finalidad del diseño orientado a objetos: es definir los objetos software y sus colaboraciones (Se pueden utilizar diagramas de interacción para representar dichas colaboraciones).


Def. Diagramas de clases de diseño

Esta es la vista estática de las definiciones de las definiciones de las clases mediante un diagrama de clases de diseño.


UML

Citando textualmente:

El Lenguaje Unificado de Modelado (UML) es un lenguaje para especificar, visualizar, construir y documentar los artefactos de los sistemas de software, así como para el modelado del negocio y otros sistemas de software.

El UML se ha convertido en la notación de facto, en 1994 empezaron juntándose los métodos de Booch y OMT (Object Modeling Technique), luego Objectory.
UML fue adoptado en 1997 como estándar por el OMG (Object Management Group)

Lecturas adicionales
* UML Distilled, de Martin Fowler
* The Rational Unified Process-An Introduction, de Philippe Kruchten
* The Unified Modeling Language Reference Manual y The Unified Modeling Language User Guide, de Booch, Jacobson y Rumbaugh
* OMG Unified Modeling Language Specification en www.omg.org. Los trabajos de revisión UML que van a estar pronto se pueden encontrar en www.celigent.com/uml
* Design Patterns de Gamma, Helm, Johnson y Vlissides.


-------------------------------------------------------------------------------------------------------------------------

Cap. 2 Desarrollo iterativo y el Proceso Unificado

p.13

El desarrollo iterativo es un enfoque para el desarrollo  de software que requiere un entrenamiento y poseer ciertos conocimientos, y juega un papel central en el modo que se presenta A/DOO en este libro.
De manera informal, un proceso de desarrollo de software, describe un enfoque para la construcción, desarrollo y, posiblemente, mantenimiento  de software. En particular se ha adoptado ampliamente el Proceso Unificado de Rational o RUP, un refinamiento detallado del Proceso Unificado.

p.14

La idea más importante de UP: desarrollo iterativo

El UP se basa en varias prácticas, una de las más importantes es: el desarrollo iterativo. En este enfoque, el desarrollo se organiza en una serie de mini-proyectos cortos, de duración fija (por ejemplo, cuatro semanas) llamadas iteraciones; el resultado de cada uno es un sistema que puede ser probado, integrado y ejecutado. Cada interacción incluye sus propias actividades de análisis, diseño, implementación y pruebas.

El ciclo de vida iterativo se basa en la impliación y refinamiento sucesivos del sistema mediante múltiples iteraciones, con realimentación cíclica y adaptación como elementos principales elementos principales que dirigen para converger hacia un sistema adecuado. El sistema crece incrementalmente a lo largo del tiempo, iteración tras iteración, y por ello, este enfoque se conoce como desarrollo iterativo e incremental.

Las primeras ideas sobre procesos iterativos se conocieron como desarrollo en espiral y desarrollo evolutivo.

El resultado de cada iteración es un sistema ejecutable, pero incompleto; no está preparado para ser puesto en producción. El sistema podría no estar listo para su puesta en producción hasta después de muchas iteraciones; por ejemplo, 10 ó 15 iteraciones.

La salida de una iteración no es un prototipo experimental o desechable, y el desarrollo iterativo no es prototipado. Más bien, la salida es un subconjunto con calidad de producción del sistema final. (NO ENTIENDO BIEN ESTO ULTIMO)

Aunque, en general, cada iteración aborda nuevos requisitos y amplía el sistema incrementalmente, una iteración podría, ocasionalmente, volver sobre el software que ya existe y mejorarlo; por ejemplo, una iteración podría centrarse en mejorar el rendimiento de un subsistema, en lugar de extenderlo con nuevas características.

p.16

Aceptando los cambios: retroalimentación y adaptación

Esto no quiere decir que el desarrollo iterativo y el UP fomenten un proceso dirigido por una "adición de características" de una manera incontrolada y reactiva. El UP llega a un equilibrio entre la necesidad (por un lado) de llegar a un acuerdo y estabilizar un conjunto de requisitos, u (por otro lado) la realidad de los requisitos cambiantes, cuando el personal involucrado clarifica su visión o cambia el mercado.

Cada iteración conlleva la elección de un pequeño conjunto  de requisitos y, rápidamente, diseñar, implementar y probar.

Tener retroalimentación en una etapa temprana vale su peso en oro; más que las especulaciones sobre requisitos y diseños correctos, la retroalimentación, a partir de la construcción y prueba realista de algo, aporta un conocimiento práctico y crucial, y una oportunidad de modificar o adaptar la comprensión de requisitos o el diseño.

p.17

Beneficios del desarrollo iterativo

.......


Longitud de una iteración y fijación de la duración

El UP y los desarrolladores con experiencia en aplicar procesos iterativos, recomiendan que la longitud de una iteración sea de dos a seis semanas. Menos de dos semanas es difícil de completar el trabajo suficiente para tener resultados significativos y retroalimentación; más de seis u ocho semanas, y la complejidad se vuelve bastante abrumadora, se retrasa la retoalimentación. Con iteraciónes muy largas pierde su sentido el desarrollo iterativo. Lo corto es bueno.

p.18

Conceptos y buenas prácticas de UP adicionales
........

p.19

Las fases del UP y términos orientados a la planificación

Un proyecto UP organiza el trabajo y las iteraciones en cuatro fases fundamentales:

1.- Inicio: visión aproximada, análisis del negocio, alcance, estimaciones impresisas.
2.- Elaboración: visión refinada, implementación iterativa del núcleo central de la arquitectura, resolución de los riesgos altos, identificación de más requisitos y alcance, estimaciones realistas.
3.- Construcción: implementación iterativa del resto de requisitos de menor riesgo y elementos más fáciles, preparación para el despliegue.
4.- Transisción: pruebas beta, despliegue

Esto no se corresponde con el antiguo ciclo de vida "en cascada" o secuencial en el que primero se definían todos los requisitosy, después, se realizaba todo, o la mayoría, del diseño. 
(Pregunta¿Se podría pensar en esto como que cada fase es una medición de la madurez holística del proyecto?)

RECORDAR, Fases:

* Inicio
* Elaboración
* Construcción
* Transición



Las disciplinas del UP (antes flujos de trabajo)

El UP describe actividades de trabajo, como escribir casos de uso, en disciplinas (llamadas originalmente flujos de trabajo). Informalmente, una disciplina es un conjunto de actividades (y artefactos relacionados) en un área determinada, como las actividades en el análisis de requisitos. En el UP, un artefacto es el término general para cualquier producto del trabajo; código, gráficos Web, esquema de base de datos, documentos de texto, diagramas, modelos, etc


Disciplinas y fases

Como se muestra en la fig. 2.4, durante una iteración, el trabajo se desarrolla en la mayoría o todas las disciplinas. Sin embargo, el esfuerzo relativo en estas disciplinas cambia a lo largo del tiempo. Las primeras iteraciones, naturalmente, tienden a aplicar un esfuerzo relativo mayor a los requisitos y al diseño, en las posteriores disminuye, cuando los requisitos y el diseño central se estabilizan, mediante un proceso de retroalimentación y adaptación. 
En la fig. 2.5 se muestran las disciplinas en las que centrará el aprendizaje del presente libro



Adaptación del proceso y el Marco de Desarrollo
Artefactos opcionales
Algunas prácticas y principios del UP deben seguirse siempre, como desarrollo iterativo y dirigido por el riesgo, y la verificación continua de la calidad.
Sin embargo, es importante saber que en el UP todas las actividades y artefactos (modelos, diagramas, documentos...) son opcionales, a excepción del código que es indispensable para construir el sistema. El conjunto de artefactos posibles del UP debería entenderse como un conjunto de medicinas en la farmacia. Exactamente igual que uno no toma medicinas indiscriminadamente, sino que elige según la dolencia, en un proyecto UP es lo mismo para el equipo de trabajo según las necesidades que se planteen. 

Marco de Desarrollo

La elección de los artefactos del UP para un proyecto podría recogerse en un documento breve denominado Marco de Desarrollo (un artefacto en la disciplina Entorno). 

Los artefactos de ejemplo que se presentan en este caso de uso de ningún modo son suficientes, o adecuados, para todos los proyectos. Por ejemplo, un sistema de control de una máquina encontraría útil realizar muchos diagramas de estados. Un sistema de comercio electrónico basado en web podría centrar su atención en los principios de interfaz de usuario. Un proyecto de desarrollo nuevo, en un campo en el que no se tenga experiencia tendría necesidades muy diferentes, en cuanto a los artefactos de diseño, de las de un proyecto de integración de sistemas.



El UP ágil

....

El ciclo de vida "en cascada" secuencial

A diferencia del ciclo de vida iterativo del UP, una antigua alternativa era el ciclo de vida "en cascada", lineal o secuencial. En su acepción habitual, definía los pasos más o menos de la siguiente forma:

1. Determinar, registrar y acordar un conjunto de requisitos completo y fijo.
2. Diseñar un sistema basado en dichos requisitos.
3. Implementar en base al diseño.

No se entendió UP cuando...

.....


Lecturas adicionales
referencias bibliográficas de RUP y UP
referencias bibliográficas de Metodologías Ágiles


--------------------------------------------------------------------------------------------------------------------------

Cap. 3 Caso de Estudio: El sistema de punto de venta Nueva Era

El sistema de punto de venta (PDV) NuevaEra. 

Un sistema PDV es una aplicación informática utilizada (en parte) para registrar ventas y realizar pagos; normalmente se utiliza en tiendas. Incluye componentes de hardware, como un ordenador y un lector de códigos de barras, y un software para ejecutar el sistema. Interactúa con varias aplicaciones de servicios, como un servicio de cálculo de impuestos y un control de inventarios, de terceras partes. Estos sistemas deben ser, relativamente tolerante a fallos; es decir, incluso si los servicios remotos no están disponibles temporalmente (como el sistema de inventario), todavía deben ser capaces de capturar las ventas y gestionar, al menos, los pagos en efectivo (de manera que no se impida que el negocio funciones de manera adecuada).

Un sistema PDV, progresivamente, debe soportar múltiples y variados terminales e interfaces del lado cliente, como un terminal con un navegador Web de una arquitectura "cliente delgado" (thin client).

Además, estamos creando un sistema PDV comercial que se venderá a diferentes clientes con necesidades dispares en términos de procesamiento de reglas del negocio. Cada cliente deseará un conjunto exclusivo de lógica a ejecutar en ciertos puntos predecibles en escenarios de uso del sistema, como cuando se inicia una venta o cuando se añade una nueva línea.

Capas arquitectónicas y el énfasis del caso de estudio

Un sistema de información orientado a objetos típicos se diseña en función de varias capas arquitectónicas o subsistemas, véase la siguiente figura


* Interfaz de Usuario: interfaz gráfica; ventanas.
* Lógica de la aplicación y Objetos del Dominio: objetos software que representan conceptos del dominio (por ejemplo una clase denominada Venta) que satisfacen los requisitos de la aplicación.
* Servicios técnicos: objetos de propósito general y subsistemas que proporcionan servicios técnicos de apoyo, como conexión con una base de datos o registrar los errores. Normalmente, estos servicios son independientes de la aplicación y se pueden reutilizar en varios sistemas.

El caso de estudio NuevaEra se centra principalmente en los objetos del dominio del problema, asignándoles responsabilidades para satisfacer los requisitos de la aplicación. El diseño orientado objetos también se aplica para crear un subsistema de servicio técnico para interactuar con una base de datos.

En este enfoque de diseño, la capa de interfaz de usuario tiene muy poca responsabilidad; se dice delgada. Las ventanas no contienen código que ejecute o procese la lógica de la aplicación, sino que, las peticiones de realización de tareas se envían a otras capas.