Está en la página 1de 24

República 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”
Guanare-Portuguesa

TSU:
Jesús Montilla C.I. 24021506
Prosecución Informática
Asignatura: Seminario ING. del Software
Prof. Yaneira Reyes

NOVIEMBRE de 2019
EL SOFTWARE

El software no es sólo código, sino también las especificaciones del diseño,


los datos tratados y la documentación que permite el desarrollo, instalación y
mantenimiento.

Estrictamente, se puede definir como:

1) Instrucciones que, cuando se ejecutan, proporcionan la funcionalidad deseada.


2) Estructuras de datos que facilitan a las instrucciones manipular adecuadamente
la información.
3) Documentos que describen el desarrollo, uso, instalación y mantenimiento de
los programas.

CARACTERÍSTICAS DEL SOFTWARE

1) Es un elemento lógico, no físico, en contraposición con el hardware.


2) Se desarrolla, no se fabrica.
3) No se estropea, se deteriora, con el tiempo, el hardware se va estropeando por
la presencia de componentes físicos el software, al carecer de ellos, se deteriora.

Cualidades del Software

✓ Correcto.
✓ Confiable.
✓ Robusto.
✓ Eficiente.
✓ Amigable.
✓ Verificable.
✓ Reusable.
✓ Portable.
✓ Interoperable.
✓ Productivo.
✓ A Tiempo.
✓ Visible.
✓ Coheso.
✓ Desacoplado.
✓ Comprensible.
✓ Mantenible.

2
Ingeniería
Es la aplicación sistemática de conocimiento científico para la creación y
construcción de soluciones rentables a problemas prácticos al servicio de la
humanidad.

INGENIERÍA DEL SOFTWARE

La Ingeniería del Software es una disciplina que integra métodos, técnicas y


herramientas para el desarrollo de software de computadora.

Esta disciplina trasciende la actividad de programación, que es la actividad


principal a la hora de crear un software. El ingeniero de software se encarga de toda
la gestión del proyecto para que éste se pueda desarrollar en un plazo determinado
y con el presupuesto previsto.

La ingeniería de software, por lo tanto, incluye el análisis previo de la


situación, el diseño del proyecto, el desarrollo del software, las pruebas necesarias
para confirmar su correcto funcionamiento y la implementación del sistema.

Sus elementos son:

✓ Herramientas: Programas que mecanizan los métodos y las técnicas.


✓ Métodos: Conjunto de tareas ordenadas para conseguir un fin. Los métodos
se desarrollaron para cada una de las fases del desarrollo (análisis, diseño,
implementación, etc.).
✓ Técnicas: Ayudan con las dificultades para llevar a cabo lo que se indica en
los métodos.

Objetivos de la ingeniería de software

✓ Mejorar la calidad de los productos de software


✓ Aumentar la productividad y trabajo de los ingenieros del software.
✓ Facilitar el control del proceso de desarrollo de software.
✓ Suministrar a los desarrolladores las bases para construir software de alta
calidad en una forma eficiente.

3
✓ Definir una disciplina que garantice la producción y el mantenimiento de los
productos software desarrollados en el plazo fijado y dentro del costo
estimado.

VISIÓN GENERAL DEL PROCESO DE LA INGENIERÍA DEL SOFTWARE

El ciclo de vida del software se divide en varias fases desde que nace hasta que
muere:

Planificación: Se identifica el proyecto, se le da nombre y se define el alcance.

Desarrollo: Se desarrolla e implanta.

Mantenimiento: Desde que se implanta hasta que se abandona.

1) Fase de planificación

Se realiza un inventario de todas las actividades que se realizan en una empresa


y se agrupan por proyectos estableciendo una correspondencia entre éstos y las
áreas organizativas.

También se discute la arquitectura hardware, la topología de red, el lenguaje de


programación, etc., y se da una prioridad a cada proyecto.

Se concluye con un documento denominado Plan de Sistemas de Información.

Como anotación, se puede comentar que no se encuentra entre las normas ISO
debido a que se realiza una vez cada período muy grande de tiempo (una vez cada
década o incluso más).

