Unidad 1 Entorno Informatica

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

Uni 1.

Entorno de desarrollo

1.- Software y programa. Tipos de software.


Software:
Es el conjunto de programas informáticos que actúan sobre el hardware para
ejecutar lo que el usuario desee.

 3 tipos de software:

o El software de sistema: es el software base que ha de estar


instalado y configurado en nuestro ordenador para que las
aplicaciones puedan ejecutarse y funcionar. El principal tipo de
software de sistema es el sistema operativo. Algunos ejemplos
de sistemas operativos son: Windows, Linux, Mac.

o El software de programación: es el conjunto de herramientas


que nos permiten desarrollar programas informáticos. Algunos
ejemplos son los editores de texto/código, compiladores,
intérpretes, entornos de desarrollo integrados (IDE).

o Las aplicaciones informáticas son un conjunto de programas


que tienen una finalidad más o menos concreta. Son ejemplos
de aplicaciones los procesadores de textos, las hojas de cálculo,
el software para reproducir música, los videojuegos, etc.
un programa es un conjunto de instrucciones escritas en un
lenguaje de programación, que indican a la máquina que
operaciones realizar sobre unos determinados datos.
Uni 1. Entorno de desarrollo

2.- Relación hardware-software.


Hadware:
Conjunto de dispositivos físicos que conforman un ordenador.
Todas las aplicaciones necesitan recursos hardware durante su ejecución (tiempo de
CPU, espacio en memoria RAM, tratamiento de interrupciones, gestión de los
dispositivos de Entrada/Salida, etc.). Será siempre el sistema operativo el encargado
de controlar todos estos aspectos de manera "oculta" para las aplicaciones (y para el
usuario).
 Desde el punto de vista de las aplicaciones.
Una aplicación no es otra cosa que un conjunto de programas y que
éstos están escritos en algún lenguaje de programación que el
hardware del equipo debe interpretar y ejecutar. Todos tienen algo en
común: estar escritos con sentencias de un idioma que el ser humano
puede aprender y usar fácilmente. El hardware de un ordenador sólo es
capaz de interpretar señales eléctricas (ausencias o presencias de
tensión) que, en informática, se traducen en secuencias de 0 y 1
(código binario).

3.- Fases a seguir en el desarrollo del


software.

 Análisis: Esta es la primera fase del proyecto. Analizar las


necesidades de la aplicación a generar.
Consensuar todo lo que se requiere del sistema, siendo el punto de
partida para las siguientes etapas. Estos requisitos “deberían” ser
cerrados para el resto del desarrollo.
Se especifican los requisitos funcionales y no funcionales del sistema
(ANÁLISIS DE REQUISITOS).
De esta fase obtendremos dos salidas:
o Documento especificación de requisitos software, que
considerará tanto requisitos funcionales como no funcionales del
sistema.
 Funcionales: qué funciones tendrá que realizar la
aplicación. Qué respuesta dará la aplicación ante todas las
entradas. Cómo se comportará la aplicación en
situaciones inesperadas.
 No funcionales: tiempos de respuesta del programa,
legislación aplicable, tratamiento ante la simultaneidad de
peticiones, etc
o Documento de diseño de arquitectura, que contiene la
descripción de la estructura relacional global del sistema y la
Uni 1. Entorno de desarrollo

especificación de lo que debe hacer cada una de sus partes, así


como la manera en que se combinan unas con otras.

 Diseño: Se divide el sistema en partes y se determina la función de


cada una.
Realizar los algoritmos necesarios para el cumplimiento de los
requisitos planteados en el proyecto.
Determinar las herramientas a utilizar en la codificación.
En este punto, se deben tomar decisiones importantes, tales como:
 Entidades y relaciones de las bases de datos.
 Selección del lenguaje de programación que se va a utilizar.
 Selección del Sistema Gestor de Base de Datos.
En esta fase obtendremos dos salidas:
 Documento de Diseño del Software, que recoge información
de los aspectos anteriormente mencionados.
 Plan de pruebas a utilizar en la fase de pruebas, sin entrar en
detalles de las mismas

 Codificación y compilación:
Implementar el código fuente y obtener los ficheros en código máquina
que es capaz de entender el ordenador. El programador y tiene que
cumplir exhaustivamente con todos los datos impuestos en el
análisis y en el diseño de la aplicación.

 Modularidad: que esté dividido en trozos más pequeños.


 Corrección: que haga lo que se le pide realmente.
 Fácil de leer: para facilitar su desarrollo y mantenimiento futuro.
 Eficiencia: que haga un buen uso de los recursos.
 Portabilidad: que se pueda implementar en cualquier equipo.

En la fase, se hace una traducción de todo el código fuente con el


objetivo de pasarlo a lenguaje máquina. Este proceso se puede realizar
de 2 formas:

 Compilación: El proceso de traducción se realiza sobre todo el


código fuente, en un solo paso. Se crea código objeto que habrá
que enlazar. El software responsable se llama compilador.
 Interpretación: El proceso de traducción del código fuente se
realiza línea a línea y se ejecuta simultáneamente. No existe
código objeto intermedio. El software responsable se
llama intérprete. El proceso de traducción es más lento que el de
compilación.

 Pruebas: Los elementos, ya programados, se enlazan para componer


el sistema y se comprueba que funciona correctamente y que cumple
con los requisitos, antes de ser entregado al usuario final. Sirve para
asegurar la validación y verificación del software construido.
o Pruebas unitarias: probar, una a una, las diferentes partes de
software y comprobar su funcionamiento (por separado, de
manera independiente). se genera un documento de
procedimiento de pruebas.
Uni 1. Entorno de desarrollo

o Pruebas de integración: Consiste en la puesta en común de


todos los programas desarrollados una vez pasadas las pruebas
unitarias de cada uno de ellos. se genera un documento de
procedimiento de pruebas de integración.

 Explotación: Es la fase en que los usuarios finales conocen la


aplicación y comienzan a utilizarla. s la instalación, puesta a punto y
funcionamiento de la aplicación en el equipo final del cliente. los
programas son transferidos al computador del usuario cliente y
posteriormente configurados y verificados. se suelen llevan a cabo las
Beta Test, que son las últimas pruebas que se realizan en los propios
equipos del cliente y bajo cargas normales de trabajo. Una vez
instalada, pasamos a la fase de configuración.

 Mantenimiento: La etapa de mantenimiento es la más larga de todo el


ciclo de vida del software. Es el proceso de control, mejora y
optimización del software.

Los tipos de cambios que hacen necesario el mantenimiento


del software son los siguientes:

 Perfectivos: Para mejorar la funcionalidad del software.


 Evolutivos: El cliente propone mejoras para el producto. Implica
nuevos requisitos.
 Adaptativos: Modificaciones, actualizaciones... para adaptarse
a las nuevas tendencias del mercado, a nuevos
componentes hardware, nuevas condiciones especificadas por
organismos reguladores, etc.
 Correctivos: Resolver errores detectados. Sería utópico pensar
que esto no vaya a suceder

 Documentación: Todas las etapas en el desarrollo de software


deben quedar perfectamente documentadas. De acuerdo al
destinatario final de los documentos, podemos distinguir tres tipos:
o Guías técnicas. Dirigidos a personal técnico en
informática (analistas y programadores). El diseño de la
aplicación.
 La codificación de los programas.
 Las pruebas realizadas.
 Facilitar un correcto desarrollo, realizar correcciones
en los programas y permitir un mantenimiento futuro.
o Guías de uso. Dirigidos a usuarios que van a usar la
aplicación(clientes).
 Descripción de la funcionalidad de la aplicación.
 Forma de comenzar a ejecutar la aplicación.
 Ejemplos de uso del programa.
 Requerimientos software de la aplicación.
 Solución de los posibles problemas que se pueden
presentar.
 Dar toda la información necesaria para garantizar que
la implantación de la aplicación se realice de forma
segura, confiable y precisa.
Uni 1. Entorno de desarrollo

4.- Ciclos de vida del software.


Conjunto de fases o etapas, procesos y actividades requeridas para ofertar,
desarrollar, probar, integrar, explotar y mantener un producto software.

Al principio, el desarrollo de una aplicación era un proceso individualizado, carente de


planificación donde únicamente se hacía una codificación y prueba/depuración del
código a desarrollar. Pero pronto se detectaron muchos inconvenientes.

Algunas ventajas que se consiguen con el ciclo de vida del software son:

o En las primeras fases, invertir en pensar el diseño para avanzar en la


construcción del sistema y la codificación.
o Asegura un desarrollo progresivo, con controles sistemáticos, que permite
detectar defectos con mucha antelación.
o El seguimiento del proceso permite controlar los plazos de entrega retrasados y
los costes excesivos.
o La documentación se realiza de manera formal y estandarizada
simultáneamente al desarrollo, lo que facilita la comunicación interna entre el
equipo de desarrollo y la de éste con los usuarios.
o Aumenta la visibilidad y la posibilidad de control para la gestión del proyecto.
o Supone una guía para el personal de desarrollo, marcando las tareas a realizar
en cada momento.
o Minimiza la necesidad de rehacer trabajo y los problemas de puesta a punto.
Modelos de ciclos de vida:

o Modelo en Cascada. Es el modelo de vida clásico del software. Se pasa de


unas etapas a otras sin retorno posible, cualquier error en las fases iniciales ya
no será subsanable aunque sea detectado más adelante.
o Características.
 Requiere conocimiento previo y absoluto de los requerimientos
del sistema.
 No hay retornos en las etapas: si hay algún error durante el
proceso hay que empezar desde el principio.
 No permite modificaciones ni actualizaciones del software.
 Es un modelo utópico.
Uni 1. Entorno de desarrollo

o Modelo en Cascada con Realimentación. Es uno de los modelos más


utilizados. Es el modelo perfecto si el proyecto es rígido (pocos cambios, poco
evolutivo) y los requisitos están claros.
Características.
 Se puede retornar a etapas anteriores para introducir
modificaciones o depurar errores.
 Idóneo para proyectos más o menos rígidos y con requisitos
claros.
 Los errores detectados una vez concluido el proyecto pueden
provocar que haya que empezar desde cero.

o Modelos Evolutivos. Son más modernos que los anteriores. Tienen en cuenta
la naturaleza cambiante y evolutiva del software.
Distinguimos dos variantes:
 Modelo Iterativo Incremental: Está basado en el modelo en cascada
con realimentación, donde las fases se repiten y refinan, y van
propagando su mejora a las fases siguientes.
 Actualmente, no se ponen en el mercado los productos
completos, sino versiones
 Permite una evolución temporal.
 Vemos que se trata de varios ciclos en cascada que se repiten y
se refinan en cada incremento.
 Las sucesivas versiones del producto son cada vez más
completas hasta llegar al producto final.
Uni 1. Entorno de desarrollo

o Modelo en Espiral. Es una combinación del modelo anterior con el modelo en


cascada. En él, el software se va construyendo repetidamente en forma de
versiones que son cada vez mejores, debido a que incrementan la
funcionalidad en cada versión. Es un modelo bastante complejo.
Características.
 Se divide en 6 zonas llamadas regiones de tareas: Comunicación con el
cliente, Planificación, Análisis de riesgos, Representación de la
aplicación, Codificación y explotación y Evaluación del cliente.
 Se adapta completamente a la naturaleza evolutiva del software
 Reduce los riesgos antes de que sean problemáticos.

o Modelos ágiles. Se trata de modelos que están ganando gran presencia en los
desarrollos software. Muy centrados en la satisfacción del cliente, muestran
gran flexibilidad a la aparición de nuevos requisitos, incluso durante el
desarrollo de la aplicación. El desarrollo es incremental. La comunicación entre
los integrantes del equipo de trabajo y de éstos con el cliente son constantes.

5.- Herramientas de apoyo al desarrollo del


software.
Las herramientas CASE (Computer Aided Software Engineering) son un conjunto
de aplicaciones que se utilizan en el desarrollo de software con el objetivo de
automatizar las fases del desarrollo y reducir tanto costes como tiempo del proceso.
Uni 1. Entorno de desarrollo

Como consecuencia, se consigue mejorar la productividad, la calidad del proceso y el


resultado final.

o Mejorar la planificación del proyecto.


o Darle agilidad al proceso.
o Poder reutilizar partes del software en proyectos futuros.
o Hacer que las aplicaciones respondan a estándares.
o Mejorar la tarea del mantenimiento de los programas.
o Mejorar el proceso de desarrollo, al permitir visualizar las fases de forma
gráfica.

Las herramientas CASE se clasifican en función de las fases del ciclo de vida del
software en la que ofrecen ayuda.
o U-CASE: ofrece ayuda en las fases de planificación y análisis de requisitos.
o M-CASE: ofrece ayuda en análisis y diseño.
o L-CASE: ayuda en la programación del software, detección de errores del
código, depuración de programas y pruebas y en la generación de la
documentación del proyecto.

6.- Frameworks.
Es una estructura de ayuda al programador, en base a la cual podemos desarrollar
proyectos sin partir desde cero. Se trata de una plataforma software donde están
definidos programas soporte, bibliotecas, lenguaje interpretado, etc., que ayuda a
desarrollar y unir los diferentes módulos o partes de un proyecto.

o Ventajas de utilizar un framework:


 Desarrollo rápido de software.
 Reutilización de partes de código para otras aplicaciones.
 Diseño uniforme del software.
 Portabilidad de aplicaciones de un computador a otro, ya que
