martes, 20 de septiembre de 2011

Taller De Logica


Bucle (programación)







Un bucle o ciclo, en programación, es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de cumplirse.
Generalmente, un bucle es utilizado para hacer una acción repetida sin tener que escribir varias veces el mismo código, lo que ahorra tiempo, deja el código más claro y facilita su modificación en el futuro.
El bucle y los condicionales representan la base de la programación estructurada. Es una evolución del código ensamblador, donde la única posibilidad de iterar un código era establecer una sentencia jump (que en los lenguajes de programación fue sustituida por el "ir a" o GOTO).
Los tres bucles más utilizados en programación son el bucle while, el bucle for y el bucle repetir.

Bucle for

El bucle for o ciclo for es una estructura de control en la que se puede indicar el número minimo de
iteraciones. Está disponible en casi todos los lenguajes de programación imperativos.



Bucle while







El Bucle while o bucle mientras es una estructura de la mayoría de los lenguajes de programación estructurados cuyo propósito es repetir un bloque de código mientras una condición se mantenga verdadera.






Bucle repetir







El bucle repetir comprueba la condición de finalización al final del cuerpo del bucle, y si ésta es cierta continua con el resto del programa, a veces esto resulta más adecuado.





Estructuras de control







En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:
  • De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case)
  • Ejecutar un grupo de sentencias mientras exista una condición (Do-While)
  • Ejecutar un grupo de sentencias hasta que exista una condición (Do-Until)
  • Ejecutar un grupo de sentencias un número determinado de veces (For-Next)
  • Etc
Todas las estructuras de control tienen un único punto de entrada y un único punto de salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la programación se rija por los principios de la programación estructurada.
Los lenguajes de programación modernos tienen estructuras de control similares. Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.
Ciclos en ruby



ciclo each

Hay una función llamada “each” (“cada uno”), que se puede aplicar a un Array o a un Hash, o a un string de varias líneas, para iterar sobre sus elementos. La sintaxis es:

variable.each {bloque}

El resultado es el siguiente: Las instrucciones que se encuentran dentro del bloque, se van a aplicar a cada uno de los elementos de la variable. Es decir, se produce un ciclo repetitivo donde en cada
pasada, o iteración del ciclo, se evalúa uno de los elementos del array (o hash), en forma sucesiva, empezando con el primero, luego el segundo, etc, hasta llegar al último.
Veamos un ejemplo con un Array numérico:

a = [2,4,13,8] # empecemos con este Array

a.each {|i| puts i} # por cada elemento |i| de 'a', imprimirlo:

2 # dentro del bloque, i←2 y luego puts 2
4 # sigue con i←4 y luego puts 4

13 # etc

8
ciclo while

Esta evalúa una expresión que resulta en un valor de verdad, y repite el ciclo
tantas veces como la expresión evaluada sea cierta. Veamos un ejemplo:


cuenta = 0

while (cuenta < 5) do

puts cuenta # imprime desde 0 hasta 4

cuenta += 1

end

La última vez que repite el ciclo, cuenta←5, y la comparación (5 < 5) es
falsa, así que ya no repite el bloque más. El uso de la palabra do también es
opcional.

until

La instrucción until, es similar al while, excepto que la expresión evaluada
tiene una lógica negativa: el bloque se repite mientras que la condición sea
falsa.


cuenta = 0

until cuenta >= 5 do

puts cuenta # imprime desde 0 hasta 4

cuenta += 1

end



for


for e in a # por cada elemento e de a, haga

puts e # imprima el valor de e

end # fin del ciclo


Cuando queremos repetir un ciclo cierto número de veces, usamos un rango,
donde escribimos los límites de la iteración separados por dos puntos, así:

for i in 5..10 # repetidamente va a asignar valores

puts i # desde i←5 hasta i←10 y los va a imprimir

end


Cuando usamos tres puntos, excluye el último valor del rango. Esto es útil
para iterar sobre los valores de un array (cuyo último índice es n-1):


a = ["a","b","c"]

for i in 0...a.size # size=3; asigna valores i entre 0..2

puts "#{i}:#{a[i]}" # evalua desde a[0] hasta a[2] y los imprime

end # imprime 0:a, 1:b, 2:c (un par por linea)


cuando se saben las veces a repetir

