Sie sind auf Seite 1von 14

Procesos de Software

En un mundo de cambios constantes y competencia global, las organizaciones


de desarrollo de software son presionadas a alcanzar mayor eficiencia con
menores costos. Para poder lograr este objetivo, es necesario adoptar una
forma de trabajo que permita entender, controlar, comunicar, mejorar, predecir
y certificar el trabajo realizado.
Actualmente existe una gran diversidad de opciones relacionadas con procesos
de desarrollo. Constantemente se escuchan diferentes acrnimos como CMM,
CMMI, RUP, ISO, PSP, TSP, etc., que causan confusin, principalmente debido a
la mala interpretacin de los mismos.
Revisemos entonces los principales procesos de desarrollo y modelos ms
utilizados al momento, as como los estndares relacionados.

Por qu contar con un proceso de software?


Hasta hace poco tiempo, la produccin de software era realizada con un
enfoque artstico, a diferencia de un enfoque industrial. Ante la constante
presencia de proyectos fallidos, y con el objetivo de mejorar la calidad de los
productos, en los ltimos aos las organizaciones introdujeron los mtodos de
ingeniera de software (Ver Fundamentos Desarrollar software es mucho ms
que programar, pg. 42).
A partir de estos, se formaliz el enfoque de ingeniera de producto para
desarrollar software. Factores como la globalizacin han obligado a las
organizaciones a contar con marcos de trabajo que las ayuden hacer las cosas
de la manera ms eficiente. Fue entonces que se incorpor la ingeniera de
procesos al desarrollo de software.

Proceso
Antes de definir lo que es un proceso de desarrollo de software, entendamos lo
que es un proceso. Una definicin sencilla de proceso es serie de acciones que
conducen a un final. Esta definicin parece coincidir con las ideas generales
de la gente sobre procesos, pero deja muchas preguntas abiertas. El proceso
es la forma en que la organizacin opera desde mercadotecnia hasta
recursos humanos o es la forma en que un desarrollador disea, produce
cdigo, o prueba el software? El proceso se refiere a administracin,
ingeniera, o ambas? El proceso implica demasiada documentacin y nos
abstiene de desarrollar el producto objetivo?
La respuesta a stas puede variar dependiendo de la perspectiva. Sin embargo,
siempre que para alcanzar algn fin deseado necesitemos ejecutar una serie
de acciones, y estas acciones tengan cierto orden, dependencias, roles

responsables, resultados, tiempos de ejecucin y herramientas de apoyo,


estaremos hablando de procesos, que pueden ser predefinidos y
personalizados.

Proceso de software
La meta de la ingeniera de software es construir productos de software, o
mejorar los existentes; en ingeniera de procesos, la meta es desarrollar o
mejorar procesos.
Un proceso de desarrollo de software es un conjunto de personas, estructuras
de organizacin, reglas, polticas, actividades y sus procedimientos,
componentes de software, metodologas, y herramientas utilizadas o creadas
especficamente para definir, desarrollar, ofrecer un servicio, innovar y
extender un producto de software.
Un proceso de software efectivo habilita a la organizacin a incrementar su
productividad al desarrollar software:

Permite estandarizar esfuerzos, promover reuso, repeticin y


consistencia entre proyectos.

Provee la oportunidad de introducir mejores prcticas de la industria.

Permite entender que las herramientas deben ser utilizadas para


soportar un proceso.

Establece la base para una mayor consistencia y mejoras futuras.

Un proceso de software mejora los esfuerzos de mantenimiento y soporte:

Define cmo manejar los cambios y liberaciones a sistemas de software


existentes.

Define cmo lograr la transicin del software a la operacin, y cmo


ejecutar los esfuerzos de operacin y soporte.

Necesitamos un proceso de software cuya funcionalidad est probada en la


prctica, y personalizado para que cumpla con nuestras necesidades
especficas.
Ciclo de vida del Software

El ciclo de vida del desarrollo Software (SDLC en sus siglas inglesas), es una secuencia
estructurada y bien definida de las etapas en Ingeniera de software para desarrollar el
producto sofware deseado.

describe el desarrollo de software, desde la fase inicial hasta la fase final. El propsito de este
programa es definir las distintas fases intermedias que se requieren para validar el desarrollo
de la aplicacin, es decir, para garantizar que el software cumpla los requisitos para la
aplicacin y verificacin de los procedimientos de desarrollo: se asegura de que los mtodos
utilizados son apropiados.
Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se
detectan tarde dentro de la fase de implementacin. El ciclo de vida permite que los errores se
detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la
calidad del software, en los plazos de implementacin y en los costos asociados.
El ciclo de vida bsico de un software consta de los siguientes procedimientos:

