Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

1.- Software y programa. Tipos de software.

Según su función se distinguen tres tipos de software: sistema operativo, software de programación y
aplicaciones.

 El sistema operativo es el software base que ha de estar instalado y configurado en nuestro


ordenador para que las aplicaciones puedan ejecutarse y funcionar. Son ejemplos de sistemas
operativos: Windows, Linux, Mac OS X ...
 El software de programación es el conjunto de herramientas que nos permiten desarrollar
programas informáticos.
 Las aplicaciones informáticas son un conjunto de programas que tienen una finalidad más o
menos concreta.
 Un programa es un conjunto de instrucciones escritas en un lenguaje de programación.
2.- Relación hardware-software.

La primera arquitectura hardware con programa almacenado se estableció en 1946 por John Von
Neumann.

Esta relación software-hardware la podemos poner de manifiesto desde dos puntos de vista:

-Desde el punto de vista del sistema operativo

El sistema operativo es el encargado de coordinar al hardware durante el funcionamiento del


ordenador, actuando como intermediario entre éste y las aplicaciones que están corriendo en un
momento dado.

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

Ya hemos dicho que 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 (Se necesita un proceso de traducción de código para que el ordenador ejecute las
instrucciones escritas en un lenguaje de programación).

3.- Desarrollo de software todo el proceso que ocurre desde que se concibe una idea hasta que un
programa está implementado en el ordenador y funcionando.

3.1.- Ciclos de vida del software.

Modelo en Cascada

 Requiere conocimiento previo y absoluto de los requerimientos del sistema. No hay retorno en
las etapas: si hay algún error en el proceso hay que empezar desde el principio.
 No permite modificaciones ni actualizaciones de software.
 Es un modelo utópico.

Modelo en Cascada con Realimentación

 Es uno de los modelos más utilizados.


 Se puede retornar a etapas anteriores para introducir modificaciones o depurar errores.
 Idóneo para proyectos más o menos rígidos y requisitos claros.
 Los errores detectados una vez concluido el proyecto pueden provocar que haya que empezar
desde cero.

Modelos Evolutivos Más modernos. Tienen en cuenta la naturaleza cambiante y evolutiva del
software. Distinguimos dos variantes:

A) Modelo Iterativo Incremental:


 Actualmente, no se ponen en el mercado los productos completos, sino versiones.
 Permite una fácil evolución temporal.
 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.

B) Modelo en Espiral

-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.

+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.

3.2.- Herramientas de apoyo al desarrollo del software.

Las herramientas CASE son un conjunto de aplicaciones que se utilizan en el desarrollo de software con
el objetivo de reducir costes y tiempo del proceso, mejorando por tanto la productividad del proceso.

Nos puede ayudar: En el diseño del proyecto, en la codificación de nuestro diseño a partir de su
apariencia visual, detección de errores…

El desarrollo rápido de aplicaciones o RAD es un proceso de desarrollo de software que comprende el


desarrollo iterativo, la construcción de prototipos y el uso de utilidades CASE. Hoy en día se suele utilizar
para referirnos al desarrollo rápido de interfaces gráficas de usuario o entornos de desarrollo integrado
completos.

La tecnología CASE trata de automatizar las fases del desarrollo de software para que mejore la calidad
del proceso y del resultado final.

En concreto, estas herramientas permiten:

 Mejorar la planificación del proyecto.


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

CLASIFICACIÓN:

Normalmente, las herramientas CASE se clasifican en función de las fases del ciclo de vida del software
en la que ofrecen ayuda:

 U-CASE: ofrece ayuda en las fases de planificación y análisis de requisitos.


 M-CASE: ofrece ayuda en análisis y diseñ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.

Ejemplos de herramientas CASE libres son: ArgoUML, Use Case Maker, ObjectBuilder…

4.- Lenguajes de programación.

Los lenguajes de programación son los que nos permiten comunicarnos con el hardware del ordenador.

Los lenguajes de programación han sufrido su propia evolución:

Lenguaje máquina:

 Sus instrucciones son combinaciones de unos y ceros.


 Es el único lenguaje que entiende directamente el ordenador. (No necesita traducción).
 Fue el primer lenguaje utilizado.
 Es único para cada procesador (no es portable de un equipo a otro). Hoy día nadie programa
