martes, 24 de mayo de 2011

puntos extras clase: Modelado de Base de Datos en UML


Los objetos brindan confiabilidad, flexibilidad y eficiencia a los sistemas de software, haciéndole frente a los diseñadores y a los arquitectos de hoy en día con muchas opciones. Desde el punto de vista de la tecnología, la opción esta generalmente entre orientación a objetos pura,  híbrido relacional-objeto, relacional puro, y soluciones basadas en los formatos de archivos abiertos o propietarios (ej. XML, el almacenamiento estructurado OLE). Oracle, IBM, Microsoft, POET ofrecen soluciones similares pero a menudo incompatibles.

Este articulo toma una de esas opciones, que es acordar un modelo orientado a objetos sobre una base de datos puramente relacional. Esto no implica que este sea la única opción, la mejor o mas simple solución, pero pragmáticamente es uno de los mas comunes.

Comenzaremos con un viaje rápido entre los dos dominios del diseño: primero el modelo de clases orientado a objetos según se presenta en UML, y segundo el modelo de base de datos relacional.

Para cada dominio miraremos solamente las características principales que afectan nuestra tarea. Entonces miraremos las técnicas y las ediciones implicadas en el mapeo del modelo de clases al modelo de base de datos, incluyendo persistencia del objeto, comportamiento del objeto, relaciones entre los objetos e identidad de los objetos. Concluiremos con una revisión del perfil de los datos de UML (según lo propuesto por Rational Software).
Una cierta familiarización con diseño orientado a objetos, UML y modelado de base de datos relacional es asumida.

El modelo de clase en UML es el artefacto principal producido para representar la estructura lógica  de un sistema de software. Captura los requisitos de los datos y el comportamiento de objetos dentro del dominio de modelo. Las técnicas para descubrir y elaborar este modelo están fuera del alcance de este artículo, por eso asumiremos la existencia de un modelo de clases bien diseñado que requiere mapeo a la Base de Datos relacional.

puntos extras clase : Sistemas operativos moviles

Para aquellos que quieran comprar un móvil en breve y para los que el sistema operativo sea un factor a tener en cuenta, y también para los curiosos, aquí tienes unas pequeñas notas sobre los sistemas operativos para smartphones más importantes del mercado actual.

iPhone OS

El sistema operativo del iPhone de Apple. En concreto se trata de una versión reducida de Mac OS X optimizada para procesadores ARM que actualmente se encuentra en su versión 2.0, liberada el 11 de Julio de 2008.
Oficialmente no se pueden instalar programas que no hayan sido firmados por Apple, para lo cuál hace falta pagar para entrar a formar parte del iPhone Developer Program (descargar el SDK, por otro lado, si es gratuito). Es posible, no obstante, desarrollar aplicaciones web para Safari o instalar aplicaciones de terceros mediante jailbreaking a través de los programas PwnageTool y WinPwn, que también permiten liberar el iPhone de primera generación.
Se trata de un buen sistema operativo, con una interfaz muy interesante, como nos tiene acostumbrados Apple, aunque es una lástima el hardware sobre el que corre el sistema, que tiene muchas carencias, y las restricciones auto impuestas:
  • restricciones sobre el hardware en el que correrá el sistema
  • restricciones sobre el software que puede ejecutar el sistema
  • restricciones sobre las aplicaciones que se pueden ejecutar en segundo plano, o lo que es lo mismo, restricciones en la multitarea (que se pueden subsanar de nuevo con PwnageTool y WinPwn)
  • y restricciones sobre los operadores con los que poder utilizar el teléfono.

Windows Mobile

