Sunteți pe pagina 1din 155

Taller: Ingeniera de Software

Para qu complicarnos si podemos hacerlo fcil?

Talleristas Hernn Guzmn Cristian Aroca Sorey Garca Apoyo Orlando Contreras David Ramirez Cubrimiento Angelo Cardona (Streaming) Jenny Chica (Fotografa) Pavel Espitia (Twitter y Chat) Asesor Tecnoparque Julin Guevara

Qu es Avanet?
Avanet (Academia Virtual Altruista) es una comunidad virtual abierta orientada a generar mecanismos de proyeccin y capacitacin profesional, a travs de la difusin y gestin de conocimiento, por medio de herramientas de autoaprendizaje dinmicas que faciliten la apropiacin y conservacin de este, de y hacia todas las personas que desean adquirir o fortalecer las habilidades necesarias para el desarrollo de sus actividades profesionales y laborales.

Muchos se preguntan Por qu academia? La siguiente definicin nos inspira a usar el trmino "Academia" como parte de nuestro lema y nombre:

Asociacin de personas cuyo objeto es el cultivo y el progreso de las artes, las letras, ciencia, tecnologa, etc.

Sensibilizacin
Sorey Garca (@soreygarcia)

El por qu de este taller

La ingeniera 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 despropsito

Con este taller no pretendemos ensearle a ser humanamente responsable

Lo nico que queremos es darle algunas ideas de por qu debera serlo si se dedica usted al tema de hacer software

Qu es Ingeniera de Software?
Busquemos una definicin

La Ingeniera de Software es la aplicacin prctica del conocimiento cientfico en el diseo y construccin de programas de computadora y la documentacin asociada requerida para construirlos, operarlos y mantenerlos.
Bohem - 1976.

Ingeniera del Software es el estudio de los principios y metodologas para desarrollo y mantenimiento de sistemas de software.

Zelkovitz - 1978

La Ingeniera de Software es la aplicacin de un enfoque sistemtico, disciplinado, y cuantificable al desarrollo, operacin, y mantenimiento del software. IEEE - 1993.

Ingeniera de software es la disciplina o rea de la informtica que ofrece mtodos y tcnicas para desarrollar y mantener software de calidad.
Wikipedia
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_del_software

Todo eso parece un concepto muy elevado para algo que parece ser tan simple como hacer software

Si, es cierto Es tan simple que puedes aprenderlo en internet, incluso trabajar en ello y ganar mucho ms, que muchos de los que estudian fsica, matemticas y tica

Ups!... Un momento, nadie dijo que lo hicieras bien, solo que tambin podas hacerlo, hacer lo simple

y Por qu conformarse con eso?

Quiz la Ingeniera de Software no tiene tantos aos como la fsica, matemticas o arquitectura

Pero cranos, tampoco se la inventaron ayer

Para empezar a entender todo esto hagamos una pequea reflexin

Se han preguntado alguna vez

Dnde hay software?

Quin es un ingeniero de software? En este taller, cuando hablamos de un ingeniero de software no hablamos de un ingeniero titulado, hablamos de una persona involucrada en el proceso de construccin de cualquier producto de software

Hablamos de usted!

Lo duda?
Veamos que tanto lo involucra todo esto
Intente responder un par de preguntas tpicas

Ira en un viaje alrededor de la tierra en globo, sabiendo que este esta controlado por una computadora?

Viajara usted en un avin cuyo software ha sido construido por usted?

Si estas preguntas le producen un tanto de risa o duda, lo invitamos a replantearse


El tema de que nuestra profesin sea un chiste, ha sido comparado con este video: Qu pasara si los programadores construyeran aviones? http://www.youtube.com/watch?v=UZq4sZ z56qM

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?

Comparemos
Dudan los enfermos del corazn de sus mdicos cirujanos?

Dudan los empresarios de los ingenieros civiles y arquitectos que construyen sus edificios?

Dudan los acusados del abogado que defender su inocencia?

Dudan las personas de los contadores que les ayudan a llevar sus finanzas?

Esto es una invitacin a cuestionarse

Dudas de ti? Dudas de tu equipo de trabajo?

Aqu va una propuesta de una definicin menos formal

La ingeniera de software es una idea casi tica (no solo tica) de como hacer el software de forma correcta (software de calidad)

Y hacer las cosas bien, siempre va a requerir un poco ms de esfuerzo, que hacerlas de cualquier otro modo

No hacerlo, siempre va a tener consecuencias

Qu consecuencias?

Acaso en software no importa es bsicamente que funcione?


Veamos algunas respuestas a esa pregunta

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

Therac-25
(1985 1987)

Era una mquina empleada en terapia de radiacin, 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

Mariner 1
(28 de Julio de 1962) Un guin en las instrucciones del programa de guiado del cohete provoc la desviacin del Atlas y tuvo que enviarse un comando para su autodestruccin a los 4 minutos y 53 segundos de su lanzamiento

Vuelo 501 del ARIANE-5


(4 de Junio de 1996)
Otro ejemplo documentado sobre el dao ocasionado por software mal diseado es el de la explosin de la lanzadera Ariane-5, cuando a 40 segundos despus de la iniciacin de la secuencia de vuelo, la lanzadera se desvi de su ruta, se parti y explot. En el proyecto global se invirtieron 10 aos de construccin y 7 mil millones de euros, lo que supuso un duro golpe para la Agencia Espacial Europea (ESA) http://www.youtube.com/watch?v=IONc gYzVFlg

A-320 de Air France


(26 de junio de 1988)
Durante una presentacin 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 despus, el mundo se pregunta las causas del accidente del avin anunciado como "el ms seguro del mundo". Una de las causas se le atribuye a un error en el software de navegacin http://www.youtube.com/watch?v=_E M0hDchVlY

Qu tal las respuestas?


Nada agradables si me permiten decirles!

Pues bien, aunque actualmente existen muchas personas que construyen software con conocimiento emprico, tal como si fuera arte, lo que debe diferenciar un trabajo bien hecho (profesional o emprico), es los mtodos y la evidente forma de hacer el trabajo teniendo en mente la calidad de los procesos ejecutados y de los productos desarrollados.

Usemos otra analoga para entender de que estamos hablando

Si una edificacin fuera nuestro proyecto Qu necesitaramos para construirlo?

Veamos
Herramientas Personas Tiempo Dinero Recursos Estrategia

Parece intuitivo No?

Sin embargo sabemos que en realidad, es un poco ms difcil de lo que imaginamos

Pues bien lo mismo sucede con la construccin de software Para desarrollar software existen una serie de roles asociados, encargados de analizar, planificar y establecer, qu es lo que va a desarrollarse, cmo, con cuantos recursos, en cuanto tiempo e incluso a que nivel de calidad, es lo que conocemos como el Proceso Software

El Proceso de Software es el conjunto de actividades que se realizan para la construccin, liberacin y evolucin de un producto de software, comenzando con el estudio de una idea y finalizando con el retiro final del sistema.

Practicas y Principios
Actividades

Herramientas

Personas

Proceso de Software

Roles

Notacin
Artefactos

Pressman

Proceso de Software
Hernan Guzmn (@hernandgr)

Ciclo de Vida Clsico


El ciclo de vida describe los estados por los que pasa un producto de software, desde su concepcin hasta su muerte.

Ciclo de Vida Clsico


Anlisis Diseo
Construccin

Pruebas
Operacin y Mantenimiento

Existe una gran la variedad de propuestas de proceso de software, sin embargo el conjunto de actividades fundamentales definidas en el Ciclo de Vida Clsico se encuentran presentes en todos ellos.
Conozcamos algunas

Mtodologas Estructuradas

MSF

Mtodologas giles

SCRUM
Manifiesto gil
Individuos e Interacciones Software que funciona Colaboracin con el cliente Responder ante el cambio sobre Procesos y herramientas Documentacin exhaustiva Negociacin de contratos Seguimiento de un plan

sobre

sobre

sobre

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 ms conveniente, teniendo en cuenta algunos criterios

Criterios de seleccin

Complejidad

Costo/Beneficio Econmico

Robustez del software

Conocimiento disponible

Roles del Proceso


Hernan Guzmn (@hernandgr)

El desarrollo de software es una actividad que, dada su complejidad, debe desarrollarse en grupo. Adems, 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.

Con el tema de los roles tampoco debemos permitir que nos suceda esto

Gerente de Proyectos

Analista Funcional

Arquitecto de Software

Analista Diseador

Analista Programador

Analista de Pruebas

Otros Roles
Lder tcnico

Dinmica Vivencial (Procesos y Roles) Orlando Contreras (@magicovercast)

Dinmica de Grupos
Se requieren 3 grupos de 4 personas cada uno Cada grupo recibir unos materiales (hoja de nmeros, 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 seal los equipos deben iniciar con las tareas que se estarn proyectando. La proyeccin no se devolver.
Idea original de la dinmica: Luis Fernando Londoo

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 ms posibilidades de sobrevivir

Luis Fernando Londoo

Calidad de Software
Cristian Aroca (@caroca315)

Qu es calidad?

Quality is Value to some person


Gerald Weinberg

Les ha ocurrido esto?

Lo sentimos por un error en el sistema, no podemos darle la informacin que necesita. Por favor regrese otro da

Siempre vamos a vivir con estos errores? Nos tenemos que acostumbrar?

Qu estn haciendo para corregirlo?

Cambiar la primera impresin es muy difcil


Perder la confianza es fcil, volverla a recuperar cuesta
Dichos populares

Cules son las caractersticas de calidad para productos de software?

Portabilidad Mantenibilidad Eficiencia Usabilidad Confiabilidad Funcionalidad

ISO / IEC 9126

Funcionalidad
Las funciones y propiedades satisfacen las necesidades explcitas e implcitas?

Adecuacin

Exactitud

Funcionalidad

Interoperabilidad

Conformidad
Seguridad

Confiabilidad
Puede mantener el nivel de rendimiento, bajo ciertas condiciones y por cierto tiempo?

Nivel de Madurez

Confiabilidad

Tolerancia a Fallas Recuperacin

Usabilidad
El software es fcil de usar y aprender?

Comprensibilidad

Usabilidad

Facilidad para Aprender Operabilidad

Eficiencia
Es rpido y minimalista en cuanto al uso de recursos?

Cules son las caractersticas de calidad para productos de software?

Eficiencia

Comportamiento con respecto al tiempo


Comportamiento con respecto a recursos

Mantenibilidad
Es fcil de modificar y verificar?

Mantenibilidad

Capacidad de Anlisis

Capacidad de Modificacin
Estabilidad

Facilidad de Pruebas

Portabilidad
Es fcil de transferir de un sistema a otro?

Adaptabilidad

Portabilidad

Facilidad de Instalacin Conformidad Capacidad de Reemplazo

Cmo mejoramos la calidad?


Acceptance Testing

Requirement Analysis

System Design

System Testing

Architecture Design Integration Testing Module Design

Coding

Unit Testing

Conclusiones
La calidad no se debe dejar para el final, es una actividad transversal a todo el proceso

Conclusiones
Es muy valiosa la percepcin del usuario, pues es quien trabaja y recibe nuestro producto. Es comn ver software hechos para quienes lo desarrollaron y no para quienes lo van a usar

Conclusiones
El ser humano cuenta con una gran capacidad para crear hbitos. Creemos hbitos para construir software con calidad

Conclusiones
La ingeniera de software est en paales? No tanto, ya existen muchos trabajos y estudios en torno a ella, de nosotros depende su adopcin, para que esta disciplina siga madurando.

Dinmica Vivencial (Calidad de Software) Orlando Contreras (@magicovercast)

Qu atributos de calidad tendran los siguientes elementos?

Estas imgenes son usadas con propsitos exclusivamente educativos Idea original de la dinmica: @betancur

Errores Tpicos
Sorey Garca (@soreygarcia)

Los principios y practicas que pueden seguirse en la Ingeniera de Software, buscan garantizar un mejor resultado y uso de los recursos
Pero, por alguna razn el comportamiento de los proyectos no es an el esperado

Quin dice que siempre sale mal?


A pues no, no siempre sale mal Solo algunas veces

CHAOS Report
(Estudio de Resultado de Ejecucin de los Proyectos de Software)

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

Seguimos cayendo en los mismos errores una y otra vez

Pues bien, muchos de estos errores son aducidos principalmente a falta de planeacin y buen anlisis, cosa que tiene mucho sentido pero que sin embargo, no es la nica razn
Como seres humanos involucrados en el Proceso de Software, cometemos errores que de no ser corregidos a tiempo, van aumentando su costo y consecuencias

Qu errores se comenten?

Falta de comunicacin

Ausencia de objetivos y metas claras durante la ejecucin del proyecto

Falta de planificacin

Falta de anlisis y entendimiento de las necesidades del cliente

Requisitos poco claros y falta de acceso a la informacin

Mala estimacin de tiempos

Indefinicin del alcance y las responsabilidades de las partes

Falta de identificacin y gestin de los riesgos

Carencia de habilidades en la ejecucin de un rol

Falta de seguimiento al avance del proyecto

Falta de control del presupuesto

Recursos Insuficientes

Tratar de construir sin tener una arquitectura definida

Falta de conocimiento e inters en la aplicacin de mejores prcticas

Hasta ahora hemos hablando de conceptos generales, en la primera etapa, la etapa de anlisis, hay muchas tareas por hacer

Para poner manos a la obra empezaremos por una tarea muy importante, la identificacin de las necesidades del cliente

Ingeniera de Requisitos Sorey Garca (@soreygarcia)

La ingeniera de software comprende una serie de actividades lo suficientemente diversas como para poder considerar la necesidad de otras ingenieras dentro de la propia Ingeniera de software, la Ingeniera de Requisitos es una de ellas.

Si, Ingeniera de Requisitos y NO de Requerimientos

Un requisito por definicin es: una condicin necesaria para algo. Podemos entenderlo en nuestro caso como un enunciado que identifica una capacidad, caracterstica o factor de calidad de un sistema con el fin de que tenga utilidad para un cliente o usuario.

Les ha ocurrido?De quien es el error?

#OffTopic Aqu otro ejemplo de problemas en la definicin de requisitos!

La parte ms difcil de construir de un sistema software es decidir qu construir. [..] Ninguna otra parte del trabajo afecta ms negativamente al sistema final si se realiza de manera incorrecta. Ninguna otra parte es ms difcil de rectificar despus
Roger S. Pressman

No se puede conocer la solucin de un problema si antes no se conoce el problema.


Mirador - Monterrey, Mxico 1994

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 diseo Medir el progreso Aceptar productos contra criterios precisos

Elicitacin de Requisitos
Especificacin 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.

Tcnicas de Elicitacin de Requisitos


Lectura de informacin Cuestionarios y encuestas Observacin Entrevistas Lluvia de Ideas JAD (Joint Application Design - Desarrollo Conjunto de Aplicaciones) Modelos y/o prototipado Ingeniera reversa

Quines debera estar involucrados?


Clientes

Directores de Proyecto

Analistas

Desarrolladores

Arquitectos

Reguladores
Usuarios

Expertos

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

Caractersticas de los Requisitos


Comprensible por Clientes y Usuarios Correcto No Ambiguo Completo Consistente Verificable Rastreable Anotado con Importancia y Estabilidad Independiente del Diseo e Implementacin

Hagamos un ejercicio, para empezar a practicar Juguemos!

Conocen el juego?
Si lo conocen, vamos a recordar, si no, vamos a aprender, Como nios!

Escaleras y Serpientes
Esta es la Especificacin que se da a un nio de 5 aos para que participe en el juego.
Los jugadores se sitan en la casilla de salida. Empieza a jugar quien mayor puntuacin 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.

Todo est claro?

De acuerdo a la Especificacin
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, Quin dijo que eran dados? Hacia que direccin se avanza? Cuantos jugadores pueden participar? Si se para en la cabeza Retrocede hasta la cola?

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 informacin 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 comn, el es menos comn de los sentidos, y tiene una alta probabilidad de no coincidir con las necesidades de los usuarios.

Lo intentamos?

Workshop de Requisitos

Quedan muchos temas por aprender


Anlisis, Modelamiento, Diseo y Arquitectura, Mejores Practicas de Codificacin, Integracin Continua, Pruebas de Software y ms.
Esperamos haber sembrado en ustedes la inquietud de aprender mucho ms sobre Ingeniera de Software

Gracias!

S-ar putea să vă placă și