Mostrando entradas con la etiqueta MVC. Mostrar todas las entradas
Mostrando entradas con la etiqueta MVC. Mostrar todas las entradas

viernes, 20 de abril de 2012

Video Tutorial de programación para Android

Hace tiempo que no escribía nada por estos lares. Claro, cambio de prioridades, algunos cambios de trabajo, rutina, interés, en fin... varios podrían ser los factores para mantenerme alejado, sin embargo, vuelvo ahora para dejar acá un tutorial de programación para Android que encontré excelente para empezar a meterme en este mundo que se ha convertido en mi tema de interés más reciente.

Básicamente, el tutorial muestra desde la arquitectura del sistema operativo hasta una aplicación desarrollada con bases de datos SqlLite. Es básico como dije anteriormente pero sirve para dar el primer paso a la construcción de las propias aplicaciones. Está compuesto de 9 partes. Les recomiendo que las vean todas.

Todos los créditos para EDU, de http://www.edu4java.net/ yo solo hice la compilación.



















miércoles, 14 de enero de 2009

Arquitectura TI: Que es y que hace un arquitecto de TI?

Introducción:
Previamente publiqué un post sobre la Arquitectura MVC pero... qué es realmente la arquitectura de software? cuál es el rol del arquitecto? Hay herramientas que faciliten la labor del arquitecto?

Definición:
La arquitectura de software, llamada también la arquitectura lógica, es el diseño de mas alto nivel de la estructura de un sistema, aunque hay varias definiciones y no hay prácticamente ninguna que sea totalmente aceptada, aunque la más oficial es la definición oficial de Arquitectura del Software es la IEEE Std 1471-2000 que dice: “La Arquitectura del Software es la organización fundamental de un sistema formada por sus componentes, las relaciones entre ellos y el contexto en el que se implantarán, y los principios que orientan su diseño y evolución”.

Otra definición es la de Hohmann, 2003: “Arquitectura de software es la suma de los módulos complejos, procesos y los datos del sistema, su estructura y exactas relaciones entre sí, cómo puede ser y se espera que sea, sus extensiones y qué tecnologías participan, deducir las capacidades exactas y flexibilidad del sistema desde el cual se puede formar un plan para la implementación o modificación del sistema.”

El Rol del arquitecto de software:
El arquitecto es el encargado de definir:
QUE?
La union de requerimientos del cliente, el conocimiento de su entorno, de sus necesidades, de sus espectativas de crecimiento, dan como resultado un producto intangible que será la solución que se va a proveer considerando un modelamiento del negocio conformado por el equipo de analistas que apoyan cada proyecto.
Acá se hace un paralelo con un drector de orquesta, que debe hacer que cada uno de los músicos interpreten la música de acuerdo a la partitura.


COMO?

Una vez que está definido el qué se va a hacer, definidos ya el modelo de negocios, con los analistas que conforman el negocio, se confecciona la documentación técnica del proyecto que contiene análisis, modelos y diseño de la solución a los requerimientos del cliente. El arquitecto cumple su parte como organizador, facilitador de definiciones y como validador del modelamiento.

CON QUE?
Nuevamente el arquitecto entra en su rol de "director de orquesta" esta vez con otro equipo de trabajo, conformado por un jefe de proyectos (que tiene una metodología) y un experto técnico con un framework de trabajo bien definido y consolidado para definir cada una de las partes de la solución, esta vez se toma mas en detalle a la solución, se toman decisiones que deben estar de acuerdo a la tecnología que vaya ser utilizada por el equipo de desarrollo y se define presupuesto y cronograma del proyecto (a esta altura ya debiera estar bien definido el equipo de trabajo del proyecto). Lo anterior en teoría, porque según mi experiencia, el arquitecto no se entromete en temas de presupuesto ni de cronograma del proyecto dado que el líder técnico (jefe de proyectos) debe conformar su equipo y planificar las actividades de su equipo, aunque esto puede variar dependiendo de las empresas cuando el arquitecto también es el jefe de proyectos.

Productos resultantes de la ingeniría de software:
No hay un consenso en cuanto al lenguaje y la forma en que el arquitecto entregue los elementos de ayuda a la toma de decisiones y que permitan la comunicación en un lenguaje común con todos los actores del proyecto. Acá, dependerá de la tendencia de la arquitectura escogida.
Uno de los modelos más usados y conocidos es el “4+1” de Philippe Kruchten, vinculado al Rational Unified Process (RUP), que define cuatro vistas diferentes:

  • Vista lógica: describe el modelo de objetos.
  • Vista de proceso: muestra la concurrencia y sincronía de los procesos.
  • Vista física: muestra la ubicación del software en el hardware.
  • Vista de desarrollo: describe la organización del entorno de desarrollo.
  • Existe una quinta vista que consiste en una selección de casos de uso o de escenarios que los arquitectos pueden elaborar a partir de las cuatro vistas anteriores.
Ejemplos de Arquitectura de Software:
Para ilustrar y clarificar un poco lo anteior, se muestran dos diagramas de arquitectura en un entorno J2EE. Ambos diagramas están disponibles en Designing Enterprise Applications with the J2EE Platform, Second Edition de SUN.

El primer diagrama consiste en una vista lógica que muestra los componentes y servicios típicos de un entorno J2EE.
Por otro lado, en el modelo MVC tenemos una vista de procesos que se relacionan entre las capas Modelo, Vista y Controlador en un entorno J2EE.


Hasta acá lo mas relevante con respecto a la arquitectura. En otros post posteriores seguramente mencionaré temas asociados como SOA (Arquitectura orientada a servicios), Usabilidad y Patrones y antipatrones de diseño.

Recursos: The architecture journalist; revista del MSDN (Microsoft Development Network) especialmente dedicada a temas de arquitectura. Hay varios números en español aunque atrasados con respecto a las publicaciones en inglés.

martes, 13 de enero de 2009

Algo sobre Frameworks y Arquitectura MVC y RIA (Rich Internet Applications)

Introducción:
Es difícil empezar a escribir. Primero, por que es mi primer post en este blog y me imagino que debo soltar un poco la mano antes de tomar confianza y soltura.
En realidad no se por qué este primer post está dedicado a la arquitectura MVC. Será que es de las cosas que me interesa aprender? por que les digo desde ya: La palabra experto siempre me ha parecido muy subjetiva y yo no me considero experto en ninguna rama de la informática, mas bien la experiencia, los estudios y la lectura, me han llevado a saber de todo un poco y también por eso un poco el título del blog. Entre tanta cosa, sigla, iniciales, tecnologías, empresas, marcas... díganme, quién no se ha sentido un poco desorientado en este mundo?

Frameworks
Según wiki: Un framework, en el desarrollo de software, es una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto.
Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.