en este lenguaje.
Lenguaje ensamblador:

 Sustituyó al lenguaje máquina para facilitar la labor de programación.


 En lugar de unos y ceros se programa usando mnemotécnicos (instrucciones complejas).
Necesita traducción al lenguaje máquina para poder ejecutarse.
 Sus instrucciones son sentencias que hacen referencia a la ubicación física de los archivos en el
equipo.
 Es difícil de utilizar.

Lenguaje de alto nivel basados en código:

 Sustituyeron al lenguaje ensamblador para facilitar más la labor de programación.


 En lugar de mnemotécnicos, se utilizan sentencias y órdenes derivadas del idioma inglés.
(Necesita traducción al lenguaje máquina).
 Son más cercanos al razonamiento humano. Son utilizados hoy día, aunque la tendencia es
que cada vez menos.

Lenguajes visuales:

 Están sustituyendo a los lenguajes de alto nivel basados en código.


 En lugar de sentencias escritas, se programa gráficamente usando el ratón y diseñando
directamente la apariencia del software. Su correspondiente código se genera automáticamente.
 Necesitan traducción al lenguaje máquina.
 Son completamente portables de un equipo a otro.

4.1.- Concepto y características.

Un lenguaje de programación es el conjunto de:

 Alfabeto: conjunto de símbolos permitidos.


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

Podemos clasificar los distintos tipos de Lenguajes de Programación en base a distintas características:

-Según lo cerca que esté del lenguaje humano Lenguajes de Programación

 De alto nivel: por su esencia, están más próximos al razonamiento humano.


 De bajo nivel: están más próximos al funcionamiento interno de la computadora:
 Lenguaje Ensamblador.
 Lenguaje Máquina.

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

 Lenguajes de Programación Estructurados: Usan la técnica de programación estructurada.


Ejemplos: Pascal, C, etc.
-Los requerimientos actuales de software son bastante más complejos de lo que la técnica de
programación estructurada es capaz.
- permite sólo el uso de tres tipos de sentencias o estructuras de control:
Sentencias secuenciales. Sentencias selectivas (condicionales) y Sentencias repetitivas
(iteraciones o bucles).
- INCONVENIENTES:
-Todo el programa se concentra en un único bloque (si se hace demasiado grande es
difícil manejarlo).
-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.

 Lenguajes de Programación Orientados a Objetos: Usan la técnica de programación


orientada a objetos. Ejemplos: C++, Java, Ada, Delphi, etc.
-En la P.O.O. los programas se componen de objetos independientes entre sí que colaboran
para realizar acciones.
-Los objetos son reutilizables para proyectos futuros.
-Desventaja: NO es una programación tan intuitiva como la estructurada.
-Ventajas: código reutilizable. Si hay algún error, es más fácil de localizar y depurar en un objeto
que en un programa completo.
-CARACTERISTICAS:
-Los objetos del programa tendrán una serie de atributos que los diferencian unos
de otros.
-Clasees una colección de objetos con características similares.
-Mediante los métodos, los objetos se comunican con otros produciéndose un cambio
de los mismos.
-Los objetos son como unidades individuales e indivisibles que forman la base de este
tipo de programación.

 Lenguajes de Programación Visuales: Basados en las técnicas anteriores, permiten programar


gráficamente, siendo el código correspondiente generado de forma automática. Ejemplos: Visual
Basic.Net, Borland Delphi, etc.

A pesar de la inmensa cantidad de lenguajes de programación existentes, Java, C, C++, PHP y Visual
Basic concentran alrededor del 60% del interés de la comunidad informática mundial.

5.- Fases en el desarrollo y ejecución del software.


