domingo, 24 de julio de 2011

Programacion Orientada a Objetos (POO)

POO

PEQUEÑA RESEÑA HISTÓRICA:

Cuando las computadoras se inventaron, la programación se realizaba con instrucciones binarias de máquina de modo que se cargaban a memoria a través de un conjunto de interrupciones o a través de un teclado numérico.



A medida que avanzo la tecnología el problema comenzó a resolverse con la aparición de un traductor llamado ensamblador, el cual convertía estos programas en código de máquina.
La creación de lenguajes de alto nivel, utilizaban la programación estructurada, lo cual resolvió muchos problemas que se presentaban a la hora de realizar la programación de una aplicación. pero conforme avanzo la complejidad de estas aplicaciones estas se tornaban incontrolables, además de ser pocas seguras e inestables; es por eso que se dio paso a la creación de una nueva manera de programación llamada 'Programación Orientada a Objetos'.

¿QUÉ ES POO? Tengo las siguientes definiciones sobre lo que es la programación orientada a objetos:
·        La programación orientada a objetos es un nuevo medio de organizar código y datos que asegura un control creciente sobre la complejidad del proceso del desarrollo de software.
·        La programación orientada a objetos es una técnica o estilo de programación que utilizan objetos como bloque esencial de construcción.
·        Es un paradigma de programación que permite una representación más directa del mundo real en el código a partir de unidades modularizables y reutilizables.
La programación orientada a objetos esta basada en tres pilares fundamentales, que son:



1 OBJETOS:

·        Un objeto es una unidad que contiene datos y funciones que operan sobre esos datos como miembros de clases; a los elementos de un objeto se los llama miembros; las funciones que operan sobre los objetos se denominan métodos.
·        Un objeto es un ente o concepto, real o abstracto que pertenece a una colección o clase, el objeto se instancia con un evento de creación. Pasando a pertenecer a una clase determinada desde ese mismo instante. El objeto por el hecho de pasar a pertenecer a una clase posee la misma estructura y comportamiento que el resto de los objetos de la clase.

2 HERENCIA:

·        Característica que diferencia a una programación estructurada ya que una clase puede heredar las funciones miembro como su estructura de datos a otra clase (sub-clase).
·        La herencia es una propiedad que permite a los objetos construirse a partir de otros objetos. le herencia  permite definir nuevas clases a partir de clases ya existentes.
Existen dos tipos de herencia llamadas simples y múltiples, las cuales se caracterizan de la siguiente manera:

2.1 HERENCIA SIMPLE:

Es aquella en la que cada clase derivada hereda una única clase; herencia simple se refiere además de que cada clase tiene un solo antecesor, pero cada clase base puede tener muchos descendientes.




2.2 HERENCIA MÚLTIPLE:

Es aquella en la cual una clase derivada tiene mas de una clase base.




3 POLIMORFISMO:

Es la cualidad de tener más de una forma. En el aspecto de la programación orientada a objetos el polimorfismo se refiere que una misma operación puede tener diferente comportamiento en diferentes objetos. En otras palabras diferentes objetos reaccionan al mismo mensaje de modo diferente.

ABSTRACCIÓN:

Se refiere al manejo complejo de problemas de negocios identificando los objetivos concretos que envuelve estos problemas.

ENCAPSULAMIENTO:

Se refiere a la ocultación e implementación interna de una abstracción de un objeto particular.

VENTAJAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS:


·        Las iteraciones sub-siguientes le POO son más rápidos y más fáciles de realizar a diferencia de emplear un desarrollo convencional porque las ediciones están más localizadas.
·        Las iteraciones son menores porque se descubren y se corrigen más problemas durante el desarrollo que durante la implementación del proyecto.


Programación Estructurada

Programación Estructurada.



INTRODUCCIÓN

La computadora automática debe su derecho a existir, su utilidad, precisamente a su capacidad de efectuar vastos cálculos que no pueden realizar los seres humanos. Deseamos que la computadora efectúe lo que nunca podríamos hacer nosotros, y la potencia de las maquinas actuales es tal, que inclusive los cálculos pequeños, por su tamaño, escapan al poder de nuestra imaginación limitada.

