04 Principio de Segregación de Interfaces – SOLID

Saludos.

Después  de mucho tiempo de ausencia en el Blog, hoy continuamos con los principios SOLID. En esta oportunidad quiere recordarle la importancia del Principio de Segregación de Interfaces. Fué introducido por el propio Robert Martin, veamos su definición:

Clients should not be forced to depend upon interfaces that they do not use.

Clientes no deben ser forzados a depender de interfaces que no usen.

Para una mejor comprensión se muestra a continuación un diagrama en el cual se tiene el problema del 4to principio SOLID.

11-07-2013 23-41-10
Problema que rompe el 4to principio SOLID

 

Problema: Como podemos ver en el diagrama de clases. Se tiene una interfaz IProceso que define las firmas: Iniciar, Suspender, Reiniciar, Finalizar para todo proceso. Así mismo tenemos una clase ProcesoManual y ProcesoAutomatizado que implementa la interfaz IProceso. Aquí vemos claramente como se rompe el 4to principio SOLID, ya que no debería existir implementacion de los métodos Reiniciar y Finalizar de la clase ProcesoAutomatizado ya que todo proceso automatizado no se reinicia ni finaliza su actividad. Entonces rompemos la regla: Clientes no deben ser forzados a depender de interfaces que no usen.

Para esto se debería aplicar la siguiente solución.

12-07-2013 0-05-48
Solución Aplicando el 4to Principio SOLID

 

La clase ProcesoAutomatizado solo implementa la interfaz IProceso, ya que mencionamos anteriormente no debería conocer ni implementar las firmas de la interfaz IManual, siendo que esta interfaz solo va ser implementada por ProcesoManual.

Con esto vemos que las clases cliente no implementa interfaz o firmas de la interfaz que no sean necesarias para su implemetación.

Que sea de ayuda para ti.

Saludos.

 

Calculator Engine – Sample TDD

Buenas amigos.

Hacia ya bastante tiempo que no publicaba, hoy estamos de regreso.

Recordando…! Hace un par de meses atrás había comenzado la lectura del libro Diseño Ägil con TDD de Carlos Blé Jurado. He escrito mi primera aplicación, comenzando desde el análisis, diseño e implementación y las formas de iteraccion. Incialmente se comenzo por escuchar al cliente, identificar los requerimientos y requisitos, luego se formuló los criterios de aceptación ATDD (Test de Aceptación), que no son mas que frases cortas y precisas de lo que el cliente quiere.

Los test de aceptación son el punto de partida para todo desarrollo por TDD. A partir de ahí, se presentan los test de desarrollo que no son mas que los hijos* de los ATDD, y estos pueden convertirse en Test Unitarios o Test de Integración.

Muy divertido. Los invito a leer el libro y comenzar el desarrollo de los ejemplos! La implementación y los ejemplos estan en C# y Python.

Aquí puedes descargar la Calculadora desarrollada con TDD. 

A practicar se ha dicho!

Saludos!

 

PAPS – Plan de Administración de Proyecto de Software

Saludos.

Para mis amigos de la Universidad les comparto el siguiente documento desarrollado durante los cursos de diplomado.

Caso de Estudio: FarmaCorp. El presente documento constituye un Plan de Administración de Proyecto de Software para la Gestión y Administración de las diferentes actividades realizadas por la cadena de Farmacias FarmaCorp. El documento constituye una Guía para elaborar un PAPS – Plan de Administración de Proyecto de Software.

PAPS – Plan de Administración de Proyecto de Software.

 

Que les sea de utilidad.

 

Saludos.

Informe Sistema de Gestión de Compra y Venta

Saludos mis amigos.

En esta oportunidad y aprovechando las buenas noticias sobre nuestra Facultad de Ciencias de la Computación les comparto un pequeño informe de proyecto presentado en la materia de Arquitectura de Software en la Universidad Autónoma Gabriel René Moreno – Gestión 1 – 2011.

Docente: Ing. Josué Obed Veizaga Gonzáles

Caso de Estudio: Desarrollar una Aplicación para la Compra y Venta de Productos Genéricos.

El trabajo consistía en desarrollar la misma Aplicación pero aplicando la Arquitectura 3 Capas (Datos, Negocio y Presentación) y MVC (Modelo Vista Controlador), además que se pueda hacer uso de 2 Sistemas Gestores de Bases de Datos.

En ese momento estaba terminando de desarrollar un  proyecto en .NET es así que me decidí en primer instancia hacer uso de esta plataforma con C# sobre Base de Datos en SQL Server 2005 y MySQL.

Al final de cada unos de los documentos se adjunta los enlaces de descarga para cada una de las Plataformas (.NET y JAVA).

