Está en la página 1de 8

¿Cuál es el objetivo y la importancia del ciclo de vida del software?

El ciclo de vida de un proyecto se software, empieza cuando se da la recolección


de requerimientos para el programa a desarrollar y termina cuando el producto ha
quedado completado y es entregado al cliente que lo pidió
El propósito de este programa es definir las distintas fases intermedias que se
requieren para validar el desarrollo de la aplicación, es decir, para garantizar que
el software cumpla los requisitos para la aplicación y verificación de los
procedimientos de desarrollo: se asegura de que los métodos 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 implementación. 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
implementación y en los costos asociados.
El software es imprescindible para cualquier sistema informático o basado en
informática, puesto que, sin él, este no funcionaría. Es el software quien da las
órdenes, quien indica que debe hacer cada máquina con sus elementos, cuando
y como. Un ordenador sin software sería simplemente un conjunto de chips,
cables, periféricos e interruptores totalmente inerte y sin función alguna. Es el
software quien ordena todo ese material, lo reconoce, le asigna una función
según sus características, y permite que funcione todo en su conjunto.
La importancia del software radica también en que permite
una comunicación entre el usuario y la máquina, e incluso una interacción entre
ambos. Gracias al software podemos ejecutar tareas que hace décadas hubiesen
llevado años de trabajo, y ello ha supuesto sin lugar a dudas una revolución
mundial en la sociedad moderna. Está tan presente en nuestra vida cotidiana,
que muchas veces pasa desapercibido que no sólo tenemos programas y
aplicaciones en los ordenadores, sino que la mayor parte de los
electrodomésticos, coches, mandos… llevan su propio software (más o menos
simple) incorporado.

Existen en la actualidad dos modos principales de pensar entre los creadores de


software. Por un lado, están los programadores defensores del software
propietario y por otro los que defienden el software libre.
Estos últimos abogan por que todo usuario tiene derecho a que el software que
necesite sea gratuito, y a que el código de ese software sea público, accesible y
visible para todo aquel que lo quiera modificar (código abierto), para ajustarlo a sus
necesidades.
La mayor parte de los grandes programas propietarios contienen código
malicioso, oculto para el usuario y que se usa para recabar información o ejecutar
subrutinas sin permiso de este. Al no poder ver el código, no se sabe con
exactitud si ese programa propietario está limpio o realmente está
aprovechándose del usuario. Todo lo contrario de un programa libre, que es
software sin nada oculto.
 Planificación: es el paso previo al inicio de cualquier proyecto de desarrollo y
sin dudas el más importante. En este se definen los requerimientos y
funcionalidades que debe tener el software, mediante el trabajo en conjunto entre
los desarrolladores, el departamento de ventas, los estudios de mercado y,
fundamentalmente, el contacto con el cliente. En este punto se realizan asimismo
los análisis de riesgo para el emprendimiento y se fijan los requisitos de
aseguramiento de la calidad. es analizar brevemente los requerimientos que el
cliente pide para la elaboración del sistema que necesita. Un punto importante
por el cual la planificación siempre debe estar en los ciclos de vida del software.
Es porque el cliente se imagina su producto final de una forma tan abstracta, que
necesitas hacer que ponga los pies en el suelo para obtener resultados que se
acerquen más a la realidad.

 Implementación. Una vez que hemos platicado con el cliente y tenemos lo que
es un análisis de requerimientos, necesidades y funcionalidades por parte de una
aceptación en ambas partes, entonces procedemos con lo que es el ciclo de vida
de desarrollo de software. Para este punto, existen una infinidad de metodologías
de desarrollo de software, que nos ofrecen la posibilidad de trabajar de distintas
formas. Esto incluye el análisis de requisitos, análisis del impacto,
optimizaciones, sistemas de integración, política de uso, aprendizaje del usuario,
marcha blanca y costes asociados. A menudo todos estos pasos son gestionados
y dirigidos por un Director de Proyecto que utiliza metodologías de gestión de
proyecto.

 Prueba: en esta etapa se evalúa el desempeño del programa para verificar la


