You are on page 1of 42

INTRODUCCION A LA INGENIERA DE

SOFTWARE

CLASE I.

CONTENIDO
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.

Definicin de Ingeniera de Software


Historia de la Ingeniera de Software
Caractersticas del Software
Mitos del Software
Capas de la Ingeniera de Software
El proceso de Software
Software de alta calidad
Factores de calidad y productividad

Tpica apariencia
del estudiante
promedio cuando le
preguntan acerca de
Ingeniera de
Software

Introduccin

El trmino de Ingeniera de Software


fue introducido a finales de los 60 a raz de
lacrisis del software. Esta crisis fue el
resultado de laintroduccinde la tercera
generacin del hardware.

El
hardware
dejo
de
ser
un
impedimento
para
eldesarrollode
lainformtica; redujo loscostosy mejoro
lacalidadyeficienciaen
el
software
producido

Introduccin
(continuacin)
La crisis se caracterizo por los siguientesproblemas:
Imprecisin
en
laplanificacindelproyectoy
estimacin de los costos.
Baja calidad del software.

Dificultad
demantenimientodeprogramascon
undiseopoco estructurado, etc.
Por otra parte se exige que el software sea eficaz y
barato tanto en el desarrollo como en la compra.
Tambin se requiere una serie de caractersticas como
fiabilidad, facilidad de mantenimiento y de uso,
eficiencia, etc.

2.1. DEFINICIN DE IS
Fritz Bauer, 1969: Ms que una disciplina o una
parte del conocimiento, La Ingeniera es un verbo, una
palabra de accin, un modo de enfocar el problema.

La Ingeniera del Software es el establecimiento y uso


de principios robustos de la ingeniera a fin de obtener
econmicamente software que sea fiable y que
funcione eficientemente sobre maquinas reales.

DEFINICIN DE IS
Bohem, 1976: Ingeniera del Software es la aplicacin
practica del conocimiento cientfico en el diseo y
construccin de programas de computadora y la
documentacin necesaria requerida para desarrollar,
operar (funcionar) y mantenerlos.
Mills, 1980: La Ingeniera de Software tiene como uno
de sus principales objetivos la produccin de programas
que cumplan las especificaciones, y que se demuestren
correctos, producidos en el plazo y costo adecuado

DEFINICIN DE IS
Meyer, 1988: La Ingeniera de Software es la
produccin de software de calidad.

IEEE 1993: La Ingeniera de Software es la aplicacin


de
un
enfoque
sistemtico,
disciplinado
y
cuantificable hacia el desarrollo, operacin y
mantenimiento del software; es decir, la aplicacin de
Ingeniera de Software.

RESUMIENDO
La ingeniera de software es una aplicacin prctica del
conocimiento cientfico para proveer metodologas y
tcnicas que ayuden a desarrollar sistemas de software a
tiempo, y a su vez que aseguren que el desarrollador
cumpla con las expectativas de calidad y permanezca
dentro del presupuesto.

2.2. HISTORIA DE LA ING DE SW


Ingeniera del Software, es el trmino utilizado por
Fritz Baueren la primera conferencia sobre desarrollo
de software patrocinada por el Comit de Ciencia de la
OTAN celebrada en Garmisch (Alemania), en octubre
de 1968, previamente haba sido utilizado por el
holandsEdsger Dijkstraen su obraThe Humble
Programmer.

Puede definirse segn Alan Davis como "la aplicacin


inteligente de principios probados, tcnicas, lenguajes
y herramientas para la creacin y mantenimiento,
dentro de un coste razonable, de software que
satisfaga las necesidades de los usuarios".

Historia de la ing de sw
(continuacin)
Su origen se debi a que el entorno de desarrollo
de sistemas software adoleca de:
Retrasos considerables en la planificacin
Poca productividad
Elevadas cargas de mantenimiento
Demandas cada vez ms desfasadas frente a las ofertas
Baja calidad y fiabilidad del producto
Dependencia de los realizadores

Historia de la ing de sw
(continuacin)
Esto es lo que se ha denominado habitualmente "crisis
del software", que histricamente se gener en los
siguientes pasos:
- Primera Fase. Los albores (1945-1955)
Programar no es una tarea diferenciada del diseo de
una mquina
Uso de lenguaje mquina y ensamblador.
- Segunda Fase. El florecimiento (1955-1965)
Aparecen multitud de lenguajes
Se pensaba que era posible hacer casi todo.