Definicin de objetivos: definir el resultado del proyecto y su papel en la estrategia


global.

Anlisis de los requisitos y su viabilidad: recopilar, examinar y formular los


requisitos del cliente y examinar cualquier restriccin que se pueda aplicar.

Diseo general: requisitos generales de la arquitectura de la aplicacin.

Diseo en detalle: definicin precisa de cada subconjunto de la aplicacin.

Programacin (programacin e implementacin): es la implementacin de un


lenguaje de programacin para crear las funciones definidas durante la etapa de diseo.

Prueba de unidad: prueba individual de cada subconjunto de la aplicacin para


garantizar que se implementaron de acuerdo con las especificaciones.

Integracin: para garantizar que los diferentes mdulos se integren con la aplicacin.
ste es el propsito de la prueba de integracin que est cuidadosamente documentada.

Prueba beta (o validacin), para garantizar que el software cumple con las
especificaciones originales.

Documentacin: sirve para documentar informacin necesaria para los usuarios del
software y para desarrollos futuros.

Implementacin

Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo)

y las actualizaciones secundarias del software (mantenimiento continuo).


El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una
aplicacin dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo
de desarrolladores.

Ciclo de vida del software


El trmino ciclo de vida del software describe el desarrollo de software, desde la fase inicial
hasta la fase final. El propsito de este programa es definir las distintas fases intermedias que

se requieren para validar el desarrollo de la aplicacin, es decir, para garantizar que el


software cumpla los requisitos para la aplicacin y verificacin de los procedimientos de
desarrollo: se asegura de que los mtodos utilizados son apropiados.
Estos programas se originan en el hecho de que es muy costoso rectificar los errores que se
detectan tarde dentro de la fase de implementacin. El ciclo de vida permite que los errores se
detecten lo antes posible y por lo tanto, permite a los desarrolladores concentrarse en la
calidad del software, en los plazos de implementacin y en los costos asociados.
El ciclo de vida bsico de un software consta de los siguientes procedimientos:

Definicin de objetivos: definir el resultado del proyecto y su papel en la estrategia


global.

Anlisis de los requisitos y su viabilidad: recopilar, examinar y formular los


requisitos del cliente y examinar cualquier restriccin que se pueda aplicar.

Diseo general: requisitos generales de la arquitectura de la aplicacin.

Diseo en detalle: definicin precisa de cada subconjunto de la aplicacin.

Programacin (programacin e implementacin): es la implementacin de un


lenguaje de programacin para crear las funciones definidas durante la etapa de diseo.

Prueba de unidad: prueba individual de cada subconjunto de la aplicacin para


garantizar que se implementaron de acuerdo con las especificaciones.

Integracin: para garantizar que los diferentes mdulos se integren con la aplicacin.
ste es el propsito de la prueba de integracin que est cuidadosamente documentada.

Prueba beta (o validacin), para garantizar que el software cumple con las
especificaciones originales.

Documentacin: sirve para documentar informacin necesaria para los usuarios del
software y para desarrollos futuros.

Implementacin
Mantenimiento: para todos los procedimientos correctivos (mantenimiento correctivo)
y las actualizaciones secundarias del software (mantenimiento continuo).

El orden y la presencia de cada uno de estos procedimientos en el ciclo de vida de una


aplicacin dependen del tipo de modelo de ciclo de vida acordado entre el cliente y el equipo
de desarrolladores.

Modelos de ciclo de vida


Para facilitar una metodologa comn entre el cliente y la compaa de software, los modelos
de ciclo de vida se han actualizado para reflejar las etapas de desarrollo involucradas y la
documentacin requerida, de manera que cada etapa se valide antes de continuar con la
siguiente etapa.

Modelo de cascada
Este modelo asume que todo se lleva a cabo y tiene lugar tal y como se
haba planeado en la fase anterior, y no es necesario pensar en asuntos
pasados que podran surgir en la siguiente fase. Este modelo no
funcionar correctamente si se dejan asuntos de lado en la fase previa.
Caracteristicas:

Cada fase empieza cuando se ha terminado la fase anterior

Para pasar de una fase a otra es necesario conseguir todos los objetivos de la etapa
previa

Ayuda a prevenir que se sobrepasen las fechas de entrega y los costes esperados

Al final de cada fase el personal tcnico y los usuarios tienen la oportunidad de


revisar el progreso del proyecto

Este modelo es recomendable cuando el desarrollador ya ha diseado y


desarrollado softwares similares con anterioridad, y por eso est al
tanto de todos sus dominios.

