Intruducción de la Ingeniería de Software

152
Ingeniería de Software Educativo ¿Para qué complicarnos si podemos hacerlo fácil? Escuela de Post-Grad Didáctica y Tecnología de la Informa Mg. Juan Antonio CARBAJAL MAYHUA

Transcript of Intruducción de la Ingeniería de Software

Page 1: Intruducción de la Ingeniería de Software

Ingeniería de Software Educativo¿Para qué complicarnos si podemos hacerlo

fácil?

Escuela de Post-GradoDidácti ca y Tecnología de la Información

Mg. Juan Antonio CARBAJAL MAYHUA

Page 2: Intruducción de la Ingeniería de Software

SensibilizaciónJuan Antonio Carbajal Mayhua

Page 3: Intruducción de la Ingeniería de Software

El por qué de esta cátedra

La ingeniería de software y la calidad

nos resultan temas apasionantes…

Ser humanamente responsable

nos resulta un reto

Intentar hacer las dos primeras sin la última

es claramente un despropósito

Page 4: Intruducción de la Ingeniería de Software

Con esta cátedra no pretendemos enseñarle a ser “humanamente

responsable”

Lo único que queremos es darle algunas ideas de “por qué

debería serlo” si se dedica usted al tema de

“hacer software”

Page 5: Intruducción de la Ingeniería de Software

¿Qué es Ingeniería de Software?

Busquemos una definición

Page 6: Intruducción de la Ingeniería de Software

La Ingeniería de Software es la aplicación práctica del conocimiento científico en el diseño y construcción

de programas de computadora y la documentación asociada requerida

para construirlos, operarlos y mantenerlos.

Bohem - 1976.

Page 7: Intruducción de la Ingeniería de Software

Ingeniería del Software es el estudio de los principios y

metodologías para desarrollo y mantenimiento de sistemas de

software.

Zelkovitz - 1978

Page 8: Intruducción de la Ingeniería de Software

La Ingeniería de Software es la aplicación de un enfoque

sistemático, disciplinado, y cuantificable al desarrollo,

operación, y mantenimiento del software.

IEEE - 1993.

Page 9: Intruducción de la Ingeniería de Software

Ingeniería de software es la disciplina o área de la informática

que ofrece métodos y técnicas para desarrollar y mantener software de

calidad.

Wikipedia

http://es.wikipedia.org/wiki/Ingenier%C3%ADa_del_software

Page 10: Intruducción de la Ingeniería de Software

Todo eso parece un concepto muy

elevado para algo que parece ser tan simple como

“hacer software”

Page 11: Intruducción de la Ingeniería de Software

Si, es cierto…

Es tan simple que puedes aprenderlo en internet, incluso trabajar en ello y ganar mucho más, que muchos de los que estudian física, matemáticas y ética…

Page 12: Intruducción de la Ingeniería de Software

¡Ups!...

Un momento, nadie dijo que lo hicieras bien, solo que también

podías hacerlo, hacer lo simple…

y… ¿Por qué conformarse con eso?

Page 13: Intruducción de la Ingeniería de Software

Quizá la Ingeniería de Software no tiene tantos años como la física, matemáticas o

arquitectura…

Page 14: Intruducción de la Ingeniería de Software

Pero créanos, tampoco se la inventaron ayer…

Page 15: Intruducción de la Ingeniería de Software

Se han preguntado alguna vez

¿Dónde hay software?

Para empezar a entender todo estohagamos una pequeña reflexión

Page 16: Intruducción de la Ingeniería de Software
Page 17: Intruducción de la Ingeniería de Software
Page 18: Intruducción de la Ingeniería de Software
Page 19: Intruducción de la Ingeniería de Software
Page 20: Intruducción de la Ingeniería de Software
Page 21: Intruducción de la Ingeniería de Software
Page 22: Intruducción de la Ingeniería de Software
Page 23: Intruducción de la Ingeniería de Software

¿Quién es un ingeniero de software?

En esta cátedra, cuando hablamos de un ingeniero de software no

hablamos de un ingeniero titulado, hablamos de una persona involucrada