Historia de la ing de sw
(continuacin)
- Tercera Fase. La crisis (1965-1970)
Desarrollo inacabable de grandes programas
Ineficiencia, errores, coste impredecible
Nada es posible.
- Cuarta Fase. Innovacin conceptual (1970-1980)
Fundamentos de programacin
Verificacin de programas
Metodologas de diseo.
- Quinta Fase. El diseo es el problema (1980-?)
Entornos de programacin
Especificacin formal
Programacin automtica.

Historia de la ing de sw
(continuacin)
Cmo se define crisis?
La palabra crisis se define en el diccionario como "un
punto decisivo en el curso de algo; momento, etapa, o
evento decisivo o crucial". Sin embargo para el software
no ha habido ningn punto crucial, slo una lenta
evolucin.
La crisis en la industria del software permanece durante
muchos aos, lo cual parece una contradiccin para el
trmino. Lo que si se podra decir es quehay un
problema crnico en el desarrollo de software.
Que ha venido originado por una falta de:
Formalismo y metodologa
Herramientas de soporte

Historia de la ing de sw
(continuacin)
Actualmente est surgiendo una gran expectativa ante
la evolucin de laIngeniera del Software, al ir
apareciendo nuevos mtodos y herramientas formales
que van a permitir en el futuro un planteamiento de
ingeniera en el proceso de elaboracin de software.
Dicho planteamiento permitir dar respuesta a los
problemas de:
- Administracin
- Calidad
- Productividad
- Fcil mantenimiento
Este ltimo es uno de los grandes problemas, pues
puede llegar a suponer un importe superior al 60% del
total del coste del software.

Porque se crea la Ingeniera de


Software??
La ingeniera de software se crea debido a las siguientes caractersticas:
El producto debe ser confiable y realizar slo las tareas especificadas en
los requerimientos.
El producto debe ser robusto. Esto quiere decir que el software se
comporta de manera razonable, incluso en circunstancias no anticipadas
desde el principio.
El producto de software debe ser lo ms reutilizable posible, de manera
tal que pueda ser incorporado en otro producto de software si se
requiere.
El producto de software debe ser eficiente en el uso de los recursos del
sistema.

Porque se crea la Ingeniera de


Software??
Se requiere desarrollar el software en una manera que lo haga
evolutivo, de forma tal que se pueda agregar funcionalidad adicional
sin efectos perjudiciales.
El producto de software debe cumplir con los requerimientos de
rendimiento especificados, es decir, debe cumplir algunas de las
restricciones relacionadas al rendimiento.
El producto de software tendr mayor valor si es portable, es decir
que puede trabajar bajo diferentes plataformas de software y
ambientes (hardware, sistemas operativos, etc.).
El producto de software debe ser utilizable, es decir, el aprendizaje
de su uso debe ser los suficientemente sencillo por parte de personas
no especialistas.

Ingeniera de Software:
Conceptos Basicos
Cul es la diferencia entre un programador y un Ingeniero de
Software?
Cul es la diferencia entre un Ingeniero de Software y un
Ingeniero de Sistemas?
Cul es la diferencia entre la Ingeniera de Software y la
Computacin ?
Que es el software ?
Que es un proceso de software ?
Que es un modelo de software?

Programador (funcionamiento) vs.


Ing. de software (funcionalidad)
Un ingeniero de softwareno se enfoca en entender como funciona el
programa dentro de un sistema operativo, o por as decirlo, dentro de la
computadora. Le importa que el producto (software) entregado cumpla con
los requerimientos definidos, de forma que le entregue valor al cliente.
El programadorsabe como funciona el software, es decir, que algoritmos
utiliza, como maneja la memoria, manejo de recursos del computador para
poder
realizar
alguna
tarea
o
procedimiento
computacional.
Esta centrado en la tecnologa utilizada, que involucra tanto el lenguaje
utilizado, frameworks, APIs, cosa que el cliente no sabe y no quiere saber,
pero es la estructura que sostiene todo el funcionamiento del software que
maneja su informacin.
Por lo anterior, se resume en que el ingeniero de software debe obtener los
requerimientos del cliente(entender el negocio), paraastrasladarlos a un
esquema en el que el programador sabe que es lo que debe hacer para que
se logre producir el software.