2) Fase de desarrollo

Se llevan a cabo las tareas hasta tener el proyecto funcionando. Conlleva varias
actividades: análisis, diseño, construcción, pruebas e implantación.

3) Fase de mantenimiento

Su objetivo es la obtención de una nueva versión de un sistema debido a


peticiones de cambio que los usuarios realizan por un problema detectado, o por la
necesidad de una mejora del mismo, para acomodarlo a los cambios de su entorno

4
externo o para conseguir una mayor adecuación a los requisitos, mayor eficiencia,
o simplemente recoger nuevas funcionalidades no expresadas en la fase de
definición del sistema.

Comprende el mantenimiento:

✓ Correctivo: Cambia el software para corregir los defectos.

✓ Evolutivo: Introduce mejoras en el software.

✓ Adaptativo: Modifica el software para acomodarlo a los cambios de su entorno


externo.

✓ Perfectivo: Lleva al software más allá de sus requisitos funcionales originales.

PARTICIPANTES EN EL PROCESO DE DESARROLLO DE SOFTWARE

Los Ingenieros de Software deben:

✓ Adoptar un enfoque sistemático para llevar a cabo su trabajo.


✓ Utilizar las herramientas y técnicas apropiadas para resolver el problema
planteado, de acuerdo a las restricciones de desarrollo y a los recursos
disponibles.

Consiguiendo Personal para un proyecto de Ingeniería de Software

Consiste en todas aquellas actividades que involucran llenar (y mantener


llenos) los puestos que fueron establecidos en la estructura organizacional del
proyecto. Esto incluye selección de candidatos, entrenamiento y otros.

Los principales problemas en esta etapa son:

✓ Los jefes de proyecto son frecuentemente seleccionados por su habilidad para


programar o realizar tareas de ingeniería en vez de su habilidad de gestión
(pocos ingenieros son buenos gerentes).
✓ La productividad de los programadores, analistas e ingenieros de software varía
mucho de individuo en individuo.
✓ Hay grandes cambios en el equipo de un proyecto software, especialmente en
aquellos organizados matricialmente.
5
✓ Las universidades no están produciendo un número suficiente de ingenieros que
entiendan el proceso de la ingeniería de software o gestión de proyectos.
✓ Los planes de entrenamiento para desarrolladores individuales de software no
se desarrollan o mantienen.

Actividades derivadas:

✓ Llenar los puestos de la organización.


✓ Asimilar al personal recientemente asignado.
✓ Educar o entrenar al personal.
✓ Proveer de desarrollo general.
✓ Evaluar y valorar al personal.
✓ Compensar.

6
Puesto Responsabilidades

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
Jefe de
conjunto de prácticas que aseguran la integridad y calidad del
Proyecto
proyecto. Supervisará el establecimiento de la arquitectura del
sistema, la gestión de riesgos y la planificación y control del
proyecto.

Capturar, especificar y validar requisitos, interactuando con el


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

Construir prototipos. Colaborar en la elaboración de las pruebas


Analista -
funcionales, modelo de datos y en las validaciones con el
Programador
usuario.

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
Ingeniero de
implementación y despliegue.
Software

CICLO DE VIDA DEL SOFTWARE

Un modelo de ciclo de vida define el estado de las fases a través de las cuales se
mueve un proyecto de desarrollo de software.

Fases del ciclo de vida:

Fase I - Requerimientos

Elaborar una especificación completa y validada de las funciones requeridas

7
Fase II - Análisis / Diseño

Análisis:

El propósito es conocer exactamente cómo trabaja el sistema actual, determinar y


documentar qué debe hacer el sistema y recomendar las posibles soluciones.

Diseño:

El propósito de esta fase es desarrollar un diseño (cómo va a quedar) del


sistema de información que satisfaga todos los requisitos documentados. Se
determina qué va a hacer el sistema. Se identifican las entradas (Input), salidas
(Output), archivos, programas, procedimientos y controles del sistema.