Sin embargo debemos organizar el calculo de manera tal que nuestros limitados poderes sean suficientes para asegurar que se establecerá el efecto deseado. Esta organización incluye la composición de los programas.

Los avances en la tecnología siempre van parejos con progresos en los lenguajes de programación y con nuevas ayudas para simplificar el uso del computador, con lo cual un numero mayor de usuarios se beneficia del. Pero la necesidad de hacer programas para resolver problemas específicos quizás nunca desaparecerá.


CONCEPTO DE PROGRAMACIÓN ESTRUCTURADA

EL creciente empleo de los computadores ha conducido a buscar un abaratamiento del desarrollo des software, paralelo a la reducción del costo del hardware obtenido gracias a los avances tecnológicos. Los altos costos del mantenimiento de las aplicaciones en producción normal también han urgido la necesidad de mejorar la productividad del personal de programación.

En la década del sesenta salieron a la luz publica los principios de lo que más tarde se llamo Programación Estructurada, posteriormente se libero el conjunto de las llamadas "Técnicas para mejoramiento de la productividad en programación" (en ingles Improved Programming Technologies, abreviado IPTs), siendo la Programación Estructurada una de ellas.
Los programas computarizados pueden ser escritos con un alto grado de estructuración, lo cual les permite ser mas fácilmente comprensibles en actividades tales como pruebas, mantenimiento y modificación de los mismos. Mediante la programación Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificación del mismo desde su inicio hasta su terminación en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lógica establecida por el programador, como es la situación habitual con codificaciones desarrolladas bajo otras técnicas.

EN programación Estructurada los programadores deben profundizar mas que lo usual al procederá realizar el diseño original del programa, pero el resultado final es más fácil de leer y comprender, el objetivo de u programador profesional al escribir programas de una manera estructurada, es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados.

EL resultado de aplicar la sistemática y disciplinada manera de elaboración de programas establecida por la Programación Estructurada es una programación de alta precisión como nunca antes había sido lograda. Las pruebas de los programas, desarrollados utilizando este método, se acoplan mas rápidamente y el resultado final con programas que pueden ser leídos, mantenidos y modificados por otros programadores con mucho mayor facilidad.

DEFINICIONES


Programación Estructurada es una técnica en la cual la estructura de un programa, esto es, la interpelación de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lógicas de control:

Secuencia: Sucesión simple de dos o mas operaciones.
Selección: bifurcación condicional de una o mas operaciones.
Interacción: Repetición de una operación mientras se cumple una condición.

Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información.

Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una pagina o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamas se ejecuten, se denominan programas propios. Cuando varios programas propios se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un programa propio.

La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.


Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea.

Tipos de programacion

Tipos de Programación


Existen varias clases de programación, dependiendo de los métodos utilizados y las técnicas empleadas.


Los tipos o técnicas de programación son bastante variados, aunque puede que muchos de los lectores sólo conozcan una metodología para realizar programas. En la mayoría de los casos, las técnicas se centran en programación modular y programación estructurada, pero existen otros tipos de programación. Los explicaremos a lo largo del artículo. 


Programación estructurada (PE) 
La programación estructurada esta compuesta por un conjunto de técnicas que han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo. 
Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores. 

Esta técnica incorpora: 
  • Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas.
  • Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad.
  • Estructuras básicas: existen tres tipos de estructuras básicas:
    • Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra.
    • Estructuras selectivas: en estas estructuras se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.
    • Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces.

Las principales ventajas de la programación estructurada son: 
  • Los programas son mas fáciles de entender
  • Se reduce la complejidad de las pruebas
  • Aumenta la productividad del programador
  • Los programas queden mejor documentados internamente.

Un programa esta estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos. 


Programación modular  
En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad. 

En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.  A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones.


 Programación orientada a objetos (POO)    Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la re-utilización de los objetos.  El elemento principal de la programación orientada a objetos es el objeto.  El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.  Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento.  El polimorfismo y la herencia son unas de sus principales características y por ello dedicaremos más adelante un artículo exclusivamente a tratar estos dos términos. 


Programación concurrente  Este tipo de programación se utiliza cuando tenemos que realizar varias acciones a la vez.  Se suele utilizar para controlar los accesos de usuarios y programas a un recurso de forma simultanea.  Se trata de una programación más lenta y laboriosa, obteniendo unos resultados lentos en las acciones. 




