Buscador de Informacion, Ciencia y Tecnologia.

ESTRUCTURA DE DATOS RESUMEN DE CONTENIDOS

Apuntador: Un apuntador es una elemento , que almacena como contenido una dirección de memoria, de otra variable a la que apunta, dicha dirección representa el lugar donde se almacena un dato.

Declaración de Apuntadores:

Ejemplo: int *apunt; // Declaración del apuntador apunt

// Se dice que : "apunt va a apuntar a

// variables de tipo int"

Operaciones con Apuntadores:

  1. Asignación

int a = 15;

int *p, *q;

q = &a;

p = q; /* se asigna la dirección que contiene q a p */

cout<<p; /* imprime la dirección almacenad en p. */

  1. +, -, ++, --

Int p;

p = p + 1; p avanza un entero.

p = p – 2; p retrocede dos enteros.

p++; p apunta al siguiente entero.

p--; p apunta al entero anterior.

  1. Comaparación

int a;

int *b, *c;

if (b + n > c)

b = b +2;

Un kilobytes de memoria equivale a 1,024 bytes.

1 Byte es igual a 8 Bits

Tipo

Datos almacenados

Nº de Bits

Valores posibles (Rango)

Rango usando unsigned

char

Caracteres

8

-128 a 128

0 a 255

int

enteros

16

-32.767 a 32.767

0 a 65.535

long

enteros largos

32

-2.147.483.647 a 2.147.483.647

0 a 4.294.967.295

float

Nums. reales (coma flotante)

32

3,4E-38 a 3,4E38

double

Nums. reales (coma flotante doble)

64

1,7E-307 a 1,7E308

2.1. Variables estáticas

Las variables estáticas son las comúnmente creadas por el programador.

Son creadas o asignadas previa ejecución al programa.

Ej:

Char Mi_Letrica;

Int Mi_Enterito;

Float Mi_Decimalito;

Variables dinámicas

Las variables dinámicas deben su nombre al hecho de que pueden ser creadas

y destruidas durante el tiempo de ejecución de un módulo.

Para el manejo de variables dinámicas se hace indispensable la utilización de

apuntadores, así como de funciones especiales para la asignación y liberación

de la memoria correspondiente a dichas variables.

En el lenguaje C existen entre otras las funciones Malloc() y Free() para la

asignación y liberación de memoria dinámicamente respectivamente.

Igualmente se utilizan los operadores New y Delete

UNIDAD 2. ESTRUCTURAS DINÁMICAS LINEALES

_________________________________

Pilas (stack)

Una pila es un tipo de lista lineal en la cual los elementos a insertar y borrar son de la parte superior de la misma, cima o tope( Top)

"el último elemento en entrar es el primero en salir", en inglés el acrónimo LIFO(Last Input, First Out).

Ejemplos:

La pila es una estructura con numerosas analogías en la vida real: pila de

platos, una pila de monedas, una pila de camisas, una pila de gatos, etc, como

se muestra en la imagen.

4.2. Operaciones básicas con pilas:

Las pilas tienen un conjunto de operaciones muy limitado, sólo permiten las

operaciones de "push" y "pop":

Push: Añadir un elemento al final de la pila.

Pop: Leer y eliminar un elemento del final de la pila.

Capítulo 5. Colas

5.1. Conceptos básicos

Las colas son otro tipo de estructura lineal de datos, similar a las pilas,

diferenciándose de ellas en el modo de insertar/eliminar elementos.

Una cola es una estructura lineal de datos, en la que las eliminaciones se realizan al principio de la lista, frente, y las inserciones se realizan en el otro extremo, final. En las colas el elemento que entró de primero sale también de primero; por ello se conocen como listas FIFO (first-in, first-out, <<primero en entrar, primero en salir>>). Así pues, la diferencia con las pilas reside en el modo de entrada/salida de datos; en las colas las inserciones se realizan al final de la lista, no al principio. Por ello, las colas se usan para almacenar datos que necesitan ser procesados según el orden de llegada.

5.2 Aplicación de las estructuras Lineales tipo Colas

En la vida real se tiene ejemplos numerosos de colas: la cola de un autobús,

cola de un cine, caravana de coches en una calle, etc. En todas ellas el primer

elemento (pasajero, coche, etc) que llega es el primero que sale. Cola en un banco.etc

5.3. Operaciones básicas con colas

De nuevo nos encontramos ante una estructura con muy pocas operaciones

disponibles. Las colas sólo permiten añadir y leer elementos:

· Añadir: Inserta un elemento al final de la cola.

· Leer: Lee y elimina un elemento del principio de la cola.

Las operaciones en detalle que se pueden realizar con una cola son:

· Acceder al primer elemento de la cola.

· Añadir un elemento al final de la cola.

· Eliminar el primer elemento de la cola.

· Vaciar la cola.

· Verificar el estado de la cola: vacía, llena.

Ejemplo visual

colas estructura de datos

6.1 Concepto de Listas

Las listas deacuerdo a su estructura se han dividido en cuatro grandes

categorías:

1.- Listas Simplemente enlazadas

2.- Listas Doblemente enlazadas

3.- Listas Circular simplemente enlazada

4.- Lista circular doblemente enlazada

Listas simplemente enlazadas

Las listas simplemente enlazadas son un conjunto de datos organizados de manera sucesiva.

Las listas generalmente se componen de nodos los cuales se interconectan de manera secuencial, un dato con otro; Cuando una lista esta vacía su valor es nulo o NULL.

Cuando el dato de una lista no contiene un valor se dice que es nulo.

6.3. Operaciones con las listas simplemente enlazadas

