1
SOFTWARE
ANTONIO ADOLFO VALVERDE ACOSTA
FACULTAD DE ADMINISTRACION FINANZAS E INFORMATICA
Nota:
Cuarto Sistema Nocturno, Profesor: Joffre León Acurio, Ingeniería Del Software,
Universidad Técnica De Babahoyo.
La correspondencia relacionada con este documento deberá ser enviada a
alvalverdeantonio@[Link]
2
Contenido
INTRODUCCIÓN......................................................................................................................5
QUE ES SOFTWARE...............................................................................................................6
CARACTERISTICAS DEL SOFTWARE.................................................................................7
Características Del Software...................................................................................................7
Características operativas del Software..............................................................................8
Características de transición del Software..........................................................................8
Características de revisión de Software..............................................................................9
APLICACIONES DEL SOFTWARE........................................................................................9
El Software Y Sus Campos De Aplicación.............................................................................9
Clasificación Del Software Según Los Campos De Aplicación:..........................................10
Sistemas Software De Tiempo Real..................................................................................10
Sistemas Software De Gestión..........................................................................................11
Sistemas Software De Ingeniería Y Científicos................................................................11
Sistemas Software De Inteligencia Artificial....................................................................12
Sistemas Software Para Ordenadores Personales.............................................................12
Aplicaciones típicas:.........................................................................................................12
REQUERIMIENTOS Y ANÁLISIS DEL SOFTWARE.........................................................13
Características De Los Requerimientos................................................................................14
Necesario:..........................................................................................................................14
3
Conciso:............................................................................................................................14
Completo:..............................................................................................................................14
Consistente:...........................................................................................................................14
No ambiguo:..........................................................................................................................14
Verificable:........................................................................................................................14
* Dificultades Para Definir Los Requerimientos *...............................................................14
Análisis Del Software...........................................................................................................15
Tareas de análisis..............................................................................................................15
Funciones Y Habilidades Del Analista.................................................................................17
VISIÓN GENERAL DE LA INGENIERÍA DEL SOFTWARE.............................................18
Qué Es..................................................................................................................................18
Por Qué Es Importante.........................................................................................................18
Cuáles Son Los Pasos...........................................................................................................18
Cuál Es El Producto Obtenido..............................................................................................19
PROCESOS, MÉTODOS, HERRAMIENTAS DEL SOFTWARE........................................19
Proceso De Software.............................................................................................................19
Metodologías De Desarrollo De Software............................................................................21
A) Modelo En Cascada:....................................................................................................21
B) Modelo De Desarrollo Evolutivo:................................................................................21
C) Modelo De Componentes:...........................................................................................21
4
Clases de Herramientas.........................................................................................................22
MODELO DE PROCESO DE DESARROLLO DE SOFTWARE.........................................23
Modelo Lineal Secuencial.....................................................................................................23
Modelo De Prototipo.............................................................................................................24
Modelo “DRA”.....................................................................................................................26
Fases DRA=Desarrollo Rápido De Aplicaciones..........................................................26
Modelo Evolutivo Incremental.............................................................................................27
Modelo Evolutivo Espiral.....................................................................................................29
Tipos.................................................................................................................................29
Modelo De Desarrollo Basado En Componente...................................................................32
CONCLUSIONES....................................................................................................................35
Bibliografía...............................................................................................................................36
5
INTRODUCCIÓN
En el presente documento se da a conocer sobre el software y sus distintas ramas que
constituyen a la realización de un software de calidad, este tiene que poseer varias características
especiales para que pueda funcionar de forma correcta y sin ningún tipo de error.
El software primordialmente requiere ser estudiado detenidamente ya que son muchos
elementos que lo conforman.
Para el desarrollo del software existen procesos, métodos, herramientas que van a facilitar el
desarrollo correcto ya que este es el encargado de realizar funciones sencillas y complejas
dependiendo de la programación que contenga.
6
QUE ES SOFTWARE
El software puede definirse como todos aquellos conceptos, actividades y procedimientos que
dan como resultado la generación de programas para un sistema de
computación. En otras palabras, son las instrucciones que han sido
predefinidas por un programador para ejecutar las tareas que se le
indican.
El software es un conjunto de números binarios (bits), que tiene
algún sentido para la computadora, y es almacenado en algún soporte físico (hardware), desde
donde el procesador puede acceder, para ejecutarlo o mostrarlo. Mientras que el hardware es un
sistema de computación visible, tangible y fácilmente aplicable, el software es una entidad
puramente conceptual: un producto intelectual, esto significa que el hardware es la parte física, y
el software es la parte lógica de la computadora.
El objetivo de un “buen software” es aumentar las posibilidades de que éste se desarrolle a
tiempo y de que tenga una mayor efectividad en cuanto a costos debido a una utilización mas
eficiente del personal y los recursos.
El software puede dividirse en distintas formas basadas en el tipo de trabajo realizado.
El software de sistema, donde una de sus partes importantes es el sistema operativo, es la parte
que permite funcionar al hardware, controla los trabajos, procesa tareas tan esenciales, aunque a
menudo invisibles, como el mantenimiento de los archivos del disco y la administración de
la pantalla.
7
El software de aplicación, permite a los usuarios llevar a cabo una o varias tareas más
específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, lleva a
cabo tareas de tratamiento de textos, gestión de bases de datos y similares. Por ejemplo, hacer un
índice ordenado por autor o recuperar información de una base de datos, etc.[CITATION Def \l
12298 ]
CARACTERISTICAS DEL SOFTWARE
Software es todo el conjunto de programas, procedimientos y rutinas asociadas con el
funcionamiento de un sistema informático, incluyendo el sistema operativo. El software es
escrito por los programadores en una variedad de lenguajes de
programación, esta escritura se conoce como código fuente, el
cual debe ser traducido por medio de un compilador a lenguaje de
máquina para que la computadora lo pueda entender y ejecutar.
[ CITATION cav \l 12298 ]
Características Del Software
El software tiene tres características principales:
1) Características operativas
2) Características de transición
3) Características de revisión
8
Características operativas del Software
Son factores de funcionalidad, es como se presenta el software, es la “parte exterior” del
mismo. Incluye aspectos como:
Corrección: El software que estamos haciendo debe satisfacer todas las especificaciones
establecidas por el cliente.
Usabilidad / Facilidad de aprendizaje: Debe ser sencillo de aprender.
Integridad: Un software de calidad no debe tener efectos secundarios.
Fiabilidad: El producto de software no debería tener ningún defecto. No sólo esto, no debe
fallar mientras la ejecución.
Eficiencia: Forma en que el software utiliza los recursos disponibles. El software debe hacer
un uso eficaz del espacio de almacenamiento y el comando ejecutar según los requisitos de
tiempo deseados.
Seguridad: Se deben tomar medidas apropiadas para mantener los datos a salvo de las
amenazas externas
Características de transición del Software
Interoperabilidad: Es la capacidad para el intercambio de información con otras aplicaciones.
Reutilización: Es poder utilizar el código de software con algunas modificaciones para
diferentes propósitos.
Portabilidad: Capacidad para llevar a cabo las mismas funciones en todos los entornos y
plataformas.
9
Características de revisión de Software
Son los factores de ingeniería, la “calidad interior ‘del software como la eficiencia, la
documentación y la estructura. Incluye aspectos como:
Capacidad de mantenimiento: El mantenimiento del software debe ser fácil para cualquier tipo
de usuario.
Flexibilidad: Los cambios en el software debe ser fácil de hacer.
Extensibilidad: Debe ser fácil de aumentar nuevas funciones.
Escalabilidad: Debe ser muy fácil de actualizar para más trabajo.
Capacidad de prueba: Prueba del software debe ser fácil.
Modularidad: Debe estar compuesto por unidades y módulos independientes entre sí.
[CITATION cav \l 12298 ]
APLICACIONES DEL SOFTWARE
El Software Y Sus Campos De Aplicación
El software se define como programas de computadoras, las instrucciones responsables de que
el hardware (la máquina) realice su tarea, incluyendo por tanto las estructuras de datos y la
documentación implícita en el programa. Como concepto general, el software puede dividirse en
varias categorías basadas en el tipo de trabajo realizado. Las dos categorías primarias de software
son los sistemas operativos (software del sistema), que controlan los trabajos del ordenador o
computadora, y el software de aplicación, que dirige las distintas tareas para las que se utilizan
las computadoras. [ CITATION ElSsf \l 12298 ]
En cualquier caso, es difícil establecer categorías genéricas significativas para las aplicaciones
del software. Conforme aumenta la complejidad del mismo se hace más complicado establecer
10
compartimentos nítidamente separados. No obstante se acepta tradicionalmente la siguiente
clasificación:
Clasificación Del Software Según Los Campos De Aplicación:
Sistemas de Tiempo Real
Sistemas Empotrados
Sistemas de Gestión
Sistemas de Ingeniería y científicos
Sistemas de Inteligencia Artificial
Sistemas de Ordenadores Personales [ CITATION ElSsf \l 12298 ]
Sistemas Software De Tiempo Real
- Deben responder a eventos externos, asegurando un tiempo máximo de respuesta
determinado.
- La secuencia de ejecución no sólo está determinada por decisiones del sistema, sino también
por eventos que ocurren en el mundo real.
- Habitualmente requieren interfaces con una gran cantidad de sensores y actuadores.
- Deben ser muy confiables. Su respuesta debe ser controlada, incluso en condiciones de
sobrecarga.
- No pueden “volver atrás” y reiniciar desde un contexto preexistente.
- Los requerimientos del medio ambiente por lo general son en paralelo.
11
- Son de “tiempo infinito”, por lo que deben poder recuperarse automáticamente de
condiciones de excepción.
Sistemas Software De Gestión
El procesamiento de la información de gestión constituye, casi desde los inicios de la
informática la mayor de las áreas de aplicación de los ordenadores. Estos programas utilizan
grandes cantidades de información almacenadas en bases de datos con objeto de facilitar las
transacciones comerciales o la toma de decisiones. Además de las tareas convencionales de
procesamiento de datos, en las que el tiempo de procesamiento no es crítico y los errores pueden
ser corregidos a posteriori, incluyen programas interactivos que sirven de soporte a transacciones
comerciales.
Estos sistemas se caracterizan por el volumen de datos que controlan, el procesamiento
sencillo distinto al de la ingeniería científica e implementado con software de alto nivel a
diferencia del de sistemas y la interactividad con el usuario.
Sistemas Software De Ingeniería Y Científicos
Otro de los campos clásicos de aplicación de la informática. Se encarga de realizar complejos
cálculos sobre datos numéricos de todo tipo. En este caso la corrección y exactitud de las
operaciones que realizan es uno de los requisitos básicos que deben cumplir.
El campo del software científico y de ingeniería, también llamado number cranching
(ordenador de números) se ha visto ampliado últimamente con el desarrollo de los sistemas de
diseño, ingeniería y fabricación asistida por ordenador (CAD, CAE y CAM), los simuladores
12
gráficos y otras aplicaciones interactivas que lo acercan más al software de tiempo real e incluso
al software de sistemas.
Estos sistemas se suelen enfocar hacia los análisis estadísticos o cálculo de estructuras
generando una aplicación típica de diseño asistido por ordenador (CAD- Computer Aided
Design). No suelen ser interactivos, por lo que tampoco disfrutan de una interfaz amigable.
Sistemas Software De Inteligencia Artificial
El software basado en lenguajes procedimentales es útil para realizar de forma rápida y fiable
operaciones que para el ser humano son tediosas e incluso inabordables. Sin embargo, es
difícilmente aplicable a problemas que requieran la aplicación de funciones intelectuales más
elevadas, por triviales que nos puedan parecer. El software de inteligencia artificial trata de dar
respuesta a estas deficiencias, basándose en el uso de lenguajes declarativos, sistemas expertos y
redes neuronales.
Sistemas Software Para Ordenadores Personales
El uso de ordenadores personales y de uso doméstico se ha generalizado a lo largo de la
pasada década. Han surgido productos de amplia difusión orientados a usuarios no profesionales,
por lo que entre sus requisitos se encuentran la facilidad de uso y el bajo coste. Se pueden citar
muchísimos programas.
Aplicaciones típicas:
Procesadores de textos (Word, Wordperfect, Kwrite, AmiPro)
Hojas de cálculo ( Excel, Lotus 123)
13
Bases de datos (Access, Developer)
Juegos (aventuras gráficas, estrategia, rol, simuladores)
Aplicaciones de diseño y tratamiento de imágenes (Corel Draw, Photoshop)
Compresores (Winzip, Winace)
Reproductores de sonido (Winamp, Real Player)
Reproductores de video (Windows Media Player, GDivX)
Programas de grabación (Nero, CloneCd)
Gestores de descarga(Getright, Gozilla)
Correo (outlook express, Eudora)
Chat (Irc, Messenger)
Antivirus (Panda, Norton)
Firewall (BlackIce, Conseal)
Traductores e intérpretes(Babylon) [ CITATION ElSsf \l 12298 ]
REQUERIMIENTOS Y ANÁLISIS DEL SOFTWARE
Los requerimientos puedes dividirse en requerimientos funcionales y requerimientos no
funcionales. Los requerimiento s funcionales definen las funciones que el sistema será
capaz de realizar. Describen las transformaciones que el sistema realiza sobre las entradas para
producir salidas.
Los requerimientos no funcionales tienen que ver con características que de una u otra forma
puedan limitar el sistema, como por ejemplo, el rendimiento (en tiempo y espacio), interfaces de
14
usuario, fiabilidad (robustez del sistema, disponibilidad de equipo), mantenimiento, seguridad,
portabilidad, estándares, etc. [ CITATION REQsf \l 12298 ]
Características De Los Requerimientos
Las características de un requerimiento son sus propiedades principales. Un conjunto de
requerimientos en estado de madurez, deben presentar una serie de características tanto
individualmente como en grupo. A continuación se presentan las más importantes.
Necesario: Un requerimiento es necesario si su omisión provoca una deficiencia en el sistema
a construir, y además su capacidad, características físicas o factor de calidad no pueden ser
reemplazados por otras capacidades del producto o del proceso.
Conciso: Un requerimiento es conciso si es fácil de leer y entender. Su redacción debe ser
simple y clara para aquellos que vayan a consultarlo en un futuro.
Completo: Un requerimiento está completo si no necesita ampliar detalles en su redacción, es
decir, si se proporciona la información suficiente para su comprensión.
Consistente: Un requerimiento es consistente si no es contradictorio con otro requerimiento.
No ambiguo: Un requerimiento no es ambiguo cuando tiene una sola interpretación.
Verificable: Un requerimiento es verificable cuando puede ser cuantificado de manera que
permita hacer uso de los siguientes métodos de verificación: inspección, análisis, demostración o
pruebas. [ CITATION REQsf \l 12298 ]
* Dificultades Para Definir Los Requerimientos *
• Los requerimientos no son obvios y vienen de muchas fuentes.
• Son difíciles de expresar en palabras (el lenguaje es ambiguo).
15
• Existen muchos tipos de requerimientos y diferentes niveles de detalle.
• La cantidad de requerimientos en un proyecto puede ser difícil de manejar.
• Nunca son iguales. Algunos son más difíciles, más riesgosos, más importantes o más
estables que otros.
• Los requerimientos están relacionados unos con otros, y a su vez se relacionan con otras
partes del proceso.
• Cada requerimiento tiene propiedades únicas y abarcan áreas funcionales específicas.
• Un requerimiento puede cambiar a lo largo del ciclo de desarrollo.
• Son difíciles de cuantificar, ya que cada conjunto de requerimientos es particular para cada
proyecto. [ CITATION REQsf \l 12298 ]
Análisis Del Software
El análisis de requisitos es una tarea de ingeniería del software que cubre el hueco entre la
definición del software a nivel sistema y el diseño de software. El análisis de requerimientos
permite al ingeniero de sistemas especificar las características operacionales del software
(función, datos y rendimientos), indica la interfaz del software con otros elementos del sistema y
establece las restricciones que debe cumplir el software.[ CITATION PRE02 \l 12298 ]
Tareas de análisis
El análisis de requisitos del software se puede subdividir en cinco áreas de esfuerzo:
1. Reconocimiento del problema
16
2. Evaluación y síntesis
3. Modelado
4. Especificación
5. Revisión
Todos los métodos de análisis se relacionan por un conjunto de principios operativos:
1. Debe representarse y entenderse el dominio de la información de un problema.
2. Deben definirse las funciones que debe realizar el software.
3. Debe representarse el comportamiento del software (como consecuencia de
acontecimientos externos),
4. Deben dividirse los modelos que representan información, función y comportamiento de
manera que se descubran los detalles por capas (o jerárquicamente).
5. El proceso de análisis debería ir desde la información esencial hasta el detalle de la
implementación.
Además de los principios operativos mencionados anteriormente, se sugiere un conjunto de
principios directrices para la ingeniería de requerimientos:
1. Entender el problema antes de empezar a crear el modelo de análisis.
2. Desarrollar prototipos que permitan al usuario entender como será la interacción hombre-
máquina.
3. Registrar el orden y la razón de cada requerimiento,
4. Usar múltiples planteamientos de requerimientos.
17
5. Priorizar los requerimientos.
6. Trabajar para eliminar la ambigüedad.
Un ingeniero de software que se apegue a estos principios es muy probable que desarrolle una
especificación de software que represente un excelente fundamento para el diseño.[ CITATION
PRE02 \l 12298 ]
Funciones Y Habilidades Del Analista
La función principal de un analista del software (o ingeniero de requisitos es llevar a cabo las
actividades necesarias para cumplir con las cinco áreas de esfuerzo descritas en la sección
anterior. Para lo cual hace uso de las siguientes técnicas:
1. Entrevistas
2. Talleres
3. Observación
4. Encuestas
5. Revisión documental
6. Uso de especificaciones formales para requerimientos [ CITATION PRE02 \l 12298 ]
18
VISIÓN GENERAL DE LA INGENIERÍA DEL SOFTWARE
Qué Es
Cuando se trabaja para construir un producto o sistema es importante seguir una serie de pasos
predecibles.
Una especie de mapa de carreteras que ayude crear un resultado de alta calidad y a tiempo. El
mapa de
Carreteras que debe seguirse se llama proceso de software.
Quién Lo Hace
Los ingenieros de software y sus jefes adaptan el proceso a sus necesidades y después lo sigue
Además.
La gente que ha solicitado el software tiene una función que desempeñar en el proceso de definirlo
construido.
Por Qué Es Importante
Porque ofrece estabilidad, control y organización a una actividad que puede volverse caótica si se
controla.
Sin embargo un enfoque de ingeniería del software moderno deba ser ágil.
Cuáles Son Los Pasos
En detalle, el proceso que se adopte depende del software que se está construyendo. Un proceso
puede ser apropiado para crear un software para un sistema aeronáutica, mientras que un procesó
distinto por completo sería el indicado para sitio web.
19
Cuál Es El Producto Obtenido
Desde el punto de vista del ingeniero de software, los productos obtenidos son los programas,
documentos y datos que se producen como consecuencia de las actividades y tareas definidas por
el proceso.
Marco De Trabajo Del Proceso
Un marco de trabajo establece la base para un proceso de software completo al identificar un número
pequeño de actividades del marco de trabajo aplicables a todos los proyectos d software, sin importar su
tamaño o complejidad. [ CITATION ing10 \l 12298 ]
PROCESOS, MÉTODOS, HERRAMIENTAS DEL SOFTWARE
Proceso De Software
La meta de la ingeniería de software es construir productos de software, o mejorar los
existentes; en ingeniería de procesos, la meta es desarrollar o mejorar procesos.
Un proceso de desarrollo de software es un conjunto de personas, estructuras de organización,
reglas, políticas, actividades y sus procedimientos, componentes de software, metodologías, y
herramientas utilizadas o creadas específicamente para definir, desarrollar, ofrecer un servicio,
innovar y extender un producto de software.
Un proceso de software efectivo habilita a la organización a incrementar su productividad al
desarrollar software:
Permite estandarizar esfuerzos, promover reusó, repetición y consistencia entre
proyectos.
Provee la oportunidad de introducir mejores prácticas de la industria.
20
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 cómo manejar los cambios y liberaciones a sistemas de software existentes.
Define cómo lograr la transición del software a la operación, y cómo ejecutar los
esfuerzos de operación y soporte.
Necesitamos un proceso de software cuya funcionalidad esté probada en la práctica, y
personalizado para que cumpla con nuestras necesidades específicas. [ CITATION
Ruvsf \l 12298 ]
21
22
Metodologías De Desarrollo De Software
Aunque las metodologías de desarrollo de software no varían en lo esencial, sí que se puede
hablar de modelos o marcos de trabajo distintos. Son métodos de trabajo que han sido creados
para satisfacer necesidades específicas en los proyectos. Los modelos más destacados en esta
área:
A) Modelo En Cascada:
Las actividades están relacionadas unas a otras de modo que el proceso en su conjunto avanza
cuanto mayor sea el número de tareas ejecutadas. Las acciones principales del desarrollo de un
programa software son la especificación, la validación y la evolución del mismo. También
resultan determinantes el diseño del software como tal, la implementación y las pruebas.
B) Modelo De Desarrollo Evolutivo:
En este caso, por el contrario, lo más importante no es la suma de aportes de cada etapa del
proceso, sino el hecho de que las actividades de especificación, desarrollo y validación están
entrelazadas. El punto de partida siempre es un sistema inicial que se desarrolla de forma rápida
y que va evolucionando según la dinámica del propio proyecto y las peticiones de los clientes o
destinatarios. Todo el proceso es una continua evolución que sólo se detiene hasta que los
objetivos iniciales han sido alcanzados.
C) Modelo De Componentes:
Se trata de un modelo especialmente útil en procesos que parten del trabajo que otros han
llevado a cabo. Las partes que ya no aportan ningún beneficio a otros proyectos son reutilizadas
23
e integradas en una nueva metodología de desarrollo. Todo el modelo se basa en la adecuación y
adaptación de dichas partes, que al final del mismo acaban cobrando un nuevo valor y asumiendo
otras funciones.
Estos tres modelos de metodologías son los más empleados en la actualidad en la industria
del desarrollo de programas de software. [CITATION Quésf \t \l 12298 ]
Clases de Herramientas
Aplicaremos el término herramienta a un producto CASE que da soporte a una tarea concreta
dentro de las actividades de desarrollo de software. Dicho soporte consistirá en una serie
de servicios, cada uno de los cuales automatiza una operación individual. Podemos clasificar las
herramientas según los servicios que ofrece y/o la tarea a la que da soporte. A continuación se
describen algunas clases de herramientas o grupos de funciones que podemos encontrar en un
entorno de programación:
Edición y examen del código (editor / browser / navigator)
Codificación
Verificación y validación
Gestión de configuración
Métricas
Otras herramientas
24
Otras herramientas de desarrollo no incluidas en la relación anterior se salen del marco de lo
que hemos denominado entorno de programación, y dan soporte a otras fases del ciclo de vida
de desarrollo. Por ejemplo:
Gestión del proyecto
Análisis y diseño (metodología concreta - "herramienta" CASE). [ CITATION
Hersf \l 12298 ]
MODELO DE PROCESO DE DESARROLLO DE SOFTWARE
Modelo Lineal Secuencial
Se tiene un modelo que lleva un desarrollo incremental, esto nos dice que se desarrolla el
software en etapas y que después del término de una etapa no es posible regresar a ella, este
modelo tiene cuatro etapas que son:
- Planificación: se determinan los objetivos, metas, requerimientos y restricciones en el
proyecto.
- Análisis de riesgos: identificación de situaciones inconvenientes para evitarlas y
solucionarlas.
- Ingeniera: desarrollo del producto con respecto al diseño y otras consideraciones
planteadas.
- Evaluación del cliente: valorización de los resultados del proyecto (producto obtenido).
Y se tiene implícita la realización de estas actividades:
-Análisis de requerimientos: en esta etapa se procede a recopilar todos los requisitos que
debe cumplir el software a desarrollar, el cliente aqui tiene un papel fundamental, ya que analiza
25
junto con los desarrolladores del software los requisitos que debe cumplir el software a
desarrollar.
- Diseño: esta etapa está enfocada hacia el desarrollo de un esbozo de la arquitectura, la
interfaz y el manejo de datos del software.
- Generación de código: es cuando se implementa el diseño del software en algun lenguaje
de programación definido en el mismo diseño.
- Pruebas: se hace una revisión de los procesos que realiza el software, para determinar que
esté haciendo lo planteado para cumplir con los requerimientos.
- Mantenimiento: se verifica el correcto funcionamiento del software en su entorno de uso, y
si existen errores o defectos, proceden a corregirlos. [ CITATION Rob12 \l 12298 ]
Modelo De Prototipo
El modelo de prototipos permite que todo el sistema, o algunos de sus partes, se construyan
rápidamente para comprender con facilidad y aclarar ciertos aspectos en los que se aseguren que
el desarrollador, el usuario, el cliente estén de acuerdo en lo que se necesita así como también la
solución que se propone para dicha necesidad y de esta forma minimizar el riesgo y la
incertidumbre en el desarrollo, este modelo se encarga del desarrollo de diseños para que estos
sean analizados y prescindir de ellos a medida que se adhieran nuevas especificaciones, es ideal
para medir el alcance del producto, pero no se asegura su uso real.
Este modelo se encarga principalmente de ayudar al ingeniero de sistemas y al cliente a
entender de mejor manera cuál será el resultado de la construcción cuando los requisitos estén
satisfechos. [CITATION GES11 \l 12298 ]
El paradigma de construcción de prototipos tiene tres pasos:
26
Escuchar al cliente. Recolección de requisitos. Se encuentran y definen los objetivos globales,
se identifican los requisitos conocidos y las áreas donde es obligatorio más definición.
Construir y revisar la maqueta (prototipo).
El cliente prueba la maqueta (prototipo) y lo utiliza para refinar los requisitos del
software.
Este modelo es útil cuando:
El cliente no identifica los requisitos detallados.
El responsable del desarrollo no está seguro de la eficiencia de un algoritmo, sistema
operativo o de la interface hombre-máquina. [ CITATION GES11 \l 12298 ]
Etapas para la elaboración del modelo de prototipo.
27
Modelo “DRA”
Fases DRA=Desarrollo Rápido De Aplicaciones
• Modelado de Gestión
El flujo de información entre las funciones de gestión se modela de forma que responda a las
siguientes preguntas: ¿Qué información conduce el proceso de gestión? ¿Qué información se
genera? ¿Quién la genera? ¿A dónde va la información? ¿Quién la proceso?
• Modelado de Datos
El flujo de información definido como parte de la fase de modelado de gestión se refina como
un conjunto de objetos de datos necesarios para apoyar la empresa. Se definen las características
(llamadas atributos) de cada uno de los objetos y las relaciones entre estos objetos.
• Modelado de Procesos
28
Los objetos de datos definidos en la fase de modelado de datos quedan transformados para
lograr el flujo de información necesario para implementar una función de gestión.
Las descripciones del proceso se crean para añadir, modificar, suprimir, o recuperar un objeto de
datos. Es la comunicación entre los objetos.
• Generación de Aplicaciones
El DRA asume la utilización de técnicas de cuarta generación. En lugar de crear software con
lenguajes de programación de tercera generación, el proceso DRA trabaja para volver a utilizar
componentes de programas ya existentes (cuando es posible) o a crear componentes reutilizables
(cuando sea necesario).
• Pruebas de Entrega
Como el proceso DRA enfatiza la reutilización, ya se han comprobado muchos de los
componentes de los programas. Esto reduce tiempo de pruebas.
Sin embargo, se deben probar todos los componentes nuevos y se deben ejercitar todas las
interfaces a fondo. [ CITATION METsf \l 12298 ]
29
Modelo Evolutivo Incremental
El Modelo Incremental combina elementos del MLS con la filosofía interactiva de
construcción de prototipos.
En una visión genérica, el proceso se divide en 4 partes: Análisis, Diseño, Código y Prueba.
Sin embargo, para la producción del Software, se usa el principio de trabajo en cadena o
“Pipeline”, utilizado en muchas otras formas de programación. Con esto se mantiene al cliente en
constante contacto con los resultados obtenidos en cada incremento. Es el mismo cliente el que
incluye o desecha elementos al final de cada incremento a fin de que el software se adapte mejor
a sus necesidades reales. El proceso se repite hasta que se elabore el producto completo.
De esta forma el tiempo de entrega se reduce considerablemente.
30
El Modelo Incremental es particularmente útil cuando no se cuenta con una dotación de
personal suficiente. Los primeros pasos los pueden realizar un grupo reducido de personas y en
cada incremento se añadir• personal, de ser necesario. Por otro lado los incrementos se pueden
planear para gestionar riesgos técnicos. [ CITATION MODsf \l 12298 ]
- Se evitan proyectos largos y se entrega algo de valor a los usuarios con cierta frecuencia.
- El usuario se involucra más.
- Difícil de evaluar el coste total.
- Difícil 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 muy positivo. [ CITATION MODsf \l 12298 ]
Modelo Evolutivo Espiral
Modelo Espiral
Es un modelo de desarrollo evolutivo propuesto por Barry Boehm, que utiliza
prototipos como apoyo. La forma de espiral representa una interacción (repetición) de
procesos que, a medida que se van entregando prototipos y éstos son revisados por
31
los clientes o usuarios finales, el tiempo empleado para desarrollar la próxima versión
es cada vez mayor. Cada división recibe el nombre de región de tareas.
Aunque el modelo espiral representa ventajas por sobre el desarrollo lineal, el
cálculo de los riesgos puede ser muy complicado y no es tan usado en la realidad.
[ CITATION LEOsf \l 12298 ]
Tipos
El modelo espiral tuvo varias modificaciones que son:
· Modelo Original de Boehm.
· Modelo Típico de Seis Regiones.
· Modelo WINWIN.
Modelo Original De Boehm
Cada vuelta se divide en 4 sectores:
· Planeación: determinación de los objetivos, alternativas y restricciones
· Análisis de riesgo: análisis de alternativas e identificación/resolución de riesgos
· Ingeniería: desarrollo del producto hasta "el siguiente nivel".
32
El movimiento de la espiral, ampliando con cada iteración su amplitud radial, indica que cada
vez se van construyendo versiones sucesivas del software, cada vez más completas.
Uno de los puntos más interesantes del modelo, es la introducción al proceso de desarrollo a
las actividades de análisis de los riesgos asociados al desarrollo y a la evaluación por parte del
cliente de los resultados del software.[ CITATION mar16 \l 12298 ]
Modelo Típico De Seis Regiones
Las regiones de tareas que componen este modelo son:
Comunicación con el cliente: las tareas requeridas para establecer comunicación entre el
desarrollador y el cliente.
• Planificación: las tareas requeridas para definir recursos, el tiempo y otras informaciones
relacionadas con el proyecto. Son todos los requerimientos.
• Análisis de riesgos: las tareas requeridas para evaluar riesgos técnicos y otras informaciones
relacionadas con el proyecto.
33
• Ingeniería: las tareas requeridas para construir una o más representaciones de la aplicación.
• Construcción y adaptación: las tareas requeridas para construir, probar, instalar y
proporcionar soporte al usuario.
• Evaluación del cliente: las tareas requeridas para obtener la reacción del cliente según la
evaluación de las representaciones del software creadas durante la etapa de ingeniería e
implementación durante la etapa de instalación.[ CITATION mar16 \l 12298 ]
Modelo Winwin
El modelo en espiral WINWIN de Boehm, define un conjunto de actividades de negociación
al principio de cada paso alrededor de la espiral. Más que una simple actividad de comunicación
con el cliente se definen las siguientes actividades:
· Identificación del sistema o subsistemas clave de los directivos.
34
· Determinación de las condiciones de victoria de los directivos.
· Negociación de las condiciones de victoria de los directivos para reunirlas en un conjunto
de condiciones para todos los afectados.[ CITATION mar16 \l 12298 ]
Modelo De Desarrollo Basado En Componente
Un componente es una pieza de código pre elaborado que encapsula alguna
funcionalidad expuesta a través de interfaces estándar. Es algo muy similar a lo que
podemos observar en el equipo de música que tenemos en nuestra sala. Cada
componente de aquel aparato ha sido diseñado para acoplarse perfectamente con sus
pares, las conexiones son estándar y el protocolo de comunicación está ya
preestablecido. Al unirse las partes, obtenemos música para nuestros oídos.
El paradigma de ensamblar componentes y escribir código para hacer que estos componentes
funcionen se conoce como Desarrollo de Software Basado en Componentes.
Desarrollo basado en componentes
35
El modelo de desarrollo basado en componentes incorpora muchas de las características del
modelo espiral. Es evolutivo por naturaleza y exige un enfoque interactivo para la creación del
software. Sin embargo, el modelo de desarrollo basado en componentes configura aplicaciones
desde componentes preparados de software (clases).
El modelo de desarrollo basado en componentes conduce ala reutilización del software, y la
reutilización proporciona beneficios a los ingenieros de software. Según estudios de
reutilización, QSM Associates, Inc. Informa que el ensamblaje de componentes lleva a una
reducción del 70 % del ciclo de desarrollo un 84% del coste del proyecto y un índice de
productividad del 26.2. No hay duda que el ensamblaje de componentes proporciona ventajas
significativas para los ingenieros del software.[ CITATION Cal10 \l 12298 ]
El desarrollo de software basado en componentes se ha convertido actualmente en uno de los
mecanismos más efectivos para la construcción de grandes sistemas y aplicaciones de software.
Una vez que la mayor parte de los aspectos funcionales de esta disciplina comienzan a estar
bien definidos, la atención de la comunidad científica comienza a centrarse en los aspectos extra
funcionales y de calidad, como un paso hacia una verdadera ingeniería. En este artículo se
discuten precisamente los aspectos de calidad relativos a los componentes software y a las
aplicaciones que con ellos se construyen, con especial énfasis en los estándares internacionales
que los definen y regulan, y en los problemas que se plantean en este tipo de entornos.
[ CITATION Cal10 \l 12298 ]
36
Beneficios del Desarrollo de Software Basado en Componentes
El uso de este paradigma posee algunas ventajas:
1. Reutilización del software. Nos lleva a alcanzar un mayor nivel de reutilización de
software.
2. Simplifica las pruebas. Permite que las pruebas sean ejecutadas probando cada uno de los
componentes antes de probar el conjunto completo de componentes ensamblados.
3. Simplifica el mantenimiento del sistema. Cuando existe un débil acoplamiento entre
componentes, el desabollador es libre de actualizar y/o agregar componentes según sea
necesario, sin afectar otras partes del sistema.
4. Mayor calidad. Dado que un componente puede ser construido y luego mejorado
continuamente por un experto u organización, la calidad de una aplicación basada en
componentes mejorará con el paso del tiempo[ CITATION Cal10 \l 12298 ]
37
CONCLUSIONES
De acuerdo con este trabajo se puede concluir que el software es una parte muy importante y
que se aplica en todo, este ayuda a resolver problemas que facilitan la vida al ser humano,
siempre y cuando el software este desarrollado de forma correcta.
Otro de los aspectos más importante que se dieron a conocer es que para desarrollar un
software de calidad se necesita seguir varios pasos fundamentales, unas de sus características
primordiales es que debe cumplir con la necesidad para lo que fue creado.
38
Bibliografía
LEON BERMUDEZ, M. Z. (s.f. de s.f. de s.f.). ModelosProcesosDeSoftware. Obtenido de
[Link]
Robertinho. (07 de 02 de 2012). Ingenexescom. Obtenido de
[Link]
". s. (s.f. de s.f. de s.f.). OBC. Obtenido de [Link]
management/metodologia-agile/que-son-las-metodologias-de-desarrollo-de-software
"El Software y sus campos de aplicación". (s.f. de s.f. de s.f.). lsi. Obtenido de
[Link]
"Herramientas software". (s.f. de s.f. de s.f.). LSIIS . Obtenido de
[Link]
"ingenieria de software". (24 de 08 de 2010). analisisdesoftware1. Obtenido de
[Link]
"METODOLOGÍA DRA". (s.f. de s.f. de s.f.). Modelosdesoftware. Obtenido de
[Link]
"MODELO DE PROTOTIPO". (23 de 05 de 2011). Obtenido de
[Link]
"MODELO INCREMENTAL O EVOLUTIVO". (s.f. de s.f. de s.f.). Programacion
Estructurada. Obtenido de
[Link]
software/modelo-incremental-o-evolutivo
"REQUERIMIENTOS DEL SOFTWARE". (s.f. de s.f. de s.f.). Galeon. Obtenido de
[Link]
39
Calero, W. (08 de 10 de 2010). Ingenieria de Software. Obtenido de
[Link]
cavsi. (s.f. de s.f. de s.f.). CAVSI. Obtenido de
[Link]
Definista. (s.f. de s.f. de s.f.). [Link]. Obtenido de
[Link]
mariCh. (31 de 03 de 2016). BLOG DE MARICHELO. Obtenido de
[Link]
PRESSMAN. (s.f. de s.f. de 2002). YAQUI. Obtenido de
[Link]
Ruvalcaba, M. (s.f. de s.f. de s.f.). SG. Obtenido de [Link]
software