You are on page 1of 8

Ingeniería de Software I

Unidad 1. Evolución de los Sistemas de Programación


ing. Mariana Verduzco Rodríguez

Introducción

Un ​sistema es un conjunto de elementos que se relacionan entre sí para trabajar


conjuntamente y cumplir un objetivo establecido. Todo programa desarrollado es un
sistema que entra en la categoría de software.

Todo producto de software que se desea ofrecer, se conforma por el programa


desarrollado y la documentación asociada al mismo.

La Crisis de los Sistemas de Programación

El término “​Crisis del Software​” surge a principios de los años 70, cuando el
término “ingeniería de software” era inexistente y hace referencia a la lenta
evolución de la industria del software. Expresa las dificultades del desarrollo de
software frente al rápido crecimiento de la demanda por software, complejidad de
los problemas a resolver y la inexistencia de técnicas establecidas para el desarrollo
de sistemas.

El principal evento de la “Crisis del Software” ocurrió cuando se percibió que se


gastaba más tiempo en hacer las modificaciones a los programas que en volver a
crear el software. La razón era que ya se habían codificado millones de líneas de
código antes de que se definiera un buen método para crear los programas.

Referencia histórica

Primera Fase. Los Albores ( 1945-1955) :


Programar no es una tarea diferenciada del diseño de una máquina.
Uso del Lenguaje máquina y ensamblador.

Segunda Fase. El Florecimiento ( 1956-1965 ) :


Aparecen múltiples lenguajes.
Es posible hacer todo.

Tercera Fase. La Crisis ( 1966-1970 ) :


Desarrollo Inalcanzable de grandes programas.
Ineficiencia, errores, coste impredecible.
Nada es posible.

1
Ingeniería de Software I
Unidad 1. Evolución de los Sistemas de Programación
ing. Mariana Verduzco Rodríguez

Cuarta Fase. Innovación Conceptual ( 1971-1980 ) :


Fundamentos de Programación.
Verificación de Programación.
Metodologías de Diseño.

Quinta Fase. El Diseño del Problema ( 1981-200? ) :


Entornos de programación.
Especificación Formal.
Programación Automática.

Ingeniería de Software

El término Ingeniería de Software, según R.Pressman; es “Una disciplina que integra


métodos, herramientas y procedimientos para el desarrollo de software de
computadora”. Es decir, es una disciplina que establecer las pautas a seguir, para
minimizar tiempo, esfuerzo, costo y maximizar la calidad del software.

Actualmente se sigue hablando de la crisis del software y desafortunadamente,


algunos profesionistas siguen sin hacer uso de metodologías o herramientas CASE
que actualmente existen en le mercado y que resolverán problemas de
administración, clientes y desarrollador.

Algunas creencias a las que nos enfrentamos son:

❖ Ya tenemos el mejor libro para construir software


❖ Se requiere lo último en computación para desarrollar
❖ Poco importa la planificación
❖ Solo basta conocer el problema de forma general
❖ Hasta que se ponga en uso el programa se ve la calidad de este
❖ Solo es necesario entregar el programa funcionando.

Desarrollo y Mantenimiento del Software

El desarrollo y mantenimiento (evolución) del software debe considerarse como 2


actividades continuas; ya que el ​desarrollo es una actividad creativa donde un
sistema de programación (software) se construye desde un concepto inicial hasta
que se pone en funcionamiento. Mientras que el ​mantenimiento o evolución inicia
cuando un sistema desarrollado comienza a utilizarse y surgen nuevos
requerimientos.

2
Ingeniería de Software I
Unidad 1. Evolución de los Sistemas de Programación
ing. Mariana Verduzco Rodríguez

Los cambios en los negocios, generan nuevos requerimientos en el software


existente. Algunas partes del software se modifican para corregir errores
encontrados en el funcionamiento, mejorar rendimiento o adaptarlo a una
plataforma nueva. Por lo tanto, el desarrollo de software no se detiene cuando un
sistema es entregado, sino que continúa durante el tiempo de vida del sistema.

El equipo de desarrollo y mantenimiento puede presentarse en las siguientes


distribuciones:

● Desarrollo y mantenimiento local.


● Desarrollo externo y mantenimiento local.
● Desarrollo y mantenimiento externo.