Las operaciones que se pueden realizar con listas lineales contiguas son:

1. Insertar, eliminar o localizar un elemento.

2. Determinar el tamaño – número de elementos – de la lista.

3. Recorrer la lista para localizar un determinado elemento.

4. Clasificar los elementos de la lista en orden ascendente o descendente.

5. Unir dos o más listas en una sola.

6. Dividir una lista en varias sublistas.

7. Copiar la lista.

8. Borrar la lista.

6.5. Listas doblemente enlazadas

Una lista doblemente enlazada es una lista lineal en la que cada nodo tiene

dos enlaces, uno al nodo siguiente, y otro al anterior.

6.5.1. Operaciones básicas con listas doblemente enlazadas:

De nuevo tenemos las mismas operaciones sobre este tipo listas:

· Añadir o insertar elementos.

· Buscar o localizar elementos.

· Borrar elementos.

· Moverse a través de la lista, siguiente y anterior.

clip_image0024

6.6. Listas circulares

Las listas circulares son un conjunto de datos organizados de manera secuencial pero a diferencia de las listas simplemente enlazadas, el dato final no apunta a Null, antes bien lo hace al primer elemento de la lista.

clip_image0044

puntero

EJEMPLO DE UNA ESTRUCTURA TURBO C++

 

 

 

 

 

 

 

 

 

 

#include<iostream.h>
#include<stdio.h>
#include<conio.h>

struct Parcial
{
float codigo;
char articulo[50];
int cant;
float vlunit;
float vltotal;

} tienda[1];

main()
{
clrscr();
int x,fila;
window(1,1,80,50);textbackground(BLACK);textcolor(YELLOW);
for(x=1; x<=1; x++)
{
cout<<"pedido # ";
cout<<x;
cout<<"\n";
cout<<"\ndigite el codigo: ";
cin>>tienda[x].codigo;
cout<<"\ndigite el articulo: ";
gets(tienda[x].articulo);
cout<<"\ndigite la cantidad: ";
cin>>tienda[x].cant;
cout<<"\ndigite el valor unitario: ";
cin>>tienda[x].vlunit;
cout<<"\n";
tienda[x].vltotal=tienda[x].cant*tienda[x].vlunit;
}
cout<<"presione cualquier tecla...";
getch();
clrscr();
cout<<"codigo articulo cantidad valor unitario valor total\n";
cout<<"------ -------- -------- -------------- -----------";

fila=4;
for(x=1;x<=1;x++)
{
gotoxy(1,fila);cout<<tienda[x].codigo;
gotoxy(10,fila);cout<<tienda[x].articulo;
gotoxy(22,fila);cout<<tienda[x].cant;
gotoxy(36,fila);cout<<tienda[x].vlunit;
gotoxy(51,fila);cout<<tienda[x].vltotal;
fila=fila+2;
}
getch();
return 0;
}

 

 

Véase También:

Estructura de Datos lo que necesitas saber...

Ejemplo de una Estructura, Inicia en el Mundo de la Estructura de Datos

Ejemplo de una lista en Turbo C++ 3.0

Una lista Simplemente Enlazada, no es muy simple pero ayuda...

Una Lista Doblemente Enlazada corriendo en Turbo C++

Libros y sitios online recomendados excelentes para Aprender C++ y Estructura de Datos

 

EJEMPLO DE LISTAS SIMPLEMENTE ENLAZADAS

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>

typedef
struct f
{
char nombre[30];
char direccion[50];
int edad;
struct f *siguiente;
} Ficha;

void MuestraLista();

Ficha *dato1;
Ficha *dato2;
Ficha *dato3;

void MuestraLista ( Ficha *inicial )
{
if (inicial)
{
cout<<"\nNombre: "<<inicial->nombre;
cout<<"\nDirecci¢n: "<<inicial->direccion;
cout<<"\nEdad: "<<inicial->edad;
MuestraLista ( inicial->siguiente );

}
}

int main()
{
clrscr();

dato1 = (Ficha*) malloc (sizeof(Ficha));
strcpy(dato1->nombre, "Camilo");
strcpy(dato1->direccion, "Calle 70 NÝ 22-35");
dato1->edad = 40;
dato1->siguiente = NULL;

dato2 = (Ficha*) malloc (sizeof(Ficha));
strcpy(dato2->nombre, "Juan");
strcpy(dato2->direccion, "Carrera 8 con calle 23");
dato2->edad = 35;
dato2->siguiente = NULL;
dato1->siguiente = dato2;

dato3 = (Ficha*) malloc (sizeof(Ficha));
strcpy(dato3->nombre, "Sebastian");
strcpy(dato3->direccion, "Calle 32 NÝ 23-45");
dato3->edad = 14;
dato3->siguiente=NULL;
dato2->siguiente=dato3;

cout<<"\nLa lista inicialmente es:\n";
MuestraLista (dato1);

dato1->siguiente=NULL;
dato1->siguiente=dato3;

free(dato2);
cout<<"\nY tras borrar dato2:\n\n";
MuestraLista (dato1);

getch();
return 0;
}

lista doblemente enlazada