Cuando sabemos exactamente el número de repeticiones,podemos usar
times, que es más fácil:


5.times do

puts "hola"

end
Otra manera, usando la función upto() sobre los enteros:


1.upto(5) do

puts "Hola"

end

También existe la función correspondiente downto() sobre los enteros:


5.downto(1) do |i|

puts “#{i}:Hola” # resulta en 5:Hola, 4:Hola, etc por cada linea

end



step

Una cuenta que incremente por números diferentes de 1 se puede hacer con la
función step():


2.step(10, 2) do |i| # desde 2 hasta 10, incrementando de a 2

puts i # imprime i: 2, 4, 6, 8, 10

end


Aunque parezca increíble, la función step() también funciona sobre los reales,
con incrementos fraccionarios:


2.step(10, 0.5) do |r| # desde 2 hasta 10, incrementando de a 0.5

puts r # imprime r: 2.0, 2.5, 3.0, 3.5, etc

end



loop do

crea un ciclo potencialmente infinito. Para salirse del
ciclo se usa la instrucción break, junto con una condición. El ciclo anterior se
expresaría de la siguiente manera:


cuenta = 0

loop

break if cuenta >= 5

puts cuenta # imprime desde 0 hasta 4

cuenta += 1

end

Otra instrucción, loop, crea un ciclo potencialmente infinito. Para salirse del ciclo se usa la
instrucción break, junto con una condición. El ciclo anterior se expresaría de la siguiente manera:
cuenta = 0
loop
break if cuenta >= 5
puts cuenta
cuenta += 1
end

lunes, 22 de agosto de 2011

Usabilidad en el desarrollo web

USUABILDAD EN EL DESARROLLO WEB