Actividades dentro de la fase de Análisis/Diseño.

✓ Analizar y Diseñar Proceso: Las operaciones y los requerimientos de


funcionamiento definidos en la primera fase, se toman en cuenta con el propósito
de determinar la forma en que debe funcionar el sistema.
✓ Analizar y Diseñar Los Datos: Con los requerimientos de información definidos
en la fase I se debe organizar los distintos modelos de datos que nos ayuden a
diseñar la base de datos que hagan falta para que el sistema funcione de
acuerdo al modelo de funcionamiento.
✓ Diseñar y Organizar Los Componentes Físicos: Todo componente físico como
(pantallas, base de datos) que hagan posible el funcionamiento del sistema de
acuerdo al modelo de funcionamiento.
✓ Planificar El Desarrollo De Los Componentes Físicos: actividad en la cual
planificamos la forma en que pueden ser construidos e implementados los
componentes físicos de una forma rápida y productiva.

En esta fase de análisis / diseño puede incluirse una sub.-fase de evaluación de


paquetes. Esta se pudiese realizar si en los requerimientos se estableció adquirir un
paquete de aplicaciones en lugar de completar un diseño arquitectónico.

8
Fase III – Construcción

Dentro de esta fase de construcción existen actividades separadas en cinco sub.-


fases:

1. Desarrollo de infraestructura

Durante esta fase se desarrollará y organizará la infraestructura que permita cumplir


las tareas de construcción en la forma más productiva posible.

2. Adaptación de paquete

Uno de los objetivos centrales de esta sub-fase es conocer al máximo detalle


posible el funcionamiento del paquete, este asegurará que el paquete será utilizado
con el máximo provecho, tanto desde el punto de vista del negocio, como de la
utilización de recursos. Cada componente del paquete será revisado en forma
exhaustiva por el equipo Analista – Usuario, con el fin de conocer y comprender
todos los aspectos del paquete.

3. Desarrollo de unidades de diseño interactivas

Las unidades de diseño interactivas, son procedimientos que se cumple o se


ejecutan a través de un dialogo usuario – sistema.

Las actividades de esta subfase tienen como objetivo central:

✓ Especificar en detalle las tareas que debe cumplir la unidad de diseño.


✓ Desarrollar componentes.
✓ Realizar las pruebas unitarias y las pruebas de integración a nivel de la unidad
de diseño.
✓ Desarrollo de unidades de diseño batch

En esta sub.-fase se preparan especificaciones hechas utilizando una combinación


de técnicas como flujo gramas, diagramas de estructuras, tablas de decisiones etc.
Cualquiera que se utilice será útil para que la especificación sea clara y se logre el
propósito de que el programador comprenda y pueda programar y probar los
programas correspondientes.

9
4. Desarrollo de unidades de diseño manuales

Las actividades de esta subfase tienen como objetivo central desarrollar todos
los procedimientos administrativos que rodearán y gobernarán la utilización de los
componentes computarizados desarrollados en la fase de diseño detallado y
construcción.

Fase IV – Pruebas

Esta fase, da inicio luego de que las diferentes unidades de diseño han sido
desarrolladas y probadas por separado. Durante su desarrollo, el sistema se emplea
de forma experimental para asegurar que el software no falle, es decir que funcione
de acuerdo a sus especificaciones y a la manera que los usuarios esperan que lo
haga, y de esta forma poder detectar cualquier anomalía, antes de que el sistema
sea puesto en marcha y se dependa de él. Para evaluar el desenvolvimiento del
sistema, en esta fase se llevan a cabo varios niveles de prueba:

✓ Funcional: Prueba desde el punto de vista de los requerimientos funcionales.


✓ De Sistema: Prueba desde el punto de vista de los niveles de calidad del sistema
y de desempeño.
✓ De Integración: Prueba de interfaces.
✓ De Aceptación Técnica: Prueba de manejo de condiciones extremas.

Si el Sistema cumple de forma satisfactoria con estos niveles mencionados


