docentes ◦ jonathan erlich [email protected] ◦ ariel glikman [email protected] ...

23
Ingeniería de Software

Upload: edelmira-marciel

Post on 28-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Ingeniería de Software

Page 2: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Docentes◦ Jonathan Erlich [email protected]◦ Ariel Glikman [email protected]

Organización de la materia◦ Idesmaimonides.wikidot.com◦ Presentismo (70%)◦ Material teórico (lectura previa y posterior)◦ Ejercicios de tarea y en clase (70%)◦ Trabajo práctico grupal de exposición (2 entregas)◦ Evaluación

Presentación

Page 3: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

1. ¿Qué es software? 2. ¿Qué es ingeniería de software? 3. ¿Cuál es la diferencia entre ingeniería de

software y ciencias de la computación? 4. ¿Cuál es la diferencia entre ingeniería de

software y ingeniería en sistemas? 5. ¿Qué es un proceso de software? 6. ¿Qué es un modelo de proceso de

software? 7. ¿Cuáles son los atributos de un buen

software?

Evaluación diagnóstica

Page 4: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Programa

Configuración

Documentación

¿Qué es software?

Page 5: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

SEI (1990) (CMU/SEI-90-TR-003) Ingeniería es la aplicación sistemática del conocimiento científico en la creación

y construcción de soluciones (“cost-effective”) para resolver problemas prácticos al servicio del hombre. Ingeniería del SW es aquella parte de la ingeniería que aplica los principios de las ciencias de la computación y las matemática para alcanzar soluciones (“cost-effective”) a problemas de software.

Fairley (1985) (SW Engineering Concepts) Es la disciplina tecnológica y de administración que se ocupa de la producción

sistemática & mantenimiento de productos de software que son desarrollados en tiempo y costo estimados.

IEEE La aplicación de un proceso sistemático, cuantificable y disciplinado a la creación,

desarrollo, la operación, y el mantenimiento de software.

Ghezzi Ingeniería Software es el campo de la ciencia de la computación que trata con la

construcción de sistemas de software que son tan grandes o complejos que son construidos por un equipo o equipos de ingenieros

¿Qué es ingeniería de software?

Page 6: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Cs. Comp: Teorías y métodos subyacentes (matemática, electrónica, redes, sistemas operativos, etc.) para investigación y desarrollo.

Ing. De SW: Se refiere a los problemas prácticos a la hora de producir software utilizando las herramientas provistas por las Cs. de la computación.

¿Cuál es la diferencia entre ingeniería de software y ciencias de la computación?

Page 7: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

La Ing. de Sist. se refiere a todos los aspectos de la comprensión, desarrollo y evolución de un sistema, sin importar si es computarizado o no. Incluye personas, organizaciones, procesos, software, hardware, papel, etc.

La Ing. de SW. se refiere a los aspectos específicos del desarrollo de software y sus relaciones con los otros aspectos.

¿Cuál es la diferencia entre ingeniería de software y ingeniería en sistemas?

Page 8: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

El proceso de software es también conocido como ciclo de vida.

Es un conjunto de actividades cuya meta es el desarrollo y evolución del Software, incluye:◦ Especificación del software◦ Desarrollo◦ Validación◦ Evolución

Distintos procesos trabajan con estas actividades en distinto orden y detalle, de acuerdo al tipo de aplicación, madurez del equipo de desarrollo, costos y tiempos.

¿Qué es un proceso de software?

Page 9: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Modelo: una simplificación de la realidad con el fin de ser representada.

Modelo de proceso de software: Una descripción del proceso utilizado desde una perspectiva particular.

Existen distintos tipos de modelos de proceso de software:◦ Cascada◦ RUP◦ eXtremme Programming

¿Qué es un modelo de proceso de software?

Page 10: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Mantenibilidad Confiabilidad Eficiencia Usabilidad

¿Cuáles son los atributos de un buen software?

Page 11: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Profundizando

Page 12: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Las economías de todas las naciones desarrolladas son dependientes del software

Cada vez mas sistemas son controlados por software Las ventas de software cada vez representan mayor %

en el PBI / exportaciones En gral. los costos de SW son mayores que los de HW.

Tanto a nivel empresarial como personal. El costo de mantenimiento es mayor que el de

desarrollo. Hasta varias veces su tamaño en sistemas de larga vida útil.

La ingeniería de software tiene mucho que ver con la rentabilidad del desarrollo de software.

Importancia de la Ing. de SW

Page 13: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Cliente (Stakeholders) Project Manager Project Leader Analista Arquitecto Diseñador Desarrollador QA QC/Tester

Roles en la Ing. De Software

Page 14: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Es el proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema.

Es una representación de:◦ Las etapas de un desarrollo de SW◦ Los criterios de transición para pasar entre etapas

Su importancia, existen muchos modelos de Ciclos de Vida pero la elección del correcto nos puede ayudar a poner mas énfasis en:◦ Mejorar la velocidad de desarrollo◦ Mejorar la calidad◦ Mejorar el seguimiento & control del proyecto◦ Disminuir el riesgo◦ Mejorar la relación con el cliente◦ Mejorar la reacción ante el el cambio

Ciclo de vida

Page 15: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Etapas◦ Inicio◦ Desarrollo◦ Validación◦ Evolución

Actividades◦ Ing. De requerimientos◦ Diseño◦ Desarrollo◦ Documentación◦ Verificación◦ Validación◦ Despliegue◦ Mantenimiento◦ Cambios

Ciclo de vida

Page 16: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Standalone Web Embebidos Firmware En lote o batch

Tiempo real Entretenimiento Modelado y

simulación Recolección de datos Sistemas de sistemas

Tipos de software

Page 17: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan.

En sistemas, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?". El común denominador en la evolución de los lenguajes de programación ha sido el nivel de abstracción del que cada uno de ellos hace uso.

Conceptos básicos – Abstracción

Page 18: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Se denomina Modularidad a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes.

Estos módulos se pueden compilar por separado (no siempre), pero tienen conexiones con otros módulos. Los lenguajes soportan la Modularidad de diversas formas.

Conceptos básicos – Modularidad

Page 19: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

La incrementalidad se refiere a la capacidad de desarrollar funcionalidades en pequeños pasos, dónde cada uno implica una funcionalidad completa (en gral.), es decir, agrega valor.

Diferentes ciclos de vida utilizan esta idea para definir el proceso.

Conceptos básicos – Incrementalidad

Page 20: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

El cambio es inevitable◦ Cambios en los requerimientos, cambios en las

tecnologías, cambios en el equipo, etc. A mas tardío, más costoso Algunos ciclos de vida apuntan a reducir

este costo

Conceptos básicos - Anticipación al cambio

Page 21: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Preguntas

Page 22: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Sugerencias

Page 23: Docentes ◦ Jonathan Erlich  jonathanerlich@gmail.com ◦ Ariel Glikman  arielglikman@gmail.com  Organización de la materia ◦ Idesmaimonides.wikidot.com

Aplausos