ANÁLISIS DE -Es la primera etapa del proyecto, la más complicada y la que más depende de la capacidad del analista.
REQUISITOS. -R. Funcionales: Qué funciones tendrá que realizar la aplicación. Qué respuesta dará la aplicación ante
Se especifican los todas las entradas. Cómo se comportará la aplicación en situaciones inesperadas.
requisitos funcionales -No funcionales: Tiempos de respuesta del programa, legislación aplicable, tratamiento ante la
y no funcionales del simultaneidad de peticiones, etc.
sistema -Final de fase documento ERS: Planificación de las reuniones, Relación de los objetivos del usuario
cliente y del sistema, de los requisitos del sistema y de los objetivos prioritarios y temporización, y
Reconocimiento de requisitos mal planteados o que conlleven contradiciones.
DISEÑO. Se divide el ¿Cómo hacerlo?
sistema en partes y -Debemos crear un modelo funcional-estructural de los requerimientos del sistema global, para poder
se determina la dividirlo y afrontar las partes por separado.
función de cada una. -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. Etc.
Durante esta fase, el código pasa por diferentes estados:
Código FuenteEscrito en algún Lenguaje de Programación de alto nivel, pero no ejecutable.

Para obtener el código fuente de una aplicación informática:


1. Se debe partir de las etapas anteriores de análisis y diseño.
2. Se diseñará un algoritmo que simbolice los pasos a seguir para la resolución del problema. El
algoritmo lo diseñamos en pseudocódigo.
3. Se elegirá una Lenguajes de Programación de alto nivel apropiado para las características del
software que se quiere codificar.
4. Se procederá a la codificación del algoritmo antes diseñado.

-La culminación de la obtención de código fuente es un documento con la codificación de todos los módulos,
funciones, bibliotecas y procedimientos necesarios para codificar la aplicación.
-Podemos distinguir 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Escrito en Lenguaje Máquina pero no ejecutable.

Es el código binario (bytecode, que está distribuido en varios archivos, cada uno de los cuales corresponde
a cada programa fuente compilado.) resultado de compilar el código fuente. La compilación es la traducción
de una sola vez del programa, y se realiza utilizando un compilador. La interpretación es la traducción y
ejecución simultánea del programa línea a línea.
El código objeto no es directamente inteligible por el ser humano, pero tampoco por la computadora. Es un
código intermedio entre el código fuente y el ejecutable y sólo existe si el programa se compila, ya que si se
interpreta (traducción línea a línea del código) se traduce y se ejecuta en un solo paso.

Código Ejecutable: Escrito en Lenguaje Máquina y directamente ejecutable.

Es el código binario 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
proceder a ejecutarlo. También es conocido como código máquina y ya sí es directamente inteligible por la
computadora.
-Para obtener un sólo archivo ejecutable, habrá que enlazar todos los archivos de código objeto, a través de
un software llamado linker (enlazador) y obtener así un único archivo que ya sí es ejecutable directamente
por la computadora.

+RESUMEN: A partir de un editor, escribimos el lenguaje fuente con algún Lenguaje de programación. (En el
ejemplo, se usa Java). A continuación, el código fuente se compila obteniendo código objeto o bytecode.
Ese bytecode, a través de la máquina virtual pasa a código máquina, ya directamente ejecutable por la
computadora.
PRUEBAS. Se Entre todas las pruebas que se efectúan sobre el software podemos distinguir básicamente:
prueban los - PRUEBAS UNITARIAS: Consisten en probar, una a una, las diferentes partes de software y comprobar su
programas para funcionamiento (por separado, de manera independiente). JUnit es el entorno de pruebas para Java.
detectar errores y se - PRUEBAS DE INTEGRACIÓN: Siguiente paso, consistirán en comprobar el funcionamiento del sistema
depuran completo: con todas sus partes interrelacionadas.
La prueba final se denomina comúnmente Beta Test, ésta se realiza sobre el entorno de producción donde
el software va a ser utilizado por el cliente.

DOCUMENTACIÓN. Guía técnica


De todas las etapas, - Facilitar un correcto desarrollo, realizar correcciones en los programas y permitir un mantenimiento futuro
se documenta y - Dirigido al personal técnico en informática (analistas y programadores).
guarda toda la - Se refleja el diseño de la aplicación, la codificación de los programas y las pruebas realizadas.
información Guía de uso
-Para dar a los usuarios finales toda la información necesaria para utilizar la aplicación.
-Dirigido a los 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.
Guía de instalación
-Para dar información necesaria para garantizar que la implantación de la aplicación se realice de forma
segura y precisa.
-Dirigido al personal informático responsable de la instalación, en colaboración con los clientes.
-incluye toda la información necesaria para: la puesta en marcha, explotación y seguridad del sistema.
EXPLOTACIÓN. - Se suelen llevan a cabo las Beta Test, que son las últimas pruebas que se realizan en los propios equipos
Instalamos, del cliente y bajo cargas normales de trabajo.
configuramos y - pasamos a la fase de configuración.
probamos la En ella, asignamos los parámetros de funcionamiento normal de la empresa y probamos que la aplicación es
aplicación en los operativa. También puede ocurrir que la configuración la realicen los propios usuarios finales, siempre y
equipos del cliente cuando les hayamos dado previamente la guía de instalación. Y también, si la aplicación es más sencilla,
podemos programar la configuración de manera que se realice automáticamente tras instalarla
-Una vez se ha configurado, el siguiente y último paso es la fase de producción normal. La aplicación pasa a
manos de los usuarios finales y se da comienzo a la explotación del software.
MANTENIMIENTO. -La etapa de mantenimiento es la más larga de todo el ciclo de vida del software. Comprende las
Se mantiene el actualizaciones y evoluciones futuras del mismo.
contacto con el - Por todo ello, se pacta con el cliente un servicio de mantenimiento de la aplicación (que también tendrá un
cliente para actualizar coste temporal y económico).
y modificar la TIPOS DE CAMBIOS:
aplicación el futuro.  Perfectivos: Para mejorar la funcionalidad del software.
 Evolutivos: El cliente tendrá en el futuro nuevas necesidades. Por tanto, serán necesarias
modificaciones, expansiones o eliminaciones de código.
 Adaptativos: Modificaciones, actualizaciones... para adaptarse a las nuevas tendencias del
mercado, a nuevos componentes hardware, etc.
 Correctivos: La aplicación tendrá errores en el futuro (sería utópico pensar lo contrario).
5.1 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.

Con el uso de máquinas virtuales podremos desarrollar y ejecutar una aplicación sobre
cualquier equipo, independientemente de las características concretas de los componentes
físicos instalados. Esto garantiza la portabilidad de las aplicaciones.

Las funciones principales:

 Conseguir que las aplicaciones sean portables.


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

La máquina virtual actúa de puente entre la aplicación y el hardware concreto del equipo
donde se instale. Aísla la aplicación de los detalles físicos del equipo en cuestión, verifica todo
el bytecode antes de ejecutarlo y protege direcciones de memoria.

5.2 Frameworks

Un framework 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.

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

Información útil:

.NET es un framework para desarrollar aplicaciones sobre Windows. Ofrece el "Visual Studio
.net" que nos da facilidades para construir aplicaciones y su motor es el ".Net framework" que
permite ejecutar dichas aplicaciones. Es un componente que se instala sobre el sistema
operativo. Spring de Java. Son conjuntos de bibliotecas (API's) para el desarrollo y ejecución de
aplicaciones.
5.3 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. En ocasiones pertenece al propio sistema operativo, pero también
se puede instalar como software independiente que funcionará por debajo de la aplicación.

Es decir, es un conjunto de utilidades que permiten la ejecución de programas.

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

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

1. Configurar la memoria principal disponible en el sistema.


2. Enlazar los archivos del programa con las bibliotecas existentes y con los
subprogramas creados. (bibliotecas son el conjunto de subprogramas que sirven para
desarrollar o comunicar componentes software pero que ya existen previamente y los
subprogramas serán aquellos que hemos creado a propósito para el programa).
3. 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).

El Entorno de Ejecución está formado por la máquina virtual y los API's (bibliotecas de
clases estándar, necesarias para que la aplicación, escrita en algún Lenguaje de
Programación pueda ser ejecutada). Estos dos componentes se suelen distribuir
conjuntamente, porque necesitan ser compatibles entre sí.

El entorno funciona como intermediario entre el lenguaje fuente y el sistema operativo,


y consigue ejecutar aplicaciones.

Sin embargo, si lo que queremos es desarrollar nuevas aplicaciones NECESITAMOS un


entorno de desarrollo.

Ejemplo de entorno de ejecución Java runtime environment( JRE).

El JRE se compone de un conjunto de utilidades que permitirá la ejecución de programas java


sobre cualquier tipo de plataforma. JRE está formado por:

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. Bibliotecas de clase estándar que
implementan el API de Java. Las dos: JMV y API de Java son consistentes entre sí, por ello son
distribuidas conjuntamente.

También podría gustarte