Вы находитесь на странице: 1из 41

INGENIERIA DE SOFTWARE

Unidad 1
Que es la Ingeniería del
Software ?
La Ingeniería del software es una disciplina o área de
la Informática o Ciencias de la Computación, que
ofrece métodos y técnicas para desarrollar y
mantener software de calidad que resuelven
problemas de todo tipo. Hoy día es cada vez mas
frecuente la consideración de la Ingeniería del
Software como una nueva área de la Ingeniería, y
el Ingeniero del Software comienza a ser una
profesión implantada en el mundo laboral
internacional, con derechos, deberes y
responsabilidades que cumplir, junto a una, ya,
reconocida consideración social en el mundo
empresarial y, por suerte, para esas personas con
brillante futuro.
La ingeniería del software trata con áreas
muy diversas de la Informática y de las
Ciencias de la Computación, tales como
construcción de compiladores, sistemas
operativos o desarrollos de
Intranet/Internet, abordando todas las
fases del ciclo de vida del desarrollo de
cualquier tipo de sistemas de información y
aplicables a una infinidad de áreas tales
como: negocios, investigación científica,
medicina, producción, logística, banca,
control de trafico, meteorología, el mundo
del derecho, la red de redes Internet, redes
Intranet y Extranet, etc.
Definición del termino
Ingeniería del Software
El termino Ingeniería se define en el
Diccionario de la Real Academia
Española de la Lengua como:
1. Conjunto de conocimientos y
técnicas que permiten aplicar el
saber científico a la utilización de la
materia y de las fuentes de energía.
2. Profesión y ejercicio del Ingeniero" y
el termino Ingeniero se define como:
persona que profesa o ejerce la
Ingeniería.
CONCEPTOS BASICOS.

 La ingeniería de software es una


disciplina formada por un conjunto
de métodos, herramientas y técnicas
que se utilizan en el desarrollo de los
programas informáticos (software).
 Esta disciplina trasciende la
actividad de programación, que es la
actividad principal a la hora de crear
un software. El ingeniero de software
se encarga de toda la gestión del
proyecto para que éste se pueda
desarrollar en un plazo determinado
y con el presupuesto previsto.
CONCEPTOS BASICOS.

 La ingeniería de software, por lo


tanto, incluye el análisis previo de la
situación, el diseño del proyecto, el
desarrollo del software, las pruebas
necesarias para confirmar su
correcto funcionamiento y la
implementación del sistema.
Los Ingenieros de Software
deben:
 Adoptar un enfoque sistemático para
llevar a cabo su trabajo.
 Utilizar las herramientas y técnicas
apropiadas para resolver el
problema planteado, de acuerdo a
las restricciones de desarrollo y a los
recursos disponibles.
Introducción
 Este término fue introducido a finales
de los 60 a raíz de la crisis del
software.
 Esta crisis fue el resultado de la
introducción de la tercera generación
del hardware.
 El hardware dejo de ser un
impedimento para el desarrollo de la
informática; redujo los costos y
mejoro la calidad y eficiencia en el
software producido
La crisis se caracterizo por los
siguientes problemas:
 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.

Por otra parte se exige que el software sea


eficaz y barato tanto en el desarrollo como
en la compra.

También se requiere una serie de


características como fiabilidad, facilidad de
mantenimiento y de uso, eficiencia, etc.
Objetivos de la ingeniería de
software
En la construcción y desarrollo de
proyectos se aplican métodos y
técnicas para resolver los
problemas, la informática aporta
herramientas y procedimientos
sobre los que se apoya la
ingeniería de software.
 Mejorar la calidad de los productos de
software
 Aumentar la productividad y trabajo de los
ingenieros del software.
 Facilitar el control del proceso de
desarrollo de software.
 Suministrar a los desarrolladores las bases
para construir software de alta calidad en
una forma eficiente.
 Definir una disciplina que garantice la
producción y el mantenimiento de los
productos software desarrollados en el
plazo fijado y dentro del costo estimado.
Objetivos de los proyectos de
sistemas
Para que los objetivos se cumplan las
empresas emprenden proyectos por
las siguientes razones: “Las cinco C”

 Capacidad
 Costo
 Control
 Comunicación
 Competitividad