en el proceso de construcción de cualquier

producto de software…

¡Hablamos de usted!

Page 24: Intruducción de la Ingeniería de Software

¿Lo duda?

Veamos que tanto lo involucra todo esto

Intente responder un par de preguntas típicas

Page 25: Intruducción de la Ingeniería de Software

¿Iría en un viaje alrededor de la tierra en globo,

sabiendo que este esta controlado

por una computadora?

Page 26: Intruducción de la Ingeniería de Software

¿Viajaría usted en un avión cuyo software ha sido construido por

usted?

Page 27: Intruducción de la Ingeniería de Software

Si estas preguntas le producen un tanto de

risa o duda, lo invitamos a

replantearse…

El tema de que nuestra profesión sea un chiste, ha sido comparado con

este video:

¿Qué pasaría si los programadores construyeran

aviones?http://www.youtube.com/watch?v=UZq4sZz56qM

Page 28: Intruducción de la Ingeniería de Software

Gracioso ¿No?

¡Pues NO!

No es gracioso que siendo un profesional tu trabajo sea tomado en broma…

El problema es

¿Qué pasa si nosotros mismos nos

tomamos nuestro trabajo en broma?

Page 29: Intruducción de la Ingeniería de Software

Comparemos…

¿Dudan los enfermos del

corazón de sus médicos

cirujanos?

Page 30: Intruducción de la Ingeniería de Software

¿Dudan los empresarios de los ingenieros civiles y

arquitectos que construyen sus

edificios?

Page 31: Intruducción de la Ingeniería de Software

¿Dudan los acusados del abogado que defenderá su inocencia?

Page 32: Intruducción de la Ingeniería de Software

¿Dudan las personas de los contadores que

les ayudan a llevar sus finanzas?

Page 33: Intruducción de la Ingeniería de Software

¿Dudas de ti? ¿Dudas de tu equipo de

trabajo?

Esto es una invitación a cuestionarse

Page 34: Intruducción de la Ingeniería de Software

La ingeniería de software es una idea casi ética (no solo ética) de como hacer el software de forma correcta (software de

calidad)

Aquí va una propuesta de una definición menos formal

Page 35: Intruducción de la Ingeniería de Software

Y hacer las cosas bien, siempre va a requerir un poco más de esfuerzo, que hacerlas de

cualquier otro modo

No hacerlo, siempre va a tener consecuencias…

Page 36: Intruducción de la Ingeniería de Software

¿Qué consecuencias?

¿Acaso en software no importa es básicamente que

funcione?

Veamos algunas respuestas a esa pregunta…

(Ojo, las siguientes imagenes son meramente ilustrativa, no todas pertenecen al hecho descrito)

Page 37: Intruducción de la Ingeniería de Software

Therac-25 (1985 – 1987)

Era una máquina empleada en terapia de radiación, producida por Atomic Energy of Canada Limited, notoria por haber sido objeto del error de software, causando al menos seis accidentes y que le costó la vida al menos a cinco personas

Page 38: Intruducción de la Ingeniería de Software

Mariner 1(28 de Julio de 1962)

Un guión en las instrucciones del programa de guiado del cohete provocó la desviación del Atlas y tuvo que enviarse un comando para su autodestrucción a los 4 minutos y 53 segundos de su lanzamiento

Page 39: Intruducción de la Ingeniería de Software

Vuelo 501 del ARIANE-5

(4 de Junio de 1996)

Otro ejemplo documentado sobre el daño ocasionado por software mal

diseñado es el de la explosión de la lanzadera Ariane-5, cuando a 40

segundos después de la iniciación de la secuencia de vuelo, la

lanzadera se desvió de su ruta, se partió y explotó. En el proyecto global se invirtieron 10 años de

construcción y 7 mil millones de euros, lo que supuso un duro golpe

para la Agencia Espacial Europea (ESA)

http://www.youtube.com/watch?v=IONcgYzVFlg

Page 40: Intruducción de la Ingeniería de Software

A-320 de Air France(26 de junio de 1988)

Durante una presentación en el meeting de Habsheim, cerca de

