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

Lineas de Producto Software

Hasta este momento había comentado los Modelos de Software Factory ( I , II , III ) en una serie de artículos que aún esta pendiente de cerrarse, en ellos nos centramos en como presentar el modelo al cliente y como gestionar la producción interna así como los éxitos y beneficios de cada uno.

En este artículo vamos a centrarnos en como organizar nuestra producción desde el punto de vista Metodológico y Técnico con dos claros objetivos:

  • Ahorro de costes.
  • Mejora del Time to Market.
  • Alta calidad del producto.
Evidentemente el que encuentre la manera de conseguir este trinomio y mantenerlo en el tiempo ha conseguido encontrar el Santo Grial del Software. No va a ser tan fácil de conseguir como muchos autores promulgan, pero sin duda las Líneas de Productos Software es el camino.

En general los dos sistemas de reutilización más usados, son el Individual que se basa en el Copy & Paste del programador y el Oportunista que ocurre cuando un componente se parece a otro que hicimos en el pasado y lo encajamos con calzador.

Siempre lo que debemos buscar es una reutilización gestionada, basada en una planificación y en la que pensemos desde el principio de los desarrollos.

Las Líneas de Producto Software (LPS) o Software Product Lines (SPL), para el que prefiera documentarse en inglés, proponen un sistema de producción basado en la reutilización de componentes en un determinado dominio. Si nos fijamos en otra industria como puede ser la del automóvil, podemos ver como una misma cadena puede producir hasta automóviles con 1000 diferencias entre si, aplicando este sistema podemos tener un linea de producción capaz de generar multitud de variantes en una tipologia de SW.


Evidentemente montar este sistema no es cosa de un día, ya que tenemos que tener una metodología de desarrollo que nos permita generar activos sw o piezas de la configuración, almacenarlas en un repositorio, para a posteriori poder ensamblarlas para componer otro producto de diferentes requerimientos.

Naturalmente otra necesidad es saber construir una Arquitectura a medida de este paradigma de producción, ya que no tiene sentido tener un repositorio de activos sw, si el coste de ensamblaje de los mismos es más alto que el de construcción..

Queda mucho trabajo por hacer.. y mucho por leer, por eso empecemos cuanto antes..

Bibliografía

http://www.softwareproductlines.com/
http://bradapp.blogspot.com/2008/03/software-product-line-architecture-and.html
http://www.ieee.org.ar/downloads/2006-montilva-productos.pdf
http://www.sei.cmu.edu/productlines/spl_factory.html
http://worldofreuse.blogspot.com/

Arquitectura: Marca de Software Factory


Voy a empezar una serie de artículos que tienen que ver con las Arquitecturas, estando más cerca de los conceptos de metodología de desarrollo, arquitecturas empresariales y lineas de productos software, que cerca de la tecnología de implementación de las mismas. Evidentemente al hablar de desarrollo de arquitecturas todo el mundo vuelve la cabeza para mirar Java y .net principalmente.

Hace unos días me comentaba un amigo que se encontraba trabajando en la nueva versión de la arquitectura y que iban a pasar a la versión 4.2, en ese momento le pregunté ¿y porque no la 5?, a lo que me respondió con una serie de argumentos técnicos (todos muy acertados), que justificaban claramente el porque solo un crecimiento en el digito de menos peso.

Muy probablemente en su empresa siguen criterios cercanos a los de Apache http://apr.apache.org/versioning.html , que desde luego me parece un gran acierto y un planteamiento más que respetable.

En resumen lo que dice Apache respecto a su versionado, siendo esto una política muy extendida. Se basa en tres niveles separados por puntos, MAJOR.MINOR.PATCH, aplicando a cada uno criterios diferentes:



* PATCH VERSION: Solo se realizan correcciones, que no cambian el comportamiento de la aplicación, no cambian los parámetros y llamadas. Por tanto al instalar la versión la aplicación no cambia.

* MINOR VERSION: Introduce nuevas funciones, o cambia y modifica el comportamiento de las existentes pero no rompe la compatibilidad con otras Minor Versions.

* MAJOR VERSION: Cualquier tipo de cambio son aplicables a Major Version y no tiene porque guardar compatibilidad con minor versions. Normalmente se aplica cuando se introducen importantes grupos de nuevas funcionalidades.

La verdad es que se trata de un criterio de versionado robusto, pero no olvidemos que normalmente una arquitectura debe ser proporcionada a un usuario de la misma, bien interno (linea de productos sw, departamentos de la compañia, etc) o externo cara a la venta de un proyecto o venta de una arquitectura empresarial o sectorial, a un determinado cliente.

Desde el punto de vista anterior y teniendo en cuenta que un equipo de desarrollo de Arquitectura no lo hace para si mismo, para un agente externo aparenta más solvencia otra manera de presentar versiones. Pensemos que a todos nos da más garantías un producto que se encuentra en la versión 2.2, que uno que está en la versión 1.3... Aunque ambos pueden tener el mismo número de mejoras y correcciones, solo que aplican criterios diferentes.

