Ingeniería de Software
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
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
Programa
Configuración
Documentación
¿Qué es software?
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?
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?
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?
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?
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?
Mantenibilidad Confiabilidad Eficiencia Usabilidad
¿Cuáles son los atributos de un buen software?
Profundizando
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
Cliente (Stakeholders) Project Manager Project Leader Analista Arquitecto Diseñador Desarrollador QA QC/Tester
Roles en la Ing. De Software
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
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
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
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
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
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
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
Preguntas
Sugerencias
Aplausos