RelatoriaMóduloII (LeonardoContreras)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 41

República Bolivariana de Venezuela

Universidad Nacional Experimental De Los Llanos Occidentales “Ezequiel


Zamora” (UNELLEZ)
Barinas. Barinas

Alumno: Contreras Leonardo.


C.I:25.450.183
Docente: Ing. Darjeling Silva Sub-proyecto: Metodología del
desarrollo de Software.
Módulo: II
Carrera: Ingeniería Informática.

Barinas, 16/01/2021.
INTRODUCCIÓN

El ciclo de vida de Desarrollo de un Sistema de Información es el conjunto de actividades


que emprenden los analistas y diseñadores para desarrollar e implementar un sistema de
información. A su vez es un paradigma de la programación estructurada que proporciona
lineamientos para desarrollar un proyecto de sistema de información.

En el presente informe se pretende implementar el ciclo de vida de sistema de información


propuesto Llorens Fábregas, 1991, dentro del contexto practico que enmarca el proyecto
realizado por los estudiantes Contreras Leonardo, Cantor Geiner, Espinoza Raúl; a la
fecha de 20/07/2014, para la clase final del sub-proyecto algoritmo y programación I de la
carrera Ingeniería Informática en la (UNELLEZ), en el cual se desarrolló como proyecto
final un software o programa informático denominado “Agenda de Contactos”.

A través del uso e implementación de dicha metodología clásica que se utiliza a modo de
referencia, se espera plasmar de manera implícita cada uno de los procesos llevados a
cabo durante el desarrollo y creación del programa informático siguiendo los niveles
jerárquicos de la metodología mencionada anteriormente.

METODOLOGIA CLASICA:

Fase I - Requerimientos

Esta fase fundamental para que la estrategia informática encaje dentro de las metas
de la empresa, ya que en ella se cumplen las funciones del modelaje del negocio y
planificación de sistemas; esto con el fin de proyectar las estrategias del negocio y
determinar de esta forma sus requerimientos de información.

Aunque la fase de requerimientos puede aplicarse a todos los procesos de la empresa,


o a un área en específico, suele ser más practico analizar área por área del negocio.
Durante esta fase se desarrolla un modelo del área estudiada, donde se representa:
Los procesos que se llevan a cabo, la información utilizada por ellos y las reglas políticas
y prácticas de la empresa relacionada con estos procesos.

Este modelo permite proyectar las estrategias, procesos y flujos de datos de la


empresa al igual que las interrelaciones entre procesos y datos, con el fin de desarrollar
un plan de sistema de información capaz de guiar el desarrollo de un sistema que permita
dar soporte al área en estudio en el cumplimiento de sus objetivos.

El Plan de Sistemas debe contener:

• Los sistemas que requiere el área del negocio, así como sus bases de datos y la
información que intercambiaran o compartieran.
• Descripción detallada de cada sistema y aplicación incluyendo sus objetivos
funcionales y sus bases de diseño.
• Todo hardware y software que serán utilizados para el funcionamiento requerido
por el área de negocio (incluyendo las redes).
• Métodos de desarrollo para cada sistema como lo es adquisición de paquetes,
nuevo desarrollo o actualizaciones.
• Esquema de los problemas actuales del área de negocio y de las posibles mejoras
que se puedan realizar en cada sistema.
• Análisis de los beneficios que se espera derivar de los sistemas que conforman la
arquitectura.

El plan de sistemas de información es uno de los factores más importantes para el


departamento de informática o sistemas ya que constituye la guía para emprender los
proyectos que requiera el cliente, reclutar y adiestrar al personal necesario y la adquisición
e instalación de hardware y software necesarios.

Además, el plan de sistemas es fundamental para la construcción y desarrollo de un


ambiente de alta calidad y productividad ya que:

• La arquitectura de sistemas sobre la cual descansa el plan para una determinada


área de negocios define la forma de cómo cada aplicación desarrollada será
destinada a dar soporte a objetivos claves y estratégicos para esa específica área
del negocio y, por ende, a la empresa.
• Se determinará una definición precisa de los beneficios, alcances y objetivos de
cada sistema, lo cual creará soluciones que el negocio realmente necesite. Estos
sistemas se ajustarán a las estrategias definidas por la gerencia.
• Cada proyecto tendrá una prioridad fijada por la gerencia, lo que determinará el
orden de ejecución.
• Cada aplicación desarrollada podrá ser interrelacionada con otros sistemas.
Fase II - Análisis / Diseño

