0% encontró este documento útil (0 votos)
154 vistas23 páginas

Fundamentos de Ingeniería Software

Este documento presenta los fundamentos de la ingeniería de software. Explica brevemente que es el software, sus cualidades como la corrección, confiabilidad y mantenibilidad. También describe los factores de calidad como el rendimiento y la usabilidad. Resume las etapas clave del proceso de desarrollo de software e identifica a los participantes clave. El objetivo final es producir software de alta calidad.

Cargado por

Jose Melendez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
154 vistas23 páginas

Fundamentos de Ingeniería Software

Este documento presenta los fundamentos de la ingeniería de software. Explica brevemente que es el software, sus cualidades como la corrección, confiabilidad y mantenibilidad. También describe los factores de calidad como el rendimiento y la usabilidad. Resume las etapas clave del proceso de desarrollo de software e identifica a los participantes clave. El objetivo final es producir software de alta calidad.

Cargado por

Jose Melendez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

REPUBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN


UNIVERSITARIA, CIENCIA Y TECNOLOGÍA
UNIVERSIDAD POLITÉCNICA TERRITORIAL DEL
ESTADO PORTUGUESA “JUAN DE JESÚS MONTILLA”
ACARIGUA – EDO. PORTUGUESA

FUNDAMENTOS DE LA INGENIERÍA DEL SOFTWARE

PARTICIPANTES:
Francelys Meléndez
C.I. V- 28.094.911
José Meléndez
C.I. V- 20.391.593
PNF INFORMÁTICA,
SECCIÓN 336
3ER SEMESTRE

PROFESOR:
María Sánchez
Ingeniería Del Software

Marzo, 2021
ÍNDICE

Introducción.........................................................................................................................3
El Software............................................................................................................................3
Fundamentos de la Ingeniería del Software.................................................................4
Cualidades del Software....................................................................................................4
Factores de calidad del Software....................................................................................7
Visión general del proceso del desarrollo del software............................................8
Participantes en el proceso del desarrollo del software.........................................20
Conclusión..........................................................................................................................20
Introducción

Desde la invención de la rueda el ser humano a querido evolucionar


cada día más rápido, la automatización de procesos e información a través
de sistemas de computo marco aumento en la velocidad de esta evolución, si
vienen los años 50 no existían los estándares que hoy en día sirven para
producir software de calidad, con el transcurso del tiempo grandes
contribuyentes de esta rama aportaron y establecieron las normas , métodos
y procesos para el correcto desarrollo de un proyecto de software, de esta
manera es que hoy en día el software existe para los procesos más
pequeños pensados como para actividades colosales e impensables.

El software se ha convertido en una herramienta empresarial que


permite de forma ágil gestionar procesos en cuestión de minutos que en
otros tiempos y de otra forma se obtendrían en horas o quizás días; así tan
vital como se ha el software para el mundo empresarial y las organizaciones
es de importante el desarrollador del mismo, esta disciplina se encuentra en
el top 3 de carreras solicitadas por los estudiantes y de cargos mejor
pagados, y es que se ha vuelto indispensable para las empresas tener un
ingeniero de software que haga frente a la resolución de problemas para
automatizarlos informáticamente a través del correcto uso de herramientas,
métodos, estrategias y un equipo capacitado que le permiten por medio de
la investigación y análisis de los requerimientos entregar un producto de
calidad, lo que se traduce en mayor productividad para dichas
organizaciones.

3
El Software
El término “Software” fue usado por primera vezpor John W.
Tukey en 1957. Es lo que en la ingeniería del software se conoce como
“Producto”, y el producto como tal es diseñado y construido por los
ingenieros de software; el software en sí es un conjunto de programas de
cómputo, procedimientos, reglas, documentación y datos asociados, que
forman parte de las operaciones de un sistema de computación. El software,
en su gran mayoría, está escrito en lenguajes de programación de alto nivel,
ya que son más fáciles y eficientes para que los programadores los usen,
porque son más cercanos al Lenguaje natural respecto del lenguaje de
máquina.
Desde 1950 hasta la era actual el Software ha venido en una
constante y vertiginosa evolución y su papel en la denominada “Era de la
información” se ha vuelto imprescindible debido a su amplio uso en la
producción, manejo, adquisición, modificación, despliegue y/o transmisión de
la información, además de que puede aplicarse para cualquier situación
donde se haya definido previamente un conjunto de pasos procedimentales;
Actualmente puede clasificarse en tres tipos principales de software:
 Software de sistema: Es el encargado de gestionar una
