Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Conceptos
Modelos de Ciclo de Vida del software
Modelo en Cascada Modelo en Espiral
PreDesarrollo
Desarrollo
PostDesarrollo
Modelo en Cascada
Iniciacin Exploracin de Conceptos Asignacin del Sistema Requerimientos Diseo Implementacin Verificacin & Validacin Instalacin Operacin & Soporte
Modelo en Cascada
Royce 1970
Las fases no inician hasta que las anteriores se han terminado completamente Se congelan partes del desarrollo como la especificacin, para continuar con las siguientes etapas Inflexibilidad : difcil de responder a los cambios del cliente
Modelo en Espiral
Determine objectiv es, alternativ es, & constr aints
Risk analysis Risk analysis Risk analysis P1 Prototype2 Prototype1 Requirements plan Concept of operation Prototype3
Software Requirements
Detailed Design
Code
Integration plan
Modelo Evolutivo
Se desarrolla una implementacin inicial que es expuesta a los comentarios del usuario y se refina a travs de versiones hasta llegar al sistema adecuado Tipos de desarrollo evolutivo :
Desarrollo exploratorio : Se trabaja con el cliente para entender los requerimientos y el producto evoluciona agregando nuevos atributos a partir de la constante evaluacin de dicho cliente. Prototipos desechables: Se construyen prototipos para los requerimientos que no se entienden del todo
Madurez de un proceso
CMM (Capability Maturity Model) del SEI y SPICE (software Process Improvement and Capability dEtermination) IEC 1504
Nivel Nivel Nivel Nivel Nivel 1 2 3 4 5 : : : : : Inicial Repetible Definido (ISO 9001) Gestionado Optimizacin
Mtricas
Iterativo e Incremental
Estimacin de Esfuerzo Manejo de Riesgos
Conceptos
Cada fase esta compuesta de ITERACIONES Iteracin: Ciclo completo de desarrollo que produce una versin (interna o externa) de un producto ejecutable (subconjunto de el producto final en desarrollo) Artefacto: elementos usados como entrada o salida para las actividades de el proceso (entregables)
1. Inicio
Empezar a conocer el problema Identificar los beneficios e impacto del sistema a construir Identificar interfaces con otros sistemas Elaborar diseo global y arquitectura Estimar esfuerzo, tiempo (costo) y riesgos Definir el alcance del sistema Preparar entorno de desarrollo
2. Elaboracin
Detallar los requerimientos Identificar y documentar todos los casos de uso Desarrollar el modelo de clases del mundo del problema Desarrollar plan para el manejo de los riesgos del proyecto (Negocio, Tecnolgicos, Recursos Humanos, funcionales) Definir plan de implementacin (iteraciones e incrementos)
3. Construccin
Escoger un conjunto de casos de uso Refinar Casos de uso (requerimientos funcionales) Refinar Modelo de clases para los casos de uso Programar los casos de uso elegidos Pruebas unitarias Ajustes Pruebas de Integracin de todo el software
IR AVANZANDO DE MANERA ITERATIVA E INCREMENTAL
4. Transicin
Pruebas de todo el sistema Configuracin y afinamiento de la plataforma de produccin Desarrollo de manuales de usuario final Desarrollo de manual de instalacin Capacitacin de usuarios finales
Pruebas
Unitarias, de integracin y del sistema Para las unitarias de caja blanca hay herramientas que automatizan las pruebas como JUnit Para las unitarias de caja negra se utilizan los casos de prueba Para las de integracin tambin se usan los casos de prueba
Qu es eXtreme Programming ?
XP es una metodologa liviana Deliberada y disciplinada Para equipos de trabajo no demasiado grandes
Origen de XP
A principios de 1990 Kent Beck propone cambios a las metodologias tradicionales. En 1996 se realiza una prueba exitosa, a este proyecto se le llamo DaimlerChrysler y dio origen a XP.
...problemas
Inversin alta en los inicios del proyecto (Peligroso) Perdida de tiempo tratando de implementar funcionalidad que ser til en el futuro. Metodologas orientadas a documentos no a satisfaccin del cliente
...problemas
Diseo complejo e Innecesario Desarrolladores con poca libertad Trabajo solitario Inconformidad con el cargo. Un proceso estandarizado no significa que sea optimo
Valores de XP
COMUNICACIN SIMPLICIDAD FEEDBACK CORAJE
COMUNICACION
Facilidad de comunicacin entre los desarrolladores. Una de las personas del equipo tiene la tarea de facilitar esta comunicacin cuando no se esta dando Coach.
SIMPLICIDAD
Realizar las tareas de la forma mas simple que pueda funcionar Evitar el miedo a la curva del costo del cambio en el tiempo. Hacer una tarea simple HOY y no una complicada que no ser usada.
FEEDBACK
Obtener retroalimentacin de manera constante, (Unit Tests) Cualquier integrante del equipo puede revisar cualquier parte del cdigo en cualquier momento. Retroalimentacin del cliente.
CORAJE
No continuar si las pruebas unitarias no funcionan. No dudar en desechar cdigo que se sospecha no va a funcionar. Simplificar al mximo
Propuestas de XP
Contratar programadores talentosos es indispensable para el proceso. Iteraciones: 1 - 4 Semanas - Tareas de 1 a 3 das mximo. Pruebas de integracin varias veces al da. Realizar cambios de manera incremental. Carga liviana
eXtreme Programming
El Juego de la Planeacin (The Planning Game) Pequeas versiones (Small Releases). Diseo Simple (Simple Design). Pruebas (Testing). Refactoring. Programacin en Parejas (Pair Programming). Propiedad Colectiva del cdigo (Collective ownership). Continua Integracin (Continuos integration). Del lado Cliente (On side Customer). Estndares de Codificacin (Coding Standards).
Practicas de XP
Juego de planeacion: Determinar el alcance del siguiente release. Lanzamientos pequeos: Sistema simple en produccin lo mas rpido posible Metfora: guiar al equipo con una historia sencilla que describe el sistema
Practicas de XP
Diseo simple Pruebas Refactoring: Reestructurar el sistema sin cambiar su comportamiento. Programacin en parejas: Todo el cdigo de produccin es escrito por dos programadores
Practicas de XP
Propiedad colectiva: Cualquiera puede cambiar el cdigo en cualquier momento. Integracin Continua: Cada vez que se completa una tarea. 40 horas por semana: Mximo numero de horas a trabajar.
Practicas de XP
Cliente en el sitio: Cliente real de la aplicacin en el lugar del desarrollo. Estndares de programacin: Determinar reglas al principio del proyecto
Programacin en parejas
Diferentes formas de solucionar problemas algortmicos, facilitan la escogencia de la solucin ms eficaz al programar. Calidad del software. Aprovechamiento del aprendizaje en parejas en el manejo de las herramientas informticas y de los temas del problema
Referencias
Booch G. et.al, El Lenguaje Unificado de Modelado, Ed. Addison Wesley Iberoamericana, Madrid 1999 eXtreme Programming www.extremeprogramming.org Larman C., UML y Patrones, Prentice Hall, Segunda Edicin, 2003 Bruegge B., Ingenieria de Software Orientada a Objetos, Ed. Prentice Hall, Mexico 2002