SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
MAESTRIA EN
   TECNOLOGIA DE LA INFORMACION

Introducción a la Tecnología Orientada a Objetos




                    La Crisis del Software



 • Fenómeno ocurrido en la década de los 80’s como consecuencia
   del auge de la automatización haciendo uso de computadoras.
 • La mayoría del software se construye a la medida, en vez de
   ensamblar componentes existentes.
 • Los programadores no disponen / usan “componentes” de
   software reutilizables empezar desde cero.
 • “Complejidad del Software”
     “… es una propiedad esencial, no accidental” Brooks
     “… es una característica inherente, por lo tanto debemos tratar
     de administrar la complejidad”
La Crisis del Software


• No terminar los proyectos a tiempo.
• Consumir más presupuesto del planificado.
• Baja productividad.
• Hacer productos de baja calidad.
• Gran cantidad de personal especializado dedicado a labores de
  mantenimiento.
• Usuarios insatisfechos con los sistemas y con los departamentos
  o grupos de desarrollo. Se preguntan:

    ¿Por qué el desarrollo de software es tan costoso?
    ¿Por qué toma tanto tiempo?
    ¿Hay alguna perspectiva de mejora?




           La Complejidad del Software
La Complejidad del Software


4 factores que influyen en la complejidad:
  Complejidad del dominio del problema:
  • Problemas que involucran elementos de gran complejidad.
  • Existencia de requerimientos contradictorios.
  • Distancia entre el usuario y el desarrollador (diferentes
    perspectivas del problema).
  Dificultad de administrar el proceso de desarrollo:
  • Dar la ilusión de simplicidad.
  • Manejo de un grupo de trabajo (problemas de comunicación,
    coordinación e integración).




        La Complejidad del Software



  Flexibilidad exigida al software:
  • Eficiencia versus eficacia.
  • Optimización de recursos versus calidad en la respuesta.
  • Bueno / bonito / barato.

  Mantenimiento del software:
  • Correctivo – corregir errores en programas (20 %).
  • Adaptativo – cambios en los requerimientos (25 %).
  • Perfectivo – tratar de mantener el software operativo (55 %).
Llegada al Caos



A medida que aumentó la complejidad del software requerido, se
redujo las habilidades para manejar la complejidad.

           CAOS

Solución de la Ingeniería de Software:
  •   Tratar el software como una ingeniería.
  •   Uso de metodologías estructuradas.
  •   Mayor participación del usuario.
  •   Pruebas planificadas y documentadas.
  •   Uso de herramientas automatizadas.




                    Llegada al Caos



Un médico, un ingeniero civil y un profesional de la computación
estaban discutiendo sobre cuál era la profesión más antigua del
mundo:
El médico: En la Biblia dice que Dios creó a Eva de la costilla de
Adán, por lo tanto la mía es la profesión más antigua.
El ingeniero civil: Pero en el génesis dice que Dios impuso el
orden y sacó a la tierra del CAOS en que se encontraba en siete
días; esta fue la primera y más espectacular aplicación de
ingeniería civil.
El profesional de la computación: Pero, ¿quién creen ustedes que
creó el CAOS?
Características ideales del Software (McCall)




• Mantenibilidad                                     • Portabilidad
• Flexibilidad                                       • Reusabilidad
• Verificabilidad                                    • Interoperabilidad
                      Revisión       Transición
                         del             del
                      Producto        Producto


                           Características
                           Operacionales


            • Corrección                     • Integridad
            • Fiabilidad                     • Usabilidad
            • Eficiencia




Características ideales del Software (McCall)


Revisión del producto:
• Mantenibilidad: fácil corregir errores.
• Flexibilidad: fácil de modificar.
• Verificabilidad: fácil de probar.

Transición del producto:
• Portabilidad: fácil de transportar entre ambientes.
• Reusabilidad: grado en que el todo o alguna de las partes se
  pueda usar en otros desarrollos.