#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#define ASCENDENTE 1
#define DESCENDENTE 0
typedef struct _nodo
{
int valor;
struct _nodo *siguiente;
struct _nodo *anterior;
} tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Lista;
/* Funciones con listas: */
void Insertar(Lista *l, int v);
void Borrar(Lista *l, int v);
void BorrarLista(Lista *);
void MostrarLista(Lista l, int orden);
int main()
{
clrscr();
Lista lista = NULL;
pNodo p;
Insertar(&lista, 20);
Insertar(&lista, 10);
Insertar(&lista, 40);
Insertar(&lista, 30);
MostrarLista(lista, ASCENDENTE);
MostrarLista(lista, DESCENDENTE);
Borrar(&lista, 10);
Borrar(&lista, 15);
Borrar(&lista, 45);
Borrar(&lista, 30);
MostrarLista(lista, ASCENDENTE);
MostrarLista(lista, DESCENDENTE);
BorrarLista(&lista);
system("PAUSE");
getch();
return 0;
}
void Insertar(Lista *lista, int v)
{
pNodo nuevo, actual;
/* Crear un nodo nuevo */
nuevo = (pNodo)malloc(sizeof(tipoNodo));
nuevo->valor = v;
/* Colocamos actual en la primera posici¢n de la lista */
actual = *lista;
if(actual) while(actual->anterior) actual = actual->anterior;
/* Si la lista est vac¡a o el primer miembro es mayor que el nuevo */
if(!actual actual->valor > v) {
/* A¤adimos la lista a continuaci¢n del nuevo nodo */
nuevo->siguiente = actual;
nuevo->anterior = NULL;
if(actual) actual->anterior = nuevo;
if(!*lista) *lista = nuevo;
}
else {
/* Avanzamos hasta el £ltimo elemento o hasta que el siguiente tenga
un valor mayor que v */
while(actual->siguiente &&actual->siguiente->valor <= v)
actual = actual->siguiente;
/* Insertamos el nuevo nodo despu‚s del nodo anterior */
nuevo->siguiente = actual->siguiente;
actual->siguiente = nuevo;
nuevo->anterior = actual;
if(nuevo->siguiente) nuevo->siguiente->anterior = nuevo;
}
}
void Borrar(Lista *lista, int v)
{
pNodo nodo;/* Buscar el nodo de valor v */
nodo = *lista;
while(nodo && nodo->valor < v) nodo = nodo->siguiente;
while(nodo && nodo->valor > v) nodo = nodo->anterior;
/* El valor v no est en la lista */
if(!nodo nodo->valor != v) return;
/* Borrar el nodo */
/* Si lista apunta al nodo que queremos borrar, apuntar a otro */
if(nodo == *lista)
if(nodo->anterior) *lista = nodo->anterior;
else *lista = nodo->siguiente;
if(nodo->anterior) /* no es el primer elemento */
nodo->anterior->siguiente = nodo->siguiente;
if(nodo->siguiente) /* no es el £ltimo nodo */
nodo->siguiente->anterior = nodo->anterior;
free(nodo);
}
void BorrarLista(Lista *lista)
{
pNodo nodo, actual;
actual = *lista;
while(actual->anterior) actual = actual->anterior;
while(actual) {
nodo = actual;
actual = actual->siguiente;
free(nodo);
}
*lista = NULL;
}
void MostrarLista(Lista lista, int orden)
{
pNodo nodo = lista;
if(!lista) cout<<"Lista vacia";
nodo = lista;
if(orden == ASCENDENTE) {
while(nodo->anterior) nodo = nodo->anterior;
cout<<"Orden ascendente: ";
while(nodo) {
cout<<nodo->valor;
nodo = nodo->siguiente;
//Universidad Nacional
}
}
else {
while(nodo->siguiente) nodo = nodo->siguiente;
cout<<"Orden descendente: ";
while(nodo) {
cout<<nodo->valor;
nodo = nodo->anterior;
}
}
cout<<"\n";
}

EJEMPLO DE UNA LISTA TURBO C++

 

 

 

 

 

 

 

 

 

 

/****************************************************************************

Nombre: LISTA.C
Utilidad: Muestra el uso de una lista para la gestión dinámica de la memoria.
Autor: Sergio Pacho
Fecha: 17 de septiembre de 1998

Este programa es un ejemplo sobre la utilización de una lista enlazada para
la gestión dinámica de la memoria.

 

****************************************************************************/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>

void insertar(void);
void extraer(void);
void visualizar(void);

struct lista
{
int num;
struct lista *sig;
}*CAB=NULL,*AUX=NULL,*F=NULL,*P=NULL;

main() /* Rellenar, extraer y visualizar */
{
char opc;
do
{
clrscr( );
gotoxy(30,8);
printf("1.- Insertar");
gotoxy(30,10);
printf("2.- Extraer");
gotoxy(30,12);
printf("3.- Visualizar la lista");
gotoxy(30,14);
printf("4.- Salir");
opc=getch( );
switch(opc)
{
case '1':
insertar( );
break;
case '2':
extraer( );
break;
case '3':
visualizar( );
}
}while (opc!='4');
}

/* A continuaci¢n insertaremos el elemento que
vamos a crear en la posici¢n que le corresponda,
teniendo en cuenta que la lista deber quedar
ordenada de menor a mayor.El puntero P comprueba
si el campo num de un elemento es menor que el
campo num del elemento introducido.El puntero
F se quedar apuntando al elemento de la posici¢n
anterior al elemento que hemos insertado */

void insertar(void)
{
AUX=(struct lista *)malloc(sizeof(struct lista));
clrscr( );
printf("Introduce un n£mero: ");
scanf("%d",&AUX->num);
AUX->sig=NULL;
if (CAB==NULL)
CAB=AUX;
else if (CAB->num > AUX->num)
{
AUX->sig=CAB;
CAB=AUX;
}
else
{
P=F=CAB;
while (P->num < AUX->num && P!=NULL)
{
if (P==CAB) P=P->sig;
else
{
P=P->sig;
F=F->sig;
}
}
AUX->sig=F->sig;
F->sig=AUX;
}
}

