La fábrica de software: maximizando la reutilización del software

By agosto 10, 2016Novedades

Los problemas inherentes al desarrollo de software son abordados por la arquitectura de una fábrica de software, empleando modelos de diseño, plantillas y lenguajes específicos de dominio.

SQDM comparte el artículo sobre fábricas de software escrito por Griffin Carpio y publicado por el portal TechTarget.

El desarrollo del software ha sido siempre una actividad costosa y que consume tiempo. Los requerimientos especializados y la falta de recursos capacitados son sólo dos de las dificultades que muchas empresas encaran hoy en día. La presión para liberar el software de manera oportuna y dentro de los presupuestos ha llevado a los desarrolladores a buscar alternativas que aumenten el valor entregado, a medida que se reducen los tiempos de desarrollo.

Durante muchos años la reutilización eficiente de recursos existentes -ya sea por medio de la programación orientada a objetos, del desarrollo basado en componentes o de una arquitectura basada en plantillas-, ha sido uno de los objetivos clave para la industria de TI. La reutilización del software es vista como un medio para combatir muchos de los problemas de los equipos de desarrollo. Sin embargo, durante muchos años y por diferentes paradigmas de tecnología, este nivel de reutilización ha eludido la industria en su totalidad.

Se relacionan a continuación cuatro problemas crónicos del desarrollo de software -cada uno de los cuales impide la habilidad de un equipo para ganar conocimientos valiosos y para reutilizar a partir de experiencia existente e información de dominios.

Desarrollo monolítico
Se refiere a la creación de software de tal manera que se haga difícil o casi imposible utilizar los artefactos resultantes, fuera de un alcance definido con limitaciones. Diferentes proyectos, diferentes equipos de desarrollo -todos construyendo aplicativos aislados, sin el cuidado suficiente para establecer lo que otros estén haciendo y sin saber qué conocimiento de dominio estén incorporando al aplicativo(s). Esto resulta en aplicativos grandes e inflexibles que son de poco uso para alguien que esté por fuera de la audiencia objetivo.

Granularidad copiosa
El desarrollo de software típico de aplicativos empresariales consiste en un conjunto, increíblemente similar de funcionalidades. Por ejemplo, muchos aplicativos de negocios leen datos de una base de datos, la presentan al usuario y permiten que el usuario modifique la información de cierta manera -permitiendo posteriormente que el usuario aplique el cambio a la base de datos. Incluso si esto es una simplificación exagerada de muchos aplicativos, las actividades básicas se mantienen iguales en diferentes proyectos. Cabe preguntarse ¿por qué los desarrolladores emplean herramientas de alta granularidad como lenguajes estándar de programación como C# o VB.NET para representar patrones o plantillas básicas?

Parte de la razón es la inmadurez de los lenguajes y de las herramientas de modelamiento. Si bien un lenguaje como UML es útil para documentar la arquitectura del software, es inapropiado para permitir que la implementación se derive de tales modelos. UML carece de la extensibilidad necesaria para generar una gran cantidad de código y también carece del alcance requerido para representar todos los aspectos del software, incluyendo las bases de datos y los interfaces de usuario.

Inmadurez de los procesos
–  Controlar la complejidad a costa del cambio -muchos procesos “tradicionales” podrían entrar en esta definición, incluyendo RUP y Cascada
–  Controlar el cambio a costa de la complejidad -la mayoría de las metodologías “ágiles” podrían entrar en esta definición, incluyendo Scrum y XP

Antes de que un proceso sea redefinido para la reutilización del software, debe estar maduro ya que únicamente se pueden automatizar procesos correctamente definidos.

Desarrollos Puntuales
Los proyectos de desarrollo de software en una empresa normalmente están tan enfocados en su propósito más básico y en los tiempos de entrega, que la arquitectura integral queda en un papel secundario, como si fuera algo “académico”. Se le da poca importancia al análisis y evaluación de activos existentes y se asigna muy poco tiempo a asegurar que los nuevos activos que se producen sean reutilizables dentro de otros contextos. Esto resulta en muchos esfuerzos de desarrollo dentro de una misma empresa, que crean cantidades de código y activos valiosos para utilizar dentro del dominio de la compañía.

Rara vez se ejecutan pos-mórtems en los proyectos donde los componentes reutilizables son identificados, documentados y empaquetados de manera que puedan ser reutilizados en otros proyectos.

Estos cuatro problemas y el entendimiento incorrecto por parte de la industria sobre cómo aplicar lineamientos de reutilización dentro del modelo económico actual, muestran un escenario inhóspito con respecto al futuro del desarrollo de software a manera de industria, especialmente si se compara con industrias más maduras, como la manufactura. Afortunadamente, es aquí donde las fábricas de software juegan su papel.

Lea el artículo completo aquí.

Durante más de diez años, SQDM – Software Quality Driven Management- ha provisto a un sinnúmero de empresas con consultoría profesional, especializada en diferentes áreas de TI. Al eliminar el análisis innecesario y la reinvención de la rueda, las fábricas de software de SQDM se enfocan en lo esencial: responder los requerimientos de cada proyecto a tiempo, bajo estándares comprobados de calidad.

Contacte con SQDM y conozca los testimonios y beneficios que una fábrica profesional de software puede ofrecerle a su empresa.