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
https://sites.google.com/site/lawebdelsoftware/ingenieria-de-software-1/unidad-vi
https://tognuhome.files.wordpress.com/2020/02/cap17.pdf
http://www.softwcare.com/pdf/publicaciones/calidade2003.pdf
http://idsuba.blogspot.com/2014/06/sistemas-criticos.html
http://software-unesr-2013.blogspot.com/p/definicion-el-software-esun-de.html#:~:text=El%20t%C3%A9rmino%20%E2%80%9Cevoluci%C3%B3n%E2%80%9D%20del%20software,din%C3%A1mica%20de%20crecimiento%20del%20software.&text=Durante%20los%20primeros%20a%C3%B1os%20de,la%20misma%20persona%20u%20organizaci%C3%B3n.