anteriormente, se procede a realizar la carga de los archivos, base de datos y tablas
del nuevo sistema, para de esta forma dar inicio al proceso de aceptación final,
durante el cual, el sistema comenzará a funcionar bajo la responsabilidad del
departamento de operaciones y del usuario, por un lapso determinado de tiempo
llamado Periodo de Aceptación.

Finalizado el Periodo de Aceptación, se le dará al sistema la aprobación final, para


que pase a ser el sistema oficial.

10
Fase V - Producción / Mantenimiento

“Una vez que un sistema pasa a formar parte de la vida diaria de la empresa o
institución, cada programa, cada procedimiento y cada estructura de datos se
convierte en una pieza del negocio que, como tal, deberá funcionar en forma
constante, exacta y confiable. L a operación del negocio ahora dependerá del
funcionamiento del sistema, por lo que las tareas de mantenimiento cobran vital
importancia.

Durante la fase de mantenimiento, se ponen en práctica todas las políticas y los


procedimientos destinados a garantizar la operación continúa de los de los sistemas
y a asegurar su uso efectivo, con el fin, de que éstos se constituyan en una
verdadera herramienta de apoyo al logro de los objetivos estratégicos de la
empresa.

Fundamentación teórica

LOS PARADIGMAS DE PROGRAMACIÓN:

Son la forma, que determinan los métodos y las herramientas que un


programador usara en la construcción de un software.

Mayormente los lenguajes de programación están basados en uno o más


paradigmas, ha estos se les puede llamar multiparadigmas.

También menciona los diferentes tipos de paradigmas que se conocen, pero


solamente se hace referencia a los más importante ya que suelen haber muchos
más que no se mencionaran en esta investigación.

PROGRAMACIÓN MULTIPARADIGMA

Un lenguaje de programación puede soportar distintos paradigmas de


programación con el objetivo de que un programador utilice el más conveniente a la
hora de resolver un problema. Ningún paradigma es capaz de resolver todos los
problemas de forma sencilla y eficiente, por lo tanto, es útil poder elegir entre
distintos “estilos” de programación dependiendo del tipo de problema. También hay
lenguajes que permiten mezclar los paradigmas que, en principio, parecerían

11
irreconciliables. Se debe aclarar que hay subparadigmas que se incluyen en
paradigmas más generales, pero hay otros que utilizan métodos de programación
totalmente distintos entre sí e igualmente hay lenguajes que los combinan. Por
ejemplo, el lenguaje Oz emplea programación lógica, funcional, orientada a objeto
y otras. Lenguajes como Delphi, C++ y Visual Basic combinan el paradigma
imperativo, el procedural y el orientado a objetos. Incluso lenguajes más puros en
sus paradigmas como Prolog (paradigma lógico) o Scheme (paradigma funcional)
poseen estructuras iterativas típicas de los lenguajes de paradigma imperativo.

TIPOS DE PARADIGMAS

Los más comunes:

Paradigma imperativo

Generalmente el código máquina, describe una programación como un flujo


de instrucciones o comandos que van formando la estructura del software.

Es un paradigma de programación que describe la programación en términos


del estado del programa y sentencias que cambian dicho estado. Los programas
imperativos son un conjunto de instrucciones que le indican al computador cómo
realizar una tarea.

La implementación de hardware de la mayoría de computadores es


imperativa; prácticamente todo el hardware de los computadores está diseñado
para ejecutar código de máquina, que es nativo al computador, escrito en una forma
imperativa. Esto se debe a que el hardware de los computadores implementa el
paradigma de las Máquinas de Turing. Desde esta perspectiva de bajo nivel, el estilo
del programa está definido por los contenidos de la memoria, y las sentencias son
instrucciones en el lenguaje de máquina nativo del computador (por ejemplo, el
lenguaje ensamblador).

Los lenguajes imperativos de alto nivel usan variables y sentencias más


complejas, pero aún siguen el mismo paradigma. Las recetas y las listas de revisión
de procesos, a pesar de no ser programas de computadora, son también conceptos