Mulhouse (Francia), un A-320 de Air France se estrella en el bosque, al

final de la pista. Habrá tres muertos y una centena de heridos.

Justo después, el mundo se pregunta las causas del accidente del avión anunciado como "el más

seguro del mundo".

Una de las causas se le atribuye a un error en el software de

navegación

http://www.youtube.com/watch?v=_EM0hDchVlY

Page 41: Intruducción de la Ingeniería de Software

¿Qué tal las

respuestas?

¡Nada agradables si me permiten

decirles!

Page 42: Intruducción de la Ingeniería de Software

Pues bien, aunque actualmente existen muchas personas que construyen

software con conocimiento empírico, tal como si fuera arte, lo que debe diferenciar un trabajo bien hecho

(profesional o empírico), es los métodos y la evidente forma de hacer el trabajo teniendo en mente la calidad de los

procesos ejecutados y de los productos desarrollados.

Page 43: Intruducción de la Ingeniería de Software

Usemos otra analogía para entenderde que estamos hablando…

Page 44: Intruducción de la Ingeniería de Software

Si una edificación fuera nuestro proyecto…

¿Qué necesitaríamos para construirlo?

Page 45: Intruducción de la Ingeniería de Software

Veamos…

HerramientasPersonasTiempoDinero

RecursosEstrategia

Page 46: Intruducción de la Ingeniería de Software

Parece intuitivo ¿No?

Page 47: Intruducción de la Ingeniería de Software

Sin embargo sabemos que en realidad, es un poco más difícil de

lo que imaginamos

Page 48: Intruducción de la Ingeniería de Software

Pues bien lo mismo sucede con la construcción de software…

Para desarrollar software existen una serie de roles asociados,

encargados de analizar, planificar y establecer, qué es lo que va a desarrollarse, cómo, con cuantos recursos, en cuanto tiempo e

incluso a que nivel de calidad, es lo que conocemos como el Proceso

Software

Page 49: Intruducción de la Ingeniería de Software

El Proceso de Software es el conjunto de actividades que se realizan para la construcción, liberación y evolución de un

producto de software, comenzando con el estudio de una idea y finalizando con el retiro final

del sistema.

Page 50: Intruducción de la Ingeniería de Software

Pressman

Actividades

PersonasHerramientas

Roles ArtefactosNotación

Practicas y Principios

Proceso de Software

Page 51: Intruducción de la Ingeniería de Software

Proceso de [email protected]

Page 52: Intruducción de la Ingeniería de Software

El ciclo de vida describe los estados por los que pasa un

producto de software, desde su concepción hasta su muerte.

Ciclo de Vida Clásico

Page 53: Intruducción de la Ingeniería de Software

Análisis

Diseño

Construcción

Pruebas

Operación y Mantenimie

nto

Ciclo de Vida Clásico

Page 54: Intruducción de la Ingeniería de Software

Existe una gran la variedad de propuestas de proceso de

software, sin embargo el conjunto de actividades fundamentales

definidas en el Ciclo de Vida Clásico se encuentran presentes

en todos ellos.

Conozcamos algunas…

Page 55: Intruducción de la Ingeniería de Software

Métodologías Estructuradas

Page 56: Intruducción de la Ingeniería de Software

RUP

Page 57: Intruducción de la Ingeniería de Software

Microsoft

SolutionsFramework

MSF

Page 58: Intruducción de la Ingeniería de Software

Métodologías Ágiles

Page 59: Intruducción de la Ingeniería de Software

AUPSCRUMXP

Individuos e Interacciones

Software que funciona

Colaboración con el cliente

Responder ante el cambio

Procesos y herramientas

Documentación exhaustiva

Negociación de contratos

Seguimiento de un plan

sobre

sobre

sobre

sobre

Manifiesto Ágil

Page 60: Intruducción de la Ingeniería de Software

No existe un proceso de desarrollo de software universal que sea

efectivo para todos los contextos de proyectos de desarrollo, de allí que sea necesario elegir cual de

ellos es más conveniente, teniendo en cuenta algunos criterios…