Modelo repetitivo
Este modelo gua el proceso de desarrollo de software en repeticiones.
Proyecta el proceso de desarrollo de forma cclica repitiendo cada paso
despus de cada ciclo en el proceso de SDLC.
El software primero se desarrolla en menor escala y se siguen y tienen
en consideracin todos los pasos. Entonces, por cada repeticin, ms
mdulos y caractersticas son diseados, codificados, evaluados y
aadidos al software. Cada ciclo produce un sotware completo, con ms
caractersticas y capacidad que los previos.

Despus de cada repeticin, el equipo directivo puede concentrarse en


la gestin de riesgos y prepararse para la siguiente repeticin. Como el
ciclo incluye pequeas porciones de la totalidad del proceso software,
es ms fcil gestionar el proceso de desarrollo, pero a la vez se
consumen ms recursos.

Modelo en espiral
El modelo en espiral es una combinacin de ambos modelos, el
repetitivo y uno del modelo SDLC. Se puede ver como si se combina un
modelo de SDLC combinado con un proceso cclico (modelo repetitivo).

Este modelo considera el riesgo, factor que otros modelos olvidan o no


prestan atencin en el proceso. El modelo empieza determinando los
objetivos y las limitaciones del software al inicio de cada repeticin. En
la siguiente etapa se crean los modelos de prototipo del software. Esto
incluye el anlisis de riesgos. Luego un modelo estndar de SDLC se
usa para construir el software. En la cuarta etapa es donde se prepara
el plan de la siguiente repeticin.
Modelo Incremental
El modelo incremental fue propuesto por Harlan Mills en el ao 1980. Surgi el enfoque
incremental de desarrollocomo 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
adquirirexperiencia con el sistema. Este modelo se conoce tambin bajo las siguientes
denominaciones:

Mtodo de las comparaciones limitadas sucesivas.

Ciencia de salir del paso.

Mtodo de atacar el problema por ramas.

Caractersticas:

Se evitan proyectos largos y se entrega "algo de valor" a los usuarios con cierta frecuencia.

El usuario se involucra mas.

Dificil de evaluar el costo total.

Dificil de aplicar a los sistemas transaccionales que tienden a ser integrados y a operar
como un todo.

Requiere gestores experimentados.

Los errores en los requisitos se detectan tarde.

El resultado puede ser positivo.

Ventajas:

Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se


implementa la funcionalidad parcial.

Tambin provee un impacto ventajoso frente al cliente, que es la entrega temprana de


partes operativas del software.

El modelo proporciona todas las ventajas del modelo en Cascada realimentado,


reduciendo sus desventajas slo al mbito de cada incremento.

Resulta ms sencillo acomodar cambios al acotar el tamao de los incrementos.

Modelo Big Bang


Este modelo es el modelo con la forma ms simple. Requiere poca
planificacin, mucha programacin y tambin muchos fondos. Este
modelo se conceptualiza alrededor de la teora de creacin del universo
'Big Bang'. Tal como cuentan los cientficos, despus del big bang
muchas galaxias, planetas y estrellas evolucionaron. De la misma
manera, si reunimos muchos fondos y programacin, quiz podemos
conseguir el mejor producto de software.

Para este modelo, se requiere poca planificacin. No sigue ningn


proceso concreto, y a veces el cliente no est seguro de las futuras
necesidades y requisitos. Por tanto la entrada o input respecto a los
requisitos es arbitraria.
Este modelo no es recomendable para grandes proyectos de software,
pero es bueno para aprender y experimentar.
MODELO DE PROTOTIPOS
Este modelo no secuencial, basado en la construccin de simulaciones o
modelos ejecutables de aplicaciones ms extensos, persigue un objetivo
principal: la participacin directa del cliente en la construccin del software
requerido. Las fases son similares a las del modelo en cascada: es necesario
un anlisis previo de los requisitos tanto del sistema como del cliente, se
concibe la arquitectura del sistema y se realiza el diseo del software. Sin
embargo, se incluye un elemento hasta ahora no utilizado, que consiste en el
diseo rpido de un prototipo que se mostrar al cliente para que evale el
trabajo realizado.

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.

Tambin 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 debera tomar la interaccin humano-mquina.

Se puede reutilizar el cdigo.

No modifica el flujo del ciclo de vida.

Reduce el riesgo de construir productos que no satisfagan las necesidades de los


usuarios.
Modelos de Proceso de Software