El objetivo de esta fase es desarrollar el diseño arquitectónico de los sistemas,


utilizando los requerimientos obtenidos en la primera fase. En el diseño arquitectónico se
engloban dos componentes: los datos y los procesos, los cuales serán analizados y
diseñados desde una perspectiva conceptual a una física, dentro de las actividades que
se encuentran en esta fase.

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

• Analizar y Diseñar Proceso: Las operaciones del negocio 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.

Fase III - Construcción

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

• 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.

• Adaptación de paquetes

Ofrece una desventaja fundamental: el personal de la instalación no conoce los


componentes del paquete con la misma profundidad con que conoce los componentes
desarrollados por ellos mismos. 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.

• 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 sub-fase 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.

• Desarrollo de unidades de diseño manuales

Las actividades de esta sub.-fase 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 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.

Fase V - Producción / Mantenimiento

“Una vez que un sistema pasa a formar parte de la vida diaria de la empresa, 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 (Lloren
Fábregas).”

• Producción

Finalmente, en la etapa de producción se asegura que el sistema funcione


correctamente en la mayoría de los casos, y con intervención mínima de los
administradores del sistema. Para esto se realizan nuevas pruebas, se reevalúan los
resultados y se hacen refinamientos del sistema, los cambios necesarios deberán ser
introducidos sin afectar a los usuarios, y deberá conseguirse la máxima confianza de los
usuarios. El resultado de esta etapa un sistema listo para su operación.

• Mantenimiento

Luego que el nuevo sistema ha estado operando, el auditor de sistemas independiente


de las otras fases de la vida del sistema, revisará lo siguiente:

Determinar si el programa ha logrado los requerimientos de los objetivos, se debe


prestar especial atención a la utilización y la satisfacción de los usuarios finales, ellos
constituirán un indicador excelente. Verificar que se miden, analizan e informan
adecuadamente a la gerencia los beneficios identificados con el estudio de factibilidad.
Revisar las solicitudes de cambios a los programas que se han realizado, para evaluar el
tipo de cambios que se exigen al sistema, el tipo de cambios puede indicar problemas de
diseño, programación o interpretación de los requerimientos de usuario.

IMPLEMENTACIÓN DEL CICLO DE DESARROLLO DE SISTEMAS FÁBREGAS EN


LA APLICACIÓN INFORMÁTICA “AGENDA DE CONTACTOS”.

Fase I – Requerimientos

- Objetivo del Sistema:

La presente aplicación ya desarrollada tiene como finalidad, almacenar datos e


información ingresada por un usuario para relacionarla a un contacto telefónico, una vez
almacenada la información el sistema permite desplegar y mostrar dichos datos a través
de la propia interfaz generada por el mismo.

- Descripción General del sistema: Se prende realizar una agenda que


permita almacenar nombres de personas junto con su dirección de correo
electrónico, número de teléfono fijo y su número de teléfono móvil.
- Se denomina “Contacto” a cada una de las entradas almacenadas en la
agenda. Para cada contacto se almacenan los siguientes datos: (nombre,
teléfono fijo, teléfono móvil, correo).
- Los contactos se identifican por su nombre, por lo que, para evitar
confusiones la agenda no podrá contener dos contactos con el mismo nombre
(aunque si con el mismo teléfono o el mismo correo electrónico).
- Los contactos de una persona cambian con el tiempo, por lo que la
aplicación deberá permitir añadir, eliminar, modificar y actualizar contactos.
- Es fundamental que los contactos no se pierdan al cerrar la aplicación, por
lo que deberá guardarse cuando se cierre la aplicación y recuperarse cada vez
que comience una nueva ejecución de la aplicación.
- La agenda debe ser capaz de almacenar al menos 100 contactos.
- La gestión de una agenda se hace mediante una interfaz gráfica.

Fase II - Análisis / Diseño -

Analizar y Diseñar Proceso:

Requerimientos de funcionamiento:

 Disponer de una computadora


 Selección de lenguaje de programación: C++
Es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne
Stroustrup, un lenguaje de programación C con mecanismos que permiten la
manipulación de objetos, desde el punto de vista de los lenguajes orientados a objetos, el
C++ es un lenguaje híbrido.

 Instalación de DEV-C++ en el ordenador

 Turbo C++

 O cualquier otro entorno que sea compatible con el lenguaje de programación c++