• Interoperabilidad: fácil de acoplar.
Características ideales del Software (McCall)


 Características operacionales:
 •   Corrección: grado de satisfacción de requerimientos.
 •   Fiabilidad: grado de funcionamiento esperado.
 •   Eficiencia: grado de minimización de recursos.
 •   Integridad: grado de seguridad.
 •   Usabilidad: facilidad de aprendizaje y operación.
 Otros aspectos:
 •   Comprensibilidad: grado de poderse leer y comprender.
 •   Robustez: capacidad de funcionar en condiciones anormales.
 •   Extensibilidad: facilidad de crecer o mejorar.
 •   Modularidad: grado de independencia funcional de cada uno
     de los componentes.




        3 Puntos para traer orden al Caos



 Descomposición:
 • Descomponer el software en partes pequeñas para ser
   refinadas de forma independiente.
 • La complejidad del problema se restringe a la complejidad de
   cada una de las partes.
 • Es necesario hacer una división inteligente.

 Conceptos relacionados

 • Modularidad
 • Programación estructurada
3 Puntos para traer orden al Caos


Abstracción:
• Ignorar los detalles no significativos de cada elemento y
  trabajar con modelos ideales de éstos.
• Brinda enorme poder para manejar la complejidad.
• Ayuda a vencer las limitaciones de nuestra memoria
  intermedia para el manejo de la información.

Conceptos relacionados:

• Tipo Abstracto de Datos
• Conceptualización del Dominio




     3 Puntos para traer orden al Caos


Jerarquía:
• Organizar los elementos en niveles de categoría.
• Relaciones estructurales y semánticas.
• Incrementa el contenido semántico de las piezas de
  información.
• Ayuda a la comprensión del funcionamiento del sistema.

Conceptos relacionados:

• Clasificación / Generalización / tipo de
• Composición / Agregación / parte de
Orientación a Objetos


Fórmula conceptual 1:
 Orientación a Objetos = Descomposición +
                         Abstracción +
                         Jerarquía

 • Descomposición         ¿Cómo hacer que el conjunto de
                          elementos resuelvan el problema?
 • Abstracción            ¿Cómo identificar los elementos
                          basado en los conceptos del
                          problema?
 • Jerarquía              ¿Cómo relacionar los elementos para
                          reducir la complejidad de cada uno de
                          ellos?




                  Orientación a Objetos


 • Surge como una respuesta hacia la crisis del software.
 • Es una nueva forma de pensar usando conceptos del mundo
   real.
 • Significa que el software se organiza como un conjunto de
   objetos discretos cada uno de los cuales incorpora su
   estructura de datos y su comportamiento.
 • “Ejecutar un programa o sistema, es algo tan sencillo como
   crear objetos y disparar mensajes” (A. Goldberg)
 • Término introducido en el léxico con la llegada del lenguaje
   de programación Smalltalk.
 • Conceptos a manejar: clase, objeto, método, mensaje,
   subclase, superclase, instancia, herencia, encapsulamiento,
   polimorfismo, interfaz.
Orientación a Objetos



Descomposición funcional           Orientación a Objetos

Módulos construidos             Módulos construidos
alrededor de las                alrededor de las clases
operaciones
Datos globales o distribuidos   Clases débilmente acopladas
entre los módulos               y sin datos globales
Entrada / Proceso / Salida      Encapsulamiento / Mensajes

Organigramas de flujos de       Diagramas jerárquicos de
datos                           clases




                 Orientación a Objetos




                       DATOS




 MODULOS
Orientación a Objetos




Lea la especificación de un software, que usted desee
construir. Subraye los verbos si desea construir código
procedimental, y los nombres si desea hacer un
programa orientado a objetos

                                               Booch 1989




                 Orientación a Objetos


  Beneficios:

  • Desarrollos más rápidos – basado en la reusabilidad de
    elementos.
  • Calidad más alta – basado en el uso de objetos eficientes y
    eficaces ya existentes.
  • Mantenimiento más fácil – basado en el uso de objetos libres
    de errores.
  • Costos más bajos (programación, diseño y administración).
  • Soporte a sistemas de gran escala.
  • Mejores estructuras de información.
  • Aumento de la adaptabilidad.
Evolución Histórica Lenguajes




Evolución Histórica Metodologías

Contenu connexe

