El documento resume los conceptos clave relacionados con el desarrollo de software, incluyendo definiciones de software, ingeniería de software, ciclos de vida de desarrollo de software como los modelos cascada, en V, iterativo, incremental y en espiral. También discute metodologías tradicionales y ágiles, señalando que no existe una metodología universal sino que debe adaptarse al contexto del proyecto.
2. ¿SOFTWARE? ANALIZA Y DESARRÓLLALO
YADIRA MEDINA COMETA
INSTRUCTOR: ROGER MAURICIO TOVAR
SENA
ADSI
NEIVA 05/11/201
3. ¿SOFTWARE? ANALIZA Y DESARRÓLLALO
El tiempo pasa, mientras tanto en la nueva sociedad se van generando cambios
de todo tipo, el mundo no se queda quieto y cada día que transcurre es una
oportunidad más para que aquellos que deseen, lleven a cabo sus ideas, sus
proyectos; debido a esto la tecnología ha tenido un gran desarrollo lo que me hace
pensar en la importancia de conocer este tema. Lo que mencionaré más adelante
se centrará específicamente en todo lo referente al software como tecnología
informática, a las distintas metodologías y ciclos de vida de desarrollo que existen ,
haciendo especial hincapié en el desarrollo ágil.
¿Desarrollo de software? Probablemente muchos no tienen ni las más mínima
idea a lo que esto hace referencia, y es que en su momento yo estaba igual, no
significa que ahora soy una experta, pero de lo que pude añadir a mis
conocimientos lo compartiré con ustedes. En esta época en la que todo avanza,
más en el campo tecnológico yo creo que todos deberíamos adquirir
conocimientos acerca del tema, el avance tecnológico se ha convertido en un
aspecto muy importante para el mundo y en lo que, de hecho, se está basando la
nueva sociedad.
Ahora bien, comienzo por dar una definición de software: Software son
programas, datos y documentación asociados, relacionados con la operación de
un sistema informático, ¿qué significa esto? Significa que los programas
proporcionan la funcionalidad requerida, los datos prueban los programas y los
documentos describen las operaciones y uso del programa, como características
del software tenemos que es un elemento lógico; se desarrolla, no se fabrica; cada
software es diferente debido a que se constituyen para cumplir requisitos únicos
de un cliente, esto se logra mediante coordinación, es un esfuerzo en equipo. Un
software puede desarrollarse con éxito, así como puede fallar; cuando un software
es exitoso es porque se tuvo disciplina, es decir, se tuvo un enfoque de ingeniería;
así pues la ingeniería del software cuyo término apareció por primera vez en la
conferencia de software de la OTAN en 1968, son conocimientos y técnicas que
permiten aplicar el saber científico a la utilización de la materia y de las fuentes de
energía.
Ingeniería del software; ¿saben? No es una simple frase, abarca más de lo que
imaginamos. Partiré con el hecho de que desarrollar un software requiere, como lo
mencioné anteriormente, disciplina, ¿para qué disciplina? Depende del resultado
que usted espere, y la clase de resultado que deseamos es evidente. ¿Lo ven? No
es difícil deducir que para que un software resulte exitoso debe trabajarse en ello
4. de la manera más correcta usando lo necesario, y precisamente el objetivo
primario de la ingeniería del software es construir un producto de alta calidad de
una manera oportuna, añadiendo que representa un proceso formal que incorpora
una serie de métodos bien definidos para el análisis, diseño, implementación y
pruebas del software y sistemas. Por otro lado, a pesar de la importancia que tiene
la ingeniería del software muchos perciben y opinan que no es necesaria, he allí el
dilema; hoy en día la prioridad más alta de las compañías es reducir el tiempo de
salida al mercado, toman la ingeniería como demasiado formal que consume
demasiado tiempo lo contrario a lo que se desea, desarrollar productos en forma
rápida. Ahora podemos preguntarnos si entonces es recomendable usar la
ingeniería del software y por qué, y realmente el hecho es que las personas que
mencionan tales objeciones sobre la ingeniería es porque la consideran una
disciplina estática y piensan que no se puede adaptar a las necesidades
cambiantes del negocio y la industria, pero la verdad es, que sin embargo, la
ingeniería del software es adaptativa y por lo tanto, relevante para cualquiera que
construya un producto software; aparte de ser adaptable cuenta con un
compromiso organizacional con la calidad, identifica cambios que se traduzcan en
los mayores beneficios, y comienza a implementarlos.
Por consiguiente mencionaré algo muy interesante que es, los ciclos de vida de
desarrollo del software. Esto puede ser extraño para algunos; pero es como todo,
no solo la naturaleza ni los humanos, entre otros tienen un ciclo de vida. En fin,
retomando pasare a decir qué es un ciclo de vida, pues es un 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), este concepto
como ven, no es algo complicado de entender; ahora veamos que además los
ciclos de vida de desarrollo del software tienen modelos, existen varios pero yo les
mencionare los más tradicionales y utilizados.
Modelo cascada: se cree que fue el primer modelo de proceso introducido y
seguido ampliamente en la ingeniería del software. A pesar que ha sido
ampliamente criticado desde el ámbito académico y la industria, sigue siendo el
paradigma más seguido el día de hoy, y es precisamente porque lo han sabido
manejar, esto significa que para que el proyecto tenga éxito deben desarrollarse
todas las fases las cuales continúan hasta que los objetivos se han cumplido, si se
cambia el orden de las fases, el producto final será de inferior calidad.
Modelo en v: El modelo en v se desarrolló para terminar con algunos de los
problemas que se vieron utilizando el enfoque de cascada tradicional. Los
defectos estaban siendo encontrados demasiado tarde en el ciclo de vida, ya que
las pruebas no se introducían hasta el final del proyecto. El modelo en v dice que
las pruebas necesitan empezarse lo más pronto posible en el ciclo de vida. El
5. modelo en v describe las actividades y resultados que han de ser producidos
durante el desarrollo del producto. La parte izquierda de la v representa la
descomposición de los requisitos y la creación de las especificaciones del sistema.
El lado derecho de la v representa la integración de partes y su verificación. V
significa “Validación y Verificación”. Por ende es un modelo simple y fácil de
utilizar, tiene una alta oportunidad de éxito sobre el modelo en cascada debido al
desarrollo de planes de prueba en etapas tempranas del ciclo de vida.
Modo iterativo: Es un modelo derivado del ciclo de vida en cascada. 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. En otras
palabras la iteración consiste en el acto de repetir varios ciclos de vida en este
caso en cascada. 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.
Modelo de desarrollo incremental: El modelo incremental combina elementos
del modelo en cascada con la filosofía interactiva de construcción de prototipos.
Se basa en la filosofía de construir incrementando las funcionalidades del
programa. Este modelo aplica secuencias lineales de forma escalonada mientras
progresa el tiempo en el calendario. Cada secuencia lineal produce un incremento
del software. A modo de conclusión podemos decir que un modelo incremental
lleva a pensar en un desarrollo modular, con entregas parciales del producto
Software denominados "incrementos" del sistema, que son escogidos en base a
prioridades predefinidas de algún modo. El modelo permite una implementación
con
refinamientos
sucesivos
(ampliación
y/o
mejoras).
Con cada incremento se agrega nueva funcionalidad o se cubren nuevos
requisitos o bien se mejora la versión previamente implementada del producto
software.
Modelo en espiral: Las actividades de este modelo se conforman en una espiral,
cada bucle representa un conjunto de actividades. Las actividades no están fijadas
a priori, sino que las siguientes se eligen en función del análisis de riesgos,
comenzando por el bucle anterior. El ciclo de vida en espiral tiene en cuenta
fuertemente el riesgo que aparece a la hora de desarrollar software. Para ello, se
comienza mirando las posibles alternativas de desarrollo, se opta por la de riesgos
más asumibles y se hace un ciclo de la espiral. Si el cliente quiere seguir haciendo
mejoras en el software, se vuelven a evaluar las nuevas alternativas y riesgos y se
realiza otra vuelta de la espiral, así hasta que llegue un momento en el que el
producto software desarrollado sea aceptado y no necesite seguir mejorándose
con otro nuevo ciclo.
6. Modelo de prototipos: Un cliente, a menudo, define un conjunto de objetivos
generales para el software, pero no identifica los requisitos detallados de entrada,
proceso o salida. En otros casos, el responsable del desarrollo del software puede
no estar seguro de la eficiencia de un algoritmo, de la calidad de adaptación de un
sistema operativo, o de la forma en que debería tomarse la interacción hombremáquina; y es que el modelo de prototipos ofrece visibilidad del producto desde el
inicio del ciclo de vida con el primer prototipo. Esto puede ayudar al cliente a
definir mejor los requisitos y a ver las necesidades reales del producto. Permite
introducir cambios en las iteraciones siguientes del ciclo. Permite la realimentación
continua del cliente. En estas y en otras muchas situaciones, un paradigma de
construcción de prototipos puede ofrecer el mejor enfoque.
Muy bien, los conceptos no son tan difíciles de comprender como lo mencioné en
alguna ocasión, y es que cada quien toma por optar un modelo de acuerdo a las
características del proyecto teniendo en cuenta que todos los modelos tienen sus
ventajas y desventajas.
El desarrollo de software no es una tarea fácil. Prueba de ello es que existen
numerosas propuestas metodológicas que inciden en distintas dimensiones del
proceso de desarrollo. La metodología para el desarrollo de software en un modo
sistemático de realizar, gestionar y administrar un proyecto para llevarlo a cabo
con altas posibilidades de éxito, la metodología se refiere al entorno usado para
llevar a cabo todo el proceso de desarrollo de un sistema de información, decimos
que no existe una metodología universal para hacer frente con éxito a cualquier
proyecto de desarrollo de software. Toda metodología debe ser adaptada al
contexto del proyecto (recursos técnicos y humano, tiempo de desarrollo, tipo de
sistema, etc.) como nos indica la guía. Por un lado están las propuestas más
tradicionales las cuales han demostrado ser efectivas y necesarias, pero también
han presentado problemas en algunos proyectos. Algo que podríamos hacer para
mejorar, es incluir mas actividades, artefactos y restricciones centrándose en los
puntos débiles, esto conlleva a que el proceso sea más complejo por ende trae
sus desventajas. Otra aproximación es centrarse en otras dimensiones, como por
ejemplo el factor humano o el producto software, precisamente a esto es lo que
hace referencia específica las metodologías ágiles en su contenido, las cuales dan
un valor primordial al individuo, a la colaboración con el cliente y al desarrollo
incremental del software con iteraciones muy cortas. Este enfoque es de hecho
muy interesante ya que demuestra ser efectivo en proyectos con requisitos
cambiantes más aun cuando se requiere reducir en gran manera los tiempos eso
sí, manteniendo siempre una alta calidad. Es por esto que en la mayoría de casos
se tiene en cuenta la metodologías ágiles debido a su sencillez que por ende
reduce costos; sobra mencionar que existe una serie de inconvenientes y
7. restricciones que posee y que hay que tener en cuenta a la hora de utilizarla,
como por ejemplo que están dirigidas a equipos pequeños o medianos, debe
haber comunicación y colaboración entre todos los miembros del equipo durante
todo el tiempo, cualquier resistencia del cliente o del equipo de desarrollo hacia las
practicas y principios puede llevar el proceso al fracaso. Creo que con esto queda
más que claro lo referente a las metodologías, no significa que el tema no sea más
extenso, de hecho hay cosas de las cuales prescindí para mencionar en breve el
tema.
Espero que hayan sido aclaradas muchas dudas, es bueno tener en cuenta que
tanto la idea de un buen proyecto como su desarrollo es realizar un buen análisis
de lo que nos piden, usando las herramientas, restricciones, etc., adecuadas y
requeridas para obtener un producto de alta calidad y exitoso.
BIBLIOGRAFIA
GUIA DE INGENIERIA DEL SOFTWARE