Formas de representar un algoritmo: Lenguaje Natural

Anuncio
REALIZADO POR:
Anderson González
Andrés García
Gregorio López
Jessica Blanco
Tony Da cámara
Joseph Huizi
Marzo 2012
ALGORÍTMICA Y PROGRAMACIÓN TRIMESTRE 1
UNIDAD 1
ALGORITMOS Y PROGRAMAS

Concepto de Algoritmos y Programas.

Lenguaje algorítmico y de programación.

Partes de un algoritmo.

Características y elementos para construir un algoritmo.

Formas de representar un algoritmo: Lenguaje Natural, pseudocódigo y diagrama de
flujo. Traza de un algoritmo (corrida en frío).
DESCRIPCION DE LA UNIDAD 1
ALGORITMOS Y PROGRAMAS
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. Dados un estado inicial y una entrada,
siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.
Un algoritmo es el medio por el que se explica cómo puede resolverse un
problema, mediante aproximaciones paso a paso. Se puede formular de muchas formas
con el cuidado de que no exista ambigüedad.
CARACTERISTICAS DE LOS ALGORITMOS
Las principales características de los algoritmos son:

El algoritmo debe ser sencillo e indicar el orden de realización de cada paso

Un algoritmo debe estar definido.

El algoritmo de ser finito.
Un algoritmo describe la transformación de una entrada en la salida
La entrada se refiere a algo que existe y es utilizado por el algoritmo para
transformarlo en los resultados que uno planifica.
LENGUAJE DE ALGORÍTMICA Y PROGRAMACIÓN

Lenguaje máquina: Todo se programa con 1 y 0, que es lo único que entiende el
ordenador.
Ventaja: No necesita ser traducido.
Inconveniente: La dificultad, la confusión, para corregir errores, es propia de cada
máquina.

De bajo nivel o ensamblador: Se utilizan mnemotécnicos (abreviaturas).
Ventaja: No es tan difícil como el lenguaje máquina.
Inconvenientes: Cada máquina tiene su propio lenguaje, necesitamos un proceso de
traducción.

El programa escrito en ensamblador se llama programa fuente y el programa que
se obtiene al ensamblarlo se llama programa objeto.

Lenguajes de alto nivel: Los más cercanos al lenguaje humano.
PARTES DE UN ALGORITMO
Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir:
entrada, proceso y salida.

Entrada: Corresponde al insumo, a los datos necesarios que requiere el proceso
para ofrecer los resultados esperados.

Proceso: Pasos necesarios para obtener la solución del problema o la situación
planteada.

Salida: Resultados arrojados por el proceso como solución.
En el ejemplo del algoritmo de la sumatoria de los dos números, tenemos:
Entrada: Valores de de las variables A y B.
Proceso: Asignar a la variable Suma, el valor de A mas el valor de B.
Salida: Impresión del valor de la variable Suma, que contiene la sumatoria de los
valores de A y B.
CARACTERÍSTICAS Y ELEMENTOS PARA CONSTRUIR UN ALGORITMO
VARIABLES
Son elementos que toman valores específicos de un tipo de datos concreto. La
declaración de una variable puede realizarse comenzando con var. Principalmente,
existen dos maneras de otorgar valores iniciales a variables:
1. Mediante una sentencia de asignación.
2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read').
Estructuras secuenciales
La estructura secuencial es aquella en la que una acción sigue a otra en secuencia.
Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente
y así sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso
de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el
nombre de la variable que recibe el valor. La asignación se puede clasificar de la
siguiente forma:
1. Simples: Consiste en pasar un valor constante a una variable (a ← 15)
2. Contador: Consiste en usarla como un verificador del número de veces que se
realiza un proceso (a ← a + 1)
3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)
4. De trabajo: Donde puede recibir el resultado de una operación matemática que
involucre muchas variables (a ← c + b*2/4).
FORMAS DE REPRESENTAR UN ALGORITMO: LENGUAJE NATURAL, PSEUDOCÓDIGO Y
DIAGRAMA DE FLUJO
Los algoritmos pueden ser expresados de muchas maneras, incluyendo
al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre
otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar
pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural.
Dichas expresiones son formas más estructuradas para representar algoritmos; no
obstante, se mantienen independientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:
1. Descripción de alto nivel: Se establece el problema, se selecciona un modelo
matemático y se explica el algoritmo de manera verbal, posiblemente con
ilustraciones y omitiendo detalles.
2. Descripción formal: Se usa pseudocódigo para describir la secuencia de pasos
que encuentran la solución.
3. Implementación: Se muestra el algoritmo expresado en un lenguaje de
programación específico o algún objeto capaz de llevar a cabo instrucciones.
También es posible incluir un teorema que demuestre que el algoritmo es correcto,
un análisis de complejidad o ambos.

Diagrama de flujo
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos
conectados con flechas para indicar la secuencia de instrucciones y están regidos
por ISO.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que
abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son
usados como introducción a los algoritmos, descripción de un lenguaje y descripción de
procesos a personas ajenas a la computación.

Pseudocódigo
El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una
descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural
con algunas convenciones sintácticas propias de lenguajes de programación, como
asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es
utilizado para describir algoritmos en libros y publicaciones científicas, y como
producto intermedio durante el desarrollo de un algoritmo, como los |diagramas de
flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos
descritos en pseudocódigo requieren menos espacio para representar instrucciones
complejas.
El pseudocódigo está pensado para facilitar a las personas el entendimiento de un
algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una
implementación. Programadores diferentes suelen utilizar convenciones distintas, que
pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin
embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o
utilizar un entorno de programación específico, y es a la vez suficientemente
estructurado para que su implementación se pueda hacer directamente a partir de él.
Así el pseudodocódigo cumple con las funciones antes mencionadas para
representar algo abstracto los protocolos son los lenguajes para la programación.
Busque fuentes más precisas para tener mayor comprensión del tema.

Sistemas formales
La teoría de autómatas y la teoría de funciones recursivas proveen modelos
matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son
la máquina de Turing, máquina de registro y funciones μ-recursivas. Estos modelos son
tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o
ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de
cualquier implementación.

Implementación
Muchos algoritmos son ideados para implementarse en un programa. Sin embargo,
los algoritmos pueden ser implementados en otros medios, como una red neuronal, un
circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se
diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de
multiplicación tradicional,
el algoritmo
de
Euclides,
lacriba
de
Eratóstenes y
muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.
Traza de un algoritmo (corrida en frío)
La traza de un algoritmo (o programa) indica la secuencia de acciones
(instrucciones) de su ejecución, así como, el valor de las variables del algoritmo (o
programa) después de cada acción (instrucción).
UNIDAD 2
ESTÁNDARES DE CALIDAD EN EL DISEÑO DE ALGORITMOS
Y CONSTRUCCIÓN DE PROGRAMAS

Introducción a los estándares de calidad.

Forma de trazabilizar un algoritmo.

Formas y técnicas de documentar algoritmos y programas.

Introducción a la elaboración del manual del sistema, usuario y programas.

Técnicas de escritura y pruebas de algoritmos y programas.
DESCRIPCION DE LA UNIDAD 2
INTRODUCCION A LOS ESTANDARES DE CALIDAD
Sin importar cualquiera que sea el tipo de software a ser desarrollado sea de
sistemas (Son programas que sirven a otros programas en el trabajo de desarrollo como
compiladores editores, tiempo real(software encargado de analizar datos del mundo en
forma real talos como análisis de datos, control autorizado monitoreo de datos),gestión
a esta categoría se incluyen el software comercial a nivel empresarial nominas,
inventarios),ingeniería y científicos(es software que posee un amplio manejo numérico
empleado en biología, astronomía, CAD),comportado (software que se encuentra
residente en memoria, tales como: controles automáticos en los vehículos, sistema
operativo), computación personal (software comercial de uso local como procesadores
de texto,hojaselectrocnicas,navegadoresweb,calendarios,agendas,recetarios) inteligencia
artificial (software de procesamiento especial sistemas expertos. Sistemas basados en el
conocimiento, generalmente no usan algoritmos numéricos) .Todos los tipos de
software mencionados requieren que los analistas, diseñadores y desarrolladores
apliquen características y elementos de calidad para que se logren productos a las
necesidades del usuario, estas necesidades s comienzan a encontrar un camino de
solución a través de la aplicación de elementos de calidad, así se presentan dos de los
más valiosos como son eficiencia y la eficacia.
El uso eficiente y eficaz de la tecnología de los computadores es un objetivo
que aun esta distante.
Referencia bibliográfica donde puede encontrarse esta información más detallada:
http://erickjoseluis.blogspot.com/2011/04/introduccion-los-estandares-de-calidad.html
FORMA DE TRAZABILIZAR UN ALGORITMO
ESTÁNDARES DE CALIDAD EN EL DISEÑO DE ALGORITMOS Y
CONSTRUCCIÓN DE PROGRAMAS
Todos los tipos de software a ser desarrollados requieren un control de calidad,
sea software de sistemas (Son programas que sirven a otros programas en el trabajo de
desarrollo como compiladores, editores), ingeniería y científico (es software queposee
un amplio manejo numérico usado en biología, astronomía, CAD), computación
personal (software comercial de uso local como procesadores de texto,hojas
electrónicas, navegadores web, calendarios, agendas, recetarios), inteligencia artificial
(software de procesamiento especial sistemas expertos, sistemas basados en el
conocimiento, algoritmos no numéricos).
Hoy en día hay muchos programadores pero no todos desarrollan sus programas
con calidad, a este tipo de productos se les llama software basura, algunos ni cuentan
con un respaldo del programador, o simplemente no tiene un soporte de calidad que se
adapte al usuario. Por eso se presentan dos de los más valiosos controles de calidad,
como son la eficiencia y la eficacia. La ingeniería del software pretende utilizar los
recursos computacionales de tal manera que se produzcan soluciones eficientes y
eficaces a los problemas informáticos, el éxito de un proyecto.
Construcción de un programa
El desarrollo de software es un proceso por el cual, dado un problema, se encuentra un
programa (o un conjunto de programas) que lo resuelva eficientemente.
Análisis del Problema
Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
Los datos de entrada. Cuál es la información que se desea producir (salida), los métodos
y fórmulas que se necesitan para procesar los datos. Una recomendación muy practica
es el que nos pongamos en el lugar de la computadora y analicemos que es lo que
necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.
Niveles de construcción de un programa
Programas de bajo nivel:
Son programas que explotan las características propias de la computadora por ejemplo
rutinas graficas, manejos de puertos, interfaces con el usuario, etc. Con este tipo de
programas no puede seguirse estrictamente las fases del diseño y generalmente son
rutinas que deben ser optimizadas, aun sacrificando su claridad (suelen ser rutinas que
solo
estudiaran
especialistas).
Programas de alto nivel:
Son programas que entregan resultados independientemente de la maquina. Para
construirlos hay que enlazar herramientas ya disponibles. En este tipo de programas
conviene seguir estrictamente las fases del diseño y generalmente no deben ser
optimizadas, ya que requiere claridad para que las entienda un no especialista. Para
facilitar el proceso de mantenimiento, hay que evitar mezclar niveles al construir
rutinas.
INTRODUCCIÓN A LOS ESTÁNDARES DE CALIDAD
En algunos momento se definió a la Calidad como: Lo que se hace bien y a la
primera, concepto erróneo ya que, no se puede determinar la calidad de un servicio,
producto o proceso, tomando en cuenta solo el aspecto de desarrollo, olvidando por
completo al proceso de depuración que inherentemente involucra una serie de
corrección de errores, por lo que, la definición de calidad esta mas allá de la
observación de una parte de dicho proceso. La mayoría de los clientes busca calidad al
mejor precio, sin embargo, lo que puede ser excelente para algunos, no lo es para otros.
Cuando un individuo adquiere un producto o servicio, lo hace para satisfacer una
necesidad, pero siempre espera que la nueva adquisición funcione como lo esperado, o
al menos como se lo prometieron en el anuncio publicitario. Muchas veces la calidad se
paga, justificando de esta forma el dicho de que lo barato sale caro.
El significado de calidad puede adquirir múltiples interpretaciones, ya que todo
dependerá del nivel de satisfacción o conformidad del cliente. Sin embargo, las
calidades el resultado de un esfuerzo arduo, se trabaja de forma eficaz para poder
satisfacer el deseo del consumidor. Dependiendo de la forma en que un producto o
servicio sea aceptado o rechazado por los clientes, podremos decir si éste es bueno o
malo. Muchas veces el nivel de calidad se mide de acuerdo a la reacción y preferencias
del cliente. Desde el mismo momento en que éste llega al establecimiento comercial,
sabe exactamente qué va a comprar y dónde ubicarlo, va directo al lugar donde se
encuentra el producto de su preferencia. En ocasiones, no encontrará lo que está
buscando y por tanto se decidirá por otro producto de mayor o menor precio, sin
embargo, cuando su nivel de preferencia se afinca en una determinada marca, el cliente
prefiere seguir buscando en otros establecimientos en vez de resolverse con un producto
sustitutivo.
FORMAS DE TRAZABILIZAR UN ALGORITMO
La traza de un Algoritmo se puede definir como la ejecución manual de forma
secuencial de las sentencias que lo componen.
La función principal que posee realizar la traza de un algoritmo es la de
comprobar que éste funciona correctamente o para realizar la etapa de depuración en la
que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar su
eficacia y velocidad.
Formas de representar un algoritmo:
* Pseudocódigo: Es una técnica para el diseño de programas que permite definir las
estructuras de datos.
* Diagrama De Flujo: Es una técnica que representa de forma grafica los algoritmos,
aunque su empleo ha disminuido considerablemente por la aparición de los lenguajes de
programación.
*Diagrama N-S: también conocido como diagrama de Chapín es una técnica de
especificación de algoritmos que combina la descripción textual, propia del
pseudocódigo, con la representación gráfica del diagrama de flujo.
FORMAS Y TÉCNICAS DE DOCUMENTAR UN ALGORITMO Y UN
PROGRAMA
Son comentarios, etiquetas de texto, que facilitan la comprensión del programa
Documentación
La documentación del programa es fundamental para diseñadores y usuarios .En
pseudocódigo solo se documentarán los algoritmos internamente, esto es, se efectuarán
comentarios de ciertas acciones o grupos de acciones para permitir al diseñador o al
equipo del diseño releer el algoritmo con facilidad. Para documentar internamente un
algoritmo en pseudocódigo se empleará la doble barra () y a continuación el texto o la
frase explicativa.
Al ejecutar el algoritmo, este texto a la derecha de la debe ser ignorado, pues no
constituye a una acción algorítmica.
Documentar el código de un programa es añadir suficiente información como
para explicar lo que hace, punto por punto, de forma que no sólo los ordenadores sepan
qué hacer, sino que además los humanos entiendan qué están haciendo y por qué.
Porque entre lo que tiene que hacer un programa y cómo lo hace hay una distancia
impresionante: todas las horas que el programador ha dedicado a pergeñar una solución
y escribirla en el lenguaje que corresponda para que el ordenador la ejecute ciegamente
.Documentar un programa no es sólo un acto de buen hacer del programador por aquello
de dejar la obra rematada. Es además una necesidad que sólo se aprecia en su debida
magnitud cuando hay errores que reparar o hay que extender el programa con nuevas
capacidades o adaptarlo a un nuevo escenario. Hay dos reglas que no se deben olvidar
nunca:

Todos los programas tienen errores y descubrirlos sólo es cuestión de tiempo y
de que el programa tenga éxito y se utilice frecuentemente

Todos los programas sufren modificaciones a lo largo de su vida, al menos todos
aquellos que tienen éxito.
Por una u otra razón, todo programa que tenga éxito será modificado en el
futuro, bien por el programador original, bien por otro programador que le
sustituya. Pensando en esta revisión de código es por lo que es importante que el
programa se entienda: para poder repararlo y modificarlo.
INTRODUCCIÓN A LA ELABORACIÓN MANUAL DE USUARIO
Manual De Usuario
Expone los procesos que el usuario puede realizar con el sistema implantado. Para
lograr esto, es necesario que se detallen todas y cada una de las características que
tienen los programas y la forma de acceder e introducir información. Permite a los
usuarios conocer el detalle de qué actividades ellos deberán desarrollar para la
consecución de los objetivos del sistema. Reúne la información, normas y
documentación necesaria para que el usuario conozca y utilice adecuadamente la
aplicación desarrollada.
Objetivos
Que el usuario conozca cómo preparar los datos de entrada.
Que el usuario aprenda a obtener los resultados y los datos de salida.
Servir como manual de aprendizaje.
Servir como manual de referencia.
Definir las funciones que debe realizar el usuario.
Informar al usuario de la respuesta a cada mensaje de error.
Pasos a seguir para definir como desarrollar el manual de usuario.
Identificar los usuarios del sistema: personal que se relacionará con el sistema.
Definir los diferentes tipos de usuarios: se presentan los diferentes tipos de usuarios que
usarían el sistema. Ejemplo: usuarios directos, indirectos.
Definir los módulos en que cada usuario participará: Se describen los módulos o
procesos que se ejecutarán por cada usuario en forma narrativa breve y clara.
Importancia Del Manual De Usuario
El Manual de Usuario facilita el conocimiento de:
Los documentos a los que se pueden dar entrada por computadora.
Los formatos de los documentos.
Las operaciones que utiliza de entrada y salida de los datos.
El orden del tratamiento de la computadora con los datos introducidos.
El momento en que se debe solicitar una operación deseada.
Los resultados de las operaciones realizadas a partir de los datos introducidos.
Al elaborar el Manual de Usuario, hay que tener en cuenta a quién va dirigido es decir,
el manual puede ser manejado desde el director de la empresa hasta el introductor de
datos. Por consiguiente, debe redactarse de forma clara y sencilla para que lo entienda
cualquier tipo de usuario.
Contenido
Diagrama general del sistema
Muestra en forma condensada el flujo general de la información y de las actividades que
se realizan en el sistema. Proporciona una visión general del sistema. Representar los
diagramas utilizando para ello diagramas de bloques.
Diagrama particular detallado.
Presentar gráficamente todos los pasos que se efectúen dentro del departamento usuario
a quien está dirigido este manual. Deben especificarse los archivos de entrada, salida,
los resultados, revisiones y procesos manuales.
Explicación Genérica De Las Fases Del Sistema
En este punto se explica en forma específica y detallada todas las operaciones que
aparecen representadas en forma gráfica en el diagrama particular. Se analizan cada una
de las fases señalando:
El proceso principal que se desarrolla.
La entrada de la información.
La obtención de un resultado parcial.
El envío de información a otra dependencia.
Instalación Del Sistema
La instalación del sistema proporciona detalles completos sobre la forma de instalar el
sistema en un ambiente particular.
Iniciación Al Uso Del Sistema
En este punto se explica cómo iniciarse en el sistema y cómo se pueden utilizar sus
cualidades comunes. Esta documentación debe decir al usuario cómo salir de un
problema cuando las cosas funcionan mal.
Manual De Referencia
Es el documento definitivo de cara al usuario y debe ser completo. Describe con detalle
las cualidades del sistema y su uso, los informes de error generados y las situaciones en
que surgen esos errores.
Dependiendo del sistema, los documentos al usuario se pueden proporcionar por
separado o reunidos en varios volúmenes. Los sistemas de ayuda en línea evitan que el
usuario pierda tiempo en consultas manuales.
Caducidad De Documento Fuente Y Destino Final
Como el usuario trabajará con documentos fuentes, éstos podrán tener un período de
retención y un destino especificado.
TÉCNICAS DE ESCRITURA Y PRUEBAS DE ALGORITMOS Y PROGRAMAS



Lenguaje Natural
Diagramas de Flujo
PseudoCòdigo
Diagramas de Flujo
Se basan en la utilización de diversos símbolos para representar operaciones
específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan
por medio de flechas para indicar la secuencia de operación.
Pseudocódigo
Es una descripción de un algoritmo de programación informático de alto nivel
compacto e informal que utiliza las convenciones estructurales de un lenguaje de
programación verdadero, pero que está diseñado para la lectura humana en lugar de la
lectura en máquina, y con independencia de cualquier otro lenguaje de programación.
Lenguaje natural
Es el lenguaje hablado o escrito por humanos para propósitos generales de
comunicación. Son aquellas lenguas que han sido generadas espontáneamente en un
grupo de hablantes con propósito de comunicarse, a diferencia de otras lenguas, como
puedan ser una lengua construida, los lenguajes de programación o los lenguajes usados
en el estudio de la lógica formal, especialmente la lógica matemática.
UNIDAD 3
DATOS Y ENTIDADES PRIMITIVAS

Concepto y diferencia entre dato e información, tipos de datos.

Los Operadores: Concepto y tipos de operadores.

Las Expresión: concepto, tipos y evaluación de expresiones, Los Identificadores:
Concepto, Reglas de escritura, las variables: clasificación de variables según su
contenido (numéricas, lógicas y alfanuméricas) y su uso (de trabajo, contador y
acumulador), constantes.
DESCRIPCIÓN DE LA UNIDAD 3
Tipos de Datos:
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter,
tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del
conjunto de valores que puede tomar una variable
Tipos de Datos Simples:
Datos Numéricos: Permiten representar valores escalares de forma numérica, esto
incluye a los números enteros y reales. Este tipo de datos permiten realizar operaciones
aritméticas comunes.
Datos Lógicos: Son aquellos que solo pueden tener dos valores, cierto o falso, ya que
representan el resultado de una comparación entre otros datos, numéricos o
alfanuméricos.
Datos Alfanuméricos: Es una secuencia de caracteres alfanuméricos que permiten
representar valores identificables de forma descriptiva, esto incluye nombre de
personas, direcciones, etc. Es posible representar números como alfanuméricos, pero
estos pierden su propiedad matemática, es decir, no es posible hacer operaciones con
ellos. Este tipo de datos se representan encerrados entre comillas.
OPERADORES Y OPERANDOS
Operadores: Son elementos que relacionan de forma diferente, los valores de una o más
variables y/o constantes. Es decir, los operadores nos permiten manipular valores.
EXPRESIONES
Las expresiones son combinaciones de constantes, variables, símbolos de operación,
paréntesis y nombres de funciones especiales.
EVALUACIÓN DE EXPRESIONES
Como ya sabemos la sintaxis en lógica es la forma correcta de escribir una
fórmula y la semántica es lo que significa. Como en lógica solamente tenemos dos
valores una fórmula solamente puede ser verdadera o falsa. Para determinar su valor
seguimos las reglas simples que dimos en las definiciones básicas de acuerdo a su tabla
de verdad. Esto lo hacemos mediante interpretaciones. Una interpretación de una
fórmula es un conjunto de valores que se les asignan a sus proposiciones atómicas.
Al interpretar una fórmula lo que finalmente vamos a obtener es un valor de
verdad, bien sea verdadero o falso. Pero para poder encontrarlo muchas veces el proceso
en laborioso porque puede estar formada por varias proposiciones atómicas.
Primeramente se le asignan valores de verdad a los átomos y se puede encontrar el valor
de la expresión.
PARA MAS INFORMACION CONSULTA EN:
http://www.mitecnologico.com/Main/EvaluacionDeExpresiones
¿Qué son los identificadores?
La mayoría de los elementos de un algoritmo escrito en pseudocódigo se diferencian entre sí
por su nombre. Por ejemplo, los tipos de datos básicos se nombran como:
entero, real, lógico y carácter
Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a un
elemento de un algoritmo (o programa). Por ejemplo, el tipo de dato entero hace referencia a
un tipo de dato que es distinto a todos los demás tipos de datos, es decir, los valores que
puede tomar un dato de tipo entero, no son los mismos que los que puede tomar un dato de
otro tipo.
Los identificadores entero, real, logico y caracter están predefinidos, forman parte del lenguaje
algorítmico. No obstante, en un algoritmo también pueden existir identificadores definidos por
el programador. Por ejemplo, un algoritmo puede utilizar variables y constantes definidas por
el programador. Además, los algoritmos también se deben nombrar mediante un identificador.
En pseudocódigo, a la hora de asignar un nombre a un elemento de un algoritmo, se debe de
tener en cuenta que todo identificador debe cumplir unas reglas de sintaxis. Para ello, en
nuestro pseudocódigo CEE (C en Español), vamos a seguir las mismas reglas de sintaxis que
existen en lenguaje C:
1. Consta de uno o más caracteres.
2. El primer carácter debe ser una letra o el carácter subrayado (_), mientras que, todos
los demás pueden ser letras, dígitos o el carácter subrayado (_). Las letras pueden ser
minúsculas o mayúsculas del alfabeto inglés. Así pues, no está permitido el uso de las
letras 'ñ' y 'Ñ'.
3. No pueden exitir dos identificadores iguales, es decir, dos elementos de un algoritmo
no pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador
no pueda aparecer más de una vez en un algoritmo.
De la segunda regla se deduce que un identificador no puede contener caracteres
especiales, salvo el carácter subrayado (_). Es importante resaltar que las vocales no
pueden llevar tilde ni diéresis.
Ejemplo 1: Algunos identificadores válidos que pueden ser definidos por el
programador son:
numero
dia_del_mes
PINGUINO1
_ciudad
Z
LAS VARIABLES
En programación, una variable es un espacio de memoria reservado para almacenar un
valor que corresponde a un tipo de dato soportado por el lenguaje de programación. Una
variable es representada y usada a través de una etiqueta (un nombre) que le asigna un
programador o que ya viene predefinida.
Por ejemplo, en la variable de nombre "num", se almacena el número 8 (de tipo entero).
De forma genérica, para utilizarla y sumarle un uno se debería programar: num = num
+ 1.
Una variable puede ser del tipo boleano, entero, decimal de coma flotante, caracter,
cadena de texto, arreglo, matriz, tipo definido por el usuario, etc. Estos son tipos de
datos.
Una variable, por lo general, como su nombre lo indica, puede variar su valor durante la
ejecución del programa. Dependiendo del lenguaje de programación usado, también
puede cambiar el tipo de dato que almacena.
CONSULTAR EN: http://www.alegsa.com.ar/Dic/variable.php
TIPOS DE VARIABLES
Las variables pueden ser de los siguientes tipos: (El número indicado en segundo lugar indica el
número de Bytes que ocupa en memoria.)
Booleana (2) Admite los valores 0 y 1, o True (verdadero) y False (falso)
Byte (1) Números enteros, en el rango de 0 a 255
Integer (2) Números enteros en el rango de -32768 a 32767
Long (4) Números enteros en el rango de -2147483648 a 2147483647
Single (4) Punto flotante, simple precisión
Doble (8) Punto flotante, doble precisión.
Currency (8) Entero, con punto decimal fijo (Típico de monedas)
String (*) Cadenas alfanuméricas de longitud variable o fija
Date (8) Fechas
Objet (4) Referencia a objetos
Variant (**) Otros tipos de datos
Una variable tipo String ocupa el mismo número de bytes que caracteres tenga la cadena.
Una variable tipo Variant ocupa 16 bytes si se trata de un número y 22 bytes + longitud de la
cadena si se trata de un dato tipo cadena de caracteres.
Existen también variables definidas por el usuario (Ya verá la sentencia Type). En este tipo de
variables se pueden introducir muchos datos de distinto tipo. Los bytes necesarios para
almacenar esa variable dependerán de los datos que se hayan definido.
Dentro de las variables Objet (variables que se refieren a objetos) existe una gran variedad que
a estas alturas del curso no debemos complicarnos con ellas. Pero para adelantar algo,
veremos que una variable puede ser del tipo Form - Formulario - , tipo Picture, etc. etc.
Cada tipo de variable ocupa unos determinados bytes. Si no se define una variable, VB toma
como tipo por defecto para la variable el tipo Variant. Este tipo ocupa mas bytes que, por
ejemplo, un integer. Si el tipo de dato que vamos a introducir en una variable es un integer, y
no la hemos declarado como tal, VB asumirá para esa variable que es del tipo Variant, lo que le
llevará a gastar más bytes de memoria (16) que los que necesitaría (2) si la hubiésemos
declarado previamente. Si esa variable va a estar en el rango de 0 a 255, y no declaramos
previamente que la variable va a ser del tipo Byte, o la declaramos como integer, p. e.,
estamos desperdiciando memoria RAM y posiblemente, retardando la ejecución del programa.
Lo mismo podemos decir del resto de las variables, y lo importante que es definirlas y
definirlas bien.
PARA MAS INFORMACION CONSULTAR EN:
http://javier-campusomega.blogspot.com/2009/03/tipos-de-variables.html
UNIDAD 4
METODOLOGÍA PARA EL ANÁLISIS Y PLANTEAMIENTO DE PROBLEMAS

Identificación del Problema.

Identificación de los datos necesarios (entradas).

Identificación de los datos a obtener (salidas).

Descripción de las operaciones a utilizar (cálculos).

Descripción de los pasos para llegar a la solución (procesos).
DESCRIPCION DE LA UNIDAD 4
METODOLOGÍA PARA LA CONSTRUCCIÓN DE PROGRAMAS.
Presentaremos de forma muy general los principales pasos que se deben seguir para
resolver problemas aplicando técnicas de programación. Esta metodología será
desarrollada a lo largo de todo el curso, en la medida que se estudien las restantes
unidades del mismo.
FORMULACIÓN Y ANÁLISIS DEL PROBLEMA
Consiste en entender de qué se trata el problema planteado y esbozar su posible
solución, concluyendo con una clara definición de tres aspectos: 1º qué es lo que nos
piden, es decir, definición del resultado o solución deseada (para qué). 2º cómo obtener
lo que nos piden (qué hacer). 3º qué necesitamos para obtener los resultados pedidos
(con qué). Esto último nos facilitará la construcción de lo que denominaremos
Especificación Funcional.
- Especificación Funcional: Consiste en determinar las funciones que se van a realizar
(qué hacer) y sus respectivas entradas (con qué) y salidas (para qué):
Donde: entrada son los argumentos (variables o constantes) que se requieren para
resolver un problema, salida son los resultados (argumentos) que se desean obtener una
vez resuelto el problema y proceso es el procedimiento(s) u operación(es) que deben
efectuarse sobre las entradas para obtener las salidas deseadas.´
- Especificación de los Argumentos o Parámetros: Consiste en la documentación de los
argumentos o parámetros (sean estos de entrada, salida o intermedios) requeridos en la
solución del problema, mediante la elaboración de una tabla que contemple los
siguientes aspectos:
- Establecimiento de Restricciones y Atributos: Consiste en determinar bajo qué
restricciones se ha de operar y cuales son las medidas de rendimiento y calidad que debe
tener el sistema (programa).
DISEÑO
Consiste en diseñar cómo hace el programa la tarea solicitada. En forma general
consiste en dividir el programa en subprogramas y cada subprograma en módulos.
El criterio de descomposición más utilizado es el de tipo funcional, el cual produce una
estructura jerárquica en la que cada módulo ejecuta una o más funciones y para cada
módulo se produce una especificación de programa o módulo, la cual contiene lo
siguiente:
Nombre del Programa o Módulo.
Función que desarrolla. Parámetros o Argumentos.
Parámetros o Argumentos de Entrada.
Parámetros o Argumentos de Salida.
Estructura de Datos Requerida.
Lenguaje de Programación.
Algoritmo.
Donde ALGORITMO es un conjunto finito de pasos en secuencia que indican como se
resuelve un determinado problema.
UNIDAD 5
PROGRAMACIÓN ESTRUCTURADA

Teoremas de la programación estructurada.

Estructuras de control

Estructuras de decisión: concepto, tipos y sintaxis: Condicional, simples, dobles,
múltiples, anidadas y selectivas.

Estructuras de control iterativas: Concepto y tipos, Ciclo Mientras y Repetir: sintaxis y
métodos para salir del ciclo. Ciclo para: Sintaxis. Ciclos anidados.
DESCRIPCION DE LA UNIDAD 5
TEOREMAS D ELA PROGRAMACIÓN ESTRUCTURADA
La programación estructurada es una técnica para escribir programas
(programación de computadora) de manera clara. Para ello se utilizan únicamente tres
estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción
o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB
o múltiples RETURN).
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las
necesidades de programación existentes en los años 1960, principalmente debido a las
aplicaciones gráficas, por lo que las técnicas de programación estructurada no son
suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación
orientada a objetos y el desarrollo de entornos de programación que facilitan la
programación de grandes aplicaciones.
A finales de los años 1970 surgió una nueva forma de programar que no solamente daba
lugar a programas fiables y eficientes, sino que además estaban escritos de manera que
facilitaba su comprensión posterior.
El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que
todo programa puede escribirse utilizando únicamente las tres instrucciones de control
siguientes:

Secuencia

Instrucción condicional.

Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas y
aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio
de estructuras de control, éstas pueden ser construidas mediante las tres básicas citadas.
ESTRUCTURAS DE CONTROL
Estructura secuencial
Una estructura de programa es secuencial si las instrucciones se ejecutan una tras otra, a
modo de secuencia lineal, es decir que una instrucción no se ejecuta hasta que finaliza la
anterior, ni se bifurca el flujo del programa.
Ejemplo:
INPUT x
INPUT y
auxiliar= x
x= y
y= auxiliar
PRINT x
PRINT y
Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable
auxiliar, intermedia.

1º Se guarda una copia del valor de x en auxiliar.

2º Se guarda el valor de y en x, perdiendo su valor anterior, pero se mantiene
una copia del contenido en auxiliar.

3º Se copia a y el valor de auxiliar, que es el valor inicial de x.

El resultado es el intercambio de los valores entre x e y, en tres operaciones
secuenciales.
Estructura selectiva o de selección
La estructura selectiva permite que la ejecución del programa se bifurque a una
instrucción (o conjunto) u otra/s, según un criterio o condición lógica establecida, sólo
uno de los caminos en la bifurcación será el tomado para ejecutarse.
Ejemplo:
IF a > b THEN
PRINT a ; " es mayor que " ; b
ELSE
PRINT a ; " no es mayor que " ; b
END IF
La instrucción selectiva anterior puede presentar uno de dos mensajes: a es mayor que
b o a no es mayor que b, según el resultado de la comparación entre a y b; si el
resultado de a > b es verdadero, se presenta el primer mensaje, si es falso se exterioriza
el segundo. Las palabras clave IF, THEN, ELSE, y END IF; constituyen la propia
estructura de la instrucción condicional (palabra reservadas), proporcionada por el
lenguaje, el usuario no debe utilizar sus nombres salvo para este fin. El caso ejemplo se
ha codificado en BASIC.

IF señala el comienzo de la instrucción condicional, y se espera que después
siga la condición lógica de control de la instrucción.

THEN señala el fin de la condición, y después estará la instrucción a ejecutar si
la condición es verdadera.

ELSE es opcional, le sigue la instrucción que se ejecutará si la condición es
falsa.

END IF indica el final de la estructura, luego de ésta el programa seguirá su
curso.
Ampliando un poco el ejemplo anterior, con estructuras anidadas:
IF a > b THEN
PRINT a ; " es mayor que " ; b
ELSEIF a < b THEN
PRINT a ; " es menor que " ; b
ELSE
PRINT a ; " es igual que " ; b
END IF
Este ejemplo permite considerar situaciones en las que se tiene más de dos alternativas.
En este caso se ha considerado tres, pero hay situaciones en las que deben considerarse
más casos y para ellos se puede repetir las veces que sea necesario la opcional ELSEIF.
Estructura iterativa
Un bucle iterativo o iteración de una secuencia de instrucciones, hace que se repita su
ejecución mientras se cumpla una condición, el número de iteraciones normalmente está
determinado por el cambio en la condición dentro del mismo bucle, aunque puede ser
forzado o explícito por otra condición.
Ejemplo:
a= 0
b= 7
DO WHILE b > a
PRINT a
a= a + 1
LOOP
Esta instrucción tiene tres palabras reservadas WHILE, DO y LOOP.

DO WHILE: señala el comienzo del bucle ("haga mientras") y después de estas
palabras se espera la condición lógica de repetición, si la condición es verdadera
pasa el control al cuerpo del bucle, en caso contrario el flujo salta directamente
al final de la estructura, saliendo de la misma.

LOOP: señala el final del cuerpo de la estructura de bucle.
El bucle mientras, se repite mientras la condición sea verdadera, esta condición se
comprueba o chequea antes de ingresar al cuerpo del bucle, por lo que el mismo puede
que no se ejecute nunca (cuando la condición es falsa desde un principio) o bien que se
repita tantas veces como resulte y mientras la condición sea cierta.
En el ejemplo se tienen definidas dos variables a y b, que al iniciarse el bucle contienen
los valores a=0 y b=7.
La condición del bucle es b > a.
Si a=0 y b=7. la condición es verdadera, en el cuerpo del bucle se escribe el
valor de a en pantalla y luego se incrementa esa variable en una unidad.
Entonces pasa a ser a=1 y b=7.
... (se repite la secuencia)
...
Cuando a=6 y b=7. la condición sigue siendo verdadera, se escribe el valor de a
en pantalla y se incrementa en una unidad.
Cuando se llega a que a=7 y b=7. Entonces la condición ya resulta falsa y la
instrucción WHILE finaliza, saliendo por LOOP.
La salida por pantalla de este ejemplo es 0 1 2 3 4 5 6, y se iteró 7 veces.
El lenguaje utilizado en el ejemplo (BASIC), además de tener otras del tipo iterativas,
permite utilizar la misma estructura indicada, pero de la siguiente forma:
a= 0
b= 7
WHILE b > a
PRINT a
a= a + 1
WEND
Que es absolutamente análoga, en éste formato la palabra reservada WEND marca el fin
del bucle y no se utiliza ni DO ni LOOP.
Estructuras de control
En lenguajes de programación, las estructuras de control permiten modificar el flujo
de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:

De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-ThenElse y Select-Case)

Ejecutar un grupo de sentencias mientras exista una condición (Do-While)

Ejecutar un grupo de sentencias hasta que exista una condición (Do-Until)

Ejecutar un grupo de sentencias un número determinado de veces (For-Next)

