Ingeniera del Software III 2015 Dr Horacio Kuna

  • Slides: 25
Download presentation
Ingeniería del Software III 2015 Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero

Ingeniería del Software III 2015 Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Perspectiva histórica del desarrollo d software n Década 50 -60: n n n “Software

Perspectiva histórica del desarrollo d software n Década 50 -60: n n n “Software como un añadido”. Desarrollo artesanal, a medida. Lenguajes de bajo nivel. n Década 80 -90: n n n Década 60 -70: n n n Software como producto. Década lenguajes y compilación. “Crisis del software”. n Década 70 -80: n n n Programación estructurada. Ingeniería del Software. Primeros métodos estructurados. AUMENTAN los problemas del desarrollo de software: è Subexplotación del potencial del hardware è Incapacidad de atender a la demanda è Incapacidad de mantener el software existente Tecnología de SGBDs, SOs. . . Nuevos paradigmas de programación y de producción de programas: n OO n C/S n 90’s - actualidad: n n n Análisis/Diseño OO. Tecnología CASE Componentes y reutilización Interoperabilidad (CORBA, . NET. . . ) Internet n ISw. distribuida n repositorios de componentes reutilizables n e-business; e-commerce n. . . Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Características y evolución del software n n n n programas archivos de configuración documentación

Características y evolución del software n n n n programas archivos de configuración documentación de la estructura del sistema manuales de instalación y uso sitios web con información y actualizaciones tipos de software n productos genéricos n n sistemas producidos por una organización y que se venden en el mercado abierto sistemas gestores de bases de datos, procesadores de texto, paquetes gráficos, . . . la organización controla la especificación productos personalizados n n n desarrollados específicamente para un cliente aplicaciones de negocio, sistemas de control de tráfico aéreo, control de procesos de fabricación, . . . el cliente controla la especificación de la aplicación Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

naturaleza y problemas del desarrollo de software n El software como elemento lógico. n

naturaleza y problemas del desarrollo de software n El software como elemento lógico. n Se desarrolla, no se fabrica: n n n Calidad del diseño. Costes más importantes en la ingeniería Gestión especial de los proyectos Se “deteriora” con el mantenimiento Desarrollo a medida (ausencia de componentes) La “crisis” del software: problemas que aparecen en el desarrollo del software al desarrollar, mantener y atender la demanda de nuevas aplicaciones. Sin tiempo para recoger datos históricos Calidad Planificación y estimaciones imprecisas Dificultad de mantener el software existente Insatisfacción del cliente Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M Baja productividad

INVERSION EN DESARROLLO DE SISTEMAS SOFTWARE Dr. . Horacio Kuna – Lic. Sergio Daniel

INVERSION EN DESARROLLO DE SISTEMAS SOFTWARE Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Curvas de fallos HW SW Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero

Curvas de fallos HW SW Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

naturaleza y problemas del desarrollo de software n Causas de la crisis del software

naturaleza y problemas del desarrollo de software n Causas de la crisis del software n n n Naturaleza lógica del software Mala gestión de los proyectos ( ausencia de datos, deficiente comunicación, . . . ) Ausencia de entrenamiento formal en nuevas técnicas (programadores vs. ingenieros de software) Resistencia al cambio Mitos del software: MITOS DE GESTIÓN - Uso de estándares - Uso de herramientas - Mala planificación: aumento de programadores MITOS DEL CLIENTE MITOS DE LOS DESARROLLADORES - Programa funcionando = fin del trabajo - Calidad = el programa se ejecuta sin errores - Entrega al cliente: programa funcionando - Requisitos establecidos como una declaración general de objetivos - Flexibilidad del software ante los cambios Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Desarrollo del software. Comunicación compleja Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero

Desarrollo del software. Comunicación compleja Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M Origen: desconocido

la ingeniería del software n definiciones n n establecimiento y uso de principios de

la ingeniería del software n definiciones n n establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico, fiable, eficiente y que satisfaga las necesidades del usuario disciplina que comprende todos los aspectos de la producción de software, desde las etapas iniciales hasta el mantenimiento: n n n “disciplina de ingeniería”: aplicación de teorías, métodos y herramientas para solucionar problemas, y teniendo en cuenta restricciones financieras y organizativas “todos los aspectos de producción”: comprende procesos técnicos del desarrollo y actividades como la administración de proyectos, desarrollo de herramientas, métodos y teorías actividad del IISS n n Gestion Desarrollo Control Operacion Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

La Ingeniería del Software n Ingeniería del software: Establecimiento y uso de principios de