Page 61: Intruducción de la Ingeniería de Software

Criterios de selección

Page 62: Intruducción de la Ingeniería de Software

Complejidad

Page 63: Intruducción de la Ingeniería de Software

Costo/Beneficio Económico

Page 64: Intruducción de la Ingeniería de Software

Robustez del software

Page 65: Intruducción de la Ingeniería de Software

Conocimiento disponible

Page 66: Intruducción de la Ingeniería de Software

Roles del [email protected]

Page 67: Intruducción de la Ingeniería de Software

El desarrollo de software es una actividad que, dada su complejidad, debe desarrollarse en grupo.

Además, esta actividad requiere de distintas capacidades, las que no se encuentran todas en

una sola persona. Por ello, se hace necesario formar el grupo de desarrollo con las personas que cubran todas las capacidades requeridas.

Cada una de esas personas aportará al grupo parte del total de las capacidades necesarias para llevar a

cabo con éxito el desarrollo.

Page 68: Intruducción de la Ingeniería de Software

Con el tema de los

roles tampoco debemos permitir que nos suceda esto…

Page 69: Intruducción de la Ingeniería de Software

Gerente de Proyectos

Page 70: Intruducción de la Ingeniería de Software

Analista Funcional

Page 71: Intruducción de la Ingeniería de Software

Arquitecto de Software

Page 72: Intruducción de la Ingeniería de Software

Analista Diseñador

Page 73: Intruducción de la Ingeniería de Software

Analista Programador

Page 74: Intruducción de la Ingeniería de Software

Analista de Pruebas

Page 75: Intruducción de la Ingeniería de Software

Revisor

parUsuari

o

Líder técnico

Otros Roles

Page 76: Intruducción de la Ingeniería de Software

Dinámica Vivencial (Procesos y Roles)www.juancarbajalm.net

Page 77: Intruducción de la Ingeniería de Software

Dinámica de Grupos

• Se requieren 3 grupos de 4 personas cada uno

• Cada grupo recibirá unos materiales (hoja de números, resaltador, marcador y unas tijeras) y un conjunto de

instrucciones a seguir

• Cada grupo debe leer sus instrucciones en silencio y sin conversar entre los integrantes a menos que así lo indique la

hoja de instrucciones.

• Los equipos deben seguir la estrategia definida en la hoja de instrucciones sin modificarla, no debe copiarse la

estrategia de otro grupo.

• A la señal los equipos deben iniciar con las tareas que se estarán proyectando. La proyección no se devolverá.

Idea original de la dinámica: Luis Fernando Londoño

Page 78: Intruducción de la Ingeniería de Software

El tema que tiene que ver con procesos es como el habito de comer, uno puede comer de dos maneras, bien o mal en ultima instancia el fin

"para muchas personas" es llenarse…

Uno puede comer comida sana o comida chatarra y vive, puede vivir con mas dificultades pero vive,

Sin embargo "el que se alimenta bien tiene más posibilidades de sobrevivir“

Page 79: Intruducción de la Ingeniería de Software

Calidad de SoftwareUNDAC

Page 80: Intruducción de la Ingeniería de Software

¿Qué es calidad?

“Quality is Value to some person”

Gerald Weinberg

Page 81: Intruducción de la Ingeniería de Software

¿Les ha ocurrido esto?

Lo sentimos por un error en el sistema, no podemos

darle la información que necesita. Por favor regrese

otro día…

Page 82: Intruducción de la Ingeniería de Software

¿Nos tenemos que acostumbrar?

¿Qué están haciendo para

corregirlo?

¿Siempre vamos a vivir con estos

errores?

Page 83: Intruducción de la Ingeniería de Software

“Cambiar la primera impresión es muy difícil”

“Perder la confianza es fácil, volverla a recuperar cuesta”

Dichos populares

Page 84: Intruducción de la Ingeniería de Software

Portabilidad

Mantenibilidad

Eficiencia

Usabilidad

Confiabilidad

Funcionalidad

}ISO / IEC 9126

¿Cuáles son las características de calidad para productos de software?

Page 85: Intruducción de la Ingeniería de Software