1. Procesos de Software
Un proceso del software es un conjunto de actividades que conducen a la creacin de un
producto software. Estas actividades pueden consistir en el desarrollo de software desde
cero en un lenguaje de programacin estndar como Java o C. Sin embargo, cada vez
ms, se desarrolla nuevo software ampliando y modificando los sistemas existentes y
configurando e integrando software comercial o componentes del sistema.
Los procesos del software son complejos y como todos los procesos intelectuales y
creativos, dependen de las personas que toman decisiones y juicios. Debido a la
necesidad de juzgar y crear, los intentos para automatizar estos procesos han tenido un
xito limitado. Las herramientas de ingeniera del software asistida por computadora
pueden ayudar a algunas actividades del proceso. Sin embargo, no existe posibilidad
alguna, al menos en los prximos aos, de una automatizacin mayor en el diseo
creativo del software realizado por los ingenieros relacionados con el proceso del
software.
Una razn por la cual la eficacia de las herramientas est limitada se halla en la inmensa
diversidad de procesos del software. No existe un proceso ideal y muchas organizaciones
han desarrollado su propio enfoque para el desarrollo del software. Los procesos han
evolucionado para explotar las capacidades de las personas de una organizacin, as
como las caractersticas especficas de los sistemas que se estn desarrollando. Para
algunos sistemas, como los sistemas crticos, se requiere un proceso de desarrollo muy
estructurado. Para sistemas de negocio, con requerimientos rpidamente cambiantes, un
proceso flexible y gil probablemente sea ms efectivo. Aunque existen muchos procesos
diferentes de software, algunas actividades fundamentales son comunes para todos ellos:
1.1.

Especificacin del software.

Se debe definir la funcionalidad del software y las restricciones en su operacin.


1.2.

Diseo e implementacin del software.

Se debe producir software que cumpla su especificacin.


1.3.

Validacin del Software

Se debe validar el software para asegurar que hace lo que el cliente desea.
1.4.

Evolucin del software

El software debe evolucionar para cubrir las necesidades cambiantes del cliente.
2. Modelo del Proceso del Software
Cada modelo de proceso representa un proceso desde una perspectiva particular y as
proporciona slo informacin parcial sobre ese proceso. Estos modelos generales no son
descripciones definitivas de los procesos del software. Ms bien, son abstracciones de los
procesos que se pueden utilizar para explicar diferentes enfoques para el desarrollo de
software. Puede pensarse en ellos como marcos de trabajo del proceso que pueden ser
extendidos y adaptados para crear procesos ms especficos de ingeniera del software.
Los Modelos de procesos que se incluyen son:

2.1.

Modelo Lineal Secuencial

Llamado algunas veces ciclo de vida bsico o modelo en cascada, el modelo lineal
secuencial sugiere un enfoque sistemtico, secuencial, para el desarrollo del software que
comienza en un nivel de sistemas y progresa con el anlisis, diseo, codificacin, pruebas
y mantenimiento.
Es un ciclo de vida en sentido amplio, que incluye no slo las etapas de ingeniera si no
toda la vida del producto: las pruebas, el uso (la vida til del software) y el mantenimiento.
2.1.1. Ingeniera del sistema
Es donde se desarrolla el anlisis de las caractersticas y el comportamiento del sistema del
cual el software va a formar parte.
2.1.2. Anlisis
Es donde se debe comprender cules son los datos que se van a manejar, cul va ser la
funcin que tiene que cumplir el software, cules son sus interfaces requeridas y cul es el
rendimiento.
2.1.3. Diseo

Se aplica a cuatro caractersticas distintas del software: la estructura de datos, la arquitectura


de las aplicaciones, la estructura interna de los programas y las interfaces.
2.1.4. Codificacin
Consiste en la traduccin del diseo a un formato que sea comprensible para la mquina. Si el
diseo es lo suficientemente detallado, la codificacin es relativamente sencilla.
2.1.5.

Prueba

El objetivo es comprobar que no se hayan producido errores en alguna de las fases


anteriores, especialmente en la codificacin.
2.1.6. Utilizacin
El software se entrega al cliente y comienza la vida til del mismo.
2.1.7. Mantenimiento
El software sufrir cambios a lo largo de su vida til. Estos cambios pueden ser debido a tres
causas; Errores latentes (Durante la utilizacin el cliente detecte errores en el software), Que
se produzcan cambios en alguno de los componentes del sistema y que el cliente requiera
modificaciones funcionales no contempladas en el proyecto.
2.2.

El Modelo de Construccin de Prototipos

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.
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.
2.2.1. Identificar los requerimientos conocidos:
Los analistas y los usuarios trabajan juntos para identificar los requerimientos conocidos que
tienen que satisfacerse. Se debe determinar los fines del sistema y el alcance de su
capacidad.
2.2.2. Desarrollar modelo que funcione