Similaire à 02 -introduccion_a_la_tecnologia_orientada_a_objetos

Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoCAMILO
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de dosteCAMILO
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y CosteCAMILO
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de softwareJose Diaz Silva
 
Ingeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosIngeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosWilfredo Mogollón
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxHawkMartnez
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteCAMILO
 
Refactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a AspectosRefactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a AspectosJuan Carlos Olivares Rojas
 
Arquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptxArquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptxEverestMedinilla3
 
1 El Paradigma De OrientacióN A Objetos
1  El Paradigma De OrientacióN A Objetos1  El Paradigma De OrientacióN A Objetos
1 El Paradigma De OrientacióN A ObjetosHectorMamani
 
Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)Jenyfer Utitiaja
 
Diapositivas inge soft 2
Diapositivas inge soft 2Diapositivas inge soft 2
Diapositivas inge soft 2jorge orlando
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015Lucero Mtz
 

Similaire à 02 -introduccion_a_la_tecnologia_orientada_a_objetos (20)

Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de Costo
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de doste
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y Coste
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
 
Ingeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetosIngeniería de software y el paradigma orientado a objetos
Ingeniería de software y el paradigma orientado a objetos
 
8.conceptos de diseño
8.conceptos de diseño8.conceptos de diseño
8.conceptos de diseño
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de Coste
 
Refactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a AspectosRefactorización de Aplicaciones Orientadas a Objetos a Aspectos
Refactorización de Aplicaciones Orientadas a Objetos a Aspectos
 
Arquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptxArquitectura de Software Capitulo 7.pptx
Arquitectura de Software Capitulo 7.pptx
 
Software
SoftwareSoftware
Software
 
1 El Paradigma De OrientacióN A Objetos
1  El Paradigma De OrientacióN A Objetos1  El Paradigma De OrientacióN A Objetos
1 El Paradigma De OrientacióN A Objetos
 
Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)Rad (desarrollo rápido de aplicaciones)
Rad (desarrollo rápido de aplicaciones)
 
Conferencia_Introducción a la Ingeniería de Software
Conferencia_Introducción a la Ingeniería de SoftwareConferencia_Introducción a la Ingeniería de Software
Conferencia_Introducción a la Ingeniería de Software
 
Diapositivas inge soft 2
Diapositivas inge soft 2Diapositivas inge soft 2
Diapositivas inge soft 2
 
Trabajoartemio
TrabajoartemioTrabajoartemio
Trabajoartemio
 
Ingenieria de software 1 u1 v2
Ingenieria de software 1 u1 v2Ingenieria de software 1 u1 v2
Ingenieria de software 1 u1 v2
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015Apuntes ing-sof-unidad-4-1-2015
Apuntes ing-sof-unidad-4-1-2015
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 

Plus de karlalopezbello

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetoskarlalopezbello
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2karlalopezbello
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1karlalopezbello
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3karlalopezbello
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2karlalopezbello
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1karlalopezbello
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-karlalopezbello
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacionkarlalopezbello
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtualkarlalopezbello
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_karlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfilkarlalopezbello
 

Plus de karlalopezbello (20)

03 -fundamentos_de_la_tecnologia_orientada_a_objetos
03  -fundamentos_de_la_tecnologia_orientada_a_objetos03  -fundamentos_de_la_tecnologia_orientada_a_objetos
03 -fundamentos_de_la_tecnologia_orientada_a_objetos
 
Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2Programacion ii modulo3-leccion2
Programacion ii modulo3-leccion2
 
Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1Programacion ii modulo3-leccion1
Programacion ii modulo3-leccion1
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2Programacion ii modulo2-leccion2
Programacion ii modulo2-leccion2
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-Programacion ii modulo1-leccion1-
Programacion ii modulo1-leccion1-
 
Didactica del chat
Didactica del chatDidactica del chat
Didactica del chat
 
Didactica del foro
Didactica del foroDidactica del foro
Didactica del foro
 
Guia completa de_moodle
Guia completa de_moodleGuia completa de_moodle
Guia completa de_moodle
 
Publicacion de material
Publicacion de materialPublicacion de material
Publicacion de material
 
Sistemas de comunicacion
Sistemas de comunicacionSistemas de comunicacion
Sistemas de comunicacion
 