Diferencia entre Ingeniera de Software y


Computacion
La computacin concierne a la teora y fundamentos de cualquier
sistema de computo, sea de hardware o de software.
La Ingeniera de software concierne solo al desarollo de sistemas o
productos de software
La Ingeniera de Software todava esta lejos de ser una ciencia como
los son la Qumica, la Ingeniera Civil o la Electrnica.

Ingeniera de Sistemas e
Ingeniera de Software
La Ingeniera de Sistemas concierne a todos los
aspectos del desarrollo de sistemas basados en
cmputo, que incluyen hardware, software y el
proceso de Ingeniera. La Ingeniera de Software
es solo parte de este proceso.

Que es el Software ?
Programas de cmputo y su documentacin asociada

Sistemas o Productos de software grandes y complejos.


Que contiene el software.
Que tipos de software hay ?
Cual es el costo del software.
Como se desarrolla el software ?
Como saber si un software tiene calidad.

Productos de Software
Productos genricos.
Productos que son producidos por una organizacin
para ser vendidos cado.
Productos hechos a medida.
Sistemas que son desarrollados bajo pedido a un
desarrollador especfico.
La mayor parte del gasto del software es en productos genricos,
pero hay ms esfuerzo en el desarrollo de los sistemas hechos a
medida.

Caractersticas deseables de los


Productos de Software
Mantenibles.
Debe ser posible que el software evolucione y que
siga cumpliendo las especificaciones.
Confiabilidad.
El software no debe causar danos fsicos o
econmicos en el caso de fallos.
Eficiencia.
El software no debe desperdiciar los recursos del
sistema.
Utilizacin adecuada. (Usabilidad)
El software debe contar con una interfaz de usuario
adecuada y su documentacin.

Importancia de las caractersticas


del producto
La importancia relativa de las caractersticas depende en el tipo de
producto y en el ambiente en el que ser utilizado.
En algunos casos, algunos atributos pueden dominar.
En sistemas de seguridad crticos de tiempo real, los atributos
clave pueden ser la confiabilidad y la eficiencia.
Los costos tienden a crecer exponencialmente si son requeridos altos
niveles de alguna caracterstica.

Que contiene el software ?


El software contiene:
Lneas de cdigo de algn lenguaje ?
Instrucciones de computadora.
Descripcin de las estructuras de datos.
Algoritmos.
Procedimientos y funciones.
Componentes de software.

Que tipos de software hay ?


Por su estructura:

Funcionales.
Orientados a objetos.
Orientados a listas.
Orientados a componentes.

Por su funcin:

Programas o Sistemas de Usuario


Interfaces Hombre-Maquina.
Herramientas de Software.
Libreras.
Sistemas de uso genrico: Compiladores, S.Os,
Procesadores de Texto, etc.
Bases de Datos.
Sistemas basados en Web.

Que tipos de software hay ?


Por su plataforma de computo:

Sistemas embebidos.
Sistemas de computo distribuido.
Sistemas de computo paralelo.
Sistemas de tiempo real.
Sistemas basados en Chips.
Wearable computing systems.
Sistemas de computo ubiquos.

Costos del Software


Los costos del software a menudo dominan al costo del sistema. El
costo del software en un PC es a menudo mas caro que la PC.
Cuesta mas mantener el software que desarrollarlo. Para sistemas con
una larga vida, este costo se multiplica.
La Ingeniera de Software concierne a un desarrollo efectivo en
cuanto a costes del software.

Otros aspectos del Software


Las economas de los pases desarrollados dependen en gran parte
del software.
Mas y ms sistemas son actualmente controlados por software.
La Ingeniera de Software concierne a teoras, mtodos y
herramientas para el desarrollo profesional de software.
El gasto en La Ingeniera de Software, representa un alto porcentaje
del PIB de los pases desarrollados.

2.3. CARACTERSTICAS DEL


SOFTWARE
El software se desarrolla o construye;
no se
fabrica.
Aunque existen similitudes entre el desarrollo del
software y la construccin del hardware, ambas
actividades son fundamentalmente diferentes.
En ambas actividades la buena calidad se adquiere
mediante un buen diseo, pero la fase de construccin
del hardware puede introducir problemas de calidad
que no existen (o son fcilmente corregibles) en el
software.
Ambas actividades dependen de las personas, pero la
relacin entre las personas dedicadas y el trabajo
realizado es completamente diferente para el
software.
Ambas actividades requieren la construccin de un
producto pero los enfoques son diferentes.