comunicación de alto nivel entre el usuario y la máquina a través de
una interfaz de fácil uso e intuitiva, evitando así el contacto entre el
usuario y los procesos internos (memoria, discos, puertos y
dispositivos de comunicación), los ejemplos más claros de estos son
los sistemas operativos.
 Software de programación: Son las herramientas que permiten al
programador una mejor gestión y desarrollo los programas de
información, ejemplos de estas herramientas son los editores de texto,
compiladores, entornos de desarrollo integrado, entre otros.

4
 Software de aplicación: No son más que sistemas informáticos
diseñados para la automatización de procesos, que permiten a los
usuarios a gestionar una o más tareas al mismo tiempo; las mejores
muestras de este tipo son las aplicaciones ofimáticas, software
empresarial y de negocio (ej. Sistemas ERP), entre otros.

.
Fundamentos de la Ingeniería del Software
La ingeniería del Software se escucho por primera vez a finales de los
años 60, a razón de la denominada “crisis del software” donde en una
conferencia dedicada a atender este asunto se definió a esta rama de la
informática como una disciplina tecnológica relacionada a la producción
sistemática y el mantenimiento de productos de software; el objetivo principal
de la ingeniería del software es el desarrollo de productos del software a
través de un conjunto de métodos que describen como construir
técnicamente el producto, herramientas que dan soporte semiautomático a
los métodos empleados y finalmente procedimientos que generan relación
entre los métodos y las herramientas para así desarrollar un software de
calidad.

Cualidades del Software


En este mismo contexto, existe una serie de cualidades que debe
presentar un software para ser un producto de calidad:
 Correctitud: Un sistema es correcto cuando se comporta de acuerdo
a los requerimientos del cliente. En otras palabras, un sistema es
correcto si resuelve el problema real que causó su desarrollo.

5
 Confiabilidad: Es la calidad que se puede esperar de una aplicación
que lleve a cabo las operaciones establecidas y con la claridad
requerida.
 Robustez: Un programa es robusto si se comporta en forma
razonable aún en situaciones que no fueron pronosticadas en la
descripción de los requerimientos. La robustez es igual a la distancia
del caos, es decir, mientras menor es la distancia al caos, mayor
solidez posee el sistema.
 Performance: Se puede medir la eficiencia del sistema de acuerdo a
dos dimensiones: Los recursos necesarios que abarcan la
construcción y desarrollo del software, y los recursos necesarios que
comprende la ejecución de la aplicación. Cabe destacar, que un
sistema es eficiente cuando se utilizan los equipos computacionales
en forma económica.
 Amigabilidad: Un sistema es amigable cuando el usuario encuentra
la interfaz fácil de manejar. La amigabilidad está dada por la habilidad
con que el sistema puede configurarse y ajustarse al ambiente de
hardware.
 Verificabilidad: Un software es verificable si sus propiedades pueden
ser verificadas sencillamente. Ejemplo, la correctitud o la performance
de un sistema son propiedades que concierne comprobar.
 Mantenimiento: Es la forma fácil de corregir y remediar fallas que
pueda tener algún software. El mantenimiento también puede
aplicarse a la reparación los problemas que surgen en la aplicación
después de la liberación o agregarle al producto que no estaba en las
especificaciones originales. El mantenimiento abarca un grupo amplio
de actividades que tiene que ver con las modificaciones de un

6
software existente la lograr una mejora. Existen tres tipos de
mantenimiento:
o El mantenimiento correctivo: El mantenimiento correctivo es
la eliminación de errores excedentes presentes en el producto
al ser liberado, así como errores implantados al software
durante su mantenimiento.
o Mantenimiento adaptativo: Involucra el ajuste de la aplicación
a ajustes en el entorno, por ejemplo, la creación de hardware o
del sistema operativo.
o El mantenimiento perfectivo: Implica cambios en el software
para perfeccionar sus cualidades, los cuales se deben a la
necesidad de cambiar las funciones brindadas por el software,
añadir nuevas funciones, renovar la performance, facilitar su
manejo, entre otras.
 La reusabilidad: Se refiere a que una aplicación puede utilizarse en
