Your SlideShare is downloading. ×
0
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Tema 02
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Tema 02

600

Published on

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

No Downloads
Views
Total Views
600
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ingeniería de Software Conceptos Básicos Necesidad de Modelar y Gestionar Prof. Pedro Campos Soto Semestre de Primavera 2008
  • 2. El trabajo de un ingeniero <ul><li>Construir productos de alta calidad bajo restricciones de tiempo y dinero </li></ul><ul><li>Utilizar e integrar componentes existentes en el mercado </li></ul><ul><li>Enfrentar problemas pobremente definidos </li></ul><ul><li>Aceptar soluciones parciales </li></ul><ul><li>Evaluación de posibles soluciones en base a métodos empíricos </li></ul>Esto es igual ya sea se trate de construir un avión de pasajeros, un puente o un sistema de reserva de pasajes de avión
  • 3. El software es complejo <ul><li>Algunas características: </li></ul><ul><ul><li>Muchas funcionalidades </li></ul></ul><ul><ul><li>Debe satisfacer diversos objetivos </li></ul></ul><ul><ul><li>Muchos participantes </li></ul></ul><ul><ul><li>Muy difícil de entender por una sola persona </li></ul></ul><ul><ul><li>Etc. </li></ul></ul>
  • 4. Lo más difícil: manejar cambios <ul><li>Es muy difícil generar un conjunto de requerimientos correctos desde el comienzo </li></ul><ul><li>Cambios en el ambiente en que operará el software </li></ul><ul><li>Cambios tecnológicos </li></ul>En el caso del software no es posible congelar los requerimientos ya que eso llevaría a completar un sistema o producto innecesario
  • 5. Ingeniería de Software <ul><li>Es una disciplina de la ingeniería que se preocupa de todos los aspectos de la producción de software </li></ul><ul><li>Los ingenieros de software deben adoptar un enfoque sistemático y organizado en su trabajo, y usar las herramientas y técnicas apropiadas dependiendo del problema a resolver, las restricciones de desarrollo y los recursos disponibles </li></ul>
  • 6. El ingeniero de software modela y diseña
  • 7. &nbsp;
  • 8. Conceptos Básicos <ul><li>Proceso de Desarrollo </li></ul><ul><li>Modelo de Proceso </li></ul><ul><li>Métodos </li></ul><ul><li>Gestión de Proyectos </li></ul><ul><li>CASE </li></ul><ul><li>Etc., etc… </li></ul>
  • 9. Ingeniería de Software <ul><li>Ingeniería de Software – Ciencias de la Computación </li></ul><ul><li>Ingeniería de Software – Ingeniería de Sistemas </li></ul>
  • 10. Proceso de Software <ul><li>Es un conjunto de actividades cuyo objetivo es el desarrollo o la evolución del software </li></ul><ul><li>Actividades genéricas: </li></ul><ul><ul><li>Especificación </li></ul></ul><ul><ul><li>Desarrollo </li></ul></ul><ul><ul><li>Validación </li></ul></ul><ul><ul><li>Evolución </li></ul></ul>
  • 11. Modelo de Proceso de Software <ul><li>Es una representación de un proceso de software, una visión simplificada de un proceso. </li></ul><ul><li>Modelos Genéricos: </li></ul><ul><ul><li>Cascada </li></ul></ul><ul><ul><li>Desarrollo evolutivo </li></ul></ul><ul><ul><li>Transformación formal </li></ul></ul><ul><ul><li>Integración de componentes reutilizables </li></ul></ul>
  • 12. Métodos de la Ingeniería de Software <ul><li>Enfoques estructurados para el desarrollo de software, que incluyen modelos del sistema, notaciones, reglas, guías de diseño y orientación sobre el proceso </li></ul><ul><li>Modelos descriptivos </li></ul><ul><ul><li>Descripciones de modelos gráficos que deben ser producidos </li></ul></ul><ul><li>Reglas </li></ul><ul><ul><li>Restricciones aplicadas a los modelos de sistemas </li></ul></ul><ul><li>Recomendaciones </li></ul><ul><ul><li>Guías sobre buenas prácticas de diseño </li></ul></ul><ul><li>Orientación (guía) sobre el proceso </li></ul><ul><ul><li>Qué actividades se deben realizar </li></ul></ul>
  • 13. Modelación, la esencia de la ingeniería <ul><li>Propósito de las ciencias es describir y entender complejos sistemas de la naturaleza (átomos, sistema solar, etc.) </li></ul><ul><li>Las Ciencias Sociales se preocupan de sistemas en que hay personas involucradas </li></ul><ul><li>En ambos casos la construcción de modelos es fundamental </li></ul><ul><li>Los ingenieros deben construir modelos de sistemas complejos artificiales (un computador, un portaaviones, un edificio) </li></ul>
  • 14. Un modelo es una representación abstracta de un sistema <ul><li>Permite contestar preguntas sobre el sistema </li></ul><ul><li>El sistema puede haber existido antes, creerse que existe o simplemente no haberse creado aún </li></ul><ul><li>Ingeniero de Software debe construir </li></ul><ul><ul><li>Modelo del dominio (entender el ambiente donde operará) </li></ul></ul><ul><ul><li>Modelo de la solución (para evaluar diversas soluciones y compromisos) </li></ul></ul><ul><ul><li>El análisis y diseño orientado a objetos combina ambas actividades (modelo de la solución emerge desde el modelo del dominio) </li></ul></ul>
  • 15. Adquisición de conocimiento <ul><li>Proceso fundamental en el proceso de ingeniería de software </li></ul><ul><li>Conocimiento adquirido se expresa como documentos o código </li></ul><ul><li>No es lineal (una nueva pieza de información puede invalidar todo lo anterior) </li></ul><ul><li>Procesos de desarrollo son necesariamente iterativos </li></ul>
  • 16. Gestión de Proyectos de Software <ul><li>Completar el proyecto dentro del plazo previsto </li></ul><ul><li>No exceder los presupuestos </li></ul><ul><li>Manejar adecuadamente los recursos humanos </li></ul><ul><li>Minimizar los riesgos </li></ul><ul><li>Minimizar la inyección de errores en el código </li></ul><ul><li>Controlar la calidad del producto </li></ul><ul><li>Realimentar y mejorar el proceso </li></ul>
  • 17. CASE (Computer Aided Software Engineering) <ul><li>Sistemas software que proveen soporte automatizado para actividades del proceso de software </li></ul><ul><li>Usualmente las herramientas CASE apoyan un método en particular </li></ul><ul><li>Upper-CASE </li></ul><ul><ul><li>Herramientas para apoyar las primeras actividades de requerimientos y diseño </li></ul></ul><ul><li>Lower-CASE </li></ul><ul><ul><li>Herramientas para apoyar actividades posteriores como programación, debugging y testing </li></ul></ul>
  • 18. Atributos de un buen software <ul><li>El software debe proveer la funcionalidad y rendimiento requeridos al usuario y debe ser mantenible, confiable y usable </li></ul><ul><li>Mantenibilidad </li></ul><ul><ul><li>El software debe poder evolucionar para soportar cambios en los requerimientos </li></ul></ul><ul><li>Confiabilidad </li></ul><ul><ul><li>El software no debe causar daños </li></ul></ul><ul><li>Eficiencia </li></ul><ul><ul><li>El software no debe malgastar recursos </li></ul></ul><ul><li>Usabilidad </li></ul><ul><ul><li>El software debe ser fácil de usar por el usuario para quien está diseñado </li></ul></ul>
  • 19. Ética en la Ingeniería de Software <ul><li>Un Ingeniero de Software debe tener un alto sentido de la ética profesional </li></ul><ul><li>Algunos dilemas éticos </li></ul><ul><ul><li>Acceso a la información </li></ul></ul><ul><ul><li>Uso de la información </li></ul></ul><ul><ul><li>Propósito de los sistemas </li></ul></ul>
  • 20. Urgente: se necesita ingenieros de software <ul><li>Informe CHAOS (Standish Group) </li></ul><ul><ul><li>Base de 175.000 proyectos por US$250.000 millones </li></ul></ul><ul><ul><li>31% cancelado antes de tiempo </li></ul></ul><ul><ul><li>50% cuesta más de 200% de lo presupuestado </li></ul></ul><ul><ul><li>Sólo 16% completados a tiempo </li></ul></ul><ul><li>Otras experiencias </li></ul><ul><ul><li>Gran porcentaje de proyectos terminados pero resultados no se usan </li></ul></ul><ul><ul><li>Sistemas instalados que se usan de mala gana </li></ul></ul><ul><ul><li>Productos plagados de errores (algunos graves) </li></ul></ul>
  • 21. Se ha progresado <ul><li>Productos y sistemas mucho más complejos con igual o menos número de fallas </li></ul><ul><li>Procesos iterativos e incrementales hacen cada vez más raro una catástrofe en un proyecto </li></ul><ul><li>Diseño basado en objetos y uso de patrones de diseño es masivo </li></ul><ul><li>Ambientes de desarrollo integrados y herramientas de muy buena calidad </li></ul>
  • 22. Pero no lo suficiente
  • 23. Pero no lo suficiente
  • 24. Pero no lo suficiente
  • 25. Conclusiones <ul><li>La ingeniería de software es un conjunto de métodos, técnicas, herramientas, conceptos, etc., que permiten la construcción de software de manera profesional. </li></ul><ul><li>El pilar de la ingeniería es el diseño mediante modelos. </li></ul>
  • 26. ¿Preguntas?

×