El sistema operativo de Microsoft para móviles. Se trata de un sistema escrito desde cero que tan solo tiene en común con los Windows de escritorio el nombre y algunas convenciones de la interfaz de usuario.
Se encuentra en su versión 6.1, de Abril de 2008, estando la versión 7 prevista para la segunda mitad de 2009. Windows Mobile 7 pretende ser revolucionario, dando mayor protagonismo a la pantalla táctil (de nuevo Apple muestra el camino a seguir). Se podrá interactuar con el sistema realizando movimientos sobre la pantalla que el teléfono detectará utilizando la cámara. El aspecto de la interfaz será más parecido a Vista.
En la actualidad ya existen teléfonos que corren Windows Mobile y cuentan con pantalla táctil, como el HTC Touch Diamond, que utiliza la interfaz de usuario TouchFLO 3D diseñada por HTC y que algunos consideran uno de los mayores competidores del iPhone.

BlackBerry OS

Se trata de un sistema operativo multitarea desarrollado por la compañía Research In Motion (RIM), creadores de los BlackBerry. Es un sistema operativo orientado principalmente al entorno empresarial que soporta el perfil MIDP 1.0 para desarrollo de aplicaciones Java para dispositivos móviles, además de parte de MIDP 2.0 desde la versión 4.
Es posible desarrollar software para la plataforma utilizando MIDP o bien utilizando el API propietario de RIM, pero si la aplicación hace uso de determinadas funciones debe ser firmada por RIM para poder ejecutarse. Para firmar una aplicación el desarrollador debe realizar un pago inicial de 100$.

Symbian

El sistema operativo sobre el que corren la mayoría de los smartphones, y por lo tanto el sistema operativo que cuenta con más aplicaciones en su haber. Según un estudio de Febrero de 2008 Symbian cuenta con un 65% de mercado, frente al 12% de Windows Mobile, 11% de BlackBerry OS, 7% de iPhone OS y 5% de Linux.
Cuenta con varias interfaces de usuario siendo la más popular S60; especialmente interesante por permitir desarrollo en Python.
Actualmente Symbian se encuentra en la versión 9.5, aunque aún no existen teléfonos que lo incorporen (tampoco la versión 9.4, que posiblemente esté incluido con el próximo Nokia 5800 XpressMedia, con pantalla táctil y que es la apuesta de Nokia para competir con el iPhone). Desde la versión 9.1 es necesario que las aplicaciones estén firmadas para poder utilizar ciertas funciones del teléfono, aunque es posible saltarse esta limitación utilizando distintos métodos.
Nokia, que ya contaba con un 48% de las acciones de Symbian, anunció recientemente la compra de la compañía. También hicieron pública su intención de que Symbian pase a ser software libre en un futuro próximo, para lo cual ya ha creado una fundación sin ánimo de lucro que se encargue de la estandarización de Symbian, la Fundación Symbian.

Android

La plataforma de Google para móviles. Es libre (licencia Apache versión 2) y está basado en Linux y Java. Por ahora no es más que una promesa, puesto que no se ha presentado ningún movil que lo utilice. Se especula que HTC podría ser el primer fabricante en utilizar este sistema operativo, a finales de año, e incluso se rumorea un nombre para este modelo: el HTC Dream.

Puntos extras clase :interfaz grafica python

TkInter

TkInter (de TK Interface) es un módulo que nos permite construir interfaces gráficas de usuario multiplataforma en Python utilizando el conocido toolkit Tk. Python incluye este módulo por defecto, lo que hace que sea un tookit muy popular. TkInter, además, es robusto, maduro y muy sencillo de aprender y de utilizar, contando con una amplia documentación.