Funcionalidad

¿Las funciones y propiedades satisfacen las necesidades

explícitas e implícitas?

Page 86: Intruducción de la Ingeniería de Software

Funcionalidad{Adecuación

Exactitud

Interoperabilidad

Conformidad

Seguridad

Page 87: Intruducción de la Ingeniería de Software

Confiabilidad

¿Puede mantener el nivel de rendimiento, bajo

ciertas condiciones y por cierto tiempo?

Page 88: Intruducción de la Ingeniería de Software

Confiabilidad{Nivel de Madurez

Tolerancia a Fallas

Recuperación

Page 89: Intruducción de la Ingeniería de Software

Usabilidad¿El software es fácil de

usar y aprender?

Page 90: Intruducción de la Ingeniería de Software

Usabilidad{Comprensibilidad

Facilidad para Aprender

Operabilidad

Page 91: Intruducción de la Ingeniería de Software

Eficiencia¿Es rápido y minimalista en cuanto al uso de recursos?

Page 92: Intruducción de la Ingeniería de Software

¿Cuáles son las características de calidad para productos de software?

Eficiencia{ Comportamiento con respecto al tiempo

Comportamiento con respecto a recursos

Page 93: Intruducción de la Ingeniería de Software

Mantenibilidad

¿Es fácil de modificar y verificar?

Page 94: Intruducción de la Ingeniería de Software

Mantenibilidad{Capacidad de Análisis

Capacidad de Modificación

Estabilidad

Facilidad de Pruebas

Page 95: Intruducción de la Ingeniería de Software

Portabilidad

¿Es fácil de transferir de un sistema a otro?

Page 96: Intruducción de la Ingeniería de Software

Portabilidad{Adaptabilidad

Facilidad de Instalación

Conformidad

Capacidad de Reemplazo

Page 97: Intruducción de la Ingeniería de Software

Requirement Analysis Acceptance Testing

Coding Unit Testing

Module Design

Integration Testing

Architecture Design

System Design System Testing

¿Cómo mejoramos la calidad?

ProcesoPr

oduc

to

Page 98: Intruducción de la Ingeniería de Software

ConclusionesLa calidad no se debe dejar para el final,

es una actividad transversal a todo el proceso

Page 99: Intruducción de la Ingeniería de Software

Es muy valiosa la percepción del usuario, pues es quien trabaja y recibe nuestro producto.

Es común ver software hechos para quienes lo desarrollaron y no para quienes lo van a usar

Conclusiones

Page 100: Intruducción de la Ingeniería de Software

El ser humano cuenta con una gran capacidad para crear hábitos.

Creemos hábitos para construir software con calidad

Conclusiones

Page 101: Intruducción de la Ingeniería de Software

¿La ingeniería de software está en pañales?No tanto, ya existen muchos trabajos y

estudios en torno a ella, de nosotros depende su adopción, para que esta

disciplina siga madurando.

Conclusiones

Page 102: Intruducción de la Ingeniería de Software

La calidad es exigida por

todas las partes.

Si la exigimos

debemos colaborar

con ella.

Page 103: Intruducción de la Ingeniería de Software

Dinámica Vivencial (Calidad de Software)

Page 104: Intruducción de la Ingeniería de Software

¿Qué atributos de calidad tendrían los siguientes elementos?

Idea original de la dinámica: @betancurEstas imágenes son usadas con propósitos exclusivamente educativos

Page 105: Intruducción de la Ingeniería de Software

Errores TípicosUNDAC

Page 106: Intruducción de la Ingeniería de Software

Los principios y practicas que pueden seguirse en la Ingeniería de

Software, buscan garantizar un mejor resultado y uso de los

recursos

Pero, por alguna razón el comportamiento de los

proyectos no es “aún” el esperado…

Page 107: Intruducción de la Ingeniería de Software
Page 108: Intruducción de la Ingeniería de Software

¿Quién dice que siempre sale

mal?

A pues no, no siempre sale

mal…

Solo algunas veces

Page 109: Intruducción de la Ingeniería de Software

Fuente: http://vidanp.wordpress.com/2010/02/01/estandares-de-medida/

CHAOS Report (Estudio de Resultado de Ejecución de los Proyectos de

Software)

Page 110: Intruducción de la Ingeniería de Software

Seguimos cayendo en

los mismos errores

una y otra vez…

Page 111: Intruducción de la Ingeniería de Software

Pues bien, muchos de estos errores son aducidos

principalmente a falta de planeación y buen análisis, cosa que tiene mucho sentido pero que sin embargo, no es la

única razón…

Como seres humanos involucrados en el Proceso de Software, cometemos

errores que de no ser corregidos a tiempo, van aumentando su costo y

consecuencias

Page 112: Intruducción de la Ingeniería de Software

¿Qué errores se comenten?

Page 113: Intruducción de la Ingeniería de Software

Falta de comunicación

Page 114: Intruducción de la Ingeniería de Software

Ausencia de objetivos y metas claras durante la ejecución del proyecto

Page 115: Intruducción de la Ingeniería de Software

Falta de planificación

Page 116: Intruducción de la Ingeniería de Software

Falta de análisis y entendimiento de las necesidades del cliente

Page 117: Intruducción de la Ingeniería de Software

Requisitos poco claros y falta de acceso a la información

Page 118: Intruducción de la Ingeniería de Software

Mala estimaciónde tiempos

Page 119: Intruducción de la Ingeniería de Software

Indefinición del alcance y las responsabilidades de las

partes

Page 120: Intruducción de la Ingeniería de Software

Falta de identificación y gestión de los

riesgos

Page 121: Intruducción de la Ingeniería de Software

Carencia de habilidades en la ejecución de un rol

Page 122: Intruducción de la Ingeniería de Software

Falta de seguimiento al avance del proyecto

Page 123: Intruducción de la Ingeniería de Software

Falta de control del presupuesto

Page 124: Intruducción de la Ingeniería de Software

Recursos Insuficientes

Page 125: Intruducción de la Ingeniería de Software

Tratar de construir sin tener una arquitectura definida

Page 126: Intruducción de la Ingeniería de Software

Falta de conocimiento e interés en la aplicación de mejores

prácticas

Page 127: Intruducción de la Ingeniería de Software

Hasta ahora hemos hablando de conceptos generales, en la primera

etapa, la etapa de análisis, hay muchas tareas por hacer…

Para poner manos a la obra empezaremos por una tarea muy importante, la identificación de

las necesidades del cliente

Page 128: Intruducción de la Ingeniería de Software

Ingeniería de Requisitos

Page 129: Intruducción de la Ingeniería de Software

La ingeniería de software comprende una serie de actividades

lo suficientemente diversas como para poder considerar la necesidad

de otras ingenierías dentro de la propia Ingeniería de software, la

Ingeniería de Requisitos es una de ellas.

Page 130: Intruducción de la Ingeniería de Software

Si, Ingeniería de Requisitos y NO

de

Requerimientos

Page 131: Intruducción de la Ingeniería de Software

Un requisito por definición es: una condición necesaria para algo.

Podemos entenderlo en nuestro caso como un enunciado que identifica una capacidad,

característica o factor de calidad de un sistema con el fin de que tenga utilidad para un cliente o

usuario.

Page 132: Intruducción de la Ingeniería de Software

¿Les ha ocurrido?¿De quien es el error?

Page 133: Intruducción de la Ingeniería de Software

#OffTopic

¡Aquí otro ejemplo de problemas

en la definición

de requisitos!

Page 134: Intruducción de la Ingeniería de Software

“La parte más difícil de construir de un sistema software es decidir qué construir. [..] Ninguna otra parte del trabajo afecta más negativamente al sistema final si se realiza de manera incorrecta. Ninguna otra parte es más difícil de rectificar después”

Roger S. Pressman

Page 135: Intruducción de la Ingeniería de Software

“No se puede conocer la solución de un problema si

antes no se conoce el problema.”

Mirador - Monterrey, México 1994

Page 136: Intruducción de la Ingeniería de Software

Importancia de los Requisitos

• Mostrar que resultados quieren los participantes

• Dar a los participantes oportunidad de decir que quieren

• Representar diferentes puntos de vista• Probar el diseño• Medir el progreso• Aceptar productos contra criterios precisos

Page 137: Intruducción de la Ingeniería de Software

Elicitación de Requisitos

Especificación de todos los requisitos de un sistema, restricciones y condiciones definidas por los usuarios para el

correcto, eficiente, y eficaz funcionamiento del sistema a construir.

Page 138: Intruducción de la Ingeniería de Software

Técnicas de Elicitación de Requisitos

Lectura de informaciónCuestionarios y encuestasObservaciónEntrevistasLluvia de Ideas JAD (Joint Application Design - Desarrollo

Conjunto de Aplicaciones) Modelos y/o prototipado Ingeniería reversa

Page 139: Intruducción de la Ingeniería de Software

¿Quiénes debería estar involucrados?Clientes

Usuarios

AnalistasDirectoresde Proyecto

Desarrolladores Arquitectos

Reguladores Expertos

Page 140: Intruducción de la Ingeniería de Software

Hay una serie de condiciones que debe cumplir un requisito, para

ser considerado un buen requisito

Page 141: Intruducción de la Ingeniería de Software

Características de los Requisitos

Comprensible por Clientes y UsuariosCorrectoNo AmbiguoCompletoConsistenteVerificableRastreableAnotado con Importancia y Estabilidad Independiente del Diseño e

Implementación

Page 142: Intruducción de la Ingeniería de Software

Hagamos un ejercicio, para empezar a practicar… ¡Juguemos!

Page 143: Intruducción de la Ingeniería de Software
Page 144: Intruducción de la Ingeniería de Software

¿Conocen el juego?

Si lo conocen, vamos a recordar, si no, vamos a aprender, ¡Como niños!

Page 145: Intruducción de la Ingeniería de Software

Escaleras y Serpientes

• Esta es la “Especificación” que se da a un niño de 5 años para que participe en el juego.

– Los jugadores se sitúan en la casilla de salida. – Empieza a jugar quien mayor puntuación obtenga.– El turno avanza de derecha a izquierda.– Cada jugador lanza por turnos y avanza con su ficha

tantas casillas como puntos saque.– Si cae en una casilla situada al pie de las escaleras,

avanza hasta el final de la misma.– Si cae en la casilla ocupada por la cabeza de la

serpiente, retrocede hasta la cola.

Page 146: Intruducción de la Ingeniería de Software

¿Todo está claro?

Page 147: Intruducción de la Ingeniería de Software
Page 148: Intruducción de la Ingeniería de Software

De acuerdo a la “Especificación”

• ¿Cual es el objetivo del juego?• ¿Cual es la casilla de salida?• ¿Cual es la ultima casilla?• ¿Con cuantos dados se juega?• Y es que, ¿Quién dijo que eran dados?• ¿Hacia que dirección se avanza?• ¿Cuantos jugadores pueden participar?• Si se para en la cabeza ¿Retrocede hasta la cola?

Page 149: Intruducción de la Ingeniería de Software

¡Ouch!Lo mismo sucede con las especificaciones de

requisitos cuando son entregadas a los desarrolladores para que estos construyan los

sistemas.

Los desarrolladores no tienen la información suficiente para poder llevar a cabo bien su tarea, y si para colmo, cometen el error de suponer aquello

que no saben, tenemos un problema mayor.“El sentido común, el es menos común de los

sentidos”, y tiene una alta probabilidad de no coincidir con las necesidades de los usuarios.

Page 150: Intruducción de la Ingeniería de Software

¿Lo intentamos?

Workshop de Requisitos

Page 151: Intruducción de la Ingeniería de Software

Quedan muchos temas por aprender…

Análisis, Modelamiento, Diseño y Arquitectura, Mejores Practicas de Codificación, Integración Continua,

Pruebas de Software y más.

Esperamos haber sembrado en ustedes la inquietud de aprender mucho más sobre

Ingeniería de Software

Page 152: Intruducción de la Ingeniería de Software

¡Gracias!