Según la definición del IEEE, “software es la
suma total de los programas de computadora, procedimientos,
reglas, la documentación asociada y los datos que
pertenecen a un sistema de cómputo". Ingeniería de
Software Definición de Software
Ingeniería de Software Características del Software
IntangibleNo se deterioraRequiere de Hardware
Ingeniería de Software Componentes del Software
ProgramasDocumentaciónDatosProcedimientos
Bondades deseables en un Producto de Software Mantenible. Debe
ser posible que el software evolucione y que siga cumpliendo con
sus especificaciones. Confiable. El software no debe causar
daños físicos o económicos en el caso de
fallas. Eficiente. El software no debe desperdiciar los recursos
del sistema. Fácilmente usable. El software debe contar
con una interfaz de usuario adecuada además de su
documentación. Ingeniería de Software
En el año 1968 que se convocó una reunión en
Garmisch, Alemania Oriental, estimulándose el
interés hacia los aspectos técnicos y
administrativos utilizados en el desarrollo y mantenimiento de
software, y fue en esa ocasión donde se utilizó el
término "Ingeniería de Software". Ingeniería
de Software Origen de la Ingeniería de Software
La ingeniería de software se define como la disciplina
tecnológica preocupada de la producción
sistemática y del mantenimiento de los productos de
software que son desarrollados y modificados en tiempo y dentro
de un presupuesto definido. (Fairley, 1985). Ingeniería de
Software
"la Ingeniería de Software es la rama de la
ingeniería que aplica los principios de las ciencias de
computación y las matemáticas para lograr
soluciones técnicas efectivas (eficaces en costo o
económicas) a los problemas de desarrollo de software", es
decir, "permite elaborar consistentemente productos correctos,
utilizables y costo-efectivos" (Cota 1994). Ingeniería de
Software
Es el conjunto de métodos, técnicas y herramientas
que controlan el proceso integral del desarrollo de software y
suministra las bases para construir software de calidad de forma
eficiente en los plazos adecuados (Enciclopedia Wikipedia).
Ingeniería de Software
Costos de la eficiencia Costos Eficiencia Ingeniería de
Software
Métodos o técnicas: Indican cómo construir
técnicamente el software, y abarca una serie de tareas que
incluyen la planificación y estimación de
proyectos, el análisis de requisitos, el diseño de
estructuras de datos, programas y procedimientos, la
codificación, las pruebas y el mantenimiento. Los
métodos introducen frecuentemente una notación
específica para la tarea en cuestión y una serie de
criterios de calidad. Ingeniería de Software La
Ingeniería de software abarca cuatro elementos
clave:
Herramientas: Son instrumentos o sistemas automatizados para
realizar algo de la mejor manera posible. Esta manera
óptima puede significar que la herramienta produce
resultados más exactos, más eficientes, más
productivos, o que refuerza la calidad del producto resultante.
Proporcionan un soporte automático o semiautomático
para todas las fases del desarrollo y sistemas que integran las
herramientas de cada fase de manera que sirven para todo el
proceso. Estas herramientas se denominan CASE (Computer Aided
Software Engineering). Ingeniería de Software
Procedimientos: Son la combinación de las técnicas
y las herramientas que en forma conjunta dan un resultado
particular. Los procedimientos indicarán qué
herramientas deberán utilizarse cuando se aplican
determinadas técnicas. Definen la secuencia en que se
aplican los métodos, los documentos que se requieren, los
controles que aseguran la calidad y las directrices que permiten
a los gestores evaluar los progresos. Ingeniería de
Software
Paradigmas: Representan un enfoque particular o filosofía
para la construcción del software. No es mejor uno que
otro sino que cada uno tiene ventajas y desventajas.
También hay situaciones donde un paradigma resulta
más apropiado que otro. Ejemplos: Análisis
orientado a objetos y Análisis estructurado.
Ingeniería de Software
Un modelo de ciclo de vida de software es una vista de las
actividades que ocurren durante el desarrollo de software,
intenta determinar el orden de las etapas involucradas y los
criterios de transición asociadas entre estas etapas.
Ingeniería de Software Ciclo de vida
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. Ingeniería de
Software Ciclo de vida
Un modelo de ciclo de vida del software describe las fases
principales de desarrollo de software. Define las fases primarias
esperadas de ser ejecutadas durante esas fases. Ayuda a
administrar el progreso del desarrollo, y provee un espacio de
trabajo para la definición de un detallado proceso de
desarrollo de software. Ingeniería de Software Ciclo de
vida
Winston Royce a fines del 70. Ingeniería de Software Ciclo
de vida Clásico
A tiempo y en presupuesto Discontinados Promedios 189% del
presupuesto 221% del tiempo 61% de la funcionalidad pretendida
Sobrepasados Standish Group CHAOS Report 1995 Ingeniería
de Software La Crisis del Software
Mitos de Gestión Mito. Tenemos ya un libro que está
lleno de estándares y procedimientos para construir
software. ¿No le proporciona ya a mi gente todo lo que
necesita saber?. Realidad. Está muy bien que el libro
exista, pero ¿Se usa? ¿Conocen los trabajadores su
existencia? ¿Refleja las prácticas modernas de
desarrollo de software? ¿Es completo? En muchos casos, la
respuesta a todas estas preguntas es "no"?. Ingeniería de
Software Mitos en los Proyectos de Software
Mito. Nuestra gente dispone de las herramientas de desarrollo de
software más avanzadas; después de todo, les
compramos las computadoras más nuevas. Realidad. Se
necesita mucho más que el último modelo de
computadora grande (o de PC) para hacer desarrollo de software de
gran calidad. Las herramientas de ingeniería del software
asistida por computadora (CASE), aunque no se usen la
mayoría , son más importantes que el hardware para
conseguir buena calidad y productividad. Ingeniería de
Software Mitos en los Proyectos de Software
Mito. Si fallamos en la planificación, podemos
añadir más programadores y adelantar el tiempo
perdido. Realidad. El desarrollo de software no es un proceso
mecánico como la fabricación. Brooks dice:
"Añadir gente a un proyecto de software retrasado lo
retrasa aún más". Ya que cuando se añaden
nuevas personas, la necesidad de aprender y comunicarse con el
equipo puede y hace que se reduzca la cantidad de tiempo gastado
en el desarrollo productivo. Puede añadirse gente, pero de
una manera planificada y bien coordinada. Ingeniería de
Software Mitos en los Proyectos de Software
Mitos del Cliente Mito. Una declaración general de los
objetivos es suficiente para comenzar a escribir los programas.
(podemos detallar más adelante). Realidad. Una mala
definición inicial es la causa principal del trabajo
baldío en software. Es esencial una descripción
formal y detallada del ámbito de la información,
funciones, rendimiento, etc. Y todas éstas
características sólo se pueden determinar
después de una exhaustiva comunicación entre
cliente y analista. Ingeniería de Software Mitos en los
Proyectos de Software
Mito. Los requisitos del proyecto cambian continuamente, pero los
cambios pueden acomodarse fácilmente, ya que el software
es flexible. Realidad. Es verdad que los requisitos del software
cambian pero el impacto del cambio varía según el
momento en que se introduzca. Entre más temprano se
realicen mejor. Ingeniería de Software Mitos en los
Proyectos de Software
Mitos de los Desarrolladores. Mito. Una vez que escribimos el
programa y hacemos que funcione, nuestro trabajo ha terminado.
Realidad. Alguien dijo una vez: "Cuando más pronto se
comience a escribir código, más se tardará
en terminarlo". Datos industriales indican que entre el 50 y el
70 por ciento de todo el esfuerzo dedicado a un programa se
realizará después de que se le haya entregado al
cliente por primera vez. Ingeniería de Software Mitos en
los Proyectos de Software
Mito. Hasta que no tengo el programa
“ejecutándose” realmente no tengo forma de
comprobar su calidad. Realidad. Desde el principio del proyecto
se puede aplicar uno de los mecanismos más efectivos para
garantizar la calidad del software (Revisión de
Técnica Formal). La revisión del Software es un
"filtro de calidad" que se ha comprobado que es más
efectivo que la prueba, para encontrar ciertas clases de defectos
en el software. Ingeniería de Software Mitos en los
Proyectos de Software
Mito. Lo único que se entrega al terminar es el programa
funcionando. Realidad. Un programa que funciona es sólo
una parte de una configuración del software que incluye
todos los elementos tales como el Análisis, Diseño,
Documentación del Sistema, etc.. Ingeniería de
Software Mitos en los Proyectos de Software
Qué Construir? Porqué? Qué tan bien?-
Equilibrio de los requerimientos Quiénes deben
construirlo? Donde?- Asesores; Personal Propio; Agentes externos
Cómo construirlo? Cúando y en qué
orden?-procesos, métodos, herramientas, componentes.
Cómo adaptarse a los cambios-requerimientos y necesidades,
tecnología, mercado Cúanto es
suficiente?-Funcionalidad, cualidades, especificaciones,
prototipos, pruebas Ingeniería de Software Principales
Desafíos
Ingeniería de Software Enfoque tradicional versus
tendencias emergentes Orientado al Contrato su problema;
gana-pierde Secuencial focalizado en procedimientos
Programación Centrado en la disciplina y el control
Orientado a la Colaboración Nuestro problema; win-win
Ciclico y concurrente Focalizado en el riesgo (utilidades) Reuso
Mezcla de flexibilidad y disciplina.
Resumen La Ingeniería de software concierne a las
teorías, métodos y herramientas para el desarrollo,
administración y evolución de productos de
software. Los productos de software consisten de programas, datos
y documentación. Los atributos deseables de los productos
son, mantenible, confiable, eficiente y fácilmente usable.
El proceso de software consiste en aquellas actividades
involucradas en el desarrollo de software. Este proceso conforma
junto a la mantención el ciclo de vida del software.
Ingeniería de Software