Ciclo de Vida del Software

Existen diversas metodologías en torno al desarrollo del software y cada una posee
características particulares. A continuación se describen los procedimientos básicos
que posee el ciclo de vida:

● Planificación. Analizar brevemente los requerimientos que el cliente pide


para elaborar el sistema que necesita. En esta etapa se requiere cierto
conocimiento para poder entender la idea que el cliente propone, se toman
notas relacionadas con cada punto importante. De este modo se pueden
determinar tiempos de desarrollo.

● Implementación. Los programadores codifican o desarrollan el sistema que


se necesita con base en los requerimientos solicitados. Existen diversas
metodologías de implementación y se puede aplicar cualquier lenguaje de
programación.

● Pruebas. Conforme un sistema se va desarrollando, se realizan pruebas o


análisis que verifiquen su funcionamiento. Es importante que no se termine el
desarrollo para poder hacer pruebas. Durante el proceso de creación se
realizan pruebas que permitan ver si el sistema es funcional, si posee errores,
etc.

● Documentación. La documentación es un registro de las características más


importantes del sistema a desarrollar. Auxilia en el momento de retomar
proyectos incompletos o cuando hay cambios en equipos de trabajo. Existen

3
Ingeniería de Software I
Unidad 1. Evolución de los Sistemas de Programación
ing. Mariana Verduzco Rodríguez

metodologías que van creando la documentación conforme se va avanzando


en el desarrollo del sistema, otras hacen la documentación hasta el final.

● Despliegue. En esta etapa, el sistema ya está terminado y ha sido aprobada


la elaboración del producto final. Es momento de distribuir.

● Mantenimiento. En esta etapa se pueden agregar mejoras, desarrollar


actualizaciones y generar nuevas versiones en todo momento.

Paradigmas del Ciclo de Vida del Software

Existen múltiples modelos preestablecidos bajo los cuales puede elaborarse un


proyecto. Asimismo, cada modelo se encuentra basado en un paradigma. A
continuación se muestran los principales paradigmas en modelos de ciclo de vida de
desarrollo de sistemas:

● Paradigma Tradicional. Se caracteriza principalmente por ser lineal y sin


vuelta atrás; es decir, se trata de completar cada proceso o fase de principio
a fin. Esto puede generar dificultades y pérdidas de tiempo si se encuentran
errores en una fase avanzada, pues el proceso es volver atrás y volver a
pasar nuevamente por las fases que ya se habían hecho y reestructurar de
acuerdo a las modificaciones. Todo con un proceso lineal, lento y tardado. El
cliente solo se involucra al inicio y al final del desarrollo.

● Paradigma Orientado a Objetos. Se caracteriza por hacer que los códigos


fuente sean reutilizables para otros proyectos o mini-proyectos alternos
relacionados con el programa base, a partir de la creación de clases. Este
paradigma optimiza tiempos de desarrollo, análisis de costos y diseño en
relación al paradigma tradicional. El cliente aún mantiene su participación al
inicio y final del desarrollo.

● Paradigma de Desarrollo Ágil. Es uno de los más utilizados en la


actualidad; su objetivo es desarrollar proyectos en poco tiempo. Se eliminan
procesos tediosos, se agilizan fases de desarrollo, las iteraciones se hacen en
corto tiempo, los riesgos se evitan y se busca dar soluciones rápidas. Si algo
demora mucho en dar solución, lo mejor es dejarlo de lado y seguir
avanzando. Una de las principales características de este paradigma, es que
el cliente se ve involucrado en el proyecto durante el desarrollo del mismo;
los clientes interfieren, dan mejoras, proponen ideas y se mantiene al tanto

4
Ingeniería de Software I
Unidad 1. Evolución de los Sistemas de Programación
ing. Mariana Verduzco Rodríguez

del desarrollo del producto. Por lo que el producto final se realiza de forma
satisfactoria y en un menor lapso de tiempo.

Metodologías en torno al Desarrollo de Software

Existen diversas metodologías en torno al desarrollo del software y cada una posee
características particulares, dependiendo la forma de trabajar de cada equipo de
trabajo y el proyecto a desarrollar. A continuación se muestran las metodologías
más comunes:

Modelo de Cascada

Proceso de desarrollo secuencial, en el que el desarrollo de software se concibe


como un conjunto de etapas que se ejecutan una tras otra. Se le denomina así por
las posiciones que ocupan las diferentes fases que componen el proyecto, colocadas
una encima de otra, y siguiendo un flujo de ejecución de arriba hacia abajo, como
una cascada.

Modelo en Espiral

El modelo en espiral, es una metodología iterativa donde se describe el ciclo de vida


de un software por medio de espirales que se repiten hasta la entrega del producto
terminado. El producto se trabaja continuamente (evoluciona) y las mejoras a
menudo tienen lugar en pasos muy pequeños.

5
Ingeniería de Software I
Unidad 1. Evolución de los Sistemas de Programación
ing. Mariana Verduzco Rodríguez

El desarrollo en espiral es genérico y puede combinarse con otros métodos de


desarrollo clásicos y ágiles, por lo que también se denomina modelo o desarrollo de
segundo orden.

Un modelo en espiral consta de las siguientes fases:

● Especificación: Proceso en que los clientes y desarrolladores definen


requisitos, funciones y restricciones del software a producir.
● Implementación:​ Proceso donde el software se diseña y desarrolla.
● Validación: Proceso donde se examinan las especificaciones para asegurar
que se cumplan todos los requisitos establecidos.
● Operación: El software se modifica para adaptarlo a los cambios requeridos
por el cliente y el mercado.

6
Ingeniería de Software I
Unidad 1. Evolución de los Sistemas de Programación
ing. Mariana Verduzco Rodríguez

Modelo por Prototipos

Modelo que permite que el código fuente sea reutilizable, y en la mayoría de los
casos el prototipos puede llegar a ser el producto final. Las fases del ciclo de vida de
esta metodología, son las siguientes:

Una de las principales ventajas del modelo iterativo, es que la retroalimentación a


los usuarios se proporciona desde muy temprano; haciendo que adentrarse en el
proyecto sea sencillo. Por supuesto que el hecho de contar con iteraciones nos da
ciertas ventajas, pues con cada iteración realizada, se van separando las partes
complejas del sistema y se asegura la garantía de satisfacción para el cliente.

Leyes Lehman

La evolución de los programas se rige por las leyes Lehman, que estudian los
cambios evolutivos referentes a los sistemas tecnológicos.

● Ley de Cambio Continuo: Los sistemas tecnológicos deben adaptarse en


forma continua, de lo contrario se volverán menos satisfactorios al pasar el
tiempo.
● Ley de Complejidad Creciente: Al evolucionar un sistema, su estructura
tiende a ser más compleja; por lo que deben dedicarse recursos para
preservar o simplificar su estructura.
● Ley de Autorregulación: Un sistema tecnológico se autorregula mediante la
distribución del producto y las mediciones de procesos y cambios. Al registrar

7
Ingeniería de Software I
Unidad 1. Evolución de los Sistemas de Programación
ing. Mariana Verduzco Rodríguez

todo cambio, podemos determinar limitantes en los procesos de mejora y


tomar la decisión de desarrollar un nuevo sistema.
● Ley de Estabilidad Organizacional: La velocidad de desarrollo es
aproximadamente constante e independientemente de los recursos dedicados
al desarrollo del sistema.
● Ley de la Conservación de la Familiaridad: Los cambios realizados en
cada entrega del sistema, son aproximadamente constantes. Detrás de un
sistema en evolución, todos los involucrados (desarrolladores y usuarios)
deben mantener dominio sobre su contenido y comportamiento. El
crecimiento excesivo disminuye dominio.
● Ley de Crecimiento Continuo: El contenido funcional de todo sistema
tecnológico debe incrementarse de manera continua para mantener la
satisfacción de los usuarios en el periodo de vida del sistema.
● Ley de Decremento de la Calidad: La calidad de los sistemas tecnológicos
disminuirá, a menos que dichos sistemas se adapten a los cambios en su
entorno de funcionamiento.
● Ley de Realimentación del Sistema: El proceso de evolución de un
sistema tecnológico incluye sistemas de retroalimentación con niveles, ciclos
y agentes múltiples que deben tratarse para obtener mejoras significativas en
el producto.

You might also like