La usabilidad es la facilidad con que las personas pueden utilizar una herramienta particular o cualquier otro objeto fabricado por humanos con el fin de alcanzar un objetivo concreto. La usabilidad también puede referirse al estudio de los principios que hay tras la eficacia percibida de un objeto.
En interacción persona-ordenador, la usabilidad se refiere a la claridad y la elegancia con que se diseña la interacción con un programa de ordenador o un sitio web.
Otros aspectos de la usabilidad
A partir de la conceptualización llevada a cabo por la ISO, se infieren los principios básicos en los que se basa la usabilidad:[
Facilidad de Aprendizaje: facilidad con la que nuevos usuarios desarrollan una interacción efectiva con el sistema o producto. Está relacionada con la predicibilidad, sintonización, familiaridad, la generalización de los conocimientos previos y la consistencia.
Facilidad de Uso: facilidad con la que el usuario hace uso de la herramienta, con menos pasos o más naturales a su formación específica. Tiene que ver con la eficacia y eficiencia de la herramienta.
Flexibilidad: relativa a la variedad de posibilidades con las que el usuario y el sistema pueden intercambiar información. También abarca la posibilidad de diálogo, la multiplicidad de vías para realizar la tarea, similitud con tareas anteriores y la optimización entre el usuario y el sistema.
Robustez: es el nivel de apoyo al usuario que facilita el cumplimiento de sus objetivos. Está relacionada con la capacidad de observación del usuario, de recuperación de información y de ajuste de la tarea al usuario.




Beneficios de la usabilidad

Entre los principales beneficios se encuentran:[
Reducción de los costes de aprendizaje.
Disminución de los costes de asistencia y ayuda al usuario.
Disminución en la tasa de errores cometidos por el usuario y del retrabajo.
Optimización de los costes de diseño, rediseño y mantenimiento.
Aumento de la tasa de conversión de visitantes a clientes de un sitio web.
Aumento de la satisfacción y comodidad del usuario.
Mejora la imagen y el prestigio.
Mejora la calidad de vida de los usuarios, ya que reduce su estrés, incrementa la satisfacción y la productividad.
Todos estos beneficios implican una reducción y optimización general de los costes de producción, así como un aumento en la productividad. La usabilidad permite mayor rapidez en la realización de tareas y reduce las pérdidas de tiempo.

Jakob Nielsen, considerado el padre de la Usabilidad, la definió como el atributo de calidad que mide lo fácil de usar las interfaces web. Es decir un sitio web usable es aquél en el que los usuarios pueden interactuar de la forma más fácil, cómoda, segura e inteligentemente posible.
No sólo la tecnología y el aspecto gráfico son factores determinantes para hacer un sitio web llamativo. Es importante que cumpla con las siguientes características:
Entendible
Novedoso
Comprensible
Inteligente
Atractivo
Es decir la finalidad, en este caso de un sitio web, es lograr que el usuario encuentre lo que busca en el menor tiempo posible.
La Usabilidad de un sitio web está determinada por sus contenidos, entre más cercanos estén al usuario, mejor es la navegación por el mismo y más acertada será la experiencia al enfrentarse a la pantalla. Es imposible crear un sitio web ciento por ciento perfecto y en óptimas condiciones
Un buen sitio Web debe responder a las necesidades del usuario. En una comunidad virtual donde confluyen diferentes culturas e intereses, el contexto en el que se desenvuelven los miembros de un grupo virtual, o comunidad, no puede generar molestias en el momento de la navegación.

PRINCIPIOS GENERALES DE USABILIDAD EN EL DISEÑO DE SITIOS WEB

1. Anticipación, el sitio web debe anticiparse a las necesidades del usuario.
2. Autonomía, los usuarios deben tener el control sobre el sitio web. Los usuarios sienten que controlan un sitio web si conocen su situación en un entorno abarcable y no infinito.
3. Los colores han de utilizarse con precaución para no dificultar el acceso a los usuarios con problemas de distinción de colores (aprox. un 15% del total).
4. Consistencia, las aplicaciones deben ser consistentes con las expectativas de los usuarios, es decir, con su aprendizaje previo.
5. Eficiencia del usuario, los sitios web se deben centrar en la productividad del usuario, no en la del propio sitio web. Por ejemplo, en ocasiones tareas con mayor número de pasos son más rápidas de realizar para una persona que otras tareas con menos pasos, pero más complejas.
6. Reversibilidad, un sitio web ha de permitir deshacer las acciones realizadas
7. Ley de Fitts indica que el tiempo para alcanzar un objetivo con el ratón esta en función de la distancia y el tamaño del objetivo. A menor distancia y mayor tamaño más fácilidad para usar un mecanismo de interacción.
8. Reducción del tiempo de latencia. Hace posible optimizar el tiempo de espera del usuario, permitiendo la realización de otras tareas mientras se completa la previa e informando al usuario del tiempo pendiente para la finalización de la tarea.
9. Aprendizaje, los sitios web deben requerir un mínimo proceso de aprendizaje y deben poder ser utilizados desde el primer momento.
10. El uso adecuado de metáforas facilita el aprendizaje de un sitio web, pero un uso inadecuado de estas puede dificultar enormemente el aprendizaje.
11. La protección del trabajo de los usuarios es prioritario, se debe asegurar que los usuarios nunca pierden su trabajo como consecuencia de un error.
12. Legibilidad, el color de los textos debe contrastar con el del fondo, y el tamaño de fuente debe ser suficientemente grande.
13. Seguimiento de las acciones del usuario. Conociendo y almacenando información sobre su comportamiento previo se ha de permitir al usuario realizar operaciones frecuentes de manera más rápida.
14. Interfaz visible. Se deben evitar elementos invisibles de navegación que han de ser inferidos por los usuarios, menús desplegables, indicaciones ocultas, etc.

47 Elementos Para Crear Un Formulario

1. Uni-Form: es un marco que estandariza la forma de marcas y estilos con CSS le da más uso en las opciones de diseño para elegir.


2. CSS-Only, Table-less Forms: Un gran ejemplo de una forma bien diseñada utilizando las modernas técnicas de css.

3. Formas sin tablas : tiene un ejemplo de inicio de sesión muy buena forma, con un gráfico en el campo de entrada.

4. Una forma con estilo: como se ve la forma y el estilo de la tela.

5. Niceforms 1,0: es una escritura que reemplazará los elementos de forma más comúnmente utilizada con la costumbre de los diseñados.

6. Forma de lujo: es un script casilla reemplazo de gran alcance para proporcionar la máxima flexibilidad en el cambio de la apariencia y función de los elementos de formulario HTML.

7. Estilo de control de formularios: muestra los efectos de varias reglas CSS que se aplican en los formularios.

8. Mostrando buena forma: es de acceso complejo, la red es de estilo de forma con marcado semántico es decir por medio de signos.

9. El estilo del elemento Button con puertas correderas: una técnica cross-browser para los elementos de botón con puertas correderas.

10. Bonita forma que resulte accesible: uso de CSS en lugar de las tablas de la vieja escuela.

11. Compruébelo usted mismo, no lo seleccione: Si se intenta utilizar varias casillas de verificación en una lista desplegable mejor usar ctrl-click en un estado normal de selección múltiple listbox.

12. Las formas sensibles: buen diseño visual que beneficiarán todos los usuarios con visión.

13. AJAX Formulario de Contacto:  Utiliza Javascript discreto.

14. AutoSuggest: Un auto-completar AJAX campo de texto - en la que añade un menú popdown de valores sugeridos para un campo de texto.

15. FancyUpload: utilizando Mootools Swf cumple con Ajax para la subida de archivos.

16. Plugin jQuery: Formulario que permite actualizar, obtener informacion fácil y discretamente. formularios HTML para usar AJAX,  17-Cforms : Un plugin de forma de contacto AJAX para Word Press, que ofrece la implementación práctica de las formas múltiples contactos a través de su blog o incluso en la misma página.

18. Campo muy fácil de validación con Prototype: Aquí hay un script de validación de forma que es muy fácil de usar.

19. Validación de vivir : es una pequeña biblioteca de código abierto Javascript construido para dar a los usuarios información en tiempo real de validación.

20. Ajax validación de formularios: para procesar y validar sus formas.

21. fValidator: es un código abierto (libre) herramienta de Javascript discreto para la validación de forma, fácil manejo.

22. Consejos de validación de su forma : En este artículo se explica una manera de lograr la validación.

23. Formulario de Asistencia sin Popups : Una buena técnica para agregar información, ayudará a los formularios sin necesidad de utilizar ventanas emergentes.

24. Recorte de los campos del formulario: con un uso inteligente de Javascript, DOM y CSS  podemos ocultar campos opcionales.

25. Consejos para crear grandes formas Web: consejos CSS lo verdaderamente importante.

26. Trucos sencillos para las formas más útil : Una serie de simples trucos para mejorar la usabilidad de las formas.

27. DOM Javascript: Barra deslizante.

28. Plugin: Entrada enmascarada.

29. Ajax Formulario de contacto + YUI demostración.

30. A CSS:  basados ​​en CSS de plantillas de formulario.

31. Pretty forms:

32. Ajax captcha: Código de la imagen.

33. Anchar layout with forms: Diseño de anclaje con las formas.

34. Ext file upload form widget example:

35. Control textarea prototype instant edit:

36. Instant edit:

37. Ajax check username:

38. Ajax charned select:

39. Contraseña medidor de intensidad de su formulario de registro: Sobre cómo construir un medidor de intensidad de contraseñas como el que en el formulario de nueva cuenta de Google.

40. Formulario de AJAX POST / GET: Forma de envío HTML con AJAX  Javascript ejemplo .

41. Validación degradables Formulario Ajax: proporcionar información en tiempo real al usuario mediante secuencias de comandos en el servidor de validación.

42. ESTILO ENTRADAS DE ARCHIVOS CON CSS y el DOM: guía para el logro de archivo consistente y elegante, subir las entradas a través de un uso inteligente de js y css.

43. Form styling with css:

44. Wufoo Form Builder: Constructor de Forma Libre HTML  Creación de formularios, encuestas e invitaciones.

45. Fábrica de formularios Web: código abierto generador de formularios, genera automáticamente el código de fondo necesario para unir el formularios a una base de datos.

46. Jot Form: es una web basada en gran creador de formularios WYSIWYG. Puede seleccionar un tipo de formulario (Contacto, encuesta de satisfacción, solicitud de empleo, Sugerir Sitio Web, registro de miembros, el Partido RSVP, la asistencia de la boda, Reservaciones, Presentar productos, y otros).

47. Asamblea forma: una hermosa colección de hojas de estilo CSS para formularios Web.

martes, 12 de julio de 2011

PROGRAMACION

Programacion

Lógica de Programación

1. Tipo de dato: es un atributo de una parte de los datos que indica al ordenador algo sobre la clase de datos sobre los que se va a procesar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar y qué operaciones se pueden realizar. Tipos de datos comunes son: enteros, números de coma flotante (decimales), cadenas alfanuméricas, fechas, horas, colores, coches o cualquier cosa que se nos ocurra. Por ejemplo, así como las operaciones que se pueden realizar con los enteros, como la suma, resta y multiplicación. Los colores, por otra parte, se representan como tres bytes denotando la cantidad de rojo, verde y azul, y una cadena de caracteres representando el nombre del color; las operaciones permitidas incluyen la adición y sustracción, pero no la multiplicación.
2. Operadores: Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores que son llamados operandos.
3. Tipos de Operadores:
a) Aritméticos (su resultado es un número): potencia, * , / , mod, div, + , -
b) Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <>
c) Lógicos o Booleanos (su resultado es un valor de verdad): not, and, or
d) Alfanuméricos : + (concatenación)
e) Asociativos. El único operador asociativo es el paréntesis ( ) , el cual permite indicar en qué orden deben realizarse las operaciones. Cuando una expresión se encuentra entre paréntesis, indica que las operaciones que están dentro de ellos debe realizarse primero. Si en una expresión se utilizan más de un paréntesis se deberá proceder primero con los que se encuentren más hacia el centro de la expresión.
4. Orden de evaluación de los operadores
( )
signo
Potencia
Producto y división
Div
Mod
Suma y resta
Concatenación
Relacionales
Negación
And
Or
Datos de tipo entero tienen los operadores +, -, *, /, div, mod, abs, sqr, sqrt, ln, exp, sin, cos, tan, pow, etc. Los datos de tipo real tienen los mismos operadores enteros y además trunc, round, int, y otros. La suma y multiplicación de datos de tipo real cumplen la propiedad conmutativa, pero no siempre la asociativa y la distributiva.
5. Variables: es una zona de memoria referenciada por un nombre de una variable, donde se pueden almacenar el valor de un dato, que puede cambiarse cuando lo deseemos. El usuario elige el nombre de a variable.
6. Constantes: a toda posición de memoria, referenciada por un nombre de constante, donde se almacena un valor que no puede cambiarse o permanece invariable a lo largo del proceso. Pueden ser enteras, reales, de caracteres o alfanuméricas.
7. Algoritmo: método de resolución de un problema en un numero finito de pasos. Debe estar todo detallado paso a paso.
8. Características de los algoritmos
finito: que finalice
legibilidad: debe estar escrito de tal forma que sea fácil de leer y de entender.
Modificabilidad: deben ser fáciles de realizar.
Eficiencia: deben ocupar lo menos posible para aprovechar al máximo la memoria del ordenador y para mejor tiempo de ejecución.
Modularidad: puede estar subdividido en módulos o programas mas pequeños, llamados subprogramas cada uno de los cuales realiza una parte del programa.
Estructuración: comprende todas las características anteriores.
9. Tipos de algoritmos
diagramas de flujo u ordinogramas: utiliza símbolos gráficos.
Tablas de decisiones: tabulan todas las posibles situaciones que se pueden presentar en el problema y las correspondientes acciones a tomar para cada una de ellas.
Pseudocódigo: describe un algoritmo utilizando una mezcla de frases en un lenguaje común.
10. Estructura de los pseudocódigos
inicial: variables, archivos, valores de las variables, etc.
repetitiva o ciclo: es el cuerpo del programa.
Final: impresión de los resultados, cargar archivos.
11. Instrucciones de entrada: se utilizan para tomar datos del exterior, graduándolos en variables.
12. Instrucciones de salida: sirven para presentar en pantalla o en impresora comentarios,constantes, comentarios de las variables y el resultado de expresiones.