Actividades en moodle
Actividades en moodleActividades en moodle
Actividades en moodle
 
Plataforma moodle
Plataforma moodlePlataforma moodle
Plataforma moodle
 
Introduccion unegvirtual
Introduccion unegvirtualIntroduccion unegvirtual
Introduccion unegvirtual
 
Guia para montar_el_aula_1_
Guia para montar_el_aula_1_Guia para montar_el_aula_1_
Guia para montar_el_aula_1_
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Configuracion del perfil
Configuracion del perfilConfiguracion del perfil
Configuracion del perfil
 
Transparencias7
Transparencias7Transparencias7
Transparencias7
 
Transparencias5
Transparencias5Transparencias5
Transparencias5
 

Dernier

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 

Dernier (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 

02 -introduccion_a_la_tecnologia_orientada_a_objetos

  • 1. MAESTRIA EN TECNOLOGIA DE LA INFORMACION Introducción a la Tecnología Orientada a Objetos La Crisis del Software • Fenómeno ocurrido en la década de los 80’s como consecuencia del auge de la automatización haciendo uso de computadoras. • La mayoría del software se construye a la medida, en vez de ensamblar componentes existentes. • Los programadores no disponen / usan “componentes” de software reutilizables empezar desde cero. • “Complejidad del Software” “… es una propiedad esencial, no accidental” Brooks “… es una característica inherente, por lo tanto debemos tratar de administrar la complejidad”
  • 2. La Crisis del Software • No terminar los proyectos a tiempo. • Consumir más presupuesto del planificado. • Baja productividad. • Hacer productos de baja calidad. • Gran cantidad de personal especializado dedicado a labores de mantenimiento. • Usuarios insatisfechos con los sistemas y con los departamentos o grupos de desarrollo. Se preguntan: ¿Por qué el desarrollo de software es tan costoso? ¿Por qué toma tanto tiempo? ¿Hay alguna perspectiva de mejora? La Complejidad del Software
  • 3. La Complejidad del Software 4 factores que influyen en la complejidad: Complejidad del dominio del problema: • Problemas que involucran elementos de gran complejidad. • Existencia de requerimientos contradictorios. • Distancia entre el usuario y el desarrollador (diferentes perspectivas del problema). Dificultad de administrar el proceso de desarrollo: • Dar la ilusión de simplicidad. • Manejo de un grupo de trabajo (problemas de comunicación, coordinación e integración). La Complejidad del Software Flexibilidad exigida al software: • Eficiencia versus eficacia. • Optimización de recursos versus calidad en la respuesta. • Bueno / bonito / barato. Mantenimiento del software: • Correctivo – corregir errores en programas (20 %). • Adaptativo – cambios en los requerimientos (25 %). • Perfectivo – tratar de mantener el software operativo (55 %).
  • 4. Llegada al Caos A medida que aumentó la complejidad del software requerido, se redujo las habilidades para manejar la complejidad. CAOS Solución de la Ingeniería de Software: • Tratar el software como una ingeniería. • Uso de metodologías estructuradas. • Mayor participación del usuario. • Pruebas planificadas y documentadas. • Uso de herramientas automatizadas. Llegada al Caos Un médico, un ingeniero civil y un profesional de la computación estaban discutiendo sobre cuál era la profesión más antigua del mundo: El médico: En la Biblia dice que Dios creó a Eva de la costilla de Adán, por lo tanto la mía es la profesión más antigua. El ingeniero civil: Pero en el génesis dice que Dios impuso el orden y sacó a la tierra del CAOS en que se encontraba en siete días; esta fue la primera y más espectacular aplicación de ingeniería civil. El profesional de la computación: Pero, ¿quién creen ustedes que creó el CAOS?
  • 5. Características ideales del Software (McCall) • Mantenibilidad • Portabilidad • Flexibilidad • Reusabilidad • Verificabilidad • Interoperabilidad Revisión Transición del del Producto Producto Características Operacionales • Corrección • Integridad • Fiabilidad • Usabilidad • Eficiencia Características ideales del Software (McCall) Revisión del producto: • Mantenibilidad: fácil corregir errores. • Flexibilidad: fácil de modificar. • Verificabilidad: fácil de probar. Transición del producto: • Portabilidad: fácil de transportar entre ambientes. • Reusabilidad: grado en que el todo o alguna de las partes se pueda usar en otros desarrollos. • Interoperabilidad: fácil de acoplar.
  • 6. Características ideales del Software (McCall) Características operacionales: • Corrección: grado de satisfacción de requerimientos. • Fiabilidad: grado de funcionamiento esperado. • Eficiencia: grado de minimización de recursos. • Integridad: grado de seguridad. • Usabilidad: facilidad de aprendizaje y operación. Otros aspectos: • Comprensibilidad: grado de poderse leer y comprender. • Robustez: capacidad de funcionar en condiciones anormales. • Extensibilidad: facilidad de crecer o mejorar. • Modularidad: grado de independencia funcional de cada uno de los componentes. 3 Puntos para traer orden al Caos Descomposición: • Descomponer el software en partes pequeñas para ser refinadas de forma independiente. • La complejidad del problema se restringe a la complejidad de cada una de las partes. • Es necesario hacer una división inteligente. Conceptos relacionados • Modularidad • Programación estructurada
  • 7. 3 Puntos para traer orden al Caos Abstracción: • Ignorar los detalles no significativos de cada elemento y trabajar con modelos ideales de éstos. • Brinda enorme poder para manejar la complejidad. • Ayuda a vencer las limitaciones de nuestra memoria intermedia para el manejo de la información. Conceptos relacionados: • Tipo Abstracto de Datos • Conceptualización del Dominio 3 Puntos para traer orden al Caos Jerarquía: • Organizar los elementos en niveles de categoría. • Relaciones estructurales y semánticas. • Incrementa el contenido semántico de las piezas de información. • Ayuda a la comprensión del funcionamiento del sistema. Conceptos relacionados: • Clasificación / Generalización / tipo de • Composición / Agregación / parte de
  • 8. Orientación a Objetos Fórmula conceptual 1: Orientación a Objetos = Descomposición + Abstracción + Jerarquía • Descomposición ¿Cómo hacer que el conjunto de elementos resuelvan el problema? • Abstracción ¿Cómo identificar los elementos basado en los conceptos del problema? • Jerarquía ¿Cómo relacionar los elementos para reducir la complejidad de cada uno de ellos? Orientación a Objetos • Surge como una respuesta hacia la crisis del software. • Es una nueva forma de pensar usando conceptos del mundo real. • Significa que el software se organiza como un conjunto de objetos discretos cada uno de los cuales incorpora su estructura de datos y su comportamiento. • “Ejecutar un programa o sistema, es algo tan sencillo como crear objetos y disparar mensajes” (A. Goldberg) • Término introducido en el léxico con la llegada del lenguaje de programación Smalltalk. • Conceptos a manejar: clase, objeto, método, mensaje, subclase, superclase, instancia, herencia, encapsulamiento, polimorfismo, interfaz.
  • 9. Orientación a Objetos Descomposición funcional Orientación a Objetos Módulos construidos Módulos construidos alrededor de las alrededor de las clases operaciones Datos globales o distribuidos Clases débilmente acopladas entre los módulos y sin datos globales Entrada / Proceso / Salida Encapsulamiento / Mensajes Organigramas de flujos de Diagramas jerárquicos de datos clases Orientación a Objetos DATOS MODULOS
  • 10. Orientación a Objetos Lea la especificación de un software, que usted desee construir. Subraye los verbos si desea construir código procedimental, y los nombres si desea hacer un programa orientado a objetos Booch 1989 Orientación a Objetos Beneficios: • Desarrollos más rápidos – basado en la reusabilidad de elementos. • Calidad más alta – basado en el uso de objetos eficientes y eficaces ya existentes. • Mantenimiento más fácil – basado en el uso de objetos libres de errores. • Costos más bajos (programación, diseño y administración). • Soporte a sistemas de gran escala. • Mejores estructuras de información. • Aumento de la adaptabilidad.
  • 11. Evolución Histórica Lenguajes Evolución Histórica Metodologías