lunes, 29 de agosto de 2011

~Diagramas UML - PUNTOS EXTRA

Materia: Programación Orientada a Objetos 


Hora: Jueves m1 - m3
Se dice que UML es un lenguaje visual orientado al modelado de sistemas, facilita un vocabulario controlado con regla y símbolos para que todos los agentes de un proyecto eviten dispersión conceptual.

Las ventajas que tiene el utilizar Los Diagramas UML son:

1.Mejora nuestro nivel de comunicación formal.
2. Abordamos la complejidad con una documentación minimalista.
3. Desarrollamos procesos y productos con una mayor fiabilidad y calidad.
4. El impacto de nuestras decisiones sobre un proceso y producto es más visible.
5.Podemos definir, organizar y compartir el conocimiento más fácil.
6.Nuestro esfuerzo de especificación es más eficiente.
* Los Diagramas UML contienen lo siguiente:
  • Tiene una gran variedad de unidades como clases, acciones, objetos, estados y casos de uso
  • Tiene una gramática que define las reglas de combinación para formar otras unidades más complejas como diagramas y modelos.
  • Tiene una determinada escala de abstracción y granularidad.
*  Los Diagramas UML nos sirven para:
-  Representar visualmente las reglas de creación, estructura y comportamiento de un grupo relacionado de objetos y procesos.
- Para visualizar de manera eficiente la complejidad de un sistema o una organización en un reducido número de diagramas.
- Para mantener mucho más ágilmente las especificaciones ante los cambios y nuevos enfoques de arquitectura.

Normalmente se utilizan los diagramas UML para:
1.Definir un problema que afecta a una organización.(Análisis)
2. Plantear una solución de diseño.(Abstracción).
3.Modelar procesos de negocio.(Optimización de flujos de trabajo).
4.Construir un producto de software.(Concreción de una abstracción).
5.Certificar la coherencia, completitud y usabilidad del producto.(Calidad).
6.Evaluar la arquitectura de una organización.(Conocimiento).


* Unidades básicas de UML
-Estructura: en ella se definen básicamente tipos de objetos (clases) con sus atributos que conocen sus responsabilidades y su nivel de visibilidad.
-Función: es donde se expresan acciones y procesos como resultado de la interacción de los objetos en un escenario acotado, y modelan la sucesión de estados que transcurren a lo largo del cliclo de vida de un objeto.
- Conectores: son los que definen las categorías de relación entre clases, objetos , acciones, procesos y estados entre todas las funciones de estructura y función.
Un diagrama UML tiene múltiples perspectivas y algunas de ellas son:
- Compartir conocimiento
- Definir reglas y responsabilidades
- Visualizar la complejidad
- Tomar decisiones
- Organizar la experiencia
- Arquitectura basada en modelos
- Vocabulario controlado






domingo, 28 de agosto de 2011

~Casos de Uso




Materia: Programación Orienta a Objetos

Hora: Jueves m1 - m3



*El diagrama de Casos de Uso que diseñe para mi proyecto del Juego del Basta es :





martes, 23 de agosto de 2011

~Clases, Atributos y Métodos



Materia: Programación Orientada  a Objetos


Hora: Jueves m1 - m3




-Definiciones :

* Clase: es una construcción que se utiliza como un modelo (o plantilla) para crear objetos. El modelo describe el estado y el comportamiento que todos los objetos de la clase comparten. Representa un sustantivo, como una persona, lugar o cosa.

* Atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

* Método: consiste generalmente de una serie de sentencias para llevar a cabo una acción, un juego de parámetros de entrada que regularán dicha acción y, posiblemente, un valor de salida (o valor de retorno) de algún tipo.

Ya con esto puedo sacar las clases, los atributos y los métodos de mi proyecto. Y lo que hice fue lo siguiente: 



* Proyecto : Basta 


- Clase (pública): Tablero.
* Esta clase se encarga de modificar todo lo referente al tablero.
- Atributos (privados): color, tamaño.
- Métodos (públicos): escribir,pausar juego.


-Clase (pública): Dado.
*Esta clase le proporciona al usuario la letra con la que realizará su juego.
-Atributos (privados):  forma, color, letra para jugar. 
-Métodos (públicos):  girar, detener.


-Clase (pública): Reloj.
*Esta clase se encarga de marcar el tiempo transcurrido del jugador.
-Atributos (privados):  color, forma, tamaño, formato de tiempo.
-Métodos (públicos):  iniciar, pausar, parar.


 
-Clase (pública): Jugador.
*Esta clase se encarga de que el usuario juegue  o salga del juego.
-Atributos (privados):  activo, desactivo,tipo(principiante, intermedio, experto).
-Métodos (públicos):  jugar, finalizar.