void extraer(void)
{
int var;
if (CAB==NULL) return;
clrscr( );
printf("Introduce el n£mero a extraer: ");
scanf("%d",&var);
if (CAB->num==var)
{
P=CAB;
CAB=CAB->sig;
free(P);
}
else
{
P=F=CAB;
while (P->num != var && P!=NULL)
{
if (P==CAB) P=P->sig;
else
{
P=P->sig;
F=F->sig;
}
}
if (P==NULL) return;
F->sig=P->sig;
free(P);
}
}

void visualizar(void)
{
if (CAB==NULL) return;
clrscr( );
AUX=CAB;
while (AUX!=NULL)
{
printf("N£mero: %d\n",AUX->num);
AUX=AUX->sig;
}
getch( );
}

 

Véase También:

Estructura de Datos lo que necesitas saber...

Ejemplo de una Estructura, Inicia en el Mundo de la Estructura de Datos

Ejemplo de una lista en Turbo C++ 3.0

Una lista Simplemente Enlazada, no es muy simple pero ayuda...

Una Lista Doblemente Enlazada corriendo en Turbo C++

Libros y sitios online recomendados excelentes para Aprender C++ y Estructura de Datos

ESTADISTICA INFERENCIAL

En el siguiente articulo veremos:

Estadística descriptiva

Inferencia Estadística

Ejemplos

Clasificación de Variables

Variable ordinal y cuantitativa

Tablas de Frecuencias

Tipos de Frecuencias

image3

image6

image9

image12

image15

image18

image21

image24

image27

image30

image33

image36

image39

image42

image45

image48

image51

image54

image57

image60

image63

image66

image69

image72

importancia del diseño de sistemas

CONTENIDO

1. INTRODUCCIÓN……………………………………………………………...3

2. DESARROLLO DEL TRABAJO...................................................................4

3. ENSAYO SOBRE LA IMPORTANCIA DEL DISEÑO...............................4

4. HOJAS DE DISEÑO DE BLOQUES.............................................................6

4.1 CUENTAS POR COBRAR.................................................................7

4.2 ALQUILER DE PELÍCULAS.............................................................8

4.3 BIBLIOTECA......................................................................................9

5. MAPA CONCEPTUAL SOBRE EL DISEÑO.......………………………..10

6. MAPA CONCEPTUAL PARTICIPACION DE LOS USUARIOS EN EL PROCESO DE DISEÑO DE SISTEMAS................................................................11

7. ENSAYO FINALIDAD DE LA CARPETA DE DISEÑO..........................12

8. EJERCICIOS.................................................................................................13

9. MAPA CONCEPTUAL SOBRE LA RESPONSABILIDAD DE LOS USUARIOS Y DEL ANALISTA EN EL MANEJO DE SISTEMAS DESARROLLADO POR USUARIOS FINALES........................................15

11. EJERCICIOS……………………………………………………………….16

12. CONCLUSIONES……………………………………………………….... 20

13. BIBLIOGRAFIA……………………………………………………………….21

INTRODUCCIÓN

De acuerdo a los lineamientos curriculares institucionales el curso de diseño de sistemas su fundamentación teórica se enmarca dentro del campo de formación básica en el área investigativa donde en tales apartados se incluye la responsabilidad de los analistas en el proceso de diseño, responsabilidad de los usuarios etc.

El propósito del diseño es que el estudiante apropie de manera significativa los elementos teóricos fundamentales del diseño de sistemas y desarrolle las competencias pertinentes para contextualizarlos en su campo de formación disciplinar.

La responsabilidad de los usuarios, como ente importante , es fundamental en la formación integral de cualquier diseño, en el sentido del aporte que ésta hace al fortalecimiento de las competencias en el sistema.

Igualmente a la hora de determinar los requerimientos del sistema se deben tener bases investigativas por parte del analista y donde es necesario analizar los hechos que se tienen a la mano.

Por otro lado las responsabilidades tanto del analista como el usuario en el proceso de diseño son de crucial importancia para el desarrollo ideal de un buen sistema.

Igualmente de la carpeta de diseño como elemento que todo diseñador ó analista de sistemas debe guardar simbólicamente en su maleta de documentos.

El presente trabajo tiene estructurado básicamente estos contenidos y ayuda a profundizar en otros con carácter de análisis particular y general.

Tarea: Trabajo colaborativo No. 1

GUIA DE ACTIVIDADES DE TRABAJO COLABORATIVO No. 1

Amigo(a) estudiante.

Esta sección corresponde a TAREA DE TRABAJO COLABORATIVO No. UNO. Esta Tarea, tendrá una ponderación de 50 puntos.

Éxitos.

  1. Realice un ensayo sobre la importancia del diseño en los sistemas de información y de la importancia del papel del analista en el proceso de diseño.

IMPORTANCIA DEL DISEÑO EN LOS SISTEMAS DE INFORMACIÓN E IMPORTANCIA DEL PAPEL DEL ANALISTA EN EL PROCESO DE DISEÑO

El diseño de sistemas tiene gran importancia desde el espacio cotidiano hasta el laboral y profesional, queriendo con esto demostrar que hoy en día es aptamente aplicado desde

lugares como café Internet, rentas de películas, pasando por la mediana empresa con desarrollo de software contable y terminando en las grandes empresas ó monstruos empresariales como IBM (international business machines, big blue), Departamentos de Estado, etc.

Sin duda el diseño de sistemas constituye un papel importante en el desarrollo de software empresarial.

Por otro lado el diseño de sistemas adopta campos como el de la ciencia (investigaciones de comportamientos físicos, meteorológicos, sismológicos etc.) la filosofía (medios abstractos de estructuración, desarrollo y proyección) cuyos contenidos permitan configurar y establecer aquellos elementos que serán utilizados para ofrecer satisfactores necesidades específicas del cliente