existencia de fallas o posibilidades de mejora hasta alcanzar los estándares de
calidad predefinidos en la planificación. Las pruebas son básicamente un
conjunto de actividades dentro del desarrollo de software. Dependiendo del tipo
de pruebas, estas actividades podrán ser implementadas en cualquier momento
de dicho proceso de desarrollo. Existen distintos modelos de desarrollo de
software, así como modelos de pruebas. A cada uno corresponde un nivel distinto
de involucramiento en las actividades de desarrollo. El objetivo de las pruebas es
presentar información sobre la calidad del producto a las personas responsables
de este. Las pruebas de calidad presentan los siguientes objetivos: encontrar
defectos o bugs, aumentar la confianza en el nivel de calidad, facilitar información
para la toma de decisiones, evitar la aparición de defectos.

 Documentación: Los manuales técnicos, de usuario y otras instrucciones que


facilitan el uso y operación de un producto o servicios de software constituyen la
documentación de software, la cual podría incluir (donde fuera necesario) el
código fuente, los códigos de error y sus significados. Puede existir en formato
electrónico, como archivo PDF o CD, o como libro. Todos los procesos del ciclo
vital del software en el desarrollo de cualquier software se registran como
documentación. La documentación sirve como información escrita sobre
definición de requerimientos, especificaciones generales del sistema,
especificación de cada componente y los planes integrales de prueba y
mantenimiento. Las herramientas de gestión de configuración también son de
gran utilidad en la documentación del software.

 Despliegue: el momento en que el sistema ya está terminado y ha sido aprobado


para que se elabore el producto final. Consiste en varias actividades.}
 Lanzamiento: Incluye todas las operaciones para preparar un sistema para
el compilado y la transferencia a los sistemas informáticos en los que se
ejecutará en producción. Implica la determinación de
los recursos necesarios para que el sistema funcione con un rendimiento
y planificación tolerables y / o documente las actividades posteriores del
proceso de implementación.
 Instalación y activación: implica establecer algún tipo de comando, acceso
directo, script o servicio para ejecutar el software (manual o
automáticamente). Para sistemas complejos puede implicar la
configuración del sistema, posiblemente haciendo preguntas al usuario
final sobre su uso previsto, o preguntándoles directamente cómo les
gustaría que se configuren, y / o haciendo que todos
los subsistemas necesarios estén listos para usar. La activación es la
actividad de iniciar el componente ejecutable de software por primera vez.
 Desactivación: se refiere al cierre de cualquier componente que ya se esté
ejecutando de un sistema. A menudo se requiere la desactivación para
realizar otras actividades de implementación, por ejemplo, es posible que
un sistema de software deba desactivarse antes de que se pueda realizar
una actualización. La práctica de eliminar los sistemas poco usados u
obsoletos del servicio a menudo se denomina retiro de la aplicación o
desmantelamiento de la aplicación.
 Mantenimiento: es una de las actividades más comunes a realizar dentro
de este sector, es el proceso final después de que un software está siendo
utilizado, normalmente se ejecuta un mantenimiento de software para
corregir ciertos errores que el programa tiene, algunos bugs o detalles de
interfaz a solucionar, pero también puede ser para mejorar el rendimiento
del programa o para adaptarlo a distintas áreas como los dispositivos
móviles, por ejemplo.

Define cada etapa del proceso del ciclo de vida del software

 Definición de necesidades: La etapa de identificación de las necesidades


consiste en realizar en primer lugar un inventario del sistema de información, en
particular de la siguiente información:
Personas y funciones
Materiales, servidores y los servicios que éstos brindan
Esquematización de la red (esquema de direcciones, topologías físicas y
lógicas, etc.)
Lista de los nombres de dominio de la empresa.
Infraestructura de la comunicación (routers, conmutadores, etc.)
Información delicada
Esto se traduce en un conjunto de requerimientos hechos por el usuario, indicando
las distintas funcionalidades que desea que el sistema tenga. Es una etapa crítica
en la que hay que invertir el tiempo que sea necesario y en la que se genera un
documento de requerimientos.

 Análisis: El análisis y el diseño del Software incluye todas las actividades, que
ayudan a transformar los requisitos requeridos en implementación. Los
requisitos especifican la previsión operativa o no operativa del software. La
especificación de requisitos se da en documentos con un lenguaje humano
comprensible, con el que el ordenador no tiene ninguna relación.
El análisis y el diseño de Software es la fase intermedia, que ayuda a los requisitos
legibles por humanos a ser transformados en códigos reales.
 Herramientas de análisis y de diseño.