Informe de un Sistema de Compra y Venta de Productos  Arquitectura 3 Capas. 

 

Puedes descargar el proyecto pulsando en el siguiente enlace de descarga.

Descargar Proyecto Sistema de Compra y Venta Arquitectura 3 Capas en .NET

Informe de un Sistema de Compra y Venta de Productos Arquitectura 3 Capas con Hibernate. 

 

Puedes descargar el proyecto pulsando en el siguiente enlace de descarga.

Descargar Proyecto Sistema de Compra y Venta Arquitectura 3 Capas con Hibernate en JAVA

Informe de un Sistema de Compra y Venta de Productos Arquitectura MVC con Hibernate. 

 

Puedes descargar el proyecto pulsando en el siguiente enlace de descarga.

Descargar Proyecto Sistema de Compra y Venta Arquitectura MVC con Hibernate en JAVA

 

Espero les sea de mucha utilidad.

 

Hasta pronto.

 

 

Portal Ingeniería Informática – Proyecto Tecnología Web

Saludos amigos.

Con el fin de aportar con un granito de arena a los compañeros de Tecnología Web  les comparto el proyecto realizado en la materia durante el semestre 2/2010. El proyecto consistía en realizar el portal web para la carrera de Ingeniería en Informática, no es un proyecto estrella que digamos, pero me sirvió inicialmente para introducirme en la programación Web haciendo uso del lenguaje de programación PHP, y el cuál más adelante me sirvió como base para trabajar en mi proyecto de taller de grado: Social CRM.

A continuación les presento algunas capturas de pantalla:

Portada Principal

Portal Web Ingeniería Informática - UAGRM
Portada Principal Portal Web Ingeniería Informática - UAGRM

Página Módulo de Docentes

Módulo de Docente - Portal Web Ingeniería Informática - UAGRM
Módulo de Docente - Portal Web Ingeniería Informática - UAGRM

Ver más capturas de pantalla

Detalles del Proyecto

Nombre: Portal Web de la carrera Ingeniería en Informática

Lenguaje de Programación: PHP

Librerias: Smarty (Presentación), AdoDB (Datos)

Equipo de Desarrollo:

  1. Ariel Albarado Balderrama
  2. Miguel Angel Avalos
  3. Luis Alberto Baigorria Rodas.
Link de descarga:

Descargar Portal Web de Ingeniería en Informática

Password: UIBASOFT

Que les sea de mucha utilidad.

Hasta pronto!

BitBucket: Servicio de alojamiento de proyectos basado en Web

Saludos.

Hace unas semanas en el curso de diplomado, el docente mostró la importancia de manejar y administrar los proyectos de Software mediante un Sistema de Control de Versiones. La facilidad para compartir el codigo y controlar las diferentes versiones con el equipo de desarrollo es de mucha importancia durante el proceso de desarrollo de Software. Si bien, para algunos era un termino nuevo, todos comenzaron a aprender y a investigar.

No hace mucho que vengo explorando Google Code, la integración que tiene con muchos Sistemas de Control de Versiones hace de éste un lugar ideal para compartir repositorios. Sin embargo, existen otras alternativas más específicas el cual seria interesante ir conociendo y explorando.

BitBucket, es un servicio de alojamiento basado en web, para los proyectos que utilizan el sistema de control de versiones Mercurial. El servicio está escrito en Python.

GitHub es una forja para alojar proyectos utilizando el sistema de control de versiones Git. Está escrito utilizando el framework Ruby on Rails por GitHub, Inc. (anteriormente conocida como Logical Awesome).

Recientemente estoy probando BitBucket. La gran comunidad de usuarios y su amplia lista de repositorios me ha llevado a registrarme y compartir algunos proyectos académicos desarrollados en la universidad:

Mi lista de repositorios

uisocialcrm:

El proyecto «uisocialcrm» trata de un Sistema de Información Web para gestionar envíos de campañas publicitarias para pequeñas y medianas empresas desde un enfoque de Social CRM (Customer Relationship Management), presentado en la Universidad en la materia de Taller de Grado I. El sistema está desarrollado en PHP con MySQL, con librerias Smarty, jquery, ajax, ADOdb, haciendo uso de API’s para publicar contenidos en Twitter por medio del protocolo abierto OAuth. El proyecto no está finalizado en su totalidad, dejo abierto a la comunidad para futuros cambios. Para ingresar al sistema: Usuario: uialberto Password: 12345

Documentación: http://goo.gl/PqjnL

uiecompras:

El proyecto «uiecompras» trata de un pequeño y sencillo ejemplo de una tienda virtual, fué presentado en la Universidad en la materia de Sistemas Distribuidos. El propósito del proyecto fué aprender RMI en Java y Remoting en .NET, de tal manera que el cliente pueda efectuar compras al crédito por medio de objetos remotos implementados en diferentes tecnologías, la instanciación de los objetos sería en .NET utilizando (ActiveX) y en Java (Applets). El sistema está desarrollado en PHP con MySQL, con librerias Smarty y ADOdb. El IDE utilizado es NetBeans! Se ha adjuntado el script de la base de datos. Todos los usuarios del sistema ingresan con el password: 12345.

uicalculadora:

El proyecto «uiCalculadora» es un Evaluador de Expresiones Aritméticas, permite evaluar expresiones aritméticas básicas en una sola línea, respetando prioridad de operadores. Este trabajo fué presentado en la Universidad para la materia de Estructuras de Datos II. Para la resolución del problema se utilizó un árbol de expresión. Desarrollado en el lenguaje Java bajo la plataforma J2SE – IDE Netbeans 6.8.

Que les sea de utilidad.

Hasta pronto.

 

ICPC World Finals 2011 Reprogramado

Saludos.

Me acaban de informar que debido a los acontecimientos ocurridos en Egipto las pasadas semanas, la fecha y sede oficial para la Final Mundial de Programación ACM-ICPC 2011, ha sido re-programado.

Aquí el mail recibido y la planificacion de los dias:

Dear World Finals participant,

The 2011 ACM-ICPC World Finals sponsored by IBM has been rescheduled:

Peabody Orlando Hotel
Orlando, Florida
May 27-31, 2011

DRAFT Schedule:
May 27 – Welcome
May 28 – Excursion, Opening Dinner
May 29 – Opening Session, Rehearsal Contest
May 30 – World Finals, Awards, Celebration
May 31 – Team Departure
RCD Symposium
June 1 – RCD & Staff Departure

Coming soon: Invitations and hotel reservation information.

Best,

Bill

Así mismo, se ha creado la pagina oficial del evento en facebook, en donde se puede verificar el cambio de sede y fecha del mismo.

ICPC Challenge 2011

ICPC World Finals

Los países clasificados, los equipos y los resultados obtenidos en la Final Latinoamericana pueden verse en la pagina oficial de ACM-ICPC.

South America/South Regional Contest

Que el éxito acompañe a nuestros representantes.

Bolivia clasifica a la final mundial de programación

Después de 5 años de participación en la Competencia Latinoamericana de Programación, siendo la tercera sede más grande después de Brazil y México; en lo relacionado a la cantidad de Universidades participantes y la quinta respecto a la cantidad de equipos inscritos, Bolivia clasifica por primera vez a la Final Mundial de Programación Informática que se realizará del 27 de febrero al 4 de marzo en Egipto, así lo anunció Jorge Terán Pomier, director de la Competencia Internacional de Programación (ACM ICPC), el pasado lunes.

Equipo Finalista

El equipo está conformado por Edwin Marcelo Guzmán Buezo, Nicólas Gumiel Conzelmann y Víctor Hugo Paredes Mora, de la Universidad Católica Boliviana, de La Paz. Este equipo, superó las mejores clasificaciones de Uruguay, Chile, Venezuela, Costa Rica, Republica Dominicana y Jamaica, constituyendosé asi en un hecho histórico.

Aún recuerdo la etapa de clasificación para la Final Latinoamericana en mi universidad, amigos mios participaron en la fase clasificatoria realizado en septiembre de 2010, si bien recuerdo, en ese momento se tenia como sede  la Universidad Nur, los resultados no fueron los esperados, pero estaban ahí intentando dar lo mejor de sí, aún con sus propios medios fueron dignos representates.

Los grupos ganadores de esa fase clasificatoria se pepararian para la Final Latinoamericana a realizarse entre el 22 y 23 de octubre de 2010 en la ciudad de Tarija, teniendo como sede a la Universidad Autónoma Juan Misael Saracho. Los boletines de nuestro C.E.I.I-UAGRM nunca llegaron para informarnos quienes nos representarian en esa final, tan solo se escuchó la ausencia de apoyo económico por parte de nuestras autoridades. Es una tristeza, pero es la realidad. La falta de apoyo, motivación y capacitación, para competiciones como estas, son cada vez más notables, espero esto cambie para este 2011, utilizaremos todos los medios para hacernos escuchar.

Esta vez nuestra casa de estudio no fué la afortunada para representar a Bolivia en la final mundial de programación, pero estoy plenamente convencido que esto servirá como un medio de motivación para un futuro, para reafirmar nuestra capacidad, inteligencia, razonamiento y el nivel en el que nos encontramos. Hoy son ellos quienes nos representaran y como buenos ganadores, no me queda más que felicitarlos y desearles mucho éxito.

Estaré informando sobre los sucesos.

Hasta pronto.