Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Por otro lado, Sommerville (2002) define que “un método de ingeniería de software es un
enfoque estructurado para el desarrollo de software cuyo propósito es facilitar la
producción de software de alta calidad de una forma costeable”, cabe destacar que para usar
este enfoque se debe manejar conceptos fundamentales tales como; procesos, métodos,
tareas, procedimientos, técnicas, herramientas, productos, entre otros.
Los arreglos se hacen costosos, después de tantas correcciones el código tenia una
mala estructura.
En la década de los setenta empezó a tomar la importancia de los datos, y para solucionar
sistemas complejos empezó el análisis por partes o etapas, se introducen la planeación y
administración. El modelo en cascada surge como respuesta al modelo de procesos, este
modelo tiene mas disciplina y se basa en el análisis, diseño, pruebas y mantenimientos. 4
La década de los ochenta es la época marcada por las metodologías dirigida a datos cuya
importancia va tomando cuerpo en las organizaciones. Se empiezan a estudiar los objetos
en sí como unidades de información. Para los años 90 se quiere dar respuesta al entorno
siempre cambiante y en rápida evolución en que se han de desarrollar los programas
informáticos, lo cual da lugar a trabajar en ciclos cortos (como mini-proyectos) que
implementan una parte de las funcionalidades, pero sin perder el rumbo general del
proyecto global.
Por otra parte las metodologías de desarrollo comienzan a interesarse no sólo en lograr que
el proyecto sea puesto en funcionamiento sino en minimizar costos durante su desarrollo y
sobre todo durante su mantenimiento. Los nuevos métodos van buscando minimizar riesgos
y, puesto que los errores más perjudiciales se producen en los primeros pasos, se comienza
ya desde la fase más general del estudio por analizar los riesgos que significa seguir con las
siguientes fases del desarrollo.
Generaciones de metodologías
Las metodologías han ido cambiando con el tiempo, al surgir nuevos paradigmas que
rompe con lo tradicional para abrir paso a nuevas técnicas de solución.5Han evolucionando
a lo largo del tiempo estas herramientas, inicialmente el periodo de desarrollo convencional
(practicas artesanales), luego surge el Desarrollo estructurada (parte de la programación
estructurada seguido de los método de análisis y diseño, cubre todo el ciclo de vida
completo). Actualmente aparece el paradigma de la orientación a objetos.
Desarrollo Convencional
Los resultados finales son impredecibles, es decir no se sabe cuándo debe acabar un
proyecto.
Desarrollo Estructurado
Aunque este desarrollo permite diseñar un buen proceso y estructura de un programa, tiene
inconvenientes como:
Este enfoque se conoce como análisis estructurado o análisis descendente o top - down.
Desde su aparición se han hecho mejoras como dar menor importancia a la construcción de
los modelos físicos actuales y a los modelos lógicos actuales, diferenciar más los modelos
físicos y lógicos. Ampliar las técnicas de análisis estructurado, para modelar sistemas en
tiempo real y enfocarse en el modelo de datos.
En el desarrollo estructurado los programas están divididos en distintos bloques, estos
bloques tienen funciones que se van confeccionado en forma de arriba-abajo, empezando
desde las generales hasta las particulares, hasta llegar a detallar cada uno de los
procedimientos y su interacción. Este desarrollo se enfoca al diseño del programa y la
compresión se hace mas fácil. Se ha hecho evidente que este enfoque aun está un poco
arraigado ya que se tiende a no pasar de un proceso o iteración a otra, sin culminar con la
anterior, ademas que el ciclo de vida debe recorrerse completo y al manejarse de esta
manera, trae como consecuencias información redundante, costos y desperdicio de tiempo.
El desarrollo del paradigma de Orientado a Objetos (OO) trata los procesos y datos de
forma conjunta. Este comienza a mediados de los 80 con los lenguajes de programación
Orienta a Objetos en los que se daba énfasis a la abstracción de datos para los que se
adjuntaba un conjunto de operaciones. Por otra parte los conceptos de técnicas
estructuradas han servido de base para muchas de las metodológicas OO.6
Concurrencia: Es la propiedad que distingue un objeto que está activo de uno que
no lo está.
Booch (1986) dice que “si un modelo que se dice OO no contiene alguno de los primeros
cuatro elementos, entonces no es Orientado a Objetos”.
Verificaciones intermedias.
Planificación y control.
Comunicación efectiva.
Fácil formación.
Herramientas case.
Lo que se quiere de una metodología es que permita definir las etapas, las salidas,
entradas de un proyecto. Mantener un programa no es fácil pero se puede lograr, por lo
tanto, las metodologías deben permitir una robusta formación del proyecto que permita
utilizar mecanismos de mejora y que se usen los recursos disponibles con su mayor
rendimiento y eficacia.
Metodologías Vs. Ciclo de vida
Criterios de evaluación: del proceso y del producto. Saber si se han logrado los
objetivos.
El ciclo de vida es el conjunto de fases por las que pasa el sistema que se está desarrollando
desde que nace la idea inicial hasta que el software es retirado o remplazado (muere).15
Entre las funciones que debe tener un ciclo de vida se pueden destacar:
Definir un esquema que sirve como base para planificar, organizar, coordinar,
desarrollar, entre otros.
Inicio: éste es el nacimiento de la idea. Aquí definimos los objetivos del proyecto y
los recursos necesarios para su ejecución. Hacia dónde queremos ir, y no cómo queremos
ir. Las características implícitas o explícitas de cada proyecto hacen necesaria una etapa
previa destinada a obtener el objetivo por el cual se escribirán miles o cientos de miles de
líneas de código. Un alto porcentaje del éxito de nuestro proyecto se definirá en estas etapas
que, al igual que la etapa de debugging, muchos líderes de proyecto subestiman.
Diseño: Ya sabemos qué hacer, ahora tenemos que determinar cómo debemos
hacerlo (¿cómo debe ser construido el sistema en cuestión?); definimos en detalle entidades
y relaciones de las bases de datos, seleccionamos el lenguaje que vamos a utilizar, el
Sistema Gestor de Bases de Datos, entre otros).
Una metodología puede seguir uno o varios modelos de ciclo de vida, adaptándose a cada
uno de ellos, dependiendo de las necesidades dadas en un momento determinado, es decir,
el ciclo de vida indica lo que hay que obtener a lo largo del desarrollo del proyecto pero
no da las indicaciones de como obtenerlo. La metodología indica los diferentes pasos y
fases para obtener los distintos productos parciales y finales. En sí para el desarrollo de
software, se necesita aplicar una metodología o varias metodologías, dentro de un ciclo de
vida, de manera que sepamos que hacer y como hacerlo para conseguir lo que se quiere y
cumplir con las metas planteadas.
Inicio del proceso (desarrollo), dentro de esta fase se encuentra la definición del
proyecto, el análisis del contexto, definición de requerimientos, diseño del sistema,
construcción del sistema, pruebas e implantación.
Renovación o extinción.
Los procesos de software son complejos debido a que un producto de software es intangible
y por lo general muy abstracto, esto dificulta la definición del producto y sus requisitos,
sobre todo cuando no se tiene precedentes en productos software similares. En general este
producto esta compuesto por hardware y software. En cuanto al hardware, su producción se
realiza sistemáticamente y la base de conocimiento para el desarrollo de dicha actividad
está claramente definida. Respecto del software, su construcción y resultados han sido
históricamente cuestionados debido a los problemas asociados
Se les llama "prescriptivos" porque presciben un conjunto de elementos del proceso, tales
como:21
Tareas.
Productos de trabajo.
Aseguramiento de la calidad.
Mecanismos de control del cambio para cada proyecto.
Estos modelos son útiles si queremos describir un conjunto único de actividades dentro de
un marco de trabajo para un proceso de software. cada actividad debe contener un conjunto
de acciones de ingeniería del software, y definir cada acción en cuanto a un conjunto de
tareas que identifique el trabajo (y los productos del trabajo) que deben completarse para
alcanzar las metas de desarrollo. Sin importar el modelo del proceso que se desee usar, los
ingenieros de software eligen una manera tradicional para realizar el marco de trabajo
genérico para el proceso, ya que estos modelos se caracterizan por ser en esencia
rígidos,estrictos y los mas utilizados.
Modelo en Cascada
El modelo en cascada, algunas veces llamado el ciclo de vida clásico, sugiere un enfoque
sistemático, secuencial hacia el desarrollo del software, que se inicia con la especificación
de requerimientos del cliente y que continúa con la planeación, el modelado, la
construcción y el despliegue para culminar en el soporte del software terminado.
Este modelo es aplicable en donde existen ocasiones en que los requisitos de un problema
se entienden de una manera razonable y deben estar bien definidos, también cuando el
trabajo fluye desde la comunicación a través del despliegue de una manera casi lineal, esta
situación se encuentra a veces cuando es necesario hacer adaptaciones o mejorías bien
definidas a un sistema existente.
El modelo en cascada es el paradigma más antiguo para la ingeniería del software. Sin
embargo, en las décadas pasadas, las criticas a este modelo de proceso han ocasionado que
aun sus más fervientes practicantes hayan cuestionado su eficacia. Entre los problemas que
algunas veces se encuentran al aplicar el modelo en cascada están:
1. Es muy raro que los proyectos reales sigan el flujo secuencial que propone el modelo. A
pesar de que el modelo lineal incluye iteraciones, lo hace de manera indirecta. Como
resultado, los cambios confunden mientras el equipo de proyecto actúa.
2. Con frecuencia es difícil para el cliente establecer todos los requisitos de manera
explícita. El modelo en cascada lo requiere y se enfrentan dificultades al incorporar la
incertidumbre natural presente en el inicio de muchos proyectos.
3. El cliente debe tener paciencia. Una versión que funcione de los programas estará
disponible cuando el proyecto esté muy avanzado. Un error grave será desastroso si no se
detecta antes de la revisión del programa.
En la actualidad, el trabajo del software está acelerado y sujeto a una cadena infinita de
cambios (de características, funciones y contenido de la información). Con frecuencia, el
modelo en cascada no es apropiado para dicho trabajo. Sin embargo, puede servir como un
modelo de proceso útil en situaciones donde los requerimientos están fijos y donde el
trabajo se realiza, hasta su conclusión, de una manera lineal.
Diseño del sistema y del software. El proceso de diseño del sistema divide los
requerimientos en sistemas hardware o software. Establece una arquitectura completa del
sistema. El diseño del software identifica y describe las abstracciones fundamentales del
sistema software y sus relaciones.
Algunas veces llamado el ciclo de vida clásico, sugiere un enfoque sistemático, secuencial
hacia el desarrollo del software, que se inicia con la especificación de requerimiento del
cliente y que continúa con la planeación, el modelo, la construcción, y el despliegue para
culminar en el soporte del software. Es un enfoque pasado de moda pero útil cuando los
requisitos son fijos.
Modelo de Procesos Incrementables
El desarrollo incremental es útil sobre todo cuando el personal necesario para una
implementación completa no está disponible. Los primeros incrementos se pueden
implementar con menos gente. Si el producto esencial es bien recibido se agrega (si se
requiere) más personal para implementar el incremento siguiente. Además, los incrementos
se pueden planear para manejar los riesgos técnicos. Por ejemplo, un sistema grande podría
requerir la disponibilidad de un hardware nuevo que está en desarrollo y cuya fecha de
entrega es incierta. Sería posible planear los primeros incrementos de forma que se evite el
uso de este hardware, lo que permitiría la entrega de funcionalidad parcial a los usuarios
finales sin retrasos desordenados.
Como otros modelos de proceso, el enfoque DRA cumple con las actividades genéricas del
marco de trabajo que ya se han presentado. La comunicación trabaja para entender el
problema de negocios y las características de información que debe incluir el software. La
planeación es esencial porque varios equipos de software trabajan en paralelo sobre
diferentes funciones del sistema. El modelado incluye tres grandes fases — modelado de
negocios, modelado de datos y modelado del proceso — y establece representaciones del
diseño que sirven como base para la actividad de construcción del modelo DRA. La
construcción resalta el empleo de componentes de software existente y la aplicación de la
generación automática de código. Por último, el despliegue establece una base para las
iteraciones subsecuentes, si éstas son necesarias.
El modelo de proceso DRA se ilustra en la siguiente figura. Es obvio que las restricciones
de tiempo impuestas sobre un proyecto DRA exigen un "ámbito de escalas". Si una
aplicación de negocios se puede modular de forma que cada gran función pueda
completarse en menos de tres meses (mediante la aplicación del enfoque ya descrito), ésta
es una candidata para el DRA. Cada gran función se puede abordar mediante un equipo de
DRA por separado, para después integrarlas y formar un todo.
1) Para proyectos grandes, pero escalables, el DRA necesita suficientes recursos humanos
para crear en número correcto de equipos DRA.
5) El DRA sería inapropiado cuando los riesgos técnicos son altos (por ejemplo, cuando
una aplicación nueva aplica muchas nuevas tecnologías).
Es un modelo de proceso del software incremental que resulta un ciclo de desarrollo corto.
El modelo DRA es una adaptación a alta velocidad del modelo en cascada en el que se
logra el desarrollo rápido mediante un enfoque de construcción basado en componentes.
Hace un uso intensivo de componentes reusables de software con un ciclo de desarrollo
extremadamente corto.
Modelos Evolutivos
Se reconoce que el software al igual que todos los sistemas complejos evoluciona con el
tiempo, los requisitos de gestión y de producto a menudo cambian conforme a que el
desarrollo procede haciendo que el camino que lleva al producto final no sea real. El
desarrollo evolutivo consta del desarrollo de una versión inicial que luego de exponerse se
va refinando de acuerdo de los comentarios o nuevos requerimientos por parte del cliente o
del usuario final. Los modelos evolutivos son iterativos, se caracteriza por la forma en que
permiten a los ingenieros en software desarrollar versiones cada vez más completas del
software. A continuación se presentan algunos de los modelos que se clasifican en esta
categoría.
Construcción de prototipos
Modelos en espiral
En los modelos evolutivos se produce un sistema inicial que evoluciona según las
necesidades del cliente hasta cumplir con los requisitos de este, para luego producir un
sistema que satisfaga sus necesidades. Este enfoque enlaza las actividades de
especificación, desarrollo y validación.
Construcción de Prototipos
El diseño rápido se basa en una representación de aquellos aspectos del software que serán
visibles para el cliente o el usuario final (por ejemplo, la configuración de la interfaz con el
usuario y el formato de los despliegues de salida). El diseño rápido conduce a la
construcción de un prototipo, el cual es evaluado por el cliente o el usuario para una
retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará.
La iteración ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente.
Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer y el
cliente vea resultados a corto plazo.
La construcción de prototipos se puede utilizar como un modelo del proceso independiente.
Sin importar la forma en que éste se aplique, el paradigma de construcción de prototipos
ayuda al desarrollador de software y al cliente a entender de mejor manera cuál será el
resultado de la construcción cuando los requisitos estén satisfechos.
Etapas:
Plan rápido.
Comunicación.
Ventajas:
Este modelo es útil cuando el cliente conoce los objetivos generales para el
software, pero no identifica los requisitos detallados de entrada, procesamiento o salida.
También ofrece un mejor enfoque cuando el responsable del desarrollo del software
está inseguro de la eficacia de un algoritmo, de la adaptabilidad de un sistema operativo o
de la forma que debería tomar la interacción humano-máquina.
Desventajas:
El usuario tiende a crearse unas expectativas cuando ve el prototipo de cara al
sistema final. A causa de la intención de crear un prototipo de forma rápida, se suelen
desatender aspectos importantes, tales como la calidad y el mantenimiento a largo plazo, lo
que obliga en la mayor parte de los casos a reconstruirlo una vez que el prototipo ha
cumplido su función. Es frecuente que el usuario se muestre reacio a ello y pida que sobre
ese prototipo se construya el sistema final, lo que lo convertiría en un prototipo evolutivo,
pero partiendo de un estado poco recomendado.
Cuando el cliente define el software que desea que el analista construya, pero no identifica
los requisitos detallados de entrada, procesamiento o salida. El responsable del desarrollo
del software está inseguro de la adaptabilidad del sistema operativo o de la forma que
debería tomar la interacción hombre – máquina, entonces en este caso es cuando se puede
emplear la construcción de prototipos. Se crea un diseño rápido que se centra en una
representación de aquellos aspectos del software que serán visibles para el usuario final, a
su vez el diseño rápido conduce a la construcción de un prototipo. Después, el prototipo lo
evalúa el usuario y con la retroalimentación se refinan los requisitos del software que se
desarrollará.
Modelo en Espiral
Ventajas:
Demanda una consideración directa de los riesgos técnicos en todas las etapas del
proyecto. Reduce los riesgos antes de que se conviertan en problemáticos.
Desventajas:
Lo característico del modelo es espiral es que incluye un “análisis de riesgo” es decir que
podemos analizar si el proyecto puede continuar o mejor lo suspendemos. Este modelo se
basa en que antes de hacer algo debemos analizarlo, también debemos buscar varias
opciones de resolución de problemas para de allí escoger la opción más conveniente, y
además analizar los riesgos que se pueda tener. Este modelo necesita de otros métodos
para poder desarrollarse.
Modelo de desarrollo concurrente
"Los gestores de proyectos que siguen los pasos del estado del proyecto en lo que se refiere
a las fases importantes [del ciclo de vida clásico] no tiene ideal del estado de sus
proyectos. Estos son ejemplos de un intento por seguir los pasos extremadamente simples.
Tenga en cuenta que aunque un proyecto [grande] este en la fase de codificación, hay
personal de ese proyecto implicado en actividades asociadas generalmente a muchas fases
de desarrollo simultáneamente. Por ejemplo,...el personal esta escribiendo requisitos
diseñando, codificando, haciendo pruebas y probando la integración (todo al mismo
tiempo). Los modelos de proceso de ingeniería del software de Humphrey y Kellner han
mostrado la concurrencia que existe para actividades que ocurren para cualquier fase. El
trabajo más reciente de Kellner utiliza diagramas de estado para representar la relación
concurrente que existe entre actividades asociadas a un acontecimiento especifico, pero
falla en capturar la riqueza de la concurrencia que existe en todas las actividades del
desarrollo y de gestión del software en mi proyecto...La mayoría de los modelos de
procesos de desarrollo del software son dirigido por el tiempo; cuanto más tarde sea, mas
atrás se encontrara en el proceso de desarrollo. (Un modelo de proceso concurrente) esta
dirigido por las necesidades del usuario, las decisiones de la gestión y los resultados de las
revisiones."
Acorde con la descripción de Davis podemos decir que el modelo concurrente se define una
serie de acontecimientos que dispararan transiciones de estado a estado para cada una de las
actividades de la ingeniería del software proporcionando una visión certera del estado
actual del proyecto. Se puede representar en forma de esquema como una serie de
actividades técnicas importantes, tareas y estados asociados a ellas. 19
Cada actividad, acción o tarea dentro de la red existe de manera simultánea con
otras.
Los sucesos generados dentro de una actividad dada o algún otro lado de la red de
actividad inicia las transiciones entre los estado de una actividad.
Ventajas:
Desventajas:
Modelos iterativos
Este modelo busca reducir el riesgo que surge entre las necesidades del usuario y el
producto final por malos entendidos durante la etapa de recogida de requisitos. Consiste en
la iteración de varios ciclos de vida en cascada. Al final de cada iteración se le entrega al
cliente una versión mejorada o con mayores funcionalidades del producto. El cliente es
quien después de cada iteración evalúa el producto y lo corrige o propone mejoras. Estas
iteraciones se repetirán hasta obtener un producto que satisfaga las necesidades del
cliente. 15
El modelo iterativo se suele utilizar en proyectos en los que los requisitos no están claros
por parte del usuario, por lo que se hace necesaria la creación de distintos prototipos para
presentarlos y conseguir la conformidad del cliente. Cada iteración es un mini proyecto en
cascada auto contenido compuesto de actividades como análisis de requerimientos, diseño,
programación y pruebas.15
Ventajas:
Menor tasa de fallo del proyecto, mejor productividad del equipo, y menor cantidad
de defectos
Desventajas:
Requiere de un cliente involucrado durante todo el curso del proyecto. Hay clientes
que simplemente no estarán dispuestos a invertir el tiempo necesario.
Una de las grandes ventajas que ofrece este modelo es que los requisitos se pueden ir
refinando en cada una de las iteraciones, es decir cuando no se puede especificar a priori
“todos” los requisitos del software, sino que este proceso ayudará a ir descubriendo paso
a paso los requisitos a partir de cada nueva entrega, mediante iteraciones las cuales no
son mas que mini proyectos en cascada, en este modelo el cliente tiene la oportunidad de
incluir o desechar elementos al final de cada iteracion, buscando cada vez versiones mas
ccompletas hasta que cumpla sus espectativas o se adapte a sus necesidades
Las metodologías ágiles son un conjunto de métodos de ingeniería del software, que se
basan en el desarrollo iterativo e incremental, teniendo presente los cambios y
respondiendo a estos mediante la colaboración de un grupo de desarrolladores auto-
organizados y multidisciplinares.
En las metodologías ágiles, los procesos se desarrollan de manera solapada, donde el ciclo
de vida del proyecto, es cíclico. La diferencia en el ciclo de vida de un proyecto ágil, en
comparación con uno tradicional, se debe a la forma en la que el agilismo, solapa los
procesos de manera iterativa.
La tendencia del control de procesos para desarrollo de software ha traído como resultado
que proyectos no resulten exitosos debido al cambiante contexto que existe, por lo cuál las
metodologías ágiles pretende resolver este inconveniente, construyendo soluciones a la
medida asegurando la calidad. Los métodos ágiles fueron pensados especialmente para
equipos de desarrollo pequeños, con plazos reducidos, requisitos volátiles y nuevas
tecnologías. La filosofía de las metodologías ágiles, pretenden dar mayor valor al
individuo, a la colaboración con el cliente y al desarrollo incremental del software con
iteraciones muy cortas. Este enfoque está mostrando su efectividad en proyectos con
requisitos muy cambiantes y cuando se exige reducir drásticamente los tiempos de
desarrollo pero manteniendo una alta calidad.14
La dirección del enfoque de establecer una metodología que solventara los cambios
drásticos del ambiente, dió origen en febrero de 2001, tras una reunión celebrada en Utah-
EEUU, en esta reunión participan un grupo de 17 expertos de la industria del software,
incluyendo algunos de los creadores o impulsores de metodologías de software. Su objetivo
fue esbozar los valores y principios que deberían permitir a los equipos desarrollar software
rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto. Se
pretendía ofrecer una alternativa a los procesos de desarrollo de software tradicionales
(metodologías pesadas), caracterizados por ser rígidos y dirigidos por la documentación que
se genera en cada una de las actividades desarrolladas.
La fundación del manifiesto ágil, una organización, sin ánimo de lucro, dedicada a
promover los conceptos relacionados con el desarrollo ágil de software y ayudar a las
organizaciones para que adopten dichos conceptos, promovió a que los grupos de
desarrolladores se enfocarán y establecierán los siguientes valores:
Desarrollar software que funciona más que conseguir una buena documentación. La
regla a seguir es “no producir documentos a menos que sean necesarios de forma inmediata
para tomar un decisión importante”. Estos documentos deben ser cortos y centrarse en lo
fundamental.
Desarrollar software que funciona más que conseguir una buena documentación. La
regla a seguir es “no producir documentos a menos que sean necesarios de forma inmediata
para tomar un decisión importante”. Estos documentos deben ser cortos y centrarse en lo
fundamental.
II. Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente tenga una
ventaja competitiva.
III. Entregar frecuentemente software que funcione desde un par de semanas a un par de
meses, con el menor intervalo de tiempo posible entre entregas.
IV. La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto.
VI. El diálogo cara a cara es el método más eficiente y efectivo para comunicar
información dentro de un equipo de desarrollo.
X. La simplicidad es esencial.
XI. Las mejores arquitecturas, requisitos y diseños surgen de los equipos organizados por sí
mismos.
XII. En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más efectivo,
y según esto ajusta su comportamiento.
Las características esenciales del proceso de desarrollo ágil para la mayoría de los
proyectos son las siguientes:
1. La satisfacción del cliente: trata de dar al cliente el software que él necesita y cuando lo
necesita.
2. Potenciar al máximo el trabajo en grupo: Tanto los jefes de proyecto, los clientes y
desarrolladores, son parte del equipo y están involucrados en el desarrollo del software.
XP define cuatro variables para proyectos de software: coste, tiempo, calidad y ámbito.
Además de estas cuatro variables, Beck propone que sólo tres puedan ser establecidas por
las fuerzas externas (jefes de proyecto y clientes), mientras que el valor de la cuarta
variable debe ser establecido por los programadores en función de las otras tres. 8
Diseño sencillo: solo se lleva a cabo el diseño necesario para cumplir los
requerimientos actuales
Propiedad colectiva: las parejas trabajan en todas las áreas del sistema.
El desarrollo adaptativo de software (DAS) 1998 fue propuestos por Jim Highsmith
como una metodología para desarrollar el software y sistemas muy complejos. Este se
centra en la colaboración humana y la organización del equipo 2. El Desarrollo adaptativo
del software proporciona un marco para el desarrollo iterativo de sistemas grandes y
complejos, el mismo fomenta el desarrollo iterativo e incremental con el uso de prototipos.
- Fase de especulación: Es la primera de las fases esta inicia en el desarrollo del proyecto.
Se utiliza información como la visión del cliente, las restricciones del proyecto y los
requisitos básicos para definir el conjunto de ciclos en el que se harán los incrementos del
software. En esta fase es donde se lleva a cabo la planificación tentativa del proyecto en
función de las entregas que se iran realizando
- Fase del aprendizaje: consiste en la revisión de calidad que se realiza al final de cada
ciclo, esto permite mejorar el entendimiento real sobre la tecnología, los procesos utilizados
y el proyecto. El aprendizaje individual permite al equipo tener mayor posibilidad de éxito.
Esta metodología no proporciona el tipo de prácticas detalladas como lo hace XP, pero
proporciona la base fundamental de por qué el desarrollo adaptable es importante y las
consecuencias a los más profundos niveles de la organización y la gerencia. Los apoyos
filosóficos del DAS se enfocan en la colaboración humana y la organización propia del
equipo, y es un modelo para la construcción de software y sistemas complejos, incluye tres
fases que son: especulación, colaboración y aprendizaje, cada una de estas fases son
fundamental para el desarrollo de la otra. Es adaptativo, se hace uso de la reutilización del
código para adaptarlo a lo que se desea
Modelo de Desarrollo de Sistemas Dinámicos (MDSD)
Es un metodo de desarrollo agil de software que apoyado por su continua implicacion del
usuario en un desarrollo iterativo y creciente que sea sensible a los requerimientos
cambiantes, para desarrollar un sistema que reuna las necesiadades de la empresa en tiempo
y presuspuesto. Este se caracteriza por proporcionar un marco de trabajo el cual permita
construir y mantener sistemas con restricciones de tiempo muy estrechas mediante el
empleo de la construcción de prototipos increméntales en un ambiente de proyecto
controlado 10
El MDSD comienza con un estudio de viabilidad y de negocio, son las primeras actividades
que deben realizarse
Modelo Scrum
Scrum es una metodología ágil de gestión de proyectos cuyo objetivo primordial es elevar
al máximo la productividad de un equipo, fue desarrollado por Jeff Sutherland y elaborado
más formalmente por Ken Schwaber. 11. Se enfoca en el hecho de que procesos definidos y
repetibles sólo funcionan para atacar problemas definidos y repetibles con gente definida y
repetible en ambientes definidos y repetibles. Y se divide un proyecto en iteraciones (que
ellos llaman carreras cortas) de 30 días. La literatura de Scrum se orienta principalmente en
la planeación iterativa y el seguimiento del proceso 12
Caracteristicas:
Iteraciones de treinta días; aunque se pueden realizar con mas frecuencia, estas
iteraciones, conocidas como Sprint
Dentro de cada Sprint se denomina el Scrum Master al Líder de Proyecto quien
llevará a cabo la gestión de la iteración
Es una de las metodologías más extendidas y conocidas por su amplia difusión comercial.
Se puede estudiar como una metodología representativa de tipo clásico. Fue definido por
los creadores del UML unificando los métodos de Ivar Jacobson, Grady Booch y James
Rumbaugh. El hecho de que la empresa RATIONAL también distribuya herramientas
específicas basadas en el mismo método, que facilitan el desarrollo, ha contribuido a su
gran expansión. 16
Este proceso se maneja por casos de uso (correspondientes a los modos uso por los actores
o agentes usuarios) para la extracción de requisitos y la identificación de las partes
funcionales en las que se divide la solución. La arquitectura del proceso se modela con
orientación a objetos.
Estos metodologistas, fueron reunidos por Rational para formar un marco de metodologías
unificadas, cohesivas y comprehensivas de desarrollo de sistemas de software. Su trabajo,
que producen durante varios años y basados en metodologías probadas, han dado a lugar a
importantes normas en la comunidad de desarrollo,
Dirigido por casos de uso. El proceso utiliza Casos de Uso para manejar el proceso
de desarrollo desde la Incepción hasta el Despliegue.
El proceso Unificado consta de ciclos que puede repetir a lo largo del ciclo de vida de un
sistema. Un ciclo consiste en cuatro fases: Incepción, Elaboración, Construcción y
Transición. Un ciclo concluye con una liberación, tambien hay versiones dentro de un ciclo.
Fase de Incepción: Durante la fase inicial se concibe la idea central del producto,
se arma el documento de visión. En esta fase, se revisan y confirma nuestro entendimiento
sobre los objetivos centrales del negocio. Queremos entender los argumentos comerciales
en favor de porqué el proyecto debe intentarse. La fase de incepción establece la viabilidad
del producto y delimita el alcance del proyecto.
¿Cuáles son las principales funciones del sistema para sus usuarios más importantes?. La
respuesta está en el modelo de casos de uso simplificado.
Metodologías ágiles:
Metodologías convencionales:
Impuestas externamente.
Metodologías estructuradas
Las metodologías orientadas a procesos comprende una fase de análisis estructurado y los
métodos de DeMarco, Gene y Sarson, Yourdon, son algunos que permiten lograr esto.
Metodología de Yourdon: Realiza los DFDs del sistema, a partir de los DFD realiza
el diagrama de estructuras, evaluación del diseño y preparación del diseño.
Son metodologías basadas en la información, ya que los datos son más estables que los
procesos. Primero se definen las estructuras de datos y, a partir de éstos, se derivan los
componentes procedimentales.
Análisis: comprender las áreas del negocio y determinar los requisitos del sistema.
Diseño: establecer el comportamiento del sistema deseado por el usuario y que sea
alcanzable por la tecnología.
Las metodologías en tiempo real procesan información orientada al control más que a los
datos.
Se caracterizan por:
Concurrencia.
Priorización de procesos.
Reutilización. Las clases están diseñadas para que se reutilicen en muchos sistemas. Para
maximizar la reutilización, las clases se construyen de manera que se puedan adaptar a los
otros sistemas. Un objetivo fundamental de las técnicas orientadas a objetos es lograr la
reutilización masiva al construir el software.
Estabilidad. Las clases diseñadas para una reutilización repetida se vuelven estables, de la
misma manera que los microprocesadores y otros chips se hacen estables.
Se construyen clases cada vez más complejas. Se construyen clases a partir de otras clases,
las cuales a su vez se integran mediante clases. Esto permite construir componentes de
software complejos, que a su vez se convierten en bloques de construcción de software más
complejo.
Calidad. Los diseños suelen tener mayor calidad, puesto que se integran a partir de
componentes probados, que han sido verificados y pulidos varias veces.
Integridad. Las estructuras de datos (los objetos) sólo se pueden utilizar con métodos
específicos. Esto tiene particular importancia en los sistemas cliente-servidor y los sistemas
distribuidos, en los que usuarios desconocidos podrían intentar el acceso al sistema.
Mantenimiento más sencillo. El programador encargado del mantenimiento cambia un
método de clase a la vez. Cada clase efectúa sus funciones independientemente de las
demás.
Una interfaz de pantalla sugestiva para el usuario. Hay que utilizar una interfaz de usuario
gráfica de modo que el usuario apunte a iconos o elementos de un menú desplegado,
relacionados con los objetos. En determinadas ocasiones, el usuario puede ver un objeto en
la pantalla. Ver y apuntar es más fácil que recordar y escribir.
Independencia del diseño. Las clases están diseñadas para ser independientes del ambiente
de plataformas, hardware y software. Utilizan solicitudes y respuestas con formato
estándar. Esto les permite ser utilizadas en múltiples sistemas operativos, controladores de
bases de datos, controladores de red, interfaces de usuario gráficas, etc. El creador del
software no tiene que preocuparse por el ambiente o esperar a que éste se especifique.
Mayor nivel de automatización de las bases de datos. Las estructuras de datos (los objetos)
en las bases de datos orientadas a objetos están ligadas a métodos que llevan a cabo
acciones automáticas. Una base de datos OO tiene integrada una inteligencia, en forma de
métodos, en tanto que una base de datos relacional básica carece de ello.
Tener metodologías diferentes para aplicar de acuerdo con el proyecto que se desarrolle
resulta una idea interesante. Estas metodologías pueden involucrar prácticas tanto de
metodologías ágiles como de metodologías tradicionales. De esta manera podríamos tener
una metodología para cada proyecto, la problemática sería definir cada una de las prácticas,
y en el momento preciso definir parámetros para saber cual usar.Es importante tener en
cuenta que el uso de un método ágil no es para todos. Sin embargo, una de las principales
ventajas de los métodos ágiles es su peso inicialmente ligero y por eso las personas que no
estén acostumbradas a seguir procesos encuentran estas metodologías bastante agradables.
Por otro lado, las metodologías tradicionales o convencionales permiten crear software de
manera mas segura ya que estas entan mas establecidas según por sus pasos.
Modelado de Negocios
Para conseguir sus objetivos, una empresa organiza su actividad por medio de un conjunto
de procesos de negocio. Cada uno de ellos se caracteriza por una colección de datos que
son producidos y manipulados mediante un conjunto de tareas, en las que ciertos agentes
(por ejemplo, trabajadores o departamentos) participan de acuerdo a un flujo de trabajo
determinado. Además, estos procesos se hallan sujetos a un conjunto de reglas de negocio,
que determinan las políticas y la estructura de la información de la empresa. Por tanto, la
finalidad del modelado del negocio es describir cada proceso del negocio, especificando sus
datos, actividades (o tareas), roles (o agentes) y reglas de negocio.
2. Derivar los requerimientos del sistema necesarios para apoyar a la organización objetivo
en su mejora.
Para lograr estos objetivos, el modelado de negocio describe como desarrollar una visión de
la nueva organización, basado en esta visión se definen procesos, roles y responsabilidades
de la organización por medio de un Modelo de Casos de Uso del Negocio. Los artefactos
del modelo de negocio sirven como entrada y referencia para la definición de los
requerimientos del sistema.
La importancia de esta disciplina radica en que sin el panorama completo del alcance del
negocio y sin el entendimiento de sus procesos no podrán identificarse las necesidades
inmediatas de mejora y continuidad relativa a las actividades relacionadas con los sistemas
informáticos, que son el producto final del desarrollo.
Teoría de Organizaciones
E-business, E-commerce
Sistemas de Información
Ingeniería de Software
Informática Industrial
Los dominios definen dos puntos de vista diferentes del Modelado de:
Orientado al valor/cliente
Busca explicar cómo la empresa crea valor para el cliente, que valor le proporciona a sus
clientes los productos o servicios de una empresa, en este caso entenderemos el modelo de
negocio como “…una herramienta conceptual que tiene un conjunto de objetos, conceptos
y relaciones con el objetivo de expresar la lógica del negocio de una empresa” Osterwalde ,
Pigneur (2005).
Orientado a la actividad/rol
Cadena de Valor
La cadena de valor es esencialmente una forma de análisis de la actividad empresarial
mediante la cual descomponemos una empresa en sus partes constitutivas, buscando
identificar fuentes de ventaja competitiva en aquellas actividades generadoras de valor. La
cadena de valor representa todas las actividades que se llevan a cabo en una empresa, en la
cual se realiza una separación entre las actividades de mayor interés (actividades primarias)
y las actividades que le sirven de apoyo con la finalidad de prestar mayor atención y
centrarse en aquellas actividades que generan mayores ventajas al momento de competir
con otras empresas. 20
Se dividen en:
•Logística interna
•Operaciones
•Logística externa
• Infraestructura de la organización
• Abastecimiento o compras
La cadena de valor es una herramienta de gran importancia ya que permite determinar
cuales son aquellas actividades de valor de la empresa. Es muy útil que las empresas
conozcan no solo su cadena de valor si no también la de sus competidores, ya que esta
proporciona un mejor análisis interno de la organización, así como también identificar las
ventajas competitivas y comprender de una mejor manera el comportamiento de los costos
y las diversas fuentes de diferenciación con la competencia.
Conclusiones
Referencias
7.Disponible en la web:
« www.angelfire.com/scifi/jzavalar/apuntes/IngSoftware.html#paradigmaOO » [consulta:
10 de junio de 2012]
9. Solís, M. (2003). Una explicación de la programación extrema (XP). Madrid. Pág. 103
10. Ordonez (2011). Metodo de Desarrollo de sistemas dinamicos[documento en línea].
Disponible en:« www.slideshare.net/oscarfico/metodos-dinamicos » [consulta: 8 de junio
de 2012]
15. Laboratorio Nacional de Calidad del Software de INTECO. (2009, Marzo) Ingeniería
del software: metodologías y ciclos de vida. España.
16. Oscar Álvarez Imaz. (2008, Abril). "Introducción a RUP" Versión 0.1