-Clase (pública) : Puntuación
*Esta clase se encarga de llevar un registro de los puntos hechos por el jugador.
-Atributos(privados): color, tamaño, forma, contenido, posición.
-Métodos(públicos): registrar, reiniciar, eliminar.





-Clase (pública) : Menú
*Esta clase se encarga de mostrarle al jugador algunas opciones del juego.
-Atributos(privados): color, tamaño, forma, contenido, posición.
-Métodos(públicos): ayudar, salir, iniciar juego.





-Clase (pública) : Perfil
*Esta clase se encarga de crear el perfil del jugador.
-Atributos(privados): color, tamaño, forma.
-Métodos(públicos): ingresar nombre, guardar puntuación.





-Clase (pública) : Dificultad 
*Esta clase se encarga de decirle al jugador que tipo de dificultad posee.
-Atributos(privados): tipo de dificultad, tamaño, forma. 
-Métodos(públicos): mostrar dificultad (depende del tipo de jugador).





-Clase (pública) : Categorías
*Esta clase se encarga de mostrarle al jugador las diferentes categorías que tendrá su juego.
-Atributos(privados): tipo de categoría, tamaño, forma, color, posición.
-Métodos(públicos): ver categorías (depende del tipo de jugador).










 * Bibliografía: 


* http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos


*http://es.wikipedia.org/wiki/Clase_(inform%C3%A1tica)


*http://es.wikipedia.org/wiki/M%C3%A9todo_(inform%C3%A1tica)

~Descripción del proyecto

Materia: Programación Orientada a Objetos

Hora: Jueves m1 - m3


Para mi proyecto final de la clase de Programación Orientada a Objetos lo que voy a hacer es un Basta electrónico, como ya todos sabemos el juego del basta consta en que alguien esta diciendo una letra, comienza diciendo A hasta que el jugador diga basta el que esta diciendo la letra le dice cual corresponde y el jugador empieza a anotar sus respuestas en las diferentes categorías que hay. Ya cuando termine de llenar todas sus categorías el jugador dice la palabra Basta indicando con esto que termino y los demás jugadores ya no pueden escribir mas respuestas.

Para dar la puntuación al momento de comparar las respuestas se checa que si la respuesta es igual se divide la puntuación en 50 y 50 ya que lo máximo es 100, si la respuesta es completamente diferente se dan 100 puntos a los 2 y si uno de los jugadores no contesto nada no se le dan puntos.

En mi Basta electrónico la dinámica va a ser un poco diferente ya que la letra se va a seleccionar dándole click a un dado y al momento que el dado de una letra el jugador le pica a tiempo para comenzar el juego, se empiezan a llenar las diferentes categorías y al momento que se termine el tiempo se muestran las respuestas de la computadora y se comparan con las del jugador. Hasta ahorita esta es la idea que tengo estoy viendo como poder hacerle para que diferentes usuarios jueguen unos contra otros en línea pero esto básicamente seria la idea de mi proyecto principal.


Aquí esta el link de un demo que encontré de un juego parecido al Basta que fue de donde saque la idea del dado y del tiempo y con esto esta un poquito mas clara la idea que tengo.


Scattergories





~Casos de Uso - PUNTOS EXTRA

Materia : Programación Orientada a Objetos 

Hora: Jueves m1 - m3


* Diagramas de Casos de Uso :


* Buscaminas





* iTunes





* SIASE



~Patrones de Diseño - PUNTOS EXTRA

Materia: Programación Orientada a Objetos 

Hora: Jueves m1 - m3


Se dice que los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.



Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.



- Algunas categorías de Patrones son:   

• Patrones de arquitectura: Aquéllos que expresan un esquema organizativo estructural fundamental para sistemas de software. 

• Patrones de diseño: Aquéllos que expresan esquemas para definir estructuras de diseño con las que construir sistemas de software.

• Dialectos: Patrones de bajo nivel específicos para un lenguaje de programación o entorno concreto.



* Algunos objetivos que tienen los patrones de diseño son:


 - Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
- Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
- Formalizar un vocabulario común entre diseñadores.
- Estandarizar el modo en que se realiza el diseño.
- Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente. 


* La plantilla más común utilizada por patrones contiene lo siguiente: 


- Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).


- Clasificación del patrón: creacional, estructural o de comportamiento.


- Intención: ¿Qué problema pretende resolver el patrón?


- También conocido como: Otros nombres de uso común para el patrón.


- Motivación: Escenario de ejemplo para la aplicación del patrón.


- Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.


- Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.


- Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.


- Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.


- Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.


- Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.


- Código de ejemplo: Código fuente ejemplo de implementación del patrón.


- Usos conocidos: Ejemplos de sistemas reales que usan el patrón.


- Patrones relacionados: Referencias cruzadas con otros patrones.