EL PAPEL EVOLUTIVO DEL
SOFTWARE
 Hoy en día, el software tiene un papel dual. Es
producto y canal de distribución de este. Como
producto, ofrece la potencia de cómputo
presentada como hardware de una
computadora o, de manera más global por una
red de computadoras accesible mediante
hardware local y de acceso físico. Sin importar
el lugar en que resida el software, ya sea en
un celular o dentro de una computadora
central, éste es un transformador de
información; 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.
EL PAPEL EVOLUTIVO DEL
SOFTWARE
 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 relación y el
control de otros programas (utilerías de
software y ambientes).
PRIMERA ERA
(1950 – 1965)
 Se trabajaba con la idea de “Codificar y Corregir”.
 No existía un planteamiento previo.
 No existía documentación de ningún tipo.
 Existencia de pocos métodos formales y pocos
creyentes en ellos.
 Desarrollo a base de prueba y error.
SEGUNDA ERA
(1965 – 1972)
 Se busca simplificar código.
 Aparición de Multiprogramación y Sistemas
Multiusuarios.
 Sistemas de Tiempo Real apoyan la toma de
decisiones.
 Aparición de Software como producto. (Casas de
Software).
 Se buscan procedimientos para el desarrollo del
Software.
TERCERA ERA
(1972 – 1985)
 Nuevo Concepto: Sistemas Distribuidos.
 Complejidad en los Sistemas de Información.
 Aparecen: Redes de área local y global, y
Comunicadores Digitales.
 Amplio Uso de Microprocesadores.
CUARTA ERA
(1985 – 1995)
 Impacto Colectivo de Software.
 Aparecen: Redes de Información, Tecnologías
Orientadas a Objetos.
 Aparecen: Redes Neuronales, Sistemas Expertos y
SW de Inteligencia Artificial.
 La información como valor preponderante dentro de
las Organizaciones.
QUINTA ERA
(1995 – HOY EN DIA)
Utiliza algunos requisitos de las eras anteriores solo
que aumenta la omnipresencia de la web, la
reutilización de información y componentes de
software .
 Codificar: Transformar mediante las reglas de un
código la formulación de un mensaje.
 Hardware: Componente físico de la computadora.
Por ejemplo: el monitor, la impresora o el disco
rígido. El hardware por sí mismo no hace que una
máquina funcione.
 Multiprogramación: Se denomina
multiprogramación a la técnica que permite que dos
o más procesos ocupen la misma unidad de
memoria principal y que sean ejecutados al "mismo
tiempo“.
Aplicaciones del software
El software puede aplicarse en cualquier situación en
la que se haya definido previamente un conjunto
específico de pasos procedimentales (es decir, un
algoritmo) (excepciones notables a esta regla son el
software de los sistemas expertos y de redes
neuronales). El contenido y el determinismo de la
información son factores importantes a considerar
para determinar la naturaleza de una aplicación de
software. El contenido se refiere al significado y a la
forma de la información de entrada y salida. Por
ejemplo, muchas aplicaciones bancarias usan unos
datos de entrada muy estructurados (una base de
datos) y producen «informes» con determinados
formatos. El software que controla una máquina
automática (por ejemplo: un control numérico)
acepta elementos de datos discretos con una
estructura limitada y produce órdenes concretas
para la máquina en rápida sucesión.
Software de sistemas.
El software de sistemas es un conjunto de programas
que han sido escritos para servir a otros programas.
Algunos programas de sistemas (por ejemplo:
compiladores, editores y utilidades de gestión de
archivos) procesan estructuras de información
complejas pero determinadas. Otras aplicaciones
de sistemas (por ejemplo: ciertos componentes del
sistema operativo, utilidades de manejo de
periféricos, procesadores de telecomunicaciones)
procesan datos en gran medida indeterminados. En
cualquier caso, el área del software de sistemas se
caracteriza por una fuerte interacción con el
hardware de la computadora; una gran utilización
por múltiples usuarios; una operación concurrente
que requiere una planificación, una compartición de
recursos y una sofisticada gestión de procesos;
unas estructuras de datos complejas y múltiples
interfaces externas.
21
Software de tiempo real.
El software que coordina/analiza/controla sucesos del
mundo real conforme ocurren, se denomina de
tiempo real. Entre los elementos del software de
tiempo real se incluyen: un componente de
adquisición de datos que recolecta y da formato a la
información recibida del entorno externo, un
componente de análisis que transforma la
información según lo requiera la aplicación, un
componente de control/salida que responda al
entorno externo, y un componente de
monitorización que coordina todos los demás
componentes, de forma que pueda mantenerse la
repuesta en tiempo real (típicamente en el rango de
un milisegundo a un segundo).