Programación funcional   

Se caracteriza principalmente por permitir declarar y llamar a funciones dentro de otras funciones. 






Programación lógica   

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).

miércoles, 20 de julio de 2011

Compilador o Interprete

Compilador o interprete




Un archivo fuente es el que contiene el texto del código del programa que ha sido escrito por el equipo de programadores. Las computadoras solamente pueden ejecutar instrucciones que estén en código máquina, así que los programas en código fuente no se pueden ejecutar directamente en la computadora. Un compilador debe, en primer lugar, convertir el archivo fuente en un archivo intermedio que se llama archivo objeto o archivo código objeto (figura 24). El archivo objeto contiene una traducción del código del programa en lenguaje máquina, pero aún no se considera un programa ejecutable.

Una división común para describir los compiladores, como menciona Torben AEgidius Mogensen en [5], es como se describe enseguida, aunque el orden puede cambiar, algunas fases se pueden combinar o dividir en otras fases o aún otras fases se pueden insertar, pero en general, los compiladores siguen estas tareas:

· Análisis léxico. Es la parte inicial de leer y analizar el código fuente. El texto es leído y dividido en tokens, cada uno de los cuales corresponde a un símbolo en el lenguaje de programación, por ejemplo, el nombre de una variable, una palabra reservada o un número.

· Análisis sintáctico.
 En esta fase se toma una lista de tokens producida por el análisis léxico y los acomoda en una estructura de árbol llamada árbol sintáctico que refleja la estructura del programa. Esta fase también se llama parsing.

· Verificación de tipos.
 En esta parte se analiza el árbol sintáctico para determinar si el programa viola ciertos requerimientos de consistencia, es decir, si una variable se utiliza pero no se declara, o si se usa en un contexto que no tiene sentido por el tipo de variable, tal como un string para utilizar un valor booleano como una función apuntador.

· Generación de código intermedio.
 El programa se traduce a un lenguaje simple independiente de la máquina.

· Ubicación de registros.
 Los nombres simbólicos de las variables utilizadas en el código intermedio se traducen a números, cada uno de ellos corresponde a un registro en el código máquina objetivo (de la máquina que va a ejecutar finalmente el programa).

· Generación de código máquina.
 El lenguaje intermedio se traduce al lenguaje ensamblador (una representación textual de código máquina) para una arquitectura de máquina específica.

· Ensamblado y Enlazado.
 El código en lenguaje ensamblador se traduce a una representación binaria y se determina la dirección real de las variables, funciones, etc.



Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel: Compilador e intérprete.

Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:
  • Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de la máquina). Su acción equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua.


  • Intérprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningún código equivalente. Su acción equivale a la de un intérprete humano, que traduce las frases que oye sobre la marcha, sin producir ningún escrito permanente. Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:
    • Un intérprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.). Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución.
    • Un compilador suele generar programas más rápidos y eficientes, ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. En cambio, un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces).
    • Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores.

Es muy útil sabe cómo se hace un intérprete o un compilador, porque esto permite a los programadores tener una idea de lo que hacen los programas de alto nivel, lo que a su vez, ayudará a los programadores para crear código más eficiente. Otras razones. Los errores que devuelven los compiladores proporcionan una manera fácil de entender el código fuente; además, se conoce la diferencia entre errores léxicos, sintácticos, errores de tipos, y así.

    Pseudocodigo

    Pseudocódigo



    Pasos iniciales. Pseudocódigo.

    Como toda obra de arte, antes, generalmente, se crea un boceto, en programación, antes de escribir un programa, se debe "abocetar" dicho programa, y para ello se escribe un algoritmo preliminar. Un algoritmo es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.

    Una persona, en la vida cotidiana, utiliza algoritmos para resolver un problema.
    Nuestro cerebro utiliza esos algoritmos inconscientemente para llevar a cabo una tarea y resolver el problema como por ejemplo el de cambiar una bombilla.

    Veamos el caso de cambiar una bombilla que no se enciende: Cuando se observa un foco que está apagado, lo primero que nuestro cerebro se pregunta es si la lámpara está enchufada, si está enchufada, ante esta pregunta existen dos posibles respuestas, sí y no. Si la respuesta es negativa entonces la solución del problema es enchufarla, en esta situación surge otro problema, el cerebro se pregunta si la lámpara se encendió al enchufarla. Si se enciende el problema está solucionado, si no se enciende existen dos posibilidades: o el foco está quemado y hay que reemplazarlo o la lámpara está defectuosa y hay que comprar otra. Ahora, volviendo a la primer pregunta: si la lámpara está enchufada, si la respuesta es afirmativa el cerebro se cuestiona si la lámpara se enciende o no, en este caso volvemos a la misma cuestión anterior cuya solución es comprar un foco o comprar una nueva lámpara.

    Una manera de expresar ordenadamente este problema, es utilizando lo que se llama pseudocódigo o falso lenguaje, que 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.

    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.

    Volviendo al ejemplo se hará un análisis del mismo. En dicho algoritmo existen estructuras que lo definen. Por un lado hay estructuras secuenciales, es decir que hay instrucciones que se siguen unas inmediatamente luego de realizadas otras, hay instrucciones selectivas, que representan instrucciones que pueden o no ejecutarse, según el cumplimiento de una condición determinada. Hay estructuras selectivas dobles, o alternativas. Una instrucción selectiva doble realiza una instrucción de dos posibles, según el cumplimiento de una condición.

    Si se analiza más a fondo el algoritmo, se observa que en el mismo hay funciones o procedimientos que se repiten de igual manera. Muchas personas prefieren distinguir entre funciones y procedimientos. Una función, recibe uno o varios valores de entrada y regresa una salida mientras que un procedimiento recibe una entrada y no genera ninguna salida aunque en algún caso podría devolver resultados a través de sus parámetros de entrada si estos se han declarado por referencia. La cuestión es la siguiente: La función se utiliza para que no se tenga que ocupar mucho espació en el pseudocódigo en el caso que el algoritmo sea extenso y se utiliza esta función que se llama a ella en todo caso que se tenga que realizar la misma tarea muchas veces

    Ahora se procederá a expresar el problema en pseudocódigo:

      
    Si se observa se ve que en el código hay un fragmento que se repite:

    a este fragmento se le puede asignar un nombre, por ejemplo: algoritmo Alternativa


    Por lo tanto, se puede reemplazar este fragmento de código por una llamada a este algoritmo cada vez que se repita y el algoritmo quedaría de la siguiente manera:

    Condición P: Lámpara enchufada;


    Condición Q: Lámpara encendida;

    Condición R: Foco quemado;

    También se designarán las instrucciones:

    Instrucción 1: Enchufar la lámpara;

    Instrucción 2: Reemplazar foco;

    Instrucción 3: Comprar nueva lámpara

    martes, 19 de julio de 2011

    Diagrama de flujo


     Diagramas de flujo

    ¿Cómo representamos gráficamente los diferentes pasos de un proceso?
    Mediante los diagramas de flujo podremos comprender rápidamente el proceso en su totalidad, facilitando así su análisis para modificarlo y mejorarlo.

     Definición

    Un diagrama de flujo es una representación gráfica de los pasos que seguimos para realizar un proceso; partiendo de una entrada, y después de realizar una serie de acciones, llegamos a una salida.
    Cada paso se apoya en el anterior y sirve de sustento al siguiente:
    El diagrama de flujo tiene las siguiente características y ventajas:
    • Es una representación gráfica de las secuencias de un proceso, presenta información clara, ordenada y concisa.
    • Permite visualizar las frecuencias y relaciones entre las etapas indicadas.
    • Se pueden detectar problemas, desconexiones, pasos de escaso valor añadido etc.
    • Compara y contrasta el flujo actual del proceso contra el flujo ideal, para identificar oportunidades de mejora.
    • Identifica los lugares y posiciones donde los datos adicionales pueden ser recopilados e investigados.
    • Ayuda a entender el proceso completo.
    • Permite comprender de forma rápida y amena los procesos. 


     Símbolos



    Para representar la información, necesitamos una serie de símbolos básicos que emplearemos en la confección de diagramas de flujo:


    SímboloSignificado
    Comienzo o final de proceso: en su interior situamos materiales, información o acciones para comenzar el proceso o para mostrar el resultado en el final del mismo.
    Conexión con otros procesos:Nombramos un proceso independiente que en algún momento aparece relacionado con el proceso principal.
    Actividad: Tarea o actividad llevada a cabo durante el proceso. Puede tener muchas entradas, pero solo una salida
    Información de apoyo: Situamos en su interior la información necesaria para alimentar una actividad ( datos para realizarla )
    Decisión/ Bifurcación: Indicamos puntos en que se toman decisiones: sí o no, abierto o cerrado...
    Conexiones de pasos o flechas:Muestran dirección y sentido del flujo del proceso, conectando los símbolos.
    Documento: Se utiliza este símbolo para hacer referencia a la generación o consulta de un documento específico en un punto del proceso.

     Metodología

    Para realizar el diagrama de flujo, debemos seguir una serie de pasos:

    Determinar el marco y los límites del proceso:

    Debemos definir para cada proceso:
    1. Objetivo
    2. Cliente
    3. Origen
    4. Resultado
    5. Responsable
    6. Participantes
    7. Definiciones


    Determinar los pasos del proceso:

    Realizaremos una lista con las actividades principales, entradas ( inputs ), salidas ( outputs ) y decisiones.

    Dibujar el diagrama de flujo:

    Utilizaremos los símbolos citados anteriormente. Antes de comenzar, tenemos que etiquetar cada actividad de la lista. En general, se nombran las acciones con verbos en infinitivo: comprar, hacer, entregar, revisar, etc.
    Para hacer el diagrama, se empezará identificando qué actividad, hecho, información o producto inicia el proceso: este hecho irá dentro de un rectángulo de vertices redondeados. Luego se determinará la actividad, o en su caso actividades, inmediatamente posterior o posteriores.
    A medida que se realiza el diagrama, para las actividades en que se considere necesario, se irá rellenado una "plantilla" en la que se indica:
    • " Qué ", que es lo que se hace
    • " Quién ", quién lo hace
    • " Cuándo " debe hacerlo
    • " Cómo ", cómo debe hacerlo
    • " Registros ", los registros y/ o documentos que se hayan generado y que nutren la siguiente actividad

    Comprobar el diagrama de flujo:

    El diagrama tiene por objetivo representar la realidad del proceso, por tanto:
    1. Comprobaremos que los símbolos están bien utilizados.
    2. Verificaremos que están identificados claramente las actividades y elementos del proceso.
    3. Cada camino debe conectar hacia atrás o hacia adelante con otra actividad.
    4. Si sale más de una flecha de un símbolo de actividad, necesitaremos un rombo de toma de decisiones; a veces es necesario no usar preguntas de bifurcación explicando mediante un texto corto sobre flechas el camino a elegir
    5. Validaremos el diagrama con personas imparciales: la propia Dirección revisa los diagramas antes de aprobarlos.

    Plantilla:

    A continuación, mostramos los elementos básicos para realizar un diagrama de flujo:


    y la tabla de actividades:
    ¿ QUÉ ?¿ QUIÉN ?¿ CUÁNDO ?¿ CÓMO ?REGISTROS
    A ?
    Actividad que se realiza.
    Persona o grupo que realiza la actividad (no poner el responsable último del procedimiento).Momento en que se realiza la actividad que se explica.Explicación de en qué consiste la actividad, cuáles son las tareas que la componen y los requisitos necesarios para realizarla.Documento o información del cual se nutre o bien genera la actividad.
    Además, tendremos que indicar los siguientes datos:
    • OBJETIVO: Para qué se realiza el proceso o conjunto de actividades de una organización, cuál es su fin.
    • CLIENTE: Quién se beneficia de ese conjunto de actividades del proceso.
    • ORIGEN DEL PROCESO: Aquello que da origen a que se inicie el proceso. Puede ser una información, un producto anterior o una actividad.
    • RESULTADOS DEL PROCESO: Salidas obtenidas después del proceso.
    • QUIÉN: Personas o puestos de trabajo, dentro o fuera de la organización, que desempeñan las actividades pertenecientes al procedimiento descrito.
    • DEFINICIONES: Términos técnicos que surgen a lo largo de la descripción del proceso, y que necesitan una total explicación para la total comprensión de la actividad realizada o el conjunto de las mismas que forman un proceso.