Es por tanto que dentro de los objetivos del diseño de sistemas es obligatorio encontrar recursos suficientes para el desarrollo de software en cuyos contenidos explícitos se encuentren los parámetros, establecimientos dirigidos ó encaminados hacia el desarrollo ideal de un producto.

En esta actividad técnica ingeniosa y creativa debe haber argumentos serios pilares bien establecidos a la hora de diseñar determinado sistema, así mismo de la organización de todos los componentes, ubicación y funcionalidad de los mismos. Todo esto con el objetivo de tener un acabado excelente en el producto terminado y que cumpla con los requerimientos establecidos por la organización que solicita el producto, a esto se le suma el ente funcional característico de un buen diseño , y estético dado al agrado y amigabilidad con la nueva interfaz de usuario (GUI).

En cuanto al analista de sistemas es de crucial importancia su papel que indica conocer previamente, como actos de cultura general criterios como:

Presentación: Referente al grado de producción y asimilación representativa de los componentes y su organización, de su mejor distribución actualización y aplicación.

Producción: Como el grado monetario de inversión con referencia a posibles, parámetros viables de diseño y su consejo con respecto a los mismos.

Significación: Asumido los cargos potenciales y posibles del desarrollo del sistema por parte del analista del sistema, como una innovación a posteriori del producto que sea en prototipo o ya en culminación, tendrá como impacto en la economía o el mejoramiento de la organización.

Costos : El analista de sistemas dada su importancia en el análisis de sistemas da un énfasis en el mejoramiento a grado final de la posible implementación del software a un futuro determinado, dando expectativas de la implementación de dicho sistema, terminando en estructuración , organización y eficiencia en el producto acabado , generando innovación y mejoramiento a partir del costo invertido.

Profesional ético: Es por tanto que el analista de sistemas sustituye o suprime la competencia monopolística a un grado de competencia abierta, depurando los grados de negligencia y para esto constituye un papel importante a la hora de coordinar la sana competencia del diseño frente al mercado competitivo de diseño.

Analítico: Como papel fundamental, el analista de sistemas cumple en sus proyectos un grado de análisis que incluye eficiencia en el desarrollo del proyecto como en el producto acabado.

Creativo: Igualmente del papel de creativo imprime mejorar o recrear nuevos eventos que respondan a la exigencia de hacer un software hecho a la medida y en el cual implemente medios de solución alternativos.

Innovador: Como analista de sistemas se debe cumplir con el requisito de la innovación apto para actualizar implementar y distribuir software a la medida del cliente y realizando a la vez una sana competencia referente al mejoramiento del Soft.

Esto requiere reordenar los datos establecidos por el anterior sistema para mejorar su funcionalidad y que se adapte aún mejor a las necedades del cliente.

De acuerdo a lo anterior el papel del diseño de sistemas unido al trabajo del analista de sistemas es de suma importancia, como pilares de fundamento hacia el desarrollo de un buen software.

Igualmente con la evaluación de las distintas alternativas de solución y la especificaciones sumado a unas buenas practicas de diseño se contribuye con efectividad y eficiencia a un producto totalmente terminado que habla por si solo.

2. Elabore una hoja de diseño de bloques de construcción para los siguientes sistemas:

Para partir en el diseño de bloques hay que tener en cuenta un elemento muy importante:

clip_image0024

Nota: “Las entradas y las salidas no son invención del programador, estas existen y hay que investigarlas; Por lo tanto esto es un asunto serio, que requiere suplir necesidades del cliente establecidas y no partir desde cero sin prever aquellos parámetros fijos”.

Cuentas por cobrar

CUENTASPORCOBRAR

  • Alquiler de películas:

HOJADEDISEODEBLOQUES1

• Biblioteca

HOJA DE DISEÑO POR BLOQUES 2

3. Investigue y elabore un mapa conceptual sobre lo que para usted es el “Diseño”.

QUE ES EL DISEÑO MAPA CONCEPTUAL

clic en la imagen para ver mejor

4. Realice un mapa conceptual sobre la participación de los usuarios en el proceso de diseño de sistemas.

PARTICIPACION DE USUARIOS EN DISEÑO DE SISTEMAS

5. Elabore un ensayo sobre la finalidad de la carpeta de diseño.

FINALIDAD DE LA CARPETA DE DISEÑO

La carpeta de diseño tiene como finalidad documentar en forma completa las especificaciones y los requerimientos del sistema.

Ayuda a identificar objetivos, justificaciones y adhesión de los requerimientos necesarios para el estudio de la organización y de los usuarios esto implica la propuesta de desarrollo, además los flujos de con toda la descripción completa del sistema en cuestión utilizando diagramas de flujo de datos los cuales adquieren el control y comportamiento del sistema en estudio.

Igualmente dentro de las finalidades de la carpeta de diseño encontramos los la recopilación y especificación de entradas y salidas, donde se detallan los reportes, documentos y prototipos de pantallas (descripción de la distribución de la interfaz del sistema), recopilado en un solo contenido denominado cuadros de despliegue. Por lo tanto la estructura de los registros constituye un papel importante a la hora de trabajar en el diseño de un sistema y no podía faltar dentro de la carpeta de diseño, con toda la descripción de los datos contenidos en el archivo maestro; Donde se especifican los diagramas relacionados con las bases de datos.

En cuanto a la parte de codificación la carpeta de contenidos nos aporta la representación detallada de los códigos que explican o nos muestran las transacciones, las clasificaciones y las categorías de los eventos ó entidades (el hombre es una entidad compleja, igualmente son entidades los objetos, entidades físicas o entidades conceptuales).