22
Software de gestión.
El proceso de la información comercial constituye la
mayor de las áreas de aplicación del software. Los
«sistemas» discretos (por ejemplo: nóminas,
cuentas de haberes-débitos, inventarios, etc.) han
evolucionado hacia el software de sistemas de
información de gestión (SIG) que accede a una o
más bases de datos que contienen información
comercial. Las aplicaciones en esta área
reestructuran los datos existentes para facilitar las
operaciones comerciales o gestionar la toma de
decisiones. Además de las tareas convencionales
de procesamientos de datos, las aplicaciones de
software de gestión también realizan cálculo
interactivo (por ejemplo: el procesamiento de
transacciones en puntos de ventas).

23
Software de ingeniería y
científico.
El software de ingeniería y científico está caracterizado
por los algoritmos de «manejo de números». Las
aplicaciones van desde la astronomía a la
vulcanología, desde el análisis de la presión de los
automotores a la dinámica orbital de las lanzaderas
espaciales y desde la biología molecular a la
fabricación automática. Sin embargo, las nuevas
aplicaciones del área de ingeniería/ciencia se han
alejado de los algoritmos convencionales
numéricos. El diseño asistido por computadora (del
inglés CAD), la simulación de sistemas y otras
aplicaciones interactivas, han comenzado a coger
características del software de tiempo real e incluso
del software de sistemas.

24
Software empotrado.
Los productos inteligentes se han convertido
en algo común en casi todos los mercados
de consumo e industriales. El software
empotrado reside en memoria de sólo
lectura y se utiliza para controlar productos
y sistemas de los mercados industriales y
de consumo. El software empotrado puede
ejecutar funciones muy limitadas y
curiosas (por ejemplo: el control de las
teclas de un horno de microondas) o
suministrar una función significativa y con
capacidad de control (por ejemplo:
funciones digitales en un automóvil, tales
como control de la gasolina, indicadores en
el salpicadero, sistemas de frenado, etc.).
25
Software de computadoras
personales.
El mercado del software de computadoras
personales ha germinado en las pasadas
dos décadas. El procesamiento de textos,
las hojas de cálculo, los gráficos por
computadora, multimedia,
entretenimientos, gestión de bases de
datos, aplicaciones financieras, de
negocios y personales y redes o acceso a
bases de datos externas son algunas de
los cientos de aplicaciones.

26
Software basado en Web.
Las páginas Web buscadas por un
explorador son software que
incorpora instrucciones ejecutables
(por ejemplo, CGI, HTML, Perl, o
lava), y datos (por ejemplo,
hipertexto y una variedad de
formatos de audio y visuales). En
esencia, la red viene a ser una gran
computadora que proporciona un
recurso software casi ilimitado que
puede ser accedido por cualquiera
con un modem.

27
Software de inteligencia
artificial.
El software de inteligencia artificial (IA) hace
uso de algoritmos no numéricos para
resolver problemas complejos para los que
no son adecuados el cálculo o el análisis
directo. Los sistemas expertos, también
llamados sistemas basados en el
conocimiento, reconocimiento de patrones
(imágenes y voz), redes neuronales
artificiales, prueba de teoremas, y los
juegos son representativos de las
aplicaciones de esta categoría.

28
1.3 ETAPAS DE DESARROLLO DEL
SOFTWARE

 Etapa de 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.
 Etapa de Diseño: Es el proceso de utilizar la información
recolectada en la etapa de análisis al diseño del producto. La
principal tarea de la etapa de diseño es desarrollar un modelo o
las especificaciones para el producto o Componentes del
Sistema.
 Etapa de Desarrollo: Consiste en utilizar los modelos creados
durante la etapa de diseño para crear los componentes del
sistema.
 Etapa de Pruebas o Verificación 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. Se
