Entradas

Mostrando las entradas con la etiqueta Arquitectura

Diseñando con Patrones, una vista al COMPOSITE

Imagen
Para este artículo les traigo un análisis sobre patrones de diseño, la idea es repasar un poquito el tema de forma genérica y esta actividad que sea disparador para aplicar un patrón particular, "El Composite". Introducción Si vamos a hablar de patrones de diseño, es necesario definir: ¿Qué es diseño? (dentro del proceso de desarrollo de software) ¿Qué es un patrón? Finalmente ¿Qué es un patrón de diseño? Veamos, el diseño es una actividad, definir el "como" frente al "qué", hacerlo correcto frente a hacer lo correcto… ¿Somos consientes de estos puntos descriptos cuando diseñamos? Sin duda el diseño es una actividad compleja, sabemos que los requerimientos no funcionales son conflictivos. Cuales serian nuestras propiedades no funcionales a realizar: Reutilización Facilidad de modificación Facilidad de comprensión Robustez Eficiencia …. ¿Suenan lindas no? Lo concreto es que las técnicas para conseguir la calidad están menos desarrolladas que las usadas para...

Ingeniería para una Familia de Producto

Imagen
Las organizaciones actuales en este mercado del desarrollo de software tienen que privilegiar algunos factores claves para el desarrollo de soluciones de software donde el escenario arquitectónico juega un rol preponderante y crítico, desde mi punto de vista: Analizar los cambios severos del mercado actual Definir una estrategia con respecto al avance tecnológico Privilegiar las necesidades del negocio Esta realidad nos lleva a deducir que nuestra solución tiene que tener un balance en costo, calidad y debe salir al mercado en un tiempo aceptable. El interrogante es, ¿Como preparamos este escenario de desarrollo de soluciones tecnológicas? La propuesta es introducirnos en el concepto de Familia de Productos, veamos este gráfico: Figura 1 - Managing the complexity of variability in software product families, Deelstra –Sinnema El escenario propuesto supone una categorización para ubicarnos en qué tipo de sofisticación queremos lograr en el desarrollo de la solución, pero para lograr esto...

Paralelizando….

Imagen
Para este artículo les traigo un laboratorio muy simple sobre como acercar la escritura de código que paralelice procesamiento. Sabemos que hace un tiempo atrás se pensaba en megahercios pero actualmente podemos decir que pensamos en cores… Si esta hipótesis es correcta veamos cómo podemos hacer un mejor uso del multicore. Para el laboratorio, voy a plantear un simple algoritmo secuencial y la misma resolución por medio de operaciones en paralelo. Como herramienta de desarrollo, voy a utilizar Visual Studio 2008, lenguaje C#, Plinq, una aplicación de consola, un biblioteca que aloje mi código en paralelo para luego validar su utilización desde otras presentaciones. Para realizar el análisis voy a emplear Vtune de Intel Corporation con Thread Profiler 3.1. El eje de esta práctica tiene que ver con la aplicación de Plinq (Microsoft Parallel Extensions), en un esquema de componentes como el siguiente planteado: Veamos el código llamador de la consola: static void Main( stri...

Métricas de software, bienvenidos a los grises!!

Imagen
Para este artículo me propuse analizar un segmento muy pequeño de las métricas que podemos obtener en el escenario de la ingeniería de software. Para este objetivo tenemos que tener claro que la medición es un elemento clave en cualquier proceso de ingeniería, las medidas se emplean para comprender mejor los atributos de los modelos que se elaboran y con esto se puede evaluar la calidad de los productos. Hay una discusión de varios autores sobre las medidas directas de varias ramas de la ingeniería en contraste con las medidas indirectas de la ingeniería de Software, para este punto voy a citar a Fenton: "La medición es el proceso mediante el cual se asignan números o símbolos a los atributos de entidades reales para definirlas de acuerdo con reglas claramente establecidas… En las ciencias físicas, la medicina y, más recientemente, las ciencias sociales, ahora podemos medir atributos que se consideraban imposibles de medir…Por supuesto, estas mediciones no tienen el mismo refinam...

¿Arquitectos de Software? ¿Son necesarios?

Imagen
En este artículo voy a analizar un material que me gustó y me hizo reflexionar sobre el concepto de arquitecto, cualidades y habilidades necesarias sobre el rol. Para comenzar voy a citar el material sobre el cual quiero reflexionar y de paso les recomiendo la lectura en su totalidad: http://msdn.microsoft.com/en-us/arcjournal/cc505974.aspx Autor: Joseph Hofstader "En proyectos de software, el título Arquitecto es a menudo definido de forma ambigua y el valor que brindan los arquitectos no se mide con facilidad" Este frase resume la actualidad sufrida en los actuales proyectos de ingenieria de software, incluso se torna muy complejo para las organizaciones encontrar el valor agregado por el concepto de arquitecto. La idea es encontrar como objetivo general el valor que los buenos arquitectos aportan a los procesos de desarrollo de software. ¿Les parece un buen objetivo? Algo de lo que debemos partir para esta discusión es una definición de un buen arquitecto, para este objeti...