Los requerimientos mínimos para la instalación de Dev-C++ son los siguientes:

• Microsoft Windows 2000, XP, VISTA, 7, 8

• 64 MB RAM

• 400 Mhz Intel compatible CPU

• 200 MB de espacio libre de disco

A continuación, les mostraremos la manera de instalar Dev-C++:

Una vez conseguido, el fichero de instalación devcpp-4.9.9.2setup.exe (el nombre


varía según sea la versión) éste contiene todo lo necesario para instalar el entorno de
programación Dev-C++ y el compilador de C/C++. La instalación de este software es
bastante simple. Únicamente hay que acceder al directorio dónde se descargó y hacer
doble click sobre el fichero devcpp-4.9.9.2setup.exe. Automáticamente, se lanza el
software de instalación y será necesario seguir los siguientes pasos.

1. Seleccionamos el idioma para la instalación: español (Figura 1)


Figura 1

2. Aceptamos la licencia para lo cual pinchamos en “Acepto” (Figura 2).

Figura 2

3. Tomamos la instalación típica “Full” pinchando en “Siguiente” (Figura 3)

Figura 3

4. Elegimos el directorio donde se desea instalar. Se puede dejar el que viene por
defecto pinchando en “Instalar” (Figura 4). El software de instalación copiará los
archivos en el directorio elegido y para terminar la instalación pinchamos en
“Terminar” (Figura 5).

Figura 4

Figura 5

5. Arrancar el entorno por primera vez (Figura 6) y seleccionar como idioma


español (castellano).
Figura 6

El entorno permite configurar ciertas opciones. Se recomienda que se elijan las


siguientes:

1. Habilitar depuración de programas. “Herramientas”- “Opciones de


Compilador”- “Pestaña Configuración”- “Linier” (Figura 7), poner a “i.e.” la opción
“Generar información de debut”.

Figura 7

2. “Herramientas”- “Opciones del editor”- “Principal”-”Resaltar llaves y paréntesis


concordantes” Permite ver resaltadas y emparejadas las llaves y los paréntesis
(Figura 8).
3. “Herramientas”- “Opciones del editor”- “Principal”- “Tabuladores
Inteligentes”.
Quitar la selección (Figura 8).

Figura 8
4. “Herramientas”- “Opciones del editor”- “Visualización”- “Número de línea”
para ver las líneas de código numeradas en una secuencia que aparece a la
izquierda de la ventana de texto (Figura 9).

5. Para mostrar la sintaxis resaltada (coloreada) y poder detectar algunos errores


sintácticos de forma rápida. “Herramientas”- “Opciones del editor” “Sintaxis”- “Pre
configuraciones”- “Classic” (Figura 10).
Figura 10

- Analizar y Diseñar los Datos:

Un algoritmo, es un conjunto prescrito de instrucciones o reglas bien definidas,


ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no
generen dudas a quien deba realizar dicha actividad. Partiendo del algoritmo es que se
procede a la construcción en un lenguaje de programación.

A continuación, se muestra el algoritmo básico y la lógica esencial del sistema


informático elaborado:

Caso de uso “Agregar Contacto”

1. El usuario selecciona la opción “añadir contacto”


2. La aplicación comprueba si caben más contactos
2.1. Si no caben muestra un error y finaliza el caso de uso
3. La aplicación muestra una opción que al seleccionarla permite retornar al menú
anterior y permite volver a introducir los datos del nuevo contacto
4. El usuario introduce los datos y pulsa aceptar
5. La aplicación añade el contacto a la agenda
5.1. En el caso que exista otro contacto con el mismo nombre, se notifica el error
y no se añade el nuevo contacto.

Caso de uso “Eliminar Contacto”

1. El usuario selecciona la opción “Eliminar Contacto”


2. La aplicación comprueba que la agenda no este vacía
2.1. Si lo está muestra un mensaje y finaliza el caso de uso
3. La aplicación muestra una ventana que permite introducir el nombre del contacto
4. El usuario introduce el nombre y pulsa aceptar
5. La aplicación busca un contacto con ese nombre
5.1. Si lo encuentra: muestra una ventana indicando ha eliminado el contacto
5.2. Si no lo encuentra: muestra el mensaje “contacto no eliminado”
5.3. El usuario cierra la ventana

Caso de uso “Consultas de Contactos”