Diagrama de flujo de datos: es una representación gráfica de los flujos de
datos en un sistema de información. Es capaz de representar flujos de
datos entrantes y salientes y datos almacenados. El DFD no menciona
nada sobre la manera en que los datos fluyen por el sistema.
Los Diagramas de flujo de datos son o físicos o lógicos
 DFD lógico - Este tipo de DFD se concentra en el proceso y en el flujo de datos del
sistema.
 DFD físico - Este tipo de DFD muestra cómo se implementa el flujo de datos en el
sistema. Es más específico y cercano a la implementación.
Esquema gráfico: Esquema derivado del Diagrama de flujo de datos.
Representa el sistema con mucho más detalle que el DFD. Desglosa la
totalidad del sistema en módulos funcionales más bajos, describe
funciones y sub-funciones de cada módulo del sistema de una forma más
exhaustiva y detallada que el DFD.
El esquema gráfico representa la estructura jerárquica de los módulos.
El Diagrama HIPO: representa la jerarquía de los módulos en el sistema de
Software. Los analistas de Software usan el Diagrama HIPO para obtener
una visión en profundidad de las funciones del sistema. Descompone las
funciones en subfunciones de manera jerárquica. Representa las funciones
que ha hecho el sistema.
Tablas de decisión: Una tabla de decisión representa las condiciones y
las respectivas para dirigirlas, en un formato tabular estructurado.
Es una poderosa herramienta para eliminar fallos y prevenir errores.
Ayuda a agrupar información similar en la misma tabla y después
combinando tablas obtiene convenientes y fáciles tomas de decisiones.

 Diseño: El diseño de Software juega un papel importante en el desarrollo de


software lo cual permite al ingeniero de software producir varios modelos del
sistema o producto de que se va a construir el mismo que forman una especie
de plan de la solución de la aplicación. Estos modelos pueden evaluarse en
relación con su calidad y mejorarse antes de generar código, de realizar pruebas
y de que los usuarios finales se vean involucrados a gran escala. El diseño es el
sitio en el que se establece la calidad del software.

El diseño del software se encuentra en el núcleo técnico de la respectiva


ingeniería y se aplica de manera independiente al modelo de software que se
utilice. Una vez que se analizan y especifican los requisitos, el diseño del
software es la última acción de la ingeniería correspondiente dentro de la
actividad del modelado, la cual establece una plataforma para la construcción
(generación de código y prueba).

 Técnicas de diseño:

Abstracción: Es el proceso o el resultado de la generalización de la reducción


del contenido de la información de un concepto o un fenómeno observable,
por lo general, con el fin de conservar únicamente la información que es
relevante para un propósito en particular. Cuando se considera una solución
modular a cualquier problema se pueden exponer muchos grados de
abstracción.

 En un alto grado de abstracción una solución se establece en términos


generales con el lenguaje del entorno del problema.
 En los grados de menor abstracción se proporciona una descripción más
detallada de la solución.
 En la medida en que se cambian los diferentes grados de abstracción se
trabaja para crear abstracciones procedimentales y de datos.

Abstracción Procedimental: Se refiere a una secuencia de instrucciones que


tiene una función específica y limitada.
Abstracción de Datos: Es una colección nombrada de datos que describe un
objeto de datos.

 Codificación: se realizan las tareas que comúnmente se conocen


como programación; que consiste, esencialmente, en llevar a código fuente, en
el lenguaje de programación elegido, todo lo diseñado en la fase anterior. Esta
tarea la realiza el programador, siguiendo por completo los lineamientos
impuestos en el diseño y en consideración siempre a los requisitos funcionales
y no funcionales
Se suele hacer estimaciones de un 30% del tiempo total insumido en la
programación, pero esta cifra no es consistente ya que depende en gran medida de
las características del sistema, su criticidad y el lenguaje de programación
elegido.7 En tanto menor es el nivel del lenguaje mayor será el tiempo de
programación requerido, así por ejemplo se tardaría más tiempo en codificar
un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C.
Mientras se programa la aplicación, sistema, o software en general, se realizan
también tareas de depuración, esto es la labor de ir liberando al código de los errores
factibles de ser hallados en esta fase.

Durante la fase de programación, el código puede adoptar varios estados,


dependiendo de la forma de trabajo y del lenguaje elegido, a saber:

Código fuente: es el escrito directamente por los programadores en editores de