otras aplicaciones. Es complicado lograr reusabilidad, se debe
examinar el instante de desarrollar los componentes del software; un
modo para conseguir reusabilidad es el manejo de diseño orientado a
objetos.
 Portabilidad: Se refiere a la manera en que los clientes pueden
acceder a los productos ya que un software portable es mucho más
fácil de obtener por los clientes dado que pueden acceder a dicho
software. El software es portable si puede ser desarrollado en distintos
ambientes, refiriéndose este último tanto a plataformas de hardware
como a ambientes de software como puede ser determinado sistema
operativo.
 Comprensibilidad: Algunos sistemas de software son más cómodos
de comprender que otros, ciertas tareas son sustancialmente más

7
complicadas que otras. La comprensibilidad no es más que ejecute su
función de acuerdo a lo que el usuario predice.
 Interoperabilidad: Es la destreza que posee un sistema para coexistir
e interactuar con otros, por ejemplo, la habilidad de un procesador de
texto de incluir gráficas producidas por un paquete de gráficos.
 La productividad: Es una cualidad del proceso de producción de
software, calcula la eficiencia del proceso. Un proceso eficiente resulta
en una entrega más rápida del producto. Los ingenieros originan
software individualmente a cierta tasa, la cual puede alterarse
considerablemente entre individuos con habilidad distinta.
 Oportunidad: La oportunidad es una cualidad del proceso que se
refiere a la habilidad de liberar el software a tiempo. Esto puede ser un
arma de doble filo ya que muchos procesos fracasan en alcanzar los
resultados a tiempo. La oportunidad en sí misma no es una cualidad
útil, aunque llegar tarde puede llevar a perder oportunidades en el
mercado, entregar un producto a tiempo que carece de otras
cualidades como confiabilidad o performance, no tiene sentido.
Entregar un producto a tiempo requiere una agenda planeada
cuidadosamente, con un trabajo de estimación acertado y puntos de
revisión especificados claramente y verificables.
 

Factores de calidad del Software


Determinar los factores de calidad involucrados en el desarrollo de un
software es complejo de lograr; ciertamente la calidad del producto va ligada
al cumplimiento de sus cualidades, pero también va ligada a factores únicos
para cada problemática, es por eso que la calidad de un software es relativa,
ya que para cada caso existirán ciertas restricciones externas que afectarán

8
de forma positiva o negativa al desarrollo; y todo esto bajo un compromiso
aceptable y razonable.
Sin embargo, existen factores ya establecidos que permiten gestionar
el desarrollo del software de manera óptima; a nivel de organizativo se deben
emplear estrategias para la delegación de tareas en el equipo de desarrollo
para un desarrollo ágil, así como la aplicación del estándar ISO para obtener
una certificación legal de calidad; a nivel del proyecto se deben aplicar los
factores de cualidad de un producto, así como, una serie de métricas que
permiten medir la calidad del proyecto en las distintas fases del proyecto:
 Análisis: Punto fusión, métrica bang, métrica de calidad de
especificación.
 Diseño: Métrica de complejidad de Card y Glass, métrica de
cohesión y acoplamiento, métricas orientadas a objetos,
profundidad árbol de herencia, número de hijos, acoplamiento
entre clases.
 Codificación: Complejidad ciclomática y esencial, métricas
orientadas a objetos.
 Pruebas: Integración súbita, integración ascendente, integración
descendente, pruebas de validación y pruebas de sistema.

Visión general del proceso del desarrollo del software

Procesos, modelado y formas de elicitación de requisitos


Siendo que la captura, elicitación y especificación de requisitos, es
una parte crucial en el proceso de desarrollo de software, ya que de esta
etapa depende el logro de los objetivos finales previstos, se han ideado
modelos y diversas metodologías de trabajo para estos fines. También

9
existen herramientas software que apoyan las tareas relativas realizadas por
el ingeniero en requisitos.

El estándar IEEE 830-1998 brinda una normalización de las Prácticas


recomendadas para la especificación de requisitos software.

A medida que se obtienen los requisitos, normalmente se los va


