Metodología de James Martin
Robinson Gutiérrez
Jesús Salas
Esta metodología de desarrollo de Software es mejor conocida como Metodología RAD (Rapid Application Development) o Desarrollo rápido de Aplicaciones, y fue creada por el gurú de computación James Martin en 1991. Está orientada a disminuir radicalmente el tiempo necesario para diseñar e implementar Sistemas de Información, el RAD cuenta con una participación intensa del usuario, sesiones JAD, prototipaje, herramientas CSE integradas y generadores de código. El Rad requiere cuatro ingredientes esenciales: gerencia, gente, metodologías y herramientas.
Fases o Etapas de Metodología RAD de James Martin.
Esta metodología consta de 4 etapas a saber:
1) Etapa de Planificación de Requisitos: Esta etapa requiere que los usuarios con un vasto conocimiento de los procesos de la compañía determinen cuáles serán las funciones del sistema. Debe darse una discusión estructurada sobre los problemas de la compañía que necesitan solución.
2) Etapa de Diseño: Esta consiste de un análisis detallado de las actividades de la compañía en relación al sistema propuesto. Los usuarios participan activamente en talleres bajo la tutela de los profesionales de la informática. En ellos descomponen funciones y definen entidades asociadas con el sistema. Una vez se completa el análisis se crean los diagramas que definen las alteraciones entre los procesos y la data.
3) Construcción: En la etapa de construcción el equipo de desarrolladores trabajando de cerca con los usuarios finalizan el diseño y la construcción del sistema. La construcción de la aplicación consiste de una serie de pasos donde los usuarios tienen la oportunidad de afirmar los requisitos y repasar los resultados.
4) Implementación: Esta etapa envuelve la implementación del nuevo producto y el manejo de cambio del viejo al nuevo sistema. Se hacen pruebas comprensivas y se adiestran los usuarios.
Ventajas y Desventajas de la Metodología RAD
Ventajas | Desventajas
Ahorro dramático de tiempo durante el desarrollo del sistema. Mayor velocidad y menores costos pueden repercutir en la calidad del sistema (p.e., debido a falta de atención en controles internos).
Puede ahorrarse tiempo, dinero y esfuerzo humano. Peligrosa incoherencia entre el sistema desarrollado y el negocio, debido a la falta de información o a procesos del negocio sobreentendidos.
Estrecha correspondencia entre los requerimientos del usuario y las especificaciones del sistema.
Pueden producirse inconsistencias entre diseños internos y entre sistemas.
Trabaja muy bien cuando la velocidad de desarrollo es importante (cambios rápidos de las condiciones del negocio), o cuando lo sistemas pueden capitalizarse en oportunidades estratégicas. Posibles violaciones de estándares de programación relacionadas con nomenclaturas inconsistentes e insuficiente documentación.
Permite cambiar rápidamente el diseño de los sistemas cuando los usuarios lo demandan Dificultades con el reuso de módulos para futuros sistemas.
Los sistemas son optimizados por los usuarios involucrados en el proceso del RAD. Carencia de un diseño escalable dentro del sistema.
Se concentra en los elementos esenciales del sistema, desde el punto de vista del usuario. Falta de atención de la futura administración del sistema dentro de los sistemas existentes (p.e., falta de integración con el modelo de datos organizacional y facilidades de recuperación del sistema) . El usuario se compromete y se hace propietario del sistema. Altos costos de compromiso por parte del personal clave.
UML
Concepto:
Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.
Es importante resaltar que UML es un "lenguaje de modelado" para especificar o para describir métodos o procesos. Se utiliza para definir un sistema, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo.
Se puede aplicar en el desarrollo de software entregando gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado Racional o RUP), pero no especifica en sí mismo qué metodología o proceso usar.
UML no puede compararse con la programación estructurada, pues UML significa Lenguaje Unificado de Modelado, no es programación, solo se diagrama la realidad de una utilización en un requerimiento. Mientras que, programación estructurada, es una forma de programar como lo es la orientación a objetos, sin embargo, la programación orientada a objetos viene siendo un complemento perfecto de UML, pero no por eso se toma UML sólo para lenguajes orientados a objetos.
Fases en el desarrollo basado en UML
En la versión definitiva de la metodología publicada por Booch, Rumbaugh y Jacobson se pueden tener en cuenta las siguientes fases o etapas:
· Análisis de Requerimientos
· Diseño del sistema
· Diseño detallado
· Implementación y pruebas
Cada etapa consta de actividades que le dan cuerpo y los documentos que se esperan al final de cada una de ellas.
Cuadro Estructural UMl
El lenguaje UML se expresa con símbolos y/o agrupaciones de estos llamadas diagramas. Nos sirve fundamentalmente para crear diferentes tipos de ellos permitiéndonos ver desde diferentes perspectivas un sistema software.
Existe un tipo primordial que es “Diagrama UML” del cual heredan “Diagrama Estructural” y “Diagrama Comportamiento”, de estos a su vez heredan los trece diferentes tipos de diagramas más comunes, existiendo un tipo intermedio que serían los “Diagrama de Interacción”.
Diagramas Utilizados en UML:
En UML 2.0 hay 13 tipos diferentes de diagramas. Para comprenderlos de manera concreta, a veces es útil categorizarlos jerárquicamente, como se muestra en la figura de la derecha.
Los Diagramas de Estructura enfatizan en los elementos que deben existir en el sistema modelado:
* Diagrama de clases
* Diagrama de componentes
* Diagrama de objetos
* Diagrama de estructura compuesta (UML 2.0)
* Diagrama de despliegue
* Diagrama de paquetes
Los Diagramas de Comportamiento enfatizan en lo que debe suceder en el sistema modelado:
* Diagrama de actividades
* Diagrama de casos de uso
* Diagrama de estados
Los Diagramas de Interacción son un subtipo de diagramas de comportamiento, que enfatiza sobre el flujo de control y de datos entre los elementos del sistema modelado:
* Diagrama de secuencia
* Diagrama de comunicación, que es una versión simplificada del Diagrama de colaboración (UML 1.x)
* Diagrama de tiempos (UML 2.0)
* Diagrama global de interacciones o Diagrama de vista de interacción (UML 2.0)
Clases y Objetos.
Un objeto es una representación de una entidad, ya sea real o conceptual, con límites bien definidos y con significado dentro de un modelo. Cada objeto en un modelo se caracteriza por su estado, su comportamiento y su identidad.
El estado de un objeto es una de las posibles condiciones bajo las que el objeto puede existir. El estado de un objeto cambia con el tiempo y está definido por un conjunto de propiedades (atributos), por los valores de esas propiedades y por las relaciones que dicho objeto puede tener con otros objetos.
El comportamiento de un objeto determina la forma en que responde ante peticiones de otros objetos, y tipifica todo lo que el objeto puede hacer. El comportamiento de un objeto se materializa en el conjunto de operaciones definidas para dicho objeto.
La identidad implica que cada objeto es único, incluso si su estado es idéntico al de otro objeto.
En UML una clase es una descripción de un grupo de objetos con propiedades comunes (atributos), comportamiento común (operaciones), relaciones comunes y semántica común. Por tanto, una clase es una plantilla (template) para la creación de objetos, donde cada objeto de dicha clase será una instancia de ella (no pudiendo ser instancia de más de una clase).
Antes de describir los distintos elementos que forman parte de un diagrama de clases, es importante aclarar la forma en que dichos diagramas pueden ser utilizados durante el proceso software. A la hora de confeccionar o interpretar un diagrama de clases pueden considerarse tres perspectivas:
Conceptual: Permite representar los conceptos del dominio. Aunque dichos conceptos suelen llevar, de una forma natural, a las clases que los implementan, puede que no exista una correspondencia directa.
Especificación: Cuando se trata de representar las interfaces del software y no el software en sí.
Implementación: Es en esta perspectiva donde realmente tenemos clases, siendo ésta la perspectiva más utilizada.
Un diagrama de clases UML puede ser utilizado desde cualquiera de estas perspectivas, resulta en este caso conveniente el indicar la perspectiva de la que se trata por medio de estereotipos.
Diagrama de clases.
Los diagramas de clases son diagramas de estructura estática que muestran las clases del sistema y sus interrelaciones (incluyendo herencia, agregación, asociación, etc). Los diagramas de clase son el pilar básico del modelado con UML, siendo utilizados tanto para mostrar lo que el sistema puede hacer (análisis), como para mostrar cómo puede ser construido. El diagrama de clases de más alto nivel (main class diagram), será lógicamente un dibujo de los paquetes que componen el sistema. A su vez cada paquete tendrá un main class diagram que muestra las clases del paquete Las clases se documentan con una descripción de lo que hacen, sus métodos y sus atributos. Las relaciones entre clases se documentan con una descripción de su propósito, su cardinalidad (cuantos objetos intervienen en la relación) y su opcionalidad (cuando un objeto es opcional el que intervenga en una relación). La descripción de clases complejas se puede documentar con diagramas de estados.
Metodologia para desarrollo de sofware:
Metodología XP programación extrema:
La programación extrema XP es posiblemente el método más conocido y ampliamente utilizado. El nombre de XP fue acuñado por Beck (2000), debido a que el enfoque fue desarrollado utilizando las mejores prácticas del desarrollo iterativo y con la participación extrema del cliente. La programación extrema (XP), que algunos consideran una innovación extraordinaria y otros creen cínica (Rakitin, 2001). En la metodología extrema, todos los requerimientos se expresan como escenarios (llamados historias de usuario), los cuales se implementan directamente como una serie de tareas. Los programadores trabajan en parejas y desarrollan pruebas para cada tarea antes de escribir el código. Todas las pruebas se deben ejecutar satisfactoriamente cuando el código nuevo se integra al sistema. Existe un pequeño espacio de tiempo entre las entregas del sistema.
El desarrollo incremental se lleva a través de entregas pequeñas y frecuentes del sistema y por medio de un enfoque que sirve para la descripción de requerimientos basado en las historias del clientes o escenarios que pueden ser la base para el proceso de planificación.
La participación del cliente se lleva a cabo a través del compromiso y del tiempo completo del cliente en el equipo de desarrollo. Los colaboradores directos de los clientes participan en el desarrollo y son los responsables de definir las pruebas necesarias que servirán para la aceptación del sistema. El interés de las personas, en vez de los procesos, se lleva a través de la programación en parejas, la propiedad colectiva del código y un proceso de desarrollo sostenible que no implique excesivas jornadas de trabajo. El cambio se lleva a cabo a través de las entregas regulares del sistema, un desarrollo previamente probado y la integración continua. El mantenimiento se lleva a cabo a través de una recta actualización constante para mejorar la calidad del código y la utilización de diseños sencillos que no prevén cambios futuros en el sistema.
En XP, los clientes están implicados en la especificación y establecimiento de prioridades de los requerimientos del sistema. Dichos requerimientos no se especifica como una lista de funciones requeridas en el sistema. Más bien, los clientes del sistema son parte fundamental del equipo de desarrollo esto permite que discutan escenarios con todos los miembros del equipo. Desarrollar conjuntamente tarjetas de historia (story card) que recogen las necesidades del cliente. Por ende el equipo de desarrollo intentará implementar esos escenarios en una entrega futura del software. Un punto fundamental en la ingeniería del soporte tradicional es que se debe de diseñar para futuros. Esto es que se deben de prever los cambios futuros y diseñar éste de forma que tales cambios se puedan implementar fácilmente. La metodología XP ha descartado este principio partiendo del hecho de que diseñar para el cambio es a menudo un esfuerzo inútil. Con frecuencia los cambios previstos nunca se materializa y realmente se efectúan peticiones de cambios completamente diferentes. La metodología extrema aborda este problema sugiriendo que se debe revisar constantemente el software. Esto es, que el equipo de programación busca posibles mejoras y las implementa de forma inmediata así lo que se busca es que siempre sea fácil de entender y cambiar cuando simplemente nuevas historias.
Desarrollo adaptativo de software (DAS):
El desarrollo adaptativo software (DAS) lo propuso Jim Highsmith en 1998 como una técnica para construir software y sistemas complejos. Los apoyos filosóficos del DAS se enfocan en la colaboración humana y la organización propia del equipo. Un enfoque de desarrollo ágil y adaptativo basado en la colaboración es " una fuente de orden en las complejas interacciones entre disciplina e ingeniería". El define el ciclo de vida del DAS, como se muestra en la figura 2.29 el cual incorpora tres fases principales:
1) Especulación; en esta fase se inicia el proyecto y se conduce el ciclo adaptativo de planeación. Este último utiliza información de inicio del proyecto, es decir, el enunciado de la misión del cliente, restricciones del proyecto y los requisitos básicos. Esto permite definir el conjunto de ciclos de lanzamiento que se requerirán para el proyecto.
2) Colaboración; la gente motivada trabaja de una forma que multiplica su talento y sus salidas creativas más allá de sus números absolutos. Este enfoque de colaboración es un tema recurrente en todos los métodos ágiles, pero la cooperación no es fácil. No solamente es la comunicación, o que la comunicación es parte de ella. No sólo es un asunto de trabajo en equipo, aunque un equipo cuajado es esencial para la presencia de la colaboración real. No es un rechazo al individualismo ya que la creatividad individual representa un papel importante en el pensamiento de colaboración. Esto es, por encima de todo, una cuestión de confianza. Las personas que trabajan juntas deben confiar entre sí para:
a) Criticar de forma constructiva
b) Ayudar sin resentimientos
c) Trabajar más duro de lo que ya lo hace
d) Tener el conjunto de actitudes para contribuir al trabajo curso
e) Comunicar los problemas o preocupaciones en una forma que conduzca a la acción efectiva
3) Aprendizaje; como miembros de un equipo de DAS se comienzan a desarrollar los componentes integrantes de un ciclo adaptativo, la importancia radica en el aprendizaje y en el progreso a través de un ciclo completo. De hecho Highsmith (2002), argumenta que los desarrolladores de software a menudo sobreestima su comprensión (de la tecnología, el proceso y el proyecto), y que el aprendizaje les podré ayudar a mejorar su grado de entendimiento real. Los equipos del DAS aprenden de tres maneras:
a) Grupos enfocados. El cliente o los usuarios finales proporcionan retroalimentación sobre los incrementos de software que se entregan. Esto indica en forma directa la satisfacción o la insatisfacción de las necesidades del negocio.
b) Revisiones técnicas formales. Los miembros del equipo del DAS revisan los componentes del software desarrollado mientras mejoran su calidad y su aprendizaje.
c) Post mortem. El equipo de DAS se vuelve introspectivo al vigilar su propio desempeño y proceso con el propósito de aprender acerca de su enfoque y después mejorarlo.
Es importante destacar que la filosofía del DAS es meritoria sin importar el modelo del proceso empleado. La dinámica de la organización propia los equipos, la colaboración interpersonal y el aprendizaje individual conducen a los grupos de proyectos de software con una mayor posibilidad de éxito. darling arias y wolfang arroyo
Metodología Scrum
Dulce
Mendoza
Bryan
Rivero
En el año de 1986
Takeuchi y Nonaka publicaron el artículo “ The New Product Developroent Game”
el cual dará a conocer una nueva forma de gestionar proyectos en la que la
agilidad, flexibilidad, y la incertidumbre son los elementos principales.
Nonaka y Takeuchi se
fijaron en empresas tecnológicas que, estando en el mismo entorno en el que se
encontrabas otras empresas, realizaban productos en menos tiempo, de buena
calidad y menos costes.
Observando a empresas como
Honda, HP, Canon…etc, Se dieron cuenta de que el producto o seguía unas pases
en las que había un equipo especializado en cada una de ellas, si no que se partía
de unos requisitos muy generales y el producto lo realizaba un equipo
multisciplinar que trabajaba desde el comienzo del proyecto hasta el final.
Se comparó esta forma de
trabajo en equipo, con la colaboración que se hacen los jugadores de rugby y la
utilización de una formación denominada SCRUM.
Scrum aparece como una práctica
destinada a los productos tecnológicos y será en 1993 cuando realmente Jeff
Sutherland aplique un modelo de desarrollo de Software en Ease/Corporation.
En 1996, Jeff Surtherland
y Ken Schwaber presentaron las prácticas que se usaban como proceso formal para
el desarrollo de software y que pasarían a incluirse en la lista de Agile Alliance.
Scrum es adecuado para
aquellas empresas en las que el desarrollo de los productos se realiza entornos
que se caracterizan por tener:
1.
Incertidumbre: Sobre
esta variable se plantea el objetivo que se quiere alcanzar sin proporcionar un
plan detallado del producto.
Esto
genera un reto y da la autonomía que sirve para generar un “tensión” adecuada
para la motivación de los equipos.
2.
Auto-organización:
Los equipos son capaces de organizarse por si solos, no necesitan roles para la
gestión pero tienen que reunir las siguientes características:
·
Autonomía: Son
los encargados de encontrar la solución usando la estrategia que encuentren
adecuada.
·
Autosuperación:
Las soluciones iniciales sufrirán mejoras.
·
Auto-enriquecimiento:
Al ser equipos multidisciplinares se ven enriquecidos de forma mutua, aportando
soluciones que pueden complementarse.
3.
Control moderado:
Se establecera un control suficiente para evitar descontroles. Se basa en crear
un escenario de “autocontrol entre iguales” para no impedir la creatividad y
espontaneidad de los miembros del equipo.
4.
Transmisión del conocimiento:
Todo el mundo aprende de todo el mundo. Las personas pasan de unos proyectos a
otros así comparten sus conocimientos a lo largo de la organización.
Scrum al ser una metodología
de desarrollo ágil tiene como base la idea de creación de ciclos breves para el
desarrollo, que comúnmente se llama iteraciones y que en Scrum se llamaran “Sprints”,
Su ciclo tiene 5 fases que definen el ciclo:
1.
Concepto: Se
define de forma general las características del producto y se asigna el equipo
que se encargara de su desarrollo.
2.
Especulación: En
esta fase se hacen disposiciones con la información obtenida y se establecen
los límites que marcaran el desarrollo del producto, yales como costes y
agendas.
3.
Exploración: Se
incrementa el producto en el que se añaden las funcionalidades de la pase de especulación.
4.
Revisión: El
equipo revisa todo lo que se ha construido y se contrasta con el objetivo
deseado.
5.
Cierre: Se entregara en la fecha acordada un versión del producto deseado. Al tratarse de una versión, el cierro no indica que se ha finalizado el proyecto sino que seguirá habiendo cambios, denominados “mantenimientos”, que hará que el producto final se acerque al producto final deseado.
Cierre: Se entregara en la fecha acordada un versión del producto deseado. Al tratarse de una versión, el cierro no indica que se ha finalizado el proyecto sino que seguirá habiendo cambios, denominados “mantenimientos”, que hará que el producto final se acerque al producto final deseado.
Scrum
gestiona estas iteraciones a través de reuniones diarias, uno de los elementos
fundamentales de esta metodología
Componentes
de Scrum.
Para
entender todo lo que el proceso de desarrollo del Scrum, se describirá de forma
general las fases y roles. Estas fases y roles se detallaran de forma más
concisa mas adelante.
Scrum
se puede dividir de forma general en 3 fases, que podemos entender como
reuniones. Las reuniones forman parte de los artefactos de esta metodología
junto con los roles y elementos que lo forman.
Las
Reuniones.
1.
Planificación del
Backlog: Se definirá un documento
en el que se reflejaran los requisitos del sistema por prioridades.
En esta fase se definirá también
la planificación del Sprint 0, en la que se decidirá cuáles van a ser los
objetivos y el trabajo que hay que realizar para esa iteración.
Se obtendrá además en
esta reunión un Sprint Backlog, que es la lista de tareas y que es el objetivo más
importante del Sprint.
2.
Seguimiento del
Sprint: En esta fase se hacen las
reuniones diarias en las que las 3 preguntas principales para evaluar el avance
de las tareas serán:
·
¿Qué trabajo se realizó desde la reunión anterior?
·
¿Qué trabajo se hará hasta la nueva reunión?
· Inconvenientes que han surgido y que hay que
solucionar para poder continuar.
3.
Revisión del Sprint:
Cuando se finaliza el Sprint se
realizara una revisión del incremento que se ha generado. Se presentara los
resultados finales y una demo i versión, esto ayudara a mejorar el feedback con
el cliente.
Los
Roles.
Los roles se dividen en 2
grupos: Cerdos y Gallinas, esto surge en el chiste sobre un cerdo y una gallina
y su intención de poner un restaurante.
1. Los
Cerdos:
Son las personas que están
comprometidas con el proyecto y el proceso de Scrum.
·
Producto Owner:
Es la persona que toma las decisiones, y es la que realmente conoce el negocio
del cliente y su visión del producto. Se encarga de escribir las ideas del
cliente, las ordena por prioridad y las coloca en el Product Blaclog.
·
ScrumMaster:
Es el encargado de comprobar que el modelo y la metodología funciona. Eliminará
todos los inconvenientes que hagan que el producto no fluya e interactuara con
el cliente y con los gestores
·
Equipo De Desarrollo: Suele ser un equipo pequeño de unas 5-9 personas y
tienen autoridad para organizar y tomar decisiones para conseguir su objetivo. Está
involucrado en la estimación del esfuerzo de las tareas del blacklog.
2. Las
Gallinas:
Aunque
no son partes del proceso Scrum, es necesario que parte de la retroalimentación
de la salida del proceso y así poner revisar y planear cada Sprint.
·
Usuarios:
Es el destinatario final del producto.
·
Stakeholders:
Las personas al as que el proyecto les producirá un beneficio. Participan
durante las revisiones del Sprint.
·
Managers:
Toma decisiones finales participando en la selección de los objetivos y de los
requisitos.
Elementos
de Scrum.
Los elementos que forman Scrum son:
·
Product Blacklog:
Lista de necesidades del cliente.
·
Sprint Backlog:
Lista de tareas que se realizan en un Sprint.
·
Incremento: Parte añadida o desarrollada
en un Sprint, es una parte terminada y totalmente operativa.
Product
Blacklog.
Es el inventario en el que se almacenan todas las
funcionalidades o requisitos en forma de lista priorizada. Estos requisitos serán
los que tendrán el producto o los que ira adquiriendo en sucesivas iteraciones.
La lista será gestionada y creada por el cliente con
ayuda del Scrum Master, quien indicara el coste estimado para completar un
requisito, y además contendrá todo lo que aporte un valor final al producto.
Es necesario que antes de empezar el Sprint se definan
cuales van a ser los objetivos del producto y tener una lista de requisitos ya
definida. No es necesario que sea muy detallada, simplemente deberá contener
los requisitos principales para que el equipo pueda trabajar.
Una vez
definidos los requisitos se tendrá que acordar cuando se tiene que entender un
objetivo como terminado o completado.
Como complemento a la definición de completado, se deberá asociar una condición
de aceptación o no aceptación a cada objetivo en el mismo momento en el que se
crea la lista.
Finalmente el Product Blacklog ira evolucionando mientras
el producto exista en el mercado. Esta es la forma para evolucionar y tener un
valor del producto para el cliente suficiente para ser competitivo.
Las
Historias de Usuario.
Son las descripciones de las funcionalidades que va a
tener el software.
Estas Historias de usuarios, serán el resultado de la colaboración
entre el cliente y el equipo, e iran evolucionando durante toda la vida del
proyecto.
Las historias de usuario se componen de tres fases
denominadas “Las 3 C”:
·
Card:
Sera una breve descripción escrita que servirá como recordatorio.
·
Conversation:
Es una conversación que servirá para asegurar de que se ha entendido bien todo,
y concretar el objetivo.
·
Confirmation:
Tests funcionales para finar detalles que sean relevantes e indicar cuál va a
ser el límite.
Formato
de la Pila Del Producto (Product Blacklog).
En
Scrum, la preferencia por tener documentación en todo momento es menos estricta.
Se encuentra mas necesario el matener una comunicación directa con el equipo,
por eso se usa como herramienta el Backlog.
Aunque
no hay ningún producto especial al a hora de confeccionar la lista, es
conveniente que incluya información relativa a:
·
Identificador para
la funcionalidad.
·
Descripción de la
funcionalidad.
·
Sistema de priorización
u orden.
·
Estimación.
Sprint
Backlog.
En
esta lista de tareas que elabora el equipo durante la planificación de un
Sprint. Se asignan las tareas a cada persona y el tiempo que queda para
terminarlas.
De
esta manera el proyecto se descompone en unidades más pequeñas y se puede
determinar o ver en que tarea no se está avanzando e intentar eliminar el
problema.
Cómo
funciona la lista:
·
Es una lista
ordenada por prioridades para el cliente.
·
Puede haber
dependencias entre tareas y ora, por lo tanto se tendrán que diferenciar de
alguna manera.
·
Todas las tareas
tienen que tener un coste semejante que será entre 4-16 horas.
Formato
de la lista:
Hay
3 opciones:
·
Hojas de cálculo.
·
Pizarras.
Incremento.
Representa
los requisitos que se han completado en una iteración y que son perfectamente
operativos.
Según
los resultados que se obtengan, el cliente puede ir haciendo los cambios
necesarios y replanteando el proyecto.
METODOLOGÍA DE HALL
Nieves Lucena
Yelsy Rodriguez
I.
INTRODUCCIÓN
Uno de
los campos en donde con más intensidad se ha sentido la necesidad de utilizar
conceptos y metodologías de ingeniería de sistemas en el desarrollo de
tecnología. Esto se debe a que los sistemas técnicos, que sirven para
satisfacer ciertas necesidades de los hombres, están compuestos de elementos
interconectados entre sí de tal forma que se hace necesario pensar en términos
de sistemas, tanto para el desarrollo de nueva tecnología como para el análisis
de la ya existente.
II.
METODOLOGÍA
Los
pasos principales de la metodología de hall son:
·
Definición del Problema
·
Selección de Objetivos
·
Síntesis de Sistemas
·
Análisis de Sistemas
·
Selección del Sistema
·
Desarrollo del Sistemas
·
Ingeniería
1. DEFINICIÓN
DEL PROBLEMA.
Se
busca transformar una situación confusa e indeterminada, reconocida como
problemática y por lo tanto indeseable, en un estatuto en donde se trate de
definirla claramente. Esto sirve para:
a) Establecer
objetivos preliminares.
b) El análisis de distintos sistemas.
De
la definición del problema los demás pasos de la metodología dependen de como
haya sido concebido y definido el problema. Si la definición del problema es
distinta lo que realmente es, lo más probable es que todo lo que se derive del
estudio vaya a tener un impacto muy pobre en solucionar la verdadera
situación problemática.
La
definición del problema demanda tanta
creatividad como el proponer soluciones. El número de posibles soluciones
aumenta conforme el problema es definido en términos más amplios y que
disminuyen al aumentar el número de palabras que denotan restricciones dentro
de la restricción.
Existen
dos formas en como nacen los problemas que son resueltos con sistemas técnicos.
a) La
búsqueda en el medio ambiente de nuevas ideas, teorías, métodos, y materiales,
para luego buscar formas de utilizarlos en la organización.
b) Estudiar
la organización actual y sus operaciones para detectar y definir necesidades.
Estas
dos actividades están estrechamente relacionadas y se complementan una a otra.
INVESTIGACION DE NECESIDADES
Las
necesidades caen dentro de tres categorías.
a) Incrementar
la función de un sistema. Hacer que un sistema realice más funciones de las
actuales.
b) Incrementar
el nivel de desempeño. Hacer que un sistema sea más confiable. Más fácil de
operar y mantener, capaz de adaptarse a niveles estándares más altos.
c) Disminuir
costos, hacer que un sistema sea más eficiente.
INVESTIGACION
DEL MEDIO AMBIENTE
Se
trata de entender y describir el medio ambiente en donde se encuentra la
organización, “entre otras cosas, se realiza un peinado del medio ambiente en
búsqueda de nuevas ideas, métodos, materiales y tecnologías que puedan ser
utilizadas en la satisfacción de necesidades”. De este último se desprende que el criterio para decidir si algo que
existe en el medio ambiente es útil para la organización está en función de las
necesidades de esta última.
2. SELECCIÓN
DE OBJETIVOS.
Se
establece tanto lo que esperamos del sistema como los criterios bajo los cuales
mediremos su comportamiento y comparemos la efectividad de diferentes sistemas.
Primero
se establece que es lo que esperamos obtener del sistema, así como insumos y
productos y las necesidades que este pretenda satisfacer.
Ya
que un sistema técnico se encuentra dentro de un supra-sistema que tiene
propósitos, aquel debe ser evaluado en función de este. No es suficiente que el
sistema ayude a satisfacer ciertas necesidades. Se debe escoger un sistema de
valores relacionados con los propósitos de la organización, mediante el cual se
pueda seleccionar un sistema entre varios y optimizarlo. Los valores más
comunes son: utilidad (dinero), mercado, costo, calidad, desempeño,
compatibilidad, flexibilidad o adaptabilidad, simplicidad, seguridad y tiempo.
Los
objetivos deben ser operados hasta que sea claro como distintos resultados
pueden ser ocasionados a ellos para seleccionar y optimizar un sistema técnico.
Cuando
un sistema tiene varios objetivos que deben satisfacerse simultáneamente, es
necesario definir la importancia relativa de cada uno de ellos. Si cada
objetivo debe cumplirse bajo una serie de valores a estos también se debe
asignarse un peso relativo que nos permita cambiarlos en el objetivo
englobador.
3. SINTESIS
DEL SISTEMA.
Lo
primero que se debe hacer es buscar todas las alternativas conocidas a través
de las fuentes de información de nuestro alcance. Si el problema ha sido
definido ampliamente, el número de alternativas va hacer bastante grande. De
aquí se debe obtener ideas para desarrollar distintos sistemas que pueden
ayudarnos a satisfacer nuestras necesidades. Una vez hecho esto, se procede a
diseñar(ingeniar)distintos sistemas.
En
esta parte no se pretende que el diseño sea muy detallado. Sin embargo, debe de
estar lo suficientemente detallado de tal forma que los distintos sistemas puedan
ser evaluados.
3.1 DISEÑO
FUNCIONAL
El
primer paso es listar los insumos y productos del sistema. Una vez hecho esto,
se listan las funciones que se tiene que realizar para que dados ciertos
insumos se obtengan ciertos productos. Estas funciones se realizan o sintetizan
mostrando en un modelo esquemático de las actividades y como estas se relacionan.
Todo lo que desea en este punto es ingeniar un sistema que trabaje, la optimización
del mismo no importa tanto en este punto.
4. ANÁLISIS DE SISTEMA
4. ANÁLISIS DE SISTEMA
La
función de análisis es deducir todas las
consecuencias relevantes de los distintos sistemas para seleccionar el mejor.
La información que se obtiene en esta etapa se retroalimenta a las funciones de
selección de objetivos y síntesis de sistema. Los sistemas se analizaran en
función de los objetivos que se tengan.
4.1
COMPARACIÓN DE SISTEMAS
Una
vez que todos los sistemas han sido analizados y sintetizados, el paso
siguiente es obtener las discrepancias y similitudes que existen entre cada uno
de ellos. Existen dos tipos de comparación:
a) Comparar
el comportamiento de dos sistemas con respecto a un mismo objetivo.
b) Comparar
dos objetivos de un mismo sistema.
Antes
que se lleve a cabo la comparación entre distintos sistemas, estos deben ser
optimizados, deben estar diseñados de tal forma que se operen lo más eficientemente
posible. No se pueden comparar dos
sistemas si aún no han sido optimizados.
5.
SELECCIÓN DEL SISTEMA
Cuando el comportamiento de un sistema de
puede predecir con certidumbre y solamente tenemos un solo valor dentro de nuestra
función objetivo, el procedimiento de selección del sistema es bastante simple.
Todo lo que se tiene que hacer es seleccionar el criterio de selección. Cuando
el comportamiento del sistema no se puede predecir con certidumbre y se tienen distintos
valores en función de los cuales se va a evaluar el sistema, no existe un procedimiento
general mediante el cual se puede hacer la selección del sistema
6.
DESARROLLO DEL SISTEMA
El
desarrollo del sistema es un sistema sigue básicamente el ciclo que se muestra
en la siguiente figura:
En
base al diseño que se había hecho el sistema durante la fase de síntesis del
sistema, se hace un diseño detallado del mismo, para esto, se puede utilizar la
técnica del síntesis funcional, mencionado anteriormente. Una vez que el
sistema está en papel, hay que darle vida, desarrollarlo. El número de personas
que toman parte en esta operación depende de la magnitud del sistema. Por
ejemplo, el production control sistem (PSC) desarrollado por la borroughs tiene
invertido alrededor de 50 años-hombres.
Lógicamente,
no se puede poner en operación un sistema una vez que haya sido construido. Se
tienen que hacer pruebas para deslumbrar problemas no previstos en su
funcionamiento. En caso que no funcione como debiese, se debe investigar las
razones y tomar acciones correctivas. Estas caen dentro de dos categorías:
a) Falla
de diseño.
b) Fallas
de la construcción.
En
el primer caso, debe reportarse que fallas tienen el diseño del sistema para proceder
a hacer los cambios. En el segundo caso, debe reportarse que es lo que se construyó
mal para proceder a corregirlo.
Una
vez que el sistema funcione como se pretendía, y antes que se ponga en
operación, deben de desarrollarse documentos de que contengan información sobre
su operación, instalación y mantenimientos, entre otros.
7. INGENIERIA
En
esta etapa no consiste en un conjunto de pasos más o menos secuenciales como en
otras partes del proceso. Consiste en varios trabajos los cuales pueden ser
calificados de la siguiente forma:
a) Vigilar
la operación del nuevo sistema para mejoras en diseños futuros.
b) Corregir
fallas en el diseño,
c) Adaptar
el sistema a cambios del medio ambiente.
d) Asistencia al cliente.
d) Asistencia al cliente.
Esta
etapa dura mientas el sistema está en operación.
Metodología Espiral
Yeferson
Cardenas
Elieth
Picon
La Ingeniería de
software, se vale y establece a partir de una serie de modelos que establecen y
muestran las distintas etapas y estados por lo que pasa un producto software,
desde su concepción inicial, pasando por su desarrollo, puesta en marcha y
posterior mantenimiento, hasta la retirada del producto. A estos modelos se les
denomina «modelos de ciclo de vida del software». El primer modelo concebido
fue el de Royce, más comúnmente conocido como desarrollo en cascada o
desarrollo lineal secuencial. Este modelo establece que las diversas
actividades que se van realizando al desarrollar un producto software se
suceden de forma lineal.
PROCESO
DE DESARROLLO DE SOFTWARE
El desarrollo de un
software en sí es complejo, es usualmente no viable conseguir un 100% de
confiabilidad de un programa por pequeño que sea. Existe una gran combinación
de factores que imposibilitan realizar una verificación minuciosa de todas las
posibles situaciones de ejecución que se puedan presentar. Poniendo como
ejemplo la creación de un sistema operativo, esto es una tarea que requiere
proyecto, gestión, numerosos recursos y todo un equipo disciplinado de
trabajo.
Un desarrollo de
software es imperceptible y por lo general muy abstracto, esto pone trabas en
la definición del producto y sus requisitos, más que nada cuando no se tiene
precedentes definidos de un desarrollo de software similar. Esta situación va
hacer que los requisitos sean difíciles de consolidar con anterioridad. Es por
esto que ahora los cambios en los requisitos son inevitables, no sólo después
de entregado el producto sino también durante el proceso de desarrollo. Sea
cual fuere el proceso utilizado y aplicado al desarrollo del software, casi
siempre libremente de este proceso, se debe aplicar un modelo de ciclo de vida.
Según varias fuentes consultadas se estima que, del total de proyectos software
grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que
lo retrasan y un 26% son totalmente exitosos. Cuando un proyecto de desarrollo
de software “fracasa” (28% estadísticamente), muy rara vez es causado por
fallas técnicas, principalmente el origen de los fallos y fracasos es la falta
de aplicación de una buena metodología o procesos de desarrollo. Una fuerte
tendencia, desde hace pocos años, es mejorar las metodologías y procesos, o
crear nuevas e incentivar a los profesionales de la informática en su
aplicación adecuada, normalmente utilizan sus conocimientos especializados con
modelos, paradigmas y procesos obsoletos que ya fueron diseñados.
MODELO
ESPIRAL
El modelo espiral en el
desarrollo del software es un modelo meta del ciclo de vida del software donde
el esfuerzo del desarrollo es iterativo, tan pronto culmina un esfuerzo del
desarrollo por ahí mismo comienza otro; además en cada ejecución del desarrollo
se sigue cuatro pasos principales:
1. Determinar o
fijar los objetivos. En este paso se definen los objetivos específicos para
posteriormente identifica las limitaciones del proceso y del sistema de
software, además se diseña una planificación detallada de gestión y se
identifican los riesgos.
2. Análisis del riesgo.
En este paso se efectúa un análisis detallado para cada uno de los riesgos
identificados del proyecto, se definen los pasos a seguir para reducir los
riesgos y luego del análisis de estos riesgos se planean estrategias
alternativas.
3. Desarrollar,
verificar y validar. En este tercer paso, después del análisis de riesgo, se
eligen un paradigma para el desarrollo del sistema de software y se lo
desarrolla.
4. Planificar. En
este último paso es donde el proyecto se revisa y se toma la decisión si se
debe continuar con un ciclo posterior al de la espiral. Si se decide continuar,
se desarrollan los planes para la siguiente fase del proyecto. Con cada
iteración alrededor de la espiral, se crean sucesivas versiones del software,
cada vez más completas y, al final, el sistema de software ya queda totalmente
funcional.
La diferencia principal
entre el modelo espiral y los modelos anteriores (ej.: cascada, evolutivo,
incremental, etc.) es la evaluación del riesgo. El riesgo es todo lo que pueda
salir mal en un proyecto de desarrollo de software. Por ejemplo, si queremos
utilizar un lenguaje de programación para desarrollar un sistema operativo, un
riesgo posible es que los compiladores utilizables no produzcan un código
objeto eficiente. Los riesgos originan problemas en el proyecto, como el exceso
de los costos. Es así que, la disminución de los riesgos es una actividad muy
importante.
Un modelo espiral
comienza con la determinación de los objetivos tanto funcionales como de
rendimiento. Después se enumeran algunas formas posibles de alcanzar estos
objetivos identificando las fuentes de riesgos posibles. Luego continuamos con
el siguiente paso que es resolver estos riesgos y llevar a cabo las actividades
de desarrollo, para finalizar con la planificación del siguiente ciclo de la
espiral.
Ventajas
• Reduce riesgos del
proyecto
• Incorpora objetivos
de calidad
• Integra el desarrollo
con el mantenimiento.
• Genera mucho tiempo
en el desarrollo del sistema
• Modelo costoso
• Requiere experiencia
en la identificación de riesgos
Planificar un proyecto
con esta metodología es a menudo imposible, debido a la incertidumbre en el
número de iteraciones que serán necesarias. En este contexto la evaluación de
riesgos es de la mayor importancia y, para grandes proyectos, dicha evaluación requiere
la intervención de profesionales de gran experiencia.
El IEEE clasifica al
desarrollo en espiral como modelo no operativo en sus clasificaciones de MCV.
ACOPLAMIENTOS
DEL MODELO ESPIRAL
Los nuevos
requerimientos del sistema se definen en todo los detalles posibles, esto
implica generalmente el entrevistarse con un número determinado de usuarios que
representarán a todos los usuarios tanto externos como internos y otros
aspectos del sistema existente.
Un prototipo preliminar
se crea para el desarrollo del nuevo software partiendo de un diseño hecho del
sistema que se construyó del prototipo inicial. Esto es generalmente un sistema
scaled-down, y representa una aproximación de las características del producto
final.
Un segundo diseño de software
es desarrollado por un procedimiento cuádruple:
Evaluación del primer
prototipo en términos de sus fuerzas, debilidades, y riesgos;
·
Definir los requisitos del segundo
prototipo;
·
Planeando y desarrollando el segundo
prototipo;
·
Construyendo y probando el segundo
prototipo.
En la opción del
cliente, el proyecto completado puede ser abortado si el riesgo se juzga
demasiado grande. Los factores de riesgo pudieron implicar los excesos de coste
del desarrollo, cálculo erróneo del fusionar los costes, o cualquier otro
factor que podría, en el juicio del cliente, dar lugar a un producto final
menos que satisfactorio.
El diseño existente se
evalúa de manera semejante al igual que el diseño anterior, y, en caso de
necesidad, otro prototipo se desarrolla de él según el procedimiento cuádruple
expuesto anteriormente. Se iteran los pasos precedentes hasta que el cliente
está satisfecho sabiendo que el diseño mejorado representa el producto final
deseado. Además, se construye el sistema final, basado en el diseño mejorado.
El sistema final se evalúa y se prueba con todas las de ley. El mantenimiento
general se realiza sobre una base continua para prevenir fallas en grande y
para reducir al mínimo el tiempo perdido.
muy malo
ResponderEliminar