Professional Documents
Culture Documents
Introduccin
4. Bibliografia
Introduccin
Un sistema informtico est compuesto por hardware y software. En cuanto al hardware, su
produccin se realiza sistemticamente y la base de conocimiento para el desarrollo de dicha
actividad est claramente definida. La fiabilidad del hardware es, en principio, equiparable a la
de cualquier otra mquina construida por el hombre. Sin embargo, respecto del software, su
construccin y resultados han sido histricamente cuestionados debido a los problemas
asociados, entre ellos podemos destacar los siguientes:
Los sistemas no responden a las expectativas de los usuarios.
Los programas fallan con cierta frecuencia.
Los costes del software son difciles de prever y normalmente superan las estimaciones.
La modificacin del software es una tarea difcil y costosa.
El software se suele presentar fuera del plazo establecido y con menos prestaciones de las
consideradas inicialmente.
Normalmente, es difcil cambiar de entorno hardware usando el mismo software.
El aprovechamiento ptimo de los recursos (personas, tiempo, dinero, herramientas, etc.) no
suele cumplirse.
Segn el Centro Experimental de Ingeniera de Software (CEIS), el estudio de mercado The
Chaos Report realizado por Standish Group Internactional en 1996, concluy que slo un 16%
de los proyectos de software son exitosos (terminan dentro de plazos y costos y cumplen los
requerimientos acordados). Otro 53% sobrepasa costos y plazos y cumple parcialmente los
requerimientos. El resto ni siquiera llega al trmino. Algunas deficiencias comunes en el
desarrollo de software son:
Escasa o tarda validacin con el cliente.
Inadecuada gestin de los requisitos.
No existe medicin del proceso ni registro de datos histricos.
Estimaciones imprevistas de plazos y costos.
Excesiva e irracional presin en los plazos.
Escaso o deficiente control en el progreso del proceso de desarrollo.
No se hace gestin de riesgos formalmente.
No se realiza un proceso formal de pruebas.
No se realizan revisiones tcnicas formales e inspecciones de cdigo.
El primer reconocimiento pblico de la existencia de problemas en la produccin de software
tuvo lugar en la conferencia organizada en 1968 por la Comisin de Ciencias de la OTAN en
Garmisch (Alemania), dicha situacin problemtica se denomin crisis del software. En esta
conferencia, as como en la siguiente realizada en Roma en 1969, se estipul el inters hacia
los aspectos tcnicos y administrativos en el desarrollo y mantenimiento de productos software.
Se pretenda acordar las bases para una ingeniera de construccin de software. Segn Fritz
Bauer lo que se necesitaba era establecer y usar principios de ingeniera orientados a obtener
software de manera econmica, que sea fiable y funcione eficientemente sobre mquinas
reales. Esta definicin marcaba posibles cuestiones tales como: Cules son los principios
robustos de la ingeniera aplicables al desarrollo de software de computadora? Cmo
construimos el software econmicamente para que sea fiable? Qu se necesita para crear
programas de computadora que funcionen eficientemente no en una mquina sino en
diferentes mquinas reales?. Sin embargo, dicho planteamiento adems deba incluir otros
aspectos, tales como: mejora de la calidad del software, satisfaccin del cliente, mediciones y
mtricas, etc.
El IEEE Standard Glossary of Software Engineering Terminology (Stad. 610.12-1990) ha
desarrollado una definicin ms completa para ingeniera del software : (1) La aplicacin de un
enfoque sistemtico, disciplinado y cuantificable para el desarrollo, operacin y mantenimiento
del software; es decir, la aplicacin de ingeniera al software. (2) El estudio de enfoques en (1).
Pressman caracteriza la Ingeniera de Software como una tecnologa multicapa, ilustrada en
la Figura 1.
Otra perspectiva utilizada para determinar los elementos del proceso de desarrollo de software
es establecer las relaciones entre elementos que permitan responder Quin debe hacer Qu,
Cundo y Cmo debe hacerlo.
1.-Modelo en cascada
El ms conocido, est basado en el ciclo convencional de una ingeniera, el paradigma del ciclo
de vida abarca las siguientes actividades:
Ingeniera y Anlisis
del Sistema
Anlisis de los
Requisitos
Diseo
Codificacin
Prueba
Mantenimiento
Codificacin: El diseo debe traducirse en una forma legible para la maquina. El paso de
codificacin realiza esta tarea. Si el diseo se realiza de una manera detallada la codificacin
puede realizarse mecnicamente.
Prueba: Una vez que se ha generado el cdigo comienza la prueba del programa. La prueba
se centra en la lgica interna del software, y en las funciones externas, realizando pruebas que
aseguren que la entrada definida produce los resultados que realmente se requieren.
Mantenimiento: El software sufrir cambios despus de que se entrega al cliente. Los cambios
ocurrirn debido a que hayan encontrado errores, a que el software deba adaptarse a cambios
del entorno externo (sistema operativo o dispositivos perifricos), o debido a que el cliente
requiera ampliaciones funcionales o del rendimiento.
Desventajas:
Los proyectos reales raramente siguen el flujo secuencial que propone el modelo, siempre
hay iteraciones y se crean problemas en la aplicacin del paradigma.
Normalmente, es difcil para el cliente establecer explcitamente al principio todos los
requisitos. El ciclo de vida clsico lo requiere y tiene dificultades en acomodar posibles
incertidumbres que pueden existir al comienzo de muchos productos.
El cliente debe tener paciencia. Hasta llegar a las etapas finales del proyecto, no estar
disponible una versin operativa del programa. Un error importante no detectado hasta que el
programa este funcionando puede ser desastroso.
La ventaja de este mtodo radica en su sencillez ya que sigue los pasos intuitivos necesarios a
la hora de desarrollar el software.
2.-Modelo evolutivo
La idea detrs de este modelo es el desarrollo de una implantacin del sistema inicial,
exponerla a los comentarios del usuario, refinarla en N versiones hasta que se desarrolle el
sistema adecuado. En la Figura 6 se observa cmo las actividades concurrentes:
especificacin, desarrollo y validacin, se realizan durante el desarrollo de las versiones hasta
llegar al producto final.
Una ventaja de este modelo es que se obtiene una rpida realimentacin del usuario, ya que
las actividades de especificacin, desarrollo y pruebas se ejecutan en cada iteracin.
El enfoque incremental de desarrollo se ve como una forma de reducir la repeticin del trabajo
en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los
requisitos hasta adquirir experiencia con el sistema (ver Figura 10). Es una combinacin del
Modelo de Cascada y Modelo Evolutivo.
Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para retrasar las
decisiones hasta tener experiencia en el sistema.
Durante el desarrollo de cada incremento se puede utilizar el modelo de cascada o evolutivo,
dependiendo del conocimiento que se tenga sobre los requisitos a implementar. Si se tiene un
buen conocimiento, se puede optar por cascada, si es dudoso, evolutivo.
Figura 7: Modelo de desarrollo iterativo incremental.
Entre las ventajas del modelo incremental se encuentran:
Los clientes no esperan hasta el fin del desarrollo para utilizar el sistema. Pueden empezar a
usarlo desde el primer incremento.
Los clientes pueden aclarar los requisitos que no tengan claros conforme ven las entregas del
sistema.
Se disminuye el riesgo de fracaso de todo el proyecto, ya que se puede distribuir en cada
incremento.
Las partes ms importantes del sistema son entregadas primero, por lo cual se realizan ms
pruebas en estos mdulos y se disminuye el riesgo de fallos.
Algunas de las desventajas identificadas para este modelo son:
Cada incremento debe ser pequeo para limitar el riesgo (menos de 20.000 lneas).
Cada incremento debe aumentar la funcionalidad.
Es difcil establecer las correspondencias de los requisitos contra los incrementos.
Es difcil detectar las unidades o servicios genricos para todo el sistema.
4.-Modelo en espiral
El modelo espiral para la ingeniera de software ha sido desarrollado para cubrir las mejores
caractersticas tanto del ciclo de vida clsico, como de la creacin de prototipos, aadiendo al
mismo tiempo un nuevo elemento: el anlisis de riesgo. El modelo representado mediante la
espiral de la figura 2.4, define cuatro actividades principales:
1. Planificacin: determinacin de objetivos, alternativas y restricciones.
2. Anlisis de riesgo: anlisis de alternativas e identificacin/resolucin de riesgos.
3. Ingeniera: desarrollo del producto del "siguiente nivel",
4. Evaluacin del cliente: Valorizacin de los resultados de la ingeniera.
Figura 8: Modelo Espiral
Durante la primera vuelta alrededor de la espiral se definen los objetivos, las alternativas y las
restricciones, y se analizan e identifican los riesgos. Si el anlisis de riesgo indica que hay una
incertidumbre en los requisitos, se puede usar la creacin de prototipos en el cuadrante de
ingeniera para dar asistencia tanto al encargado de desarrollo como al cliente.
El cliente evala el trabajo de ingeniera (cuadrante de evaluacin de cliente) y sugiere
modificaciones. Sobre la base de los comentarios del cliente se produce la siguiente fase de
planificacin y de anlisis de riesgo. En cada bucle alrededor de la espiral, la culminacin del
anlisis de riesgo resulta en una decisin de "seguir o no seguir".
Con cada iteracin alrededor de la espiral (comenzando en el centro y siguiendo hacia el
exterior), se construyen sucesivas versiones del software, cada vez ms completa y, al final, al
propio sistema operacional.
El paradigma del modelo en espiral para la ingeniera de software es actualmente el enfoque
ms realista para el desarrollo de software y de sistemas a gran escala. Utiliza un enfoque
evolutivo para la ingeniera de software, permitiendo al desarrollador y al cliente entender y
reaccionar a los riesgos en cada nivel evolutivo. Utiliza la creacin de prototipos como un
mecanismo de reduccin de riesgo, pero, lo que es ms importante permite a quien lo
desarrolla aplicar el enfoque de creacin de prototipos en cualquier etapa de la evolucin de
prototipos.
EVOLUCION DEL MODELO ESPIRAL
PRESSMAN 2002
IWEB ( Ingeniera Web )
Para aplicaciones basadas en Web
Cul es el modelo de proceso ms adecuado?
Cada proyecto de software requiere de una forma de particular de abordar el problema. Las
propuestas comerciales y acadmicas actuales promueven procesos iterativos, donde en cada
iteracin puede utilizarse uno u otro modelo de proceso, considerando un conjunto de criterios
(Por ejemplo: grado de definicin de requisitos, tamao del proyecto, riesgos identificados,
entre otros). En la Tabla 1 se expone un cuadro comparativo de acuerdo con algunos criterios
bsicos para la seleccin de un modelo de proceso, la medida utilizada indica el nivel de
efectividad del modelo de proceso de acuerdo al criterio (Por ejemplo: El modelo Cascada
responde con un nivel de efectividad Bajo cuando los Requisitos y arquitectura no estn
predefinidos):
Visin del
Funciona con
Produce Permite progreso por
Modelo de requisitos y Gestin de
software correcciones el Cliente y
proceso arquitectura no riesgos
altamente fiable sobre la marcha el Jefe del
predefinidos
proyecto
Evolutivo
Medio o Alto Medio o Alto Medio Medio o Alto Medio o Alto
exploratorio
Evolutivo
Alto Medio Medio Alto Alto
prototipado
METODOLOGA SCRUM
que es scrum
Scrum es una metodologa gil y flexible para gestionar el desarrollo de software, cuyo principal
objetivo es maximizar el retorno de la inversin para su empresa (ROI). Se basa en construir
primero la funcionalidad de mayor valor para el cliente y en los principios de inspeccin
continua, adaptacin, auto-gestin e innovacin.
Cundo se utiliza?
Con Scrum el cliente se entusiasma y se compromete con el proyecto dado que lo ve crecer
iteracin a iteracin. Asimismo le permite en cualquier momento realinear el software con los
objetivos de negocio de su empresa, ya que puede introducir cambios funcionales o de
prioridad en el inicio de cada nueva iteracin.
Esta metdica de trabajo promueve la innovacin, motivacin y compromiso del equipo que
forma parte del proyecto, por lo que los profesionales encuentran un mbito propicio para
desarrollar sus capacidades.
Beneficios
Cumplimento de expectativas: El cliente establece sus expectativas indicando el valor que
le aporta cada requisito / historia del proyecto, el equipo los estima y con esta informacin el
Product Owner establece su prioridad. De manera regular, en las demos de Sprint el Product
Owner comprueba que efectivamente los requisitos se han cumplido y transmite se feedback al
equipo. Flexibilidad a cambios: Alta capacidad de reaccin ante los cambios de
requerimientos generados por necesidades del cliente o evoluciones del mercado. La
metodologa est diseada para adaptarse a los cambios de requerimientos que conllevan los
proyectos complejos.
Reduccin del Time to Market: El cliente puede empezar a utilizar las funcionalidades ms
importantes del proyecto antes de que est finalizado por completo.
Mayor calidad del software: La metdica de trabajo y la necesidad de obtener una versin
funcional despus de cada iteracin, ayuda a la obtencin de un software de calidad superior.
Mayor productividad: Se consigue entre otras razones, gracias a la eliminacin de la
burocracia y a la motivacin del equipo que proporciona el hecho de que sean autnomos para
organizarse.
Maximiza el retorno de la inversin (ROI): Produccin de software nicamente con las
prestaciones que aportan mayor valor de negocio gracias a la priorizacin por retorno de
inversin.
Predicciones de tiempos: Mediante esta metodologa se conoce la velocidad media del
equipo por sprint (los llamados puntos historia), con lo que consecuentemente, es posible
estimar fcilmente para cuando se dispondr de una determinada funcionalidad que todava
est en el Backlog.
Reduccin de riesgos: El hecho de llevar a cabo las funcionalidades de ms valor en
primer lugar y de conocer la velocidad con que el equipo avanza en el proyecto, permite
despejar riesgos eficazmente de manera anticipada.
METODOLOGA RUP
El Proceso Unificado fue desarrollado por Philippe Kruchten, Ivar Jacobson y otros de la
Rational como el proceso complementario al UML. El RUP es un armazn de proceso y como
tal puede acomodar una gran variedad de procesos. De hecho sta es mi crtica principal al
RUP - como puede ser cualquier cosa acaba siendo nada. Yo prefiero un proceso que dice qu
hacer en lugar de dar opciones infinitas. Como resultado de esta mentalidad de armazn de
procesos, el RUP puede usarse en un estilo muy tradicional de cascada o de una manera gil.
Como resultado usted puede usar el RUP como un proceso gil, o como un proceso pesado -
todo depende de cmo lo adapte a su ambiente. Craig Larman es un fuerte defensor de usar el
RUP de una manera gil. Su excelente libro introductorio sobre desarrollo OO contiene un
proceso que est muy basado en su pensamiento ligero del RUP. Su visin es que mucho del
reciente empujn hacia los mtodos giles no es nada ms que aceptar desarrollo OO de la
corriente principal que ha sido capturada como RUP. Una de las cosas que hace Craig es
pasarse los primeros dos o tres das de una iteracin mensual con todo el equipo usando el
UML para perfilar el diseo del trabajo a hacerse durante la iteracin. Esto no es un cianotipo
del que no se pueda desviarse, sino un boceto que da una perspectiva sobre cmo pueden
hacerse las cosas en la iteracin. Otra tachuela en el RUP gil es el proceso dX de Robert
Martin. El proceso dx es una versin totalmente dcil del RUP que simplemente es idntico a la
XP (voltear dX al revs para ver la broma). El dX est diseado para gente que tiene que usar
el RUP pero quiere usar XP. Como tal es a la vez XP y RUP y por tanto un buen ejemplo del
uso gil del RUP. El proceso de ciclo de vida de RUP se divide en cuatro fases bien conocidas
llamadas Incepcin, Elaboracin, Construccin y Transicin. Esas fases se dividen en
iteraciones, cada una de las cuales produce una pieza de software demostrable. La duracin de
cada iteracin puede extenderse desde dos semanas hasta seis meses. Las fases son:
1. Incepcin.- Significa comienzo, pero la palabra original (de origen latino y casi en desuso
como sustantivo) es sugestiva y por ello la traducimos as. Se especifican los objetivos del ciclo
de vida del proyecto y las necesidades de cada participante. Esto entraa establecer el alcance
y las condiciones de lmite y los criterios de aceptabilidad. Se identifican los casos de uso que
orientarn la funcionalidad.
Se disean las arquitecturas candidatas y se estima la agenda y el presupuesto de todo el
proyecto, en particular para la siguiente fase de elaboracin. Tpicamente es una fase breve
que puede durar unos pocos das o unas pocas semanas.
2. Elaboracin.- Se analiza el dominio del problema y se define el plan del proyecto. RUP
presupone que la fase de elaboracin brinda una arquitectura suficientemente slida junto con
requerimientos y planes bastante estables. Se describen en detalle la infraestructura y el
ambiente de desarrollo, as como el soporte de herramientas de automatizacin. Al cabo de
esta fase, debe estar identificada la mayora de los casos de uso y los actores, debe quedar
descripta la arquitectura de software y se debe crear un prototipo de ella. Al final de la fase se
realiza un anlisis para determinar los riesgos y se evalan los gastos hechos contra los
originalmente planeados.
3. Construccin.- Se desarrollan, integran y verifican todos los componentes y rasgos de la
aplicacin. RUP considera que esta fase es un proceso de manufactura, en el que se debe
poner nfasis en la administracin de los recursos y el control de costos, agenda y calidad. Los
resultados de esta fase (las versiones alfa, beta y otras versiones de prueba) se crean tan
rpido como sea posible. Se debe compilar tambin una versin de entrega. Es la fase ms
prolongada de todas.
A travs de las fases se desarrollan en paralelo nueve flujos de trabajo o disciplinas: Modelado
de Negocios, Requerimientos, Anlisis y Diseo, Implementacin, Prueba, Gestin de
Configuracin y Cambio, Gestin del Proyecto y Entorno. Adems de estos flujos de trabajo,
RUP define algunas prcticas comunes:
Desarrollo iterativo de software. Las iteraciones deben ser breves y proceder por
incrementos pequeos. Esto permite identificar riesgos y problemas tempranamente y
reaccionar frente a ellos en consecuencia.
Modelado visual del software. Se deben construir modelos visuales, porque los sistemas
complejos no podran comprenderse de otra manera. Utilizando una herramienta como UML, la
arquitectura y el diseo se pueden especificar sin ambigedad y comunicar a todas las partes
involucradas.
Prueba de calidad del software. RUP pone bastante nfasis en la calidad del producto
entregado.
Bibliografia
www.e-market.cl/dir/umayor/ingsw/06-01_vesp/espiral.ppt
Fecha de visita:07/05/10
www.aulafacil.com/CursoRecursosHumanos/IntroBlo.htm
Fecha de visita:08/05/10
http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software
Fecha de visita:08/05/10
MODELOS DEL PROCESO DEL SOFTWARE
Enviado por:
www.monografias.com/usuario/perfiles/ing_lic_yunior_andra_s_castillo_s/mo
nografias
Repblica Dominicana,
2015.
Autores:
Alarcon Pastor Ruth Barinia.
Carrasco Palomino Juan Reymundo.