miércoles, 27 de abril de 2011

CONTROL DE VERSIONES

                                    control de versiones

Un sistema de control de versiones (o sistema de control de revisiones) es una combinación de tecnologías y practicas para seguir y controlar los cambios realizados en los ficheros del proyecto, en particular en el código fuente, en la documentación y en las páginas web.
 funcionalidades :

Subversion es muy conocido en la comunidad de software libre y se utiliza en muchos proyectos, como:
  • Apache Software Foundation
  • Django
  • Free Pascal
  • FreeBSD
  • GNOME
  • GCC
  • KDE
  • Mono
  • Python
  • Ruby
  • Tigris.org
sistema operativo : multiplataforma


martes, 5 de abril de 2011

DIAGRAMA DE CLASES DE UML


                                              DIAGRAMA DE CLASES


                                  


PARA QUE SIRVE DIAGRAMA DE CLASES :

Un diagrama de clases sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenimiento.


 QUE ES UN DIAGRAMA DE CLASE UML :

DEFINICON :

Un diagrama de Clases representa las clases que serán utilizadas dentro del sistema y las relaciones que existen entre ellas.  Un diagrama de clases está compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición, Agregación, Asociación y Uso.



INTRODUCCION :

Un Diagrama es una representación gráfica de una colección de elementos de modelado, a menudo dibujada como un grafo conexo de arcos (relaciones) y vértices. Un diagrama no es un elemento semántico, un diagrama muestra representaciones de elementos semánticos del modelo, pero su significado no se ve afectado por la forma en que son representados.