Igualmente de la importancia de las especificaciones de los programas, métodos gráficos(los cuadros y tablas) de los módulos para su reutilidad y todos los factores y entes que hacen parte del software, interfaces más agradables y que trabajan con objetos conjuntamente y sin errores.

Es de suma importancia la generación de los proyectos ejecutables y su puesta en marcha y como objetivo las especificaciones de procedimientos contenidas igualmente en la carpeta de diseño y que planifican los elementos para puesta en marcha del sistema. A esto se le agrega una agenda de horarios para cumplir con lo estipulado en tiempo de desarrollo del software, para minimizar los problemas con el cliente, cumplir con el desarrollo del producto y evitar pérdidas por retrasos.

Así mismo la carpeta de diseño con la activación de los costos permite minimizar gastos adicionales de desarrollo, de la implementación y la puesta en marcha del sistema.

En general la carpeta de diseño simplifica algunas tareas al programador en cuanto a mejor distribución del trabajo para ofrecer calidad, eficiencia y rendimiento en sus productos.

EJERCICIO

Un analista de sistemas planteo los siguientes comentarios con respecto al objetivo de la organización de invitar a que los usuarios participen:

“La participación de los usuarios en el diseño de sistemas de información es un tema que a menudo es difícil de tratar. Sin embargo, cada vez que nosotros lo hemos intentado, encontramos que no es eficaz. Voy a dar varios ejemplos. En varios proyectos, nuestros analistas desarrollaron bosquejos de los formatos de entrada y salida que fueron dados a los usuarios de la aplicación. En cada caso, los usuarios sugirieron modificaciones, las cuales nosotros hicimos. Los nuevos bosquejos fueron regresados a los usuarios para su revisión. El resultado fue que los cambios condujeron a más modificaciones. Cuando las realizamos todas, el diseño final no era mejor que el original, pero ya habíamos perdido varias semanas.

En otra ocasión, discutimos varias veces con los usuarios las funciones de un sistema. Al final, nos quedamos con los requerimientos que propusimos en un principio. Perdimos tiempo de desarrollo y no ganamos nada.

También señalaría otra dificultad. Supongamos que los usuarios sugieren cambios significativos en el diseño que nosotros somos incapaces de efectuar por limitaciones de índole técnica. En este caso, probablemente escucharemos acusaciones señalando que la participación del usuario es sólo un gesto y de que no atenderemos sus sugerencias cuando ellos las hagan. Francamente no podemos ganar.”

• Analice los comentarios expresados por el analista y presente su posición con argumentos sobre estos comentarios.

Análisis

“El resultado fue que los cambios condujeron a más modificaciones. Cuando las realizamos todas, el diseño final no era mejor que el original, pero ya habíamos perdido varias semanas. “

El usuario en muchos casos puede requerir de determinado arreglo o función, pero es el analista de sistemas quien debe sacar a relucir sus dotes de profesional consultor, analista de costos prioridades y en general ir estableciendo casos de uso. Esto con el objetivo de minimizar pérdidas tanto para la empresa anfitriona (por la no implementación del nuevo sistema dentro del espacio de tiempo requerido) y como para la empresa diseñadora del sistema, de todas maneras el analista de sistemas debe tener dentro de su currículo una amplia gama de situaciones que le ayudan a afrontar cada proyecto.

“En otra ocasión, discutimos varias veces con los usuarios las funciones de un sistema. Al final, nos quedamos con los requerimientos que propusimos en un principio. Perdimos tiempo de desarrollo y no ganamos nada.”

Si el usuario tiene afán de iniciar discusiones plantee nuevas reglas de juego, horarios de trabajo, reactivaciones, común acuerdo entre las partes por el producto final entregado,

Todo esto sobre los posibles parámetros que imponga el cliente. Esto con el objetivo de minimizar riñas con el cliente, y de tener una base sólida y por escrito de que se harán nuevos cambios a consentimiento del cliente no importando sus resultados.

Al fin y al cabo el cliente siempre tiene la razón.

“También señalaría otra dificultad. Supongamos que los usuarios sugieren cambios significativos en el diseño que nosotros somos incapaces de efectuar por limitaciones de índole técnica. En este caso, probablemente escucharemos acusaciones señalando que la participación del usuario es sólo un gesto y de que no atenderemos sus sugerencias cuando ellos las hagan. Francamente no podemos ganar.”

Como primera medida se puede observar que el programador debe estar a la vanguardia en la medida de lo posible por actualizar sus conocimientos para así evitar en futuros desarrollos problemas técnicos que no se puedan resolver.

Para este tipo de casos se puede acudir a los elementos razonables y en base a esto se pueden mostrar las características del servicio a ofrecer, mostrando los grados de restricciones para los cuales no se puede acudir al diseño y que el usuario debe tener a consideración, igualmente se le pueden mostrar los beneficios de adoptar otro tipo de organización ( en última instancia, entidades amigas) o una solución alterna al asunto del diseño en cuestión dándole a entender de que se hace todo lo posible por que el cliente quede satisfecho; de la misma manera, no podemos ser ajenos a los problemas que aquejan al diseño en general. Diversos factores como el tipo de país donde se presente el desarrollo del sistema, la tecnología, las mismas disponibilidades del Diseño del Software, en el sentido que a veces aún no se ha corregido ó bugs en la misma IDE de trabajo, y en fin un sin número de situaciones que se pueden presentar de acuerdo a determinadas circunstancias.