1. El usuario seleccionado la opción “consultas” para buscar un contacto ya


almacenado
2. La aplicación comprueba que la agenda no este vacía
2.1. Si lo esta muestra un mensaje y finaliza el caso de uso
3. La aplicación muestra una ventana que permite introducir el nombre del contacto
4. El usuario introduce el nombre y pulsa aceptar
5. La aplicación busca un contacto con ese nombre
5.1. Si lo encuentra: muestra una ventana con los datos del contacto
5.2. Si no lo encuentra: muestra el mensaje “no encontrado”
6. El usuario cierra la ventana

Caso de uso “Actualizar Contactos”

1. El usuario selecciona la opción “Actualizar Contactos”


2. La aplicación comprueba que la agenda no este vacía
2.1. Si lo esta muestra un mensaje y finaliza el caso de uso
3. La aplicación muestra una ventana que permite introducir el nombre del contacto
4. El usuario introduce el nombre y pulsa aceptar
5. La aplicación muestra una ventana que permite modificar los datos del contacto
con el nombre indicado
5.1. Si no existe ningún contacto con ese nombre muestra un mensaje
indicando el error y finaliza el caso de uso
6. El usuario modifica los datos y pulsa aceptar
7. La aplicación modifica los datos del contacto en la agenda

Caso de uso “Mostrar en el orden del primero al último agregado”

1. El usuario selecciona la opción desplegada en el menú “Mostrar en el orden del


primero al último agregado”
2. La aplicación muestra una lista de contactos en el orden descendente: Se muestra
del primer contacto en ser almacenado hasta el último contacto recién agregado.

Caso de uso “Mostrar en el orden del ultimo al primero agregado”:

1. El usuario seleccionado la opción desplegada en el menú “Mostrar en el orden del


ultimo al primero agregado”
2. La aplicación muestra una lista de contactos en el orden descendente: Se muestra
desde el último contacto en ser almacenado hasta el primer contacto recién
agregado.

Caso de uso “Mostrar sin orden”

1. El usuario selecciona la opción desplegada en el menú “Mostrar sin orden”

2. La aplicación muestra una lista de contactos aleatoriamente.

Caso de uso “Salir”

1. El usuario selecciona la opción “Salir”

2. La aplicación muestra una ventana con dos opciones y el siguiente


mensaje “¿Seguro que desea salir?”

2.1. El usuario selecciona la opción “Si”

2.2. El programa se cierra

2.3. El usuario selecciona la opción “No”

2.4. El programa retorna a la venta anterior y muestra el menú principal

El código fuente del sistema, es el conjunto de líneas que representa las


instrucciones que debe seguir el computador para ejecutar dicho programa.
Por tanto, en el código fuente de un programa está descrito su funcionamiento
por completo.

A continuación, se muestra el código fuente que estructura la interfaz de