analizando, el resultado de este análisis, con o sin el cliente, se plasma en un
documento, conocido como ERS o Especificación de requisitos software,
cuya estructura puede venir definida por varios estándares, tales
como CMMI.

Un primer paso para realizar el relevamiento de información es el


conocimiento y definición acertada lo que se conoce como «Universo de
Discurso» del problema, que se define y entiende por:

Universo de Discurso (UdeD): es el contexto general en el cual


el software deberá ser desarrollado y deberá operar. El UdeD incluye todas
las fuentes de información y todas las personas relacionadas con el software.
Esas personas son conocidas también como actores de ese universo. El
UdeD es la realidad circunstanciada por el conjunto de objetivos definidos
por quienes demandaron el software.

A partir de la extracción y análisis de información en su ámbito se


obtienen todas las especificaciones necesarias y tipos de requisitos para el
futuro producto software.

El objetivo de la ingeniería de requisitos (IR) es sistematizar el proceso


de definición de requisitos permitiendo elicitar, modelar y analizar el
problema, generando un compromiso entre los ingenieros de requisitos y los
clientes/usuarios, ya que ambos participan en la generación y definición de
los requisitos del sistema. La IR aporta un conjunto de métodos, técnicas y

10
herramientas que asisten a los ingenieros de requisitos (analistas) para
obtener requisitos lo más seguros, veraces, completos y oportunos posibles,
permitiendo básicamente:

 Comprender el problema
 Facilitar la obtención de las necesidades del cliente/usuario
 Validar con el cliente/usuario
 Garantizar las especificaciones de requisitos

Si bien existen diversas formas, modelos y metodologías para elicitar,


definir y documentar requisitos, no se puede decir que alguna de ellas sea
mejor o peor que la otra, suelen tener muchísimo en común, y todas cumplen
el mismo objetivo. Sin embargo, lo que sí se puede decir sin dudas es que es
indispensable utilizar alguna de ellas para documentar las especificaciones
del futuro producto software.

Clasificación e identificación de requisitos

Se pueden identificar dos formas de requisitos:

 Requisitos de usuario: Los requisitos de usuario son frases en


lenguaje natural junto a diagramas con los servicios que el sistema
debe proporcionar, así como las restricciones bajo las que debe
operar.
 Requisitos de sistema: Los requisitos de sistema determinan los
servicios del sistema y pero con las restricciones en detalle. Sirven
como contrato.

Es decir, ambos son lo mismo, pero con distinto nivel de detalle.

11
 Ejemplo de requisito de usuario: El sistema debe hacer préstamos
Ejemplo de requisito de sistema: Función préstamo: entrada código
socio, código ejemplar; salida: fecha devolución; etc.

Se clasifican en tres los tipos de requisitos de sistema:

 Requisitos funcionales: Los requisitos funcionales describen:


o Los servicios que proporciona el sistema (funciones).
o La respuesta del sistema ante determinadas entradas.
o El comportamiento del sistema en situaciones particulares.
 Requisitos no funcionales: Los requisitos no funcionales son
restricciones de los servicios o funciones que ofrece el sistema (ej.
cotas de tiempo, proceso de desarrollo, rendimiento, etc.). A su vez,
hay tres tipos de requisitos no funcionales:
o Requisitos del producto. Especifican el comportamiento del
producto (Ej. prestaciones, memoria, tasa de fallos, etc.)
o Requisitos organizativos. Se derivan de las políticas y
procedimientos de las organizaciones de los clientes y
desarrolladores (Ej. estándares de proceso, lenguajes de
programación, etc.)
o Requisitos externos. Se derivan de factores externos al sistema
y al proceso de desarrollo (Ej. requisitos legislativos, éticos,
etc.)
 Requisitos del dominio: Los requisitos del dominio se derivan del
dominio de la aplicación y reflejan características de dicho dominio.

Diseño del sistema

En ingeniería de software, el diseño es una fase de ciclo de vida


del software. Se basa en la especificación de requisitos producido por el

12
análisis de los requisitos (fase de análisis), el diseño define cómo estos
requisitos se cumplirán, la estructura que debe darse al sistema
de software para que se haga realidad.

El diseño sigue siendo una fase separada de la programación o


codificación, esta última corresponde a la traducción en un
determinado lenguaje de programación de las premisas adoptadas en el
diseño.

Las distinciones entre las actividades mencionadas hasta ahora no


siempre son claras cómo se quisiera en las teorías clásicas de ingeniería
de software. El diseño, en particular, puede describir el funcionamiento
interno de un sistema en diferentes niveles de detalle, cada una de ellos se
coloca en una posición intermedia entre el análisis y codificación.

Normalmente se entiende por "diseño de la arquitectura" al diseño de


"muy alto nivel", que sólo define la estructura del sistema en términos de los
módulos de software de que se compone y las relaciones macroscópicas
entre ellos. A este nivel de diseño pertenecen fórmulas como cliente-
servidor o “tres niveles”, o, más generalmente, las decisiones sobre el uso de
la arquitectura de hardware especial que se utilice, el sistema
operativo, DBMS, Protocolos de red, etc.

Un nivel intermedio de detalle puede definir la descomposición del


sistema en módulos, pero esta vez con una referencia más o menos explícita
al modo de descomposición que ofrece el particular lenguaje de
programación con el que el desarrollo se va a implementar, por ejemplo, en
un diseño realizado con la tecnología de objetos, el proyecto podría describir
al sistema en términos de clases y sus interrelaciones.

13
El diseño detallado, por último, es una descripción del sistema muy
cercana a la codificación (por ejemplo, describir no solo las clases en
abstracto, sino también sus atributos y los métodos con sus tipos).

Debido a la naturaleza "intangible" del software, y dependiendo de las


herramientas que se utilizan en el proceso, la frontera entre el diseño y la
codificación también puede ser virtualmente imposible de identificar. Por
ejemplo, algunas herramientas CASE son capaces de generar código a partir
de diagramas UML, los que describen gráficamente la estructura de un
sistema software.

Codificación del software

Durante esta etapa 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 (ERS) especificados en la primera
etapa.

Es común pensar que la etapa de programación o codificación


(algunos la llaman implementación) es la que insume la mayor parte del
trabajo de desarrollo del software; sin embargo, esto puede ser relativo (y
generalmente aplicable a sistemas de pequeño porte) ya que las etapas
previas son cruciales, críticas y pueden llevar bastante más tiempo. 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
[Link] 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

14
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 (de semántica,
sintáctica y lógica). Hay una suerte de solapamiento con la fase siguiente, ya
que para depurar la lógica es necesario realizar pruebas unitarias,
normalmente con datos de prueba; claro es que no todos los errores serán
encontrados sólo en la etapa de programación, habrá otros que se
encontrarán durante las etapas subsiguientes. La aparición de algún error
funcional (mala respuesta a los requisitos) eventualmente puede llevar a
retornar a la fase de diseño antes de continuar la codificación.

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. Se trata de
una representación intermedia entre el código fuente y el código
ejecutable, a los fines de un enlace final con las rutinas de biblioteca y
entre procedimientos o bien para su uso con un pequeño intérprete
intermedio [a modo de distintos ejemplos véase EUPHORIA,

15
(intérprete intermedio), FORTRAN (compilador puro) MSIL (Microsoft
Intermediate Language) (intérprete) y BASIC (intérprete puro,
intérprete intermedio, compilador intermedio o compilador puro,
depende de la versión utilizada)].

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. Una
desventaja de esta modalidad es que la ejecución del programa o
sistema es un poco más lenta que si se hiciera con un intérprete
intermedio, y bastante más lenta que si existe el o los archivos de
código ejecutable. Es decir no favorece el rendimiento en velocidad de
ejecución. Pero una gran ventaja de la modalidad intérprete puro, es
que él está forma de trabajo facilita enormemente la tarea de
depuración del código fuente (frente a la alternativa de hacerlo con un
compilador puro). Frecuentemente se suele usar una forma mixta de
trabajo (si el lenguaje de programación elegido lo permite), es decir
inicialmente trabajar a modo de intérprete puro, y una vez depurado el
código fuente (liberado de errores) se utiliza un compilador del mismo
lenguaje para obtener el código ejecutable completo, con lo cual se
agiliza la depuración y la velocidad de ejecución se optimiza.

 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. Por lo anterior se dice que el código

16
ejecutable es directamente «inteligible por la computadora». El código
ejecutable, también conocido como código máquina, no existe si se
programa con modalidad de «intérprete puro».

