Está en la página 1de 40

Universidad Bolivariana de Venezuela

P.F.G. Informática para la Gestión Social


U.C. Ingeniería del software

Ingeniería del Software

Realizado por:
Profa. Cruz Marina Medina

Agosto, 2006
1
¿ Que es la IS ?

Disciplina que trata los aspectos


concernientes al desarrollo de sistemas de
software complejos y de calidad, que
requiere para su construcción de :

- Un equipo de personas
- Procesos rigurosos, sistemáticos y controlables
(modelos y métodos)
- La utilización de herramientas.

2
¿ Que es la IS ?

Una definición precisa aun no ha sido contemplada en los


diccionarios, sin embargo se pueden citar las enunciadas por algunos de
los más prestigiosos autores:

1 - Ingeniería de Software es el estudio de los principios y metodologías


para el desarrollo y mantenimiento de sistemas software (Zelkovitz,
1978)

2 - Ingeniería de software es la aplicación práctica del conocimiento


científico al diseño y construcción de programas de computadora y a la
documentación asociada requerida para desarrollar, operar y
mantenerlos. Se conoce también como Desarrollo de Software o
Producción de Software ( Bohem, 1976).

3 - Ingeniería de Software trata del establecimiento de los principios y


métodos de la ingeniería a fin de obtener software de modo rentable, que
sea fiable y trabaje en máquinas reales (Bauer, 1972).

3
IS: disciplina de ingeniería

 Actividad de grupo
 Sustentada en principios
 Con procesos bien fundamentados
 Utiliza herramientas

•Application of a systematic, Construir


disciplined, quantifiable productos
approach to the development,
operation, and maintenance of
de calidad
software (IEEE 1990)

4
¿Por qué es una ingeniería?

Considera el desarrollo de sistemas de


software como un proceso industrial de una
forma similar al proceso de construir
edificios.

5
IS: disciplina de ingeniería

 Gestión
 Organización
 Herramientas
 Teorías
 Métodos el software es un
producto complejo y su
 Técnicas. construcción es una actividad
de ingeniería

6
Actividades en la IS

 Gestión del desarrollo de software


- planificación, recursos, organización,
estimación de costos, gerencia de riesgos,
etc.

 Desarrollo de software
- análisis, diseño, implementación, etc.

7
EVOLUCION DE LA IS

La Evolución y Perspectivas de la Ingeniería del Software


Posteriormente, desde mediados de los 60 hasta finales de los 70 se
caracterizó por el establecimiento del software como un producto que
se desarrollaba para una distribución general.

En esta época nació lo que se conoce como el mantenimiento del


software que se da cuando cambian los requisitos de los usuarios y se
hace necesaria la modificación del software.

A continuación, surge una etapa que se caracteriza por la aparición


de una serie de técnicas como la Programación Estructurada y las
Metodologías de Diseño que solucionan los problemas anteriores.

8
Contexto : década 50

 Hardware: mainframes, cintas magnéticas.


Costos altos
 Lenguajes: ensambladores, Fortran
 Primeros compiladores (segunda mitad)
 Interfaces: Bach.

Se resaltan características o sucesos relevantes

9
Contexto : década 50
 Mainframes  Cinta magnética

10
Evolución de la IS (década 50)

 Desarrollo de software = desarrollo de


programas
 Actividad individual
 Desarrollador = usuario
 Aplicaciones con distribución reducida
 Resolver problemas científicos y de
ingeniería

“...codificar y depurar...”
11
Contexto : década 60

 Hardware: mainframes comerciales,


almacenamiento en discos magnéticos,
minicomputadores. Costos altos
 Programación orientada a función
 Lenguajes: Cobol, PL/I, Simula 67
 Interfaces: Bach.

Se resaltan características o sucesos relevantes

12
Contexto : década 60

La Burroughs 5500

13
Evolución de la IS (década 60)

 Actividad de grupo
 Desarrollador ‡ usuario
 Desarrollo de software para mercadeo
 Resolver problemas complejos en
diferentes dominios, además de científicos
y de ingeniería
 Programación orientada a función.

14
Contexto : década 70

 Hardware: mainframes, minicomputadores,


microcomputadores, surgen los PC
 Lenguajes: COBOL, PL/I, Pascal, Prolog
 Métodos: programación estructurada,
refinamiento paso a paso.
 Computación distribuida, Interfaces
basadas en Lenguajes de Comando.

15
Evolución de la IS (década 70)
 Desarrollo de la tecnología
 Actividad de grupo
 Desarrollador ‡ usuario
 Desarrollo de software para mercadeo
 Diversidad del dominio de aplicaciones
 Programación orientada a módulos
 Modelo de la cascada .

16
Evolución de la IS (década 70)

Commodore CBM
3032

17
¿Qué ocurre en la década 70?

Crisis del
software!!

18
Evolución: década de los 80
primera mitad – segunda mitad
 Hardware: computadores  Hardware: Aumento
personales, primeras considerable de la venta y
estaciones de trabajo, uso de computadores
redes locales personales, estaciones de
 Lenguajes: C, Ada trabajo, redes locales y
 Paradigma de globales, Internet,
programación: arquitecturas avanzadas
programación  Lenguajes: C++, Standard ML
estructurada, modular  Paradigma de
 Herramientas programación: irrumpe la
interactivas, interfaces programación OO
gráficas (GUI)  Computación cliente-
servidor
19
Evolución: década de los 80
primera mitad – segunda mitad
 Hardware: computadores  Hardware: Aumento
personales, primeras considerable de la venta y
estaciones de trabajo, uso de computadores
redes locales personales, estaciones de
 Lenguajes: C, Ada trabajo, redes locales y
 Paradigma de globales, Internet,
