docentes ◦ jonathan erlich jonathanerlich@gmail.com ◦ ariel glikman arielglikman@gmail.com ...

Post on 28-Jan-2016

222 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ingeniería de Software

Docentes◦ Jonathan Erlich jonathanerlich@gmail.com◦ Ariel Glikman arielglikman@gmail.com

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

top related