Si algún lector no me cree, solo tiene que hacer la prueba, muestre dos productos diferentes que tengan funcionalidad similares, apuesten a que en la mayoría de los casos el cliente o usuario se decantara por el de la versión más alta.

¿Por qué? Porque piensa que lleva más tiempo en el mercado, porque piensa que se ha invertido mucho esfuerzo en él, porque si ha llegado a 7 versiones es que será bueno, etc.. La mayoría de estas valoraciones aveces serán acertadas y aveces erróneas.. pero en cualquier caso se basan en un criterio de apariencia.

Por tanto desde este punto de vista, es más fácil vender, justificar presupuesto, etc , aplicando un criterios de versionado ágiles. ¿Es un engaño? No, es Marketing Tecnológico.

Evidentemente no se puede caer en el abuso, y de repente encontrarnos en la versión 23 de un producto. Hay que poner todo en la balanza y aplicar tanto criterios técnicos como marketinianos.

Cara a introducir un nuevo enfoque voy a contar una anécdota empresarial:

Hoy en día, todo el mundo, o gran parte de el, conoce a una empresa como Nokia. Por increíble que parezca Nokia en sus orígenes fabricaba botas de goma para pescadores, y el nombre proviene de un río existente en Finlandia el Nokia.

Ruedas nokiaSin embargo el mayor acierto de Nokia en su historia, probablemente no ha sido realizar teléfonos móviles, sino ser pionera en el branding, de este modo su marca siempre aparece en todos sus productos, incluso cuando hacía botas


Supongo, que ya vais viendo a donde quiero llegar..

Si tenemos en cuanta las 100 marcas más conocidas en el mundo encontraremos muchas tecnológicas y bastantes dedicadas a los Sistemas de Información.. La primera es Google (¿quién la conocia hace 10 años?), y entre las diez primeras Mocrosoft, IBM , Apple y Nokia . Nadie duda que la marca les ayuda a vender..

¿Por qué no aprovecharnos de este concepto y que nuestra arquitectura tenga marca?

Sin duda, nos costará poco y ganaremos mucho. Algo que tiene nombre existe y es importante...

¿Que necesitamos?

Un nombre y un logo. (por supuesto nada que pise otras marcas)

¿Como lo usamos?

Poniéndolo en toda la documentación, presentaciones, etc.

En mi antigua y querida empresa nadie se dio por enterado que teníamos una arquitectura hasta que le pusimos nombre y logo. En ese momento todo cambió, parecía que las horas no se gastaban sino que se invertían, que teníamos un producto que vender, que ahorrábamos costes empleándola, etc.. Pero ella era la misma, con sus defectos y virtudes..

Eso si, bautizada.

Javahispano Java Cup

Después de asistir a dos Congresos de JavaHispano y ser asiduo visitante a su web, junto al respeto y admiración que tengo por esta organización, no puedo dejar de publicitar, en medida de mis posibilidades la Java Cup.



La Java Cup es una competición de aplicaciones java, basada en construir un buen algortimo que permita ganar un partido de futbol simulado entre ambos aplicativos.

Si no os ha quedado claro lo mejor es que visiteis la web Oficial.

La verdad, es que quiero aprovechar la ocasión para agradecer todo lo que me aportasteis en su momento en mi modo de pensar respecto a java y sus frameworks y arquitecturas.



GRACIAS

Arquitecturas y SOA


La moda de las arquitecturas esta por todos lados. Todo el mundo quiere una arquitectura, sobre todo en el mundo J2EE.

¿Pero merece la pena invertir constantemente en poner el ultimo framework de moda y tener la arquitectura más friki y moderna al mismo tiempo, del mercado?

La respuesta es SI. Esperad seguid leyendo que no me he vuelto loco. Me explico..

La única forma que las personas que tienen la llave de los presupuestos, nos den dinero, horas, licencias etc.. es que puedan alardear que su empresa tiene la arquitectura más de moda.. delante de clientes o partners.

Esto da dinero para investigar y para planes, sino nada.. es mejor "engañar" (o se dice vender) a los jefes y decirles que hay que hacer esto o lo otro, que ha salido la nueva jdk o lo que sea para conseguir presupeusto de I + D, poruqe sino nos quedamos en la edad de piedra.
Y que más de moda que SOA??? Pues nada.

Todo el mercado rezuma SOA, y la mayor parte ni siquiera lo entiende. Y de BPM ni hablamos, poruqe eso será la moda en primavera - verano de 2008.

Ahora eso si, SOA ha llegado y viene para quedarse. A mi me convence, ahora hay que pensar en SOA, no hacer SOA. SI pienso en SOA, por ejemplo, no debo ver una aplicación web, sino un productor de servicios (Servidor de aplicaciones) y un consumidor (navegadro web)..

Y por favor, que algunos se enteren ya que SOA no es solo es levantar servicios web...