El desarrollo de software basado en componentes se centra en ensamblar y escribir código para que diferentes componentes funcionen juntos. Este enfoque ofrece varias ventajas significativas.
Sistemas de negocio críticos.- Son aquellos en los que un fallo puede ocasionar grandes pérdidas económicas
Sistemas de misión críticos.- Son aquellos en los que un fallo puede ocasionar lagunas en la actividad dirigida por objetivos (Ej. Sistema de control aviones).
Sistemas de seguridad críticos.- Son aquellos en los que un fallo puede ocasionar daños para la vida humana o un gran impacto para el medio ambiente. (Ej. El sistema de control de una planta nuclear).
Los sistemas críticos deben tener las siguientes propiedades:
Integridad de que los datos no resulten dañados.
Protección- El sistema es capaz de resistir ataques premeditados o accidentales, la protección debe cumplir.
Seguridad- Evite consecuencias catastróficas sobre su entorno.
Precisión- La información que se proporciona se hace cuando es requerida.
Corrección- La información sea proporcionada al cliente con el nivel de detalle preciso.
Fiabilidad- Durante un determinado periodo de tiempo, el sistema funcione correctamente tal y como el usuario espera, debe poseer estas dos características.
Disponibilidad- El sistema esté activo y en funcionamiento y que sea capaz de proporcionar servicios útiles en todo momento.
Confiabilidad.- Es una de las características más importantes que debe poseer este tipo de sistemas, ya que sin ello puede producirse una pérdida de confianza por parte del cliente, los costes económicos y de información de las pérdidas pueden ser enormes. Para lograr una confiabilidad perfecta se deben cumplir estas dimensiones.
Son aquellos sistemas en los que un fallo puede ocasionar consecuencias graves en el entorno en el que está trabajando, tanto humanas como materiales (desfibriladores cardíacos, sistemas de control de aviónica, sistemas de control de las plantas de energía nuclear, sistemas antifrenado de los automóviles, etc).
REUTILIZACIÓN DEL SOFTWARE
Factores
El dominio de aplicación
La criticidad del software y sus requerimientos no funcionales
Los antecedentes, habilidades y la experiencia del equipo de desarrollo
Calendario de desarrollo para el software
Beneficios
Desarrollo acelerado.- Puede acelerar la producción del sistema, ya que se reduce el tiempo de desarrollo y validación
Cumplimientos de estándares.- Uno de los estándares es la interfaz de usuario la cual permite que en la implementacion de componentes se reutilice la cual esto permite una confiabilidad al usuario en cometer menos errores ya que estaría familiarizado
Uso efectivo de especialistas.- Los especialistas de aplicación desarrollen el software de reulización que encapsule su conocimiento.
Reducción de riesgo de proceso.- Reduce el margen de error en la estimación de costot del proyecto, esto es cierto cuando se reutilizan componentes grandes como los subsistemas.
Confiabilidad creciente.- El software de reutilización debe ser más confiable que el software nuevo ya que sus fallas de diseño e implemantación debieron ser descubiertas y corregirse.
Tipos
Reutilización de objetos y funciones.- Las clases y funciones en dichas librerías se reutilizan al vincularse con un un código de aplicación de desarrollo reciente.
Reulización de componentes.- Los componentes de una aplicación puede reulizarse desde el taño de susbsistema hasta los objetos individuales.
Reutilización del sistema de aplicación.- Todo sistema puede reutilizarse sin relizar cambios al incorporarlo en otro sistema o la configuración de la palicación.
Elementos
*Especificaciones de requerimientos previamente concebidas
*Diseños previamente definidos (Estructuras de datos, algoritmos, etc.)
* Código probado y depurado con anterioridad
*Planes y casos de prueba previamente utilizados
*Personal cualificado (aprovechamiento de la experiencia de los ingenieros de un proyecto a otro)
Es el proceso de creación de sistemas de software a partir de un software existente, en lugar de tener que rediseñar desde el principio.
EVOLUCIÓN DEL SOFTWARE
2005 SOFTWARE SOCIAL
Software en red: permite la comunicación en red, y el trabajo colaborativo, en resumen engloba a un conjunto de herramientas de comunicación que facilitan la interacción y colaboración por medio de convenciones sociales.
2000 E-LEARNING
Se rompen los esquemas con el aprendizaje electrónico y el uso de las tecnologías multimedia y en red, para desarrollar y mejorar nuevas estrategias de aprendizaje.
1990-1995 INTERNET
El internet llega y facilita la comunicación en el desarrollo de proyectos e investigación y la consulta a expertos ubicados en diferentes partes del mundo.
1985: HIPERTEXTO
Llegaron los dispositivos tecnológicos (software) permite la interacción entre nodos de información de diversas índole: textuales, gráficos, videos y sonidos. Multimedia: permite la incorporación al hipertexto de imágenes gráficas, sonidos, animaciones y videos.
1975-1980 PROGRAMACIÓN
Se encontraban programas de propósito general y específico. Se esperaba que los estudiantes pudieran aprender a utilizar estos programas generales y realizar programación.
(1965-1972) MULTIPROGRAMACIÓN
En esta era se busca simplificar el código. Aparece la multiprogramación. Sistemas de tiempo real apoyan la toma de decisiones
(1946-1965) ENIAC
Nace la primera computadora Eniac, por las iniciales en inglés de Numerador electrónico, integrador, analizador y computador, fue el primer computador completamente electrónico.
INGENIRÍA DE SOFTWARE BASADO EN COMPONENTES
Beneficios del Desarrollo de Software basado en Componentes
El paradigma de ensamblar componentes y escribir código para hacer que estos componentes funcionen se conoce como Desarrollo de Software Basado en Componentes. El uso de este paradigma posee algunas ventajas:
Mayor calidad. Dado que un componente puede ser construido y luego mejorado continuamente por un experto u organización, la calidad de una aplicación basada en componentes mejorará con el paso del tiempo.
Simplifica el mantenimiento del sistema. Cuando existe un débil acoplamiento entre componentes, el desarrollador es libre de actualizar y/o agregar componentes según sea necesario, sin afectar otras partes del sistema.
Simplifica las pruebas. Permite que las pruebas sean ejecutadas probando cada uno de los componentes antes de probar el conjunto completo de componentes ensamblados.
Reutilización del software. Nos lleva a alcanzar un mayor nivel de reutilización de software.
Características de un Componente
Reutilizado dinámicamente: Puede ser cargado en tiempo de ejecución en una aplicación.
Es genérico: Sus servicios deben servir para varias aplicaciones.
Puede ser remplazado por otro componente: Se puede remplazar por nuevas versiones u otro componente que lo remplace y mejore.
Auto contenido: Un componente no debe requerir de la utilización de otros para finiquitar la función para la cual fue diseñado.
Identificable: Debe tener una identificación que permita acceder fácilmente a sus servicios que permita su clasificación.
El desarrollo de software basado 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.