Diferencia de desarrollo

Reutilización de software

Conceptos de reutilización

Es una alternativa de desarrollo

Reutilizar y no crear lo que ya existe

Adaptar lo ya existente

Métodos necesarios

Desarrollo para la reutilización

Desarrollo con reutilización

Elementos que intervienen

Empaquetados de software

Código probado

Requerimientos previos analizados

Diseños previamente definidos

Cronogramas de pruebas

Personal calificado

Orientación a servicio

Estructura de software bien definido

Documentación detallada y actualizada

Niveles de reutilización

De código

De diseño

De especificaciones

Beneficios

Tiempo y costo

La reutilización de software es una excelente manera de ahorrar costos y
esfuerzos de desarrollo. De forma ideal, el tiempo de desarrollo es reducido debido a que los componentes reutilizables relevantes pueden ser aplicables al proyecto dado en un marco de tiempo menor que desarrollar desde cero.

Calidad

Cualquier optimización, refactorización y pruebas hechas en
componentes reutilizables ya han sido completados. Todas las lecciones aprendidas al producir el componente están implícitamente incluidas dentro de esto y son automáticamente llevadas al siguiente proyecto.
Consecuentemente, los proyectos desarrollados son de una mayor calidad

Estandarización

Los componentes dentro de un dominio dado (área de aplicación), requieren cierta clase de estandarización para hacerlos compatibles con otros componentes. Esto puede llevar a hacer estándares de interfaces de componentes, así como de código y documentación. Estas entidades animan a
mejores prácticas de desarrollo.

Categorías

Componentes ya desarrollados

Componentes ya experimentados

Con experiencia Parcial

Componentes nuevos

Ventajas

Reducir el tiempo de desarrollo.

Incrementar la productividad.

Facilitar la compartición de productos del ciclo de vida.

Mayor fiabilidad

Desventajas

Necesidad de invertir antes de obtener resultados.

Dificultad para institucionalizar los procesos.

Reutilización de sistemas de aplicación
.

Diseñar componentes genéricos para que sean reutilizados con facilidad.

El ingeniero de software reutiliza piezas que él sabe que se ajustan al problema.

Ingeniería en Software basada en componentes

Permite reutilizar piezas de código preelaborado que permiten realizar diversas tareas, conllevando a diversos beneficios como las mejoras a la calidad, la reducción del ciclo de desarrollo y el mayor retorno sobre la inversión.
Al comparar la evolución del ambiente de IT con el crecimiento de las metrópolis actuales, podemos entender el origen de muchos problemas que se han presentado históricamente en la construcción de software y vislumbrar las posibles y probables soluciones que nos llevarán hacia la industrialización del software moderno.

Principios de diseño de la Ingeniería de Software
Basada en Componentes

Los componentes son independientes, así que no existe
interferencia entre ellos.

Se oculta la implementación de los componentes.

La comunicación es a través de interfaces bien definidas

§Las plataformas de componentes son compartidas para un
menor costo de desarrollo

ARQUITECTURA BASADA EN COMPONENTES.

Una arquitectura basada en componentes describe una aproximación de ingeniería de software al diseño y desarrollo de un sistema. Esta arquitectura se enfoca en la descomposición del diseño en componentes funcionales o lógicos que expongan interfaces de comunicación bien definidas.

El estilo de arquitectura basado en componentes tiene las siguientes características:

Es un estilo de diseño para aplicaciones compuestas de componentes individuales.

Pone énfasis en la descomposición del sistema en componentes lógicos o funcionales que tienen interfaces bien definidas.

Beneficios

Facilidad de Instalación: Cuando una nueva versión esté disponible, usted podrá reemplazar la versión existente sin impacto en otros componentes o el sistema como un todo.

Costos reducidos: El uso de componentes de terceros permite distribuir el costo del desarrollo y del mantenimiento.

Facilidad de desarrollo: Los componentes implementan un interface bien definida para proveer la funcionalidad definida permitiendo el desarrollo sin impactar otras partes del sistema.

Mitigación de complejidad técnica: Los componentes mitigan la complejidad por medio del uso de contenedores de componentes y sus servicios. Ejemplos de servicios de componentes incluyen activación de componentes, gestión de la vida de los componentes, gestión de colas de mensajes para métodos del componente y transacciones.

Desarrollo de sistemas críticos

En un sistema de cómputo, el software y el hardware son interdependientes. Sin hard- ware, un sistema de software sería una abstracción, es decir, sería simplemente una representación o idea de cierto conocimiento humano. Mientras que sin el software, el hardware es sólo un conjunto de dispositivos electrónicos inertes

Subtopic

Los sistemas sociotécnicos son tan complejos que es prácticamente imposible entenderlos como un todo. Tales capas constituyen la columna de los sistemas sociotécnicos

La capa de equipo

Está compuesta de dispositivos de hardware, algunos de los cuales pueden ser computadoras.

La capa de sistema operativo

Ésta interactúa con el hardware y ofrece un con- junto de facilidades comunes para capas de software superiores en el sistema

La capa de comunicación y gestión de datos

Extiende las facilidades del sistema operativo y ofrece una interfaz que permite la interacción con funcionalidad más extensa, como acceso a sistemas remotos, a una base de datos de un sistema, etc. En ocasiones, esto se llama middleware, pues se halla entre la aplicación y el sistema operativo.

La capa de aplicaciones

Entrega la funcionalidad específica de la aplicación que se requiere. En esta capa puede haber varios programas de aplicación diferentes.

Evolución de Software

La evolución del software es importante porque las organizaciones invierten grandes cantidades de dinero en él y en la actualidad son completamente dependientes de dichos sistemas. Sus sistemas se consideran activos empresariales críticos, por lo que tienen que invertir en el cambio del sistema para mantener el valor de estos activos. En consecuen- cia, las compañías más grandes gastan más en conservar los sistemas existentes que en el desarrollo de sistemas nuevos

Procesos de evolución

Los procesos de evolución del software varían dependiendo del tipo de software que se mantiene. En algunas organizaciones, la evolución es un proceso informal, donde las solicitudes de cambios provienen sobre todo de conversaciones entre los usuarios del sistema y los desarrolladores. En otras compañías, se trata de un proceso formalizado con documentación estructurada generada en cada etapa del proceso.
Los procesos de identificación de cambios y evolución del sistema son cíclicos y continúan a lo largo de la vida de un sistema.
Las propuestas de cambio deben vincularse con los componentes del sistema que se van a modificar para implementar dichas propuestas. Esto permite que el costo y el impacto del cambio logren valorarse.

Mantenimiento de software

El mantenimiento del software es el proceso general de cambiar un sistema después de que éste se entregó. El término usualmente se aplica a software personalizado, en el que gru- pos de desarrollo separados intervienen antes y después de la entrega. Los cambios rea- lizados al software van desde los simples para corregir errores de codificación, los más extensos para corregir errores de diseño, hasta mejorías significativas para corregir errores de especificación o incorporar nuevos requerimientos. Los cambios se implementan modi- ficando los componentes del sistema existentes y agregándole nuevos componentes donde sea necesario

Existen tres tipos de mantenimiento de software:

Reparaciones de fallas: Los errores de codificación por lo general son relativamente baratos de corregir; los errores de diseño son más costosos, ya que quizás impliquen la reescritura de muchos componentes del programa. Los errores de requerimientos son los más costosos de reparar debido a que podría ser necesario un extenso rediseño del sistema.

Adaptación ambiental: Este tipo de mantenimiento se requiere cuando algún aspecto del entorno del sistema, como el hardware, la plataforma operativa del sistema u otro soporte, cambia el software. El sistema de aplicación tiene que modificarse para lidiar con dichos cambios ambientales.

Adición de funcionalidad: Este tipo de mantenimiento es necesario cuando varían los requerimientos del sistema, en respuesta a un cambio organizacional o empresarial. La escala de los cambios requeridos en el software suele ser mucho mayor que en los otros tipos de mantenimiento.

Características

El Software se desarrolla o se construye.

El Software no se desgasta.

El Software se puede actualizar a medida que existan nuevas versiones.

El software es inmune a los males ambientales que desgasten el hardware.

Importancia del software

La importancia del software radica también en que permite una comunicación entre el usuario y la máquina, e incluso una interacción entre ambos. Un ejemplo muy sencillo seria, al pulsar un botón del teclado, se activa automáticamente una serie de órdenes, que permiten identificar que botón se ha pulsado, traducirlo a lenguaje de máquina, mostrarlo en pantalla para el usuario y almacenarlo. Así, el software que está instalado en el ordenador se ha ocupado de todo eso ante un simple gesto del usuario. Esta es precisamente otra de sus grandes funciones, facilitar las tareas a los usuarios.

Bibliografía