DIFERENCIAS DE DESARROLLO

INGENIRÍA DE SOFTWARE BASADO EN COMPONENTES

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.

Características de un Componente

Identificable: Debe tener una identificación que permita acceder fácilmente a sus servicios que permita su clasificación.

Auto contenido: Un componente no debe requerir de la utilización de otros para finiquitar la función para la cual fue diseñado.

Puede ser remplazado por otro componente: Se puede remplazar por nuevas versiones u otro componente que lo remplace y mejore.

Es genérico: Sus servicios deben servir para varias aplicaciones.

Reutilizado dinámicamente: Puede ser cargado en tiempo de ejecución en una aplicación.

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:

Reutilización del software. Nos lleva a alcanzar un mayor nivel de reutilización de software.

Simplifica las pruebas. Permite que las pruebas sean ejecutadas probando cada uno de los componentes antes de probar el conjunto completo de componentes ensamblados.

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.

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.

EVOLUCIÓN DEL SOFTWARE

(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.

(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

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.

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.

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.

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.

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.

REUTILIZACIÓN DEL SOFTWARE

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.

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)

Tipos

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.

Reulización de componentes.- Los componentes de una aplicación puede reulizarse desde el taño de susbsistema hasta los objetos individuales.

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.

Beneficios

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.

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.

Uso efectivo de especialistas.- Los especialistas de aplicación desarrollen el software de reulización que encapsule su conocimiento.

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

Desarrollo acelerado.- Puede acelerar la producción del sistema, ya que se reduce el tiempo de desarrollo y validación

Factores

Calendario de desarrollo para el software

Los antecedentes, habilidades y la experiencia del equipo de desarrollo

La criticidad del software y sus requerimientos no funcionales

El dominio de aplicación

DESARROLLO DE SISTEMAS CRÍTICOS

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).

Los sistemas críticos deben tener las siguientes propiedades:

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.

Disponibilidad- El sistema esté activo y en funcionamiento y que sea capaz de proporcionar servicios útiles en todo momento.

Fiabilidad- Durante un determinado periodo de tiempo, el sistema funcione correctamente tal y como el usuario espera, debe poseer estas dos características.

Corrección- La información sea proporcionada al cliente con el nivel de detalle preciso.

Precisión- La información que se proporciona se hace cuando es requerida.

Seguridad- Evite consecuencias catastróficas sobre su entorno.

Protección- El sistema es capaz de resistir ataques premeditados o accidentales, la protección debe cumplir.

Integridad de que los datos no resulten dañados.

Tipos de sistemas críticos

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).

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 negocio críticos.- Son aquellos en los que un fallo puede ocasionar grandes pérdidas económicas