La Ingeniería del Software n Ingeniería del software: Establecimiento y uso de principios de ingeniería robustos, orientados a garantizar la obtención de software económico, fiable y eficiente sobre máquinas reales. n Métodos n Herramientas n Procedimientos Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

otros conceptos de la ingeniería del software n notaciones, métodos y metodologías n n

otros conceptos de la ingeniería del software n notaciones, métodos y metodologías n n notación: conjunto de reglas gráficas o de texto para representar un modelo (UML, Unified Modelling Language, es una notación gráfica orientada a objetos para representar modelos) método: técnica repetible para resolver un problema específico. Por ejemplo: n n n un algoritmo de ordenación es un método para ordenar elementos en una lista la administración de la configuración es un método para el seguimiento de los cambios metodología: colección de métodos para la resolución de una clase de problemas (OMT, metodología de Booch, Catalysis, Proceso Unificado de Desarrollo, . . . ) Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Algunas soluciones. . . ¡No existe bala de plata! (Brooks 87) métodos de análisis,

Algunas soluciones. . . ¡No existe bala de plata! (Brooks 87) métodos de análisis, diseño, prueba. . . Prototipado Modelado del negocio reutilización ingeniería de requisitos POO INGENIERÍA DEL SOFTWARE métodos formales herramientas CASE: editores dirigidos por la sintaxis, entornos integrados de desarrollo, herramientas para la gestión de proyectos, herramientas de prototipado, etc. herramientas 4ª gen. lenguajes no procedimentales para consulta a BD’s generadores de pantallas, generadores de código, generadores de informes Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Más definiciones de ISw. . . n “La ISw es el establecimiento y uso

Más definiciones de ISw. . . n “La ISw es el establecimiento y uso de principios sólidos de ingeniería, orientados a obtener software económico que sea fiable y trabaje de manera eficiente en máquinas reales” (Fritz Bauer). n “Isw: (1) La aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo, la operación y el mantenimiento del software; es decir, la aplicación de la ingeniería al software; (2) El estudio de enfoques como en (1)” (Glosario Estándar de Términos de Ingeniería del Software de IEEE, 1998). n “Una disciplina que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza” (Sommerville 2002). Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Principios de la Ingeniería del Software n Abstracción n n Permite parcelar la complejidad.

Principios de la Ingeniería del Software n Abstracción n n Permite parcelar la complejidad. Por ello se olvidan aspectos irrelevantes del sistema y se potencian los fundamentales. Encapsulamiento u Ocultación de la información n Esconder todos los detalles que no afecten a otros módulos, definiendo interfaces estrictos que sirvan de interacción entre los distintos modelos. n n Sirve para parcelar la solución en módulos independientes con fuerte cohesión interna. Tódos los módulos deben tener una notación similar. Completitud n n Deben estar agrupados todos aquellos elementos que están afectados por un mismo hecho. Uniformidad Deben estar desarrollados todos los aspectos del sistema. Validación y Verificabilidad n Modularidad n Localización El producto final debe ser fácilmente validable y verificable: n ¿Estamos desarrollando el programa correcto? n ¿Estamos desarrollando correctamente el programa? Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Visión general del proceso de ISw (no es totalmente secuencial) Actualmente: iterativo e incremental

Visión general del proceso de ISw (no es totalmente secuencial) Actualmente: iterativo e incremental Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

¿Cuál es la diferencia entre Ingeniería de SW y Ciencias de la Computación? n

¿Cuál es la diferencia entre Ingeniería de SW y Ciencias de la Computación? n Ciencias de la computación se enfoca en la teoría y fundamentos; la Ingeniería de Software se preocupa de los aspectos prácticos del desarrollo y entrega de software útil n Las teorías de la Ciencias de la Computación son actualmente insuficientes para actuar como una base metodológica completa para el ingeniero de software Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

¿Cuál es la diferencia entre Ingeniería de Software e Ingeniería de Sistemas? n Ingeniería

¿Cuál es la diferencia entre Ingeniería de Software e Ingeniería de Sistemas? n Ingeniería de Sistemas se concentra en todos los aspectos de desarrollo de sistemas basados en computadora, incluyendo hardware, software y procesos de ingeniería. Ingeniería de Software es parte de este proceso n Los Ingenieros de Sistema partcipan en Especificaciones de Sistemas, Diseño de Arquitectura, Integración y Desarrollo Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Responsabilidad Profesional y Ética n Ingeniería de Software conlleva responsabilidades más amplias que sólo