programación: arquitecturas avanzadas
programación  Lenguajes: C++, Standard ML
estructurada, modular  Paradigma de
 Herramientas programación: irrumpe la
interactivas, interfaces programación OO
gráficas (GUI)  Computación cliente-
servidor
20
Evolución de la IS (década 80)

 El usuario se incorpora al proceso de


desarrollo de software
 Relevancia de las interfaces de usuario
 Aumento exponencial del número y tipo de
usuarios
 Demanda creciente de aplicaciones
 Resolver problemas en todos los dominios
 Inicio de las aplicaciones basadas en la
tecnología Internet .

21
Contexto : década 90

 Hardware: masificación del uso de los


computadores personales, arquitecturas
paralelas, multimedia
 Redes de computadoras (LAN, WAN..)
 Lenguajes: Orientados a objetos, visuales
(Java, VisualC++, HTML,..)
 Paradigma de programación: OO, patrones y
framework
 Crecimiento de Internet y el Web .

Se resaltan características o sucesos relevantes


22
Evolución de la IS (década 90)

 Los productos se insertan en la


globalización
 El ciberespacio introduce nuevos tipos de
aplicaciones: comercio electrónico,
educación a distancia,...
 Ambientes colaborativos
 El Web como infraestructura de las
aplicaciones corporativas (Intranets) .

23
Contexto : nuevo milenio

 Hardware: dispositivos moviles,


computación ubicua
 Redes de computadoras (inalambricas..)
 Paradigma de programación: modelos
basados en componentes
 Crecimiento de Internet y la Web .

Se resaltan características o sucesos relevantes


24
Factores que influyen en los
cambios en IS
Software libre

Redes de
Tecnologías Computadores
Emergentes

Masificación y variedad de los


microcomputadores y accesorios Interfaces de usuario.

Tiempo de desarrollo
Costos
25
Complejidad del software

Los sistemas complejos:

 No presentan todas las funcionalidades


requeridas por los usuarios
 Requieren recursos excesivos para su
ejecución
 Se exceden en costos de desarrollo
 No pueden evolucionar

26
Complejidad del software

La complejidad inherente del sw se deriva


de:
 La complejidad del dominio del problema
 Las funcionalidades necesarias son difíciles de
comprender, además existen requerimientos no
funcionales como facilidad de uso, eficiencia,
costo, confiabilidad que cambian en el tiempo.
 Usuarios y desarrolladores tiene diferentes
perspectivas de la naturaleza del problema y de
su solución.

27
Complejidad del software

 Existe dificultad para gerenciar el proceso de


desarrollo, ya que:
- Más desarrolladores = comunicaciones mas
complejas y coordinación dificil
- Flexibilidad: un desarrollador construye todos
los elementos que requiere; falta de
standares.

28
Problemática del desarrollo de
software Desde la década 70
 Crecimiento de la demanda de nuevos
productos
 Incumplimiento en los tiempos de entrega
de los productos de software
 Incumplimiento de los presupuestos
asignados a los proyectos
 Falta de métodos para la producción de
software complejo
 Dificultad y altos costos para el
mantenimiento del software existente
 Carencia de buenas especificaciones de
requerimientos
 ..... 29
Los requerimientos no son estables

 El mercado cambia
constantemente.

 La tecnología cambia

 Las metas de los usuarios


cambian

30
Principios en la IS

 Los principios forman la base de


métodos, técnicas, metodologías y
herramientas
 Seis principios que pueden ser usados
en todas las fases del desarrollo de
software
 Modularidad es el principio clave que
soporta el diseño del software

31
Una representación visual

herramientas

Methodologies
metodologías

métodos
y técnicas

Principles
principios

32
Principios en la IS

1. Rigor y formalidad
2. Abstracción
3. Modularidad
4. Anticipación al cambio
5. Generalidad
6. Incrementalidad.

Principios aplica al proceso y al producto

33
Principios: Rigor y Formalidad

 Significa ...
seguir procesos sistemáticos y
verificables en el proceso de desarrollo
de software

IMPLICACIONES:

• La formalidad es la base de
automatización de procesos

• Principio esencial para obtener


productos reusables
34
Principios: Abstracción

 Significa...
Aplicar un proceso mental o intelectual
que permite identificar lo relevante e
ignorar los detalles

IMPLICACIONES:
• percepción del qué/cómo (la
separación de intereses )
• percepción del todo/partes
(modularidad)

35
Principios. Modularidad

 Un sistema complejo puede ser dividido


en piezas más simples llamadas módulos

 Un sistema que está conformado por


módulos se dice que es modular

36
Principios: Modularidad

modularidad adecuada

 Alta Cohesión del módulo


(el módulo es una unidad significativa)
 Bajo Acoplamiento entre módulos
(mínimas interacciones entre ellos)

37
Principios:
Anticipación al cambio
 Significa:
La capacidad de prever cómo y dónde
pueden ocurrir los cambios

• La aplicación de este principio es


altamente apreciado en la etapa
de mantenimiento

• Es un principio relevante para el


desarrollo de componentes
reusables
41
Principios: Generalidad

Significa:
buscar la solución más amplia
(que englobe los casos específicos)

• Busca la solución más amplia


para problemas específicos
• La solución general puede ser
menos eficiente o más
costosa
• Principio importante para
desarrollar productos
reusables.
42
Principios: Incrementalidad

Significa:
Construcción del producto por
aproximaciones sucesivas y/o por
componentes (partes)

• Desarrollo de prototipos para los


componentes críticos
• Útil para desarrollo de aplicaciones
no precisas, donde no están bien
definidos los requerimientos.

43

También podría gustarte