Pruebas (unitarias y de integración)

Entre las diversas pruebas que se le efectúan al software se pueden


distinguir principalmente:

 Pruebas unitarias: Consisten en probar o testear piezas


de software pequeñas; a nivel de secciones, procedimientos,
funciones y módulos; aquellas que tengan funcionalidades
específicas. Dichas pruebas se utilizan para asegurar el correcto
funcionamiento de secciones de código, mucho más reducidas que el
conjunto, y que tienen funciones concretas con cierto grado de
independencia.
 Pruebas de integración: Se realizan una vez que las pruebas unitarias
fueron concluidas exitosamente; con éstas se intenta asegurar que el
sistema completo, incluso los subsistemas que componen las piezas
individuales grandes del software funcionen correctamente al operar e
inteoperar en conjunto.

Las pruebas normalmente se efectúan con los llamados datos


de prueba, que es un conjunto seleccionado de datos típicos a los que
puede verse sometido el sistema, los módulos o los bloques de
código. También se escogen: Datos que llevan a condiciones límites
al software a fin de probar su tolerancia y robustez; datos de utilidad
para mediciones de rendimiento; datos que provocan condiciones
eventuales o particulares poco comunes y a las que
el software normalmente no estará sometido pero pueden ocurrir; etc.

17
Los «datos de prueba» no necesariamente son ficticios o «creados»,
pero normalmente sí lo son los de poca probabilidad de ocurrencia.

Generalmente, existe un fase probatoria final y completa


del software, llamada Beta Test, durante la cual el sistema instalado
en condiciones normales de operación y trabajo es probado
exhaustivamente a fin de encontrar errores, inestabilidades,
respuestas erróneas, etc. que hayan pasado los previos controles.
Estas son normalmente realizadas por personal idóneo contratado o
afectado específicamente a ello. Los posibles errores encontrados se
transmiten a los desarrolladores para su depuración. En el caso
de software de desarrollo «a pedido», el usuario final (cliente) es el
que realiza el Beta Test, teniendo para ello un período de prueba
pactado con el desarrollador.

Instalación y paso a producción

La instalación del software es el proceso por el cual los programas


desarrollados son transferidos apropiadamente al computador destino,
inicializados, y, eventualmente, configurados; todo ello con el propósito de
ser ya utilizados por el usuario final. Constituye la etapa final en el desarrollo
propiamente dicho del software. Luego de esta el producto entrará en la fase
de funcionamiento y producción, para el que fuera diseñado.

La instalación, dependiendo del sistema desarrollado, puede consistir


en una simple copia al disco rígido destino (casos raros actualmente); o bien,
más comúnmente, con una de complejidad intermedia en la que los distintos
archivos componentes del software (ejecutables, bibliotecas, datos propios,
etc.) son descomprimidos y copiados a lugares específicos preestablecidos
del disco; incluso se crean vínculos con otros productos, además del
propio sistema operativo. Este último caso, comúnmente es un proceso

18
bastante automático que es creado y guiado con
herramientas software específicas (empaquetado y distribución,
instaladores).

En productos de mayor complejidad, la segunda alternativa es la


utilizada, pero es realizada o guiada por especialistas; puede incluso
requerirse la instalación en varios y distintos computadores (instalación
distribuida).

También, en software de mediana y alta complejidad normalmente es


requerido un proceso de configuración y chequeo, por el cual se asignan
adecuados parámetros de funcionamiento y se testea la operatividad
funcional del producto.

En productos de venta masiva las instalaciones completas, si son


relativamente simples, suelen ser realizadas por los propios usuarios finales
(tales como sistemas operativos, paquetes de oficina, utilitarios, etc.) con
herramientas propias de instalación guiada; incluso la configuración suele ser
automática. En productos de diseño específico o a medida la instalación
queda restringida, normalmente, a personas especialistas involucradas en el
desarrollo del software en cuestión.

Una vez realizada exitosamente la instalación del software, el mismo


pasa a la fase de producción (operatividad), durante la cual cumple las
funciones para las que fue desarrollado, es decir, es finalmente utilizado por
el (o los) usuario final, produciendo los resultados esperados.

Mantenimiento

El mantenimiento de software es el proceso de control, mejora y