recomienda aplicar las etapas: • Análisis • Diseño • Desarrollo •
Prueba A cada uno de los ejercicios de este curso.
29
1.3 ETAPAS DE DESARROLLO DEL
SOFTWARE

 Etapa de Implementación o Entrega


Implantación: Consiste en poner a
disposición del cliente el producto.
 Etapa de 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. 30
1.4 CLASIFICACIÓN DE LA TECNOLOGÍA EN EL
DESARROLLO DE SOFTWARE
(TECNOLOGÍA ESTRUCTURADA Y ORIENTADO A
OBJETOS).

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 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.
31
1.4 CLASIFICACIÓN DE LA TECNOLOGÍA EN EL
DESARROLLO DE SOFTWARE
(TECNOLOGÍA ESTRUCTURADA Y ORIENTADO A
OBJETOS).

Orientado a Objetos
 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.
 En ellas, un objeto es un conjunto de datos y funciones de
manipulación de los mismos encapsulados en una unidad
que es posible tratar como un todo (crear, copiar, destruir,
etc.). Un objeto posee unas operaciones visibles a otros
objetos aunque éstos no conocen cómo están
implementadas. El diseñador reconoce inicialmente clases
de objetos de las que se derivan los objetos concretos que
utilizará en el diseño.
32
1.4 CLASIFICACIÓN DE LA TECNOLOGÍA EN EL
DESARROLLO DE SOFTWARE
(TECNOLOGÍA ESTRUCTURADA Y ORIENTADO A
OBJETOS).

Orientado a Objetos
 Un objeto puede construirse jerárquicamente
empleando, a su vez, a otros objetos más simples.
Una clase implica una generalización del concepto
de objeto (identificando similitudes entre objetos
similares) y constituye la base a partir de las cuales
se construye el sistema.
 Existen varias tecnologías orientadas a objetos que,
aunque similares en su potencia expresiva, ofrecen
algunas diferencias que las hacen más adecuadas
para algún tipo concreto de sistemas.

33
1.5 DEFINICIÓN DE LA HISTORIA DE 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: 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.
34
1.5 DEFINICIÓN DE LA HISTORIA DE LAS
HERRAMIENTAS CASE.

 La realización de un nuevo software requiere que las


tareas sean organizadas y completadas en forma
correcta y eficiente. Las Herramientas CASE fueron
desarrolladas para automatizar esos procesos y facilitar
las tareas de coordinación de los eventos que necesitan
ser mejorados en el ciclo de desarrollo de software.

 La mejor razón para la creación de estas herramientas


fue el incremento en la velocidad de desarrollo de los
sistemas. Por esto, las compañías pudieron desarrollar
sistemas sin encarar el problema de tener cambios en las
necesidades del negocio, antes de finalizar el proceso de
desarrollo.

35
1.5 DEFINICIÓN DE LA HISTORIA DE LAS
HERRAMIENTAS CASE.

Con un CASE integrado, las organizaciones pueden


desarrollar rápidamente sistemas de mejor calidad para
soportar procesos críticos del negocio y asistir en el desarrollo
y promoción intensiva de la información de productos y
servicios. Estas herramientas pueden proveer muchos
beneficios en todas las etapas del proceso de desarrollo de
software, algunas de ellas son:

 Verificar el uso de todos los elementos en el sistema


diseñado.
 Automatizar el dibujo de diagramas.
 Ayudar en la documentación del sistema.
 Ayudar en la creación de relaciones en la Base de Datos.
 Generar estructuras de código.

36
1.5 DEFINICIÓN DE LA HISTORIA DE LAS
HERRAMIENTAS CASE.

La principal ventaja de la utilización de una herramienta


CASE, es la mejora de la calidad de los desarrollos
realizados y, en segundo término, el aumento de la
productividad. Para conseguir estos dos objetivos es
conveniente contar con una organización y una
metodología de trabajo, además de la propia
herramienta.

37
1.6 CLASIFICACION 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.

38
1.6 CLASIFICACION 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.

39
1.6 CLASIFICACION DE LAS
HERRAMIENTAS CASE.

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) ofront-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) oback-end, dirigidas a las últimas fases del
desarrollo: construcción e implantación.

40
1.6 CLASIFICACION DE LAS
HERRAMIENTAS CASE.

 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.

41

Вам также может понравиться