Etc
Todas las estructuras de control tienen un único punto de entrada y un único punto de
salida. Las estructuras de control se puede clasificar en : secuenciales, iterativas y de
control avanzadas. Esto es una de las cosas que permite que la programación se rija por
los principios de la programación estructurada.
Los lenguajes de programación modernos tienen estructuras de control similares.
Básicamente lo que varía entre las estructuras de control de los diferentes lenguajes es
su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.
Tipos de estructura de control
Algunas estructuras de control en el lenguaje Java
Antecedentes
El término "estructuras de control", viene del campo de la ciencia computacional.
Cuando se presentan implementaciones de Java para las estructuras de control, nos
referimos a ellas con la terminología de la Especificación del lenguaje Java, que se
refiera a ella como instrucciones.
Ejecución secuencial
Pero por lo general las instrucciones se ejecutan una después de la otra, en el orden en
que están escritas, es decir, en secuencia. Este proceso se conoce como ejecución
secuencial.
Transferencia de control
En Java, como en otros lenguajes de programación por excelencia como C y/o C++, el
programador puede especificar que las siguientes instrucciones a ejecutarse tal vez no
sea la siguiente en secuencia. Esto se conoce como transferencia de control. Hay que
tener en cuenta que la instrucción goto es una palabra reservada pero no se utiliza ni se
recomienda. Un programa bien estructurado no necesita de esta instrucción. Si sabes
programar no utilizaras goto.
Estructuras de decisiones simples y dobles:
http://webdelprofesor.ula.ve/ingenieria/gilberto/pr1/08_EstructurasDeDecision.pdf
PROGRAMACIÓN EN C++ ITERACIONES Y DECISIONES
Para mas información visita:
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Iteraciones_y_deci
siones
UNIDAD 6
PROGRAMACIÓN MODULAR

Funciones y procedimientos: Definición y Declaración.

Ámbito de variables: Datos locales y globales.

Llamada de una función y pase d parámetros.
DESCRIPCIÓN DE LA UNIDAD 6
Funciones y procedimientos: Definición y Declaración:
http://altair.lcc.uma.es/clases/laboratorio/curso200102/tema4.pdf
Procedimientos y funciones en C++
http://www.lcc.uma.es/~pastrana/LP/curso0506/Practica05/P05_05.pdf
ÁMBITO DE VARIABLES
Existe una clasificación de las variables, según dónde y cómo se declaren:

Variables locales o automáticas: son las que se declaran en el interior de un
bloque y valen solo allí. Solamente tienen visibilidad dentro de ese bloque y su
valor se pierde al finalizar éste. Estas variables se crean al entrar a ejecutarse el
bloque en el stack, y desaparecen al finalizar; esto hace que de llamada en
llamada de una misma función puedan ocupar distintas posiciones en la
memoria, y por lo tanto no conservan su valor.

Variables externas o globales: Son definidas fuera de las funciones, y ocupan
una posición de memoria fija. Para usarlas dentro de una función debo
declararlas (explícita o implícitamente). Como externa (forma explícita) o por el
contexto (forma implícita). La declaración es implícita si la declaración de la
variable se encuentra antes en el archivo. Hay que tener en cuenta que estas
variables pueden ser modificadas desde cualquier función, y por lo tanto
aumenta la posibilidad de modificar inadvertidamente su valor.

Variables estáticas: son permanentes y privadas a la función que las declara.
Una variable estática global, es privada al archivo donde se la define. Una
variable estática declarada dentro de una función, trabaja como una variable
automática, con la diferencia que como ocupa un lugar permanente y fijo en la
memoria, guarda su valor de llamada en llamada. Una función es normalmente
externa, pero declarada estática es privada al archivo que la declara.
VISITA ESTE SITIO PARA MAYOR INFORMACIÓN:
http://www.ib.cnea.gov.ar/~servos/CursoC/ambitode.htm
PASÓ DE PARAMTROS A UNA FUNCIÓN:
http://webdelprofesor.ula.ve/ingenieria/amoret/pd1/clase14.pdf
UNIDAD 7
TÉCNICAS DE MANTENIMIENTO DE PROGRAMAS

Técnica de prueba caja negra.

Reingeniería de programas.
TÉCNICA DE PRUEBA CAJA NEGRA
Algunos de los métodos empleados en las pruebas de caja negra son los siguientes:

Métodos de prueba basados en grafos : en este método se debe entender los
objetos (objetos de datos, objetos de programa tales como módulos o
colecciones de sentencias del lenguaje de programación) que se modelan en el
software y las relaciones que conectan a estos objetos. Una vez que se ha llevado
a cabo esto, el siguiente paso es definir una serie de pruebas que verifiquen que
todos los objetos tienen entre ellos las relaciones esperadas. En este método:
1. Se crea un grafo de objetos importantes y sus relaciones.
2. Se diseña una serie de pruebas que cubran el grafo de manera que se
ejerciten todos los objetos y sus relaciones para descubrir errores.
Beizer describe un número de modelados para pruebas de comportamiento que
pueden hacer uso de los grafos:
Modelado del flujo de transacción. Los nodos representan los pasos de alguna
transacción (por ejemplo, los pasos necesarios para una reserva en una línea
aérea usando un servicio en línea), y los enlaces representan las conexiones
lógicas entre los pasos (por ejemplo, vuelo.información.entrada es seguida de
validación /disponibilidad.procesamiento).
Modelado de estado finito. Los nodos representan diferentes estados del
software observables por el usuario (por ejemplo, cada una de las pantallas que
aparecen cuando un telefonista coge una petición por teléfono), y los enlaces
representan las transiciones que ocurren para moverse de estado a estado (por
ejemplo, petición-información se verifica durante inventario-disponibilidadbúsqueda y es seguido por cliente-factura-información-entrada).
Modelado de flujo de datos. Los nodos objetos de datos y los enlaces son las
transformaciones que ocurren para convertir un objeto de datos en otro.
Modelado de planificación. Los nodos son objetos de programa y los enlaces
son las conexiones secuenciales entre esos objetos. Los pesos de enlace se usan
para especificar los tiempos de ejecución requeridos al ejecutarse el programa.
Gráfica Causa-efecto. La gráfica Causa-efecto representa una ayuda gráfica en
seleccionar, de una manera sistemática, un gran conjunto de casos de prueba.
Tiene un efecto secundario beneficioso en precisar estados incompletos y
ambigüedades en la especificación.
Un gráfico de causa-efecto es un lenguaje formal al cual se traduce una
especificación. El gráfico es realmente un circuito de lógica digital (una red
combinatoria de lógica), pero en vez de la notación estándar de la electrónica, se
utiliza una notación algo más simple. No hay necesitad de tener conocimiento de
electrónica con excepción de una comprensión de la lógica boleana (entendiendo
los operadores de la lógica y, o, y no).