* Bibliografía: 


*http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o

*http://msdn.microsoft.com/es-es/library/bb972240.aspx

*http://www.ingenierosoftware.com/analisisydiseno/patrones-diseno.php

~Metodologías de análisis y Diseño de Software - PUNTOS EXTRA

Materia: Programación Orientada a Objetos 


Hora: Jueves m1 -m3




El Modelo y Diseño Orientado a Objetos va desde el análisis hasta la implementación pasando por el diseño . Hoy en día es una de las metodologías mas empleadas, las técnicas orientadas a objetos permiten que el software se construya a partir de objetos de compartimiento especifico.

Los objetos se pueden constituir a partir de otros, que a al mismo tiempo pueden estar formados por otros objetos. La metodología de desarrollo de software orientada a objetos es cada día más usada ya que permite desarrollar software fácilmente, extensible y reusable. Esto de reusable es posible sólo si los desarrolladores conocen muy bien los fundamentos que esté basada esta metodología.

Las metodologías de análisis y diseño más modernas son casos de uso guiados a través de requerimientos, diseño, implementación, pruebas, y despliegue.




*Los pasos para el desarrollo del diseño del software son:


- Descripción del caso y sus antecedentes
- Objetivos del Sistema
-Checar los requerimientos del sistema
- Analizar la información
-Crear el diagrama de caso de uso :
     -Seleccionar su caso de uso
     -Seleccionar sus actores
     -Seleccionar sus tipos de actores
     - Realizar una descripción detallada
     - Localizar las referencias cruzadas
 -Clasificar la acción del actor y del sistema
 -Clasificar de los Casos de uso
 -Realizar el Diagrama de Interacción de Secuencia
 - Realizar el Diagrama de Colaboración 
 -Realizar el Diagrama de Clases 






*Bibliografía:


http://html.rincondelvago.com/metodologia-de-analisis-y-diseno-orientado-a-objetos.html

~Casos de Sistemas Fallidos - PUNTOS EXTRA



Materia: Programación Orientada a Objetos 

Hora: Jueves m1 - m3



Incluso las más grandes compañías o empresas sin notar al momento de estar trabajando en algún proyecto que se les solicitó, se pueden topar con obstáculos  irreparables los cuales causan grandes pérdidas de dinero a la compañía, pero a veces las causas iniciales son tan pequeñas que es imposible creer que el efecto final sea tan grande. 


Aunque pensemos que los grandes proyectos de software de las grandes empresas no fallan o tienen errores mínimos, no es así, ya que muchas de ellas han tenido algún caso de sistema fallido. Un muy buen ejemplo sobre este tema es el del Aeropuerto de Denver en donde iba a ser el primer Aeropuerto que implementaría un sistema de software para mover las maletas pero fue un caso fallido en donde al final las maletas se abrieron, había ropa tirada por todas partes, las pocas maletas que no se abrieron y que "sobrevivieron" a este desastre terminaron en terminales equivocadas y todo esto trajo como consecuencias el que la apertura del aeropuerto se retrasara 4 veces en total, tuvo 16 meses de retraso, tuvieron que dividir el sistema en 3 partes poniendo uno por terminal y tuvieron que pagar 1.3 millones de dolares de daños en general.

Otro caso fallido ocurrió en el  Reino Unido en donde se intentó implementar un sistema de salud electrónico nacional,  el problema en este caso fue que el gobierno tenía pensado que el proyecto costaría alrededor de 29 mil millones de dólares y al final terminó costando 55mil millones una diferencia de 26 millones que no estaban contemplados para gastar. 

Y por último un caso del que no muchas personas conocen es sobre el sistema de seguridad con el que contaba la compañía SONY la cual fue hackeada por un grupo muy conocido llamado “Lulz Security”. La plataforma PlayStation Network que es usada por toda la gente que cuenta con un PlayStation 3 fue atacada por el grupo obteniendo información de los usuarios muy importantes tales como datos personales y tarjetas de créditos causando pérdidas millonarias para la compañía SONY y dejando a miles de sus usuarios inconformes. Actualmente se que ya a sido restaurada la plataforma pero también vi de que Sony Pictures también fue atacada por el mismo grupo. 



~Bibliografía:

* http://www.st.cs.uni-saarland.de/edu/se/2010/lecture-slides/01-Overview.pdf

* http://semaforoverde.wordpress.com/2007/12/07/proyectos-fallidos-it-parte-2-sistema-de-salud-de-reino-unido/

http://translate.google.com.mx/translate?hl=es&langpair=en%7Ces&u=http://hken.ibtimes.com/articles/157186/20110603/sony-hacked-by-lulzsec-may-play-cat-and-mouse-following-apple.htm