12
familiares similares en estilo a la programación imperativa; cada paso es una
instrucción, y el mundo físico guarda el estado (Zoom).

Paradigma funcional

Este tipo de paradigma demuestra un tipo de programación en forma de


funciones matemáticas. Los lenguajes puramente funcionales evitan efectos
secundarios que pueden ser comunes en otros tipos de paradigmas.

El objetivo es conseguir lenguajes expresivos y matemáticamente elegantes,


en los que no sea necesario bajar al nivel de la máquina para describir el proceso
llevado a cabo por el programa, y evitando el concepto de estado del cómputo. La
secuencia de computaciones llevadas a cabo por el programa se regiría única y
exclusivamente por la reescritura de definiciones más amplias a otras cada vez más
concretas y definidas, usando lo que se denominan "definiciones dirigidas".

Paradigma lógico

Se definen reglas lógicas que luego a través de un motor de inferencias


lógicas, resolver problemas planteados por el sistema. Algunos programas que
utilizan el paradigma lógico: prolog.

Paradigma orientado a Objetos

Este tipo de programación posee como idea principal encapsular estado y


operaciones en objetos. Estos objetos pueden comunicarse entre si, poseen clases
y herencia. Se puede destacar como ventaja la facilidad de reutilización de código.
Algún ejemplo de algunos lenguajes orientados a objetos puede ser: Simula,
Smalltalk, C++, Java, Visual Basic .NET, etc.

Paradigma estructurado

Básicamente el código se divide en bloques, estructuras, que pueden o no


comunicarse entre sí. Este software se controla con secuencia, selección e
interacción. Otorga una mejor comprensión del código y permite su reutilización de
una forma más fácil.

13
Paradigma de programación guiada por eventos

Es un paradigma de programación en el que tanto la estructura como la


ejecución de los programas van determinados por los sucesos que ocurran en el
sistema o que ellos mismos provoquen.

Mientras que en la programación secuencial es el programador el que define


cuál va a ser el flujo del programa, en la programación dirigida por eventos será el
propio usuario, o lo que sea que esté accionando el programa, el que dirija el flujo
del programa.

Al comenzar la ejecución del programa se llevarán a cabo las inicializaciones


correspondientes y a continuación el programa quedará bloqueado hasta que se
produzca algún evento.

Cuando alguno de estos eventos tenga lugar, el programa pasará a ejecutar


el código del correspondiente manejador de evento.

Metodología Del Desarrollo Software

Modelo En Cascada:

Éste toma las actividades fundamentales del proceso de especificación,


desarrollo, validación y evolución y las representa como fases separadas del
proceso.

El modelo en cascada consta de las siguientes fases:

1. Definición de los requisitos: Los servicios, restricciones y objetivos son


establecidos con los usuarios del sistema. Se busca hacer esta definición en detalle.

2. Diseño de software: Se particiona el sistema en sistemas de software o


hardware. Se establece la arquitectura total del sistema. Se identifican y describen
las abstracciones y relaciones de los componentes del sistema.

3. Implementación y pruebas unitarias: Construcción de los módulos y unidades


de software. Se realizan pruebas de cada unidad.

14
4. Integración y pruebas del sistema: Se integran todas las unidades. Se prueban
en conjunto. Se entrega el conjunto probado al cliente.

5. Operación y mantenimiento: Generalmente es la fase más larga. El sistema es


puesto en marcha y se realiza la corrección de errores descubiertos. Se realizan
mejoras de implementación. Se identifican nuevos requisitos.

Una fase no comienza hasta que termine la fase anterior y generalmente se incluye
la corrección de los problemas encontrados en fases previas.

Desventajas

En la vida real, un proyecto rara vez sigue una secuencia lineal, esto crea
una mala implementación del modelo, lo cual hace que lo lleve al fracaso.

El proceso de creación del software tarda mucho tiempo ya que debe pasar
por el proceso de prueba y hasta que el software no esté completo no se opera.
Esto es la base para que funcione bien.

Cualquier error de diseño detectado en la etapa de prueba conduce necesariamente


al rediseño y nueva programación del código afectado, aumentando los costos del
desarrollo.

15
Modelo Evolutivo:

La idea detrás de este modelo es el desarrollo de una implantación del


sistema inicial, exponerla a los comentarios del usuario, refinarla en N versiones
hasta que se desarrolle el sistema adecuado. En la Figura se observa cómo las
actividades concurrentes: especificación, desarrollo y validación, se realizan
durante el desarrollo de las versiones hasta llegar al producto final.

Ventaja: es que es ideal para sistemas que no tiene bien definidos los
requerimientos, es decir, para la mayoría de los sistemas que se desarrollan. El
cliente desde el principio tiene una idea de los requerimientos de su sistema, pero
no están claros hasta el último detalle. Aún así podemos basarnos en lo ya
entendido (cliente y desarrollador), trabajar con esta información, y mientras se
vayan creando prototipos, el cliente detallará sus especificaciones.

Desventaja: es que es difícil distinguirlo del proceso "codifica y corrige", pues en


cierta medida son parecidos, la diferencia está que en la práctica se requiere que al
construir el prototipo se aplique el análisis y el diseño pero sólo a una parte de los
requerimientos ya entendidos, que se documente y se codifique, lográndose con
todo esto, un poco de disciplina heredada del modelo en cascada, de esta manera,
la desventaja no lo es tanto. La característica de este modelo es que está enfocado
a la producción de prototipos.

16
Modelo Incremental:

Es una forma de reducir la repetición del trabajo en el proceso de desarrollo


y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir
experiencia con el sistema. Es una combinación del Modelo de Cascada y Modelo
Evolutivo.

Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para


retrasar las decisiones hasta tener experiencia en el sistema.

Durante el desarrollo de cada incremento se puede utilizar el modelo de


cascada o evolutivo, dependiendo del conocimiento que se tenga sobre los
requisitos a implementar. Si se tiene un buen conocimiento, se puede optar por
cascada, si es dudoso, evolutivo.

Modelo Espiral:

El modelo en espiral fue desarrollado por Boehm, quien lo describe así:

El modelo de desarrollo en espiral es un generador de modelo de proceso


guiado por el riesgo que se emplea para conducir sistemas intensivos de ingeniería
de software concurrente y a la vez con muchos usuarios.

Características

✓ Un enfoque cíclico para el crecimiento incremental del grado de definición e


implementación de un sistema, mientras que disminuye su grado de riesgo.

17
✓ Un conjunto de puntos de fijación para asegurar el compromiso del usuario con
soluciones de sistema que sean factibles y mutuamente satisfactorias.

Principios básicos:

✓ Decidir qué problema se quiere resolver antes de empezar a resolverlo.

✓ Examinar tus múltiples alternativas de acción y elegir una de las más


convenientes.

✓ Evaluar qué tienes hecho y qué tienes que haber aprendido después de hacer
algo.

✓ No ser tan ingenuo para pensar que el sistema que estás construyendo será
"EL" sistema que el cliente necesita.

✓ Conocer los niveles de riesgo, que tendrás que tolerar.

Funcionamiento del modelo Espiral

Determinar o fijar objetivos

✓ Fijar también los productos definidos a obtener: requerimientos,


especificación, manual de usuario.

✓ Fijar las restricciones.

18
✓ Identificación de riesgos del proyecto y estrategias alternativas para evitarlos.

✓ Hay una cosa que solo se hace una vez: planificación inicial o previa.

Análisis del riesgo

Se estudian todos los riesgos potenciales y se seleccionan una o varias


alternativas propuestas para reducir o eliminar los riesgos.

Desarrollar, verificar y validar (probar)

• Tareas de la actividad propia y de prueba.

• Análisis de alternativas e identificación resolución de riesgos.

Planificar

Revisamos todo lo hecho, evaluándolo, y con ello decidimos si continuamos con las
fases siguientes y planificamos la próxima actividad.

Ventajas

✓ El análisis del riesgo se hace de forma explícita y clara. Une los mejores
elementos de los restantes modelos.

✓ Reduce riesgos del proyecto.

✓ Incorpora objetivos de calidad.

✓ Integra el desarrollo con el mantenimiento, etc.

✓ Además, es posible tener en cuenta mejoras y nuevos requerimientos sin romper


con la metodología, ya que este ciclo de vida no es rígido ni estático.

Desventajas

• Genera mucho tiempo en el desarrollo del sistema.

• Modelo costoso.

• Requiere experiencia en la identificación de riesgos.

19
MODELADO DEL SOFTWARE

El modelado de sistemas software es una técnica para tratar con la


complejidad inherente a estos sistemas. El uso de modelos ayuda al ingeniero de
software a "visualizar" el sistema a construir. Además, los modelos de un nivel de
abstracción mayor pueden utilizarse para la comunicación con el cliente. Por último,
las herramientas de modelado y las de Ingeniería de Software Automatizada.
pueden ayudar a verificar la corrección del modelo.

TÉCNICAS Y HERRAMIENTAS EN EL PROCESO DE DESARROLLO DE


SOFTWARE
Un proceso de desarrollo de software tiene como propósito la producción
eficaz y eficiente de un producto software que reúna los requisitos del cliente. Este
proceso es intensamente intelectual, afectado por la creatividad y juicio de las
personas involucradas. Aunque un proyecto de desarrollo de software es
equiparable en muchos aspectos a cualquier otro proyecto de ingeniería, en el
desarrollo de software hay una serie de desafíos adicionales, relativos
esencialmente a la naturaleza del producto obtenido.

Un producto software en sí es complejo, es prácticamente inviable conseguir


un 100% de confiabilidad de un programa por pequeño que sea. Existe una inmensa
combinación de factores que impiden una verificación exhaustiva de las todas
posibles situaciones de ejecución que se puedan presentar (entradas, valores de
variables, datos almacenados, software del sistema, otras aplicaciones que
intervienen, el hardware sobre el cual se ejecuta, entre otros.).

El proceso de desarrollo de software no es único. No existe un proceso de


software universal que sea efectivo para todos los contextos de proyectos de
desarrollo. Debido a esta diversidad, es difícil automatizar todo un proceso de
desarrollo de software. A pesar de la variedad de propuestas de proceso de
software, existe un conjunto de actividades fundamentales que se encuentran
presentes en todos ellos:

✓ Especificación de software: Se debe definir la funcionalidad y restricciones


operacionales que debe cumplir el software.

20
✓ Diseño e Implementación: Se diseña y construye el software de acuerdo a la
especificación.
✓ Validación: El software debe validarse, para asegurar que cumpla con lo que
quiere el cliente.
✓ Evolución: El software debe evolucionar, para adaptarse a las necesidades
del cliente.

Técnicas en el Proceso para el Desarrollo de un Software:


1. Técnica para la Recopilación de Datos.
La recolección de datos se refiere al uso de una gran diversidad de técnicas
y herramientas que pueden ser utilizadas por el analista para desarrollar los
sistemas de información, los cuales pueden ser la entrevistas, la encuesta, el
cuestionario, la observación, el diagrama de flujo y el diccionario de datos.

Son todas las formas posibles de que se vale el investigador para obtener la
información necesaria en el proceso investigativo. Todos estos instrumentos se
aplicarán en un momento en particular, con la finalidad de buscar información que
será útil a una investigación en común.

✓ Entrevista.
✓ Encuesta.
✓ Cuestionario.
✓ Observación.
✓ Revisión documental.
Herramientas en el Proceso de Desarrollo de un Software:
Las Herramientas de Ayuda al Desarrollo de Sistemas de Información,
surgieron para intentar dar solución a los problemas inherentes a los proyectos de
generación de aplicaciones informáticas: plazos y presupuestos incumplidos,
insatisfacción del usuario, escasa productividad y baja calidad de los desarrollos.
Algunas de estas herramientas se dirigen principalmente a mejorar la calidad, como
es el caso de las herramientas CASE (Computer Aided Software Engineering-
Ingeniería de Software Asistida por Ordenador). Otras van dirigidas a mejorar la