texto, lo cual genera el programa. Contiene el conjunto de instrucciones
codificadas en algún lenguaje de alto nivel. Puede estar distribuido en paquetes,
procedimientos, bibliotecas fuente, etc.
Código objeto: es el código binario o intermedio resultante de procesar con
un compilador el código fuente. Consiste en una traducción completa y de una
sola vez de este último. El código objeto no es inteligible por el ser humano
(normalmente es formato binario) pero tampoco es directamente ejecutable por
la computadora.
El código objeto: no existe si el programador trabaja con un lenguaje a modo de
intérprete puro, en este caso el mismo intérprete se encarga de traducir y
ejecutar línea por línea el código fuente (de acuerdo al flujo del programa), en
tiempo de ejecución. En este caso tampoco existe el o los archivos de código
ejecutable.
Código ejecutable: Es el código binario resultado de enlazar uno o más
fragmentos de código objeto con las rutinas y bibliotecas necesarias. Constituye
uno o más archivos binarios con un formato tal que el sistema operativo es
capaz de cargarlo en la memoria RAM (eventualmente también parte en
una memoria virtual), y proceder a su ejecución directa.

 Prueba: Consisten en la dinámica de la verificación del comportamiento de un


programa en un conjunto finito de casos de prueba, debidamente seleccionados
de por lo general infinitas ejecuciones de dominio, contra la del comportamiento
esperado. Son una serie de actividades que se realizan con el propósito de
encontrar los posibles fallos de implementación, calidad o usabilidad de
un programa u ordenador; probando el comportamiento del mismo.

 Principios de las pruebas del software


 La prueba puede ser usada para mostrar la presencia de errores, pero
nunca su ausencia.
 Evitar casos de pruebas no planificados, no reusables y triviales a menos
que el programa sea verdaderamente sencillo.
 Una parte necesaria de un caso de prueba es la definición del resultado
esperado.

 Validación: Es un conjunto de procesos de comprobación y análisis que


aseguran que el software que se desarrolla está acorde a su especificación y
cumple las necesidades de los clientes. Hay dos tipos de verificación: formal y
del ciclo de vida. Esta última consiste en el proceso de determinar el grado de
los productos de trabajo de una fase dada del ciclo de desarrollo cumplen con
las especificaciones establecidas durante las fases previas. La verificación
formal es una rigurosa demostración matemática de la concordancia del código
fuente con sus especificaciones.
La validación implica la valoración de los productos de trabajo para determinar
el apego a las especificaciones, incluyen las especificaciones de requisitos, la
documentación del diseño, diversos principios generales de estilo, estándares
del lenguaje de instrumentación, estándares del proyecto, estándares
organizacionales y expectativas del usuario, al igual que las meta
especificaciones para los formatos y notaciones utilizadas en la especificación
de productos diversos.
 Aspectos en la validación:
Construir el sistema correcto.
Evaluar la conformidad con la especificación de requisitos.

 Métodos formales de verificación


Aserciones E/S: El programa, en lógica de Hoare, se especifica mediante
aserciones que relacionan las entradas y salidas del programa. Se garantiza
que si la entrada actual satisface las restricciones de entrada
(precondiciones) la salida satisface las restricciones de salida
(postcondiciones).
Precondición más débil: Consiste en dada una postcondición POST,
encontrar, operando hacia atrás, un programa S tal que la precondición se
satisfaga en un amplio conjunto de situaciones.
Inducción estructural: La inducción estructural es una técnica de verificación
formal que se basa en el principio de inducción matemática.
 Evolución y mantenimiento del software: es la modificación de un producto
de software después de la entrega, para corregir errores, mejorar el rendimiento,
u otros atributos. El mantenimiento del software es una de las actividades más
comunes en la ingeniería de software.
Los problemas claves de mantenimiento de software son administrativos y
técnicos. Problemas clave de administración son: alineación con las
prioridades del cliente, dotación de personal, cuál organización hace
mantenimiento, estimación de costos. Son cuestiones técnicas claves: limitado
entendimiento, análisis de impacto, pruebas (testing), medición de
mantenibilidad.
El mantenimiento de software es una actividad muy amplia que incluye la
corrección de errores, mejoras de las capacidades, eliminación de funciones
obsoletas y optimización. Debido a que el cambio es inevitable, se debe
desarrollar mecanismos para la evaluación, controlar y hacer modificaciones.
Así que cualquier trabajo realizado para cambiar el software después de que
esté en operación es considerado trabajo de mantenimiento. El propósito es
preservar el valor del software sobre el tiempo.

También podría gustarte