Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ED01
ED01
Según su función se distinguen tres tipos de software: sistema operativo, software de programación y
aplicaciones.
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:
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).
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.
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.
Modelos Evolutivos Más modernos. Tienen en cuenta la naturaleza cambiante y evolutiva del
software. Distinguimos dos variantes:
B) 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.
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…
La tecnología CASE trata de automatizar las fases del desarrollo de software para que mejore la calidad
del proceso y del resultado final.
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:
Ejemplos de herramientas CASE libres son: ArgoUML, Use Case Maker, ObjectBuilder…
Los lenguajes de programación son los que nos permiten comunicarnos con el hardware del ordenador.
Lenguaje máquina:
Lenguajes visuales:
Podemos clasificar los distintos tipos de Lenguajes de Programación en base a distintas características:
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.
-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.
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.
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.
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.
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
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.
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í.
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.