presentación del sistema en C++

}
do {
cout << endl;
system (CLEAR_SCREEN);
cout << "MEN\351" << endl;
cout << "1.- Registrar Contacto" << endl;
cout << "2.- Consultas" << endl;
cout << "3.- Actualizar Contactos" << endl;
cout << "4.- Eliminar Contacto" << endl;
cout << "5.- Mostrar en el orden del primero al ultimo agregado" << endl;
cout << "6.- Mostrar sin orden" << endl;
cout << "7.- Mostrar en el orden del ultimo al primero agregado" << endl;
cout << "8.- Salir" << endl;
cout << "Seleccione una opci\242n: ";
do

Captures de pantalla de la interfaz de presentación del programa -


usuario:

- Este es el inicio del programa, comenzamos con un comentario de lo que trata el


programa. Seguidamente se declaran las librerías, las funciones de contacto y la
declaración de variables que se ejecutaran en el desarrollo del programa.
- En esta parte del código fuente, mediante el uso del operador lógico “Bool
operator”, es donde el sistema pedirá al usuario que ingrese sus datos para
guardarlos en la variable constante “contacto”
.

- Aquí se muestran las sentencias” if “mediante la condicional o estructura de control”


switch case”, donde se determinará si los datos ingresados por el usuario cumplen
o no con lo requerido por el algoritmo.
- En este caso se denota como se ha guardado satisfactoriamente un
contacto.

- Pero en el siguiente caso a continuación vemos claramente que pasa


cuando el usuario ingresa erróneamente los datos ya preexistentes. Es la tarea que
cumple el condicional “Switch Case” dentro de la secuencia lógica del algoritmo.
Fase III – Construcción

- Estructura Arquitectonica del Software:

El código fuente del sistema, se divide en varias partes que ejecutan determinadas
funciones.

A continuación, se muestra el código del sistema elaborado, el cual se divide de la


siguiente forma:

1. Comentario acerca del sistema

/* Sub-proyecto: Algoritmo y Programación I;


Profesor: Ivan Moreno
Alumnos: Contreras Leonardo, C.I: 25.450.183
Cantor Geiner, C.I: 25.450.286
Espinoza Raul, C.I: 25.357.803
Módulo III. Fecha: 20/07/2014
Aplicación Para Almacenar
Contactos Telefónicos:
*/

2. En la siguiente sección se declaran las librerías usadas en el sistema

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#ifdef __linux__
#include <termios.h>
#include <unistd.h>
#define CLEAR_SCREEN "clear"
int _getch ();
#else
#include <conio.h>
#define CLEAR_SCREEN "cls"
#endif

3. Declaración de las funciones que usara el respectivo sistema. Estas son las
funciones que permiten al sistema verificar, contar, comparar y retornar.

void pause_screen
void Contacto
static void print
static void preorder
static void inorder
static void postord

4. Declaración de la función main para manipular los datos haciendo el llamado al


menú de opciones, el que nos permitirá agregar, consultar, actualizar, eliminar, etc,
asi mismo la sentencia o condicional “while” nos permitirá evaluar si las condiciones
de los datos entrantes cumplen o no cumplen con los parámetros del algoritmo.

int main ()
{
BinaryTree<Contacto> *root=NULL;
Contacto *datum, contacto;
int counter=0, main_option, suboption;
char field[255];
ifstream file_stream (path);
if (file_stream!=NULL)
{
while (read_field (file_stream, field, '\t'))
{
contacto.alias = field;
read_field (file_stream, field, '\t');
contacto.telefono_fijo = field;
read_field (file_stream, field, '\t');
contacto.telefono_movil = field;
read_field (file_stream, field, '\n');
contacto.correo_electronico = field;
root = BinaryTree<Contacto>::insert (root, contacto);
}
file_stream.close();
}

5. Declaración de variables

string alias;
string telefono_fijo;
string
telefono_movil;
string
correo_electronico;

Contacto() {}
~Contacto() {}

6. Uso de los bucles o ciclos condicionales “case” para solicitud de datos y


comparación de valores.
main_option = _getch ();
while (main_option<'1' || main_option>'8');
cout << (char)main_option << endl << endl;
if (root==NULL && main_option!='1' &&
main_option!='8')
{
pause_screen ("No hay registros.\n");
continue;
}
if (main_option<'5')
{
contacto.alias = read_str ("Ingrese el
Alias del contacto");
datum = BinaryTree<Contacto>::search
(root, contacto);
if (datum!=NULL)
{
cout << endl;
Contacto::print (*datum, &counter);
}
}
if (main_option=='1' && datum!=NULL)
cout << "El registro ya existe." << endl;
else if (main_option>='2' &&
main_option<='4' && datum==NULL)
cout << endl << "Registro no encontrado."
<< endl;
else switch (main_option)
{
case '1':
contacto.telefono_fijo = read_str
("Ingrese el telefono fijo");
contacto.telefono_movil = read_str
("Ingrese el telefono movil");
contacto.correo_electronico = read_str
("Ingrese el correo electronico");
root = BinaryTree<Contacto>::insert
(root, contacto);
cout << endl << "Registro agregado
correctamente." << endl;
break;
case '3':
cout << "Men\243 de actualizaci\242n
de campos" << endl;
cout << "1.- telefono fijo" << endl;
cout << "2.- telefono movil" << endl;
cout << "3.- correo electronico" <<
endl;
do {
suboption = read_integer
("Seleccione el n\243mero de campo a
modificar");
if (suboption<1 || suboption>3)
printf ("Opci\242n incorrecta\n");
} while (suboption<1 || suboption>3);
switch (suboption)
{
case 1:
datum->telefono_fijo = read_str
("Ingrese el nuevo telefono fijo");
break;
case 2:
datum->telefono_movil = read_str
("Ingrese el nuevo telefono movil");
break;
case 3:
datum->correo_electronico =
read_str ("Ingrese el nuevo correo electronico");
break;
}
cout << endl << "Registro actualizado
correctamente." << endl;
break;
case '4':
root = BinaryTree<Contacto>::remove
(root, *datum);
cout << "Registro eliminado
correctamente." << endl;
break;
case '5':
counter = 0;
BinaryTree<Contacto>::preorder (root,
&counter,
(void(*)(Contacto&,void*))Contacto::print);
cout << "Total de registros: " <<
counter << "." << endl;
break;
case '6':
counter = 0;
BinaryTree<Contacto>::inorder (root,
&counter,
(void(*)(Contacto&,void*))Contacto::print);
cout << "Total de registros: " <<
counter << "." << endl;
break;
case '7':
counter = 0;
BinaryTree<Contacto>::postorder (root,
&counter,
(void(*)(Contacto&,void*))Contacto::print);
cout << "Total de registros: " <<
counter << "." << endl;
break;
}

7. Uso de sentencias if para suministrar los resultados en el sistema

if (main_option<'5')
{
contacto.alias = read_str ("Ingrese el Alias del contacto");
datum = BinaryTree<Contacto>::search (root, contacto);
if (datum!=NULL)
{
cout << endl;
Contacto::print (*datum, &counter);
}
}
if (main_option=='1' && datum!=NULL)
cout << "El registro ya existe." << endl;
else if (main_option>='2' && main_option<='4' && datum==NULL)
cout << endl << "Registro no encontrado." << endl;
else switch (main_option)
{
case '1':
contacto.telefono_fijo = read_str ("Ingrese el telefono fijo");
contacto.telefono_movil = read_str ("Ingrese el telefono movil");
contacto.correo_electronico = read_str ("Ingrese el correo
electronico");
root = BinaryTree<Contacto>::insert (root, contacto);
cout << endl << "Registro agregado correctamente." << endl;
break;
case '3':
cout << "Men\243 de actualizaci\242n de campos" << endl;
cout << "1.- telefono fijo" << endl;
cout << "2.- telefono movil" << endl;
cout << "3.- correo electronico" << endl;
do {
suboption = read_integer ("Seleccione el n\243mero de
campo a modificar");
if (suboption<1 || suboption>3)
printf ("Opci\242n incorrecta\n");
} while (suboption<1 || suboption>3);
switch (suboption)
{
case 1:
datum->telefono_fijo = read_str ("Ingrese el nuevo
telefono fijo");
break;
case 2:
datum->telefono_movil = read_str ("Ingrese el nuevo
telefono movil");
break;
case 3:
datum->correo_electronico = read_str ("Ingrese el nuevo
correo electronico");
break;
}
cout << endl << "Registro actualizado correctamente." << endl;
break;
case '4':
root = BinaryTree<Contacto>::remove (root, *datum);
cout << "Registro eliminado correctamente." << endl;
break;
case '5':
counter = 0;
BinaryTree<Contacto>::preorder (root, &counter,
(void(*)(Contacto&,void*))Contacto::print);
cout << "Total de registros: " << counter << "." << endl;
break;
case '6':
counter = 0;
BinaryTree<Contacto>::inorder (root, &counter,
(void(*)(Contacto&,void*))Contacto::print);
cout << "Total de registros: " << counter << "." << endl;
break;
case '7':
counter = 0;
BinaryTree<Contacto>::postorder (root, &counter,
(void(*)(Contacto&,void*))Contacto::print);
cout << "Total de registros: " << counter << "." << endl;
break;
}
if (main_option!='8')
pause_screen ("");
} while (main_option!='8');
ofstream output_stream (path);
if (output_stream!=NULL)
{
BinaryTree<Contacto>::inorder (root, &output_stream,
(void(*)(Contacto&,void*))Contacto::print_on_file);
output_stream.close();
}
return EXIT_SUCCESS;
}

template <class T>


BinaryTree<T>* BinaryTree<T>::insert (BinaryTree<T> *node, const T
&datum)
{
if (node==NULL)
node = new BinaryTree<T>(datum);
else if (datum < node->datum)
node->left = insert (node->left, datum);
else
node->right = insert (node->right, datum);
return node;
}

template <class T>


T* BinaryTree<T>::search (BinaryTree<T>* node, const T &datum)
{
return node!=NULL ? (datum==node->datum ? &node->datum :
(datum<node->datum ?
search (node->left, datum) : search (node->right, datum))) : NULL;
}

template <class T>


BinaryTree<T>* BinaryTree<T>::remove (BinaryTree<T> *node, const T
&datum)
{
if (node!=NULL)
{
if (node->datum==datum)
{
BinaryTree<T> *pivot;
if (node->left==NULL)
pivot = node->right;
else if (node->right==NULL)
pivot = node->left;
else
{
for (pivot=node->left; pivot->right!=NULL; pivot=pivot->right);
pivot->right = node->right;
pivot = node->left;
}
node->left=NULL;
node->right=NULL;
delete node;
node = pivot;
}
else if (datum < node->datum)
node->left = remove (node->left, datum);
else
node->right = remove (node->right, datum);
}
return node;
}

template <class T>


void BinaryTree<T>::preorder (BinaryTree<T>* node, void *params, void
(*func)(T&, void*))
{
if (node!=NULL)
{
func (node->datum, params);
preorder (node->left, params, func);
preorder (node->right, params, func);
}
}

template <class T>


void BinaryTree<T>::inorder (BinaryTree<T>* node, void *params, void
(*func)(T&, void*))
{
if (node!=NULL)
{
inorder (node->left , params, func);
func (node->datum, params);
inorder (node->right , params, func);
}
}

template <class T>


void BinaryTree<T>::postorder (BinaryTree<T>* node, void *params, void
(*func)(T&, void*))
{
if (node!=NULL)
{
postorder (node->left , params, func);
postorder (node->right , params, func);
func (node->datum, params);
}
}

De esta forma el usuario interactúa con el sistema al ingresar sus datos, para que este
automáticamente le muestre su respectivo nombre, apellido y el salario que cobrara.
Además de mostrar la nómina total de la empresa. - Desarrollo de unidades de diseño
interactivas:
En esta sección, se muestran los captures durante la ejecución del programa,
notaremos el proceso interactivo de ingreso de datos por parte del usuario y
recepción de datos y/o resultados por parte del sistema, el usuario elige la segunda
opción para consultar los datos de un contacto almacenado.
Aquí podemos constar como el usuario hace uso de la opción 3 para actualizar o
modificar los datos de un contacto preexistente.

En este capture se aprecia como el usuario hace uso de la opción 4 para eliminar un
contacto almacenado.
- Sintaxis completa en general del Código en C++ (Clases, Templates, Funciones
con variables enteras):
Desarrollo de unidades de diseño Batch:

Flujo grama de forma vertical, según Gómez Cejas Guillermo, año 1997.

Según Gómez Cejas, Guillermo. Año 1.997; El Flujo grama o Fluxo grama, es un
diagrama que expresa gráficamente las distintas operaciones que componen un
procedimiento o parte de este, estableciendo su secuencia cronológica. Según su
formato o propósito, puede contener información adicional sobre el método de
ejecución de las operaciones, el itinerario de las personas, las formas, la distancia
recorrida el tiempo empleado, etc.

Es importante, ya que ayuda a designar cualquier representación gráfica de un


procedimiento o parte de este. El flujo grama de conocimiento, como su nombre lo
indica, representa el flujo de información de un procedimiento. En la actualidad el
flujo grama es considerado en la mayoría de empresas o departamentos de
sistemas como uno de los principales instrumentos en la realización de cualquier
método y sistemas.
a): ENTRADA: Grabar en una ficha de un
AGENDA DE archivo cada nombre y número telefónico de
CONTACTO contacto.

b):ELIMINAR: Una ficha del archivo


permanente de datos.
Inicio c): SALIDA: Mostrar en pantalla los datos de
la agenda graficando este proceso:

Mostrar

Contacto:

1- Registrar Contacto
2- Consultas
3- Actualizar Contacto Ejecutar la
4- Eliminar Contacto opción
5- Mostrar en el orden
del primero al elegida
ultimo
6- Mostrar en el orden
del ultimo al
primero
7- Mostrar sin orden
8- Salir
9- Seleccione una
opción

Hay
Opción
SI

No

FIN
- Desarrollo de unidades de diseño manuales:

Diccionario de Datos Según Armarego, 2002.

Como el lenguaje de programación C++ no es orientado a objeto, no posee una


base de datos como tal, de esta manera trabajaremos las unidades de diseño
manuales por medio de las variables que almacenan los datos de forma temporal.

Variables Tipo Descripción


Alias; char [15] (caracter) Nombre de usuario
Telefono fijo; int (entero) Telefono Fijo
Telefono Movil; int (entero) Telefono Movil
Correo char [15] (caracter) Correo Electronico
electronico;

Fase IV – Pruebas

• Funcional:

No se puede medir la calidad del sistema de forma correcta debido a su


naturaleza, de esta manera la certificación se da a los atributos que lo conforman, a
los procesos y a la correcta ejecución de los mismos que garantizaría un buen
sistema.

En tal caso, la correcta codificación de las líneas de código e instrucciones que


se determinan en el programa, el correcto funcionamiento de las funciones, ciclos y
sentencias, todo se ejecuta y genera resultados positivos, lo que nos manifiesta que
es de calidad en nuestro propio juicio.

Cabe destacar, que el usuario final mide la calidad del software según lo que
tenga o no, es en ese sentido que la calidad del software depende de quien la
juzgue. El hecho de que una empresa tenga certificación en calidad de software no
garantiza que su software sea de calidad.
• De Sistema:

Esta prueba se determinó por medio del atributo de calidad ISO 9126:

- Funcionalidad: una vez compilado y ejecutado el programa, se considera que


este está libre de errores, de esta forma el programa elaborado pasa a ser un
sistema funcional, es decir, disponible para uso.

- Confiabilidad: ya que el sistema está funcionando, la confiabilidad define la


capacidad del sistema, la tolerancia a fallas, es decir, la habilidad del sistema para
soportar fallas en sus componentes.

- Facilidad de uso: este sistema es muy sencillo y cuenta con características


bien especificadas para el manejo del usuario.

- Eficiencia: para el funcionamiento efectivo de este sistema, de ante mano se


cumple con los requerimientos propuestos anteriormente, en la fase de análisis y
diseño del proceso.

- Facilidad de mantenimiento: el sistema es fácil de manejar y el lenguaje en


que está programado permite el mantenimiento consecuente del sistema. En
particular, se cuenta con una ventaja en el desarrollo de este sistema, ya que la
empresa donde se implementará el sistema, él encargado dispone de
conocimientos en el área y manejo del programa.

- Portabilidad: este sistema está capacitado para adaptarse a los cambios que
puedan suscitarse en el ambiente o los requerimientos del sistema.

De Aceptación Técnica:

En este nivel de prueba se sometió el programa a condiciones extrema por un


lapso de tiempo llamado periodo de aceptación. El cual tuvo resultado satisfactorios
por lo que ya puede comenzar a funcionar bajo la responsabilidad de inversiones
moto & cars C.A.

Fase V - Producción / Mantenimiento

• Producción

Nos hemos asegurado que el respectivo sistema funciona correctamente, por


medio de diversas pruebas que evalúan y certifican su buen funcionamiento y
ejecución, ya que el principal objetivo es satisfacer las necesidades del cliente y
brindar la máxima confianza al momento de usar la aplicación. Así, de esta manera
se considera el sistema listo para su producción.

• Mantenimiento

Una vez que este sistema está siendo operado, le hacemos seguimiento para
ver cómo está marchando, y evaluamos constantemente su funcionamiento, ya que
de esta forma se pueden solventar necesidades que surjan y si es necesario realizar
algún cambio se procede a hacerlo.

Conclusión

Para finalizar el siguiente trabajo escrito, se puede destacar y hacer mención que se puso
en práctica el uso de las metodologías clásicas dentro del ciclo de vida de los sistemas.
Específicamente se hizo foco en la metodología propuesta por Llorens Fábregas del año
1991, acerca del ciclo de vida de los sistemas de información, la cual consta de 5 fases,
donde cada una de ellas fue implementada y desarrollada de acuerdo al sistema y/o
programa en C++ denominado “Agenda de Contacto” que se elaboró, para la clase final
del sub-proyecto algoritmo y programación I.

Mediante la implementación de esta metodología en esta actividad correspondiente al


módulo III para el sub-proyecto Metodologías del desarrollo de software, se puedo
extraer una amplitud de conocimientos que serán útiles y de gran provecho al momento
de realizar el trabajo de grado.

 REFERENCIAS BIBLIOGRÁFICAS

SENN, James A. (1999) Análisis y Diseño de Sistemas de Información.


Segunda Edición. Editorial McGrawHill. México. Kendall &Kendall, Llorens
Fábregas y, Llorens Fábregas.

Llevar a cabo la tesis de grado.

También podría gustarte