Por otro lado hasta la versión 8.5 Tk era famoso por lo poco atractivo de sus widgets (cosa que se podía solucionar hasta cierto punto gracias a Tile). No es hasta esta versión que contamos con cosas tan básicas como textos con antialiasing en X11 o widgets como Treeview. En esta versión también se incluye Tile por defecto, por lo que contamos con un mejor aspecto general para todas las plataformas.
Sin embargo Python no se distribuye con Tk 8.5 hasta la versión 2.6, por lo que, para versiones de Python anteriores, es necesario recompilar TkInter para Tk 8.5 por nuestra cuenta, o bien usar Tile si no necesitamos ninguna de las nuevas características.
Es más, para poder usar la mayor parte de las nuevas características de Tk 8.5 es necesario instalar una librería que actúe como wrapper de Ttk (el nombre con el que han dado en llamar al conjunto de los nuevos widgets y temas de Tk), como puede ser pyttk.
TkInter se distribuye bajo la PSFL (Python Software Foundation License) una licencia compatible con la GPL creada para la distribución de software relacionado con el proyecto Python. La PSFL carece de la naturaleza viral de la GPL, por lo que permite crear trabajos derivados sin que estos se conviertan necesariamente en software libre.
Por último, veamos una pequeña aplicación de ejemplo escrita con TkInter, sin uso de eventos y con solo unos pocos widgets, que nos servirá para comparar el aspecto de los distintos toolkits.
  1. from Tkinter import *  
  2.   
  3. root = Tk()  
  4.   
  5. frame = Frame(root)  
  6. frame.pack()  
  7.   
  8. label = Label(frame, text="Hola mundo")  
  9. c1 = Checkbutton(frame, text="Uno")  
  10. c2 = Checkbutton(frame, text="Dos")  
  11. entry = Entry(frame)  
  12. button = Button(frame, text="Aceptar")  
  13.   
  14. label.pack()  
  15. c1.pack()  
  16. c2.pack()  
  17. entry.pack()  
  18. button.pack()  
  19.   
  20. root.mainloop()  
GUIs en Python con TkInter
Pros: Popularidad, sencillez, documentación.
Contras: Herramientas, integración con el sistema operativo, lentitud.
Recomendado para: ¿Prototipos rápidos?

puntos extras Eclipse y tomcat

Antiguamente si queríamos integrar Tomcat en Eclipse teníamos que recurrir a algún plugin, como Sysdeo Eclipse Tomcat Launcher. Actualmente, con Eclipse Ganymede (Eclipse 3.4) eso ya no es necesario y podemos iniciar y parar Tomcat o depurar el código desde Eclipse.

                          Eclipse y Tomcat

Veamos los pasos a seguir para lograr esta interacción.

  1. Descargamos Eclipse desde su página web. La versión que nos interesa, dado que vamos a desarrollar con JEE, es la llamada Eclipse IDE for Java EE Developers (163 MB)
  2. Descargamos y descomprimimos el zip de la última versión core de Tomcat.
  3. Iniciamos Eclipse. Nos dirigimos a Window -> Preferences -> Server -> Runtime Environment, pulsamos Add y seleccionamos nuestra versión de Tomcat. Marcamos Create a new local server si no está seleccionado.
  4. Pulsamos Next y buscamos el directorio en el que instalamos Tomcat. Pulsamos Finish y OK. El nuevo servidor debería mostrarse en la pestaña Servers. También se habrá creado un proyecto nuevo Servers con los archivos de configuración de nuestra instancia de Tomcat.
  5. Ahora vamos a probar el servidor creando una pequeña aplicación web. Seleccionamos File -> New -> Dynamic Web Project, rellenamos el nombre que queramos darle a la aplicación y pulsamos Finish.
  6. Hacemos clic con el botón derecho sobre la carpeta WebContent de nuestro nuevo proyecto y seleccionamos New -> JSP. Le damos como nombre index.jsp y pulsamos Finish. No necesitamos hacer nada más, puesto que el descriptor de despliegue que se crea por defecto ya indica que index.jsp es uno de los welcome-file.
  7. Sustituimos el contenido de index.jsp por el siguiente, que debería mostrar la cabecera User-Agent, con la información del navegador
  8. Tu navegador es <%= request.getHeader("user-agent") %>
    
    
  9. Arrastramos el proyecto desde el explorador de proyectos al servidor Tomcat en la pestaña Servers para asociarlo.
  10. Hacemos clic con el botón derecho sobre el servidor y seleccionamos Start.
  11. Abrimos la página http://localhost:8080/nombre_aplicacion/. Si todo ha funcionado correctamente deberíamos ver nuestro user-agent en pantalla
  12. Desarrollamos nuestra aplicación usando JSP, Servlets, JDBC, Hibernate, o cualquier otra tecnología que nos interese.
  13. Una vez terminada la aplicación solo resta crear un archivo WAR para poder distribuirla fácilmente. Hacemos clic con el botón derecho sobre nuestro proyecto, seleccionamos Export -> WAR File, e introducimos el nombre a utilizar y la ruta en la que queramos guardar el WAR.

Puntos extras clase : diagramas de secuencia un paso ala vez


A pesar de que a partir de los diagramas de casos de uso y de los diagramas de robustez ya tenemos entre un 75 y 80 por ciento de atributos de nuestras clases identificados, es hasta el diagrama de secuencia donde se empiezan a ver que métodos llevaran las clases de nuestro sistema. Esto se debe que hasta que vemos interactuando a los objetos de nuestras clases con los actores y con otros objetos de manera dinámica, hasta ese momento tenemos suficiente información como para poder empezar a especificar los métodos de nuestras respectivas clases.

El diagrama de secuencias es el núcleo de nuestro modelo dinámico, y muestra todos los cursos alternos que pueden tomar todos nuestros casos de uso. Los diagramas de secuencias se componen de 4 elementos que son: el curso de acción, los objetos, los mensajes y los métodos (operaciones). Estos 4 elementos son los que ya han sido analizados en clase con anterioridad dentro de la primera unidad.

Los 4 pasos a seguir:
A continuación se dará una muy breve descripción de los 4 pasos que se deben de seguir para dibujar correctamente diagramas de secuencia de ICONIX:

-Paso 1: Copia el texto de la especificación de tu caso de uso y pégalo en la parte superior de tu diagrama de secuencia. Con esto siempre se tendrá en cuenta que es lo que debe de hacer el diagrama de secuencia.

-Paso 2: Cada uno de los objetos entidad de tu diagrama de robustez es una instancia de la clase que debe de ser agregada a tu diagrama de secuencias ya que representa tu modelo estático. Hay que ser muy meticuloso con este paso, ya que representa el ultimo de tu modelo estático antes de codificar.

-Paso 3: Agrega las interfaces del diagrama de robustez. Con esto ya tenemos el diagrama de secuencias construido. Ahora, el cuarto paso es para decidir cuales métodos irían en cuales clases, lo cual es la esencia del modelo de iteraciones.

-Paso 4: Pon los métodos en las clases, lo cual significa convertir los controles uno por uno de tu diagrama de robustez en métodos y mensajes. Verifica que para cada control dibujado le pertenecen los mensajes correctos dentro del diagrama de secuencias.

Top Ten de errores de los diagramas de secuencia:
A continuación se presentan los 10 errores mas comúnmente cometidos por los estudiantes al intentar hacer sus diagramas de secuencia.

10.- No hacen un diagrama de secuencia para cada caso de uso: Hacer esto es muy importante, ya que solo así se puede saber cual es el rol y las responsabilidades de cada objeto.

9.- No ponen el texto del caso de uso en el diagrama de secuencia: El poner de vuelta este texto al margen del diagrama de secuencia provee de la visión necesaria para poder hacer diagramas de secuencia correctos de acuerdo al caso de uso que se esta modelando.

8.- No identifican todos los objetos necesarios desde el diagrama de robustez: Si tienes problemas al realizar los diagramas de secuencia es por que tienes mal modelados tus casos de uso o tus diagramas de robustez están incompletos.

Puntos extras clase :Instalacion de Net beans