2.3. CARACTERSTICAS DEL


SOFTWARE
El software no se desgasta
Se
estropea

ndice de Fallos

Mortalidad
Infantil

Tiempo

Curva de Baera
Pressman Roger S. Ingeniera del software, Ed. Mc Graw Hill, 5 ed

Curva de fallos para el Software

ndice de fallos

Incremento del ndice de fallos


por efectos de laterales

Cambio

Curva real

Tiempo
Pressman Roger S. Ingeniera del software, Ed. Mc Graw Hill, 6 ed

2.3. CARACTERSTICAS DEL


SOFTWARE
Aunque
la
industria
tiene
una
tendencia hacia la construccin por
componentes, la mayora del software
an se construye a la medida.

En el mundo del hardware, la


reutilizacin de componentes es una
parte natural del proceso de ingeniera.
En el mundo del software es el inicio.

2.4. MITOS DEL SOFTWARE


En la actualidad, la mayora de los profesionales
reconocidos en la ingeniera del software identifican los
mitos en su real dimensin: actitudes equivocadas que han
causado problemas serios a los administradores y al
personal tcnico por igual. Sin embargo, las antiguas
actitudes y viejos hbitos son difciles de modificar, por lo
que an subsisten creencias falsas sobre el software.

Mitos de los administradores


Mitos de los Clientes
Mitos de los Desarrolladores

Mitos de los administradores


Mito 1. Ya se tiene un libro lleno de estndares y
procedimientos para la construccin de software.
Esto proporcionar a mi gente todo el conocimiento
necesario?
Mito 2. Si se est atrasado en el itinerario es posible
contratar ms programadores para as terminar a
tiempo.
Mito 3. Si decido subcontratar el proyecto de software a
un tercero, puedo relajarme y dejar que esa
compaa lo construya.

Mitos de los Clientes


Mito 1.
Un enunciado general de los objetivos es
suficiente para comenzar a escribir programas; los
detalles se pueden afinar despus.

Mito 2.
Los requerimientos del proyecto cambian de
manera continua, pero el cambio puede ajustarse con
facilidad porque el software es flexible.

Mitos de los Desarrolladores


Mito 1. Una vez que el programa ha sido escrito y puesto a
funcionar, el trabajo est terminado.
Mito 2. Mientras el programa no se est ejecutando, no
existe forma de evaluar su calidad.
Mito 3. El nico producto del trabajo que puede entregarse
para tener un proyecto exitoso es el programa en
funcionamiento.
Mito 4. La Ing de Sw obligar a emprender la creacin de
una documentacin voluminosa e innecesaria y de
manera invariable tornar ms lento el proceso.

2.5. CAPAS DEL SOFTWARE

La Ingeniera del Software es una tecnologa estratificada, y


debe estar sustentada en un compromiso con la calidad.

Capa del Proceso


Herramientas
Mtodos
Proceso
Un enfoque de calidad

Las reas claves del Proceso forman la base del control de


gestin de proyectos del software y establecen contexto en
el que se aplican los mtodos tcnicos, se obtienen
productos del trabajo (modelos, documentos, datos,
informes, formularios, etc.), se establecen hitos, se segura
la calidad y el cambio se gestiona adecuadamente.

Capa de los Mtodos


Herramientas
Mtodos
Proceso
Un enfoque de calidad

Los mtodos de la Ingeniera del Software indican como


construir tcnicamente el software. Los mtodos abarcan una
gran gama de tareas que incluyen anlisis de requisitos,
diseo,
construccin
de
programas,
pruebas
y
mantenimiento.

Capa de Herramientas
Herramientas
Mtodos
Proceso
Un enfoque de calidad
Las herramientas de la Ingeniera de Software proporcionan un
enfoque automtico o semi-automtico para el proceso y para los
mtodos. Cuando se integran herramientas para que la
informacin creada por una herramienta la pueda utilizar otra, se
establece un sistema de soporte para el desarrollo del software
llamado Ingeniera del Software Asistida por Computadora (CASE).