Partición equivalente: Pressman, presenta la partición equivalente como un
método de prueba de caja negra que divide el campo de entrada de un programa
en clases de datos de los que se pueden derivar casos de prueba. Un caso de
prueba ideal descubre de forma inmediata una clase de errores que, de otro
modo, requerirían la ejecución de muchos casos antes de detectar el error
genérico. La partición equivalente se dirige a la definición de casos de prueba
que descubran clases de errores, reduciendo así el número total de casos de
prueba que hay que desarrollar.
Una clase de equivalencia representa un conjunto de estados válidos o no
válidos para condiciones de entrada. Típicamente, una condición de entrada es
un valor numérico específico, un rango de valores, un conjunto de valores
relacionados o una condición lógica.
El objetivo de partición equivalente es reducir el posible conjunto de casos de
prueba en uno más pequeño, un conjunto manejable que evalúe bien el software.
Se toma un riesgo porque se escoge no probar todo. Así que se necesita tener
mucho cuidado al escoger las clases.
La partición equivalente es subjetiva. Dos probadores quienes prueban un
programa complejo pueden llegar a diferentes conjuntos de particiones.
En el diseño de casos de prueba para partición equivalente se procede en dos
pasos :
1. Se identifican las clases de equivalencia. Las clases de equivalencia son
identificadas tomando cada condición de entrada (generalmente una
oración o una frase en la especificación) y repartiéndola en dos o más
grupos.
Es de notar que dos tipos de clases de equivalencia están identificados:
las clases de equivalencia válidas representan entradas válidas al
programa, y las clases de equivalencia inválidas que representan el resto
de los estados posibles de la condición (es decir, valores erróneos de la
entrada).
2. Se define los casos de prueba. El segundo paso es el uso de las clases de
equivalencia para identificar los casos de prueba. El proceso es como
sigue: se asigna un número único a cada clase de equivalencia. Hasta que
todas las clases de equivalencia válidas han sido cubiertas por los casos
de prueba, se escribe un nuevo caso de prueba que cubra la clase de
equivalencia válida. Y por último hasta que los casos de prueba hayan
cubierto todas las clases de equivalencia inválidas, se escribe un caso de
la prueba que cubra una, y solamente una, de las clases de equivalencia
inválidas descubiertas.
3.

Análisis de valores límite: los errores tienden a darse más en los límites del
campo de entrada que en el centro. Por ello, se ha desarrollado el análisis de
valores límites (AVL) como técnica de prueba. El análisis de valores límite lleva
a una elección de casos de prueba que ejerciten los valores límite.
El análisis de valores límite es una técnica de diseño de casos de prueba que
completa a la partición equivalente. En lugar de seleccionar cualquier elemento
de una clase de equivalencia, el AVL lleva a la elección de casos de prueba en
los extremos de la clase. En lugar de centrarse solamente en las condiciones de
entrada, el AVL obtiene casos de prueba también para el campo de salida.
Condiciones sublímite. Las condiciones limite normales son las más obvias de
descubrir. Estas son definidas en la especificación o son evidentes al momento
de utilizar el software. Algunos límites, sin embargo, son internos al software,
no son necesariamente aparentes al usuario final pero aún así deben ser probadas
por el probador. Estas son conocidas como condiciones sublímites o condiciones
límite internas. Una condición sublímite común es la tabla de caracteres ASCII,
por ejemplo, si se está evaluando una caja de texto que acepta solamente los
caracteres AZ y az, se debe incluir los valores en la partición inválida justo
«debajo de» y «encima de» esos caracteres de la tabla ASCII, [", y {.

Prueba de la tabla ortogonal : hay aplicaciones donde el número de
parámetros de entrada es pequeño y los valores de cada uno de los parámetros
está claramente delimitado. Cuando estos números son muy pequeños (por
ejemplo, 3 parámetros de entrada tomando 3 valores diferentes), es posible
considerar cada permutación de entrada y comprobar exhaustivamente el
proceso del dominio de entrada. En cualquier caso, cuando el número de valores
de entrada crece y el número de valores diferentes para cada elemento de dato se
incrementa, la prueba exhaustiva se hace impracticable.
La prueba de la tabla ortogonal puede aplicarse a problemas en que el dominio
de entrada es relativamente pequeño pero demasiado grande para posibilitar
pruebas exhaustivas. El método de prueba de la tabla ortogonal es
particularmente útil al encontrar errores asociados con fallos localizados -una
categoría de error asociada con defectos de la lógica dentro de un componente
software.
La prueba de tabla ortogonal permite proporcionar una buena cobertura de
pruebas con bastantes menos casos de prueba que en la estrategia exhaustiva.

Adivinando el error: dado un programa particular, se conjetura, por la intuición
y la experiencia, ciertos tipos probables de errores y entonces se escriben casos
de prueba para exponer esos errores. Es difícil dar un procedimiento para esta
técnica puesto que es en gran parte un proceso intuitivo y ad hoc.
La idea básica es enumerar una lista de errores posibles o de situaciones
propensas a error y después escribir los casos de prueba basados en la lista. Por
ejemplo, la presencia del valor 0 en la entrada de un programa es una situación
con tendencia a error. Por lo tanto, puede ser que se escriba los casos de prueba
para los cuales los valores particulares de la entrada tienen valor 0 y para qué
valores particulares de la salida se colocan de manera forzada a 0.
Información extraída de:
http://gemini.udistrital.edu.co/comunidad/grupos/arquisoft/fileadmin/Estudiantes/Prueb
as/HTML%20-%20Pruebas%20de%20software/node28.html
REINGENIERIA DE PROGRAMAS
Reingeniería del software se puede definir como: “modificación de un producto
software, o de ciertos componentes, usando para el análisis del sistema existente
técnicas de Ingeniería Inversa y, para la etapa de reconstrucción, herramientas de
Ingeniería Directa, de tal manera que se oriente este cambio hacia mayores niveles de
facilidad en cuanto a mantenimiento, reutilización, comprensión o evaluación.”
Cuando una aplicación lleva siendo usada años, es fácil que esta aplicación se vuelva
inestable como fruto de las múltiples correcciones, adaptaciones o mejoras que han
podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar
un cambio se producen efectos colaterales inesperados y hasta de gravedad, por lo que
se hace necesario, si se prevé que la aplicación seguirá siendo de utilidad, aplicar
reingeniería a la misma.
Entre los beneficios de aplicar reingeniería a un producto existente se puede incluir:
* Pueden reducir los riegos evolutivos de una organización.
* Puede ayudar a las organizaciones a recuperar sus inversiones en software.
* Puede hacer el software más fácilmente modificable
* Amplía las capacidades de las herramientas CASE
* Es un catalizador para la automatización del mantenimiento del software
* Puede actuar como catalizador para la aplicación de técnicas de inteligencia
artificial para resolver problemas de reingeniería
La reingeniería del software involucra diferentes actividades como son:
* Análisis de inventarios
* Reestructuración de documentos
* Ingeniería inversa
* Reestructuración de programas y datos
* Ingeniería directa con la finalidad de crear versiones de programas ya existentes
que sean de mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.
Para mas información acerca del tema visita: http://cnx.org/content/m17438/latest/
Descargar