Por lo tanto el Analista de sistemas y el grupo de trabajo encargado debe transmitirle un informe pertinente de todo este tipo de situaciones que lamentablemente a veces se salen de la mano pero que el usuario debe tener a modo de información y con consentimiento del desarrollo, de esta manera se evitan posibles vacíos entre la empresa prestadora del servicio y los clientes.

• A la luz de estos comentarios, ¿es buena idea que los usuarios participen en el diseño?

Yo pienso que en general depende del caso en el que se esté realizando el software, ya que se deben encontrar los motivos para determinar que el usuario es apto o no, para participar en el proceso del desarrollo del software. Para poner un ejemplo, supongamos que alguien quiere desarrollar un software de matrices inversas, pero partimos de la premisa de que el programador no tiene ni idea de Software Matemático o su conocimiento es limitado, aquel que pide el servicio del diseño del software matemático es profesor de la misma ó matemático puro, entonces podría caber la pregunta:¿Porqué quebrarme la cabeza identificando parámetros establecidos y que ayudaran al correcto funcionamiento del software ó del sistema teniendo a un “gurú”(especializado en su materia) de las matemáticas?. Creo que si uno desea ser eficiente en términos de tiempo de desarrollo y de calidad de contenidos debe dejar en este caso determinado que el usuario colabore ó participe en el proceso de desarrollo del software.

Ahora bien debería desarrollarse un documento para especificar a los usuarios problema, porque existen y pueden llegar a creer que tienen más conocimiento de los requerimientos del sistema que el mismo programador, dicho en otras palabras “un usuario que hable mucho pero que genere pocas ideas claras concisas y provechosas”.

RESPONSABILIDAD DE USUARIOS Y ANALISTAS

Clic en la imagen para ver mejor

EJERCICIO

Los gerentes de una organización determinan que los analistas de sistemas de la organización supervisen el diseño y desarrollo de todas las aplicaciones de los usuarios, ya sea que éstas se ejecuten en computadores o personales o sobre el sistema de información con los que cuenta la organización.

La organización desea manejar el desarrollo de todas las aplicaciones e insiste en la certificación de la confiabilidad del sistema como requisito indispensable para permitir su uso cotidiano.

Un grupo de usuarios ha objetado la posición de la gerencia. El grupo afirma que se perderán los beneficios que ofrecen las aplicaciones desarrolladas por los usuarios si la gerencia instala procedimientos formales de diseño. Insisten en que la administración del proceso lo sujetará a retrasos y traerá como consecuencia un daño a la utilidad de estos sistemas. Por otra parte, también recalcan que si el grupo de sistemas de información no desea ver una aplicación diseñada o desarrollada, bastará que afirmen que representa un riesgo para las bases de datos de la organización, para descartarla.

• Analice la posición de los usuarios. ¿Está de acuerdo o en desacuerdo con los planteamientos?

En cuanto a la posición de los usuarios podríamos definir que en su situación actual, y por posible observación previa de tales implantaciones de desarrollo de sistemas, manifiestan un grado de descontento que es entendible en la medida que teniendo previa experiencia han objetado que traería retrasos en el tratamiento de la información, la implementación de este nuevo sistema; conlleva en lo entendido hasta el momento hacia la desactivación del usuario como elemento que hace parte del desarrollo por lo tanto se dejaría todo el trabajo a los analistas de sistemas y su punto de vista.

Es por tal motivo que estoy en desacuerdo con la posición de la gerencia, porque se debería ser imparcial en una primera instancia y habría que cimentar primero como funciona la organización con tales medidas, y si los ingresos de la misma tal vez se vean afectados por la implantación de los nuevos parámetros de diseño y actualización.

• Elabore un documento de no más de dos páginas argumentando su decisión.

En este caso preferiría tener más contenido para lanzar juicios subjetivos pero dado el caso argumentare como si este fuese un asunto ideal.

  1. Yo pienso que toda organización bien establecida debe poseer un protocolo de comportamiento para este tipo de situaciones, “situaciones que requieren de estudio temporal”; Igualmente cuando uno se enfrenta a un problema determinado debe tener bases investigativas a partir del personal vinculado al sistema, espacio laboral, entrevistas, pros y contras y en general todo lo concerniente al problema en cuestión.
  2. Toda organización debería tener un grupo de control y trabajo de campo para ver los comportamientos de sus asalariados en torno al sistema.

Este se encargaría de tener un reporte de los comportamientos del sistema con respecto a los usuarios y refrescar o actualizar continuamente los reportes para su posterior análisis y determinación.

Dentro de tales se incluirán fechas de inicio de implementaciones, comentarios de los usuarios, bugs, problemas relacionados con la aplicación del nuevo sistema, elementos vinculados a dichos problemas, registros, etc.

Esto implicaría comportamiento del sistema con respecto a los usuarios, calidad en el manejo de los mismos, grados de dificultad, grados de adaptación al sistema, nivel de eficiencia laboral, competitividad del sistema en base a otros.

Acerca de la calidad en el manejo del sistema podríamos acotar que en base a la investigación este nos debe arrojar una luz de si el sistema en cuestión esta siendo el más apto a aplicar en la organización, ya que nos podría estar mostrando una leve, media, o grave dificultad tanto para la estructura y manejo de la información como para la estabilidad y nivel de competencia de la empresa.

En cuanto a los grados de dificultad cabría señalar que el usuario es el aquel que “conoce y manipula el sistema tal vez todos los días y es el que mejor conoce los achaques y trucos para lidiar con aquel”, por lo tanto sería algo inapropiado eximirlo del estudio y de las recomendaciones para el mismo.

