1.1 Conceptos
Básicos
Ingeniería
Ingeniería
Es la
profesión en la que el conocimiento de las ciencias naturales y matemáticas
obtenidas con el estudio, la práctica y la experiencia se aplica con juicio
para desarrollar formas de utilizar de modo económico, los materiales y fuerzas
de la naturaleza para beneficio de la humanidad.
Software
Es el conjunto de todos los programas que existen dentro de una computadora.
Software
Es el conjunto de todos los programas que existen dentro de una computadora.
Es el
producto del desarrollo que realizan los ingenieros de software resultado de
requerimientos de información.
La Ingeniería de Software
Es una disciplina de la Ingeniería que comprende todos los aspectos de la producción del software desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de éste después de que se libera.
La Ingeniería de Software
Es una disciplina de la Ingeniería que comprende todos los aspectos de la producción del software desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de éste después de que se libera.
1.2 El papel evolutivo del software
El término fue introducido a fines del
60 y comienzo del 70, tras la crisis del software que se caracterizó por:
• Imprecisión en la planificación del
proyecto y estimación de los costos.
• Baja calidad del Software.
•Dificultad de mantenimiento de
programas con un diseño poco estructurado, etc.
En las décadas de 1980 y 1990 dos tendencias dominaron la ingeniería de software:
•El florecimiento explosivo de aplicaciones, incluyendo las de Internet.
• El Nacimiento de nuevas herramientas y paradigmas (formas de pensamiento, como la orientación a objetos).
En las décadas de 1980 y 1990 dos tendencias dominaron la ingeniería de software:
•El florecimiento explosivo de aplicaciones, incluyendo las de Internet.
• El Nacimiento de nuevas herramientas y paradigmas (formas de pensamiento, como la orientación a objetos).
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).
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).
1.3 Las etapas del proceso de desarrollo de software
1) Investigación preliminar
Parte de una solicitud de requerimiento de un sistema de información, tiene tres partes:
Parte de una solicitud de requerimiento de un sistema de información, tiene tres partes:
a)
Aclaración de la Solicitud
b)
Estudio de Factibilidad: Técnica, Económica, Operacional
C)
Aprobación de la Solicitud
2) Análisis de requerimientos
Comprender todas las facetas importantes de la parte de la empresa bajo estudio:
2) Análisis de requerimientos
Comprender todas las facetas importantes de la parte de la empresa bajo estudio:
a) ¿Qué
es lo que hace?
b) ¿Cómo
se hace?
c) ¿Con
qué frecuencia se presenta?
d)
Volumen de transacciones o decisiones
e)
Grado de eficiencia de las tareas
f) ¿Existe
algún problema?
g) ¿Qué
tan serio y causa que lo origina?
3. Diseño del sistema
Plasma en un modelo los detalles que establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante la fase de análisis
4. Desarrollo de Software
Se puede instalar software comprado (software genérico) o escribir programas diseñados a la medida del solicitante (software personalizado)
3. Diseño del sistema
Plasma en un modelo los detalles que establecen la forma en la que el sistema cumplirá con los requerimientos identificados durante la fase de análisis
4. Desarrollo de Software
Se puede instalar software comprado (software genérico) o escribir programas diseñados a la medida del solicitante (software personalizado)
La
elección depende del costo, tiempo y disponibilidad de programadores.
5. Pruebas
En esta fase, el sistema se emplea de manera experimental para asegurarse que el software no tenga fallas, es decir, que funcione de acuerdo a las especificaciones del usuario y en la forma en que los usuarios esperan que lo haga.
6. Implementación
Es el proceso de: Verificar e Instalar nuevo equipo, capacitar a usuarios, instalar la aplicación y dejar “montada” toda la infraestructura para su aplicación.
5. Pruebas
En esta fase, el sistema se emplea de manera experimental para asegurarse que el software no tenga fallas, es decir, que funcione de acuerdo a las especificaciones del usuario y en la forma en que los usuarios esperan que lo haga.
6. Implementación
Es el proceso de: Verificar e Instalar nuevo equipo, capacitar a usuarios, instalar la aplicación y dejar “montada” toda la infraestructura para su aplicación.
1.4 Clasificación
de la tecnología en el desarrollo de software
Tecnologías de desarrollo estructurado
Las tecnologías de
desarrollo estructurado son las más convencionales de las empleadas hoy día.
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 prime-ras 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.
1.5 Definición e
historia de las herramientas case
¿Qué son las Herramientas CASE?
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.
CASE se define
también como:
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 de las Herramientas CASE
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 las Herramientas 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
Bibliografia:
http://www.buenastareas.com/ensayos/Introduccion-Fundamentos-De-Ingenier%C3%ADa-De-Software/3026326.html
http://mitecnologico.com/sistemas/Main/FundamentosDeIngenieriaDeSoftware