NetBeans es uno de los más populares del entorno de desarrollo integrado ( IDE , lo que proporciona un conjunto de herramientas y características para acelerar el proceso de desarrollo, tan útil en el fomento de la productividad de los programadores). NetBeans es un código abierto y libre aplicación, disponible para todas las plataformas comunes - Distors Linux como Ubuntu 11.04 (Natty Narwhal), Fedora, Linux Mint, Windows y Mac OS X. NetBeans 7.0 (Última versión estable) publicado la semana hace. Netbeans es muy popular entre los desarrolladores de Java EE, por sus características y la simplicidad. Este artículo se explica cómo instalar netbeans en una cáscara recién instalado Ubuntu 11.04, de la USC (Centro de Software) o, también puede utilizar Synaptic Package Manager.
También puede Trate de IDE de Eclipse en Ubuntu 11.04 , si lo desea, como Eclipse es otro de código abierto muy popular IDE Netbeans, pero se recomienda, para los programadores principiantes porque es muy simple, ligero y fácil de comenzar. Una gran cantidad de plugins gratuitos disponibles para ampliar las funciones (soporte para Ruby y Rails, C / C + +, PHP, etc) de NetBeans IDE. Yo, personalmente no recomiendo IDE para programadores principiantes, por el hecho de que - "IDE, se oculta un montón de cosas, mediante la creación de una capa de abstracción, que ahora debe", cuando tiene experiencia suficiente para entender los detalles subyacentes , y luego ir por un IDE como NetBeans o Eclipse. Nebeans tiene 4.5 de 5.0 en el rating software de centro.

Las características de NetBeans de un vistazo

  • una buena programación para Java (EE cuenta con el apoyo)
  • Glashfish Server 3.1 es compatible
  • una implementación más rápida con Weblogic
  • es muy fácil de usar
  • todas las otras funciones básicas (por ejemplo, coloreado de sintaxis, auto-realización) que usted espera de un IDE

Instalación de NetBeans en Ubuntu 11.04

# 1: Abre Centro de Software y de la búsqueda 'netbeans.

2: Haga clic en el botón Instalar para iniciar el procedimiento de instalación y esperar a que la instalación se complete.
3: Eso es todo .. Disfrute de codificación con Netbeans.

Vía alternativa - la instalación de NetBeans desde la línea de comandos

Abrir terminal y escriba el comando, seguido de su contraseña de acceso -
sudo apt-get update
sudo apt-get install netbeans 
 

puntos extras clase :AWT Y swing

La Abstract Window Toolkit (AWT, en español Kit de Herramientas de Ventana Abstracta) es un kit de herramientas de gráficos, interfaz de usuario, y sistema de ventanas independiente de la plataforma original de Java. AWT es ahora parte de las Java Foundation Classes (JFC) - la API estándar para suministrar una interfaz gráfica de usuario (GUI) para un programa Java.

swing

 

El paquete Swing es parte de la JFC (Java Foundation Classes) en la plataforma Java. La JFC provee facilidades para ayudar a la gente a construir GUIs. Swing abarca componentes como botones, tablas, marcos, etc...

Las componentes Swing se identifican porque pertenecen al paquete javax.swing.

Swing existe desde la JDK 1.1 (como un agregado). Antes de la existencia de Swing, las interfaces gráficas con el usuario se realizaban a través de AWT (Abstract Window Toolkit), de quien Swing hereda todo el manejo de eventos. Usualmente, para toda componente AWT existe una componente Swing que la reemplaza, por ejemplo, la clase Button de AWT es reemplazada por la clase JButton de Swing (el nombre de todas las componentes Swing comienza con "J").

Las componentes de Swing utilizan la infraestructura de AWT, incluyendo el modelo de eventos AWT, el cual rige cómo una componente reacciona a eventos tales como, eventos de teclado, mouse, etc... Es por esto, que la mayoría de los programas Swing necesitan importar dos paquetes AWT: java.awt.* y java.awt.event.*.

Ojo: Como regla, los programas no deben usar componenetes pesados de AWT junto a componentes Swing, ya que los componentes de AWT son siempre pintados sobre los de Swing. (Por componentes pesadas de AWT se entiende Menu, ScrollPane y todas las componentes que heredan de las clases Canvas y Panel de AWT).