21
productividad durante la fase de construcción, como es el caso de los lenguajes de
cuarta generación (4GL-Fourth Generation Language).

1. Herramientas para diseñar software.


✓ Existe al menos 20 herramientas libres para diseñar softwares totalmente
libres.
✓ Todas utilizan la notación UML
✓ El nivel de avance entre una y otra es notable, casi todas ofrecen como
funcionalidad: Diagramas de caso de uso, Diagramas de
clases, Diagramas de secuencia.
✓ Generación de código en java, c++, python y php.
✓ Algunas entidad-relación (pero ninguna lo suficientemente avanzada)
✓ Pocas herramientas permiten ingeniería reversa, y si lo hacen solo es de
lenguajes tipo java o c++.
2. Herramientas para modelar bases de datos.
✓ Algunas de las herramientas CASE libres permiten modelar bajo Entidad-
Relación, sin embargo, su funcionalidad es bastante limitada.
✓ Básicamente existen herramientas orientadas a una DB en específico y
estas son MySql y PostgreSQL, el de MySql (MySql WorkBench no es
libre).
✓ Permiten hacer ingeniería reversa de la db para las que fueron diseñadas,
algunas otras soportan UnixODBC/Odbc según sea el caso.
✓ Existen algunos modeladores en línea.
✓ La documentación que generan es bien básica.
3. Herramientas para Ingeniería de Software Asistida por Computadora
(CASE).
Son un conjunto de métodos, utilidades y técnicas que facilitan la automatización
del ciclo de vida del desarrollo de sistemas de información, completamente o en
alguna de sus fases.

✓ El empleo de herramientas Case permiten integrar el proceso de ciclo de


vida:
✓ Análisis de datos y procesos integrados mediante un repositorio.
✓ Generación de interfaces entre el análisis y el diseño.
22
✓ Generación del código a partir del diseño.
✓ Control de mantenimiento.
Actualmente, la tendencia en el desarrollo de software está enfocada hacia las
microcomputadoras como plataformas de ingeniería de software, que se
interconectan mediante redes para que puedan comunicarse de forma efectiva. La
base de datos del proyecto (también denominada biblioteca del proyecto o depósito
de software), está disponible a través de un servidor de archivos en red que es
accesible desde todas las estaciones de trabajo. Un sistema operativo que gestiona
el hardware, la red y las herramientas, mantiene todo el entorno unido.

La arquitectura de entorno, compuesta por la plataforma hardware y el soporte


del sistema operativo (incluida la red y la gestión de la base de datos), constituye la
base del CASE. Pero el entorno CASE, en sí mismo, necesita otros componentes.
Un conjunto de servicios de potabilidad constituye un puente entre las herramientas
CASE y su marco de integración y la arquitectura de entorno. El marco de
integración es un conjunto de programas especializados que permite a cada
herramienta CASE comunicarse con las demás, para crear una base de datos de
proyectos y mostrar una apariencia homogénea al usuario final (el ingeniero de
software). Los servicios de potabilidad permiten que las herramientas CASE y su
marco de integración puedan migrar a través de diferentes plataformas hardware y
sistemas operativos, sin grandes esfuerzos de adaptación.

23
BIBLIOGRAFIA

https://sites.google.com/site/ingenierialeosw/unidad-1-fundamentos-de-ingenieria-de-
software/1-1-conceptos-basicos

http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro22/1411_los_participantes_en_un_proye
cto_de_software.html

https://es.slideshare.net/yamili7/paradigmas-de-programacion

http://ingsoftware072301.obolog.es/unidad-2-fundamentos-ingenieria-software-2006544

http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_multiparadigma

https://es.wikipedia.org/wiki/Modelado_del_software

http://fundametosteoricosingdelsoftware.blogspot.com/2014/12/tecnicas-y-herramientas-
en-el-proceso.html

24

También podría gustarte