La verdad es que leo esa definición y me parece muy técnica aunque si explicativa. En el fondo, lo que quiere decir es que un framework es un programa que permite hacer programas. Complementando lo anterior, es necesario mencionar que hsata ahora estoy hablando solamente de una herramienta, independiente de la tecnología.
hoy en día muchas empresas han desarrollado o adaptado (dependiendo de sus propias necesidades) estos programas (generalmente basados en productos opensource) permitiendo disminuir los tiempos de desarrollo. Un sencillo ejemplo podría ser que para generar una lista de elementos desde una base de datos (por ejemplo una lista de ciudades), cosa que trabajando en forma bruta significaría crear una consulta que extraiga los elementos desde la base de datos y crear el código para que la lista se genere dinámicamente, con un framework esta misma acción podría simplificarse a una línea de código en que se pasen como parámetros los elementos necesarios para que la lista sea desplegada (parámetros como la tabla que desea ser consultada, cual será la opcion por defecto, si es una lista en que se pueden seleccionar varios elementos o solo uno, el método de ordenamiento, etc.
Ejemplo: en el framework Akelos (fue el primer ejemplo que encontré), el código sería:

$form_options_helper->select ($object_name,$column_name,$choices, [ $options ],[ $html_options ])

No me voy a extender mas sobre esto. Mas bien espero haber clarificado un poco de que se trata un framework. Su utilidad.
En la red hay muchos y para todos los gustos. Por ejemplo:
En la página http://www.phpframeworks.com/
hay una tabla comparativa de frameworks para PHP que indica cuáles son sus principales funcionalidades o soportes.
También los hay en Java si es que alguien tiene preferecias por este lenguaje.
En este sentido intentaré ser imparcial y mis recomendaciones serían que al momento de elegir un Framework, se fijen en:
- Tipo de aplicacion a desarrollar
- Facilidad en el desarrollo
- Soporte del framework (que tan amplia es la comunidad del proyecto)
- Si se vislumbra continuidad en el desarrollo del framework
- Soporte de tecnologías (características técnicas)
Además de:
- No crean todo lo que dicen los blogs y/o artículos
- Pruebenlo ustedes mismos
- Ver si se ajusta a los intereses corporativos
- Intenta realizar un prototipo en los que elijas y si sale muy complicado, deshéchalo.
- Intenta documentar todo. Desde por qué no te gustó un framework hasta por qué elejiste uno mas antiguo.

Ahora, para hacer el enganche con el siguiente tema, debo decir que los Frameworks permiten realizar el desarrollo de aplicaciones de acuerdo a cierta arquitectura.
Por ejemplo: Una de las arquitecturas más extendidas y por tanto la mayoría de los frameworks la soportan es la aquitectura MVC (Modelo / Vista / Controlador)
La idea de esta arquitectura es separar la aplicacion en "datos", "interfaz de usuario" y "lógica de control".
Modelo: Es la representación de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos.
Vista: Este presenta el modelo en un formato adecuado para visualizar y operar (interactuar), típicamente conocido como "interfaz de usuario".
Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.
RIA
Y para terminar con este artículo, no puedo dejar de mencionar el concepto RIA.
Según Wikipedia: RIA, acrónimo de Rich Internet Applications (Aplicaciones Ricas de Internet) son un nuevo tipo de aplicaciones con más ventajas que las tradicionales aplicaciones Web. Esta surge como una combinación de las ventajas que ofrecen las aplicaciones Web y las aplicaciones tradicionales.

Normalmente en las aplicaciones Web, hay una recarga contínua de páginas cada vez que el usuario pulsa sobre un enlace. De esta forma se produce un tráfico muy alto entre el cliente y el servidor, llegado muchas veces, a recargar la misma página con un mínimo cambio.

Otra de las desventajas de las tradicionales aplicaciones Web es la poca capacidad multimedia que posee. Para ver un vídeo es necesario usar un programa externo para su reproducción.

En los entornos RIA, en cambio, no se producen recargas de página, ya que desde el principio se carga toda la aplicación, y sólo se produce comunicación con el servidor cuando se necesitan datos externos como datos de una Base de Datos o de otros ficheros externos.

Las capacidades multimedia son totales gracias a que estos entornos tienen reproductores internos y no hace falta ningún reproductor del Sistema Operativo del usuario.

Hay muchas herramientas para la creación de entornos RIA. Entre estas se puede mencionar las plataformas Adobe Flash, Adobe Flex y Adobe AIR de Adobe, AJAX, OpenLaszlo, Silverlight de Microsoft, JavaFX Script de Sun Microsystems y Bindows de MB Technologies.

Y para terminar, teniendo la tecnología RIA, en una arquitectura MVC y con un framework que soporte ambas, creo que las aplicaciones serán cada día mejores. En una artículo leí que para el 2010, el 60% de las aplicaciones serán construídas utilizando este esquema. Queda en nuestras manos informáticas el hacer que esta cifra aumente. Y cómo? aprovechando la tecnología existente, implementando la amplia gama de posibilidades que ofrece la WEB 2.0, aprendiendo a utilizarlas y potenciandolas. Espero con este artículo haber abierto un poco las mentes y haber alimentado el apetito de más de alguien.
Dejo acá algunos Frameworks que están hechos para desarrollar "RIA's"
Spring Richclients
Ariaware ARP
Scope
Cairngorm

Eso por ahora. Que lo disfruten

Powered By Blogger

Un informático desorientado © 2008. Template by Dicas Blogger.

TOPO