1.1 Conceptos Básicos.
“Ingeniería
es la aplicación sistemática de conocimiento científico para la creación y
construcción de soluciones rentables a problemas prácticos al servicio de la
humanidad. La Ingeniería del Software es la forma de ingeniería que aplica
principios propios de la Ciencia de la Informática y Matemáticas para conseguir
soluciones rentables a problemas software.”
La ingeniería de software es una
disciplina y profesión enfocada a la aplicación de conocimiento científico y
técnico, que utiliza recursos físicos para diseñar e implementar diversos
artefactos (estructuras, máquinas, dispositivos, sistemas y procesos) para
realizar un objetivo deseado y alcanzar criterios especificados.
Se conoce como software al
equipamiento lógico o soporte lógico de una computadora digital;
comprende el conjunto de los componentes lógicos necesarios que hacen posible
la realización de tareas específicas, en contraposición a los componentes
físicos, que son llamados hardware.
El software es tanto un producto como el vehículo para su
entrega. Es el transformador de la información. El papel del software de
computadora ha experimentado un cambio significativo en un periodo un poco
mayor a 50 años. Las mejorías sustanciales en el desempeño del hardware, los
cambios profundos en las arquitecturas de cómputo, los enormes incrementos en
las capacidades de memoria y almacenamiento, y la amplia variedad de opciones
de salida y de entrada han propiciado el surgimiento de sistemas más elaborados
y complejos basados en computadoras.
Nadie sabe en realidad el futuro de los sistemas que día a
día se construyen, más sin embargo sin importar el lugar en el que resida el
software, ya sea en un celular o dentro de una computadora central, el software
realiza la producción, el manejo, la adquisición, la modificación, el
despliegue o la transmisión de la información que puede ser tan simple como un
solo bit o tan compleja como una
presentación multimedia. En su papel de vehículo para la entrega de un
producto, el software actúa como la base para el control de la computadora
(sistemas operativos), la comunicación de información (redes) y la creación y
el control de otros programas (utilerías de software y ambientes).
El software entrega el producto más importante de nuestro
tiempo: información. Transforma los datos personales, por ejemplo las
transacciones financieras de un individuo, de modo que los datos sean más
útiles en un contexto local. Maneja información de negocio para mejorar la
competitividad, proporciona una vía para las redes de información alrededor del
mundo (Internet) y proporciona los medios para adquirir información en todas
sus formas (páginas web).
- Análisis: Es el proceso de investigar un problema que se quiere resolver. Definir claramente el Problema que se desea resolver o el sistema que se desea crear. Identificar los componentes principales que integrarán el producto.
- Diseño: Es el proceso de utilizar la información recolectada en la etapa de análisis al diseño del producto.
- Desarrollo: Consiste en utilizar los modelos creados durante la etapa de diseño para crear los componentes del sistema.
- Prueba: Consiste en asegurar que los componentes individuales que integran al sistema o producto, cumplen con los requerimientos de la especificación creada durante la etapa de diseño.
- Implementación: Consiste en poner a disposición del cliente el producto.
- Mantenimiento: Consiste en corregir problemas del producto y re-liberar el producto como una nueva versión o revisión (producto mejorado).
- Etapa Final EOL (End-of-Life): El fin del ciclo del producto consiste en realizar todas las tareas necesarias para asegurar que los clientes y los empleados están conscientes de que el producto ya no será vendido ni soportado.
1.4 Etapas del Desarrollo de Software
Tecnologías de desarrollo estructurado
Han
surgido de la evolución de las ideas de programación estructurada (hace más de
veinticinco años) hacia las fases iniciales del ciclo de vida.
En su
formulación actual, las notaciones empleadas en las primeras fases del ciclo de
vida (especificación de requisitos de usuario y sistema) suelen estar
constituidas por lenguajes gráficos que permiten: identificar el sistema y el
entorno; representar el flujo de información entre los elementos y describir
los datos y las actividades del sistema.
La idea
base de esta tecnología es que es posible estructurar el modelo de un sistema
de software en base a funciones que procesan información que reciben de otras
funciones (o del exterior) y dirigen la información procesada a otros módulos
funcionales (o al exterior). El enfoque seguido, por tanto, es el de pensar en
las funciones del sistema necesarias (extraídas de los requisitos del sistema)
y luego en los datos que requieren.
Tecnologías
orientadas a objetos
Las tecnologías de desarrollo estructurado han demostrado sus
limitaciones a la hora de organizar y facilitar la evolución de sistemas de
software complejos. La descomposición en funciones hace difícil al diseñador
mantener la relación con los objetos del mundo real sobre los que se modifican
generalmente los requisitos del usuario.
Los métodos de descomposición
orientada a objetos constituyen la tendencia más influyente observada en la
ingeniería de sistemas de software en los últimos años. Con ellos nos referimos
a un conjunto de métodos (aún en fase de desarrollo o evolución) que permiten
al analista y diseñador concebir su sistema identificando clases de objetos,
operaciones permitidas y relaciones entre ellos como base para la estructura
del sistema a diseñar.
Se puede definir a las Herramientas
CASE como un conjunto de programas y ayudas que dan asistencia a los analistas,
ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida
de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida
de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño,
Implementación e Instalación.
- Conjunto de métodos, utilidades y técnicas que facilitan la automatización del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.
- La sigla genérica para una serie de programas y una filosofía de desarrollo de software que ayuda a automatizar el ciclo de vida de desarrollo de los sistemas.
- Una innovación en la organización, un concepto avanzado en la evolución de tecnología con un potencial efecto profundo en la organización. Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.
HISTORIA...
Las Herramientas CASE tienen su
inicio con el simple procesador de palabras que fue usado para crear y manipular documentación. Los setentas vieron la introducción de
técnicas gráficas y diagramas de flujo de estructuras de datos. Sobre este
punto, el diseño y especificaciones en forma pictórica han sido extremadamente
complejos y consumían mucho tiempo para realizar cambios.
La introducción de las herramientas
CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fácilmente
creados y modificados, mejorando la calidad de los diseños de software. Los
diccionarios de datos, un documento muy usado que mantiene los detalles de cada
tipo de dato y los procesos dentro de un sistema, son el resultado directo de
la llegada del diseño de flujo de datos y análisis estructural, hecho posible a
través de las mejoras en las Herramientas CASE.
Pronto se reemplazaron los paquetes
gráficos por paquetes especializados que habilitan la edición, actualización e
impresión en múltiples versiones de diseño. Eventualmente, las herramientas
gráficas integradas con diccionarios de base de datos para producir poderosos
diseños y desarrollar herramientas, podrían sostener ciclos completos de diseño
de documentos.
Como un paso final, la verificación
de errores y generadores de casos de pruebas fueron incluidos para validar el
diseño del software. Todos estos procesos pueden saberse integrados en una
simple herramienta CASE que soporta todo el ciclo de desarrollo.
1.6 Clasificación de la Herramienta CASE
No existe una única
clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en
una clase determinada. Podrían clasificarse atendiendo a:
- Las plataformas que soportan.
- Las fases del ciclo de vida del desarrollo de sistemas que cubren.
- La arquitectura de las aplicaciones que producen.
- Su funcionalidad.
Las herramientas CASE, en función de las
fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:
1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan
todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas
también CASE workbench.
2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end,
orientadas a la automatización y soporte de las actividades desarrolladas
durante las primeras fases del desarrollo: análisis y diseño.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas
a las últimas fases del desarrollo: construcción e implantación.
4. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas
CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se
encontrarían las herramientas de reingeniería, orientadas a la fase de
mantenimiento.
No hay comentarios:
Publicar un comentario