Fundamentos del Desarrollo de Software: Proyectos, Evolución y Modelos

Clasificado en Informática

Escrito el en español con un tamaño de 7,46 KB

Fundamentos del Desarrollo de Software

¿Qué es un Proyecto de Software?

Un proyecto es esencialmente un conjunto de actividades interrelacionadas, con un inicio y un fin definidos, que utiliza recursos limitados para lograr un objetivo deseado. Los dos elementos básicos que incluye esta definición son: las actividades y los recursos.

Las Actividades

Son las tareas que deben realizarse o ejecutarse para llegar en conjunto a un fin preestablecido; como recopilar información, realizar un diagnóstico, confeccionar un diseño global de un procedimiento, programar, escribir manuales de procedimiento, etc.
Un aspecto fundamental en todo proyecto es el orden en el cual se realizan las actividades. Para determinar la secuencia lógica de las actividades, se debe establecer el método, el tiempo y el costo de cada operación.

Los Recursos

Son los elementos utilizados para poder realizar la ejecución de cada una de las tareas; por ejemplo: recursos humanos, hardware (HW), programas de base, programas de aplicación, discos de almacenamiento, energía, servicios, inversiones de capital, personal, información, dinero y tiempo.
El fin primario de desarrollar un proyecto debe ser producir un programa calendario en el cual los recursos, siempre limitados, se asignen a cada una de las actividades en forma económicamente óptima.

Evolución del Software

Primera Era (hasta los años 60)

  • Procesamiento de datos por lote
  • Software personalizado al cliente
  • Más importante es el hardware
  • La documentación era casi inexistente
  • El diseñador y el usuario eran la misma persona

Segunda Era (hasta fines de los 70)

  • Sistemas multiuso
  • Sistemas en tiempo real
  • Primera generación de sistemas de gestión de base de datos
  • Aparecen software de larga distribución en varios dominios
  • La mantención de estos tipos de software era muy difícil, lo cual generó la primera crisis del software

Tercera Era (fines de los 80)

  • Sistemas distribuidos
  • Las redes de extensión global demandaron mejoras en el desarrollo del software
  • Aparecen y explotan los microprocesadores
  • Hardware performante y de bajo costo
  • Impacto en los consumidores

Cuarta Era (hasta nuestros días)

  • Gran avance en el hardware, y como consecuencia en las aplicaciones
  • Sistema desktop de gran poder
  • Tecnología orientada a objetos
  • Nacen los sistemas expertos, redes neuronales y artificiales
  • Cálculo paralelo

Reutilización del Software

Los primeros pasos de la reutilización del software fueron las bibliotecas de rutinas.
Agregar nuevas funcionalidades fue posible luego de la aparición de las tecnologías orientadas a objetos (programación por módulos).

Categorías de Aplicaciones de Software

  • Contenido de la información que debe ser
  • La determinación de la información

Tipos de Aplicaciones de Software

  • Software de sistemas
  • Software de tiempo real
  • Software de gestión
  • Software ingenieril o científico
  • Software incorporado (embedded)

Software de Sistemas

Colección de programas por computadoras con el objetivo de servir a otros programas. Los software de sistemas interaccionan fuertemente con el hardware a nivel básico, tienen que cumplir varias tareas concurrentes, gestionar y compartir recursos.
Ejemplos: Sistemas Operativos, drivers, rutinas de comunicación, compiladores.

Software de Tiempo Real

Monitoriza, analiza y controla eventos que aparecen en el mundo real, dando respuestas y tomando decisiones en tiempo real.
Ejemplos: Sistemas de seguridad, colectores de datos, controladores de procesos industriales.

Software de Gestión

Son aquellos que gestionan bases de datos con información económica y de negocios, reestructurándoles para ofrecer soporte necesario en la toma de decisiones.
Ejemplos: Transacciones bancarias, sistemas de pago.

Software Ingenieril o Científico

Tradicionalmente gestionan y procesan datos numéricos, se usan en todas las áreas de ingeniería y de ciencia.

Software Incorporado (Embedded)

Sistemas de características limitadas destinados a realizar tareas específicas. Incorporados en varios equipos de uso doméstico o industrial.
Ejemplos: GPS, microondas.

Inteligencia Artificial

Inteligencia Artificial Clásica

Usa algoritmos no numéricos para resolver problemas difíciles o imposibles de resolver por métodos clásicos. Son sistemas expertos basados en reglas de decisión. Son además, sistemas de reconocimiento por un patrón.

Inteligencia Computacional

Es aquel enfoque alternativo a la computación algorítmica, que representa nuevas técnicas que reflejan la capacidad del ser humano de toma de decisiones en un entorno de imprecisión.

  • Redes neuronales
  • Lógica borrosa
  • Computación evolutiva
  • Aprendizaje de máquinas
  • Computación probabilística
Redes Neuronales Artificiales

Simulan la estructura y los procesos del cerebro humano. Como en el caso del cerebro, los sistemas pueden aprender de experiencias anteriores y tomar decisiones en base a esas.

Lógica Borrosa

Sistemas tolerantes a la imprecisión y verdades parciales típicos para el mundo real. Son soluciones más robustas y de bajo costo.

Atributos Generales del Software

Los atributos generales, esenciales para cualquier tipo de producto de software son:

  • Mantenibilidad: La posibilidad de hacer cambios en el software, la posibilidad de que evolucione para cumplir nuevas necesidades.
  • Confiabilidad: El software no debe causar daños físicos o económicos en el caso de una falla del sistema.
  • Eficiencia: El software debe usar eficientemente los recursos del sistema.
  • Usabilidad: El software debe ser fácil de utilizar (debe tener una interfaz de usuario apropiada y una documentación adecuada).

Modelos del Proceso del Software

Es una descripción del proceso, desde un punto de vista particular. Un modelo es siempre una simplificación del proceso de software.

  • Un modelo de flujo de trabajo: Representa la sucesión de actividades en el proceso, en conjunción con sus entradas, salidas y dependencias.
  • Un modelo de flujo de datos: Representa un conjunto de actividades, cada una produciendo alguna transformación en los datos; las actividades son de menos nivel que las de un modelo de flujo de trabajo y pueden representar acciones humanas o de las computadoras.
  • Un modelo rol/acción: Representa los roles de la gente involucrada en el proceso de software y las actividades de las cuales son responsables.

Modelos Generales del Proceso de Software

Son abstracciones útiles para explicar diferentes enfoques para el desarrollo de software.

Modelo Cascada

  • El primer modelo de proceso de desarrollo de software, derivado de otros procesos de ingeniería.
  • Se denomina también como ciclo de vida del software.
  • Se denomina cascada debido a la cascada de una fase a otra.

Entradas relacionadas: