domingo, 3 de noviembre de 2013

Clases De Estructura De Programacion

CLASES DE ESTRUCTURA DE PROGRAMACION

PROGRAMACION LINEAL

Es una de las principales ramas de la investigación operativa.En esta categoría se consideran todos aquellos modelos de optimizacion donde las funciones que lo componen, es decir, función objetivo y restricciones, son funciones lineales en las variables de decisión.

Los modelos de programacion lineal por su sencillez son frecuentemente usados para abordar una gran variedad de problemas de naturaleza real en ingeniería y ciencias sociales, lo que ha permitido a empresas y organizaciones importantes beneficios y ahorros asociados a su utilización.

Existen dos métodos de programacion:

Método Tableau



Método Simplex

PROGRAMACION ESTRUCTURADA

"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:
  1. Secuencia: Sucesión simple de dos o mas operaciones.
  2. Selección: bifurcación condicional de una o mas operaciones.
  3. 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"

http://www.monografias.com/trabajos/progestructu/progestructu.shtml


PROGRAMACION ORIENTADA A EVENTOS


Existen dos tipos de eventos que son:

Externos: Producidos por el usuario. 
Ejemplos: pulsaciones de teclado o ratón. 

Internos: Producidos por el sistema o la 
aplicación. 
Ejemplos: 
n  vencimiento de un temporizador. 
n  datos en líneas de comunicaciones. 



PROGRAMACION ORIENTADAS A OBJETOS(POO)

La programacion orientada a objetos (POO)es una forma especial de programar, mas cercana a expresar las cosas en la vida real que otros tipos de programacion.
Con la (POO) tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en terminos de objetos, propiedades, metodods y otras cosas que veremos rapidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programacion.
En un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.
La programación orientada a objetos, intenta simular el mundo real a traves del significado de objetos que contiene caracteristicas y funciones. Los lenguajes orientados a objetos se clasifican como lenguajes de quinta generacion.
Como su mismo nombre indica, la programación orientada a objetos se basa en la idea de un objeto, que es una combinacion de variables locales y procedimientos llamados metodos que juntos conforman una entidad de programación.



jueves, 17 de octubre de 2013

Conceptos Introductorios A La Programación

CONCEPTOS INTRODUCTORIOS A LA PROGRAMACION

¿QUE ES UNA IDE?

"Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, o sea, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica. Los IDE pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes. El lenguaje Visual Basic, por ejemplo, puede ser usado dentro de las aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Visual Basic en forma de macros para Microsoft Word"

COMPONENTES DE LA IDE

1.Editor de texto:Un editor de texto es un programa que permite escribir y modificar archivos compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto.
Se distinguen de los procesadores de textos en que se usan para escribir sólo texto, sin formato y sin imágenes.
Hay una variedades de editores de texto. Algunos son de uso general, mientras que otros están diseñados para escribir o programar en un lenguaje. Algunos son muy sencillos, mientras que otros tienen implementadas gran cantidad de funciones.

2.Compilador:Un compilador es un programa informático, que se encarga de traducir el código fuente de cualquier aplicación que se esté desarrollando. En pocas palabras, es un software que se encarga de traducir el programa hecho en lenguaje de programación, a un lenguaje de máquina que pueda ser comprendido por el equipo y pueda ser procesado o ejecutado por este.
Un concepto un poco más elaborado es el siguiente: Un compilador es un programa que convierte o traduce el código fuente de un programa hecho en lenguaje de alto nivel, a un lenguaje de bajo nivel (lenguaje de máquina).

3.Interprete:un intérprete es un programa de computadora que ejecuta o lleva a cabo instrucciones escritas en un lenguaje de programación.
La interpretación es una de las formas de ejecución de los programas de computadoras, la otra es la compilación.
El término intérprete puede hacer referencia al programa que ejecuta el código fuente que acaba de ser traducido a una forma intermedia, o puede hacer referencia al programa que lleva a cabo tanto la traducción como la ejecución.

4.Depurador:es un programa usado para probar y depurar (eliminar los errores) de otros programas. El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. Algunas depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto.

5.Herramientas de automatización

6.Posibilidad de ofrecer un sistema de control de versiones

7.Factibilidad para ayudar en la construcción de interfaces gráficas de usuarios.

¿QUE ES UNA API?

API significa Application Program Interface, y es lo que los programadores usan para hacer que sus programas puedan ser usados por otros programadores.
Por ejemplo. Un programador ha sido contratado en una empresa para programar el envío de correo electrónico desde una aplicación contable. Como es un buen programador, deja adicional mente un API para que sea más sencillo enviar correo electrónico cuando sea necesario hacerlo desde otro programa. Tiempo después, otro programador es contratado por la misma compañía para que la aplicación de producción envíe correo electrónico, del mismo modo que lo hace la de contabilidad. Ahora, el nuevo programador sólo debe utilizar el API dejado por el anterior, reduciendo efectivamente el tiempo que necesita para hacer esa modificación.
Cuando el API es binario e independiente del lenguaje de programación pero dependiente del sistema operativo, se llama ABI (Application Binary Interface). Gracias al ABI de Win32, cualquier programa que utilizaba este ABI para dibujar ventanas en Windows 95, puede hacerlas aún dibujar las mismas ventanas en Vista (aunque salgan ligeramente diferentes).

           
Un API es, para un programador, el equivalente a una interfaz gráfica para un usuario final. Cuando tú ves algún diálogo para abrir o guardar un archivo, cuando usas el dialogo de impresión o cuando ves una página web, lo que ves realmente es algo que te permite realizar operaciones. Cuando un programador lee un API, es como si viera una de estas interfaces; el API le muestra lo que puede hacer independientemente de cómo se haga por detrás.

IMPORTANCIA DE LAS API

Uno de los principales propósitos de una API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evitándose el trabajo de programar todo desde el principio. Las APIs asimismo son abstractas: el software que proporciona una cierta API generalmente es llamado la implementación de esa API.


EL ALGORITMO


Lenguaje algorítmico: Se realiza análisis y se elige el método a utilizar, el conjunto de operaciones y orden conforman el algoritmo.

PROGRAMAS:

Lenguaje informático: Es aquel por el cual dicho algoritmo se codifica a la computadora.
Programa > algoritmo destinado a gobernar una computadora.
Lenguaje de programación:
  • Pueden haber diferentes "lenguajes" tales como: visual Basic, delphi, c++, java, etc.
  • Pueden tener diferente metodología de programación tales como: Modular, estructurada, orientada a objetos, etc.
  • Cubren necesidades específicas como ser: el visual Fox Pro, es para programar bases de datos.



ELEMENTOS DE LOS DIAGRAMAS DE FLUJO




APLICACIONES DE LOS DIAGRAMAS 


Los diagramas de flujo estructurados, como su nombre menciona, es actualmente caracterizado como una herramienta de la programación estructurada. Gracias a esta herramienta (y debido a las características de la programación estructurada) podemos interpretar cada acción de un programa y representarlo gráficamente (en un diagrama estructurado) con la debida estructura (simple o compuesta) de la diagramación estructurada.

PRINCIPALES ESTRUCTURAS DE LOS DIAGRAMAS ESTRUCTURADOS.

1. Estructura Secuencial. Es una estructura con una entrada y una salida en la cual figuran una serie de acciones cuya ejecución es lineal y en el orden en que aparecen. A su vez. Todas las acciones tienen una única entrada y una única salida.

2. Estructura Alternativa. Es una estructura con una sola entrada y una sola salida en la cual se realiza una acción de entre varias, según una condición o se realiza una acción según el cumplimiento o no de una determinada condición. Esta condición puede ser simple o compuesta. Las estructuras alternativas pueden ser:

De dos salidas, en la que una de ellas puede ser la acción nula.
De tres o más salidas, que también se llama múltiple.

3. Estructura Repetitiva. Es una estructura con una entrada y una salida en la cual se repite una acción un número determinado o indeterminado de veces, dependiendo en este caso del cumplimiento de una condición. Las estructuras repetitivas pueden ser:

Estructura para (FOR)
Estructura mientras (WHILE)
Estructura hasta (UNTIL)

4. Estructura PARA (FOR). En una estructura se repite una acción un número fijo de veces representado normalmente por N.

5. Estructura MIENTRAS (WHILE). En esta estructura se repite una acción mientras se cumpla la condición que controla el bucle. La característica principal de esta estructura es la de que la condición es evaluada siempre antes de cada repetición. El número de repeticiones oscila entre 0 e infinito, dependiendo de la evaluación de la condición, cuyos argumentos en los casos de repetición, al menos una vez, deberán modificarse dentro del bucle, pues de no ser así el número de repeticiones será infinito y nos encontraremos en un bucle sin salida.


6. Estructura HASTA (UNTIL). En esta estructura se repite una acción hasta que se cumpla la condición que controla el bucle, la cual se evalúa después de cada ejecución del mismo. El número de repeticiones oscila entre 1 e infinito, dependiendo de la evaluación de la condición, cuyos argumentos en los casos de repetición, al menos dos veces, deberán modificarse dentro del bucle, pues de no ser así el número de repeticiones será infinito y nos encontraremos en un bucle sin salida.






IF-(IF-ELSE) CODICIONALES

"La estructura IF-ELSE permite establecer una bifurcación o alternativa dentro de una secuencia de ordenes. Es decir, en ocasiones es posible que deseemos que el programa ejecute una instrucción o instrucciones, pero solo si se cumple determinada circunstancia, y, en caso contrario, o bien no hacer nada, o bien ejecutar otras instrucciones diferentes. 
Por ejemplo, queremos hacer un alias que a intervalos de un minuto mida nuestro lag, y solo si este supera los 15 segundos nos envíe un mensaje a la pantalla de Status avisándonos de cuanto lag tenemos. Esto no es posible hacerlo mediante una secuencia lineal de instrucciones; es preciso que el programa discierna en algún momento si procede o no ejecutar la orden de imprimir un mensaje. Esta posibilidad es la que nos facilita la estructura IF. 
En definitiva, IF comparará valores, y ejecutará o no diferentes instrucciones, en función del resultado de la comparativa. 
El formato general completo de la estructura IF es el siguiente: 

if (Valor_1 operador Valor_2) { comandos } 
elseif (Valor_1 operador Valor_2) { comandos } 
else { comandos }"





SWITCH (CASE)
"Switch case es una estructura de control empleada en programación, a la que pertenecen otras estructuras como el if, if else o until, entre otras, así como combinaciones propias de determinados lenguajes de programación.

El switch no es tan popular como el if, pero se utiliza con regularidad en la programación. En principio la funcionalidad de un switch también se puede implementar con múltiples ifs anidados. En el caso de que hayan muchas acciones dependientes de muchos valores iniciales, es recomendable su uso. El switch favorece la legibilidad y rapidez en la programación."

CICLO FOR (PARA)
 "Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa mas de una vez.
Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instrucción simple o compuesta.
Su formato general es:
for (inicialización; condición; incremento)
{ instrucción(es); };
ejemplo:
for(x=1;x⇐10;x=x+1)
{ puts(” MAMA ”); };"


CICLO MIENTRAS (DO WHILE)
La estructura do while es otra estructura repetitiva, la cual ejecuta al menos una vez su bloque repetitivo, a diferencia del while o del for que podían no ejecutar el bloque.
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se ejecutará el bloque repetitivo.
La condición de la estructura está abajo del bloque a repetir, a diferencia del while o del for que está en la parte superior.
Representación gráfica:
estructura repetitiva do while

viernes, 20 de septiembre de 2013

Programación De Aplicación De Software

PROGRAMACION DE APLICACION DE SOFTWARE



LENGUAJE DE PROGRAMACIÓN


Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una maquina, particularmente una computadora. consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente. aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos  no tiene por que ser así  ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros mas, como, por ejemplo, el HTML.
Según la forma de ejecución Ay: Lenguajes Complicados y Lenguajes interpretados.
Los lenguajes complicados cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda,(lenguaje maquina con código binario)
Los lenguajes interpretados se puede tambien utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel.

http://jorgesaavedra.wordpress.com/2007/05/05/lenguajes-de-programacion/

LENGUAJES DE PROGRAMACIÓN MAS IMPORTANTES

*Java:Java es un lenguaje moderno, de alto nivel, que recoge los elementos de programación que tipicamente se encuentran en todos los lenguajes de programación  permitiendo la realización de programas profesionales.
*C:es un lenguaje de programación de propósito general que ofrece economía sintáctica  control de flujo y estructuras sencillas y un buen conjunto de operadores
*Php:es un lenguaje de programación de uso general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico.
*Objective-C:Es un lenguaje de programación orientado a objetos creado como un super conjunto de c para que implementase un modelo de objetos parecido al de smalltalk.
*Python:es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y favorezca a un código legible. 
*(Visual)Basic:Es un lenguaje de programacion dirigido por eventos, desarrollados por Alan cooper para microsoft.

http://espanol.answers.yahoo.com/question/index?qid=20130423082818AASekZi





ENTENDIENDO LA MAQUINA

ENTENDIENDO LA MAQUINA



1.Monitor
2.Placa base
3.CPU
4.Memoria RAM
5.Tarjeta De Expancion
6.Fuente de Alimentacion
7.Unidad De Disco Optico
8.Disco Duro
9.Teclado
10.Raton



BIOS

Este sistema básico de entrada y salida; esta viene incorporada con el chip de la placa base, es decir, es un programa que no esta en el disco rígido. La bios almacena la información básica de la computadora. guarda los datos del día y la hora, el cache, las configuraciones de los discos, las claves de protección  etc. esta valiosa información al apagar la computadora no se pierde pues utilizan memorias tipo CMOS y para no perder los datos, viene incluido una pequeña pila que puede durar años y se recarga cuando la computadora esta encendida.



ARQUITECTURA DE LA PC

INTEL
Intel inició sus operaciones siendo un fabricante de memoria para computadoras. En 1971 fue la primera compañía en lograr la integración de suficientes transistores como para vender un microprocesador programable completo con un conjunto de instrucciones de 4 bits, que se volvería muy común en calculadoras de bolsillo: El Intel 4004.
Al 4004 lo sucedieron el 8008 en 1972 y en 1974 el 8080, cada vez logrando mayor capacidad. En 1978, Intel comenzó a comercializar el procesador 8086, un ambicioso chip de 16 bits potencialmente capaz de ser el corazón de computadoras de propósito múltiple. El 8086 se comercializó en versiones desde 4,77 y hasta 10MHz.
IBM adoptó al hermano menor del 8086 (el 8088, un procesador con un bus de datos interno de 16 bits, pero con el bus externo de 8 bits, lo que permitía aprovechar diseños y circuitos para sistemas de 8 bits) para basarse en él y lanzar la línea de computadoras más exitosa de la historia: el IBM PC (1981) y el IBM XT (extended Technology) (1983) (ver influencia del IBM PC).
El éxito de esta serie fue tal que a partir de ese momento, todos los CPUs de Intel mantuvieron una estricta política de compatibilidad hacia atrás - Todo CPU fabricado por Intel desde ese momento y hasta el 2001 es capaz de ejecutar código compilado para cualquiera de sus predecesores.
Al 8086 lo sucedió el 80286 en 1982 (en el cual se basó la IBM PC/AT, 1985). Este chip, de 24/16 bits, implementó el modo protegido de ejecución, sentando las bases para la aparición de los verdaderos sistemas multitarea de escritorio. El 80286 apareció a 6MHz, y a lo largo de los años llegó hasta los 12MHz. Hubo varios sistemas operativos que aprovecharon su modo protegido para ofrecer multitarea real, tales como las primeras versiones de OS/2, o Xenix.
Pero el verdadero boom de la multitarea no llegó hasta el nacimiento del 80386 (1985) - Un avance tan fuerte que hoy en día es común referirse como i386 a toda la línea de procesadores que le siguieron (también es común la referencia IA32, Intel Architecture of 32 bits). El 386 fue el primer procesador de Intel de 32 bits, y -magníficas noticias para los desarrolladores- utilizarlo para aplicaciones de multitarea sería ya mucho más fácil de lo que lo fue con el 80286. El 80386 maneja velocidades de 16 a 33MHz.
El 80486 apareció en 1989. Fue un cambio relativamente menor frente al 80386 - Hasta su aparición, todas las computadoras PC tenían la opción de instalar en un zócalo de la placa base un -bastante caro- procesador numérico - para las XT, el 8087. Para las AT, el 80287. Para las 386, el 80387. A partir del 80486, el coprocesador numérico, así como la memoria caché L1 o de nivel 1 fueron integrados dentro del chip de la CPU (el coprocesador sólo en los modelos 486DX. Los modelos 486SX lo tenían desactivado), trayendo como resultado un gran aumento en la velocidad percibida por los usuarios. Internamente este procesador es el primer x86 segmentado (con una profundidad 5). Este cambio es importante pues permite a la misma frecuencia de reloj ejecutar casi el doble de instrucciones (1,9) e incrementar la frecuencia de reloj. El 486 existe en versiones desde 20 y hasta 100MHz. Estos últimos denominados 486-DX4 a pesar de multiplicar por tres la frecuencia de funcionamiento interna respecto al bus de datos externo.

AMD
AMD está implementando en sus procesadores las tecnologías siguientes, además de que promueve ciertas iniciativas tecnológicas mediante los mismos. En su Athlon (disponible) y Athlon XP (disponible)
Tecnología AMD x86-64!: Tecnología que permite que procesadores de 64-bit trabajen perfectamente con aplicaciones y sistemas operativos de 32-bit.
DDR (Double Data Rate) SDRAM: Es una tecnología de RAM dinámica de gran ancho de banda y de costo razonable para todos los mercados de PC, además de que brinda una migración natural desde la PC133 SDRAM
Advanced Communications Riser: Es un estándar abierto de conectividad periféricos de comunicaciones y audio. Con controladores construidos en los chipsets, ACR habilita buen audio multi-canal y conectividad de red de alta velocidad en un solo chipset.
Multiprocessor Technology: Arquitectura especial preparada para multiprocesadores
HyperTransport! Technology: Es un nuevo enlace punto a punto de alta velocidad y alto desempeño para la interconexión de circuitos integrados sobre una mainboard, y puede ser significativamente más rápida que PCI con el mismo número de pins.
AMD PowerNow!! Technology: Tecnología para los sistemas portátiles basados en AMD que incrementa la vida de la batería, proporcionando desempeño en demanda. Opera automáticamente en segundo plano y permite que el procesador disipe menos calor bajo condiciones normales.
3DNow!! Technology: Es la primer innovación a la arquitectura x86 que significativamente mejora los gráficos 3D de punto flotante intensivo y el desempeño multimedia para las PC's compatibles con MS Windows
AMD EasyNow!! Technology: Es un diseño de plataforma integrando tecnologías estándar de la industria, productos e infraestructura. EasyNow! Simplifica conectores y remueve hardware extraño, lo que hace a la PC ser fácil de configurar y más simple de usar.
 QuantiSpeed! Architecture: Permite a los procesadores Athlon XP realizar más trabajo por ciclo de reloj comparado con otros procesadores y alcanzar relativamente mayores frecuencias de operación.

SISTEMA OPERATIVO

Un sistema operativo puede ser definido como un conjunto de programas especialmente hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora. Un sistema operativo, tiene también como función, administrar todos los periféricos de una computadora.
El sistema operativo más conocido es el Windows, desarrollado por la empresa Microsoft.
Podemos decir que el SISTEMA OPERATIVO es el programa más importante de la computadora.
Una de las atribuciones del sistema operativo es cargar en la memoria y facilitar la ejecución de los programas que el usuario utiliza. Cuando un programa está en ejecución, el sistema operativo continúa trabajando. Por ejemplo, muchos programas necesitan realizar acceso al teclado, vídeo e impresora, así como accesos al disco para leer y grabar archivos. Todos esos accesos son realizados por el sistema operativo, que se encuentra todo el tiempo activo, prestando servicios a los programas que están siendo ejecutados.
El sistema operativo también hace una administración de los recursos de la computadora, para evitar que los programas entren en conflicto. Por ejemplo, el sistema operativo evita que dos programas accedan simultáneamente al mismo sector de la memoria, lo que podría causar grandes problemas. El sistema operativo funciona como un "maestro", procurando que todos los programas y todos los componentes de la computadora funcionen de forma armónica.

SISTEMAS OPERATIVOS PARA MÓVILES

Un sistema operativo móvil o SO móvil es un sistema operativo que controla un dispositivo móvil al igual que los PCs utilizan Windows o Linux entre otros. Sin embargo, los sistemas operativos móviles son mucho más simples y están más orientados a la conectividad inalámbrica, los formatos multimedia para móviles y las diferentes maneras de introducir información en ellos.
Algunos de los sistemas operativos utilizados en los dispositivos móviles están basado en el modelo de capas.
Las capas son:
Kernel
El núcleo o kernel proporciona el acceso a los distintos elementos del hardware del dispositivo. Ofrece distintos servicios a las superiores como son los controladores o drivers para el hardware, la gestión de procesos, el sistema del archivos y el acceso y gestión de la memoria.
Middleware
El middleware es el conjunto de módulos que hacen posible la propia existencia de aplicaciones para móviles. Es totalmente transparente para el usuario y ofrece servicios claves como el motor de mensajería y comunicaciones, códecs multimedia, intérpretes de páginas web, gestión del dispositivo y seguridad.
Entorno de ejecución de aplicaciones
El entorno de ejecución de aplicaciones consiste en un gestor de aplicaciones y un conjunto de interfaces programables abiertas y programables por parte de los desarrolladores para facilitar la creación de software.
Interfaz de usuario
Las interfaces de usuario facilitan la interacción con el usuario y el diseño de la presentación visual de la aplicación. Los servicios que incluye son el de componentes gráficos (botones, pantallas, listas, etc.) y el del marco de interacción.
Aparte de estas capas también existe una familia de aplicaciones nativas del teléfono que suelen incluir los menús, el marcador de números de teléfono etc.

EL FIRMWARE


 Es aquel programa que se encuentra grabado dentro de la memoria no volátil (ROM;EEPROM; Flash; entre otras),establece la lógica que posee la memoria a un nivel muy bajo, misma que controla todos los circuitos electrónicos  Este programa es el que dictara todas las reglas de operación del dispositivo, el tipo, modelo, numero de serie, entre otras cosas.
Al permanecer dentro de la electrónica se le considera parte del hadware y debido a la lógica con la que fue realizada por algún lenguaje de programación se considera también software. El firmware se encuentra dentro de todos los dispositivos electrónicos de la computadora y sirve para poder actualizar: 
                                                             *Lecturas de archivo
                                                             *Funcionalidades
                                                             *Corregir errores
                                                             *Entre muchas mas
Uno de los mayores retos es actualizarlo automáticamente  aun existen muchos circuitos que tienen que actualizarse de manera manual y esto conlleva a corre un gran riesgo, debido a que si se hace de manera errónea  quedara inutilizable en la mayoría de los casos el dispositivo.




EL DRIVER


Un Driver, o controlador, es un programa que controla un dispositivo. Cada   dispositivo, ya sea una impresora, un teclado, etc., debe tener un programa controlador.                                                       
Muchos controladores, como el controlador del teclado, vienen con el sistema operativo. Para otros dispositivos, puedes tener que instalar el nuevo controlador cuando conectas el dispositivo al ordenador. En Windows, los controladores normalmente tienen la extensión  drv.                                                              
Un controlador actúa como un traductor entre el dispositivo y los programas que utilizan el dispositivo. Cada dispositivo tiene su propio sistema de comandos especializados que solamente conoce su controlador, sin embargo, la mayoría de los programas tienen acceso a los dispositivos usando comandos genéricos. El controlador, por lo tanto, acepta comandos genéricos de un programa y después los traduce a los comandos especializados para el dispositivo.