Por otro lado los grados de adaptación al sistema podría estar revelando cuestiones sumamente serias en cuanto al grado de fluidez del nuevo sistema a implementar con respecto a otros que posiblemente se asimilaban más rápido, debido a la calidad organizada que se tiene en cuenta por parte de los usuarios.

Igualmente nos revelaría en cierto modo cuestiones de eficiencia en la compañía, competitividad, alcances, funcionalidad, actualización y en general obtener una compañía que cada vez se consolida como empresa competitiva en el mercado ó no.

  1. Retrasos y errores: Dentro de una organización los retrasos en la entrega de reportes informes, costos, presupuestos, estados de nómina, etc., significan pérdidas millonarias. Es debido a esto que se debe manejar los asuntos con extrema delicadeza y atención ya que esta en juego mucho dinero y la estabilidad de la organización. Es por tanto que si un usuario en su buena fe, indica anomalías en el comportamiento del sistema y en su funcionamiento, debería prestársele atención ya tal vez hay algún error en el sistema y la automatización del mismo.
  1. Negligencia: El analista de sistemas debe ser un profesional ético y no debe individualizar su trabajo y buscar su propio beneficio tal vez con una expresión como “representa un riesgo para las bases de datos de la organización” sin antes agotar todo los recursos disponibles y adelantar las posibles soluciones, porque podría haber un problema de índole técnico y no de solución. Un analista no debe aparentar que se las sabe todas ante todos y ser poco ético, no querría parecer a los pertenecientes al mundo los Hackers, ya que es solo ahí donde desagrada la ignorancia de algunos pero no tienen en cuenta la buena fe, y la intención de los demás. De la misma manera es para los usuarios, esto se tocará en el siguiente apartado.
  1. Usuarios problema: Para identificar a un usuario problema, nos podríamos remitir a sus comportamientos, diríamos es el que habla mucho y no aporta, es el que quiere soluciones pero no aporta, es el que cree que el programador se las debería saber todas.

Cuando un usuario a la hora de implementar una solución solo habla de lo malo pero no lleva a contenidos sólidos, no esta ayudando en nada al programador porque igual en un software lleva registros de comportamiento en el cual se ingresa el error al momento de aparecer.

Pedir solución lo más pronta posible conlleva a un estrés y desagradable clima laboral antes bien aportar posibles arreglos tanto funcionales como puntuales conlleva a un desarrollo más efectivo.

Aquel que piense que el programador es el que se las debería saber todas “cree que el programador es Dios” y “Que error tan grande” sabemos que solo somos creación de el y sabemos que la imperfección está en nosotros. Por lo tanto el programador y en general cualquiera en su campo, no se las sabe todas y no las gana todas. Igualmente la tecnología está en constante avance y progreso por lo tanto el programador ó los analistas de sistemas deben tratar de ir a la vanguardia de los mismos.

Por otro lado hoy en día las tecnologías de la información y comunicación han avanzado mucho igualmente las concernientes a la protección de las bases de datos por tal motivo me atrevería a señalar que toda pequeña, o mediana empresa en su proyecto de afianzarse aún más en el mercado e ir creciendo como tal, debería implementar planes de contingencia con respecto a las bases de datos y el punto a considerar sería que como esta en proceso de crecimiento no debería truncar los proyectos en los cuales intervengan la optimización a futuro de la misma. De igual manera con la utilización de dispositivos Raid en todas sus categorías y dependiendo de la organización, se obtendría un grado de seguridad importante, a esto se le suma la posibilidad de confiar los datos, a una empresa de servicio de protección de las bases de datos de la empresa, y cuyos datos se encuentran fuera del perímetro.

Lo que deberían hacer las empresas entonces es apuntarle a la innovación de sus sistemas, tratar de mejorar e ir a la vanguardia de manera unánime y conjunta con los miembros que conforman la misma.

De esta manera podríamos afirmar que en el caso de los nuevos arreglos a los sistemas de acuerdo a los estudios pertinentes y al grado de funcionalidad de los mismos se debería permitir la intervención de los usuarios.

CONCLUSIONES

De lo anterior podemos concluir:

 A partir del desarrollo de habilidades de pensamiento y de aplicación de los diferentes sistemas y en particular el expuesto podemos generar la activación cognitiva de operaciones mentales que faciliten la apropiación de nociones, definiciones, leyes que constituyen fundamentos de el diseño de sistemas como mecanismo de apropiación hacia los tipos de solución en el diseño.

 Es por tanto que desarrollar habilidades de información en contextos diversos mediante la articulación de lenguajes de comportamiento de los sistemas son entes muy importantes para dinamizar procesos de aprendizaje en diferentes campos de el diseño de sistemas así mismo involucrar todos los parámetros que se incluyen en el diseño de bloques, responsabilidad de los analistas y de los usuarios e igualmente sus interacciones.

Así mismo aportar elementos significativos que contribuyan a desarrollar en aquel que estudia el sistema la habilidad para argumentar, razonar o formular generalizaciones por inducción o deducción a través de la interpretación de los fundamentos estructurales que caracterizan a tales métodos de estudios del diseño de sistemas.

 Desde las incidencias y argumentaciones generadas en los diferentes procesos de activación y habilitación de los incidentes entre Analistas vs. usuarios, y usuarios vs. gerencia encontramos su capacidad para mantenerse equilibradamente y a progreso o desligarse de sus partes para encontrarse con diferentes parámetros que pueden ser tanto positivos como negativos. Esto deja como dechado una aplicación ejemplar que habilita la disposición integral de los diseños de sistemas.

BIBLIOGRAFÍA

Url:

http://es.wikipedia.org/wiki/Dise%C3%B1o