Introduccion a la ingenieria de software

3,754 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,754
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
135
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduccion a la ingenieria de software

  1. 1. Ingeniería de Sistemas e Informática publicado por.lightning http://sotfstone.blogspot.com/
  2. 2. características y evolución del software <ul><li>Software </li></ul><ul><ul><li>Programas </li></ul></ul><ul><ul><li>Archivos de configuración </li></ul></ul><ul><ul><li>Documentación de la estructura del sistema </li></ul></ul><ul><ul><li>Manuales de instalación y uso </li></ul></ul><ul><ul><li>Sitios web con información y actualizaciones </li></ul></ul><ul><li>TIPOS DE SOFTWARE </li></ul><ul><ul><li>Productos genéricos </li></ul></ul><ul><ul><ul><li>sistemas producidos por una organización y que se venden en el mercado abierto. Ejemplos: sistemas gestores de bases de datos, procesadores de texto, paquetes gráficos,... </li></ul></ul></ul><ul><ul><li>Productos personalizados </li></ul></ul><ul><ul><ul><li>desarrollados específicamente para un cliente </li></ul></ul></ul><ul><ul><ul><li>aplicaciones de negocio, sistemas de control de tráfico aéreo, control de procesos de fabricación,... </li></ul></ul></ul><ul><ul><ul><li>el cliente controla la especificación de la aplicación </li></ul></ul></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  3. 3. características y evolución del software <ul><li>El software desde una perspectiva industrial </li></ul><ul><ul><li>El valor del software: de “elemento añadido” a principal elemento de coste </li></ul></ul><ul><ul><li>El desarrollo del software: </li></ul></ul><ul><ul><li>Algunas preguntas: </li></ul></ul><ul><ul><ul><li>¿Por qué se tarda tanto? (y casi siempre más de lo previsto) </li></ul></ul></ul><ul><ul><ul><li>¿Por qué la productividad es tan baja? </li></ul></ul></ul><ul><ul><ul><li>¿Por qué cuesta tanto? </li></ul></ul></ul><ul><ul><ul><li>¿Por qué siempre quedan errores sin localizar? </li></ul></ul></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  4. 4. naturaleza y problemas del desarrollo de software <ul><li>El software como elemento lógico. </li></ul><ul><ul><li>Se desarrolla, no se fabrica: </li></ul></ul><ul><ul><li>Se “deteriora” con el mantenimiento </li></ul></ul><ul><ul><li>Desarrollo a medida. </li></ul></ul><ul><li>La “crisis” del software: problemas que aparecen en el desarrollo del software al desarrollar, mantener y atender la demanda de nuevas aplicaciones. </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning Insatisfacción del cliente Planificación y estimaciones imprecisas Calidad Sin tiempo para recoger datos históricos Baja productividad Dificultad de mantener el software existente
  5. 5. naturaleza y problemas del desarrollo de software <ul><li>Causas de la crisis del software </li></ul><ul><ul><li>Naturaleza lógica del software </li></ul></ul><ul><ul><li>Mala gestión de los proyectos ( ausencia de datos, deficiente comunicación, ...) </li></ul></ul><ul><ul><li>Ausencia de entrenamiento formal en nuevas técnicas (programadores vs. ingenieros de software) </li></ul></ul><ul><ul><li>Resistencia al cambio </li></ul></ul><ul><ul><li>Mitos del software: </li></ul></ul>Ingeniería de Sistemas e Informática publicado por.lightning MITOS DEL CLIENTE - Requisitos establecidos como una declaración general de objetivos - Flexibilidad del software ante los cambios MITOS DE GESTIÓN - Uso de estándares - Uso de herramientas - Mala planificación: aumento de programadores MITOS DE LOS DESARROLLADORES - Programa funcionando = fin del trabajo - Calidad = el programa se ejecuta sin errores - Entrega al cliente: programa funcionando
  6. 6. DEFINICION DE INGENIERIA DE SOFTWARE <ul><li>La Ingeniería de Software es una disciplina de la Ingeniería que concierne a todos los aspectos de la producción de software </li></ul><ul><li>Los Ingenieros de Software adoptan un enfoque sistemático para llevar a cabo su trabajo y utilizan las herramientas y técnicas necesarias para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y recursos disponibles. </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  7. 7. DIFERENCIA ENTRE INGENIERÍA DE SOFTWARE Y COMPUTACIÓN Ingeniería de Sistemas e Informática publicado por.lightning <ul><li>La computación concierne a la teoría y fundamentos de cualquier sistema de computo, sea de hardware o de software. </li></ul><ul><li>La Ingeniería de software concierne solo al desarrollo de sistemas o productos de software. </li></ul><ul><li>La Ingeniería de Software todavía esta lejos de ser una ciencia como los son la Química, la Ingeniería Civil o la Electrónica. </li></ul>
  8. 8. CARACTERÍSTICAS DE LOS PRODUCTOS DE SOFTWARE Ingeniería de Sistemas e Informática publicado por.lightning <ul><li>Mantenibles. </li></ul><ul><ul><li>Debe ser posible que el software evolucione y que siga cumpliendo con sus especificaciones. </li></ul></ul><ul><li>Confiabilidad. </li></ul><ul><ul><li>El software no debe causar danos tangibles o económicos en el caso de fallos. </li></ul></ul><ul><li>Eficiencia. </li></ul><ul><ul><li>El software no debe desperdiciar los recursos del sistema. </li></ul></ul><ul><li>Utilización adecuada. </li></ul><ul><ul><li>El software debe contar con una interfaz de usuario adecuada y su documentación. </li></ul></ul>
  9. 9. QUE CONTIENE EL SOFTWARE ? Ingeniería de Sistemas e Informática publicado por.lightning <ul><li>El software contiene: </li></ul><ul><ul><li>L í neas de c ó digo de alg ú n lenguaje ? </li></ul></ul><ul><ul><li>Instrucciones de computadora. </li></ul></ul><ul><ul><li>Descripci ó n de las estructuras de datos. </li></ul></ul><ul><ul><li>Algoritmos. </li></ul></ul><ul><ul><li>Procedimientos y funciones. </li></ul></ul><ul><ul><li>Componentes de software. </li></ul></ul>
  10. 10. QUE TIPOS DE SOFTWARE HAY ? Ingeniería de Sistemas e Informática publicado por.lightning <ul><li>Por su estructura: </li></ul><ul><ul><li>Funcionales. </li></ul></ul><ul><ul><li>Orientados a objetos. </li></ul></ul><ul><ul><li>Orientados a listas. </li></ul></ul><ul><ul><li>Orientados a componentes. </li></ul></ul><ul><li>Por su función: </li></ul><ul><ul><li>Programas o Sistemas de Usuario </li></ul></ul><ul><ul><li>Interfaces Hombre-Maquina. </li></ul></ul><ul><ul><li>Herramientas de Software. </li></ul></ul><ul><ul><li>Librerías. </li></ul></ul><ul><ul><li>Sistemas de uso genérico: Compiladores, S.O’s, Procesadores de Texto, etc. </li></ul></ul><ul><ul><li>Bases de Datos. </li></ul></ul><ul><ul><li>Sistemas basados en Web. </li></ul></ul>
  11. 11. INGENIERÍA DEL SOFTWARE ORIENTADA A OBJETOS Ingeniería de Sistemas e Informática publicado por.lightning La Programación Orientada a Objetos (OOP por sus siglas en inglés de Object Oriented Programming ) como paradigma, &quot;es una forma de pensar, una filosofía, de la cual surge una cultura nueva que incorpora técnicas y metodologías diferentes La Programación Orientada a Objetos desde el punto de vista computacional &quot;es un método de implementación en el cuál los programas son organizados como grupos cooperativos de objetos, cada uno de los cuales representa una instancia de alguna clase, y estas clases, todas son miembros de una jerarquía de clases unidas vía relaciones de herencia&quot; Programación Orientada a Objetos La OO se basa en tres principios básicos: todo son objetos, encapsulamiento / ocultación y herencia / polimorfismo. El primer principio indica la unidad básica de trabajo. El segundo permite englobar en un mismo concepto a los datos y a las operaciones. El tercero permite agrupar y tratar de igual forma a objetos similares.
  12. 12. Análisis y Diseño Orientado a objetos Ingeniería de Sistemas e Informática publicado por.lightning Análisis Orientado a Objetos (OOA por sus siglas en inglés de Object Oriented Analysis) &quot;es un método de análisis que examina los requerimientos desde la perspectiva de las clases y objetos encontrados en el vocabulario de del dominio del problema&quot; . Diseño Orientado a Objetos es un método de diseño abarcando el proceso de descomposición orientado a objetos y una notación para representar ambos modelos lógico y físico tal como los modelos estáticos y dinámicos del sistema bajo diseño
  13. 13. EL MODELADO Ingeniería de Sistemas e Informática publicado por.lightning Por un lado el Análisis y Diseño (OOAD) y por otro Programación (POO).Se recalcaba la necesidad de usar lenguajes de modelado para desarrollar proyectos: OOSE, OMT-2, Booch’93 o UML. Este último, fruto de la fusión y de mejoras de los anteriores, aún estaba en proceso de desarrollo en Rational (compañía integrada en IBM hoy en día). Aun con la cotidianeidad del paradigma orientado a objetos, muchos informáticos sumergidos en un mar de siglas se realizan la siguiente pregunta: “ Pues muy bien, ya sé UML... ¿y ahora qué?” El Modelado es una técnica de ingeniería probada y bien aceptada. Un modelo es una abstracción del sistema, especificando el sistema desde un cierto punto de vista y en un determinado nivel de abstracción Un modelo es una simplificación de la realidad.
  14. 14. UNIFIED MODELING LANGUAJE (UML) Ingeniería de Sistemas e Informática publicado por.lightning UML es un lenguaje de especificación, visualización, construcción y documentación de propósito general, aunque especializado en sistemas software. <ul><li>UML combina lo mejor de: </li></ul><ul><ul><li>Modelamiento conceptual de datos </li></ul></ul><ul><ul><li>Modelamiento del flujo de actividades </li></ul></ul><ul><ul><li>Modelamiento de Objetos </li></ul></ul><ul><ul><li>Modelamiento de Componentes </li></ul></ul>
  15. 15. Perspectivas de UML <ul><li>UML es el lenguaje de model ado orientado a objetos estándar predominante ahora y en los próximos años. </li></ul><ul><li>Razones: </li></ul><ul><ul><li>Participación de metódologos influyentes </li></ul></ul><ul><ul><li>Participación de importantes empresas </li></ul></ul><ul><ul><li>Estándar del OMG </li></ul></ul><ul><li>Evidencias: </li></ul><ul><ul><li>Herramientas que proveen la notación UML. </li></ul></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  16. 16. Modelos y Diagramas <ul><li>Un model o captur a una vista de un sistema del mundo real . Es una abstracción de dicho sistema, considerando un cierto propósito. Así, el modelo describe completa-mente aquellos aspectos del sistema que son relevantes al propósito del modelo, y a un apropiado nivel de detalle . </li></ul><ul><li>Diagram a : una representación gráfica de una colección de elementos de modelado, a menudo dibujada como un grafo con vértices conectados por arcos </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  17. 17. ... Modelos y Diagramas <ul><li>Un proceso de desarrollo de software debe ofrecer un conjunto de modelos que permitan expresar el producto desde cada una de las perspectivas de inter é s </li></ul><ul><li>El c ó digo fuente del sistema es el modelo m á s detallado del sistema (y adem á s es ejecutable). Sin embargo, se requieren otros modelos ... </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  18. 18. ... Diagramas de UML Ingeniería de Sistemas e Informática publicado por.lightning Los diagramas expresan gráficamente partes de un modelo Use Case Diagrams Use Case Diagrams Diagramas de Casos de Uso Scenario Diagrams Scenario Diagrams Diagramas de Colaboración State Diagrams State Diagrams Diagramas de Componentes Component Diagrams Component Diagrams Diagramas de Distribución State Diagrams State Diagrams Diagramas de Objetos Scenario Diagrams Scenario Diagrams Diagramas de Estados Use Case Diagrams Use Case Diagrams Diagramas de Secuencia State Diagrams State Diagrams Diagramas de Clases Diagramas de Actividad Modelos
  19. 19. Organización de Modelos Ingeniería de Sistemas e Informática publicado por.lightning <ul><li>Propuesta de Rational Unified Process (RUP) </li></ul><ul><li>El Proceso Unificado de Desarrollo de Software </li></ul><ul><ul><li>M. de Casos de Uso del Negocio (Business Use-Case Model) </li></ul></ul><ul><ul><li>M. de Objetos del Negocio (Business Object Model) </li></ul></ul><ul><ul><li>M. de Casos de Uso (Use-Case Model) </li></ul></ul><ul><ul><li>M. de Análisis (Analysis Model) </li></ul></ul><ul><ul><li>M. de Diseño (Design Model) </li></ul></ul><ul><ul><li>M. de Despliegue (Deployment Model) </li></ul></ul><ul><ul><li>M. de Datos (Data Model) </li></ul></ul><ul><ul><li>M. de Implementación (Implementation Model) </li></ul></ul><ul><ul><li>M. de Pruebas (Test Model) </li></ul></ul>
  20. 20. ¿Qué es un Proceso de Desarrollo de SW? RUP <ul><li>Define Quién debe hacer Qué , Cuándo y Cómo debe hacerlo </li></ul><ul><li>No existe un proceso de software universal. Las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigen que el proceso sea configurable </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning Requisitos nuevos o modificados Sistema nuevo o modificado Proceso de Desarrollo de Software
  21. 21. Dos Dimensiones Ingeniería de Sistemas e Informática publicado por.lightning
  22. 22. Ingeniería de Sistemas e Informática publicado por.lightning El Proceso Unificado tiene dos dimensiones: ( Figura 1 ): Un eje horizontal que representa el tiempo y muestra los aspectos del ciclo de vida del proceso a lo largo de su desenvolvimiento Un eje vertical que representa las disciplinas, las cuales agrupan actividades de una manera lógica de acuerdo a su naturaleza. La primera dimensión representa el aspecto dinámico del proceso conforme se va desarrollando, se expresa en términos de fases, iteraciones e hitos (milestones). La segunda dimensión representa el aspecto estático del proceso: cómo es descrito en términos de componentes del proceso, disciplinas, actividades, flujos de trabajo, artefactos y roles.   Dos Dimensiones
  23. 23. Etapas del Proceso <ul><li>Modelado del Negocio </li></ul><ul><ul><li>Comprender procesos del negocio </li></ul></ul><ul><li>Modelado de Requisitos </li></ul><ul><ul><li>Obtener y describir requisitos del sistema </li></ul></ul><ul><li>Análisis y Diseño del Sistema </li></ul><ul><ul><li>Identificar clases y colaboraciones para objetos del dominio </li></ul></ul><ul><ul><li>Resolver problemas de diseño (nuevas clases y colaboraciones, patrones..) </li></ul></ul><ul><ul><li>Diseño de Bases de Datos </li></ul></ul><ul><li>Implementación </li></ul><ul><li>Pruebas </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning Modelo del Negocio Modelo de Requisitos Modelo del Análisis Modelo del Diseño
  24. 24. Modelado del Negocio <ul><li>Objetivo: </li></ul><ul><ul><li>Comprender el conjunto de procesos de negocio que tienen lugar dentro de una empresa, como paso previo a establecer los requisitos del sistema a desarrollar. </li></ul></ul><ul><ul><li>Centrado en diagramas de actividades de UML. </li></ul></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  25. 25. Modelado del Negocio <ul><li>Una empresa organiza su actividad a través de un conjunto de procesos de negocio </li></ul><ul><li>Cada Proceso de Negocio se caracteriza por... </li></ul><ul><ul><li>Información que produce y manipula </li></ul></ul><ul><ul><li>Tareas que producen o manipulan la información </li></ul></ul><ul><ul><li>Agentes (trabajadores...) que participan en las tareas </li></ul></ul><ul><ul><li>Flujos de trabajo que definen cómo los agentes colaboran para el cumplimiento de una tarea </li></ul></ul><ul><li>Los procesos de negocio están restringidos por las reglas del negocio , que determinan las políticas y la estructura de la información </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning
  26. 26. Ejemplo: Empresa dedicada a la fabricación bajo demanda Ingeniería de Sistemas e Informática publicado por.lightning Registrar pedido de cliente Fabricar productos pedidos Gestionar almacén de materias primas Generar Pedidos a Proveedores Registrar Pedido Fabricar Producto Pedido Gestionar Almacén Realizar Pedido a Proveedor <ul><li>Identificar Procesos del Negocio </li></ul>Objetivos Estratégicos Subobjetivos  Procesos del Negocio Casos de Uso del Negocio Satisfacer Pedidos de Clientes Disminuir tiempo de fabricación un 15% ... Incrementar las ventas en un 25%
  27. 27. Contexto y Límites de la Organización <ul><li>Identificar Roles del Entorno </li></ul>Ingeniería de Sistemas e Informática publicado por.lightning Diagrama de Casos de Uso del Negocio Registrar Pedido Cliente <<initiator>> Fabricar Producto Pedido Gestionar Almacen Realizar Pedido a Proveedor Proveedor Jefe Tecnico Jefe Produccion

×