los bytecodes que se generan a partir del lenguaje fuente podrán
ser ejecutados sobre cualquier máquina virtual.
o Inconvenientes:
 Gran dependencia del código respecto al framework utilizado (sin
cambiamos de framework, habrá que reescribir gran parte de la
aplicación).
 La instalación e implementación del framework en nuestro equipo
consume bastantes recursos del sistema.

7.- Lenguajes de programación.


Un idioma creado de forma artificial, formado por un conjunto de símbolos y normas que
se aplican sobre un alfabeto para obtener un código, que el hardware de la computadora
pueda entender y ejecutar. Los lenguajes de programación son los que nos permiten
comunicarnos con el hardware del ordenador. Es decir, un lenguaje de programación es
el conjunto de:
Uni 1. Entorno de desarrollo

o Alfabeto: conjunto de símbolos permitidos.


o Sintaxis: normas de construcción permitidas de los símbolos del lenguaje.
o Semántica: significado de las construcciones para hacer acciones válidas.

7.2.- Clasificación de los lenguajes de programación


La elección del lenguaje de programación para codificar un programa dependerá de
las características del problema a resolver.

Según lo cerca que esté del lenguaje humano


o Lenguajes de programación de alto nivel.
 Traducen los algoritmos a un lenguaje mucha más fácil de entender
para el programador.
 no están orientados a la máquina (donde se va a ejecutar), se puedan
ejecutar en cualquier tipo de ordenador.
 Tienen el inconveniente de que este conjunto de instrucciones no es
directamente ejecutable por la máquina, sino que deberá ser traducido
al lenguaje máquina, que la computadora será capaz de entender y
ejecutar.
o Lenguajes de programación de bajo nivel
 lenguajes que aprovechan al máximo los recursos del ordenador donde
se van a ejecutar, son los lenguajes máquinas,
 Lenguaje máquina. Se programan sus registros directamente
con 0s y 1s. Difícil de programar y resolver errores.
 Lenguaje ensamblador. Se trata de un primer nivel de
abstracción respecto al lenguaje máquina
 Inconvenientes:
 No se pueda utilizar en otro ordenador
 Dificultad en el manejo de dicho lenguaje

Según su forma de ejecución


Según como se realice dicha traducción:
o Lenguajes compilados: Son aquellos lenguajes que se traducen a través de
un programa traductor llamado compilador.
o Lenguajes interpretados: Un programa escrito en un lenguaje interpretado
supone el tener que traducir el programa cada vez que se quiera ejecutar
La combinación de 2 tareas crea Lenguajes intermedios. Por ello el código pasa
por diferentes estados.

 Código Fuente: Es el escrito por los programadores en algún editor de


texto. Se escribe usando algún lenguaje de programación de alto nivel y
contiene el conjunto de instrucciones necesarias que debe seguir el
ordenador para implementar el algoritmo. la obtención de código fuente
Uni 1. Entorno de desarrollo

es un documento con la codificación de todos los módulos, funciones,


bibliotecas y procedimientos necesarios para codificar la aplicación.
Dos tipos de código fuente:
 Código fuente abierto. Es aquel que está disponible para que
cualquier usuario pueda estudiarlo, modificarlo o reutilizarlo.
 Código fuente cerrado. Es aquel que no tenemos permiso para
editarlo

 Código Objeto: código intermedio que no es directamente ejecutable


por el equipo por o que se necesita un compilador. Sólo se genera
código objeto una vez que el código fuente está libre de errores
sintácticos y semánticos.

 Código Ejecutable: Es el código máquina resultante de enlazar los


archivos de código objeto con ciertas rutinas y bibliotecas necesarias.

El sistema operativo será el encargado de cargar el código ejecutable


en memoria RAM y de proceder a su ejecución.

Lenguajes imperativos vs declarativos


o Programación imperativa se describe paso a paso un conjunto de
instrucciones que deben ejecutarse para variar el estado del programa y
hallar la solución, es decir, un algoritmo en el que se describen los pasos
necesarios para solucionar el problema. P.e. Basic, C, C++
o programación declarativa las sentencias que se utilizan describen el
problema que se quiere solucionar, pero no las instrucciones necesarias
para hacerlo. Algunos ejemplos son:
 Lógicos: prolog.
 Algebraicos: SQL.
 Funcionales: Haskell.

Según la técnica de programación utilizada

o Lenguajes de programación estructurados. Usan la técnica de


programación estructurada. Ejemplos: Pascal, C, etc.
Uni 1. Entorno de desarrollo

o Lenguajes de programación orientados a objetos (POO). Usan la técnica


de programación orientada a objetos. Ejemplos: C++ (C plus
plus), Java, Ada, C#, .Net, etc.
o Lenguajes de programación visuales. Basados en las técnicas anteriores,
permiten programar gráficamente, posteriormente se obtiene un código
equivalente de forma automática. Ejemplos: Visual Basic.Net, C#, .Net…

7.2.1.- Lenguajes de programación estructurados.


VENTAJAS DE LA PROGRAMACIÓN ESTRUCTURADA

o Los programas son fáciles de leer, sencillos y rápidos.


o El mantenimiento de los programas es sencillo.
o La estructura del programa es sencilla y clara.

INCONVENIENTES

o Todo el programa se concentra en un único bloque (si se hace demasiado


grande es difícil manejarlo).
o No permite reutilización eficaz de código, ya que todo va "en uno". Es por esto
que a la programación estructurada le sustituyó la programación modular, donde
los programas se codifican por módulos y bloques, permitiendo mayor
funcionalidad.

7.2.2.- Lenguajes de programación orientados a objetos.


En la P.O.O. los programas se componen de objetos independientes entre sí que
colaboran para realizar acciones.
Algunas de sus características principales son:
o Se define clase como una colección de objetos con características
similares.
o Las clases definen una serie de atributos, que caracterizan a cada objeto
persona.
o Las clases definen una serie de métodos que corresponden a las acciones
que pueden llevar a cabo los objetos.
o Mediante llamadas a los métodos, unos objetos se comunican con otros
produciéndose un cambio de estado de los mismos. Esto se denomina envío
de mensajes.
o El código es más reutilizable.
Uni 1. Entorno de desarrollo

o Si hay algún error, es más fácil de localizar y depurar en una clase que en un
programa entero.

8.- Máquinas virtuales.


Una máquina virtual es un tipo especial de software cuya misión es separar el
funcionamiento del ordenador de los componentes hardware instalados. La máquina
virtual actúa de puente entre la aplicación y el hardware concreto del equipo donde se
instale.

Las funciones principales de una máquina virtual son las siguientes:

o Conseguir que las aplicaciones sean portables.


o Reservar memoria para los objetos que se crean y liberar la memoria no
utilizada.
o Comunicarse con el sistema donde se instala la aplicación (huésped),
para el control de los dispositivos hardware implicados en los procesos.
o Cumplimiento de las normas de seguridad de las aplicaciones.

CARACTERÍSTICAS DE LA MÁQUINA VIRTUAL

o Cuando el código fuente se compila se obtiene código objeto (bytecode,


código intermedio).
o Para ejecutarlo en cualquier máquina se requiere tener independencia
respecto al hardware concreto que se vaya a utilizar.
o Para ello, la máquina virtual aísla la aplicación de los detalles físicos del
equipo en cuestión.
o Funciona como una capa de software de bajo nivel y actúa como puente
entre el bytecode de la aplicación y los dispositivos físicos del sistema.
o La Máquina Virtual verifica todo el bytecode antes de ejecutarlo.
o La Máquina Virtual protege direcciones de memoria.

8.1.- Entornos de ejecución.


Un entorno de ejecución es un servicio de máquina virtual que sirve como base software
para la ejecución de programas.

Se denomina runtime al tiempo que tarda un programa en ejecutarse en la


computadora.
Uni 1. Entorno de desarrollo

Durante la ejecución, los entornos se encargarán de:

o Configurar la memoria principal disponible en el sistema.


o Enlazar los archivos del programa con las bibliotecas existentes y con los
subprogramas creados.
o Depurar los programas: comprobar la existencia (o no existencia) de
errores semánticos del lenguaje (los sintácticos ya se detectaron en la
compilación).

Funcionamiento del entorno de ejecución:


o El Entorno de Ejecución está formado por la máquina virtual y los API's.
o El entorno funciona como intermediario entre el lenguaje fuente y el
sistema operativo, y consigue ejecutar aplicaciones.

8.2.- Java runtime environment.


Se compone de un conjunto de utilidades que permitirá la ejecución de programas java
sobre cualquier tipo de plataforma.

JRE está formado por:

o Una Máquina virtual Java (JMV o JVM si consideramos las siglas en inglés), que
es el programa que interpreta el código de la aplicación escrito en Java.
o Bibliotecas de clase estándar que implementan el API de Java.
o Las dos: JMV y API de Java son consistentes entre sí, por ello son distribuidas
conjuntamente.

También podría gustarte