optimización del software ya desarrollado e instalado, que también incluye
depuración de errores y defectos que puedan haberse filtrado de la fase de

19
pruebas de control y beta test. Esta fase es la última (antes de iterar, según
el modelo empleado) que se aplica al ciclo de vida del desarrollo de software.
La fase de mantenimiento es la que viene después de que el software está
operativo y en producción.

De un buen diseño y documentación del desarrollo dependerá cómo


será la fase de mantenimiento, tanto en costo temporal como monetario.
Modificaciones realizadas a un software que fue elaborado con una
documentación indebida o pobre y mal diseño puede llegar a ser tanto o más
costosa que desarrollar el software desde el inicio. Por ello, es de
fundamental importancia respetar debidamente todas las tareas de las fases
del desarrollo y mantener adecuada y completa la documentación.

El período de la fase de mantenimiento es normalmente el mayor en


todo el ciclo de vida. Esta fase involucra también actualizaciones y
evoluciones del software; no necesariamente implica que el sistema tuvo
errores. Uno o más cambios en el software, por ejemplo, de adaptación o
evolutivos, puede llevar incluso a rever y adaptar desde parte de las primeras
fases del desarrollo inicial, alterando todas las demás; dependiendo de cuán
profundos sean los cambios. La modelo cascada común es particularmente
costosa en mantenimiento, ya que su rigidez implica que cualquier cambio
provoca regreso a fase inicial y fuertes alteraciones en las demás fases del
ciclo de vida.

Durante el período de mantenimiento, es común que surjan nuevas


revisiones y versiones del producto; que lo liberan más depurado, con mayor
y mejor funcionalidad, mejor rendimiento, etc. Varias son las facetas que
pueden ser alteradas para provocar cambios deseables, evolutivos,
adaptaciones o ampliaciones y mejoras.

Básicamente se tienen los siguientes tipos de cambios:

20
 Perfectivos: Aquellos que llevan a una mejora de la calidad interna
del software en cualquier aspecto: Reestructuración del código,
definición más clara del sistema y su documentación; optimización del
rendimiento y eficiencia.
 Evolutivos: Agregados, modificaciones, incluso eliminaciones,
necesarias en el software para cubrir su expansión o cambio, según
las necesidades del usuario.
 Adaptivos: Modificaciones que afectan a los entornos en los que el
sistema opera, tales como: Cambios de configuración del hardware
(por actualización o mejora de componentes electrónicos), cambios en
el software de base, en gestores de base de datos, en
comunicaciones, etc.
 Correctivos: Alteraciones necesarias para corregir errores de cualquier
tipo en el producto de software desarrollado.

Participantes en el proceso del desarrollo del software

Jefe de Proyecto: Asignar los recursos, gestionar las prioridades, coordinar


las interacciones con los clientes y usuarios, mantener al equipo del proyecto
enfocado en los objetivos. También establecer un conjunto de prácticas que
aseguran la integridad y calidad del proyecto. Supervisará el establecimiento
de la arquitectura del sistema, la gestión de riesgos y la planificación y
control del proyecto.

Analista de sistemas: Capturar, especificar y validar requisitos, interactuando


con el cliente y los usuarios mediante entrevistas. Elaborar el Modelo de
Análisis y Diseño. Colaborar en la elaboración de las pruebas funcionales y
el modelo de datos.

21
Programador: Construir prototipos. Colaborar en la elaboración de las
pruebas funcionales, modelo de datos y en las validaciones con el usuario.

Ingeniero de Software: Gestión de requisitos, gestión de configuración y


cambios, elaborar el modelo de datos, preparar las pruebas funcionales,
elaborar la documentación. Elaborar modelos de implementación y
despliegue.

Conclusión
Lo cierto es que actualmente el software se encuentra ligado a casi
todo lo que nos rodea y eso refleja lo obstinado que es el ser humano en su
afán de superar los límites de la velocidad de procesos, de este modo
obtenemos un mundo vertiginoso que ha sufrido grandes avances
tecnológico hasta el punto de llegar a la era de la información donde por
medio del uso de software obtenemos información en tiempo real, y esto se
ha logrado gracias avance interno e innovación en las tecnologías que
mejoran el desarrollo de software.

22
23

También podría gustarte