Tipos y Fases del Desarrollo de Software
Tipos y Fases del Desarrollo de Software
Caso práctico
En BK Programación todos han vuelto ya de sus vacaciones.
Ada, la supervisora de
proyectos de BK Programación, se reúne con Juan y María (trabajadores de la
empresa) para empezar a planificar el proyecto.
1 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Caso práctico
Tipos de software
2 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
En este tema, nuestro interés se centra en ver como se desarrollan las aplicaciones
informáticas.
A lo largo de esta primera unidad vas a aprender los conceptos fundamentales de software y las
fases del llamado ciclo de vida de una aplicación informática.
También aprenderás a distinguir los diferentes lenguajes de programación y los procesos que
ocurren hasta que el programa funciona y realiza la acción deseada.
Reflexiona
Hay varios sistemas operativos en el mercado: Linux, Windows, Mac OS
X etc. El más conocido es Windows. A pesar de eso, ¿por qué utilizamos cada vez
más Linux?
3 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Caso práctico
La primera arquitectura hardware se estableció en 1946 por John Von Neumann, véase en la
siguiente figura los principales bloques que la conforman.
4 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Esto nos hace plantearnos una cuestión: ¿Cómo será capaz el ordenador de "entender" algo
escrito en un lenguaje que no es el suyo?.
Como veremos a lo largo de esta unidad, tendrá que pasar algo (un proceso de traducción de
código) para que el ordenador ejecute las instrucciones escritas en un lenguaje de
programación.
Autoevaluación
Para fabricar un programa informático que se ejecuta en una computadora:
Hay que escribir las instrucciones en código binario para que las entienda el
hardware.
Sólo es necesario escribir el programa en algún lenguaje de programación y
se ejecuta directamente.
Hay que escribir el programa en algún Lenguaje de Programación y contar
con herramientas software que lo traduzcan a código binario.
Los programas informáticos no se pueden escribir: forman parte de los
sistemas operativos.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
5 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Caso práctico
En los puntos siguientes veremos como elegir un modelo de ciclo de vida para el desarrollo de
nuestro software.
Independientemente del modelo elegido, siempre hay una serie de etapas que debemos seguir
para construir software fiable y de calidad.
Entendemos por 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.
El proceso de desarrollo, que en un principio puede parecer una tarea simple, consta de una
serie de pasos de obligado cumplimiento, pues sólo así podremos garantizar que los programas
creados son eficientes, fiables, seguros y responden a las necesidades de los usuarios finales
(aquellos que van a utilizar el programa).
Es muy importante dedicar los recursos necesarios en las primeras etapas del desarrollo del
software. Avanzar a las etapas finales sin un análisis y diseño libres de errores, implicará que se
propaguen durante toda la vida del proyecto y como consecuencia el producto obtenido sea de
mala calidad.
Fase Tareas
6 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
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.
Codificación y
compilación
Implementar el código fuente y obtiener los ficheros en código
máquina que es capaz de entender el ordenador.
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.
Verificación en cliente /
Explotación Instalamos, configuramos y probamos la aplicación en los
equipos del cliente.
Es la fase donde el usuario final utiliza el sistema en un
entorno de preproducción o pruebas. Si todo va
correctamente, el producto estará listo para ser pasado a
producción.
7 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Reflexiona
La construcción de software es un proceso que puede llegar a ser muy complejo y
que exige gran coordinación y disciplina del grupo de trabajo que lo desarrolle.
Autoevaluación
¿Crees que debemos esperar a tener completamente cerrada una etapa para
pasar a la siguiente?
Sí.
No.
Incorrecto. Recuerda que hay que dejar siempre una "puerta abierta" para
volver atrás e introducir modificaciones.
Solución
8 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
1. Incorrecto
2. Opción correcta
9 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.1.- Análisis.
Caso práctico
1. 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.
2. No funcionales: tiempos de respuesta del programa, legislación aplicable,
tratamiento ante la simultaneidad de peticiones, etc.
Funcionales No funcionales
Si se desea que la lectura de los productos Los PCs suministrados deberán ser de
se realice mediante códigos de barras. color azul por tratarse del color corporativo.
10 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Si se van a detallar las facturas de compra La venta online tendrá que garantizar un
y sus formatos. servicio ininterrumpido a lo largo de año. La
disponibilidad deberá ser 24x7.
..........
Es imprescindible una buena comunicación entre el analista y el cliente para que la aplicación
que se va a desarrollar cumpla con sus expectativas. Y habrá que asegurar que se definen
aspectos como los siguientes:
11 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.2.- Diseño.
Caso práctico
Juan está agobiado por el proyecto. Ya han
mantenido comunicaciones con el cliente y saben
perfectamente qué debe hacer la aplicación.
También tiene una lista de las características
hardware de los equipos de su cliente y todos los
requisitos. Tiene tanta información que no sabe por
dónde empezar.
Decide hablar con Ada. Su supervisora, amable como siempre, le sugiere que
empiece a dividir el problema en las partes implicadas.
Nota: en ocasiones, el diseño de arquitectura, que aquí ha sido tratado como una labor a
realizar en la fase de análisis, es considerado como una primera tarea de la fase de diseño
12 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Design is not just what it looks like and feels like. Design is how it
works.
Steve Jobs ("El diseño no es sólo lo que parece y cómo parece.
Diseño es cómo se trabaja").
Reflexiona
Según estimaciones, las organizaciones y empresas que crecen más son las que
más dinero invierten en sus diseños.
13 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.3.- Codificación.
Caso práctico
En BK, ya tienen el proyecto dividido en partes.
Consiste en elegir un determinado lenguaje de programación y una vez elegido, codificar toda la
información anterior (es decir, indicar paso a paso usando un lenguaje de programación, las
tareas que debe realizar el ordenador). Al realizar esto se obtiene lo que se llama código
fuente.
14 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.4.- Compilación.
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.
En esta fase se hace una traducción de todo el código fuente con el objetivo de pasarlo a
lenguaje máquina. Esta traducción es absolutamente necesaria debido a que es el lenguaje que
entiende el ordenador.
El proceso de traducción de código fuente a código objeto puede realizarse de dos formas:
15 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.5.- Pruebas.
Caso práctico
María reúne todos los códigos diseñados y los
prepara para implementarlos en el equipo del
cliente.
Una vez obtenido el software, la siguiente fase del ciclo de vida es la realización de pruebas.
Entre todas las pruebas que se efectúan sobre el software podemos distinguir básicamente:
PRUEBAS UNITARIAS.
PRUEBAS DE INTEGRACIÓN.
16 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
En el siguiente enlace encontrarás información interesante sobre los tipos de prueba que
debemos hacer a nuestro software.
Autoevaluación
Si las pruebas unitarias se realizan con éxito, ¿es obligatorio realizar las de
integración?
Solución
1. Incorrecto
2. Opción correcta
17 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.6.- Explotación.
Caso práctico
Llega el día de la cita con la cadena hotelera. Ada y Juan se dirigen al hotel sonde
se va a instalar y configurar la aplicación. Si todo va bien, se irá implementando
en los demás hoteles de la cadena.
Ada no quiere que se le pase ni un detalle: lleva consigo la guía de uso y la guía
de instalación.
Después de todas las fases anteriores, una vez que las pruebas nos demuestran que el software
es fiable, carece de errores y hemos documentado todas las fases, el siguiente paso es la
explotación.
En este momento, 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.
18 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Reflexiona
Realizas un proyecto software por vez primera y no te das cuenta de
documentarlo. Consigues venderlo a buen precio a una empresa. Al cabo de un
par de meses te piden que actualices algunas de las funciones, para tener mayor
funcionalidad. Estás contento o contenta porque eso significa un ingreso extra. Te
paras un momento...¿Dónde están los códigos? ¿Qué hacía exactamente la
aplicación? ¿Cómo se diseñó? No lo recuerdas... Probablemente hayas perdido
un ingreso extra y unos buenos clientes.
19 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.7.- Mantenimiento.
Caso práctico
Ada reúne por última vez durante estas semanas a
su equipo. Todos celebran que el proyecto se ha
implementado con éxito y que sus clientes han
quedado satisfechos.
Sería lógico pensar que con la entrega de nuestra aplicación (la instalación y configuración de
nuestro proyecto en los equipos del cliente) hemos terminado nuestro trabajo.
En cualquier otro sector laboral esto es así, pero el caso de la construcción de software es muy
diferente.
Además, siempre surgen errores que habrá que ir corrigiendo y nuevas versiones del producto
mejores que las anteriores.
Por todo ello, se pacta con el cliente un servicio de mantenimiento de la aplicación (que
también tendrá un coste temporal y económico).
Su duración es la mayor en todo el ciclo de vida del software, ya que también comprende las
actualizaciones y evoluciones futuras del mismo.
Los tipos de cambios que hacen necesario el mantenimiento del software son los siguientes:
20 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Autoevaluación
¿Cuál es, en tu opinión, la etapa más importante del desarrollo de software?
El análisis de requisitos.
La codificación.
Las pruebas y documentación.
La explotación y el mantenimiento.
Solución
1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto
21 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
3.8.- Documentación.
Caso práctico
Ada ha quedado dentro de dos días con su cliente.
Pregunta a María por todos los dossiers de
documentación. La pálida expresión de la joven
hace que Ada arda en desesperación: "—¿No
habéis documentado las etapas? ¿Cómo voy a
explicarle al cliente y sus empleados el
funcionamiento del software? ¿Cómo vamos a
realizar su mantenimiento?".
En realidad, la documentación no debe ser considerada como una etapa más en el desarrollo
del proyecto, la elaboración de documentos es constante durante todo su ciclo de vida.
Documentar un proyecto se hace necesario para dar toda la información a los usuarios de
nuestro software y para poder acometer futuras revisiones.
Una correcta documentación permitirá pasar de una etapa a otra de forma clara y definida.
También se hace imprescindible para la reutilización de parte de los programas en otras
aplicaciones, siempre y cuando se desarrollen con diseño modular.
22 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
presentar.
Reflexiona
Según estimaciones, el 26% de los grandes proyectos de software fracasan, el
48% deben modificarse drásticamente y sólo el 26% tienen rotundo éxito. La
principal causa del fracaso de un proyecto es la falta de una buena planificación
de las etapas y mala gestión de los pasos a seguir. ¿Por qué el porcentaje de
fracaso es tan grande? ¿Por qué piensas que estas causas son tan
determinantes?
Mostrar retroalimentación
23 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
De ahí surgió la necesidad de hacer desarrollos más estructurados, aportando valor añadido y
calidad al producto final, apareciendo el concepto de ciclo de vida del software.
En las primeras fases, aunque no haya líneas de código, invertir en pensar el diseño es
avanzar en la construcción del sistema, pues facilitará la codificación.
Asegura un desarrollo progresivo, con controles sistemáticos, que permite detectar
defectos con mucha antelación.
El seguimiento del proceso permite controlar los plazos de entrega retrasados y los costes
excesivos.
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.
Aumenta la visibilidad y la posibilidad de control para la gestión del proyecto.
Supone una guía para el personal de desarrollo, marcando las tareas a realizar en cada
momento.
Minimiza la necesidad de rehacer trabajo y los problemas de puesta a punto.
Diversos autores han planteado distintos modelos de ciclos de vida, pero los más conocidos y
utilizados son los citados a continuación:
1. Modelo en Cascada
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.
Este escaso margen de error lo hace prácticamente imposible de utilizar. Sólo es aplicable
en pequeños desarrollos.
Características:
24 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
No hay retornos en las etapas: si hay algún error durante el proceso hay que empezar
desde el principio.
Es un modelo utópico.
Es uno de los modelos más utilizados. Proviene del modelo anterior, pero se introduce una
realimentación entre etapas, de forma que podamos volver atrás en cualquier momento
para corregir, modificar o depurar algún aspecto. No obstante, si se prevén muchos
cambios durante el desarrollo no es el modelo más idóneo.
Características:
3. Modelos Evolutivos
Son más modernos que los anteriores. Tienen en cuenta la naturaleza cambiante y evolutiva del
software.
Características:
25 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
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.
2. 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:
3. 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. Al tratarse de metodologías
evolutivas, el desarrollo es incremental, peros incrementos son cortos y están abiertos al
solapado de unas fases con otras. La comunicación entre los integrantes del equipo de
trabajo y de éstos con el cliente son constantes. Un ejemplo de metodología ágil
es Scrum.
Autoevaluación
Si queremos construir una aplicación pequeña, y se prevé que no sufrirá
grandes cambios durante su vida, ¿sería el modelo de ciclo de vida en espiral
el más recomendable?
Sí.
No.
26 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Solución
1. Incorrecto
2. Opción correcta
27 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
¿En qué fases del proceso nos pueden 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…
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…
Pulsa este enlace para ver una ampliación de los tipos y ayudas concretas de la
herramientas CASE.
28 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
29 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
6.- Frameworks.
Un Framework es una estructura de ayuda al programador,
en base a la cual podemos desarrollar proyectos sin partir desde
cero.
Características de frameworks.
Debes conocer
Ejemplos de Frameworks:
30 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
31 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Caso práctico
Una de los aspectos del proyecto que más
preocupa a Ada es la elección del lenguaje de
programación a utilizar.
Ya dijimos anteriormente que los programas informáticos están escritos usando algún lenguaje
de programación. Por tanto, podemos definir un Lenguaje de Programación como 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. Es decir, un lenguaje de programación es el conjunto de:
Hay multitud de lenguajes de programación, cada uno con unos símbolos y unas estructuras
diferentes. Además, cada lenguaje está enfocado a la programación de tareas o áreas
determinadas. Por ello, la elección del lenguaje a utilizar en un proyecto es una cuestión de
extrema importancia.
Los lenguajes de programación son los que nos permiten comunicarnos con el
hardware del ordenador.
En otras palabras, es muy importante tener muy clara la función de los lenguajes de
programación. Son los instrumentos que tenemos para que el ordenador realice las tareas que
necesitamos.
Los lenguajes de programación han sufrido su propia evolución, como se puede apreciar en la
figura siguiente:
32 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
33 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Lenguaje máquina:
Lenguaje ensamblador:
Lenguajes visuales:
34 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Caso práctico
Lenguajes de programación de bajo nivel. Los lenguajes de bajo nivel son lenguajes
que aprovechan al máximo los recursos del ordenador donde se van a ejecutar, Los
lenguajes de más bajo nivel son los lenguajes máquinas, A este nivel le sigue el lenguaje
ensamblador.
Lenguaje máquina. Se programan sus registros directamente con 0s y 1s. Difícil
de programar y resolver errores.
35 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Si el programa no está escrito en dicho lenguaje habrá que hacer una traducción para que el
ordenador lo entienda.
La ventaja de los lenguajes compilados frente a los interpretados es que no hace falta traducir el
programa cada vez; sin embargo, su inconveniente es que no podremos ejecutar el programa
hasta que no haya ningún error. Los intérpretes van traduciendo y ejecutando instrucción a
instrucción lo cual hace que se pueda ejecutar el programa (aunque haya errores). En el
momento que llegue a dicha instrucción errónea, se parará el programa.
Para obtener las ventajas de ambos tipos de lenguajes, algunos combinan estas dos tareas:
1. Primero, el programa original (en Java, los ficheros donde se guarda el programa
fuente tienen extensión “java”) se hace una primera traducción pero no al lenguaje
máquina sino a un lenguaje intermedio (en Java es bytecodes). De dicha traducción se
obtiene un fichero (en Java tienen extensión “class”). Esto equivaldría a la fase de
compilación.
2. En una segunda fase, dicho archivo es traducido (interpretado) en cada ejecución.
Esto es lo que realiza, por ejemplo, Java. A estos lenguajes se les llama lenguajes
intermediarios.
Durante todo este proceso (que se realizan en los lenguajes intermedios), el código pasa
por diferentes estados. La siguiente figura muestra el proceso de transformación del
código fuente a máquina para el lenguaje Java.
36 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
javac java
Tipos de código
Código Es el escrito por los programadores en algún editor de texto. Se escribe usando
Fuente 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.
Se trata de información conceptualmente más cercana al programador que a la
máquina, que no es capaz de ejecutarlo directamente.
Un aspecto muy importante en esta fase es la elaboración previa de un
algoritmo, que lo definimos como un conjunto de pasos a seguir para obtener la
solución del problema. El algoritmo lo diseñamos en pseudocódigo y con él,
la codificación posterior a algún Lenguaje de Programación determinado será
más rápida y directa.
Para obtener el código fuente de una aplicación informática:
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.
37 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Código Se trata de un código intermedio para los lenguajes intermedios, por lo tanto no
Objeto es directamente ejecutable por el equipo. Para que la máquina pueda ejecutar
el programa es necesario transformarlo al lenguaje que ésta maneja con un
intérprete. El código objeto se obtiene mediante el uso de un compilador.
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.
En definitiva, es el resultado de traducir código fuente a un código equivalente
formado por unos y ceros que aún no puede ser ejecutado directamente por la
computadora.
Consiste en un bytecode (código binario) que está distribuido en varios
archivos, cada uno de los cuales corresponde a cada programa fuente
compilado.
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 Es el código máquina resultante de enlazar los archivos de código objeto con
Ejecutable 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. dora.Los programas compilados no producen código objeto. El
proceso de compilación ya realiza el paso de fuente a ejecutable directamente.
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.También es conocido como código máquina y ya sí es
directamente inteligible por la computadora.
Generación de código ejecutable.
En el esquema de generación de código ejecutable, vemos el proceso completo
para la generación de ejecutables.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 (se verá en el siguiente
punto), pasa a código máquina, ya directamente ejecutable por la computadora.
38 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Autoevaluación
Para obtener código fuente a partir de toda la información necesaria del
problema:
Muy bien. El diseño del algoritmo (los pasos a seguir) nos ayudará a que la
codificación posterior se realice más rápidamente y tenga menos errores.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
Autoevaluación
39 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Ejercicio de relacionar
Tipo de
Relación. Características.
código.
Enviar
40 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Sentencias secuenciales.
Sentencias selectivas (condicionales).
Sentencias repetitivas (iteraciones o bucles).
La programación estructurada fue de gran éxito por su sencillez a la hora de construir y leer
programas.
VENTAJAS INCONVENIENTES
41 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Debes conocer
La Programación estructurada evolucionó hacia la Programación modular, que
divide el programa en trozos de código llamados módulos con una funcionalidad
concreta, que podrán ser reutilizables.
42 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Clase
Objeto
Mensaje
Método
Evento (sistema)
Propiedad o atributo
Estado interno
Abstracción
43 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Encapsulamiento
Poliformismo
Herencia
Algunos lenguajes orientados a objetos son: Ada, C++ (C plus plus), VB.NET, C#, Java,
PowerBuilder, etc.
Nota: otros módulos del ciclo te permitirán conocer la programación orientada a objetos en
profundidad.
44 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Para ello, la máquina virtual aísla la aplicación de los detalles físicos del equipo en
cuestión.
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.
45 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
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í.
Autoevaluación
Señala la afirmación falsa respecto de los entornos de ejecución:
46 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Solución
1. Opción correcta
2. Incorrecto
3. Incorrecto
47 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Concepto.
Componentes.
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.
Lo primero es descargarnos el programa JRE. (Java2 Runtime Environment JRE 1.6.0.21). Java
es software libre, por lo que podemos descargarnos la aplicación libremente.
Una vez descargado, comienza el proceso de instalación, siguiendo los pasos del asistente.
Debes conocer
El proceso de descarga, instalación y configuración del entorno de ejecución de
programas. En el siguiente enlace, se explican los pasos para hacerlo bajo el
sistema operativo Linux.
48 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Las sentencias secuenciales son aquellas que se ejecutan una detrás de la otra, según el orden
en que hayan sido escritas.
Ejemplo en lenguaje C:
Son aquellas en las que se evalúa una condición. Si el resultado de la condición es verdad es
ejecutan una serie de acción o acciones y si es falso se ejecutan otras.
→ Todas las acciones que se encuentren tras esta palabra reservada se ejecutarán si la
then
condición del if es cierta (en C, se omite esta palabra).
→ Todas las acciones que se encuentren tras esta otra palabra reservada se ejecutarán si la
else
condición de if es falsa.
Ejemplo en lenguaje C:
if (a >= b)
c= a-b;
else
c=a+b;
Un bucle iterativo de una serie de acciones harán que éstas se repitan mientras o hasta que una
determinada condición sea falsa (o verdadera).
while → marca el comienzo del bucle y va seguido de la condición de parada del mismo.
do→ a partir de esta palabra reservada, se encontrarán todas las acciones a ejecutar mientras
se ejecute el bucle (en C, se omite esta palabra).
done→ marca el fin de las acciones que se van a repetir mientras estemos dentro del bucle (en
C, se omite esta palabra).
Ejemplo en lenguaje C:
int num;
49 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
num = 0;
while (num<=10) { printf("Repetición numero %d\n", num);
num = num + 1;
};
50 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Recurso Recurso
Datos del recurso (1) Datos del recurso (2)
(1) (2)
Autoría: Ministerio de
Autoría: Verónica Cabrerizo.
Educación.
Licencia: Uso Educativo-nc.
Licencia: Uso Educativo-nc.
Procedencia: Elaboración
Procedencia: Elaboración
propia.
propia.
51 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
Autoría: Ministerio de
Autoría: Verónica Cabrerizo.
Educación.
Licencia: Uso Educativo-nc.
Licencia: Uso Educativo-nc.
Procedencia: Elaboración
Procedencia: Elaboración
propia.
propia.
52 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
53 de 54 23/08/2021 20:18
UD1.- Desarrollo de software. http://localhost:51235/temp_print_dirs/eXeTempPrintDir_ZhsNF...
54 de 54 23/08/2021 20:18