Documente Academic
Documente Profesional
Documente Cultură
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)
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
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
Quiz la Ingeniera de Software no tiene tantos aos como la fsica, matemticas o arquitectura
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?
Gracioso No?
Pues NO!
No es gracioso que siendo un profesional tu trabajo sea tomado en broma El problema es
Comparemos
Dudan los enfermos del corazn de sus mdicos cirujanos?
Dudan los empresarios de los ingenieros civiles y arquitectos que construyen sus edificios?
Dudan las personas de los contadores que les ayudan a llevar sus finanzas?
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
Qu consecuencias?
(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
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.
Veamos
Herramientas Personas Tiempo Dinero Recursos Estrategia
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)
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
Conocimiento disponible
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 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
Calidad de Software
Cristian Aroca (@caroca315)
Qu es calidad?
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?
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
Usabilidad
El software es fcil de usar y aprender?
Comprensibilidad
Usabilidad
Eficiencia
Es rpido y minimalista en cuanto al uso de recursos?
Eficiencia
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
Requirement Analysis
System Design
System Testing
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.
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
CHAOS Report
(Estudio de Resultado de Ejecucin de los Proyectos de Software)
Fuente: http://vidanp.wordpress.com/2010/02/01/estandares-de-medida/
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
Falta de planificacin
Recursos Insuficientes
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
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.
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.
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
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.
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
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.
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
Gracias!