Ingenieria De Software
Enviado por • 20 de Septiembre de 2013 • 1.720 Palabras (7 Páginas) • 338 Visitas
Desarrollo del Tema
Metodologías usadas en Ingeniería de Software
Un objetivo de décadas ha sido el encontrar procesos y metodologías, que sean sistemáticas, predecibles y repetibles, a fin de mejorar la productividad en el desarrollo y la calidad del producto software, algunas de estas metodologías son:
Programación estructurada sol desde 1969
Programación estructurada Jackson desde 1975
Structured Systems Analysis and Design Methodology (SSADM) desde 1980
Structured Analysis and Design Technique (SADT) desde 1980
Ingeniería de la información (IE/IEM) desde 1981
Rapid application development (RAD) desde 1991.
Programación orientada a objetos (OOP) a lo largo de la década de los 90's
Virtual finite state machine (VFSM) desde 1990s
Dynamic Systems Development Method desarrollado en UK desde 1995.
Scrum (desarrollo), en la última parte de los 90's
Rational Unified Process (RUP) desde 1999.
Extreme Programming(XP) desde 1999
Enterprise Unified Process (EUP) extensiones RUP desde 2002
Agile Unified Process (AUP) desde 2005 por Scott Ambler
Cada metodología de desarrollo de software tiene más o menos su propio enfoque para el desarrollo de software. Estos son los enfoques más generales, que se desarrollan en varias metodologías específicas. Estos enfoques son los siguientes:
Modelo en cascada: Framework lineal.
Prototipado: Framework iterativo.
Incremental: Combinación de framework lineal e iterativo.
Espiral: Combinación de framework lineal e iterativo.
RAD: Rapid Application Development, framework iterativo.
Con el pasar de los años se han hecho diferentes combinaciones para llevar a buen Puerto cada una de las metodologías con el desarrollo de software en la vida real, con esto tenemos el nacimiento del desarrollo ágil de software, en mi caso personal me ha tocado trabajar mucho con la metodología “MSF for agile software development” el cual está totalmente orientado a CMMI.
MSF – Microsoft Solution Framework
CMMI - Capability maturity model integration
El desarrollo ágil de software son métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requerimientos y soluciones evolucionan mediante la colaboración de grupos auto organizados y multidisciplinarios. Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos desarrollando software en lapsos cortos. El software desarrollado en una unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas. Cada iteración del ciclo de vida incluye: planificación, análisis de requerimientos, diseño, codificación, revisión y documentación. Una iteración no debe agregar demasiada funcionalidad para justificar el lanzamiento del producto al mercado, sino que la meta es tener una «demo» (sin errores) al final de cada iteración. Al final de cada iteración el equipo vuelve a evaluar las prioridades del proyecto.
Los métodos ágiles enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría de los equipos ágiles están localizados en una simple oficina abierta, a veces llamadas "plataformas de lanzamiento" (bullpen en inglés). La oficina debe incluir revisores, escritores de documentación y ayuda, diseñadores de iteración y directores de proyecto. Los métodos ágiles también enfatizan que el software funcional es la primera medida del progreso. Combinado con la preferencia por las comunicaciones cara a cara, generalmente los métodos ágiles son criticados y tratados como "indisciplinados" por la falta de documentación técnica.
Microsoft Solution Framework en la vida real
Actividades y entregables del modelo de trabajo del MSF
Principales “milestones” Fase del modelo Principales actividades
Visión / Aprobada visión Establecer la visión del proyecto y levantar los requerimientos
Plan de proyecto aprobado Planeación Desarrollar especificaciones funcionales y un plan de desarrollo
Poner fecha para él “release”
visión de todos los entregables Desarrollo Completar el diseño
Implantar y probar el código
Desarrollar la documentación
Desarrollar la capacitación
Prepararse para la prueba Beta
“Release” Estabilización Completar las pruebas del sistema
Completar toda la presentación
Responsabilidades de los roles de equipo del modelo MSF
Rol Visión Aprobada Plan de Proyecto aprobado Visión completada “Release”
Product management Escribir el documento de visión Contribuir al diseño conceptual Administrar las expectativas del cliente
Coordinar la versión beta y la entrega del producto
Program management Desarrollar las metas del diseño, factores de éxito, conceptos de métricas y soluciones.
Establecer la infraestructura del proyecto. Hacer el bosquejo de la especificación funcional.
Diseño lógico especifico (en términos de negocio)
Construir un plan y calendarización para las siguientes fases
Poner la fecha de entrega
Administrar las especificaciones
Darle seguimiento al proyecto, comunicar el status del mismo
Reparar el plan beta
Coordinar el plan de testing Seguimiento al status y coordinación y calendarización del release
Development Aporta consultoría en elementos que le competen Evaluar las tecnologías
Participa en el diseño físico
Desarrolla pruebas de concepto o implantación de prototipos
Estima esfuerzos y tiempos en las tareas y define los mismos Desarrolla elementos del producto, demos, y prototipos operacionales
Construye release internos
Optimiza el código
Contribuye a las pruebas del testing Repara defectos
Realiza los documentos de diseño y especificaciones del producto
User education Establece la estrategia para el rendimiento del sistema, diseño visual y entrenamiento Evaluación del diseño para el rendimiento del sistema.
Planea y calendariza en un documento sus actividades
Construye y revisa la documentación, gráficas y materiales para impartir el curso
Contribuye a las pruebas con el testing
Da el entrenamiento
Administra el rendimiento del sistema
Testing Evalúa los acuerdos de la visión, que se cumplan Evalúa el diseño
Planea las pruebas y desarrolla el calendario para la siguiente fase
Evalúa el plan de desarrollo y el calendario para testing Ejecuta pruebas y reporta los resultados
Verifica bugs
Verifica el rendimiento
...