COMPLEJIDAD DE LOS SISTEMAS DE SOFTWARE Y MODELOS DE CICLO DE VIDA
diliaros2 de Febrero de 2014
6.829 Palabras (28 Páginas)2.298 Visitas
INTRODUCCIÓN
La presente monografía servirá como guía para orientarnos a entender un poco la complejidad de los sistemas de software, si bien existen diversos sistemas, el sistema software se hace diferenciar debido a su complejidad, muchas personas que carecen de conocimientos en la materia podría interactuar con estos sistemas, ver sus resultados, saber lo que hacen, pero difícilmente podrían entender como lo hace, ni la interrelación de sus componentes para llevar a cabo distintas tareas. Por consiguiente veremos como el manejo adecuado de niveles de abstracción y la capacidad de moverse de un nivel a otro dentro de una tecnología de software constituye la base que le permite a los sistemas de software complejos su desarrollo. Antes de entrar al desarrollo del presente trabajo debemos saber que no existe un modelo de ciclo de vida único que el tipo, orden y actividades en cada fase pueden cambiar adaptándose a las necesidades del producto a realizar y a la estructura de la organización que lo desarrolla a partir de las posibilidades que ofrece la tecnología de software empleada. Más adelante veremos algunos modelos de desarrollo de siclos de vida de forma más detallada.
ÍNDICE
PÁG.
INTRODUCCIÓN ………………………………………………………………. 2
COMPLEJIDAD DE LOS SISTEMAS DE SOFTWARE…………………….
EL PAPEL DE LOS RECURSOS SOFTWARE EN SISTEMAS
COMPLEJOS…………………………………………………………………….
INGENIERÍA DE SISTEMAS DE SOFTWARE……………………………...
MODELOS DE CICLO DE VIDA ……………………………………………..
Modelo En Cascada………………………………………………………
Modelo Incremental………………………………………………………
Modelo Basado en Prototipos Desechables……………………………..
Modelo Basado en Prototipado Incremental…………………………...
Meta-modelo en espiral………………………………………………….
Modelo De Síntesis Automatizada
CONCLUSIÓN………………………………………………………………….
BIBLIOGRAFÍA………………………………………………………………..
COMPLEJIDAD DE LOS SISTEMAS DE SOFTWARE
EL PAPEL DE LOS RECURSOS SOFTWARE EN SISTEMAS COMPLEJOS
Blanchard define un sistema como: una combinación de recursos (como seres humanos, materiales, equipos, software, instalaciones, datos, etc.) integrados de forma tal que cumplan una función específica en respuesta a una necesidad designada de un usuario [1].
Desde una perspectiva más amplia, un sistema se considerará como sistema de software cuando sus recursos software constituyan su elemento básico y la fuente de su funcionalidad básica. Dicho de otro modo, cuando en el proceso de desarrollo sean los recursos software los que determinan el proceso general de desarrollo de todo el sistema y cuando su ejecución pueda realizarse sobre una plataforma hardware genérica. Un sistema de software Implica una interacción con el contexto al que sirve que constituye el referente básico de su utilidad. Un sistema de software posee programas ejecutables pero también otros tipos de recursos (ficheros de datos, de documentación, etc.).
Debemos tener claro lo que son recursos software y la definición de programas ya que estos están inmersos en lo sistemas de software. Llamamos recurso software a un programa o conjunto de programas ejecutables que proporcione algunas de las funciones requeridas por el sistema. Como definición de programa tenemos que un programa es un algoritmo codificado junto con unas estructuras de datos. Algunas veces se emplea el término paquete ejecutable para referirse a un conjunto de programas que se necesitan mutuamente durante la ejecución del sistema y que deben distribuirse conjuntamente al usuario final.
La complejidad de un sistema depende no sólo de las múltiples interacciones entre los recursos de que consta sino también de la forma en la que puede evolucionar en respuesta a las necesidades del entorno. Pues bien, el control de la complejidad de un sistema depende generalmente de las funciones dependientes de sus recursos software y de como éstas se adapten al mundo externo.
La ingeniería de sistemas de software pretende, justamente, incrementar la seguridad absoluta de que se han implementado fielmente los requisitos exigidos por el usuario y de que el sistema se ejecuta correctamente, esta seguridad debe existir durante el proceso de desarrollo hasta alcanzar un nivel de confianza similar al existente en otras ingenierías.
Desde el punto de vista del diseñador y operador humano se conjugan, por tanto, dos propiedades que actúan como una espada de Damocles durante toda su vida útil: la incertidumbre de lo que realmente harán y la ignorancia en cómo lo consiguen. Reducirlas y dominarlas ha constituido la directriz básica en la evolución de la Ingeniería Software durante el último cuarto de siglo.
INGENIERÍA DE SISTEMAS DE SOFTWARE
La ingeniería de sistemas se define en Blanchard como la aplicación efectiva de esfuerzos científicos y de ingeniería para transformar una necesidad operativa en una configuración definida de un sistema mediante el proceso iterativo de análisis de requisitos, la selección del concepto, y asignación, síntesis, soluciones de compromiso y optimización del diseño, prueba y evaluación [1]. Entre sus características se incluye su estructura de arriba-abajo que ve el sistema como un todo; una orientación del ciclo de vida que considera todas las fases desde el diseño conceptual hasta la retirada del sistema; un enfoque interdisciplinar «en equipo» que incluya todas las disciplinas adecuadas de diseño de forma oportuna y concurrente; y la necesaria integración para asegurar que todos los objetivos de diseño se han cumplido de forma efectiva y eficaz. Está orientada al «proceso» e incluye las provisiones esenciales de realimentación y control.
Deseamos introducir aquí una definición clásica de ingeniería de sistemas de software como contrapunto a la anterior. Pressman la define enfatizando aspectos concretos de calidad: "establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales" [2].
Pressman presupone que el sistema de software a realizar cumpla con la misión encomendada, satisfaga las expectativas del usuario, etc. Si comparamos esta definición con la de ingeniería de sistemas anterior, vemos que la de Pressman está enfocada al proceso de desarrollo y no tanto a la tecnología con la que se desarrolla; para él es más una ingeniería de proceso y no tanto de producto. De su análisis se desprende que la ingeniería de sistemas de software es una especialización de la ingeniería de sistemas cuya creciente importancia está ligada a la de los sistemas de software en nuestra sociedad.
MODELOS DE CICLO DE VIDA.
A partir de los años setenta, se había acumulado suficiente experiencia sobre el desarrollo de productos software para poder identificar un conjunto de actividades comunes a todos los proyectos. Asimismo, la estructura organizativa requerida para controlar su ejecución y la forma en la que el control de calidad aseguraba la validez de un determinado producto eran suficientemente conocidas como para definir marcos de referencia utilizables en nuevos proyectos de desarrollo. Esta idea desembocó en el concepto de modelo de ciclo de vida de un producto software.
Por ciclo de vida de un producto software se entiende el secuenciamiento de fases, actividades en cada una de ellas, controles para pasar de una fase a otra y resultados generados en cada una de ellas que permiten el desarrollo de un producto desde su concepción, entrega al usuario, y evolución posterior, hasta su retirada del mercado.
Actualmente, a las fases de desarrollo del modelo de ciclo de vida se las conoce como proceso de desarrollo software. No existe un modelo de ciclo de vida único. Tanto el tipo, orden y actividades en cada fase pueden cambiar adaptándose a las necesidades del producto a realizar y a la propia estructura de la organización que lo desarrolla a partir de las posibilidades que ofrece la tecnología de software empleada.
Aunque en la bibliografía es común encontrarse con clasificaciones de modelos de ciclo de vida muy detalladas pueden considerarse como variaciones de modelos básicos [6]. Nos reduciremos a ellos. Al menos, debemos considerar los siguientes:
• Modelo de ciclo de vida en cascada o convencional
• Modelo incremental.
• Modelo de síntesis automática.
A ellos podemos añadir el denominado modelo en espiral y que, realmente es un meta-modelo (modelo de modelos) en el que tienen cabida cualquiera de los anteriores desde una perspectiva de control de los riesgos del desarrollo.
Modelo En Cascada
El modelo en cascada, también denominado modelo convencional, responde a la secuencia de pasos de desarrollo de un producto empleada desde el comienzo del desarrollo de software para la mayor parte de los sistemas de software.
...