Responsabilidad Profesional y Ética n Ingeniería de Software conlleva responsabilidades más amplias que sólo la aplicación de habilidades técnicas n Ingenieros de Software deben comportarse en una manera honesta y éticamente responsable si van a ser respetados como profesionales n Comportamiento ético es más que simplemente cumplir con las Leyes Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Aspectos de Responsabilidad Profesional n Confidencialidad Ingenieros deberían normalmente respetar la confidiencialidad de sus

Aspectos de Responsabilidad Profesional n Confidencialidad Ingenieros deberían normalmente respetar la confidiencialidad de sus empleadores o clientes, aún cuando no se haya firmado un acuerdo de responsabilidad formal n Competencia Ingenieros no deberían atribuirse niveles de competencia que no les corresponde. No deberían aceptar conscientemente trabajo que exceda sus competencias Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Aspectos de Responsabilidad Profesional n Derechos de Propiedad Intelectual Ingenieros deberían estar al tanto

Aspectos de Responsabilidad Profesional n Derechos de Propiedad Intelectual Ingenieros deberían estar al tanto de leyes locales que gobiernan el uso de propiedad intelectual tal como patentes, copyrights, etc. Deberían asegurarse que la propiedad intelectual de empleadores y clientes sea protegida n Mal uso de Computadores Ingnieros de Software no deberían usar sus habilidades técnicas para mal utilizar los equipos de la gente. El mal uso de equipos varía desde uno relativamente inofensivo (por ejemplo, jugar en equipos de la empresa), hasta otros extremadamente serios (diseminación de virus) Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Código de Ética de ACM/IEEE n Sociedades profesionales en USA han cooperado para producir

Código de Ética de ACM/IEEE n Sociedades profesionales en USA han cooperado para producir un código de práctica ética n Miembros de estas organizaciones firman el código de práctica cuando se incorporan a estas sociedades n El Código contiene ocho principios relacionados al comportamiento y decisiones tomadas por ingenieros de software profesionales, incluyendo analistas, educadores, gerentes, supervisores, y diseñadores de políticas, así también estudiantes en práctica de la profesión Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Código de Ética - Preámbulo n La versión corta del código resume aspiraciones a

Código de Ética - Preámbulo n La versión corta del código resume aspiraciones a un nivel alto de abstracción; las claúsulas que se incluyen en la versión extendida dan ejemplos y detalles de cómo estas aspiraciones cambian la manera en que actuamos como Ingenieros de Software Profesionales. Sin las aspiraciones, los detalles pueden llegar a ser tediosos como un documento legal; sin los detalles, las aspiraciones pasan a sonar pomposas pero vacías; juntas, aspiraciones y detalles forman un código cohesionado. n Ingenieros de software deberán comprometerse a hacer del análisis, especificación, diseño, desarrollo, prueba y mantención de software una profesión benéfica y respetable. En concordancia con su compromiso con la salud, seguridad y bienestar público, los ingenieros de software adherirán a los siguientes Ocho Principios: Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Código de Ética - principios n 1. PÚBLICO Ingenieros de Software actuarán consistentemente con

Código de Ética - principios n 1. PÚBLICO Ingenieros de Software actuarán consistentemente con los intereses del público n 2. CLIENTE Y EMPLEADOR Ingenieros de Software actuarán de manera tal que el interés de sus clientes y empleadores sea consistente con el el interés público n 3. PRODUCTO Ingenieros de Software se asegurarán de que sus productos y modificaciones relacionadas alcancen los más altos estándares profesionales Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Código de Ética - principios n 4. JUICIO Ingenieros de Software mantendrán la integridad

Código de Ética - principios n 4. JUICIO Ingenieros de Software mantendrán la integridad e independencia en su juicio profesional. n 5. ADMINISTRACIÓN Adminsitradores y líderes Ingenieros de Software adherirán y promoverán un enfoque ético a la administración del desarrollo y mantención de software. n 6. PROFESIÓN Ingenieros de Software promoverán la integridad y reputación de la profesión en forma consistente con el interés público. Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M

Código de Ética - principios n 7. COLEGAS Ingenieros de Software serán justos y

Código de Ética - principios n 7. COLEGAS Ingenieros de Software serán justos y apoyarán a sus colegas. n 8. UNO MISMO Ingenieros de Software participarán en un aprendizaje continuo durante toda su vida sobre las prácticas de su profesión y promoverán un enfoque ético a la práctica de su profesión. Dr. . Horacio Kuna – Lic. Sergio Daniel Caballero UNa. M