PDF de programación - Programación Orientada a Objetos: Lenguajes, Metodología y Herramientas - Programación Orientada a Objetos

Imágen de pdf Programación Orientada a Objetos: Lenguajes, Metodología y Herramientas - Programación Orientada a Objetos

Programación Orientada a Objetos: Lenguajes, Metodología y Herramientas - Programación Orientada a Objetosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.411 visualizaciones desde el 14 de Enero del 2017
466,1 KB
24 paginas
Creado hace 16a (21/04/2008)
Programación Orientada a Objetos:

Lenguajes, Metodología y Herramientas

Master de Computación

PROGRAMACION ORIENTADA A OBJETOS

T
AS

M

J.M. Drake

Notas:

1

LA CRISIS DEL SOFTWARE.

Conjunto de tópicos relacionados con la problemática
asociada al desarrollo de software:

"Construir una aplicación software es una tarea mucho más

compleja de lo que parece al iniciarla"

Aspectos de esta problemática son:
Resposiveness: No satisfacen las espectativas del usuario.
Reliability: Presentan fallos y su depuración es muy difícil.
Cost: El costo es difícil de evaluar y mas alto de lo esperado.
Modificability: Son productos muy rígido y difíciles de mantener.
Timeless: Requieren para su ejecución mas tiempo del previsto.
Transportability: Hay problemas para migrar entre plataforma.
Efficiency: Sólo utilizan una parte de la capacidad de hardware.

OO_08: I.1 Programación Orientada a Objetos. José M.Drake

2

Notas:

Desde 1968 se identifica con la denominación "crisis del software" el conjunto de tópicos
relacionados con la problemática asociada con el desarrollo de software. Aspectos identificados con
esta crisis son:
* Responsiveness: Frecuentemente los sistemas basados en computador no satisfacen las
expectativas que tiene el usuario.
* Reliability: Los programas suelen presentar fallos, y su depuración es muy difícil de garantizar.
* Cost: El costo del software es de evaluación difícil, y es habitual que resulte mas caro de lo que se
preveía.
* Modifiability: Los programas son productos muy rígidos y de difícil modificación. El costo de su
mantenimiento es muy alto.
*Timeless: El desarrollo del software requiere siempre más tiempo que el previsto.
*Transportability: Cuando se traslada un software de un equipo a otro, siempre se presentan
problemas de adaptación.
*Efficiency: Los programas utilizan solo una fracción pequeña de la capacidad del hardware en que
se ejecuta.
El espíritu de la crisis del software se puede resumir en la frase: "Construir una aplicación software
es una tarea mucho más compleja de lo que de antemano parece"
Un pequeño paquete con algún millar de líneas de código es es asequible mentalmente a un
programador,sin embargo, un paquete mediano o grande con cientos de miles de líneas, desborda la
capacidad de cualquier programador. En estos casos se hace crítico la problemática de la crisis del
software.

2

CAUSAS DE LA CRISIS DELSOFTWARE.

Causas profundas de la crisis del software son:
La metodología en cascada que linealiza el proceso de desarrollo.

La metodología de modularización estructurada hace que el software

sea inflexible y difícil de mantener.

Programadores sin formación en ingeniería software.

Las empresas e instituciones tienen inercia a introducir las

innovaciones.

La estructura secuencial de Von Newman no se adapta a los problemas

que se abordan.

OO_08: I.1 Programación Orientada a Objetos. José M.Drake

3

Notas:

Causas profundas que dan lugar a la crisis del software son:

* El paradigma de diseño estructurado de software es de naturaleza lineal, y es difícil
evaluar a nivel de proyecto el efecto posterior de las decisiones que se toman en cada fase
del ciclo de vida de un software.
* El conjunto de programadores que actualmente desarrollan software no tienen una
formación o no aplican la ingeniería software.
* Las empresas y organizaciones que desarrollan software tienen una gran inercia a
introducir novedades de eficacia demostrada.
* La estructura secuencial de Von Newmann y el estilo de programación que induce, no
es el adecuado a los problemas que se abordan.

3

Complejidad del software

El desarrollo de software es una tarea muy compleja.

La complejidad del software es una característica esencial.

La ingeniería software debe abordar la complejidad.

Los componentes de la complejidad del software son:
Complejidad de los problemas que resuelve.
Naturaleza del proceso de desarrollo del software.
Libertad de la representación abstracta de los problemas.
La naturaleza discreta del software.

OO_08: I.1 Programación Orientada a Objetos. José M.Drake

4

Notas:

El análisis, especificación, diseño, codificación, verificación y validación de un programa software que
resuelve un problema de la vida real es una tarea que requiere una considerable capacidad intelectual.

La complejidad del software es una característica inherente a la propia naturaleza del software y no es una
característica accidental consecuencia de la forma en que se desarrolla.

Es mas rentable que la ingeniería software centre su esfuerzo en desarrollar metodologías con capacidad
para abordar su complejidad inherente, que se oriente en buscar procedimientos que traten de reducirla.

