Unidad 1
Unidad 1
Unidad 1
1 Introducción .......................................................................................... 3
2 Un poco de historia de los ordenadores .......................................................... 3
2.1 La era mecánica (1623-1945) ................................................................. 4
2.2 Ordenadores electrónicos de primera generación (1937-1953) .......................... 7
2.3 Segunda generación (1954-1962) ........................................................... 10
2.4 Tercera generación (1963-1972) ........................................................... 12
2.5 Cuarta generación (1972-1984) ............................................................. 14
2.6 Quinta generación Quinta generación (1984-2000) ...................................... 17
2.7 La sexta generación de ordenadores (2000-actualidad) ................................ 23
2.8 Una mirada al futuro ......................................................................... 25
3 Sistema binario de numeración .................................................................. 27
3.1 Historia del sistema binario ................................................................. 28
3.2 El sistema posicional ......................................................................... 29
3.3 Teorema fundamental de la numeración ................................................. 29
3.4 Representación ............................................................................... 30
3.5 Operaciones con números binarios ......................................................... 31
3.5.1 Conversión entre binario y decimal, binario y octal, y binario y hexadecimal 34
3.5.2 Ejercicios ................................................................................. 34
3.5.3 Representacion de números en el ordenador ....................................... 38
3.5.4 Representación de los números en punto flotante ................................. 38
3.5.4.1 Normalización de números ....................................................... 38
3.5.4.2 Propósito de números en punto flotante ....................................... 38
3.5.4.3 Cifras significativas ................................................................ 39
3.5.5 Estándar IEEE 754 ....................................................................... 40
3.6 Precisión Simple en el Estándar IEEE 754 ................................................. 41
3.6.1 Ejercicio .................................................................................. 42
3.7 Representación de texto en un ordenador. El código ASCII. ........................... 43
3.7.1 Ejercicio .................................................................................. 45
3.8 Representación de colores en un ordenador. RGB ....................................... 45
3.8.1 Cómo funciona una pantalla de ordenador RGB .................................... 47
4 Sistemas de Información .......................................................................... 49
4.1 Sistemas de información ..................................................................... 50
4.2 Sociedad de la información ................................................................. 54
5 Software ............................................................................................. 56
5.1 Tipos de software............................................................................. 57
5.2 Licencias de software ........................................................................ 62
6 Ingeniería de software ............................................................................ 64
6.1.1 Normas en Ingenieria del software ISO 9001 ........................................ 66
6.2 CICLO DE VIDA DEL SOFTWARE ............................................................. 67
6.2.1 DEFINICIÓN ............................................................................... 68
6.2.2 MODELOS DE CICLO DE VIDA ........................................................... 68
6.2.2.1 CICLO DE VIDA EN CASCADA ...................................................... 69
6.2.3 MODELOS EVOLUTIVOS.................................................................. 70
6.3 Analisis ......................................................................................... 73
6.3.1 Especificación de requisitos del sistema............................................. 74
6.4 Fase de diseño ................................................................................ 77
6.5 Fase de Desarrollo o Implementación software. ......................................... 79
6.5.1 Programa ................................................................................. 79
6.5.2 Proceso ................................................................................... 81
6.5.3 Lenguajes de programación ........................................................... 81
6.5.3.1 ¿Qué es un lenguaje de programación? ......................................... 82
6.5.3.2 ¿Qué tipos de lenguaje de programación existen? ............................ 82
6.5.3.2.1 Lenguaje de programación de bajo nivel .................................... 83
6.5.3.2.2 Lenguaje de programación de alto nivel .................................... 84
6.5.3.3 Para que sirven los lenguajes de programación ............................... 85
6.5.3.4 Compiladores e interpretes ...................................................... 86
6.6 Fase de pruebas............................................................................... 88
6.7 Fases de implantación y mantenimiento. ................................................. 89
Color coding
Las tecnologías de la información están tan imbuidas en nuestra sociedad que se han
convertido en parte de nuestras vidas. Los usamos para programar nuestra vida diaria y
para producir la mayoría de nuestras comunicaciones. Teniendo esto en cuenta,
deberíamos encontrar un lugar preferente en nuestros planes de estudio educativos. El
objetivo de esta unidad y este curso es introducir a los estudiantes en contenidos más
avanzados, ya que ya han recibido educación formal en informática en años anteriores.
Por ultimo, trataremos del software y su desarrollo. Hasta convertirse en la industria más
potente de la historia el desarrollo software ha sufrido una evolución considerable desde
los primeros proyectos de los años 50 con gran tasa de fracasos hasta la gigaindustría que
es en la actualidad.
La idea de usar máquinas para resolver problemas matemáticos se puede rastrear al menos
hasta principios del siglo 17. Los matemáticos que diseñaron e implementaron
calculadoras que eran capaces de sumar, restar, multiplicar y divisionar incluyeron a
Wilhelm Schickhard, Blaise Pascal y Gottfried Leibnitz.
Tres máquinas han sido señaladas en varias ocasiones como los primeros ordenadores
electrónicos. Estas máquinas utilizaban interruptores electrónicos, en forma de tubos de
vacío, en lugar de relés electromecánicos. En principio, los interruptores electrónicos eran
más fiables, ya que no tenían partes móviles que se desgastaran, pero la tecnología aún
era nueva en ese momento y los tubos eran comparables a los relés en confiabilidad. Sin
embargo, los componentes electrónicos tenían un beneficio importante: podían "abrirse"
y "cerrarse" aproximadamente 1.000 veces más rápido que los interruptores mecánicos.
Tubos de vacio
Una segunda máquina electrónica precursora fue Colossus, diseñada por Alan Turing para
el ejército británico en 1943. Esta máquina jugó un papel importante en el descifrado de
los códigos utilizados por el ejército alemán en la Segunda Guerra Mundial. La principal
contribución de Turing al campo de la informática fue la idea de la máquina de Turing, un
formalismo matemático ampliamente utilizado en el estudio de las funciones
computables. La existencia de Colossus se mantuvo en secreto hasta mucho después de
que terminara la guerra, y el crédito debido a Turing y sus colegas por diseñar uno de los
primeros ordenadores electrónicas en funcionamiento tardó en llegar.
Colossus
Eckert, Mauchly y John von Neumann, consultor del proyecto ENIAC, comenzaron a
trabajar en una nueva máquina antes de que ENIAC estuviera terminado. La principal
contribución de EDVAC, su nuevo proyecto, fue la noción de un programa almacenado.
Existe cierta controversia sobre quién merece el crédito por esta idea, pero ninguna sobre
cuán importante fue la idea para el futuro de los ordenadores de propósito general. ENIAC
era controlado por un conjunto de interruptores y diales externos; para cambiar el
programa era necesario modificar físicamente la configuración de estos controles. Estos
controles también limitaron la velocidad de las operaciones electrónicas internas.
Mediante el uso de una memoria que era lo suficientemente grande como para contener
instrucciones y datos, y utilizando el programa almacenado en la memoria para controlar
el orden de las operaciones aritméticas, EDVAC pudo ejecutar instruccuines 10 órdenes
de magnitud más rápido que ENIAC. Al almacenar instrucciones en el mismo medio que los
datos, los diseñadores podrían concentrarse en mejorar la estructura interna de la
máquina sin preocuparse por igualarla a la velocidad de un control externo.
EDVAC
La tecnología de software durante este período era muy primitiva. Los primeros programas
se escribieron en código máquina, es decir, los programadores escribieron directamente
los números binarios que correspondían a las instrucciones que querían almacenar en la
memoria. En la década de 1950, los programadores usaban una notación simbólica,
conocida como lenguaje ensamblador, y luego traducía a mano la notación simbólica al
código máquina. Los programas posteriores conocidos como ensambladores realizaron la
tarea de traducción.
Tan primitivas como eran, estas primeras máquinas electrónicas fueron bastante útiles en
ciencias aplicadas e ingeniería. Atanasoff estimó que tomaría ocho horas resolver un
conjunto de ecuaciones con ocho incógnitas usando una calculadora, y 381 horas resolver
29 ecuaciones para 29 incógnitas. La computadora Atanasoff-Berry pudo completar la
tarea en menos de una hora. El primer problema ejecutado en el ENIAC, una simulación
numérica utilizada en el diseño de la bomba de hidrógeno, requirió 20 segundos, en lugar
de cuarenta horas utilizando calculadoras mecánicas. Eckert y Mauchly más tarde
desarrollaron lo que podría decirse que fue la primera computadora comercialmente
exitosa, la UNIVAC; en 1952, 45 minutos después del cierre de las urnas y con el 7% de los
votos contados, UNIVAC predijo que Eisenhower derrotaría a Stevenson con 438 votos
electorales (terminó con 442).
Segunda generación (1954-1962)
Transistor
Transistor video
Microchip
El IBM 360/91, lanzado durante el mismo período, era aproximadamente el doble de rápido
que el CDC 660. Empleaba instrucciones, separar unidades funcionales de coma flotante
e enteros y flujo de instrucciones pipeline o segmentado. El IBM 360-195 era comparable
al CDC 7600, derivando gran parte de su rendimiento de una memoria caché muy rápida.
La computadora SOLOMON, desarrollada por Westinghouse Corporation, y la ILLIAC IV,
desarrollada conjuntamente por Burroughs, el Departamento de Defensa y la Universidad
de Illinois, fueron representativas de las primeras computadoras paralelas. El Texas
Instrument Advanced Scientific Computer (TI-ASC) y el STAR-100 de CDC fueron
procesadores vectoriales pipeline o segmentado que demostraron la viabilidad de ese
diseño y establecieron los estándares para los procesadores vectoriales posteriores.
https://www.youtube.com/watch?v=sTwRQDVHNiw
https://www.youtube.com/watch?v=igVtLuqmxyM
Procesador vectorial
https://www.youtube.com/watch?v=x4GYDc5yEok
Ejemplos:
IMPERATIVO: es decir, como una secuencia de operaciones a realizar.
Con esta forma DECLARATIVA, especificamos lo que queremos obtener o hacer en lugar
de cómo:
Selecciona las personas y nombralos como niños con edad menor de 12. Se dice el que
debe hacer la instrucción, pero no el como.
Otras novedades en esta eran son el uso generalizado de redes informáticas y el uso cada
vez mayor de estaciones de trabajo de un solo usuario. Antes de 1985, el procesamiento
paralelo a gran escala se consideraba un objetivo de investigación, pero dos sistemas
introducidos en esta época son típicos de los primeros productos comerciales que se basan
en el procesamiento paralelo. El Sequent Balance 8000 conectaba hasta 20 procesadores
a un solo módulo de memoria compartida (pero cada procesador tenía su propia caché
local). La máquina fue diseñada para competir con el DEC VAX-780 como un sistema Unix
de propósito general, con cada procesador trabajando en el trabajo de un usuario
diferente. Sin embargo, Sequent proporcionó una librerias de subrutinas que permitiría a
los programadores escribir programas que usarían más de un procesador, y la máquina fue
ampliamente utilizada para explorar algoritmos paralelos y técnicas de programación.
El Intel iPSC-1, apodado "the hipercube", adoptó un enfoque diferente. En lugar de utilizar
un módulo de memoria, Intel conectó cada procesador a su propia memoria y utilizó una
interfaz de red para conectar los procesadores. Esta arquitectura de memoria distribuida
significaba que la memoria ya no era un cuello de botella y se podían construir sistemas
grandes (que usaban más procesadores). El iPSC-1 más grande tenía 128 procesadores.
https://www.youtube.com/watch?v=XTgbQsjU_XA
Al principio internet era una fuente de información. Las webs estáticas servían para
publicar artículos para Científicos y Universidades. Además, las empresas privadas
comenzaron a publicar sus sitios web para ofrecer información y como herramienta de
marketing.
A mediados de los años 90, la web dinámica se creó con Javascript y algunos entornos de
servidores backend dieron a los sitios web la oportunidad de interactuar con servidores de
bases de datos y servidores empresariales. Resultó ser la etapa inicial de las aplicaciones
web. En este punto, los usuarios de Internet pueden interactuar con los servidores, enviar
y recibir datos desde su navegador a una computadora servidor. Este cambio llevó al
desarrollo de las primeras aplicaciones de comercio electrónico como Amazon o PayPal.
Jeff Bezos fundó Amazon en julio de 1994. Eligió Seattle debido al talento técnico, ya que
la sede de Microsoft se encuentra situada allí. En mayo de 1997, Amazon salió a bolsa.
Comenzó a vender música y videos en 1998, momento en el que comenzó a operar a nivel
internacional mediante la adquisición de vendedores en línea de libros en el Reino Unido
Video internet:
https://www.youtube.com/watch?v=mGG5o6vbKyQ
Nuestras aplicaciones aprovechan estos datos para ofrecer una ingente cantidad de
información para los mercados. Estos datos son procesados por servidores con capacidades
de inteligencia artificial. Además, este software de servidor estudia nuestro
comportamiento para ofrecer los mejores servicios en función de nuestra rutina diaria. Se
podría decir que estamos completamente rastreados por máquinas, que supuestamente
nos monitorean para ofrecer un servicio de calidad.
Las dos figuras más innovadoras en estos desarrollos son Apple y Google. El Ipod, el Ipad
y el iPhone, el sistema operativo Android, el algoritmo de búsqueda de Google, la
geolocalización y todas las aplicaciones rodeadas ahorran tiempo y hacen la vida más fácil
a la humanidad.
Como nuevos gadgets, la inteligencia artificial aplicada a los juegos de control de voz y
las aplicaciones de escritura son fáciles con las aplicaciones de sexta generación. Los
jugadores entusiastas verán videojuegos con un detalle impresionante con acción realista.
El procesamiento paralelo permite velocidades de videojuegos más rápidas. Dado que la
huella digital del semiconductor se vuelve más pequeña mediante el uso de la
nanotecnología, el usuario tiene más flexibilidad en el uso de la computadora.
A partir de 2017, una nueva tecnología se integra lentamente en nuestra TI, la realidad
aumentada. Es una fuente de posibilidades debido a la integración de la realidad virtual
y la realidad. Prácticamente podemos probarnos ropa o un nuevo peinado. Podemos
previsualizar la decoración de nuestro salón.
Cuando los bits cuánticos o bits procesan cálculos, generalmente son más rápidos que las
computadoras convencionales. Esta tecnología funciona con el ordenador y el procesador
de memoria. Los lenguajes complejos como el inglés, el chino, el francés y el español se
manejan fácilmente utilizando bits cuánticos o bits cuánticos. La computadora cuántica
debe resolver problemas de computación en minutos que las computadoras tradicionales
tomarían años. Es un nuevo ámbito de la computadora donde consideramos más que los
dos estados binarios, 0 o 1.
Las computadoras ahora pueden entender e interpretar muchos idiomas con la nueva
tecnología avanzada disponible.
Este nuevo progreso permitirá a los estudiantes y personas con discapacidades pueden
comunicar comandos a la computadora sin tocar el dispositivo físico. El reconocimiento
de voz también es útil en salas de laboratorio asepticas, quirófanos o incluso en el servicio
al cliente. El reconocimiento de voz mejorará en gran medida la capacidad del mundo
para crear nuevas tecnologías.
Era mecánica
En 1605 Francis Bacon habló de un sistema por el cual las letras del alfabeto podrían
reducirse a secuencias de dígitos binarios, la cuales podrían ser codificados como
variaciones apenas visibles en la fuente de cualquier texto arbitrario. En gran medida para
la teoría general de codificación de binario, él añadió que este método podría ser usado
con cualquier objeto en absoluto: "siempre que aquellos objetos sean capaces de solo una
diferencia doble; como por campanas, por trompetas, por luces y antorchas, según el
informe de Mosquetes, y cualquier instrumento de naturaleza parecida." (podéis buscar el
código de Bacon).
En 1854, el matemático británico George Boole, publicó un artículo que marcó un antes y
un después, detallando un sistema de lógica que terminaría denominándose Álgebra de
Boole. Dicho sistema jugaría un papel fundamental en el desarrollo del sistema binario
actual, particularmente en el desarrollo de circuitos electrónicos.
En noviembre de 1937, George Stibitz, trabajando por aquel entonces en los Laboratorios
Bell, construyó un ordenador basado en relés - al cual apodó "Modelo K" (porque lo
construyó en una cocina, en inglés "kitchen")- que utilizaba la suma binaria para realizar
los cálculos.
El valor total del número será la suma de cada dígito multiplicado por la potencia de la
base correspondiente a la posición que ocupa en el número.
Esta representación posibilita la realización de sencillos algoritmos para la ejecución de
operaciones aritméticas.
En el sistema decimal los símbolos válidos para construir números son {0,1,...9} (0 hasta
9, ambos incluidos), por tanto la base (el número de símbolos válidos en el sistema) es
diez
3.4 Representación
1010011010
|-| --||-|-
xoxooxxoxo
ynynnyynyn
El valor numérico representado en cada caso depende del valor asignado a cada símbolo.
En un ordenador, los valores numéricos pueden ser representados por dos voltajes
diferentes y también se pueden usar polaridades magnéticas sobre un disco magnético.
Un "positivo", "sí", o "sobre el estado" no es necesariamente el equivalente al valor
numérico de uno; esto depende de la arquitectura usada.
De acuerdo con la representación acostumbrada de cifras que usan números árabes, los
números binarios comúnmente son escritos usando los símbolos 0 y 1. Cuando son escritos,
los números binarios son a menudo subindicados, prefijados o sufijados para indicar su
base, o la raíz. Las notaciones siguientes son equivalentes:
• 100101 binario (declaración explícita de formato)
• 100101b (un sufijo que indica formato binario)
• 100101B (un sufijo que indica formato binario)
• bin 100101 (un prefijo que indica formato binario)
• 1001012 (un subíndice que indica base 2 (binaria) notación)
• %100101 (un prefijo que indica formato binario)
• 0b100101 (un prefijo que indica formato binario, común en lenguajes de
programación)
100110101
+ 11010101
———————————
1000001010
La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada
de la posición siguiente: 10 - 1 = 1 y me llevo 1, lo que equivale a decir en decimal, 2 - 1
= 1. Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos
algunos ejemplos:
• Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide
una resta larga en tres restas cortas:
100110011101 1001 1001 1101
-010101110010 -0101 -0111 -0010
————————————— = ————— ————— —————
El algoritmo del producto en binario es igual que en números decimales; aunque se lleva
cabo con más sencillez, ya que el 0 multiplicado por cualquier número da 0, y el 1 es el
elemento neutro del producto.
100010010 |1101
——————
- 0000 010101
———————
10001
- 1101
———————
01000
- 0000
———————
10000
- 1101
———————
00111
- 0000
———————
01110
Binario a decimal
1. Inicie por el lado derecho del número en binario, cada número multiplíquelo por 2
y elévelo a la potencia consecutiva (comenzando por la potencia 0).
2. Después de realizar cada una de las multiplicaciones, sume todas y el número
resultante será el equivalente al sistema decimal.
Ejemplos:
• 110101 (binario) = 53 (decimal). Proceso:
Posición en el número n 6 5 4 3 2 1
Potencia 2n-1 25 24 23 22 21 20
Cifra = 1 1 0 1 0 1
Calculo = cifra x potencia 32 16 0 4 0 1
Resultado 32+16+0+4+1= 53
3.5.2 Ejercicios
Posición en el número n 8 7 6 5 4 3 2 1
Potencia 2 n-1 27 26 25 24 23 22 21 20
Cifra =
Calculo = cifra x potencia
UT1- Introduccion a la informática y programación 34
Resultado
2. Calcular el numero decimal para el número binario 1011101110, sin usar la tabla
aplicando el teorema directamente.
Numero en Decimal =
Decimal a binario
Se divide el número decimal entre 2 cuyo resultado entero se vuelve a dividir entre 2 y
así sucesivamente. Una vez llegados al 1 indivisible se cuentan el último cociente, es decir
el uno final (todo número binario excepto el 0 empieza por uno), seguido de los residuos
de las divisiones subsiguientes. Del más reciente hasta el primero que resultó. Este número
será el binario que buscamos. A continuación, se puede ver un ejemplo con el número
decimal 100 pasado a binario.
100 |_2
0 50 |_2
0 25 |_2 --> 100 1100100
1 12 |_2
0 6 |_2
0 3 |_2
1 1
Ejemplo:
100|0
50|0
25|1 --> 1, 25-1=24 y seguimos dividiendo por 2
12|0
6|0
3|1
1|1 --> 100 1100100
Ejemplo:
2^0= 1|1
2^1= 2|1
2^2= 4|1
2^3= 8|0
2^4= 16|1
2^5= 32|0
2^6= 64|0
2^7= 128|1 128+16+4+2+1=151
2^8= 256|0
Y sucesivos.
Binario a octal
Número en binario 000 001 010 011 100 101 110 111
Número en octal 0 1 2 3 4 5 6 7
Octal a binario
Binario a hexadecimal
Número en binario 0000 0001 0010 0011 0100 0101 0110 0111
Número en
0 1 2 3 4 5 6 7
hexadecimal
Número en binario 1000 1001 1010 1011 1100 1101 1110 1111
Número en
8 9 A B C D E F
hexadecimal
1010 = A
1011 = B
1 entonces agregue 0001 = 1
Agrupe de izquierda a derecha: 1BA
• 11011110101 (binario) = 6F5 (hexadecimal). Proceso:
0101 = 5
1111 = F
110 entonces agregue 0110 = 6
Agrupe de izquierda a derercha: 6F5
Los números enteros se guardan en 32 o 64 bits en binario como hemos visto en el apartado
anterior. Por ejemplo, para el numero 3000 el ordenador lo guardaría en 32 bits de la
siguiente manera, rellenando a la izquierda con ceros, siendo el primer bit, bit de signo.
0 para positivo uno para negativo
Bit de signo
0 000 0000 0000 0001 1010 1110 1101 1100 -> 3000
Y si es negativo se escribe un 1
Bit de signo
1 000 0000 0000 0001 1010 1110 1101 1100 -> - 3000
Para números decimales la notación es mas complicada lo que conocemos como mantisa
más exponente.
• Una mantisa (también llamada coeficiente o significando) que contiene los dígitos
del número, donde las mantisas negativas representan números negativos; es decir,
la mantisa corresponde a la parte fraccionaria que es la diferencia entre el número
y la parte entera del número. Veamos este ejemplo, en el número decimal 13.8543,
la parte entera es 13 y la mantisa=13.8543–13= 0,8543. Pero, cuando el número
decimal es negativo; esto es, -13.8543, la parte entera es -14 y la mantisa=-
13.8543-(-14)= 0.1457.
• Un exponente que indica dónde se coloca el punto decimal (o binario) en relación
al inicio de la mantisa. Cuando el exponente es negativo representará a un número
menor que uno.
• Este formato cumple todos los requisitos:
• Puede representar números de órdenes de magnitud enormemente dispares
(limitado por la longitud del exponente).
• Proporciona la misma precisión relativa para todos los órdenes (limitado por la
longitud de la mantisa).
• Permite cálculos entre magnitudes: multiplicar un número muy grande y uno muy
pequeño conserva la precisión de ambos en el resultado.
• Los números de punto flotante decimales normalmente se expresan en notación
científica con un punto explícito siempre entre el primer y el segundo dígitos.
• El exponente o bien se escribe explícitamente incluyendo la base, o se usa
una E para separarlo de la mantisa
Ejemplo 3.1: según la parte entera, la mantisa y el exponente de la tabla de la figura 3.1,
escriba su valor equivalente, en notación científica y su valor en punto flotante.
Cuando no pueden ponerse más cifras significativas, cierta cantidad de ellas, por ejemplo
de tres cifras simplemente, a la tercera cifra se le incrementa un número, si la cifra
predecesora es 5 con otras cifras o mayor que 5. Si dicha cifra es menor simplemente se
deja igual. Ejemplo 5.3689 consta de 5 cifras significativas, si sólo se pueden mostrar tres
cifras, se le suma una unidad a la cifra 6 (6+1=7) ya que la cifra que la precede 8 es mayor
que 5, así que queda 5.37 y si el número es menor que cinco: así 5.36489 y se redondea
queda 5.36, no aumenta por que la cifra 4 es menor que 5.
El estándar IEEE 754 ha sido definido por el Instituto de Ingenieros Eléctricos y Electrónicos
(Institute of Electrical and Electronics Engineers, IEEE) y establece dos formatos básicos
para representar a los números reales en la computadora digital: precisión simple y
precisión doble.
Para escribir un número en el Estándar IEEE 754 en precisión simple, se escribe el número
real usando 32 bits (4 bytes): 1 bit para el signo (s) del número, 23 bits para la mantisa
(m) y 8 bits para el exponente (E), que se distribuyen de la siguiente forma:
En la siguiente tabla se resumen los cálculos que hay que realizar para deducir el valor en
base 10 de un número escrito en el estándar IEEE 754 con precisión simple:
Video explicativo:
https://www.youtube.com/watch?v=HcjXH9WGmAU
El exponente se guarda en exceso a 127. Eso quiere decir que para calcula el valor real
del exponente hay que restar 127. Si en el exponente se guarda 130, y le quitamos 127,
el exponente real es 3. Se hace así para evitar guardar números negativos directamente
en el exponente y necesitar un bit de signo. Sabemos que si el exponente es 1 en realidad
estamos representando -126. Si es 150, estamos representando el exponente 23 (150-127).
Ejemplo 3.2: exprese en formato IEEE 754 de precisión simple, el valor del número 45.25
UT1- Introduccion a la informática y programación 41
Solución
Pasando la mantisa a base 2 y normalizando, se tiene: 45=101101 y 0.25=0.01
• La mantisa normalizada se almacena con ell bit omitido se también se llama bit
implícito, que es 1. De la mantisa solo se guarda la parte decimal, el uno se supone
como implícito por lo que la mantisa, por o que la mantisa final será la parte
decimal
De esta manera el número 45.25 con 32 bits en nuestro ordenador se almacena como:
01000010001101010000000000000000
3.6.1 Ejercicio
El código ASCII (siglas en ingles para American Standard Code for Information Interchange,
es decir Código Americano Estándar para el intercambio de Información) ( se pronuncia
Aski ).
Fue creado en 1963 por el Comité Estadounidense de Estándares o "ASA", este organismo
cambio su nombre en 1969 por "Instituto Estadounidense de Estándares Nacionales" o
"ANSI" como se lo conoce desde entonces.
Así con este conjunto de solo 128 caracteres fue publicado en 1967 como estándar,
conteniendo todos lo necesario para escribir en idioma ingles.
En 1981, la empresa IBM desarrolló una extensión de 8 bits del código ASCII, llamada
"pagina de código 437", en esta versión se reemplazaron algunos caracteres de control
obsoletos, por caracteres gráficos. Además, se incorporaron 128 caracteres nuevos, con
símbolos, signos, gráficos adicionales y letras latinas, necesarias para la escrituras de
textos en otros idiomas, como por ejemplo el español. Así fue como se sumaron los
caracteres que van del ASCII 128 al 255.
ASCII-7: Es un código para representar 128 caracteres ingleses como números, con cada
letra asignada un número del 0 al 127. Por ejemplo, el código ASCII para M mayúscula es
77.
A n a
65 110 97
UT1- Introduccion a la informática y programación 44
Traducido a binario en 8 bits:
A n a
01000001 01101110 01100001
3.7.1 Ejercicio
El problema que surge de esta representación en RGB, es que estos tres colores no
siempre son los mismos para cara fabricante, es decir, existen distintas tonalidades
que hacen que la combinación de ellos generen otros colores ligeramente diferentes.
¿Qué es lo que pasa cuando unimos dos colores y vemos otro distinto?
Cada uno de estos tres tipos de conos, funcionan a una frecuencia diferente y
precisamente tienen máxima sensibilidad por los tres colores que generan el RGB. De
esta forma combinado estos colores se generan nuevas frecuencias que hacen variar
nuestra curva de sensibilidad a los colores. El resultado es a apreciación de múltiples
colores con solamente la combinación de los tres básicos a los que nuestros ojos son
especialmente sensibles.
Este sistema de representación cromática RGB es el que utilizan las pantallas digitales
actualmente. Nuestros móviles, televisión, monitor de ordenador, todas ellas utilizan el
sistema RGB para proporcionarnos todos los colores que nosotros vemos en ellas. Pero ya
este sistema cromático se comenzó a utilizar en aquellas livianas y finas pantallas CRT con
cañón de electrones, aunque de forma bastante distinta a lo que se hace actualmente.
En una señal de vídeo, estas tres señales o colores se tratan por separado para
proporcionar una mejor representación de los colores que vemos. Además, para apreciar
correctamente una imagen dinámica, estas tres señales deben estar perfectamente
sincronizadas para poder formar los colores.
Cuando vemos una imagen representada en un monitor, realmente está formada por una
malla de millones de diodos electroluminiscentes (LED). Un LED es básicamente un diodo
que se ilumina al paso de la tensión. En una pantalla siempre le damos el nombre de
píxeles, cada píxel es un punto de iluminación de nuestra pantalla. Si nos ponemos muy
cerca de nuestra pantalla y esta tiene una densidad de píxeles no demasiado grande (cómo
de juntos están y cuan pequeños son) notaremos que hay unos cuadraditos muy pequeños
en ella.
Pues bien, cada uno de estos píxeles a su vez está formado por tres subpíxeles que se
iluminarán con cada color. Las variaciones de luminosidad de estos tres píxeles de forma
simultánea van a generar un color determinado en ese instante. Cuando todos están
apagados, tendremos el color negro y cuando todos están encendidos y de igual brillo
tendremos el color blanco. El resto de colores son combinaciones de tonos de estos tres
UT1- Introduccion a la informática y programación 47
subpíxeles.
Pues en código HTML por ejemplo, y en otros muchos casos, para representar los distintos
colores existe un código formado por tres números separados que pueden tomar valores
desde el 0 hasta el 255 “[xxx],[xxx],[xxx]”, esto forma un total de 24 bits en binario, 8
por cada número. Cada uno de estos números representa uno de los colores siendo
[R],[G],[B] y dependiendo del valor del número que haya en su interior, la luminancia de
ese color será mayor o menor, como podremos intuir. Por ejemplo si tenemos
[0],[255],[0], tendríamos el color verde representado en pantalla, si tuviéramos el
[255],[255],[255], tendríamos el color blanco, y así sucesivamente.
Los que sepan de matemáticas, sabrán que con tres coordenadas estaríamos
representando un número en 3 dimensiones, y aquí ocurre exactamente lo mismo. A todo
el espectro de colores que va desde el 0,0,0 al 255,255,255 se le denomina cubo RGB. Este
cubo ha ido creciendo con el paso de los años, según la gama de colores que era capaz de
representar un monitor. Los monitores actuales son de 24 bits por lo tanto son capaces de
representar 16,7 millones de colores con solamente las combinaciones del rojo, verde y
azul, increíble ¿no? A menor cantidad de bits, menos cantidad de colores obtendremos en
una pantalla u otro sistema de iluminación RGB.
• Los microordenadores son herramientas comunes en todas las áreas de la vida. Los
escritores escriben, los artistas dibujan, la ingeniería y los científicos calculan todo
en microoomputadores. Los estudiantes y los empresarios hacen todo esto y más.
• Personas: Es fácil pasar por alto a las personas como una de las partes de un sistema
de información. Sin embargo, esto es de lo que se tratan los ordenadores: hacer
que las personas, terminen convirtiendose en usuarios más productivos.
• Procedimientos: Las reglas o pautas que las personas deben seguir al usar software,
hardware y datos son procedimientos. Estos procedimientos generalmente se
documentan en manuales escritos por especialistas en informática. Los fabricantes
de software y hardware proporcionan manuales con sus productos. Estos manuales
se proporcionan en forma impresa o electrónica (enlace web).
• Hardware: El equipo que procesa los datos para crear información se denomina
hardware. Incluye el teclado, el ratón, el monitor, la unidad del sistema y otros
dispositivos. El hardware está controlado por software.
• Datos: Los datos en bruto y sin procesar, incluidos el texto, los números, las
imágenes y los sonidos, se denominan datos. Procesado. los datos arrojan
información. Usando el ejemplo anterior de un programa de nómina, los datos
(número de horas trabajadas y tasa de pago) se procesan (multiplican) para obtener
información (pago semanal).
5 Software
El software es un conjunto de instrucciones, datos o programas utilizados para operar
computadoras y ejecutar tareas específicas. Es lo opuesto al hardware, que describe los
aspectos físicos de una computadora. Software es un término genérico utilizado para
referirse a aplicaciones, scripts y programas que se ejecutan en un dispositivo. Es sinónimo
de programa o programas.
• Aplicación
• Software del sistema
• Software de programación
• Software de controlador
Software de Aplicación
Como usuario de tecnología, el software de aplicación o 'apps' es con lo que más te
involucras. Estos tipos de software informático son programas productivos para el usuario
final que le ayudan a realizar tareas. Los siguientes son algunos ejemplos de software de
aplicación que le permiten realizar un trabajo específico:
Netscape Navigator, MS
Navegadores de Internet: Se utilizan para acceder Internet Explorer, y Google
y ver sitios web. Chrome
Cuando enciendes tu ordenador por primera vez, es el software del sistema el que se carga
inicialmente en la memoria. A diferencia del software de aplicación, el software del
sistema no es utilizado por usuarios finales como usted. Solo se ejecuta en segundo plano
de su dispositivo, en el nivel más básico mientras usa otro software de aplicación. Esta es
la razón por la cual el software del sistema también se llama "software de bajo nivel".
Los sistemas operativos son un ejemplo de software de sistema. Todos sus dispositivos
• Microsoft Windows
• Mac (for Apple devices)
• Linux
Para smartphones:
• Apple’s iOS
• Google’s Android
• Windows Phone OS
Software de controlador
El software del controlador a menudo se clasifica como uno de los tipos de software del
sistema. Operan y controlan dispositivos y periféricos conectados a una computadora. Los
controladores son importantes porque permiten que los dispositivos realicen sus tareas
designadas. Lo hacen traduciendo comandos de un Sistema Operativo para el Hardware o
dispositivos, asignando tareas. Por lo tanto, cada dispositivo conectado con el equipo
requiere al menos un controlador de dispositivo para funcionar.
1. Controlador de impresora
2. Controlador del ratón
3. Controlador de Tarjeta de red
Por lo general, el sistema operativo viene incorporado con controladores para mouse,
teclado e impresoras de forma predeterminada. A menudo no requieren instalaciones de
terceros. Pero para algunos dispositivos avanzados, es posible que deba instalar el
controlador externamente. Además, si utiliza varios sistemas operativos como Linux,
Windows y Mac, cada uno de estos admite diferentes variantes de controladores. Para
ellos, se deben mantener controladores separados para cada uno.
Software de desarrollo
El software de desarrollo es el tipo de software que no es utilizado por los usuarios finales.
No es para ti a menos que, por supuesto, seas un programador que escribe código. El
software de programación son programas que se utilizan para escribir, desarrollar, probar
y depurar otro software, incluidas las aplicaciones y el software del sistema. Para alguien
que trabaja en una empresa de desarrollo de software a medida, por ejemplo, este tipo
de software le haría la vida más fácil y eficiente.
Hay muchos tipos diferentes de licencias de software, y las sanciones por incumplimiento
de la licencia pueden ser duras. Si reutiliza un componente sin cumplir con las obligaciones
de su licencia, el licenciante podría demandar y podría verse obligado a publicar su propio
código fuente. Para proteger su código y su organización, debe comprender estas licencias
de software antes de usar cualquier código, incluidas las bibliotecas y los marcos, que no
escribió usted mismo. Vea nuestra lista de las principales licencias de código abierto y sus
posibles riesgos legales.
Hay cinco tipos de modelos de licencias de software comunes que debe conocer. Cuatro
son ejemplos de licencias de código abierto (que le permiten reutilizar código hasta cierto
punto), y uno no permite ninguna reutilización.
1. LGPL. The GNU Lesser General Public License permite vincular a bibliotecas de
código abierto en el software de desarrolladores. Si simplemente compila o vincula
una biblioteca con licencia LGPL con su propio código, puede liberar su aplicación
bajo cualquier licencia que desee, incluso una licencia propietaria. Pero si modifica
la biblioteca o copia partes de ella en su código, tendrá que lanzar su aplicación en
términos similares a los de la LGPL.
No hace falta decir que los procesos para fabricar tangibles como un automóvil difieren
mucho de algo tan abstracto e intangible como lo es el software (el software es inmaterial,
no se puede tocar). Se enfrentaron a problemas, retrasos, falta de conocimiento sobre
esta nueva industria, pero finalmente a mediados de los años 70 logran resultados. Los
fundamentos de lo que hoy llamamos ingeniería de software.
Activos intangibles
Como consecuencia de estos problemas las agencias de normalización definen normas para
ingeniería del software con el fin de obtener software de calidad.
En general, una vez validado que el sistema responde a los principales requisitos
funcionales especificados, el usuario realizará las pruebas de aceptación, corrigiendo los
errores encontrados y tas pasándose al fin del entorno de producción. Sin embargo, en
muy pocas ocasiones se validan de manera rigurosa los requisitos funcionales y los no
funcionales, o se ejecutan validaciones que aseguren que el sistema es lo suficientemente
robusto y estable como para pasar a un entorno productivo con las garantías adecuadas.
Estándar para los procesos de ciclo de vida del software de la organización, Este estándar
se concibió para aquellos interesados en adquisición de software, así como desarrolladores
y proveedores. El estándar indica una serie de procesos desde la recopilación de requisitos
hasta la culminación del software.
• Principales
• De apoyo
• De organización
Este estándar agrupa las actividades que se pueden llevar a cabo durante el ciclo de vida
del software en cinco procesos principales, ocho procesos de apoyo y cuatro procesos
organizativos.
El estándar ISO/IEC 12207-1 define ciclo de vida del software como: Un marco de
referencia que contiene los procesos, las actividades y las tareas involucradas en el
desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la
vida del sistema desde la definición de los requisitos hasta la finalización de su uso.
El ciclo de vida de un producto software comprende el periodo que transcurre desde que
el producto es concebido hasta que deja de estar disponible o es retirado. Normalmente
se divide en etapas y en cada etapa se realizarán una serie de tareas. Usualmente se
consideran las siguientes etapas: especificación y análisis de requisitos, diseño del
sistema, implementación del software, aplicación y pruebas, entrega y mantenimiento:
Cada etapa tiene como entrada uno o varios documentos procedentes de las etapas
anteriores y produce otros documentos de salida, por ello una tarea importante a realizar
en cada etapa es la documentación.
Existen varios modelos de ciclo de vida, es importante tener en cuenta las características
del proyecto software para eligir un modelo u otro. Los modelos más importantes son:
Cascada, Incremental y Evolutivo.
En este modelo las etapas para el desarrollo del software tienen un orden, de tal forma
que para empezar una etapa es necesario finalizar la etapa anterior; después de cada
etapa se realiza una revisión para comprobar si se puede pasar a la siguiente, véase Figura
1.4 (1). Este modelo permite hacer iteraciones, por ejemplo, durante la etapa de
mantenimiento del producto el cliente requiere una mejora, esto implica que hay que
modificar algo en el diseño, lo cual significa que habrá que hacer cambios en la
codificación y se tendrán que realizar de nuevo las pruebas, es decir, si se tiene que
volver a una de las etapas anteriores hay que recorrer de nuevo el resto de las etapas,
véase Figura 1.4 (2).
Tiene varias variantes, una de la más utilizada es la que produce una realimentación entre
etapas, se la conoce como Modelo en Cascada con Realimentación. Por ejemplo,
supongamos que la etapa de Análisis (captura de requisitos) ha finalizado y se puede pasar
a la de Diseño. Durante el desarrollo de esta etapa se detectan fallos (los requisitos han
cambiado, han evolucionado, ambigüedades en la definición de los mismos, etc), entonces
será necesario retornar a la etapa anterior, realizar los ajustes pertinentes y continuar de
nuevo con el Diseño. A esto se le conoce como realimentación, pudiendo volver de una
etapa a la anterior o incluso varias etapas a la anterior, véase Figura 1.5.
Ventajas:
• Fácil de comprender, planificar y seguir.
• La calidad del producto resultante es alta.
• Permite trabajar con personal poco cualificado.
Inconvenientes:
• La necesidad de tener todos los requisitos definidos desde el principio (algo que no
siempre ocurre ya que pueden surgir necesidades imprevistas).
• Es difícil volver atrás si se comenten errores en una etapa.
• El producto no está disponible para su uso hasta que no está completamente
terminado.
Se recomienda cuando:
• El proyecto es similar a alguno que ya se haya realizado con éxito anteriormente.
• Los requisitos son estables y están bien comprendidos.
• Los clientes no necesitan versiones intermedias.
El software evoluciona con el tiempo, es normal que los requisitos del usuario y del
producto cambien conforme se desarrolla el mismo. La competencia en el mercado del
software es tan grande que las empresas no pueden esperar a tener un producto
totalmente completo para lanzarlo al mercado, en su lugar se van introduciendo versiones
cada vez más completas que de alguna maneran alivian las presiones competitivas.
Ventajas:
• No se necesitan conocer todos los requisitos al comienzo.
• Permite la entrega temprana al cliente de partes operativas del software.
• Las entregas facilitan la realimentación de los próximos entregables.
Inconvenientes:
• Es difícil estimar el esfuerzo y el coste final necesario.
• Se tiene el riesgo de no acabar nunca.
• No recomendable para desarrollo de sistemas de tiempo real, de alto nivel de
seguridad, de procesamiento distribuido, y/o de alto índice de riesgos.
Se recomienda cuando:
• Los requisitos o el diseño no están completamente definidos y es posible que haya
grandes cambios.
6.3 Analisis
Resolver el problema , y una vez comprendido darle solución. En esta fase se analizan
y especifican los requisitos o capacidades que el sistema debe tener porque el cliente así
lo ha pedido.
La obtención de requisitos no es tarea fácil ya que el cliente puede no tenerlos claros,
pueden surgir nuevos requisitos, pueden cambiar lo especificados, pueden existir malos
entendidos por falta de conocimiento del equipo de desarrollo sobre el problema a
resolver, el cliente puede no expresarse de forma clara debido a la falta de conocimientos
informáticos, etc. Para realizar un proyecto satisfactorio es necesario obtener unos
buenos requisitos y para ello es esencial una buena comunicación entre el cliente y los
desarrolladores. Para facilitar esta comunicación se utilizan varias técnicas, algunas son
las siguientes:
Entrevistas. Es la técnica más tradicional que consiste en hablar con el cliente. Hay
que tener sobre todo conocimientos de psicología.
Brainstorming. Es un tipo de reuniones en grupo cuyo objetivo es generar ideas
desde diferentes puntos de vista para la resolución de un problema. Su
utilización es adecuada al principio del proyecto, pues puede explorar un
problema desde muchos puntos de vista.
Prototipos. Es una versión inicial del sistema, se utiliza para clarificar algunos
puntos, demostrar los conceptos, en definitiva, para enterarse más acerca del
problema y sus posibles soluciones. Después se tira o bien se usa como base para
añadir más cosas.
Requisitos funcionales. Describen con detalle la función que realiza el sistema, cómo
reacciona ante determinadas entradas, cómo se comporta en situaciones particulares,
etc.
Requisitos no funcionales. Tratan sobre las características del sistema, como puede ser
la fiabilidad, mantenibilidad, sistema operativo, plataforma hardware, restricciones,
limitaciones, etc.
• El sistema debe almacenar información sobre las canciones que se pueden adquirir
y su precio en créditos.
• El sistema debe permitir a los usuarios buscar y consultar la información sobre las
canciones.
• El sistema debe permitir a un usuario adquirir una canción a cambio de una cantidad
de crédito.
• Los usuarios tendrán algunos días para descargar en su ordenador las canciones que
hayan adquirido.
Una vez obtenidos los requisitos el siguiente paso es modelar el sistema. Debemos
especificar los requisitos. Para ello los desarrolladores de software tienen una serie de
herramientas o modelos para modelar los procesos del sistema o los datos. Todos estos
modelos junto a documentos de texto nos sirven para especificar que va a hacer nuestro
sistema.
Un ejemplo de modelo para análisis son los DFD’s para modelar el sistema anterior. Si
necesitamos modelar el login del usuario. Vamos obteniendo los módulos, las partes de
nuestra aplicación con este modelo.
En el análisis decimos el que es y que debe hacer nuestro sistema. La pregunta es el que,
en el diseño damos un paso más allá y decimos el como es nuestro sistema, y como esta
construido. Seguimos usando modelos pero más cercanos al software justo antes de hacer
el desarrollo.
Usamos modelos para diseñar nuestro sistema, para decir como se va a hacer nuestro
sistema. Obtenemos por un lado la arquitectura. El diseño arquitectónico, que módulos
va a tener nuestro sistema. Imaginad que estamos creando un programa para una
biblioteca que presta libros.
Leer Libro
Leer Carnet
Si Tiene(Carnet) Entonces
Leer DatosAlumno
Leer DatosLibro
HacerPrestamo
FinSi
Sino
Escribir “No hay préstamo de libro”
FinSi
Sino
Finsi
Ent
También podemos hacerlo con diagramas de flujo, es otra técnica que aprenderemos en
la siguiente unidad para realizar nuestros programas. Es muy utilizado para resolver
algoritmos y problemas en desarrollo de software
Al programar, hay que intentar que el código no sea indescifrable siguiendo distintas
pautas como las siguientes:
6.5.1 Programa
Ejemplo de programa
package stringejemplos;
String cadenavacia="";
Ejemplo:
Los veremos en detalle en los siguientes temas. En cualquier caso haremos una pequeña
introducción aquí.
Para explicarlo mejor (en otras y con menos palabras), el lenguaje de programación es
un sistema estructurado de comunicación, el cual está conformado por conjuntos de
símbolos, palabras claves, reglas semánticas y sintácticas que permiten el
entendimiento entre un programador y una máquina.
Es importante recalcar que existe el error común de usar como sinónimos el lenguaje
de programación y el lenguaje informático, pero ¿por qué no debemos confundirlos?
Entonces, no todos los lenguajes informáticos son de programación, pero todos los
lenguajes de programación son a la vez informáticos.
Además, ejerce un control directo sobre el equipo y su estructura física. Para aplicarlo
adecuadamente es necesario que el programador conozca sólidamente el hardware.
Éste se subdivide en dos tipos:
Lenguaje máquina
No entendemos muy bien lo que dice ¿verdad? Por eso, el lenguaje ensamblador nos
permite entender mejor a qué se refiere éste código.
Lenguaje ensamblador
Un programa escrito en este lenguaje es almacenado como texto (tal como programas
de alto nivel) y consiste en una serie de instrucciones que corresponden al flujo de
órdenes ejecutables por un microprocesador.
Este genera códigos compactos, rápidos y eficientes creados por el programador que
tiene el control total de la máquina.
Tienen como objetivo facilitar el trabajo del programador, ya que utilizan unas
instrucciones más fáciles de entender.
Además, el lenguaje de alto nivel permite escribir códigos mediante idiomas que
conocemos (español, inglés, etc.) y luego, para ser ejecutados, se traduce al lenguaje
de máquina mediante traductores o compiladores. Existen infinidad de lenguajes de
programación de alto nivel: Java, C#, Javascript, HTML, C++, Python, PHP, etc.
Traductor
Compilador
Permite traducir todo un programa de una sola vez, haciendo una ejecución más rápida
y puede almacenarse para usarse luego sin volver a hacer la traducción.
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
namespace AplicacionConLINQ
{
[Table("Empleados")]
public class Empleado : Persona
{
public Empleado()
{
this.IdEmpresa = IdEmpresa;
this.Salario = Salario;
En general un lenguaje de programación sirve para programar. Sin embargo, cada uno
tiene un alcance y forma de comunicación diferente.
En otras palabras, el lenguaje de bajo nivel es cercano a los idiomas de las máquinas
mientras que el lenguaje de alto nivel está más cerca del entendimiento e idioma humano.
UT1- Introduccion a la informática y programación 85
6.5.3.4 Compiladores e interpretes
Para responder a esta pregunta primero debemos conocer que es y para qué sirve un
Intérprete.
Hay que tener en cuenta que tanto los intérpretes como los compiladores (como
cualquier otro programa) están escritos en un lenguaje de programación de alto nivel
(que puede ser diferente del idioma que aceptan) y se traducen en código máquina.
A un alto nivel, las pruebas de software son necesarias para detectar los errores en el
software y para probar si el software cumple con los requisitos del cliente. Esto ayuda al
equipo de desarrollo a corregir los errores y entregar un producto de buena calidad.
Una vez que la aplicación ha sido desarrollada, hay que llevarla a explotación y
producción. Esto quiere decir que debemos instalarla en el cliente y que la utilice. Esto
conlleva:
1. Instalar la aplicación
2. Desarrollar manuales para instalación y de usuario
3. Formar a los usuarios
Además, debemos establecer un mecanismo para mantener la aplicación por dos razones.
Una para ir arreglando los errores que se vayan detectando. Otra para añadir mejoras,
todo esto se realiza en la fase de mantenimiento mientras la aplicación este funcionando.
Igualmente, los clientes cuando usan las aplicaciones habitualmente encuentran que
ciertos módulos se pueden mejorar o se pueden añadir nuevas funcionalidades. Es otra
parte importante en el mantenimiento y consigue que la aplicación dure más años. Son
las nuevas versiones de software del programa o aplicación. El grupo de mantenimiento
desarrolla los nuevos requerimientos del cliente y actualiza la aplicación a una nueva
versión.