CLASE :Es la unidad básica que almacena toda la información de un Objeto.

RELACIONES :herencia,composicion,agregacion,asociacion y uso.


ejm :

jueves, 10 de marzo de 2011

CAMBIO DE USO

 Qué es un Actor?
rLa palabra actor se utiliza en el UML para representar a los agentes externos que interactúan con el sistema a rollar.
Qué es un rol
Es una actividad que puede asumir una persona o un sistema.
Cuantos roles puede tener un usuario?
Varios.
Para quien está dirigido los diagramas de casos de uso?
Es la explicación del cliente de que se trata el sistema, propietario y usuario
Cuantos niveles de Diagramas de Casos de uso existen y menciónelos
-Diagrama de negocios son más sencillos de  entender el cliente
-Sistema Esta más al nivel de los desarrolladores
Qué hacer cuando el diagrama de caso de uso es muy grande y no cabe en una sola hoja?
-Tratar de agrupar varios casos de uso en un que sea más general
-Tratar de organizar los casos de uso por módulos
Cuando se tiene un diagrama de casos de uso muy complejo qué recomendarías?
Que es una clase?
Una clase es una construcción que se utiliza como un modelo (o plantilla) para crear objetos de ese tipo. El modelo describe el estado y el comportamiento que todos los objetos de la clase comparten. Un objeto de una determinada clase se denomina una instancia de la clase.
Ejemplos de clases
Una clase es un contenedor de uno o más datos (variables o propiedades miembro) junto a las operaciones de manipulación de dichos datos (métodos). Las clases pueden definirse como estructuras (struct), uniones (union) o clases (class) pudiendo existir diferencias entre cada una de las definiciones según el lenguaje. Además las clases son agrupaciones de objetos que describen su comportamiento.
La sintaxis típica de una clase es:
 class Nombre {
     // Variables miembro (habitualmente privadas)
     miembro_1; //lista de miembros
     miembro_2;
     miembro_3;

Que es un Objeto?
En el paradigma de programación orientada a objetos (POO, o bien OOP en inglés), un objeto se define como la unidad que en tiempo de ejecución realiza las tareas de un programa. También a un nivel más básico se define como la instancia de una clase.
Estos objetos interactúan unos con otros, en contraposición a la visión tradicional en la cual un programa es una colección de subrutinas (funciones o procedimientos), o simplemente una lista de instrucciones para el computador. Cada objeto es capaz de recibir mensajes, procesar datos y enviar mensajes a otros objetos de manera similar a un servicio.
En el mundo de la programación orientada a objetos (POO), un objeto es el resultado de la instanciación de una clase. Una clase es el anteproyecto que ofrece la funcionalidad en ella definida, pero ésta queda implementada sólo al crear una instancia de la clase, en la forma de un objeto. Por ejemplo: dado un plano para construir sillas (una clase de nombre clase_silla), entonces una silla concreta, en la que podemos sentarnos, construida a partir de este plano, sería un objeto de clase_silla. Es posible crear (construir) múltiples objetos (sillas) utilizando la definición de la clase (plano) anterior. Los conceptos de clase y objetos son análogos a los de tipo de datos y variable, es decir, definida una clase podemos crear objetos de esa clase, igual que disponiendo de un determinado tipo de dato (por ejemplo el tipo entero), podemos definir variables de dicho tipo:
int a,b;

UML y Conceptos bàsicos de POO

martes, 8 de marzo de 2011

MANADA SISTEM

Caso de uso
En ingeniería del software, un caso de uso es una técnica para la captura de requisitos potenciales de un nuevo sistema o una actualización de software. Cada caso de uso proporciona uno o más escenarios que indican cómo debería interactuar el sistema con el usuario o con otro sistema para conseguir un objetivo específico. Normalmente, en los casos de usos se evita el empleo de jergas técnicas, prefiriendo en su lugar un lenguaje más cercano al usuario final. En ocasiones, se utiliza a usuarios sin experiencia junto a los analistas para el desarrollo de casos de uso.
En otras palabras, un caso de uso es una secuencia de interacciones que se desarrollarán entre un sistema y sus actores en respuesta a un evento que inicia un actor principal sobre el propio sistema. Los diagramas de casos de uso sirven para especificar la comunicación y el comportamiento de un sistema mediante su interacción con los usuarios y/u otros sistemas. O lo que es igual, un diagrama que muestra la relación entre los actores y los casos de uso en un sistema. Una relación es una conexión entre los elementos del modelo, por ejemplo la especialización y la generalización son relaciones. Los diagramas de casos de uso se utilizan para ilustrar los requerimientos del sistema al mostrar cómo reacciona a eventos que se producen en su ámbito o en él mismo
Un poco de Historia en la programación
En 1986, Ivar Jacobson, importante contribuyente al desarrollo de los modelos de UML y proceso unificado, creó el concepto de caso de uso. Se han realizado muchas mejoras al concepto que se estableció entonces, pero probablemente la más influyente y significativa, en términos de definición del término caso de uso, fue la de Alistair Cockburn en el libro Escribir casos de uso efectivos publicado en el año 2000.
Durante los años 1990 los casos de uso se convirtieron en una de las prácticas más comunes para la captura de requisitos funcionales, especialmente con el desarrollo del paradigma de la programación orientada a objetos, donde se originaron, si bien puede utilizarse con resultados igualmente satisfactorios con otros paradigmas de programación.
Definiciones básicas
Actores
Se le llama actor a toda entidad externa al sistema que guarda una relación con éste y que le demanda una funcionalidad. Esto incluye a los operadores humanos pero también incluye a todos los sistemas externos, además de entidades abstractas, como el tiempo.
En el caso de los seres humanos se pueden ver a los actores como definiciones de rol, por lo que un mismo individuo puede corresponder a uno o más Actores. Suele suceder sin embargo, que es el sistema quien va a tener interés en el tiempo. Es frecuente encontrar que nuestros sistemas deben efectuar operaciones automáticas en determinados momentos; y siendo esto un requisito funcional obvio, resulta de interés desarrollar alguna forma de capturar dicho requisito en el modelo de caso de uso final.
Tipos de relaciones
  • ``comunica (<<communicates>>): Relación (asociación) entre un actor y un caso de uso que denota la participación del actor en dicho caso de uso.
  • ``usa ( <<uses>>) (o <<include>> en la nueva versión de UML): Relación de dependencia entre dos casos de uso que denota la inclusión del comportamiento de un escenario en otro.
  • ``extiende (<< extends>>): Relación de dependencia entre dos casos de uso que denota que un caso de uso es una especialización de otro. Por ejemplo, podría tenerse un caso de uso que extienda la forma de pedir azúcar, para que permita escoger el tipo de azúcar (normal, dietético o moreno) y además la cantidad en las unidades adecuadas (cucharadas o bolsas). Un posible diagrama se muestra en la figura
Se utiliza una relación de tipo <<extends>> entre casos de uso cuando nos encontramos con un caso de uso similar a otro pero que hace algo más que éste (variante). Por contra, utilizaremos una relación tipo << uses>> cuando nos encontramos con una parte de comportamiento similar en dos casos de uso y no queremos repetir la descripción de dicho comportamiento común.
En una relación << extends>>, un actor que lleve a cabo el caso de uso base puede realizar o no sus extensiones. Mientras, en una relación <<include>> el actor que realiza el caso de uso base también realiza el caso de uso incluido.
En general utilizaremos <<extends>> cuando se presenta una variación del comportamiento normal, y <<include>> cuando se repite un comportamiento en dos casos de uso y queremos evitar dicha repetición.
Por último en un diagrama de casos de uso, además de las relaciones entre casos de uso y actor (asociaciones) y las dependencias entre casos de uso (<<include>> y <<extends>>), pueden existir relaciones de herencia ya sea entre casos de uso o entre actores.
Llamamos modelo de casos de uso a la combinación de casos de uso y sus correspondientes diagramas. Los modelos de casos de uso se suelen acompañar por un glosario que describe la terminología utilizada. El glosario y el modelo de casos de uso son importantes puntos de partida para el desarrollo de los diagramas de clases.
Por último se debe tener en cuenta, que aunque cada caso de uso puede llevar a diferentes realizaciones, es importante reflejar en cada representación el motivo que nos ha llevado a descartarla, si es el caso.

Pasos para la Definición de un Caso de Uso:
  • ID
  • NOMBRE
  • REFERENCIAS CRUZADAS
  • CREADO POR
  • ULTIMA ACTUALIZACION POR
  • FECHA DE CREACION
  • FECHA DE ULTIMA ACTUALIZACION
  • ACTORES
  • DESCRIPCION
  • TRIGGER
  • PRE-CONDICION
  • POST-CONDICION
  • FLUJO NORMAL
  • FLUJOS ALTERNATIVOS
  • INCLUDES
  • FRECUENCIA DE USO
  • REGLAS DE NEGOCIO
  • REQUERIMIENTOS ESPECIALES
  • NOTAS Y ASUNTO
Normas de aplicación
Los casos de uso evitan típicamente la jerga técnica, prefiriendo la lengua del usuario final o del experto del campo del saber al que se va a aplicar. Los casos del uso son a menudo elaborados en colaboración por los analistas de requerimientos y los clientes.
Cada caso de uso se centra en describir cómo alcanzar una única meta o tarea de negocio. Desde una perspectiva tradicional de la ingeniería de software, un caso de uso describe una característica del sistema. Para la mayoría de proyectos de software, esto significa que quizás a veces es necesario especificar diez o centenares de casos de uso para definir completamente el nuevo sistema. El grado de la formalidad de un proyecto particular del software y de la etapa del proyecto influenciará el nivel del detalle requerido en cada caso de uso.
Los casos de uso pretenden ser herramientas simples para describir el comportamiento del software o de los sistemas. Un caso de uso contiene una descripción textual de todas las maneras que los actores previstos podrían trabajar con el software o el sistema. Los casos de uso no describen ninguna funcionalidad interna (oculta al exterior) del sistema, ni explican cómo se implementará. Simplemente muestran los pasos que el actor sigue para realizar una tarea.
Un caso de uso debe:
  • describir una tarea del negocio que sirva a una meta de negocio
  • tener un nivel apropiado del detalle
  • ser bastante sencillo como que un desarrollador lo elabore en un único lanzamiento
Situaciones que pueden darse:
  • Un actor se comunica con un caso de uso (si se trata de un actor primario la comunicación la iniciará el actor, en cambio si es secundario, el sistema será el que inicie la comunicación).
  • Un caso de uso extiende otro caso de uso.
  • Un caso de uso utiliza otro caso de uso.
Ventajas
La técnica de caso de uso tiene éxito en sistemas interactivos, ya que expresa la intención que tiene el actor (su usuario) al hacer uso del sistema.
Como técnica de extracción de requerimiento permite que el analista se centre en las necesidades del usuario, qué espera éste lograr al utilizar el sistema, evitando que la gente especializada en informática dirija la funcionalidad del nuevo sistema basándose solamente en criterios tecnológicos.
A su vez, durante la extracción (elicitation en inglés), el analista se concentra en las tareas centrales del usuario describiendo por lo tanto los casos de uso que mayor valor aportan al negocio. Esto facilita luego la priorización del requerimiento.
Limitaciones
Los casos de uso pueden ser útiles para establecer requisitos de comportamiento, pero no establecen completamente los requisitos funcionales ni permiten determinar los requisitos no funcionales. Los casos de uso deben complementarse con información adicional como reglas de negocio, requisitos no funcionales, diccionario de datos que complementen los requerimientos del sistema. Sin embargo la ingeniería del funcionamiento especifica que cada caso crítico del uso debe tener un requisito no funcional centrado en el funcionamiento asociado.