3 - T1 - A2 - Metodologías para El Desarrollo IS
3 - T1 - A2 - Metodologías para El Desarrollo IS
Sistema de contenidos
Concepto de metodología para el desarrollo de software
Clasificación de las metodologías para el desarrollo de software
Características de las metodologías para el desarrollo de software
Introducción
Lograr la construcción de un sistema informático eficiente, que cumpla con los
requerimientos planteados, es una tarea realmente intensa y sobre todo difícil de cumplir.
Las metodologías para el desarrollo del software imponen un proceso disciplinado sobre el
desarrollo de software con el fin de hacerlo más predecible y eficiente. Una metodología de
desarrollo de software tiene como principal objetivo aumentar la calidad del software que
se produce en todas y cada una de sus fases de desarrollo. No existe una metodología de
software universal, ya que toda metodología debe ser adaptada a las características de cada
proyecto (equipo de desarrollo, recursos, etc.) exigiéndose así que el proceso sea
configurable. Las metodologías de desarrollo se pueden dividir en dos grupos de acuerdo
con sus características y los objetivos que persiguen: ágiles y robustas.
proyecto. Por lo que utilizar las metodologías implica mejoras en los procesos de desarrollo,
en el producto y en la satisfacción del cliente.
Tipos de metodologías
La comparación y clasificación de metodologías no es una tarea sencilla debido a la
diversidad de propuestas y diferencias en el grado de detalle, la información disponible y
alcance de cada una de ellas.
Si se toma como criterio las notaciones utilizadas para especificar artefactos producidos en
actividades de análisis y diseño, se pueden clasificar las metodologías en dos grupos:
Metodologías Estructuradas y Metodologías Orientadas a Objetos.
Por otra parte, si se considera su filosofía de desarrollo se pueden diferenciar en
metodologías tradicionales y ágiles.
Facultad de Ingeniería
Carrera de Ingeniería Informática
Asignatura Ingeniería de Requisitos
un recurso es relativamente fácil: cuanto más identificadas se tengan las tareas que realiza
un rol, más fácil es formar a una persona en esas tareas específicas.
Entre las metodologías ágiles más destacadas hasta el momento se pueden nombrar:
XP (Extreme Programming)
Scrum
Crystal Clear
DSDM (Dynamic Systems Developmemt Method)
FDD (Feature Driven Development)
ASD (Adaptive Software Development)
XBreed
Extreme Modeling
cualidades siempre han sido deseables, pero en el entorno de negocio actual resultan
indispensables. Este requerimiento de agilidad en las empresas, gobiernos y cualquier
otra organización provoca que el software también deba ser desarrollado de manera ágil.
Las necesidades de un cliente pueden sufrir cambios importantes del momento de
contratación de un software al momento de su entrega; y es mucho más importante
satisfacer estas últimas que las primeras. Esto requiere procesos de software diferentes
que en lugar de rechazar los cambios sean capaces de incorporarlos.
Los procesos ágiles son una buena elección cuando se trabaja con requisitos
desconocidos o variables. Si no existen requisitos estables, no existe una gran posibilidad
de tener un diseño estable y de seguir un proceso totalmente planificado, que no vaya a
variar ni en tiempo ni en dinero. En estas situaciones, un proceso adaptativo será
mucho más efectivo que un proceso predictivo. Por otra parte, los procesos de
desarrollo adaptativos también facilitan la generación rápida de prototipos y de versiones
previos a la entrega final, lo cual agradará al cliente.
Las metodologías ágiles proporcionan una serie de pautas y principios junto a técnicas
pragmáticas que puede que no curen todos los males, pero harán la entrega del
proyecto menos complicada y más satisfactoria tanto para los clientes como para los
equipos de entrega.
Entre las metodologías ágiles más destacadas hasta el momento se pueden nombrar:
• XP (Extreme Programming)
• Scrum
• Crystal Clear
• DSDM (Dynamic Systems Developmemt Method)
• FDD (Feature Driven Development)
• ASD (Adaptive Software Development)
• XBreed
• Extreme Modeling
Esta es una metodología flexible e interrelacionada con una serie de conceptos, modelos y
prácticas de uso, que controlan la planificación, el desarrollo y la gestión de proyectos
tecnológicos. MSF se centra en los modelos de proceso y de equipo dejando en un segundo
plano las elecciones tecnológicas.
MSF tiene las siguientes características:
Adaptable: es parecido a un compás, usado en cualquier parte como un mapa,
del cual su uso es limitado a un específico lugar.
Escalable: puede organizar equipos tan pequeños entre 3 o 4 personas, así como
también, proyectos que requieren 50 personas a más.
Flexible: es utilizada en el ambiente de desarrollo de cualquier cliente.
Tecnología Agnóstica: porque puede ser usada para desarrollar soluciones
basadas sobre cualquier tecnología.
MSF se compone de varios modelos encargados de planificar las diferentes partes
implicadas en el desarrollo de un proyecto: Modelo de Arquitectura del Proyecto,
Modelo de Equipo, Modelo de Proceso, Modelo de Gestión del Riesgo, Modelo de Diseño
de Proceso y finalmente el modelo de Aplicación.
Aplicando esta metodología todo proyecto es separado en cinco principales fases
Visión y Alcances.
Planificación.
Desarrollo.
Estabilización.
Implantación.
Visión y Alcances: trata uno de los requisitos fundamentales para el éxito del proyecto,
la unificación del equipo detrás de una visión común. El equipo debe tener una visión
clara de lo que quisiera lograr para el cliente y ser capaz de indicarlo en términos que
motivarán a todo el equipo y al cliente. Se definen los líderes y responsables del proyecto,
adicionalmente se identifican las metas y objetivos a alcanzar; estas últimas se deben
respetar durante la ejecución del proyecto en su totalidad, y se realiza la evaluación inicial
de riesgos del proyecto. Planificación: Es en esta fase es cuando la mayor parte de la
planeación para el proyecto es terminada. El equipo prepara las especificaciones
funcionales, realiza el proceso de diseño de la solución, y prepara los planes de trabajo,
estimaciones de costos y cronogramas de los diferentes entregables del proyecto.
Facultad de Ingeniería
Carrera de Ingeniería Informática
Asignatura Ingeniería de Requisitos
Desarrollo: Durante esta fase el equipo realiza la mayor parte de la construcción de los
componentes (tanto documentación como código), sin embargo, se puede realizar algún
trabajo de desarrollo durante la etapa de estabilización en respuesta a los resultados de
las pruebas. La infraestructura también es desarrollada durante esta fase.
Scrum
Es una metodología de desarrollo muy simple, que requiere trabajo duro, porque no
se basa en el seguimiento de un plan, sino en la adaptación continua a las circunstancias
de la evolución del proyecto.
Toma forma de las prácticas de trabajo que a partir de los 80 comienzan a adoptar algunas
empresas tecnológicas y que Nonaka y Takeuchi acuñaron como "Campos de Scrum". El
modelo Scrum, aplicado al desarrollo de software, emplea el principio de desarrollo ágil:
"desarrollo iterativo e incremental", denominando sprint a cada iteración de desarrollo.
Las prácticas empleadas por Scrum para mantener un control ágil en el proyecto son:
Revisión de las iteraciones
Desarrollo incremental
Desarrollo evolutivo
Auto-organización del equipo
Colaboración
Define un marco para la gestión de proyecto. Está especialmente indicado a proyectos con
un rápido cambio de requisitos. En Scrum inicialmente planean el contexto y un estimado
amplio de la entrega. Luego desarrollan el estimado de la entrega basado en el desarrollo
del ambiente del proyecto. El proceso del ciclo de vida de Scrum reconoce que el proceso
de desarrollo fundamental está completamente indefinido y usa mecanismos de control
para perfeccionar la flexibilidad, manipular lo imprescindible y el control del riesgo.
Facultad de Ingeniería
Carrera de Ingeniería Informática
Asignatura Ingeniería de Requisitos
Los valores que hacen posible a las prácticas de Scrum crear "campos de Scrum"
son:
• Autonomía del equipo
• Respeto en el equipo
• Responsabilidad y auto-disciplina
• Foco en la tarea
• Información transparencia y visibilidad
ICONIX
El proceso ICONIX se define como un proceso de desarrollo de software práctico. Está entre
la complejidad de RUP y la simplicidad y pragmatismo de XP, sin eliminar las tareas de
análisis y diseño que XP no contempla.
Es un proceso simplificado en comparación con otros procesos más tradicionales, que
unifica un conjunto de métodos de orientación a objetos con el objetivo de abarcar todo
el ciclo de vida de un proyecto. ICONIX presenta claramente las actividades de cada fase y
exhibe una secuencia de pasos que deben ser seguidos. Además, está adaptado a patrones
y ofrece el soporte UML, dirigido por Casos de Uso y es un proceso iterativo e incremental.
Las tres características fundamentales de ICONIX son:
Facultad de Ingeniería
Carrera de Ingeniería Informática
Asignatura Ingeniería de Requisitos
Nota: Resulta de vital importancia que estudies a profundidad todos los conceptos que
brinda el capítulo orientado en el libro de texto.
Usted puede colaborar con otro estudiante por cualquier medio que le sea útil para
responder las preguntas del ejercicio.