La complejidad inherente del software tiene cuatro componentes básicas:

•La propia complejidad de los problemas que se abordan con la aplicación software.
•La naturaleza del proceso de desarrollo del software que se utiliza.
•La libertad que proporciona la formulación abstracta de los problemas concretos que se resuelven.
•La naturaleza discreta del software que proporciona respuestas cualitativamente diferentes por
cambios cuantitativamente pequeños en el código o en los datos.

4

Hardware, algorítmo e ingeniería

Ingeniería
hardware

Ingeniería
algoritmos

Ingeniería
proyectos

Costo del hardware

Costo del software

100%

80%

60%

40%

20%

0%

1950

1960

1970

1980

1990

2000

OO_08: I.1 Programación Orientada a Objetos. José M.Drake

5

Notas:

5

Complejidad de los problemas

Las aplicaciones software actuales resuelven
problemas muy complejos:
Requieren enormes cantidades de componentes.
Hay que dar coherencia a cientos de requerimientos.
La especificación del problema es informal.
Pueden requerir especificaciones no funcionales:

Facilidad de uso
Prestaciones temporales de respuesta.
Costo
Tiempo de vida útil.
Fiabilidad.
....

OO_08: I.1 Programación Orientada a Objetos. José M.Drake

6

Notas:

Los problemas concretos que actualmente se resuelven con aplicaciones software tienen una
complejidad muy alta. Esta complejidad es consecuencia de:

•Requieren ensamblar miles o cientos de miles de componentes. La ingeniería software es la
ingeniería que actualmente aborda los problemas con mayor número de componentes.
•Debe dar coherencia a cientos de requerimientos que frecuentemente compiten entre si y
que incluso pueden presentar aspectos contradictorios.
•La formulación de sus requerimientos suele ser de naturaleza informal. Se utilizan muchas
hojas de texto que describen con detalle el problema, pero habitualmente se desconoce la
solución que se busca.
•A los programas se le requieren muchos requerimientos que son de naturaleza no funcional
y que son difíciles de cuantificar, tales como:

•Facilidad de uso.
•Prestaciones de respuesta de naturaleza temporal.
•Costo.
•Tiempo de vida útil.
•Seguridad de operación o fiabilidad.
•Etc.

6

Complejidad por el proceso de desarrollo.

Una aplicación software requiere manejar cientos de módulos
y un programador puede manejar de forma ágil solo algunos
componentes.

La herramientas de nueva generación generan una falsa
ilusión de simplicidad.

Un proyecto software requiere ser desarrollado por un
equipo, requiere especialmente métodos de ingeniería.

No se ha generalizado estrategias productivas basadas en
ensamblado de componentes.

OO_08: I.1 Programación Orientada a Objetos. José M.Drake

7

Notas:

La metodología que se utiliza para desarrollar una aplicación software frecuentemente no es

adecuada a la complejidad inherente que posee:

• Un proyecto software de mediana complejidad tiene decenas de miles de líneas de

código y cientos de módulos diferentes que se deben concebir, diseñar y acoplar
correctamente para que la aplicación funcione. Esto contrasta con la capacidad mental
de un programador humano que solo es capaz de manejar de forma ágil y segura un
número muy pequeño de componentes.

• La introducción de las metodologías software de últimas generación (lenguajes,

sistemas operativos, generadores de código, etc.) generan la ilusión de simplicidad, pero
la complejidad real continua dentro y bajo cualquier problema el programador queda
impotente.

• Un proyecto software de mediana complejidad requiere la participación de un equipo de

programadores y para que no se convierta en un caos se requiere que se apliquen
sistemáticamente métodos de ingeniería de proyectos.

• En la ingeniería software no se ha generalizado el uso de estrategias de diseño de

sistemas complejos utilizando componentes básicos estandarizados. Cada proyectos se
aborda desde la nada, como si no tuviese nada en común con otros proyectos.

7

Libertad en la representación abstracta.

Dominio del problema

Problema del
mundo real

Solución en el
mundo real

Resultados
del problema

Representación
abstracta del
problema

Interpretación
de los datos
salida

Formulación
informática

Solución en el
computador

Datos de salida

Dominio informático

OO_08: I.1 Programación Orientada a Objetos. José M.Drake

8

Notas:

La complejidad de los problemas que se resuelven es consecuencia del desacoplo entre el lenguaje y
los conceptos del dominio del problema que se resuelve y los del dominio informático.

El cliente que plantea el problema y el ingeniero que lo resuelve mediante una aplicación software,
manejan diferentes interpretaciones del problema:
•Tiene diferente visión de su naturaleza.
•Conciben soluciones diferentes.
•Intercambian entre ellos especificaciones muy complejas.

P
  • Links de descarga
http://lwp-l.com/pdf1105

Comentarios de: Programación Orientada a Objetos: Lenguajes, Metodología y Herramientas - Programación Orientada a Objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad