Ra1 Ed
Ra1 Ed
Ra1 Ed
Reconocimiento de los
elementos del desarrollo de
software.
CFGS-DAM-ENTORNOS DE DESARROLLO
Objetivos-Criterios
RA: Reconoce los elementos y herramientas que intervienen en el desarrollo de un programa informático,
analizando sus características y las fases en las que actúan hasta llegar a su puesta en funcionamiento.
Criterios de evaluación:
a) Se ha reconocido la relación de los programas con los componentes del sistema informático, memoria,
procesador, periféricos, entre otros.
d) Se han reconocido las características de la generación de código intermedio para su ejecución en máquinas
virtuales.
f) Se ha diferenciado el funcionamiento de los distintos tipos de traductores de lenguajes ante el código fuente de
un programa.
➢ Sistema operativo: también conocido como software base, es aquel que debe estar instalado en
el equipo para poder gestionar los recursos de hardware y utilizar las aplicaciones informáticas.
➢ Software de programación: es el conjunto de utilidades software que nos posibilitan el
desarrollo de programas informáticos.
➢ Aplicaciones: conjuntos de programas que permiten a los usuarios llevar a cabo una o varias
tareas específicas.
Relación software-hardware.
Cualquier aplicación necesita recursos hardware para poder ejecutarse (CPU, memoria RAM, acceso
a los dispositivos E/S, etc.).
El sistema operativo controla y coordina el hardware del equipo, siendo el intermediario entre los
componentes físicos y las aplicaciones que se están ejecutando. El sistema operativo lleva a cabo
todo esto de manera transparente tanto para las aplicaciones como para el usuario
1.1. Componentes del sistema informático
Como todo el mundo sabe, el software tiene una serie de características muy particulares
que lo definen. Estas características son las siguientes:
► a) El software es lógico, no físico. Es intangible.
► b) El software se desarrolla, no se fabrica. Es mejor decir desarrolladores de software que
fabricantes de software.
► e) El software no se estropea y una copia suya da lugar a un clon con las mismas
características del original.
► d) En ocasiones, puede construirse a medida. Existe software a medida y software
enlatado .
¿Qué es un software enlatado?
► Un software enlatado es un sistema que fue desarrollado con anterioridad por una
empresa proveedora, la cual vende “licencias de uso” del mismo. Tal como cualquier
producto que se “fabrica” atraviesa por distintas etapas antes de ser lanzado al mercado:
diseño, producción y control de calidad.
¿Qué es un software a medida?
► Un software a medida es creado específicamente para satisfacer los requerimientos de su
empresa. Puede ser desarrollado por una empresa proveedora, por profesionales de sistemas
contratados en forma independiente, o bien, por profesionales del departamento de
sistemas de su empresa.
1.2. Programas informáticos y aplicaciones informáticas
1.2.1. Concepto de programa informático
► Un programa es una serie de órdenes o instrucciones secuenciadas y
ordenadas con una finalidad concreta y que realizan una función
determinada.
Ejemplo: programa Hola mundo en lenguaje C
1.2. Programas informáticos y aplicaciones informáticas
1.2.1. Concepto de programa informático
c. Lenguajes virtuales
► Son lenguajes más portables que los lenguajes compilados, puesto que el código
que se genera tras la compilación es un código intermedio o bytecode
► Este código puede ser, a su vez, interpretado por una máquina virtual instalada en
cualquier equipo
► Tienen una ejecución lenta, pero su versatilidad para poder ejecutarse en cual
quier entorno los hace muy apreciados.
1.3. Lenguajes de programación
1.3.1. Tipos de lenguajes de programación
Clasificados atendiendo a su técnica de programación:
1. Lenguaje estructurado:
► Usan la técnica de programación estructurada. Ejemplos: Pascal, C, etc.
► Permite sólo el uso de tres tipos de sentencias o estructuras de control:
► Sentencias secuenciales.
► Sentencias selectivas (condicionales).
► Sentencias repetitivas (iteraciones o bucles).
2. Lenguaje orientado 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.
3. 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.
1.3. Lenguajes de programación
1.3.2. Características de los lenguajes más
difundidos
1.3. Lenguajes de programación
1.3.2. Características de los lenguajes más
difundidos
1.3. Lenguajes de programación
1.3.2. Características de los lenguajes más
difundidos
1.3. Lenguajes de programación
1.3.2. Características de los lenguajes más
difundidos
1.3. Lenguajes de programación
1.3.2. Características de los lenguajes más
difundidos
1.3.2. Características de los lenguajes más
difundidos
1.3. Lenguajes de programación
1.3.2. Características de los lenguajes más difundidos
Java: Python:
C y C++: JavaScript:
PHP: VB.NET
1.4. El proceso de traducción / compilación
❏ 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.
❏ Código Objeto: es el código binario resultado de compilar el código
fuente.
❏ Código 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.
Existen dos grandes grupos de tipos de traductores: los compiladores y
los intérpretes:
► Un intérprete traduce el código fuente línea a línea. El programa que
hace de intérprete junto con el código fuente, tiene que estar en
memoria ejecutándose para poder ejecutar el programa
► Un compilador traduce el código fuente a código máquina. El compilador
solamente está en la máquina de desarrollo. El código generado solo
funcionará en una máquina con un hardware y un software determinados.
Si cambian de hardware o software, hay que volver a recompilarlo.
1.4. El proceso de traducción / compilación
► En el proceso de compilación, primero, se realiza un pre-procesado del código. Todos
los comandos de pre-procesamiento se ejecutan y traducen.
► Una vez realizado este paso, se compilan los ficheros del código fuente generándose un
código intermedio.
► Existen muchos compiladores de código intermedio a código máquina y el objetivo de
este paso es reutilizar dichos compiladores, puesto que son rápidos, eficientes, están
probados y reducen el tiempo de desarrollo.
► El código intermedio, generalmente, vuelve a compilarse y traducirse a ensamblador o
código objeto directamente.
► Dependiendo de lo eficiente que sea el compilador, estas fases llevarán más o menos
tiempo.
► El código objeto es básicamente un código máquina, lo único que le falta es enlazarlo a
las librerías para generar un programa ejecutable .
► El proceso de enlazado (incluir en el código ejecutable el código máquina de las
librerías) lo realiza un programa específico llamado enlazador o linker, el cual, además
de enlazar codo el código objeto, optimiza los programas para que se ejecuten más
rápido en un futuro.
1.4. El proceso de traducción / compilación
1.4. El proceso de traducción / compilación
1.4. El proceso de traducción / compilación
1.5. Desarrollo de una aplicación
1. Fases del desarrollo de una aplicación
2. Documentación
3. Roles o figuras que forman parte del proceso de desarrollo del software
1.5. Desarrollo de una aplicación
Ciclo de vida - Ingeniería del software
► El modelo de ciclo de vida del software es el conjunto de pasos que se tienen que seguir para el desarrollo de un
programa.
► La ingeniería del software, nace para convertir el proceso artesanal de construcción de programas
informáticos en una ingeniería, para así producir software industrial en serie y de calidad.
Como cualquier rama o disciplina dentro de la Informática, la ingeniería del software ha ido evolucionando en el tiempo hasta
la fecha actual. Las etapas o generaciones por las que ha ido pasando se asemejan al desarrollo de un programador desde que
se inicia en el mundo de la programación hasta que se hace más o menos experto en el análisis, diseño y construcción de
programas informáticos de un nivel aceptable.
.
Etapas de la ingeniería del software
En ingeniería del software se consideran cuatro etapas o generaciones claramente diferenciadas:
En la primera generación de desarrollo de software, la construcción de programas informáticos se llevaba a cabo de una
forma directa, esto es, planificando a groso modo las partes de un programa sin entrar a detallar el proceso de análisis y
diseño previos. Se carecía de una metodología específica y la experiencia del programador era clave en la construcción de
software. Esta etapa se prolongó hasta mediados de la década de los 70.
La segunda generación nace con la idea de centrarse más en el análisis del problema para afrontar con mayor garantías la
programación. Aparecen las primeras metodologías de programación estructurada. El ya clásico "divide y vencerás" es
el referente para diseñar programas más legibles.
El desarrollo orientado a objetos aparece en la tercera generación como alternativa a las técnicas clásicas de
programación estructurada. Ello supuso una forma distinta de representar la realidad para representar y tratar los problemas
de programación a través del concepto de clase. Dicha manera de representar la realidad supuso un mayor acercamiento a la
forma más natural de pensar del ser humano. El lenguaje UML (Unified Modeling Languaje) es el elegido para modelar la
realidad y resolver problemas según esta filosofía.
Por último, en la cuarta generación surgen las llamadas herramientas CASE (Computer Aided Software Engineering) y los
lenguajes de cuarta generación (centrados en el concepto de evento) como verdaderas herramientas para desarrollar
software de una forma más rápida y eficaz, construyendo cada parte del software final según una herramienta gráfica cómoda
y amigable, y automatizando el proceso de generación de código.
1.5. Desarrollo de una aplicación
1.5.1. Fases del desarrollo de una aplicación
1.5. Desarrollo de una aplicación
1.5.1. Fases del desarrollo de una aplicación
A) Fase inicial:
- Se planifica el proyecto
- Se hacen estimaciones
- Se verifica si el proyecto es rentable …
La planificación y estimación requiere por su complejidad de la experiencia
de gente con experiencia en la elaboración de proyectos como en plataformas
en las que se van a realizar su construcción.
- Creación de documentos de alto nivel donde quedan reflejadas las
decisiones adoptadas, las cuales a veces afectan al resto de fases del
proyecto. De ahí la importancia de dejarlo bien documentado, detallado y
soportado por datos concretos.
1.5. Desarrollo de una aplicación
1.5.1. Fases del desarrollo de una aplicación
D. Codificación o implementación:
- Consiste en implementar en un lenguaje de programación las distintas
funcionalidades definidas en la etapa de diseño.
- Aunque en esta fase el código es documentado, es necesario la creación de
documentos donde se indique para cada función que parámetros de entrada y
salida recibe, cuál es su propósito, módulos o librerías donde se encuentra,
quien lo ha programado, qué revisiones se han realizado.
Con la idea de ayudar al mantenimiento futuro del código por cualquier
persona.
E. Pruebas:
- Garantizamos que la aplicación desarrollada realiza las especificaciones
originales
- Que la integración de los distintos programas es perfecta y que está
preparada para la explotación.
1.5. Desarrollo de una aplicación
1.5.1. Fases del desarrollo de una aplicación
F. Explotación:
- Se instala el software en el entorno real de uso y se trabaja con él
- Es la fase más larga y suelen surgir multitud de incidencias, nuevas
necesidades, etc.
- Toda la información suele detallarse en un documento en el que se incluyen
los errores o fallos detectados, para que los analista y programadores puedan
revisar y reparar esos fallos. También se documentará las nuevas
funcionalidades, de manera que pueda todo ello llevarse a la siguiente fase
G. Mantenimiento:
- Se lleva a cabo las incidencias y nuevas necesidades detectadas en la fase
anterior.
- Nuevamente se documenta todo
1.5. Desarrollo de una aplicación
1.5.1. Fases del desarrollo de una aplicación
Aunque todo ciclo de vida de un proyecto de desarrollo de software contiene las etapas que hemos visto anteriormente, la manera de
llevarlas a cabo varía según cada proyecto, ello da lugar a distintos tipos de ciclos de vida. Los principales son:
El modelo de ciclo de vida en cascada es el modelo más simple en desarrollo de software. En él las etapas se llevan a cabo una
detrás de otra de forma lineal, así sólo cuando la primera fase se termina se puede empezar con la segunda, y así progresivamente.
Este modelo asume que todo se lleva a cabo y tiene lugar tal y como se había planeado en la fase anterior, y no es necesario pensar en
asuntos pasados que podrían surgir en la siguiente fase. Este modelo no funcionará correctamente si se dejan asuntos de lado en la fase
previa. La naturaleza secuencial del modelo no permite volver atrás y deshacer o volver a hacer acciones.
Este modelo es recomendable cuando el desarrollador ya ha diseñado y desarrollado aplicaciones similares con anterioridad, es decir,
tiene la experiencia suficiente para terminar con una etapa y comenzar la siguiente.
El ciclo de vida clásico o en cascada no siempre es la mejor opción a adoptar en el desarrollo de software, hay ocasiones en las que:
● una etapa del CV no puede ser completada por no poder detallar la definición del problema. En una situación así, es
necesario dejar dicha etapa sin terminar y pasar a las siguientes, para regresar más tarde a completarla.
● las decisiones tomadas en etapas posteriores obligan a modificar otras ya dadas por terminadas o definitivas.
● pueden detectarse errores cometidos en etapas ya superadas.
En estas situaciones podríamos considerar la posibilidad de volver atrás desde cualquier etapa, ello supone una mejora al ciclo de
vida clásico.
El problema de no poder completar una etapa por no poder detallar o definir alguna de las partes de dicho problema, puede suponer
una gran dificultad para desarrollar una solución definitiva. Los llamados prototipos surgen con la idea ayudar en este sentido.
Un prototipo es un modelo inicial (no la solución final) que se irá refinando en sucesivas pasadas, adaptándolo a las necesidades
del cliente, hasta evolucionar en la solución definitiva.
En la práctica, se parte de un modelo base inicial aproximado que con la ayuda y aportación del cliente y usuarios se va puliendo,
desarrollando así el prototipo según dichas especificaciones hasta completar el proyecto software.
1.5. Desarrollo de una aplicación
1.5.1. Fases del desarrollo de una aplicación
● Ciclo de vida en espiral.
Hasta ahora en lo referente al CV sólo se habían considerado aspectos técnicos. El tipo de ciclo de vida en espiral tiene en cuenta
además el factor riesgo. En este sentido, es un CV que intenta aprovechar las ventajas de los modelos anteriores pero dando
importancia a los factores económicos.
Como se observa en la figura siguiente, este tipo de CV se divide en cuatro grandes etapas: planificación, análisis de riesgos, ingeniería y
evaluación. En cada etapa se va pasando de forma circular y creciente a la siguiente, así en cada paso es preciso valorar y
considerar más recursos y trabajo (tiempo, dinero, recursos humanos, etc) para acercarse a la solución final.
En este sentido, existe una similitud con el modelo de ciclo de vida basado en prototipos pero incluyendo en cada pasada todas las partes
del CV del proyecto.
1.5. Desarrollo de una aplicación
1.5.1. Fases del desarrollo de una aplicación.
Metodología
Según las características particulares de cada proyecto software, podremos decidirnos por un tipo de CV u otro:
● Si el equipo de desarrollo posee la experiencia suficiente y los requisitos están perfectamente fijados, es recomendable un
ciclo de vida en cascada.
● El ciclo de vida en espiral será el elegido si durante el desarrollo del proyecto se tendrán en cuenta riesgos o imprevistos.
● En el caso de tener que ir afinando con el cliente cada etapa, con el objetivo de mostrarle su utilidad, el ciclo de vida basado
en prototipos será el elegido.
En la práctica se suelen dar situaciones que incluyen parte de una o varias de estas características. Es necesario establecer
formalmente una metodología de desarrollo de software que ayude en todo el proceso para garantizar una solución final acertada.
Son muchas las metodologías existentes en el mercado, cada una con sus ventajas e inconvenientes. Sin embargo, todas tienen una
estructura común en el sentido de detallar paso por paso cada etapa a seguir.
En cada paso se suele describir el trabajo a desarrollar en él, los productos a obtener y las técnicas que se aconseja usar para
generarlos. Los productos generados en un paso de la metodología sirven como "materia prima" para el trabajo de los siguientes.
En este sentido, las metodologías tratan de trazar un camino repetible que, si es seguido completa y fielmente, conduce de manera
predecible a los objetivos buscados.