Es donde los desarrolladores deben de explicar a los usuarios el mtodo, las actividades a
realizar, la secuencia en que se llevar a cabo, la responsabilidad de cada participante.
2.2.3. Utilizar el prototipo:
La responsabilidad de trabajar con el prototipo y evaluar sus caractersticas y operacin es del
usuario. Es donde se debe experimentar el sistema bajo condiciones reales para poder
determinar los cambios, mejoras o eliminar caractersticas innecesarias.
2.2.4. Revisar prototipo
Se realiza la evaluacin y con la informacin obtenida se levantan las caractersticas que debe
llevar la siguiente versin del prototipo.
2.2.5. Prototipo terminado?
Los pasos anteriores se repiten varias veces entre 4 o 6 iteraciones cuando los usuarios y
desarrolladores estn de acuerdo en que el sistema ha evolucionado lo suficiente e incluye
todas las caractersticas necesarias.
2.3.

El modelo DRA (Desarrollo Rpido de Aplicaciones)

Es un modelo de proceso de desarrollo del software que enfatiza en un ciclo de desarrollo


corto.
El proceso DRA permite al equipo de desarrollo crear un sistema completamente funcional
dentro de periodos cortos de tiempo (De 60 a 90 das)
2.3.1. Modelado de gestin
El flujo de informacin entre las funciones de gestin se modela de forma que responda a las
preguntas: Qu informacin conduce al proceso de gestin? Qu informacin se genera?
Quin la genera? A dnde va la informacin? Quin la procesa?
2.3.2. Modelado de datos
Conjunto de objetos de datos necesarios para apoyar la empresa. Se definen los atributos de
cada uno de los objetos y las relaciones entre estos objetos.
2.3.3. Modelado del proceso

Los objetos de datos definidos en la fase del modelado de datos quedan transformados para
lograr el flujo de informacin necesario para implementar una funcin de gestin.
2.3.4. Generacin de aplicaciones
El DRA asume la utilizacin de tcnicas de cuarta generacin. Trabaja para volver a utilizar
componentes de programas ya existentes o crear componentes reutilizables.
2.3.5. Pruebas y entrega
Como el proceso DRA enfatiza la reutilizacin, ya se han comprobado muchos de los
componentes de los programas. Esto reduce el tiempo de pruebas. Sin embargo, se deben
probar todos los componentes nuevos y se deben ejercitar todas las interfaces a fondo.
2.4.

Modelos de procesos evolutivos de software.

Dentro de los modelos de procesos evolutivos, encontramos:


2.4.1. El modelo Incremental
Es una combinacin del modelo de cascada y el modelo por prototipos. 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 prototipo,
dependiendo del conocimiento que se tenga sobre los requisitos a implementar. El modelo
incremental se centra en la entrega de un producto operacional con cada incremento.
Los primeros incrementos son versiones incompletas del producto final, pero proporcionan al
usuario la funcionalidad necesaria para su evaluacin.
2.4.2. El Modelo Espiral
El ciclo de desarrollo se representa como un espiral, en lugar de una serie de actividades
sucesivas con retrospectiva de una actividad a otra.
Cada ciclo de desarrollo se divide en cuatro fases:
2.4.2.1.Definicin de objetivos:

Se definen los objetivos, se definen las restricciones del proceso y del producto. Se realiza un
diseo detallado del plan administrativo, se identifican los riesgos y se elaboran las estrategias
alternativas dependiendo de estos.
2.4.2.2.Evaluacin y reduccin de riesgos
Se realiza un anlisis detallado de cada riesgo identificado. Pueden desarrollarse prototipos
para disminuir el riesgo de requisitos dudosos.
2.4.2.3.Desarrollo y validacin
Se escoge el modelo de desarrollo despus de la evaluacin del riesgo. El modelo que se
utilizar depende del riesgo identificado para esa fase.
2.4.2.4.Planificacin
Se determina si continuar con otro ciclo. Se planea la siguiente fase del proyecto.
2.4.2.5.Actividades del modelo en espiral

Comunicacin con el cliente: Se establece comunicacin entre el desarrollador y el

cliente.

Planificacin: Se definen los recursos, el tiempo y otra informacin relacionados con el

proyecto.

Anlisis de riesgos: Se evalan riesgos tcnicos y de gestin.

Ingeniera: Se construyen una o ms representaciones de la aplicacin.

Construccin y accin: Construir, probar, instalar y proporcionar soporte al usuario.

Evaluacin del cliente: Se obtiene la reaccin del cliente. Se realiza la evaluacin de

las representaciones del software creadas durante la etapa de ingeniera e implementada


durante la etapa de instalacin.

Das könnte Ihnen auch gefallen