martes, 29 de septiembre de 2009

Reunión del 1 de Octubre

Hola amigos aqui esta la agenda propuesta para el próximo jueves 1 de Octubre!!!

domingo, 27 de septiembre de 2009

Diseño Dirigido por el Dominio

En la Comunidad de Desarrolladores de Software de Aguascalientes profundizaremos en aspectos clave del desarrollo de software, buscando conocimiento aplicable a múltiples lenguajes y tecnologías. Uno de esos aspectos clave es el llamado Diseño Dirigido por el Dominio (DDD) el cual tiene dos premisas:
  1. Qué el diseño de dominios complejos debe basarse en un modelo.
  2. Qué para la mayoría de los proyectos de software el enfoque principal se debe basar en el dominio y la lógica del dominio, en oposición al uso de una tecnología en particular para su implementación. [1]
En la próxima reunión de la comunidad comentaremos más detalles sobre la aplicación de este enfoque para el desarrollo de software.

Puedes ir leyendo este libro para empezar: http://www.infoq.com/minibooks/domain-driven-design-quickly.

Saludos Amigos!!!

Paradigma Orientado a Objetos

Como Desarrolladores de Software requerimos construir software adaptable al cambio, capaz de evolucionar fácilmente a la par de la empresa o proceso a la que da servicio.

El problema principal del software es la complejidad que le es inherente. Esta complejidad esta dada por:
  • Siempre es parte de otros sistemas, por consecuencia hereda su complejidad.
  • Es de naturaleza abstracta.
  • Es el resultado de una actividad intelectual.
Toda esta complejidad la podemos enfrentar con:

  • Descomposición: "Divide y vencerás", dividir un problema en varios subproblemas más sencillos de solucionar.
  • Abstracción: Simplificar la visión que tenemos de un objeto complejo, ignorando las características no relevantes al problema, enfocando nuestros esfuerzos en las características esenciales.
  • Generalización: Clasificando los objetos en grupos de abstracciones relacionadas, podemos distinguir explícitamente las propiedades comunes y distintas de diferentes objetos.

Ante esta problemática resurge el paradigma orientado a objetos como una solución al problema de la complejidad del software.

Los conceptos del paradigma orientado a objetos tienen sus orígenes en un lenguaje creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo, a finales de los 60’s, pero el impacto de estas ideas se sintió a principios de los 80’s, con la llamada “crisis del software” cuando hubo la terrible necesidad de modificar monstruosas cantidades de código, que iban del orden de los miles ó mucho más.

El Paradigma Orientado a Objetos enfrenta el problema del desarrollo de software desde la perspectiva humana de la comprensión de problemas a diferencia de los otros paradigmas que lo enfrentan desde el punto de vista de la computadora. Entonces este paradigma ofrece las herramientas para “modelar problemas”, que permiten usar la comprensión natural de las situaciones que se quieren sistematizar. Este paradigma pone atención en objetos, atributos y comportamientos de los objetos.

Aprovechando concepciones semánticas desarrolladas desde el preescolar esto es:





Existe un concepto que no parecería tan natural pero que es fundamental en el paradigma orientado a objetos, este es el de la abstracción. Esta ha sido una herramienta fundamental de la mente humana para resolver problemas altamente complejos como lo hace el desarrollo de software, que en pocas palabras significa, eliminar todo aquello que no sea significativo para la resolución del problema, por ejemplo en el programa que realiza café, puede no importarnos la marca de la taza donde se sirve o la cantidad de moléculas que la conforman, a lo más lo que nos interesaría sería su capacidad en mililitros. Todo un concepto que puede llegar a ser muy complejo como el del objeto taza, se transforma en un objeto que tiene un solo atributo que es capacidad. El diseño final quedaría representado por la siguiente estructura: