dam entornos de desarrollo unidad 1

Upload: mario-martin-plaza

Post on 06-Jul-2018

228 views

Category:

Documents


2 download

TRANSCRIPT

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    1/138

    UNIDAD 1: DESARROLLO DEL SOFTWARE

    1.1.- Concepto de programa informático.1.2.- Relación entre el software y el hardwarede un equipo informático.

    1.3.- Código fuente, código objeto y códigoejecutable, máquinas virtuales.1.4.- Tipos de lenguaje de programación.Clasificaciones.1.5.- Características de los lenguajes másdifundidos.1.6.- Procesos de obtención de códigoejecutable a partir de código fuente:compilación, linkado, herramientas implicadas.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    2/138

    1.7.- Aplicaciones informáticas. Definición. Clasificación.

    1.8.- Fases del desarrollo de una aplicación, pruebas,

    documentación, explotación y mantenimiento entreotros.

    1.9.- Lenguajes de propósito general para el modeladoUML. Diagramas.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    3/138

    1.1.- Concepto de programa informático

    Definiciones de programa informático:

    • Es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una

    computadora. Sin programas, estas máquinas no pueden funcionar. Al conjunto general de

    programas, se le denomina software, que más genéricamente se refiere al equipamiento lógico osoporte lógico de una computadora digital.

    • Es algo necesario para el funcionamiento de una computadora. Puede ser tanto un programa

    ejecutable como su código fuente, que es escrito por los programadores. Por otra parte, según

    sus funciones, un programa puede ser clasificado como un software de sistema o un software de

    aplicación. 

    • Es a una serie de comandos que son realizados por un equipo de computación. • Es todo el conjunto intangible de datos y programas de la computadora.

    • Es un conjunto de instrucciones u ordenes basadas en un lenguaje de programación que una

    computadora interpreta para resolver un problema o una función especifica. 

    http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Softwarehttp://localhost/var/www/apps/conversion/tmp/scratch_4/hwPal818557677.hwShow(event,%20this,%20%22computadora%22);%20this.style.cursor=%22hand%22;%20this.style.textDecoration=%22underline%22;%20this.style.borderBottom=%22solid%22;http://localhost/var/www/apps/conversion/tmp/scratch_4/hwPal818557677.hwShow(event,%20this,%20%22computadora%22);%20this.style.cursor=%22hand%22;%20this.style.textDecoration=%22underline%22;%20this.style.borderBottom=%22solid%22;http://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    4/138

    1.1.- Concepto de programa informático

    ¿Para que sirve un programa informático?• Permitir a un usuario realizar uno o diversos tipos de trabajo. Esto lo diferencia principalmente de otros tipos de

    programas como los sistemas operativos (que hacen funcionar al ordenador), las utilidades (que realizan tareas

    de mantenimiento o de uso general), y los lenguajes de programación (para crear los programas informáticos).

    • Suele resultar una solución informática para la automatización de ciertas tareas complicadas como pueden ser la

    contabilidad, la redacción de documentos, o la gestión de un almacén. Algunos ejemplos de programas de

    aplicación son los procesadores de textos, hojas de cálculo, y base de datos.• Ciertas aplicaciones desarrolladas «a medida» suelen ofrecer una gran potencia ya que están exclusivamente

    diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen

    menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de

    cálculo y de base de datos.

    • Otros ejemplos de programas de aplicación pueden ser: programas de comunicación de datos, Multimedia,

    presentaciones, diseño gráfico, cálculo, finanzas, correo electrónico, compresión de archivos, presupuestos de

    obras, gestión de empresas, etc.

    •  Algunas compañías agrupan diversos programas de distinta naturaleza para que formen un paquete (llamados

    suites o suite ofimática) que sean satisfactorios para las necesidades más apremiantes del usuario. Todos y cada

    uno de ellos sirven para ahorrar tiempo y dinero al usuario, al permitirle hacer cosas útiles con el ordenador  (o

    computadora); algunos con ciertas prestaciones, otros con un determinado diseño; unos son más amigables o

    fáciles de usar que otros, pero bajo el mismo principio.

    http://es.wikipedia.org/wiki/Sistema_operativohttp://es.wikipedia.org/wiki/Utilidad_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Automatizaci%C3%B3nhttp://es.wikipedia.org/wiki/Contabilidadhttp://es.wikipedia.org/wiki/Procesadores_de_textoshttp://es.wikipedia.org/wiki/Hojas_de_c%C3%A1lculohttp://es.wikipedia.org/wiki/Base_de_datoshttp://es.wikipedia.org/wiki/Multimediahttp://es.wikipedia.org/wiki/Dise%C3%B1o_gr%C3%A1ficohttp://es.wikipedia.org/wiki/Finanzashttp://es.wikipedia.org/wiki/Correo_electr%C3%B3nicohttp://es.wikipedia.org/wiki/Suite_ofim%C3%A1ticahttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Suite_ofim%C3%A1ticahttp://es.wikipedia.org/wiki/Correo_electr%C3%B3nicohttp://es.wikipedia.org/wiki/Finanzashttp://es.wikipedia.org/wiki/Dise%C3%B1o_gr%C3%A1ficohttp://es.wikipedia.org/wiki/Multimediahttp://es.wikipedia.org/wiki/Base_de_datoshttp://es.wikipedia.org/wiki/Hojas_de_c%C3%A1lculohttp://es.wikipedia.org/wiki/Procesadores_de_textoshttp://es.wikipedia.org/wiki/Contabilidadhttp://es.wikipedia.org/wiki/Automatizaci%C3%B3nhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Utilidad_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Sistema_operativo

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    5/138

    1.1.- Concepto de programa informático

    ¿Para qué sirve un sistema informático?

    • Satisfacen las necesidades de personas, empresas uorganizaciones, con esta satisfacción de necesidadesnos referimos a automatizar industrias, realizar procesosmás rápidos y más efectivos y poder sacar informes deforma más ordenada y más exacta

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    6/138

    1.1.- Concepto de programa informático

    Tipos de programas informáticos:

    Se pueden clasificar dentro de trescategorías principales:

    • Software de aplicación.

    • Software del sistema.• Software de red.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    7/138

    1.1.- Concepto de programa informático

    • DE APLICACIÓN: Conjunto de instrucciones decomputadora escritas con un lenguaje deprogramación, las cuales dirigen al hardwarepara que efectúe actividades específicas deprocesamiento de datos y de información queproporcionan funcionalidad al usuario. Estapuede ser amplia: procesamiento general depalabras o limitada como la nómina. Los

    programas de aplicación satisfacen unanecesidad como incrementar la productividad omejorar decisiones del nivel de inventarios.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    8/138

    1.1.- Concepto de programa informático

    • DE SISTEMAS: Actúa como intermediario entreel hardware de cómputo y los programas deaplicación. Realiza importantes funcionesautorreguladoras como por ejemplo: cargarsepor sí sola cuando la computadora se activa por1ª vez como Windows 7, proporcionar unconjunto de instrucciones utilizadas para todaslas aplicaciones. La programación de sistemas

    se refiere a la creación o bien a la modificacióndel software de sistemas.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    9/138

    1.1.- Concepto de programa informático

    ¿Quién construye un programa informático?

    •  A la persona que desarrolla un programa se le llama programador , y no tiene queser, necesariamente, la misma que la quehace uso de dicho programa. A estasegunda persona se le denomina usuario.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    10/138

    1.1.- Concepto de programa informático

    ¿Quién construye un programa?Para desarrollar un proyecto hay que formar un equipo, el equipoprobablemente contara con especialistas de las siguientes categorías:

    •  Analista funcional.•  Analista orgánico.

    •  Analista / programador.

    • Programador

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    11/138

    1.1.- Concepto de programa informáticoEL JEFE DE PROYECTO:

    • En la relación anterior falta la figura encargada de coordinar, dirigir, controlar y responsabilizarse en

    último término de la ejecución del proyecto. Esta es la figura del jefe o director de proyecto.

    • Esta persona debe tener una autoridad real, una capacidad para tomar decisiones sobre la realización del

    proyecto siempre respetando los objetivos del proyecto. La falta de autoridad o el exceso de

    independencia de algunas áreas informáticas son la causa de muchas dificultades en los proyectos.

    •  La misión del jefe de proyecto tiene dos vertientes, por un lado la técnica, ha de concretar objetivos,

    adecuar el proyecto a las posibilidades de la empresa, gestionar los recursos, cambiar los métodos, etc.,

    y por otro lado la de gestión de recursos humanos, materiales y de relación con otros departamentos y

    con el usuario o receptor del proyecto informático.

    •  En definitiva y como resumen las funciones del jefe de proyecto podrían resumiese como tres:

    • Planificar, que es la única forma de asegurar la finalización del proyecto en el plazo adecuado sin dejarlo

    en manos de la improvisación.

    • Coordinar, para que todas las acciones de los implicados en el proyecto tanto propios (componentes del

    equipo de proyecto) como externos (usuarios u otros departamentos o empresas), sean eficaces y no den

    lugar a conflictos.

    • Controlar, para asegurar que se cumple lo planificado y se obtiene la calidad requerida.

    http://www.monografias.com/trabajos7/gepla/gepla.shtmlhttp://www.monografias.com/trabajos11/metods/metods.shtmlhttp://www.monografias.com/trabajos14/propiedadmateriales/propiedadmateriales.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos55/conflictos/conflictos.shtmlhttp://www.monografias.com/trabajos55/conflictos/conflictos.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos14/propiedadmateriales/propiedadmateriales.shtmlhttp://www.monografias.com/trabajos11/metods/metods.shtmlhttp://www.monografias.com/trabajos7/gepla/gepla.shtml

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    12/138

    1.1.- Concepto de programa informático

    EL EQUIPO DE PROYECTO:•  El equipo estará formado por un conjunto de técnicos en tareas informáticas, al mando

    directo del jefe del proyecto. Eventualmente puede ser necesaria también la intervención

    de personal ajeno al equipo de proyecto para la realización de tareas concretas

    •  El usuario, como conocedor de las funciones y necesidades a cubrir por el proyecto, debe

    también ser involucrado en el mismo.•  Debe contarse también desde el principio con la participación del personal técnico de

    otros departamentos, como sistemas, seguridad, control de calidad o explotación, etc.

    •  Es especialmente importante que todos los componentes del equipo técnico conozcan

    con la suficiente antelación la planificación del proyecto, para que dispongan de tiempo

    suficiente para cumplir los plazos

    •  Vista la función del jefe de proyecto, cabe considerar la composición y funcionalidad del

    resto del equipo. No vamos a tener en cuenta el numero de componentes, que variará de

    un proyecto a otro, de hecho la funcionalidad de los componentes tampoco es estricta y

    puede variar o incluso no ser necesaria la participación de alguno de ellos.

    http://www.monografias.com/trabajos11/fuper/fuper.shtmlhttp://www.monografias.com/trabajos11/fuper/fuper.shtml

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    13/138

    LAS FUNCIONES PROPIAS DE LOS COMPONENTES DEL PROYECTO SON LAS DE ANÁLISIS Y

    PROGRAMACIÓN:

    • Análisis o Diseño:

    Funcional o externo

    Orgánico o interno (también, técnico)

    • Programación:

     Lógica del programa (estructura)

    Codificación

    Pruebas (unitarias y de conjunto)

    Estas funciones dan lugar a los puestos de trabajo: Analista funcional, Analista orgánico y Programador.

    Exista un puesto eslabón entre el de analista y el programador, es el analista-programador. Este puesto surge

    debido a la débil separación que existe entre los puestos anteriores, especialmente en proyectos pequeños.

    Por otra parte también es interesante que el programador tenga algo de conocimiento de análisis técnico, ya

    que al final esto implica una disminución de los costes.

    Por lo general dentro de un proyecto el numero de programadores puros es mucho mayor que el de analistas,sin embargo esto tiende a cambiar, lo ideal seria que el análisis y diseño pudiesen ser introducidos

    directamente en programas que de manera automática generasen el código, eliminando la tediosa tarea de

    codificación y dejándole al técnico tan solo la tarea de diseño funcional y técnico. En la actualidad aun es

    necesaria una gran cantidad de programadores que realicen estas tareas

    http://www.monografias.com/trabajos11/metods/metods.shtmlhttp://www.monografias.com/trabajos15/logica-metodologia/logica-metodologia.shtmlhttp://www.monografias.com/trabajos15/todorov/todorov.shtmlhttp://www.monografias.com/trabajos/epistemologia2/epistemologia2.shtmlhttp://www.monografias.com/trabajos12/eticaplic/eticaplic.shtmlhttp://www.monografias.com/trabajos37/codificacion/codificacion.shtmlhttp://www.monografias.com/trabajos37/codificacion/codificacion.shtmlhttp://www.monografias.com/trabajos12/eticaplic/eticaplic.shtmlhttp://www.monografias.com/trabajos/epistemologia2/epistemologia2.shtmlhttp://www.monografias.com/trabajos15/todorov/todorov.shtmlhttp://www.monografias.com/trabajos15/logica-metodologia/logica-metodologia.shtmlhttp://www.monografias.com/trabajos11/metods/metods.shtml

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    14/138

    Funciones del Analista funcional:

    Es el encargado de la fase análisis del proyecto, tiene una visión mas general del

    proyecto que los demás componentes. Sus funciones son:

    • Estudio de la situación actual• Estudio de los objetivos

    • Estudio de viabilidad

    • Estudio del impacto hardware / software

    (Estos estudios han de realizarlos en colaboración con el jefe de proyecto) 

    • Definición de los requisitos del proyecto

    • Identificación de necesidades de información e intercambio

    • Identificación de procesos

    • Elaboración de la documentación funcional

    • Diseño del modelo de entidades

    • Diseño del flujo de datos

    • Diseño lógico de ficheros y tablas Diseño de conversaciones

    (Las funciones de diseño se realizan en colaboración con el analista orgánico)

    http://www.monografias.com/Computacion/Hardware/http://www.monografias.com/trabajos11/ladocont/ladocont.shtmlhttp://www.monografias.com/trabajos/adolmodin/adolmodin.shtmlhttp://www.monografias.com/trabajos/adolmodin/adolmodin.shtmlhttp://www.monografias.com/trabajos11/ladocont/ladocont.shtmlhttp://www.monografias.com/Computacion/Hardware/

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    15/138

    Funciones del analista orgánico o técnico:

    Es el encargado de la parte de diseño del proyecto. Sus funciones son:

    • Diseño técnico de transacciones y tareas en general.

    • Descomposición y diseño de cadenas de explotación

    • Diseño de procedimientos de recuperación y control

    • Diseño físico de ficheros y tablas

    • Diseño de prototipos y de pruebas de conjunto

    • Evaluación y control de pruebas unitarias y de conjunto

    • Puesta en producción de la aplicación

    • Elaboración de documentación técnica

    • Elaboración de cuadernos de carga

    http://www.monografias.com/trabajos13/mapro/mapro.shtmlhttp://www.monografias.com/trabajos12/romandos/romandos.shtmlhttp://www.monografias.com/trabajos12/romandos/romandos.shtmlhttp://www.monografias.com/trabajos13/mapro/mapro.shtml

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    16/138

    Funciones del programador:

    • Estructuración lógica del programa 

    • Codificación • Pruebas unitarias 

    • Colaboración en pruebas de conjunto 

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    17/138

    En un entorno informático estable, la decisión de iniciar un proyecto viene dada por las necesidades de:

    mantenimiento, modificación, mejoramiento, reemplazo o capacidad.

    • El Mantenimiento del programa; es una consecuencia de una omisión realizada en la etapa del diseño del

    sistema e involucra solucionar fallas menores del sistema, que obligará a la realización de cambios en el

    programa; como por ejemplo el descuido de no considerar que puedan ocurrir en el sistema, ciertas

    condiciones extraordinarias; como sería el caso de un aumento no previsto del 60 %, en la emisión de

    órdenes de compra. Las fallas también pueden provenir de otros factores, como ser en el caso de que

    existan cambios en las expectativas de los usuarios.

    • La Modificación del programa; involucra algo más que un simple cambio en el programa; involucra un

    cambio estructural de una entidad Por ejemplo, un cambio en el número de dígitos del código postal, oen el código de zona telefónica. La diferencia con el Mantenimiento es el grado de importancia.

    • El Mejoramiento del sistema; es el agregado de capacidades que no formaron parte del sistema de

    información original; por ejemplo cuando en una división se implementó un sistema de inventarios, este

    sistema no incluía un modulo para calcular la futura demanda de bienes y partes. La inclusión de este

    sofisticado módulo de cálculo es considerado un mejoramiento del sistema.

    • El Reemplazo del sistema; ocurre cuando los sistemas de información se tornan físicamente,

    tecnológicamente o competitivamente obsoletos. Como es el caso de la utilización del láser , en el

    reconocimiento óptico de caracteres para la lectura del código de barras, remplazando a la entrada por

    teclado.

    • La Nueva Capacidad del sistema; son sistemas de información para los cuales no es necesario el uso de

    la automatización. Están dados por la capacidad de poder modelizar la aplicabilidad de nuevos sistemas.

    Un ejemplo de ello, es la aplicación de los sistemas expertos.

    http://www.monografias.com/trabajos15/mantenimiento-industrial/mantenimiento-industrial.shtmlhttp://www.monografias.com/trabajos11/conin/conin.shtmlhttp://www.monografias.com/trabajos/ofertaydemanda/ofertaydemanda.shtmlhttp://www.monografias.com/trabajos16/configuraciones-productivas/configuraciones-productivas.shtmlhttp://www.monografias.com/trabajos7/caes/caes.shtmlhttp://www.monografias.com/trabajos/laser/laser.shtmlhttp://www.monografias.com/trabajos16/metodo-lecto-escritura/metodo-lecto-escritura.shtmlhttp://www.monografias.com/trabajos5/sisope/sisope2.shtmlhttp://www.monografias.com/trabajos6/auti/auti.shtmlhttp://www.monografias.com/trabajos6/auti/auti.shtmlhttp://www.monografias.com/trabajos5/sisope/sisope2.shtmlhttp://www.monografias.com/trabajos16/metodo-lecto-escritura/metodo-lecto-escritura.shtmlhttp://www.monografias.com/trabajos/laser/laser.shtmlhttp://www.monografias.com/trabajos7/caes/caes.shtmlhttp://www.monografias.com/trabajos16/configuraciones-productivas/configuraciones-productivas.shtmlhttp://www.monografias.com/trabajos/ofertaydemanda/ofertaydemanda.shtmlhttp://www.monografias.com/trabajos11/conin/conin.shtmlhttp://www.monografias.com/trabajos15/mantenimiento-industrial/mantenimiento-industrial.shtml

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    18/138

    LA ELABORACIÓN DE UN PROYECTO INFORMÁTICO  

    • Un Proyecto Informático lo componen un conjunto de tareas independientes cuyo objeto es la realización

    de un software que automatice el sistema de Información requerido por el usuario.

    • Un proyecto nace a partir del momento en que se formulan sus necesidades. La persona que se vaya a

    encargar de su dirección tiene el deber de estudiarlas con los usuarios (clientes) y hacer el estudio deviabilidad en sus dos principales vertientes:

    Técnica

     Económica

    • Se debe llevar a cabo una previsión para realizar la determinada aplicación de software en una fecha

    prevista y ponerlo en marcha con recursos limitados tales como materiales, programas y personas que

    no posean necesariamente ni el mismo lenguaje ni los mismos objetivos laborales.

    • Las razones del fracaso de un proyecto informático, aparte de las citadas en las archifamosas leyes de

    Murphy, son:

    Ausencia del estudio de viabilidad para ajustarse a unas necesidades claramente explicitadas y

    comprendidas.

    Especificaciones vagas, incompletas o incluso cambiantes.

    Falta de utilización de herramientas adecuadas para poder validar el comportamiento del sistema en el

    futuro, donde es necesario disponer de una buena herramienta de simulación.

    Mala estimación de costes.

    Reparto inadecuado de las tareas entre los miembros del equipo.

    Ausencia o mal seguimiento que se llevan a cabo en momentos inoportunos o que no se ajustan a la

    realidad

    http://www.monografias.com/trabajos35/concepto-de-lenguaje/concepto-de-lenguaje.shtmlhttp://www.monografias.com/trabajos4/leyes/leyes.shtmlhttp://www.monografias.com/trabajos16/comportamiento-humano/comportamiento-humano.shtmlhttp://www.monografias.com/trabajos6/sipro/sipro.shtmlhttp://www.monografias.com/trabajos6/sipro/sipro.shtmlhttp://www.monografias.com/trabajos16/comportamiento-humano/comportamiento-humano.shtmlhttp://www.monografias.com/trabajos4/leyes/leyes.shtmlhttp://www.monografias.com/trabajos35/concepto-de-lenguaje/concepto-de-lenguaje.shtml

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    19/138

    1.2.- Relación entre el software y el hardware de un equipo informático.

    El software es un elemento del sistema que es lógico, en lugar

    de físico. Por eso tiene unas características muy diferentes a lasdel hardware. Ambas actividades requieren la construcción deun «producto», pero los métodos son diferentes.

    Diferencias:

    • El software se desarrolla no se fabrica en un sentido clásico.• Los costos del software se encuentran en la ingeniería.• Los proyectos de software no se pueden gestionar como si fueran

    proyectos de fabricación.

    • El software no se «estropea».• La mayoría del software se construye a medida, en vez de ensamblar

    componentes existentes.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    20/138

    El mejor modo para comprender cómo unprograma interactúa con un sistema es revisando

    la funcionalidad básica y el programa básico, irnosdirectamente al concepto de programa y desistema en su mínima expresión. Para ello, vamosa revisar el funcionamiento de una única

    instrucción dentro del conocido simulador VonNeumann.

    En ella el procesador ejecutará las instrucciones una auna. Para cada instrucción realizará una serie demicroinstrucciones para llevarla a cabo.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    21/138

    Vamos a realizar el recorrido que efectúa unainstrucción de un modo conceptual, nada

    técnico, profundizando más y más dentro de lainterpretación que hace el sistema de nuestroprograma. Imaginemos que tenemos unprograma extremadamente sencillo que pide por

    teclado dos números y los suma. La instrucciónque realizará la operación de nuestro programase podría corresponder con la siguiente línea:

    c = a + b;

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    22/138

    El ordenador tendrá reservada unacantidad de posiciones de memoriadefinidas por el tipo de variable que secorresponden con las variables denuestra instrucción. Es decir, nuestrasvariables “a”, “b” y “c” tendrán unasposiciones de memoria definidas quees donde el sistema almacenará los

    valores de las variables.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    23/138

    No obstante, el procesador no puedeejecutar esa instrucción por sencillaque sea de un solo golpe, la AL U

    ( Aritmetic Logic Unit ) tiene unnúmero muy limitado de operacionesque puede realizar, usualmente

    SUMAR y RESTAR .

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    24/138

     Además, para nuestra demostración

    deberemos tener en cuenta una serie dereglas intrínsecas del sistema:

    •  La ALU solo puede realizar unaoperación a la vez.

    •  El registro temporal de la ALU, el bus y

    los registros solo pueden almacenar undato a la vez.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    25/138

    Si definimos (para simplificar el modelo) que lasposiciones de memoria de “a”, “b” y “c” se

    corresponden con los registros R1, R2 y R3, lasmicroinstrucciones que tendría que realizar nuestramáquina serían las siguientes:

    R1 – Bus ;Bus – ALU-Temp ;

    R2 – Bus ; ALU-SUMAR ;

     ALU – Bus ;Bus – R3;

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    26/138

    Hoy en día, con los microprocesadores

    modernos, el funcionamiento, aunque muysimilar en esencia, de cómo son interpretadaslas instrucciones de nuestro programa por elsistema puede variar, sobre todo en lo que

    las reglas se refiere.

    Sin embargo, hay cosas que no cambian, elprograma se sigue almacenando en una

    memoria no volátil y se sigue ejecutando en lamemoria de acceso aleatorio, al igual que todaslas variables utilizadas.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    27/138

    La interacción con el sistema no es siempre unarelación directa, no todos los programas tienen accesolibre y directo al hardware, es por ello que se definenlos programas en dos clasificaciones generales:software de sistema y software de aplicación.

    Es el software de sistema el que se encarga de

    controlar y gestionar el hardware, así como degestionar el software de aplicación, de hecho, en unsoftware de sistema, como el sistema operativo, esen donde se ejecuta realmente el software deaplicación.

    Será el software de aplicación el que incorpore(gracias al compilador) las librerías necesarias paraentenderse con el sistema operativo, y éste a su vez

    sería el que se comunicase con el hardware.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    28/138

    1.3.- Código fuente, código objeto ycódigo ejecutable, máquinas virtuales

    Q é l ódi f t ?

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    29/138

    ¿Qué es el código fuente?

    • El término código tiene diferentes usos ysignificados. Se trata, por ejemplo, de unacombinación de signos que, dentro de unsistema establecido, tiene un determinado

    valor: “El programador tendrá que corregir elcódigo del software para que funcione demanera correcta” .

    •  En el caso de la informática, se conoce comocódigo fuente al texto desarrollado en unlenguaje de programación y que debe sercompilado o interpretado para poder ejecutarseen una computador  

    http://definicion.de/signos/http://definicion.de/sistemahttp://definicion.de/informaticahttp://definicion.de/computadorahttp://definicion.de/computadorahttp://definicion.de/informaticahttp://definicion.de/sistemahttp://definicion.de/signos/

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    30/138

    ¿Qué es el código fuente?

    • Texto escrito en un lenguaje deprogramación específico y que puede serleído por un programador . Debe traducirse

    a lenguaje máquina para que pueda serejecutado por la computadora o abytecode para que pueda ser ejecutadopor un intérprete. Este proceso se

    denomina compilación.

    http://www.alegsa.com.ar/Dic/lenguaje%20de%20programacion.phphttp://www.alegsa.com.ar/Dic/lenguaje%20de%20programacion.phphttp://www.alegsa.com.ar/Dic/programador.phphttp://www.alegsa.com.ar/Dic/compilacion.phphttp://www.alegsa.com.ar/Dic/compilacion.phphttp://www.alegsa.com.ar/Dic/programador.phphttp://www.alegsa.com.ar/Dic/lenguaje%20de%20programacion.phphttp://www.alegsa.com.ar/Dic/lenguaje%20de%20programacion.php

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    31/138

    ¿Qué es el código fuente?

    •  Acceder al código fuente de un programasignifica acceder a los algoritmos desarrollados por sus creadores. Es la

    única manera de modificar eficaz yeficientemente un programa.

    http://www.alegsa.com.ar/Dic/algoritmo.phphttp://www.alegsa.com.ar/Dic/algoritmo.php

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    32/138

    ¿Qué es el código fuente?

    • Liberar un código fuente significa compartir esetexto con cualquier persona que lo desee, estoimplica que cualquiera puede analizarlo,copiarlo o modificarlo. Las aplicaciones que

    liberan sus códigos suelen ser gratuitas bajolicencia GNU. La liberación de un código de unprograma implica ciertos riesgos en cuanto a laseguridad del mismo, pues su funcionamientoexacto queda expuesto. El código fuente no

    suele liberarse para las aplicacionescomerciales y no puede obtenerse el códigofuente original a través de los programas yacompilados.

    http://www.alegsa.com.ar/Dic/gnu.phphttp://www.alegsa.com.ar/Dic/gnu.php

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    33/138

    ¿Qué es el código fuente?

    • El código fuente de un programa informático (o software) es un conjuntode líneas de texto que son las instrucciones que debe seguir lacomputadora para ejecutar dicho programa. Por tanto, en el código fuentede un programa está descrito por completo su funcionamiento.

    • El código fuente de un programa está escrito por un programador  en algúnlenguaje de programación, pero en este primer estado no es directamenteejecutable por la computadora, sino que debe ser traducido a otro lenguaje(el lenguaje máquina o código objeto) que sí pueda ser ejecutado por elhardware de la computadora. Para esta traducción se usan los llamadoscompiladores, ensambladores, intérpretes y otros sistemas de traducción.

    • El término código fuente también se usa para hacer referencia al códigofuente de otros elementos del software, como por ejemplo el código fuentede una página web que está escrito en el lenguaje de marcado HTML o enJavascript u otros lenguajes de programación web y que es posteriormenteejecutado por el navegador web para visualizar dicha página cuando esvisitada.

    • El área de la informática que se dedica a la creación de programas y, portanto a la creación de su código fuente, es la programación.

    http://es.wikipedia.org/wiki/Programa_inform%C3%A1ticohttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Lenguaje_m%C3%A1quinahttp://es.wikipedia.org/wiki/C%C3%B3digo_objetohttp://es.wikipedia.org/wiki/Hardwarehttp://es.wikipedia.org/wiki/Compiladorhttp://es.wikipedia.org/wiki/Ensambladorhttp://es.wikipedia.org/wiki/Int%C3%A9rprete_(inform%C3%A1tica)http://es.wikipedia.org/wiki/P%C3%A1gina_webhttp://es.wikipedia.org/wiki/Lenguaje_de_marcadohttp://es.wikipedia.org/wiki/HTMLhttp://es.wikipedia.org/wiki/Javascripthttp://es.wikipedia.org/wiki/Navegador_webhttp://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3nhttp://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Navegador_webhttp://es.wikipedia.org/wiki/Javascripthttp://es.wikipedia.org/wiki/HTMLhttp://es.wikipedia.org/wiki/Lenguaje_de_marcadohttp://es.wikipedia.org/wiki/P%C3%A1gina_webhttp://es.wikipedia.org/wiki/Int%C3%A9rprete_(inform%C3%A1tica)http://es.wikipedia.org/wiki/Ensambladorhttp://es.wikipedia.org/wiki/Compiladorhttp://es.wikipedia.org/wiki/Hardwarehttp://es.wikipedia.org/wiki/C%C3%B3digo_objetohttp://es.wikipedia.org/wiki/Lenguaje_m%C3%A1quinahttp://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3nhttp://es.wikipedia.org/wiki/Programadorhttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Programa_inform%C3%A1tico

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    34/138

    CÓDIGO FUENTE

    • Cada lenguaje de programación tiene unsu propio código fuente.

    •  A continuación veremos ejemplos decódigos fuente que pertenecen a distintoslenguajes de programación.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    35/138

    Ejemplo Código Fuente de Java

    // Applet HolaMundo de ejemplo

    import java.awt.Graphics;

    import java.applet.Applet;public class HolaMundo extends Applet {public void paint( Graphics g ) {g.drawString( "Hola Mundo!",25,25 ) ; }

    }

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    36/138

    Ejemplo Código Fuente Java

    class Radio { private String r = new String("Radio:"); public void agrega(String a) { r += a; } publicvoid imprimir() { System.out.println(r); } public void

    frecuencia() { agrega(" frecuencia() "); } public voidvolumen() { agrega(" volumen() "); } public voidmodelo() { agrega(" modelo() "); } public static voidmain(String[] args) { Radio x = new Radio();

    x.frecuencia() ; x.volumen(); x.modelo();x.imprimir(); } }

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    37/138

    Ejemplo Código Fuente Pascal

    procedure estrella(x,y,n,r,rMin,color:integer; reduc,alfa:real);vari,x2,y2:integer;inc:real;

    procedure rama(x,y:integer; r,alfa:real);var

    i,x2,y2:integer;inc:real;

    begininc:=alfa;for i:=1 to n-1 dobeginx2:=round(x+r*cos(inc));

    y2:=round(y+r*sin(inc));draw(x,y,x2,y2,color);if r>rMin then rama(x2,y2,r*reduc,inc-(n-2)/n*pi);inc:=inc+2*pi/n;

    end;end;

    begininc:=alfa;

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    38/138

    inc:=alfa;for i:=1 to n dobeginx2:=round(x+r*cos(inc));y2:=round(y+r*sin(inc));draw(x,y,x2,y2,color);

    rama(x2,y2,r*reduc,inc-(n-2)/n*pi);inc:=inc+2*pi/n;end;

    end;

    constreduc:array[3..6] of real=(0.63,0.5,0.38,0.32);rMin:array[3..6] of byte=(1,2,1,1);

    vari:integer;tecla:char;

    BEGINfor i:=3 to 6 dobegin

    graphColorMode;palette(2);estrella(160,100,i,45,rMin[i],3,reduc[i],0.1);read(kbd,tecla);

    end;textMode;

    END.

    Ó

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    39/138

    EJEMPLO CÓDIGO FUENTEDELPHI

    public constructor create(AOwner :TComponent); override; destructor destroy;override;

    constructor TComponent.Create(AOwner :TComponent); begin inherited

    Create(AOwner); ... end; destructorTComponent.Destroy; begin ... inheriteddestroy; end;

    Ó

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    40/138

    EJEMPLO CÓDIGO FUENTEDELPHI

    constructor TBlinkLabel.Create(AOwner :TComponent); begin inherited Create(AOwner);{Llama al constructor original (heredado)} FTimer:= TTimer.Create(Self); {Creamos el timer}

    FVelocidad := 400; {Frecuencia (velocidad) pordefecto} FTimer.Enabled:=True; {Activamos eltimer} FTimer.OnTimer:=parpadea; {Asiganamosel método parpadea} FTimer.Interval:=FVelocidad;

    {Asignamos el intervalo del timer = frecuenciaparpadeo} end;

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    41/138

    Ejemplo de Código fuente C++

    /* Programa que calcula la letra del DNI (español) a partir del número */

    #include main() {

    int a, b=0, l;

    char cifra;

    char letras[]="TRWAGMYFPDXBNJZSQVHLCKE\0";printf("Introduzca n§ DNI(8 car) ");

    for (a=0; a

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    42/138

    EJEMPLO CÓDIGO FUENTE C++

    Ejemplo: Hola mundo 

    /* Inclusión de archivos */

    #include /* Función principal */

    int main (int argc,char **argv)

    { /* Impresión por pantalla y salida delprograma*/

    printf("Hola mundo\n"); return 0; }

    Ó

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    43/138

    EJEMPLO CÓDIGO FUENTECOBOL

    DATA DIVISION.WORKING-STORAGE SECTION.1 OK PIC X.PROCEDURE DIVISION.

    PARRAFO.DISPLAY "Esta es una prueba en RM-COBOL"

    LINE 1 POSITION 1 ERASE"Oprime una tecla" LINE 23 POSITION

    40 BLINK ACCEPT OKSTOP RUN.

    Ó

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    44/138

    EJEMPLO DE CÓDIGO FUENTEHTML

    Primer ejemplo en HTML Mi colección de discosHorslips

    Este grupo irlandés nació en 1970, y en sus diez añosde existencia, hasta su separación en 1980, recorrieron Europa y Américatocando en directo. Aunque su música evolucionó sensiblemente en esetiempo, siempre se caracterizó por imprimir de manera única las raíces celtas yel sonido del rock. Horslips, sin haber llegado a ser un fenómeno de masas, haescrito algunas de las páginas más brillantes de la música irlandesa

    reciente.

    "Happy To Meet, Sorry To Part", 1972 "TheTáin", 1973 Etcétera, no los pongo todos. Gwendal

    Gwendal es probablemente uno de los grupos demúsica celta más conocidos en España. No en vano, su único disco en directofue grabado en España. Este grupo bretón, da a los temas tradicionalesirlandeses un estilo único, mezclando delicadeza, virtuosismo y energía demanera magistral.

    "Gwendal", 1974 "Gwendal 2",

    1975 Etcétera, tampoco los pongo todos

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    45/138

    EJEMPLO CÓDIGO FUENTE CSS

    .centrado{text-align:center;}

    Texto centrado

    EJEMPLO CÓDIGO FUENTE

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    46/138

    EJEMPLO CÓDIGO FUENTEFORTRAN

    character[(len=)][,][::][=]

    real(kind=4)::x=1.e0real(kind=8)::y=-2.d-5real(kind=16)::qx=-3.q-100

    integer, parameter::np=8real(kind=np)::r=1.e-10_np

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    47/138

    Código objeto

    • En programación, se llama código objeto alcódigo que resulta de la compilación del códigofuente.

    • Consiste en lenguaje máquina o bytecode y sedistribuye en varios archivos que correspondena cada código fuente compilado. Para obtenerun programa ejecutable se han de enlazar todos

    los archivos de código objeto con un programallamado enlazador  (linker ).

    http://es.wikipedia.org/wiki/Programaci%C3%B3nhttp://es.wikipedia.org/wiki/Compilaci%C3%B3nhttp://es.wikipedia.org/wiki/C%C3%B3digo_fuentehttp://es.wikipedia.org/wiki/C%C3%B3digo_fuentehttp://es.wikipedia.org/wiki/Lenguaje_m%C3%A1quinahttp://es.wikipedia.org/wiki/Bytecodehttp://es.wikipedia.org/wiki/Ejecutablehttp://es.wikipedia.org/wiki/Enlazadorhttp://es.wikipedia.org/wiki/Enlazadorhttp://es.wikipedia.org/wiki/Ejecutablehttp://es.wikipedia.org/wiki/Bytecodehttp://es.wikipedia.org/wiki/Lenguaje_m%C3%A1quinahttp://es.wikipedia.org/wiki/C%C3%B3digo_fuentehttp://es.wikipedia.org/wiki/C%C3%B3digo_fuentehttp://es.wikipedia.org/wiki/Compilaci%C3%B3nhttp://es.wikipedia.org/wiki/Programaci%C3%B3n

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    48/138

    Código Objeto

    • En programación, cuando se desarrolla unprograma, en la fase de codificación elcompilador traducirá el codigo fuente a

    codigo máquina, también llamado códigoobjeto, siempre y cuando, el propiocompilador no detecte ningún error en

    dicho código fuente.

    http://www.carlospes.com/minidiccionario/programa.phphttp://www.carlospes.com/minidiccionario/codificacion.phphttp://www.carlospes.com/minidiccionario/codigo_fuente.phphttp://www.carlospes.com/minidiccionario/codigo_maquina.phphttp://www.carlospes.com/minidiccionario/codigo_maquina.phphttp://www.carlospes.com/minidiccionario/codigo_fuente.phphttp://www.carlospes.com/minidiccionario/codificacion.phphttp://www.carlospes.com/minidiccionario/programa.php

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    49/138

    Código objeto

    • Término genérico para nombrar lasinstrucciones del programa, utilizadas en dossentidos generales. El primero se refiere al

    código fuente, legible a simple vista, que son lasinstrucciones escritas por el programador en unlenguaje de programación. El segundo se refiereal código máquina ejecutable, que son las

    instrucciones convertidas de código fuente ainstrucciones que el ordenador o computadorapuede comprender.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    50/138

    Código Objeto

    • En informática, código generado por uncompilador o un ensamblador, traducido apartir del código fuente de un programa.

    Casi siempre este término se refiere alcódigo máquina que puede ejecutarsedirectamente en la unidad central deproceso (CPU) del sistema, pero también

    puede ser código fuente de lenguajeensamblador o una variante de códigomáquina.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    51/138

    Código Ejecutable

    • Código ejecutable: resultado de enlazaruno o varios fragmentos de código objeto.Constituye un archivo binario con un

    formato tal que el sistema operativo escapaz de cargarlo en la memoria de unacomputadora, y proceder a su ejecución.El código ejecutable es directamente

    inteligible por el procesador.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    52/138

    Código Ejecutable

    • Código (programa) ejecutable: listo paraser ejecutado en el computador.

    •  Puede contener errores lógicos(programa no bien diseñado).

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    53/138

    Código Ejecutable

    • Código ejecutable corresponde a las unidades deprogramas, donde el ordenador puede realizar lasinstrucciones compiladas mediante el compilador y elenlazador de librerías.

    • Generalmente se confunde con el código objeto, ya que

    al leer su estructura se comprende como símbolos. Peroen realidad, este código se encuentra empaquetado ylisto para ser ejecutado en cualquier computadora.Generalmente vienen con la extensión EXE o COM, silos han de ejecutar computadoras con Sistema

    Operativo de Windows o con bits de marca que traeLinux para ser ejecutable.• El beneficio que esto trae es que al tener el código

    ejecutable, podemos saber que la compilación fuerealizada correctamente y que el programa, si no tieneerrores de manejo, puede funcionar correctamente, yaque esta libre de errores de variables, signos y demás.

    http://www.tecnologia.us/http://www.tecnologia.us/

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    54/138

    Máquinas Virtuales

    • En informática una máquina virtual es unsoftware que emula a una computadora ypuede ejecutar programas como si fuese

    una computadora real. Este software enun principio fue definido como "unduplicado eficiente y aislado de unamáquina física". La acepción del término

    actualmente incluye a máquinas virtualesque no tienen ninguna equivalenciadirecta con ningún hardware real.

    http://es.wikipedia.org/wiki/Inform%C3%A1ticahttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Inform%C3%A1tica

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    55/138

    Máquina Virtual

    • Una máquina virtual es simplemente unacomputadora abstracta, una computadorao máquina emulada a partir de software.

    Una idea para nada nueva y cuyo términoacuño IBM en 1959.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    56/138

    Máquinas Virtuales

    • Una máquina virtual es como una capa intermedia entreel hardware de la computadora y algún software y puedeencargarse de funciones como traducir instrucciones osimular el funcionamiento de una computadora concreta.

    • Hay desde las más complejas que emulan unacomputadora en su totalidad (Incluyendo tarjetas devideo, discos duros, etc.), hasta otras más sencillas yespecializadas que brindan solo una capa de

    abstracción entre plataformas de hardware y softwaremuy concretas.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    57/138

    Máquinas Virtuales

    • Una característica esencial de lasmáquinas virtuales es que los procesosque ejecutan están limitados por los

    recursos y abstraccionesproporcionados por ellas. Estosprocesos no pueden escaparse de esta

    "computadora virtual".

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    58/138

    Máquinas Virtuales

    • Uno de los usos domésticos más extendidos delas máquinas virtuales es ejecutar sistemasoperativos para "probarlos". De esta forma

    podemos ejecutar un sistema operativo quequeramos probar (GNU/Linux, por ejemplo)desde nuestro sistema operativo habitual (MacOS X por ejemplo) sin necesidad de instalarlo

    directamente en nuestra computadora y sinmiedo a que se desconfigure el sistemaoperativo primario.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    59/138

    Máquinas Virtuales

    Una MV se puede definir sencillamente como unacapa de abstracción que separa el funcionamientode un ordenador de su hardware. Además, las MVse dividen en abstractas o teóricas, como sería lamáquina de Turing (el primer ejemplo de una MV)

    y modelos como el cálculo de π o lambda, yconcretas o prácticas (a las que se quierenormalmente se hace referencia al hablar de MV).En esta sección se tratarán las MV concretas que,como se verá, son capas de software que juegan

    un papel relevante tanto en el funcionamiento delos lenguajes compilados como interpretados.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    60/138

    Máquinas Virtuales

    Las MV se construyeron para simplificar elproceso del control del hardware de un ordenadorporque extienden y enmascaran la funcionalidaddel hardware a través de procedimientos ydatos abstractos. Se pueden identificar dos tiposde MV concretas: las que juegan un papel en lapreparación de un programa para su ejecución

    (tiempo de compilación) y las que permiten laejecución de dicho programa.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    61/138

    Máquinas Virtuales

    Las MV se distinguen entre sí según trescriterios:• La concepción de las MV que tiene el

    desarrollador basada en la definición dellenguaje.• Las facilidades disponibles en el hardware

    del ordenador.• Las decisiones de implementación

    tomadas por los desarrolladores.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    62/138

    Clasificación Máquinas Virtuales

    Se clasifican en dos grandes categoríassegún su funcionalidad y su grado deequivalencia a una verdadera máquina.

    • Máquinas virtuales de sistema (eninglés System Virtual Machine)

    • Máquinas virtuales de proceso (en

    inglés Process Virtual Machine)

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    63/138

    Máquinas Virtuales de Sistema

    • Las máquinas virtuales de sistema, tambiénllamadas máquinas virtuales de hardware,permiten a la máquina física subyacentemultiplicarse entre varias máquinas virtuales,

    cada una ejecutando su propio sistemaoperativo. A la capa de software que permite lavirtualización se la llama monitor de máquinavirtual o "hypervisor". Un monitor de máquina

    virtual puede ejecutarse o bien directamentesobre el hardware o bien sobre un sistemaoperativo ("host operating system").

    Apliación de las máquinas virtuales

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    64/138

     Apliación de las máquinas virtualesde sistema

    • Varios sistemas operativos distintos pueden coexistir  sobre la mismacomputadora, en sólido aislamiento el uno del otro, por ejemplo para probarun sistema operativo nuevo sin necesidad de instalarlo directamente.

    • La máquina virtual puede proporcionar una arquitectura de instrucciones (ISA) que sea algo distinta de la verdadera máquina. Es decir, podemossimular hardware.

    • Varias máquinas virtuales (cada una con su propio sistema operativollamado sistema operativo «invitado» o «guest»), pueden ser utilizadaspara consolidar servidores. Esto permite que servicios que normalmentese tengan que ejecutar en computadoras distintas para evitar interferencias,se puedan ejecutar en la misma máquina de manera completamenteaislada y compartiendo los recursos de una única computadora. Laconsolidación de servidores a menudo contribuye a reducir el coste total delas instalaciones necesarias para mantener los servicios, dado que

    permiten ahorrar en hardware.• La virtualización es una excelente opción hoy día, ya que las máquinas

    actuales (Laptops, desktops, servidores) en la mayoría de los casos estánsiendo "sub-utilizados" (gran capacidad de disco duro, memoria RAM, etc.),llegando a un uso de entre 30% a 60% de su capacidad. Al virtualizar, lanecesidad de nuevas máquinas en una ya existente permite un ahorroconsiderable de los costes asociados (energía, mantenimiento, espacio,

    etc).

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    65/138

    Máquinas Virtuales de Proceso• Una máquina virtual de proceso, a veces llamada

    "máquina virtual de aplicación", se ejecuta como unproceso normal dentro de un sistema operativo ysoporta un solo proceso. La máquina se iniciaautomáticamente cuando se lanza el proceso que sedesea ejecutar y se detiene para cuando éste finaliza.Su objetivo es el de proporcionar un entorno deejecución independiente de la plataforma dehardware y del sistema operativo, que oculte losdetalles de la plataforma subyacente y permita que unprograma se ejecute siempre de la misma forma sobrecualquier plataforma.

    • El ejemplo más conocido actualmente de este tipo demáquina virtual es la máquina virtual de Java. Otramáquina virtual muy conocida es la del entorno .Net deMicrosoft que se llama "Common Language Runtime".

    Inconvenientes de las máquinas

    http://es.wikipedia.org/wiki/M%C3%A1quina_virtual_de_Javahttp://es.wikipedia.org/wiki/.Nethttp://es.wikipedia.org/wiki/Microsofthttp://es.wikipedia.org/wiki/Common_Language_Runtimehttp://es.wikipedia.org/wiki/Common_Language_Runtimehttp://es.wikipedia.org/wiki/Microsofthttp://es.wikipedia.org/wiki/.Nethttp://es.wikipedia.org/wiki/M%C3%A1quina_virtual_de_Java

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    66/138

    Inconvenientes de las máquinasvirtuales

    • Uno de los inconvenientes de las máquinasvirtuales es que agregan gran complejidad alsistema en tiempo de ejecución. Esto tienecomo efecto la ralentización del sistema, es

    decir, el programa no alcanzará la mismavelocidad de ejecución que si se instalasedirectamente en el sistema operativo "anfitrión"(host) o directamente sobre la plataforma de

    hardware. Sin embargo, a menudo la flexibilidadque ofrecen compensa esta pérdida deeficiencia.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    67/138

    Utilidad de las máquinas virtuales

    • Como ves, con las máquinas virtuales podemostener varios sistemas operativos sin necesidadde crear particiones o tener más discos duros,esto nos permitirá poder tener sistemas

    operativos para pruebas.Por ejemplo, que sale una versión beta y noqueremos instalarla en nuestro sistema operativode trabajo, ya que las betas son eso, "pruebas" ypuede que nos deje el sistema operativo inestable,algo que no querremos con nuestro equipo detrabajo.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    68/138

    Utilidad Máquinas Virtuales

    • De esta forma siempre tendremos laoportunidad de probar esos programasbeta sin que afecte a las cosas que

    tenemos instaladas ni que nos obligue aformatear y volver a instalar de nuevo todolo que tenemos.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    69/138

    Ejemplos de Máquinas Virtuales

    • VMWare.

    • VirtualPC.

    • VirtualBox.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    70/138

    1.4.-TIPOS DE LENGUAJESDE PROGRAMACIÓN.

    CLASIFICACIÓN.

    TIPOS DE LENGUAJE DE

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    71/138

    TIPOS DE LENGUAJE DEPROGRAMACIÓN

    Un lenguaje de programación es un idioma artificial diseñado para

    expresar operaciones que pueden ser llevadas a cabo por máquinas

    como las computadoras. Pueden usarse para crear programas que

    controlen el comportamiento físico y lógico de una máquina, paraexpresar algoritmos con precisión, o como modo de comunicación

    humana.

    Está formado por un conjunto de símbolos y reglas sintácticas y

    semánticas que definen su estructura y el significado de sus elementos

    y expresiones. Al proceso por el cual se escribe, se prueba, se depura,

    se compila y se mantiene el código fuente de un programa informático 

    se le llama programación.

    http://es.wikipedia.org/wiki/Lengua_construidahttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Algoritmohttp://es.wikipedia.org/wiki/Sintaxishttp://es.wikipedia.org/wiki/Sem%C3%A1nticahttp://es.wikipedia.org/wiki/Beta_testerhttp://es.wikipedia.org/wiki/Depuradorhttp://es.wikipedia.org/wiki/Compiladorhttp://es.wikipedia.org/wiki/C%C3%B3digo_fuentehttp://es.wikipedia.org/wiki/Programa_inform%C3%A1ticohttp://es.wikipedia.org/wiki/Programa_inform%C3%A1ticohttp://es.wikipedia.org/wiki/C%C3%B3digo_fuentehttp://es.wikipedia.org/wiki/Compiladorhttp://es.wikipedia.org/wiki/Depuradorhttp://es.wikipedia.org/wiki/Beta_testerhttp://es.wikipedia.org/wiki/Sem%C3%A1nticahttp://es.wikipedia.org/wiki/Sintaxishttp://es.wikipedia.org/wiki/Algoritmohttp://es.wikipedia.org/wiki/Softwarehttp://es.wikipedia.org/wiki/Computadorahttp://es.wikipedia.org/wiki/Lengua_construida

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    72/138

    • Un lenguaje de programación" es un lenguaje diseñado para

    describir el conjunto de acciones consecutivas que un equipo debe

    ejecutar. Por lo tanto, un lenguaje de programación es un modopráctico para que los seres humanos puedan dar instrucciones a un

    equipo.

    • Por otro lado, el término "lenguaje natural" define un medio de

    comunicación compartido por un grupo de personas (por ejemplo:

    inglés o francés).

    • Los lenguajes que los equipos usan para comunicarse entre ellos

    no tienen nada que ver con los lenguajes de programación; se losconoce como protocolos de comunicación. Se trata de dos

    conceptos totalmente diferentes. Un lenguaje de programación es

    muy estricto:

    TIPOS DE LENGUAJES DE

    http://es.kioskea.net/contents/internet/protocol.php3http://es.kioskea.net/contents/internet/protocol.php3

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    73/138

    TIPOS DE LENGUAJES DEPROGRAMACIÓN

    • El ordenador sólo entiende un lenguajeconocido como código binario o códigomáquina, consistente en ceros y unos. Es

    decir, sólo utiliza 0 y 1 para codificarcualquier acción.

    TIPOS DE LENGUAJE DE

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    74/138

    TIPOS DE LENGUAJE DEPROGRAMACIÓN

    Existen tres tipos de lenguajes :

    *Los lenguajes de bajo nivel.

    *Los lenguajes de medio nivel.

    *Los lenguajes de alto nivel.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    75/138

    Lenguajes de bajo nivel

    • Son lenguajes totalmente dependientes de lamáquina, es decir que el programa que serealiza con este tipo de lenguajes no se puedenmigrar o utilizar en otras maquinas.

     Al estar prácticamente diseñados a medida delhardware, aprovechan al máximo las

    características del mismo.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    76/138

    •  A los lenguajes de bajo nivel también seles conoce como lenguajes de primerageneración.

    • Sólo hay un lenguaje de primerageneración: el lenguaje máquina.

    • El lenguaje máquina ordena a la máquina las

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    77/138

    • El lenguaje máquina ordena a la máquina las

    operaciones fundamentales para su funcionamiento.

    Consiste en la combinación de 0's y 1's para formar

    las ordenes entendibles por el hardware de la

    maquina.Este lenguaje es mucho más rápido que los

    lenguajes de medio o alto nivel.

    La desventaja es que son bastantes difíciles de

    manejar y usar, además de tener códigos fuente

    enormes donde encontrar un fallo es casi imposible.

    G ÁQ

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    78/138

    LENGUAJE MÁQUINA

    • El lenguaje máquina, por lo tanto, no escomprensible para los seres humanos,razón por la cual se han desarrollado

    lenguajes intermediarios comprensiblespara el hombre. El código escrito en estoslenguajes intermediarios se transforma en

    código máquina para que el procesadorpueda procesarlo.

    LENGUAJE ENSAMBLADOR

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    79/138

    LENGUAJE ENSAMBLADOR

    • El lenguaje ensamblador  es un derivado del lenguaje

    maquina y esta formado por abreviaturas de letras y

    números llamadas mnemotécnicos.• Con la aparición de este lenguaje se crearon los

    programas traductores para poder pasar los programas

    escritos en lenguaje ensamblador  a lenguaje máquina.

    S t j t l ódi

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    80/138

    • Su ventaja con respecto al código

    máquina es que los códigos fuentes eran

    más cortos y los programas creados

    ocupaban menos memoria.

    • Las desventajas de este lenguaje siguensiendo prácticamente las mismas que las

    del lenguaje máquina, añadiendo la

    dificultad de tener que aprender un nuevo

    lenguaje difícil de probar y mantener.

    • El ensamblador fue el primer lenguaje de programación utilizado

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    81/138

    El ensamblador  fue el primer lenguaje de programación utilizado.

    Es muy similar al lenguaje máquina, pero los desarrolladores

    pueden comprenderlo. No obstante, este lenguaje se parece tanto

    al lenguaje máquina que depende estrictamente del tipo de

    procesador utilizado (cada tipo de procesador puede tener su propio

    lenguaje máquina). Así, un programa desarrollado para un equipo

    no puede ser portado a otro tipo de equipo.

    • El término "portabilidad" describe la capacidad de usar un

    programa de software en diferentes tipos de equipos. Para poder

    utilizar un programa de software escrito en un código ensamblador

    en otro tipo de equipo, ¡a veces será necesario volver a escribir todo

    el programa!

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    82/138

    • El lenguaje ensambladores un lenguaje de medionivel.

    • Los lenguajes de medionivel son lenguajes desegunda generación.

    LENGUAJES DE ALTO NIVEL

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    83/138

    LENGUAJES DE ALTO NIVEL

    • Son aquellos que se encuentran más cercanos allenguaje natural que al lenguaje máquina.

    Están dirigidos a solucionar problemas mediante el uso

    de Estructuras Dinámicas de Datos, algo muyutilizado en todos los lenguajes de programación. Son

    estructuras que pueden cambiar de tamaño durante la

    ejecución del programa. Nos permiten crear estructurasde datos que se adapten a las necesidades reales de un

    programa.

    • Se tratan de lenguajes independientes de la arquitectura del

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    84/138

    ordenador. Por lo que, en principio, un programa escrito en un

    lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin

    ningún tipo de problema.

    Estos lenguajes permiten al programador olvidarse por completo del

    funcionamiento interno de la maquina/s para la que están

    diseñando el programa. Tan solo necesitan un traductor que

    entiendan el código fuente como las características de la maquina.

    Suelen usar tipos de datos para la programación y hay lenguajes de

    propósito general (cualquier tipo de aplicación) y de propósito

    especifico (como FORTRAN para trabajos científicos).

    EVOLUCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    85/138

    Se puede dividir en 5 etapas o generaciones.

    • Primera generación: Cadenas interminables de secuencias de 1s y

    0s que conforman operaciones que la máquina puede entender sin

    interpretación alguna. El lenguaje maquina.

    • Segunda generación: los lenguajes de segunda generación tienen

    definidas unas instrucciones para realizar operaciones sencillas con

    datos simples o posiciones de memoria. El lenguaje clave de la

    segunda generación es sin duda el lenguaje ensamblador .

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    86/138

    Tercera generación: la gran mayoría de los lenguajes

    de programación que se utilizan hoy en día pertenecen a

    este nivel de abstracción, en su mayoría, los lenguajes

    del paradigma de programación orientada a objetos, son

    lenguajes de propósito general que permiten un alto

    nivel de abstracción y una forma de programar mucho

    más entendible e intuitiva, donde algunas instrucciones

    parecen ser una traducción directa del lenguaje humano.

    Ejemplos: C, Pascal, Cobol, Java, C++,…

    C arta generación l j d ó it

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    87/138

    Cuarta generación. son lenguajes creados con un propósito

    específico, al ser un lenguaje tan específico permite reducir la

    cantidad de líneas de código que tendríamos que hacer conotros lenguajes de tercera generación mediante

    procedimientos específicos. Por ejemplo, si tuviésemos que

    resolver una ecuación en un lenguaje de tercera generación,

    tendríamos que crear diversos y complejos métodos para

    poder resolverla, mientras que un lenguaje de cuarta

    generación dedicado a este tipo de problemas ya tiene esas

    rutinas incluidas en el propio lenguaje, con lo que solotendríamos que invocar la instrucción que realiza la operación

    que necesitamos. Ejemplos: PL/SQL, Natural, …

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    88/138

    Quinta generación: también llamados lenguajes

    naturales, pretenden abstraer más aún el lenguaje

    utilizando un lenguaje natural con una base de

    conocimientos que produce un sistema basado en el

    conocimiento. Pueden establecer el problema que hay

    que resolver y las premisas y condiciones que hay que

    reunir para que la máquina lo resuelva. Este tipo de

    lenguajes los podemos encontrar frecuentemente en

    inteligencia artificial y lógica. Ejemplo: LISP.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    89/138

    1.5.-CARACTERÍSTICAS DELOS LENGUAJES MÁS

    DIFUNDIDOS.

    C

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    90/138

    C

    • Es un lenguaje de propósito general, de alto nivel, (aunque controla

    perfectamente las operaciones de bajo nivel), y estructurado.

    • Es altamente portable de unos sistemas a otros, siendo ese el motivo

    de su creación e implantación. Esta se hizo fundamentalmente para

    desarrollar el sistema operativo UNIX.• Se caracteriza por su gran optimización entre el programa fuente y el

    compilado, lo que le proporciona una gran rapidez de ejecución, es decir

    hay una gran semejanza entre el código en bajo nivel que genera una

    rutina en C, y el código que podría escribirse en lenguaje máquina.

    • Es Case Sensitive (distingue las mayúsculas de las minúsculas). Esto

    quiere decir que considera como diferentes la variables hola, HOLA y

    Hola.

    C++

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    91/138

      C

    • Fue creado como un puente entre el lenguaje C y la programación

    orientada a objetos.

    • Se puede usar en combinación con C. Cualquier sentencia en C es correcta

    en C++.

    • Es un lenguaje de propósito general.• Es un lenguaje de alto nivel orientado a objetos.

    • Reutilización del código en forma de librerías de usuario.

    • Como C, genera programas rápidos.

    • El código es transportable, es decir, un programa ANSI en C o C++ podrá

    ejecutarse en cualquier máquina y bajo cualquier sistema operativo.

    • Como C, proporciona un acceso a bajo nivel de hardware sólo igualado por

    el ensamblador.

    JAVA

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    92/138

    JAVA

    • Es un lenguaje de programación orientado a objetos.

    • De propósito general.

    • El uso de la máquina virtual JVM (Java Virtual Machine) garantiza

    la independencia de la plataforma en Java. Si disponemos de una

    máquina virtual para nuestra plataforma, podremos ejecutar elmismo programa escrito en Java sin necesidad de volverlo a

    compilar.

    • En el proceso de compilación de un programa en Java, se genera un

    código intermedio, llamado bytecode, que la máquina virtual

    interpreta y traduce a llamadas nativas del sistema sobre el que se

    ejecuta la máquina virtual.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    93/138

    • Seguridad desde el punto de vista del programador:

    a. Comprobación estricta de tipos.

    b. Gestión de excepciones.

    c. No existen punteros.

    d. Recolector de basura.

    • Seguridad desde el punto de vista del usuario de aplicaciones:

    a. Los programas se ejecutan sobre una máquina virtual.

    • Soporta programación concurrente de modo nativo.

    • Los tipos de datos están estandarizados.

    • Sólo se admite herencia simple.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    94/138

    1.6.- Procesos de obtención decódigo ejecutable a partir de

    código fuente: compilación,linkado, herramientas

    implicadas.

    U té it l l j d

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    95/138

    • Un programa, esté escrito en el lenguaje de

    programación en el que esté, necesita ser traducido

    para ser ejecutado.

    • Los distintos tipos de código por los que pasará

    nuestro programa son:

    a. Código fuente

    b. Código objeto

    c. Código ejecutable

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    96/138

    • Código fuente: el código fuente de un programa informático es un

    conjunto de instrucciones escritas en un lenguaje de programación

    determinado. Es decir, es el código en el que nosotros escribimosnuestro programa.

    • Código objeto: el código objeto es el código resultante de compilar el

    código fuente. Si se trata de un lenguaje de programación compilado, el

    código objeto será código máquina.

    • Código ejecutable: el código ejecutable es el resultado obtenido de

    enlazar nuestro código objeto con las librerías. Este código ya es

    nuestro programa ejecutable, programa que se ejecutará directamente

    en nuestro sistema o sobre una máquina virtual.

    COMPILACIÓN

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    97/138

     Aunque el proceso de obtener nuestro código ejecutable

    pase tanto por un compilador como por un enlazador, se

    suele llamar al proceso completo “compilación”. 

    Todo este proceso se lleva a cabo mediante dos

    programas: el compilador  y el enlazador . Mientras que el

    enlazador  solamente une el código objeto con las

    librerías, el trabajo del compilador  es mucho más

    completo.

    COMPILACIÓN

    Fases de la compilación:

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    98/138

    • Análisis lexicográfico: se leen de manera secuencial todos los

    caracteres de nuestro código fuente, buscando palabras

    reservadas, operaciones, caracteres de puntuación y

    agrupándolos todos en cadenas de caracteres que se denominan

    lexemas.

    • Análisis sintáctico-semántico: agrupa todos los componentes

    léxicos estudiados en el análisis anterior en forma de frases

    gramaticales. Con el resultado del proceso del análisis sintáctico,

    se revisa la coherencia de las frases gramaticales, si su

    “significado” es correcto, si los tipos de datos son correctos,.., y

    así consecutivamente con todas las reglas semánticas de

    nuestro lenguaje.

    • Generación de código intermedio: una vez finalizado el análisis se genera

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    99/138

    • Generación de código intermedio: una vez finalizado el análisis, se genera

    una representación intermedia a modo de pseudoensamblador con el

    objetivo de facilitar la tarea de traducir al código objeto.• Optimización de código: revisa el código pseudoensamblador generado en

    el paso anterior optimizándolo para que el código resultante sea más fácil y

    rápido de interpretar por la máquina.

    • Generación de código: genera el código objeto de nuestro programa en un

    código de lenguaje máquina relocalizable, con diversas posiciones de

    memoria sin establecer, ya que no sabemos en qué parte de la memoria

    volátil se va a ejecutar nuestro programa.• Enlazador de librerías: como se ha comentado anteriormente, se enlaza

    nuestro código objeto con las librerías necesarias, produciendo en último

    término nuestro código final o código ejecutable.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    100/138

    1.7.- Aplicaciones informáticas. Definición. Clasificación.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    101/138

    Concepto de aplicación

    Una aplicación es un tipo de programa informático diseñado

    como herramienta para permitir a un usuario realizar tareas. Estolo diferencia principalmente de otros tipos de programas como los

    sistemas operativos (que hacen funcionar al ordenador) y las

    utilidades (que realizan tareas de mantenimiento o de usogeneral).

    Ejemplos de programas de aplicación pueden ser: programas

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    102/138

    de comunicación de datos, multimedia, presentaciones,

    diseño gráfico, cálculo, finanzas, correo electrónico,navegador web, compresión de archivos, presupuestos de

    obras, gestión de empresas, etc.

    Ciertas aplicaciones desarrolladas «a medida» suelen ofrecer

    una gran potencia ya que están exclusivamente diseñadas para

    resolver un problema específico. Otros, llamados paquetes 

    integrados de software, ofrecen menos potencia pero a cambio

    incluyen varias aplicaciones, como un programa procesador de

    textos, de hoja de cálculo y de base de datos.

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    103/138

    TIPOS DE APLICACIONES:

    •Aplicaciones verticales: de finalidad específica para

    un tipo muy delimitado de usuarios (médicos,

    abogados, arquitectos…),…Ejemplo: AUTOCAD. 

    •Aplicaciones horizontales: de utilidad para una

    amplísima gama de usuarios de cualquier tipo. Ejemplo:

    paquete Office.

    1.8.- Fases del desarrollo de una

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    104/138

    aplicación, pruebas, documentación,explotación y mantenimiento entre otros.

    CONCEPTOS PREVIOS

    • Sistema: Es un conjunto de elementos que interaccionan entre

    sí, orientados a la consecución de un objetivo común. Estásituado en un entorno o ambiente con el que interactúa, recibe

    entradas y produce salidas. Un sistema puede formar parte de

    otro más general, que sería su entorno, y/o estar formado por

    otros sistemas, que en este caso lo tendrían a él como entornocomún, denominándose subsistemas. Ejemplos: una escuela, unbanco, un hospital,… 

    • Entidades: Las entidades o componentes de un

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    105/138

    Entidades: Las entidades o componentes de unsistema son aquellas unidades que, por suscaracterísticas y relaciones, determinan la estructura y

    la conducta del sistema. Es aquel objeto, real oabstracto, acerca del cual se desea almacenarinformación. Pueden ser tangibles como unamaquinaria, una persona, un edificio o intangibles como

    los costos, la rentabilidad, etc.

    • Atributos: Características asociadas a las entidades.Por ejemplo, a la entidad persona se le puede asociar elatributo edad.

    • Relaciones: Es una asociación o correspondenciaexistente entre una o varias entidades. Por ejemplo: laentidad alumno establece una relación con la entidad

    asignatura que se llama matrícula

    • Medio ambiente: El medio ambiente es el conjunto de entidades(sistemas) donde se encuentra inmerso el sistema objeto de estudio

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    106/138

    (sistemas) donde se encuentra inmerso el sistema objeto de estudio .• Contexto: El contexto es la parte del medio ambiente que se relaciona e

    interactúa directamente con el sistema en cuestión.

    Ejemplo: un sistema de COMERCIALIZACION esta inserto en un contextode MERCADO donde interactúan otros sistemas como la COMPETENCIA yel CONSUMIDOR. Pero este MERCADO esta inserto en la ECONOMIANACIONAL. Para el sistema de COMERCIALIZACION la ECONOMIA

    NACIONAL es el medio ambiente donde se halla inmerso el contextollamado MERCADO.

    • Entradas y salidas: El sistema interactúa con el

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    107/138

    ycontexto, de esta interacción se producen las entradasdel contexto (energía, materias primas, dinero,información, etc.) y las salidas (productos, etc.) haciaéste.

    • Retroalimentación: Existen, en los sistemas,determinados controles que se realizan sobre unaporción de las salidas del sistema, dichos controlesgeneran entradas que producen acciones sobre el

    mismo sistema.

    • Objetivos: Todo sistema para mantenerse enequilibrio debe plantearse metas u objetivos, pero

    estos no deben ser vistos como al o estático a ue

    CLASIFICACIÓN DE SISTEMAS

    a) Por su naturaleza:

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    108/138

    a) Por su naturaleza:• Naturales: sistemas creados en los que el hombre no

    interviene en su creación.• Artificiales: sistemas creados por el hombre.

    b) Por su relación con el Medio Ambiente:• Abierto: sistemas que interactúan con el contexto,

    intercambiando elementos, sin esta interacción no podríanexistir.

    • Cerrado: sistemas aislados, no interaccionan con elcontexto.

    c) Por su dependencia del Medio Ambiente:• Adaptable(dinámico): sistemas que ante un cambio en el

    contexto reaccionan en forma adecuada, teniendo encuenta la finalidad para la que fueron creados.

    • Proceso: Es el componente que transforma el estado original de las

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    109/138

    Proceso: Es el componente que transforma el estado original de las

    entradas en salidas. La transformación es una serie de operaciones,

    reglas, procedimientos, que responden a una lógica y orden.

    • Sistemas de información: tienen como misión asegurar que la

    información necesaria fluya de unos subsistemas a otros dentro del

    sistema. Los elementos de un sistema de información son muy variados;pueden agruparse en recursos físicos, recursos humanos,

    documentación y una serie de normas, reglas y procedimientos que

    determinan los flujos de información tanto internos como hacia y desde

    el exterior, así como el uso y administración de los recursos.

    • Sistemas de Información Automatizado: Un sistema de información

    automatizado en forma parcial o total, utiliza ordenadores para

    almacenar los datos de una organización y ponerlos a disposición del

    Un ejemplo sería el de la figura: Los datos de las notas de pedidos

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    110/138

    Un ejemplo sería el de la figura: Los datos de las notas de pedidos

    (datos o transacciones iniciales) son cargados por una persona, luego

    los programas generan una serie de listados que sirven para otras

    tareas.

    • Requerimientos: Este término se utiliza cuando un usuario tiene una

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    111/138

    necesidad, lo cual generalmente surge de un problema. En general, los

    problemas que originan requerimientos son:

    El sistema de información es manual y maneja un gran volumen de

    transacciones diarias, lo que dificulta su acceso, clasificación, consulta,

    control y proceso.

    El sistema de información esta parcialmente o totalmente automatizado pero

    debe modificarse porque han cambiado los requerimientos.

    El sistema de información esta parcialmente o totalmente automatizado y es

    necesario agregarle más funciones.

    El término Ingeniería de Software se utiliza para referirse a un método

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    112/138

    g p

    disciplinario de desarrollo de programas de computadoras a través de

    todas las actividades del ciclo de vida de un software.

    La tendencia del software es crecer en tamaño, complejidad y cambiar,

    por ello el desarrollo debe apoyarse en un método disciplinario de

    diseño, producción y mantenimiento de programas de computadoras

    que se desarrollan bajo estimaciones de tiempo y de costo, utilizando

    herramientas de ayuda a la gestión del tamaño y complejidad de los

    productos de software resultantes.

    La Ingeniería de Software se compone de tres elementos:

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    113/138

    1. Métodos: Los métodos indican “como” construir técnicamente

    el software. Los métodos abarcan un amplio espectro de

    tareas que incluyen: planificación y estimación de proyectos,

    análisis de los requisitos, diseño de datos y programas,

    codificación, prueba, instalación y mantenimiento.

    2. Herramientas: Las herramientas suministran un soporte

    automático o semiautomático para los métodos. Algunas de

    las herramientas disponibles por sus características reciben el

    nombre de CASE (Ingeniería de Software Asistida por

    3. Procedimientos: Los procedimientos juntan los métodos con las

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    114/138

    3. Procedimientos: Los procedimientos juntan los métodos con las

    herramientas y facilita un desarrollo racional y oportuno del

    software de computadoras. Los procedimientos definen la secuencia

    en la que se aplican los métodos, las entregas (documentos

    informes, formas, etc.) que se requieren, los controles que ayudan a

    asegurar la calidad y coordinar los cambios y las directrices que

    ayudan a los gestores a evaluar el progreso.

    La Ingeniería de Software esta compuesta por una serie de pasos que

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    115/138

    abarcan los métodos, las herramientas y los procedimientos antes

    mencionados. Estos pasos se denominan frecuentemente paradigmas 

    de la Ingeniería de Software.

    La elección de un paradigma para la Ingeniería de Software se lleva a

    cabo de acuerdo a la naturaleza del proyecto y de la aplicación, los

    métodos y herramientas a usar y los controles y entregas requeridos.

    Se puede hacer una analogía entre paradigma y metodología, hay

    varios paradigmas o metodologías. De ellos, vamos a ver el modelo

    en cascada.

    MODELO EN CASCADA

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    116/138

    ESTUDIO DE FACTIBILIDAD

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    117/138

    Consiste en una visión general, de alto nivel, de todo el

    proyecto, destinado a contestar a un númerodeterminado de preguntas:

    • ¿Cuál es el problema?

    • ¿Existe una solución viable para el problema?

    • ¿Cuánto tiempo llevará?• ¿Cuál es el coste?

    • El estudio de factibilidad debe ser relativamente corto

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    118/138

    • El estudio de factibilidad debe ser relativamente corto,

    pues la tarea no consiste en resolver el problema, sino

    en obtener una idea de su complejidad y tamaño.

    • El estudio de factibilidad comienza con la aclaración de

    la definición del problema. Se definen el alcance y los

    objetivos iniciales y se identifican las restricciones y

    limitaciones del sistema.

    Se preparan varios alternativas de solución. Para cada

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    119/138

    una de ellas se analiza:

    • Factibilidad Técnica: ¿Puede el software

    implementarse empleando la tecnología actual ydisponible?

    • Factibilidad Economía: ¿Superan los beneficios los

    costes?

    • Factibilidad Operativa: ¿Puede el software

    desarrollarse y ejecutarse en esta organización? Se descartan las alternativas que no cumplen con las tres factibilidades y se prepara un

    informe al usuario - cliente, que tiene la siguiente forma:

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    120/138

    1. Definición del problema.

    2. Alcance.

    3. Objetivos.

    4. Restricciones.

    5. Limitaciones.6. Alternativas de solución. Para cada una:

    6.1. Factibilidad Económica (Análisis costo/beneficios)

    6.2. Factibilidad Operativa

    6.3. Factibilidad Técnica

    6.4. Duración estimada del proyecto

    6.5. Inversión estimada del proyecto

    ANÁLISIS

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    121/138

    • La fase de análisis define los requisitos del software que hay

    que desarrollar.

    Inicialmente, esta etapa comienza con una entrevista al cliente,

    que establecerá lo que quiere o lo que cree que necesita, locual nos dará una buena idea global de lo que necesita, pero no

    necesariamente del todo acertada. Aunque el cliente crea que

    sabe lo que el softwaretiene que hacer, es necesaria una buena habilidad y experiencia

    para reconocer requisitos incompletos, ambiguos,

    contradictorios o incluso necesarios

    En esta fase el analista se familiariza con la operación del sistema,

    para ello utiliza una serie de técnicas y herramientas. En esta fase se

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    122/138

    p y

    obtiene un modelo del sistema existente, que representa lo que hace

    y cómo lo hace. Este modelo describe las funciones del sistema, los

    datos, el control, etc.

    Para ello se crea un informe ERS (Especificación de Requisitos del

    Sistema) acompañado del diagrama de clases o de Entidad/Relación.

    Ejemplo de diagrama de clases

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    123/138

    Ejemplo de diagrama E/R (Entidad/Relación)

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    124/138

    DISEÑO

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    125/138

    • En esta etapa se pretende determinar el funcionamiento

    de una forma global y general, sin entrar en detalles. Unode los objetivos principales es establecer las

    consideraciones de los recursos del sistema, tanto físicos

    como lógicos.

    • Se define por tanto el entorno que requerirá el sistema,

    aunque también se puede establecer en sentido contrario,

    es decir, diseñar el sistema en función de los recursos de

    los que se dispone.

    • En la fase de diseño se crearán los diagramas de casos

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    126/138

    • En la fase de diseño se crearán los diagramas de casos

    de uso y de secuencia para definir la funcionalidad del

    sistema.

    • Se especificará también el formato de la información

    de entrada y salida, las estructuras de datos y la

    división modular. Con todos esos diagramas e

    información se obtendrá el cuaderno de carga.

    Ejemplo de diagrama de Casos de Uso

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    127/138

    Ejemplo de diagrama de secuencia

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    128/138

    CODIFICACIÓN

  • 8/18/2019 DAM Entornos de Desarrollo Unidad 1

    129/138

    •Una vez definido el software hay que programarlo.

    • Gracias a las etapas anteriores, el programador contará con un

    análisis completo del sistema que hay que codificar y con una

    especificación de la estructura básica que se necesitará, por lo que enun principio solo habría que traducir el cuaderno de carga en el

    lenguaje deseado para culminar la etapa de codificación.

    • Nunca está exento de necesitar un reanálisis o un rediseño alencontrar un problema al programar el software.

    PRUEBAS 

    • Con una doble funcionalidad: las pruebas buscan confirmar que la codificación ha