Summary

Este documento proporciona un resumen de los diferentes tipos de software, incluyendo software de aplicación, software de sistema y software de programación. Se detallan conceptos como hardware, sistemas operativos y herramientas de programación. El documento también cubre programas utilitarios y programas personalizados.

Full Transcript

Introducción SOFTWARE (1) El ordenador está compuesto por dos partes: La parte física, que llamamos hardware compuesta por el teclado, el ratón, el monitor, los discos duros o la placa base, memoria RAM entre otros elementos. Son todos aquellos componentes que podemos ver y tocar. La parte lógica...

Introducción SOFTWARE (1) El ordenador está compuesto por dos partes: La parte física, que llamamos hardware compuesta por el teclado, el ratón, el monitor, los discos duros o la placa base, memoria RAM entre otros elementos. Son todos aquellos componentes que podemos ver y tocar. La parte lógica llamada software es el conjunto de aplicaciones y datos almacenados en un ordenador. Permite que los dispositivos físicos puedan ser utilizados. El software NO se fabrica, es intangible Por ejemplo, los sistemas operativos, aplicaciones, navegadores web, juegos o programas. Software de Aplicación: Son programas orientados a automatizar actividades o asistir al usuario en la realización de sus tareas. Podemos distinguir ➔ Los programas utilitarios como su nombre lo indica son programas que brindan una “utilidad” específica y no están diseñados para un tipo de usuario particular, pueden usarse en empresas, industrias, comercios, escuelas, etc. Ejemplo, procesadores de texto, hoja de cálculo, videojuegos, navegadores para la web, antivirus… ¿Qué son los paquetes utilitarios? Un paquete utilitario de escritorio es un conjunto de programas compuesto principalmente por herramientas suelen presentarse en paquetes de programas como suites de oficina y ofimática (procesador de texto, hoja de cálculo, presentaciones, agenda, entre otros) Los programas a medida se desarrollan considerando los requerimientos de un usuario o institución específico. Consiste en diseñar, crear, implementar y mantener software para un conjunto específico de usuarios, funciones u organizaciones. Por ejemplo, la directora de una escuela le encarga a un programador una aplicación para automatizar algunas de las actividades de la institución. Las principales características de desarrollar sistemas a medida son: ➔ Exclusividad. El proceso se realiza pensando únicamente en tu negocio. ➔ Opinión del cliente. El desarrollador valora en todo momento la opinión del cliente. ➔ Personalización. El diseño es personalizado y se orienta al público objetivo. ➔ Diferenciación. El diseño es único y diferencia la imagen de la empresa. ➔ Adaptación. El desarrollo se adapta a las necesidades específicas del cliente, incluso las más ocultas. ➔ Mantenimiento. Cuando el desarrollo cumple con los estándares de programación, se facilita el mantenimiento y la actualización. Software del Sistema Es un conjunto de programas y herramientas que permiten que el hardware de un ordenador funcione y proporcionan una plataforma para ejecutar otros programas, como el software de aplicación. Su principal objetivo es gestionar los recursos del sistema y facilitar la comunicación entre el hardware y el software. Algunos ejemplos comunes de software del sistema son los sistemas operativos como Windows, macOS, Linux, y Android. Componentes clave del software del sistema: ➔ Sistema Operativo (SO): Es el software más importante del sistema, ya que controla el hardware del ordenador, gestiona la memoria, los procesos y los dispositivos de entrada y salida. Ejemplos: Windows, Linux, Android ➔ Controladores de dispositivos: Son programas que permiten que el sistema operativo se comunique con el hardware, como impresoras, tarjetas gráficas, y otros dispositivos. Ejemplos: NVIDIA GeForce Drivers: Controladores para tarjetas gráficas de NVIDIA. Realtek Audio Drivers: Controladores para la gestión del sonido en muchos ordenadores., HP Printer Drivers: Controladores que permiten la comunicación entre el sistema operativo y las impresoras HP. Componentes clave del software del sistema: ➔ Programas utilitarios: Son herramientas que realizan tareas específicas de mantenimiento y configuración del sistema, como antivirus, compresores de archivos, o herramientas de gestión de disco. Antivirus (Windows Defender, Avast): Protegen el sistema de malware y otras amenazas. WinRAR o 7-Zip: Programas de compresión y descompresión de archivos. CCleaner: Herramienta de limpieza y optimización del sistema. Gestores de discos: Como el Administrador de discos de Windows, que permite gestionar particiones y discos duros. Software de programación El software de programación es un conjunto de herramientas y aplicaciones diseñadas para ayudar a los desarrolladores a escribir, probar, depurar y mantener programas o aplicaciones informáticas. ➔ Proporciona un entorno adecuado para crear código fuente, traducirlo a un lenguaje que pueda entender la máquina, y comprobar su correcto funcionamiento. ➔ Facilita la creación de programas y sistemas mediante lenguajes de programación. ➔ Incluye entornos de desarrollo integrados (IDEs), compiladores, intérpretes, depuradores, y editores de texto especializados. Estas herramientas ayudan a los programadores a transformar código fuente escrito en lenguajes de alto nivel (como Java, Python o C++) en código ejecutable que puede entender el hardware. Ejemplos de software de programación: Entornos de Desarrollo Integrado (IDE): Visual Studio: Un IDE desarrollado por Microsoft que soporta varios lenguajes como C#, Visual Basic, y C++. Eclipse: IDE popular para el desarrollo en Java, aunque admite otros lenguajes mediante plugins. IntelliJ IDEA: IDE utilizado principalmente para desarrollo en Java, pero compatible con otros lenguajes. Netbeans… Licencias de software Las licencias del software son las distintas maneras que tienen las empresas, organizaciones y personas de autorizar el uso de sus programas. Una licencia es un contrato privado de cesión de derechos entre particulares. Cada una elige la que le parece más conveniente, bien por motivos éticos o simplemente comerciales. Es un contrato entre el desarrollador de un software y el usuario final. Se especifican los derechos y deberes de ambas partes. Es el desarrollador el que especifica qué tipo de licencia distribuye. Software Libre o de Código Abierto (Open Source): Son los programas que se distribuyen incluyendo el código fuente. De esta manera, además de poder aprender cómo están hechos, el mismo usuario puede arreglar errores y adaptar el programa a sus gustos. Características Libertad para usar el programa con cualquier fin. Libertad para saber cómo funciona el programa y adaptar el código a nuestras propias necesidades. Libertad para poder compartir copias a otros usuarios. Libertad para poder mejorar el programa y publicar las modificaciones realizadas. El Software Libre no tiene por qué ser gratuito. De hecho, su denominación de Libre se debe a que se tratan de programas de Código Abierto (Open Source) y es ahí donde reside la esencia de su libertad: los programas bajo licencias GPL, una vez adquiridos, pueden ser usados, copiados, modificados y redistribuidos libremente. La licencia que más se usa en el software libre es la licencia GPL (GNU General Public License – Licencia Pública General) que nos dejará usar y cambiar el programa, con el único requisito que se hagan públicas las modificaciones realizadas. Software propietario Este software NO nos permitirá acceder al código fuente del programa y de forma general nos prohibirá la redistribución, la reprogramación, la copia o el uso simultáneo en varios equipos. Por el dinero que se paga, el usuario (llamado cliente en este caso) recibe el programa y la garantía de que funcionará; si no lo hace, se podrá consultar al servicio técnico de la compañía que (en el mejor de los casos) resolverá los problemas surgidos. Una situación muy común es que la compañía no arregle inmediatamente los errores de sus programas, sino que lance al mercado nuevas versiones con mejoras y arreglos y comunique a sus clientes anteriores que pueden actualizarse por un precio algo inferior al del nuevo producto. En ningún caso puede el usuario modificar el software. El propietario del software es quien tiene los derechos sobre el código fuente y el uso del programa. Ejemplos de software propietario popular: Microsoft Windows: Sistema operativo ampliamente utilizado en ordenadores personales. Adobe Photoshop: Herramienta profesional para edición de imágenes y gráficos. Microsoft Office: Suite de programas de oficina que incluye Word, Excel, PowerPoint, entre otros. Oracle Database: Sistema de gestión de bases de datos relacional que ofrece Oracle. Shareware Describe el tipo de software que primero se prueba y luego se paga; es decir, los usuarios pueden comprobar si el software les resulta de utilidad antes de desembolsar alguna cantidad de dinero. La garantía, por tanto, es absoluta y el riesgo nulo. Si después del periodo de prueba el usuario decide quedarse el programa, deberá registrarse, es decir, comunicarse con los autores y pagar el dinero establecido, que generalmente es una cantidad muy razonable. A veces los autores entregan a los usuarios registrados un manual o una versión más completa del programa, con más características que la versión sin registrar. Los programas de shareware más populares que quizás conozcas incluyen WinRAR, AnyDVD, programas de Adobe y Microsoft, algunos programas antivirus y más. Los programas de esta categoría son los de distribución y uso gratuito. Sus autores los distribuyen por los canales que consideran más adecuados e intentan que resulten conocidos y útiles. ➔ Gratuito: los usuarios NO PAGAN NADA ➔ No reciben garantía alguna, es decir, si el software no funciona no se puede reclamar legalmente nada; sin embargo, lo habitual, en caso de problemas, es contactar directamente con el autor y explicar la situación. ➔ Código cerrado: no permite modificar ni acceder al código fuente. ➔ Licencia limitada: Aunque es gratuito, el uso puede estar limitado a un propósito específico (personal, no comercial, etc.) Ejemplos: Google Drive, Ubuntu, LibreOffice Software de dominio público El software de dominio público es aquel que no tiene derechos de autor vigentes, lo que significa que cualquier persona puede usarlo, modificarlo, distribuirlo e incluso venderlo, sin restricciones legales. Libre de derechos de autor: Cualquier persona puede usarlo sin necesidad de pagar licencias o pedir permiso. Código abierto: El código fuente está disponible y puede ser modificado y redistribuido. No tiene restricciones de uso: Puede usarse para cualquier propósito, incluyendo el comercial. Este tipo de software es ideal para proyectos educativos, personales y comerciales, ya que no tiene limitaciones legales ni de uso. Software con copyleft Es un tipo de software libre que está protegido por una licencia que asegura que todas las versiones derivadas del software original también sean libres y mantengan las mismas libertades. Es decir, cualquier persona que modifique o distribuya este software debe hacerlo bajo los mismos términos, garantizando que las libertades de uso, estudio, modificación y distribución se mantengan intactas en las versiones modificadas. Libre para usar, modificar y distribuir: Los usuarios pueden hacer lo que quieran con el software, siempre que respeten las condiciones de la licencia. Obligación de mantener las mismas libertades: Si distribuyes una versión modificada, debes hacerlo bajo la misma licencia copyleft. Protección contra apropiación privada: Las modificaciones no pueden volverse propietarias, lo que impide que alguien tome el software libre y lo cierre. Ejemplos de software con licencias copyleft: Linux: El sistema operativo más conocido con licencia copyleft, bajo la GNU General Public License (GPL). GIMP: Programa de edición de imágenes, también bajo la GPL. WordPress: El popular sistema de gestión de contenidos (CMS), que también usa la licencia GPL. MySQL: Sistema de gestión de bases de datos, también licenciado bajo GPL. Licencia GPL (General Public License) La GPL es la licencia copyleft más conocida y utilizada. Fue creada por Richard Stallman como parte del proyecto GNU y garantiza que cualquier software distribuido bajo esta licencia permanezca libre para todos los usuarios. Principio clave de la GPL: Si alguien distribuye una versión modificada de un software con GPL, debe hacerlo bajo la misma licencia GPL, manteniendo así los derechos de los usuarios intactos. En resumen, el software con copyleft garantiza que siempre será libre y abierto, sin posibilidad de que se privatice o restrinja su uso en el futuro, protegiendo los principios del software libre. Características clave de la licencia GPL: ➔ Libertad para usar el software: Los usuarios pueden ejecutar el programa para cualquier propósito sin restricciones. ➔ Libertad para estudiar el código fuente: El acceso al código fuente es un derecho. Los usuarios pueden examinar cómo funciona el software y modificarlo para sus propias necesidades. ➔ Libertad para redistribuir copias: Los usuarios pueden distribuir copias del software, ya sea sin modificar o en versiones modificadas, siempre y cuando se respeten las condiciones de la GPL. ➔ Libertad para modificar y distribuir las versiones derivadas: Si un usuario modifica el software, puede distribuir su versión modificada, pero debe hacerlo bajo la misma licencia GPL. Esto asegura que las modificaciones también sean libres y que los derechos sobre el software no se limiten. PROGRAMA INFORMÁTICO (2) Bytecode.Código interpretable directamente para una máquina virtual. Código máquina. Instrucciones compuestas por unos y ceros interpretables directamente por el hardware. Criptografía.Arte o ciencia cuyo objetivo es alterar el contenido de un mensaje hacién- dolo ininteligible a los receptores que no estén autorizados. GUI. Acrónimo del inglés graphical user interface (interfaz gráfica de usuario). Hilo de ejecución. Unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo. Un proceso o programa puede tener varios hilos de ejecución, lo que implica que están ejecutándose concurrentemente al mismo tiempo distintas instrucciones. Lenguaje de bajo nivel. Aquel que es parecido al código máquina. Cuanto más bajo nivel tenga el lenguaje, más cercano al código máquina será. Parámetro. Valor que se pasa a un software para que esté, en su ejecución, tome las medidas oportunas en función de lo indicado por dicho valor. Patrón de diseño. Preestructura de aplicación. Existe una multitud de tipo estándar y su mayor ventaja es la robustez, además de que muchos desarrolladores los conocen, con lo cual comprender, desarrollar y mantener la aplicación será más fácil. Portabilidad. Facilidad que tiene un software para ejecutarse en diferentes máquinas, diferentes entornos y diferentes sistemas operativos. Cuanto más portable sea un software, en más equipos podrá ejecutarse. ProFTPd. Servidor FTP open source con licencia GPL. Concepto de programa informático Un programa informático es un grupo de instrucciones que están escritas en un lenguaje de programación sobre el que se aplican una serie de datos para resolver un problema. Ejemplo: este programa mostrará “Hola Mundo" por la pantalla Esta línea no realiza ninguna función solo dice cuál es el nombre del programa. #include Esta línea es necesaria si va a sacarse algo por pantalla. main () Esta línea indica que esto es lo primero que va ejecutar el programa (lo contenido entre { y }).{ } printf ("Hola Mundo"); Esta línea muestra las palabras Hola mundo por pantalla. Aplicación informática Las aplicaciones informáticas suelen estar formadas por varios programas con sus librerías correspondientes aunque podrían constar solamente de un programa. Cuando son varios programas que pueden ejecutarse independientemente uno del otro suelen denominarse suite o paquete integrado como por ejemplo la suite ofimática de OpenOffice Las aplicaciones tienen un nexo de unión en común, comparten librerías, almacén incluso datos. La compatibilidad entre ellos es completa. Una aplicación informática está en contacto con el usuario y no con el hardware. Será el sistema operativo el que haga de nexo de unión entre ambos (aplicación informática y Hardware) Ejemplos: ○ Microsoft Office (que incluye Word, Excel, PowerPoint, Outlook, etc.) ○ Google Workspace (con aplicaciones como Google Docs, Google Sheets, Google Slides, Gmail, etc.) ○ LibreOffice (una alternativa gratuita que incluye Writer, Calc, Impress, etc.) Como se ejecuta un programa Si queremos iniciar un programa necesitaremos recursos hardware del ordenador, como son el procesador, la memoria RAM, dispositivos E/S, etc. Las instrucciones para inicializar el programa se cargan en la memoria principal y se ejecutarán en la CPU (unidad central de proceso). ➔ La CPU es el componente principal de un ordenador encargado de interpretar y ejecutar las instrucciones de los programas. ➔ Controla todas las funciones principales del sistema, como los cálculos, la lógica y la gestión de datos. ➔ La CPU es crucial para el funcionamiento de cualquier dispositivo informático. Componentes que conforman la CPU: La Unidad de Control (UC): se encarga de interpretar y ejecutar las instrucciones que se almacenan en la memoria principal y, además, genera las señales de control necesarias para ejecutarlas. La Unidad Aritmético-Lógica (UAL): es la que recibe los datos y ejecuta operaciones de cálculo y comparaciones, además de tomar decisiones lógicas (si son verdaderas o falsas), pero siempre supervisada por la Unidad de Control. Los registros: son los que almacenan la información temporal, almacenamiento interno de la CPU. MEMORIA (RAM y almacenamiento) La memoria de un sistema informático se divide principalmente en dos tipos: ➔ La memoria principal (RAM) y el almacenamiento secundario (discos duros o SSD) ➔ Cuando ejecutamos un programa, este se carga desde el almacenamiento secundario a la memoria RAM, que es mucho más rápida. ➔ La RAM almacena temporalmente tanto el código del programa como los datos que este necesita procesar. ➔ La RAM es volátil, lo que significa que toda la información se borra cuando se apaga el ordenador. BUS DE DATOS El bus de datos es una vía de comunicación que permite el intercambio de información entre la CPU, la memoria y otros dispositivos del sistema. Hay tres tipos de buses principales: ➔ Bus de datos: Transporta los datos. ➔ Bus de direcciones: Transporta las direcciones de memoria. ➔ Bus de control: Transporta las señales de control y sincronización. Ejecución de una instrucción Cuando ejecutamos una instrucción podemos distinguir dos fases: ➔ Fase de búsqueda: se localiza la instrucción en la memoria principal y se envía a la Unidad de Control para poder procesarla. ➔ Fase de ejecución: se ejecutan las acciones de las instrucciones: ◆ Obtiene la obtiene la primera instrucción de la memoria, ◆ Se decodifica la instrucción para determinar el código de operación y los datos, ◆ Ejecuta la instrucción y en algunos casos almacena el resultado. Este proceso se ejecuta continuamente hasta que se leen todas las instrucciones del programa. Aplicación informática Existen multitud de aplicaciones informáticas: Programas de contabilidad bases de datos Programas de diseño gráfico Procesadores hoja de cálculo herramientas de correo electrónico Código fuente de un programa Es el conjunto de archivos que contienen órdenes o instrucciones que forman el programa. ➔ Es realizado por los programadores usando algún editor de texto o herramienta de programación. ➔ No se puede ejecutar directamente en el ordenador. ➔ Para hacer cambios en un programa es necesario acceder al código fuente. El proceso de traducción y compilación Los traductores son programas cuya finalidad es traducir lenguajes de alto nivel a lenguajes de bajo nivel como ensamblador o código máquina. Existen dos grupos de traductores: intérpretes y compiladores. Intérprete: Traduce el código fuente línea a línea. Primero traduce la línea, detiene la traducción y posteriormente la ejecuta. Lee la siguiente línea, detiene la traducción y posteriormente la ejecuta….. El intérprete tiene que estar en memoria ejecutándose para poder ejecutar el programa. También el código fuente tiene que estar en memoria. Compilador El proceso de compilación de un programa implica convertir el código fuente (escrito en un lenguaje de programación como Java, C++ o Python) en un formato que pueda ser ejecutado por una máquina. Pasos del proceso de compilación: ➔ Escritura del código fuente: El desarrollador escribe el código en un lenguaje de alto nivel (por ejemplo, Java o C++). Este código es entendible por humanos, pero no puede ser ejecutado directamente por una máquina. ➔ Compilación: El compilador traduce el código fuente a un código de bajo nivel llamado código objeto o bytecode (dependiendo del lenguaje). Por ejemplo: ★ En C/C++, el compilador genera código objeto (archivo.o o.obj). ★ En Java, el compilador genera bytecode (archivo.class) que luego es ejecutado por la Máquina Virtual de Java (JVM). Fases del compilador Análisis léxico: se lee el código obteniendo unidades de caracteres llamados tokens. Ejemplo: la instrucción resta = 2 – 1, genera 5 tokens: resta, =, 2, -, 1. Análisis sintáctico: recibe el código fuente en forma de tokens y ejecuta el análisis para determinar la estructura del programa, se comprueba si cumplen las reglas sintácticas. Análisis semántico: revisa que las declaraciones sean correctas, los tipos de todas las expresiones, si las operaciones se pueden realizar, si los arrays son del tamaño correcto, etc. Generación de código intermedio: después de analizarlo todo, se crea una representación similar al código fuente para facilitar la tarea de traducir al código objeto. Optimización de código: se mejora el código intermedio anterior para que sea más fácil y rápido a la hora de interpretarlo la máquina. Generación de código: se genera el código objeto. Compilador Ensamblado (si es necesario): Si el código se traduce a código máquina, el ensamblador convierte el código objeto en código ejecutable binario. Enlazado (Linking): El enlazador toma todos los archivos objeto generados (y las bibliotecas externas si las hay) y los une para formar un archivo ejecutable o bytecode completo que pueda ser ejecutado. Ejecución: Una vez creado el archivo ejecutable (en el caso de lenguajes compilados como C/C++) o el bytecode (en el caso de lenguajes como Java), el programa puede ser ejecutado directamente por la CPU o por una máquina virtual (en el caso de Java, la JVM). Si en el compilador se detecta algún tipo de error no se generará el código objeto y tendremos que modificar el código fuente para volver a pasarlo por el compilador. Es importante tener clara la diferencia entre: ✓ Código fuente. Código escrito en un lenguaje de programación. ✓ Código objeto. Resultado de compilar el código fuente. Puede ser código máquina o bytecode si es un lenguaje interpretado luego por una VM (virtual machine). ✓ Código ejecutable. Resultado de compilar y enlazar el código con las librerías. Ejecu- table directamente sobre una máquina concreta. Compilación y ejecución en un programa en Java Una máquina virtual es un tipo de software capaz de ejecutar programas como si fuese una máquina real. Máquina Virtual de Java (JVM) Es responsable de ejecutar los programas Java, interpretando el código compilado llamado bytecode y traduciendo este bytecode a instrucciones que el sistema operativo puede entender. Proporciona una capa de abstracción entre el código Java y el hardware donde se ejecuta. Permite que los programas Java se ejecuten en cualquier dispositivo o sistema operativo que tenga instalada una JVM, lo que cumple con la filosofía de "escribe una vez, ejecuta en cualquier lugar" (WORA, por sus siglas en inglés). Por tanto los programas que se compilan en lenguaje Java son capaces de funcionar en cualquier plataforma (UNIX, Mac, Windows, Solaris, etc.). Funcionamiento de la Máquina Virtual de Java Pasos para compilar y ejecutar un programa en JAVA: El código fuente estará escrito en archivos de texto planos con la extensión.java. El compilador javac (programa) generará uno o varios archivos siempre que no se produzcan errores y tendrán la extensión.class. Este fichero.class contendrá un lenguaje intermedio entre el ordenador y el SO y se llamará bytecode. La JVM carga el bytecode en memoria utilizando el Class Loader, un componente que gestiona la localización y carga de clases necesarias para la ejecución del programa. Verificación del bytecode: Una vez cargado el bytecode, la JVM verifica que el código no contenga errores o instrucciones que puedan causar fallos de seguridad, como accesos ilegales a memoria. Funcionamiento de la Máquina Virtual de Java Pasos para compilar y ejecutar un programa en JAVA: Ejecución del bytecode: Finalmente el bytecode es interpretado o compilado por el Just-In-Time (JIT) compiler, que traduce el bytecode en código máquina específico de la plataforma en tiempo de ejecución para mejorar el rendimiento. Una de las desventajas de usar este tipo de lenguajes que se basan en una máquina virtual puede ser que son más lentos que los lenguajes ya compilados, debido a la capa intermedia. No obstante, cabe destacar que no una desventaja demasiado crítica. LENGUAJES DE PROGRAMACIÓN TIPOS (3) Introducción Todos los programas se desarrollan en algún lenguaje de programación. Nadie programa directamente con instrucciones en lenguaje máquina debido a que son ininteligibles para el ser humano. Los lenguajes de programación son lenguajes artificiales creados para que al traducirse a código máquina cada una de las instrucciones de dicho lenguaje dé lugar a una o varias instrucciones en máquina. En la actualidad existen multitud de lenguajes de programación. Un lenguaje de programación hace referencia al conjunto de caracteres, reglas y acciones combinadas y consecutivas que un equipo debe ejecutar. Constará de los siguientes elementos: Alfabeto o vocabulario: conjunto de símbolos permitidos. Sintaxis: reglas para realizar correctamente construcciones con símbolos. Semántica: reglas que determinan el significado de construcción del lenguaje. Lenguaje de bajo nivel - lenguaje máquina El lenguaje de más bajo nivel por excelencia es el lenguaje máquina Características Sus instrucciones son complejas e ininteligibles. Se componen de 0s y 1s. No necesita ser traducido. Es el lenguaje que entiende directamente el ordenador. Fue el primer lenguaje utilizado. Los desarrolladores tenían que tener un conocimiento profundo sobre el hardware. Es diferente para cada procesador. Las instrucciones no son portables de un ordenador a otro. Salvo excepciones, nadie programa en lenguaje máquina. El lenguaje ensamblador (también conocido como "assembly" o ASM) es un lenguaje de bajo nivel que está estrechamente vinculado a la arquitectura de la máquina o procesador en el que se ejecuta. Características: ➔ Lenguaje de bajo nivel: Se encuentra justo por encima del código máquina y permite una interacción directa con el hardware. Cada instrucción en ensamblador se traduce generalmente en una instrucción de máquina. ➔ Dependiente de la arquitectura: Las instrucciones varían según el tipo de procesador. El ensamblador para un procesador Intel no será el mismo que para un procesador ARM, por ejemplo. ➔ Uso de mnemónicos: Las instrucciones del lenguaje ensamblador se representan mediante mnemónicos, que son abreviaciones legibles para humanos de las instrucciones de máquina (como MOV, ADD, SUB, etc.). ➔ Control total del hardware: Ofrece un control sobre los registros del procesador, la memoria y otros recursos del hardware, lo que permite optimizar el rendimiento del programa. ➔ Eficiencia en recursos: Al permitir una programación más cercana al hardware, se pueden crear programas extremadamente eficientes en cuanto a tiempo de ejecución y uso de memoria, a diferencia de los lenguajes de alto nivel. ➔ Difícil de programar y mantener: Dado que se trabaja a un nivel muy bajo, el ensamblador es más complejo de aprender, programar y depurar que los lenguajes de alto nivel como Python o Java. ➔ Necesita ensamblador: Un ensamblador es el programa encargado de convertir el código escrito en lenguaje ensamblador en código máquina ejecutable. ➔ Instrucciones simples: Cada instrucción en ensamblador realiza una tarea muy básica, cómo mover datos entre registros o realizar operaciones aritméticas simples. ➔ Velocidad y optimización: Aunque su uso es más complejo, permite una optimización extrema del código, algo que es muy valioso en aplicaciones que requieren un rendimiento muy alto, como en videojuegos de bajo nivel. El uso del ensamblador es cada vez menos común en el desarrollo general de software, pero sigue siendo esencial en áreas donde se requiere un control directo sobre el hardware. Lenguaje de Nivel Medio - características Un lenguaje de programación de nivel medio está entre los lenguajes de bajo nivel (que están muy cerca del hardware, como el ensamblador) y los de alto nivel (que son más fáciles de entender para las personas, como Python o Java). Los lenguajes de nivel medio combinan características de ambos mundos: permiten trabajar más cerca del hardware, pero también con estructuras más comprensibles. ➔ Equilibrio entre control del hardware y facilidad de uso: Te permiten trabajar directamente con la memoria y el procesador, pero también tienen características que los hacen más fáciles de usar que los lenguajes de bajo nivel. ➔ Manipulación directa de hardware: Puedes acceder y manipular directamente la memoria y los registros del procesador, lo cual es útil para optimizar el rendimiento de los programas. ➔Eficiencia y velocidad: Los programas escritos en lenguajes de nivel medio tienden a ser más rápidos y eficientes en cuanto a uso de recursos (memoria y tiempo de ejecución) que los de alto nivel. ➔ Estructuras comprensibles: Aunque te permite acceder al hardware, los lenguajes de nivel medio también usan estructuras como bucles (for, while), condicionales (if, else) y funciones, lo que los hace más fáciles de entender que los lenguajes de bajo nivel. ➔ Código portátil, pero con acceso a bajo nivel: Aunque no son tan portátiles (es decir, no se pueden ejecutar fácilmente en cualquier plataforma) como los lenguajes de alto nivel, los de nivel medio permiten escribir código que puede funcionar en diferentes tipos de máquinas con algunas modificaciones. ¿Por qué son útiles? Los lenguajes de nivel medio son ideales cuando quieres crear programas que sean rápidos y eficientes, pero sin tener que escribir en un lenguaje complicado como ensamblador. Por ejemplo, los sistemas operativos como Windows, Linux y MacOS se han desarrollado en su mayoría con lenguajes de nivel medio como C. Lenguaje de Alto Nivel - características Un lenguaje de alto nivel es un tipo de lenguaje de programación que es más fácil de entender para los humanos, porque utiliza palabras y estructuras que se parecen al lenguaje que usamos todos los días. Los lenguajes de alto nivel son más simples de usar y permiten escribir programas más rápido. Características de los lenguajes de alto nivel: ➔ Fáciles de leer y escribir: Los lenguajes de alto nivel usan palabras y frases que parecen inglés o matemáticas. Esto hace que sean más fáciles de aprender y usar, como if, else, while, o print. ➔ Portabilidad: El mismo código puede ejecutarse en diferentes tipos de ordenadores sin necesidad de hacer grandes cambios. Por ejemplo, un programa escrito en Python puede funcionar en Windows, macOS o Linux sin muchos ajustes. No dependen del hardware: No tienes que preocuparte de cómo funcionan los componentes internos del ordenador (como la memoria o el procesador) al escribir el código. El lenguaje de alto nivel se encarga de esos detalles. Más productivos: Permiten escribir programas más complejos en menos tiempo que los lenguajes de bajo nivel, porque hacen muchas tareas automáticamente. Traducidos por un compilador o intérprete: Los lenguajes de alto nivel no son entendidos directamente por la computadora. Por eso, necesitan un compilador o un intérprete que los traduzca a lenguaje máquina (el lenguaje que sí entienden los ordenadores). En ocasiones ofrecen frameworks para una programación más rápida. Suelen trabajar con mucha abstracción y orientado a objetos. De esta manera es más fácil la reutilización y el encapsulamiento. Algunos ejemplos de lenguajes de alto nivel son: ALGOL, C++, C#, Clipper, COBOL, Fortran, Java, Logo, Pascal, etc. Framework Un framework es una especie de "esqueleto" o "estructura" que te ayuda a desarrollar aplicaciones de manera más rápida y organizada. Imagina que un framework es como los cimientos de una casa: ya tienes las paredes y la estructura básica, y solo te falta construir lo demás encima. Te ofrece una base sólida, para que no tengas que empezar siempre desde cero. ¿Por qué usar un framework? Cuando creas una aplicación web desde cero, hay muchas tareas repetitivas, como conectarte a una base de datos, organizar el código o crear funciones para manejar errores. Un framework ya tiene todo esto preparado para que puedas enfocarte en las partes más importantes de tu proyecto, como el diseño y la funcionalidad. Ejemplos de frameworks ➔ Frontend (lo que ves en la web). ➔ React: Te ayuda a crear interfaces de usuario interactivas. ➔ Vue.js: Un framework más fácil para principiantes que también sirve para hacer páginas dinámicas. ➔ Angular: Una opción más completa, pero un poco más compleja. ➔ Backend (lo que pasa detrás de la web): ➔ Django (en Python): Un framework que te facilita gestionar usuarios, bases de datos, etc. ➔ Laravel (en PHP): Muy usado para crear webs dinámicas y bien estructuradas. ➔ Express (en JavaScript): Muy ligero, perfecto para crear aplicaciones web rápidas. Ventajas de usar un framework ➔ Ahorro de tiempo: Ya tienes muchas funciones listas para usar. ➔ Organización: Facilita mantener el código limpio y estructurado. ➔ Mejores prácticas: Te ayuda a seguir las reglas que usan los programadores profesionales. ➔ Seguridad: La mayoría de frameworks incluyen medidas de seguridad básicas Según la forma en que los lenguajes son ejecutados Podemos distinguir: Lenguajes compilados: como ya vimos se ejecutan de forma más rápida que los interpretados o virtuales. Ejemplo lenguaje C. Lenguajes interpretados como ya vimos, no genera código y se encarga de leer las instrucciones e interpretarlas para seguidamente ejecutarlas: php, javascript. Los lenguajes virtuales: como ya vimos son lenguajes de programación que no se ejecutan directamente en el hardware de una computadora, sino que se ejecutan en un entorno de máquina virtual: java Paradigmas de programación El paradigma de programación nos detalla las reglas, los patrones y los estilos de programación que usan los lenguajes. ➔ Guía la forma en que se diseña y escribe un programa. Es un conjunto de principios y conceptos que definen cómo se estructura el código, cómo se resuelven los problemas y cómo interactúan los diferentes componentes del software ➔ Cada lenguaje puede usar más de un paradigma, el cual resultará más apropiado que otro según el tipo de problema que queramos resolver. Paradigmas de programación - LENGUAJES IMPERATIVOS Se basa en dar instrucciones secuenciales al ordenador para que realice una serie de pasos. Características: ➔ Instrucciones paso a paso: Imagina que le dices a alguien: "Primero, corta las verduras. Luego, ponlas en la sartén. Después, agrega sal". Estás dando las instrucciones una detrás de la otra. En un lenguaje imperativo, haces lo mismo con el ordenador. ➔ Cambiar cosas: (variables) Piensa en una caja donde guardas cosas (como números o palabras). En un programa, esas cajas se llaman variables, y puedes cambiar lo que tienen dentro. Por ejemplo, si guardas el número 5 y luego lo cambias a 10, eso es como lo que hace un programa imperativo: guarda y cambia información. Paradigmas de programación - LENGUAJES IMPERATIVOS ➔ Control del orden A veces quieres que el ordenador repita algo o que haga una cosa si pasa algo especial. Por ejemplo, "si está caliente, retira la sartén del fuego" (sentencias condicionales) o "repite el paso de mover la sartén hasta que las verduras estén doradas". En un programa imperativo, puedes decirle al ordenador que haga algo una y otra vez (como bucles), o que haga algo solo si ocurre una condición especial (if - else). Dentro de esta categoría podemos englobar: ➔ Programación modular: se trata de dividir un programa en pequeñas piezas o módulos. Es como cuando haces una lista de tareas y cada tarea se encarga de algo específico. Esto ayuda a que sea más fácil entender el código y trabajar con él. Paradigmas de programación - Programación orientado a objetos ➔ Programación orientada a objetos (POO): Aquí el enfoque es diferente. En lugar de simplemente darle instrucciones paso a paso, como en la imperativa, en la orientada a objetos organizamos el programa en torno a objetos, que son como pequeñas entidades con sus propias características y comportamientos. Es como si fueras creando cosas en lugar de sólo escribir instrucciones. Ejemplo: Imagina que tienes que diseñar un videojuego. En vez de dar una lista de instrucciones para cada cosa, creas objetos como un "personaje" o "enemigo", y cada uno tiene sus propias acciones y propiedades. Por ejemplo: El personaje puede tener un nombre (propiedades) , tipo y puede caminar o saltar (acciones). El enemigo puede tener su propio nombre, puntos de vida, y puede atacar. Cada objeto es independiente, pero todos interactúan entre sí para que el juego funcione. Así es como funciona la programación orientada a objetos: creamos objetos con características y comportamientos propios, que luego interactúan entre ellos. Paradigmas de programación - Programación orientado a objetos Entre las ventajas de este tipo de lenguaje hay que destacar: ➔ Fácil de entender: La POO usa conceptos que ya conocemos del mundo real. Piensa en objetos como un coche o un perro: cada uno tiene características (como el color o la raza) y puede hacer cosas (como moverse o ladrar). Ejemplo: En un juego de coches, puedes tener un "objeto coche" con características como "color" y "velocidad", y con acciones como "acelerar" o "frenar". ➔ Organización clara: Al usar objetos y clases, la POO te ayuda a organizar el código de una forma ordenada. En lugar de escribir todo el código en un solo lugar, puedes dividir el programa en partes más pequeñas (objetos) que son más fáciles de manejar. Ejemplo: si estás creando un videojuego, puedes tener una clase para Personajes, otra para Enemigos y otra para Vehículos, cada una con sus propias características y acciones. Paradigmas de programación - Programación orientado a objetos ➔ Reutilización de código: permite reutilizar partes del código, lo que significa que no tienes que escribir lo mismo una y otra vez. Puedes crear una "plantilla" (clase) para algo, y luego usar esa misma plantilla para crear muchos objetos similares, pero con pequeñas diferencias. ➔ Protección de los datos (encapsulamiento): La POO permite proteger la información que contiene un objeto, de manera que solo se puede cambiar usando ciertas reglas. Esto ayuda a evitar errores y a que el programa sea más seguro. Paradigmas de programación - Programación orientado a objetos Paradigmas de programación - Programación estructurada Programación estructurada. Cuando hablamos de programación estructurada nos estamos refiriendo a programas creados a través de módulos, es decir, pequeñas partes más manejables que, unidas entre sí, hacen que el programa funcione. Cada uno de los módulos poseen una entrada y una salida, y deben estar perfectamente comunicados, aunque cada uno de ellos trabaja de forma independiente. A continuación, vemos un programa estructurado en módulos: Paradigmas de programación - programación declarativa Lenguajes funcionales: La programación funcional es un estilo diferente de pensar en cómo programar, donde en lugar de decirle al ordenador paso a paso lo que debe hacer (como en la programación imperativa), le dices que calcular usando funciones (como en las matemáticas). Están basados en el concepto de función y estarán formados por definiciones de funciones junto con argumentos que se aplican. ➔ La operación fundamental es la aplicación de una función a una serie de argumentos y, además, la computación se realiza evaluando expresiones. ➔ Apenas se usan para el software comercial. Paradigmas de programación - programación declarativa Lenguajes funcionales: Existen muchos lenguajes de programación conocidos con los que podremos aplicar modelos de programación funcional entre sus paradigmas: javascript, ruby phyton, ➔ Se trata de un código más corto, sencillo, legible y preciso. ➔ Fácilmente combinable con la programación orientada a objetos e imperativa. Ejemplo En este ejemplo, la problemática es conocer la cantidad de elementos en la lista mayores a 10. List numeros = List.of(18, 6, 4, 15, 55, 78, 12, 9, 8); // lista de enteros Long result = numeros.stream().filter(num -> num > 10).count(); System.out.println(result); Paradigmas de programación - Lenguajes lógicos Lenguajes lógicos: ➔ Programación lógica es como decirle al ordenador lo que es verdad y las reglas que debe seguir. Luego, le haces preguntas y él llega a conclusiones. ➔ No le das órdenes paso a paso, sino que dejas que el ordenador "piense" cómo resolver el problema por sí mismo. ➔ El lenguaje Prolog es uno de los más conocidos para este tipo de programación. Paradigmas de programación - Lenguajes lógicos ¿Qué es la programación reactiva? La programación reactiva es un estilo de programación en el que los programas reaccionan a los cambios que suceden en tiempo real. En lugar de que el programa haga todo de forma lineal o secuencial, el programa "escucha" eventos o cambios (como el clic de un botón, la llegada de un mensaje, o el cambio en los datos) y responde automáticamente cuando ocurren. En la programación reactiva, el programa está diseñado para estar pendiente de los cambios o eventos. Cuando algo cambia, el programa reacciona automáticamente. Esta forma de programar es muy útil para aplicaciones web modernas que necesitan actualizarse en tiempo real sin que el usuario tenga que hacer nada extra. Paradigmas de programación - Programación reactiva Java, NO es un lenguaje de programación reactivo. Sin embargo, esto no significa que no podamos crear programas reactivos en Java. Con Java 9, el JDK comienza a admitir programación reactiva, proporcionando algunas clases e interfaces para este propósito. ¿Dónde se usa la programación reactiva? Este tipo de programación se usa mucho en aplicaciones web, especialmente cuando queremos que el usuario vea los cambios en la pantalla sin tener que actualizar la página o hacer alguna acción extra. Por ejemplo: ➔ Redes sociales: Cuando recibes notificaciones nuevas sin refrescar la página. ➔ Aplicaciones de chat: Cuando los mensajes aparecen en tu pantalla al instante. ➔ Aplicaciones financieras: Cuando los precios o gráficos cambian en tiempo real. Lenguajes de programación más difundidos - JAVA Características principales de Java: ➔ Lenguaje orientado a objetos. ➔ Java organiza el código en objetos, que son como piezas o bloques de construcción. ➔ Multiplataforma ("escribe una vez, ejecuta en cualquier parte"), esto se debe a que Java usa JVM (Máquina Virtual de Java). ➔ Es un lenguaje virtual interpretado. ➔ Está pensado para trabajar con redes y protocolos HTTP, FTP, TCP/IP ➔ Ofrece muchos aspectos de seguridad. Actualmente se trabaja en la encriptación del código fuente para mayor seguridad. Lenguajes de programación más difundidos - C Y C++ Son y han sido unos de los lenguajes más potentes y versátiles de la historia de la informática. Mientras que otros lenguajes se han dejado de utilizar, estos siguen utilizándose en múltiples entornos de desarrollo. ⚫ La entrada y salida se ejecuta a través de funciones. ⚫ C estuvo en su momento muy ligado a Unix como sistema operativo, pero C++ intentó ⚫ Lenguajes estructurados y muy ligados a funciones. desligarse de este. ⚫ Incluyen el concepto de puntero, que es una variable que contiene la dirección de memoria de otra variable. Este aspecto ofrece mucha flexibilidad, pero, por otra parte, su ⚫ utilización por parte del programador puede ser compleja. Combinan comandos de alto nivel, aunque pueden incluirse fragmentos de código que ⚫ trabajen a más bajo nivel. Los programas son muy eficientes y rápidos. El tamaño de los programas compilados es pequeño. Lenguajes de programación más difundidos - C Y C++ ➔ C++ permite a los programadores crear aplicaciones que van desde software de sistemas hasta videojuegos y aplicaciones de alto rendimiento, gracias a su capacidad para gestionar memoria y su flexibilidad. Tipos de programación en C++ Admite múltiples paradigmas de programación, lo que lo convierte en un lenguaje versátil para diferentes tipos de proyectos. Entre los principales estilos de programación que C++ soporta se encuentran: ➔ Programación orientada a objetos (POO): Con conceptos como clases, herencia y polimorfismo, C++ permite estructurar el código en objetos, lo que facilita la reutilización y el mantenimiento. ➔ Programación estructurada, como C, donde el código se organiza en funciones y procedimientos. ➔ Programación genérica: A través de las plantillas, C++ permite crear código que puede funcionar con diferentes tipos de datos, promoviendo la reutilización y la flexibilidad. Lenguajes de programación más difundidos - JAVASCRIPT Este lenguaje se utiliza mucho en programación web y sobre todo los frameworks basados ⚫ en él como Angular, React, etc. Tiene la ventaja de parecerse mucho a Java, C y C++. Por lo tanto, los programadores de estos lenguajes se sienten cómodos al programar con JavaScript. ⚫ Es un lenguaje de scripting. ⚫ Se ejecuta en el lado del cliente. ⚫ Es un lenguaje seguro y fiable. Su código es visible y cualquiera puede leerlo, ya que, como se ha explicado, se ⚫ interpreta en el lado cliente. Tiene sus limitaciones como cualquier lenguaje ejecutado en el lado del cliente. Esas ⚫ limitaciones tienen más que ver con el tema de la seguridad. Actualmente, existen muchas librerías basadas en JavaScript como AngularJS, ReactJS, MeteorJS, JQuery, Foundation JS y BackBone.js, entre otras. Los lenguajes más difundidos - PHP Lenguaje web de propósito general utilizado frecuentemente en el backend de muchos ⚫ productos como PrestaShop, WordPress, etc. Lenguaje multiplataforma. Puede instalarse prácticamente en cualquier sistema. Se orientó desde el principio al desarrollo de webs dinámicas. pro- ⚫ Conocidos son su buena integración con Mysql y otros servicios como ProFTPd, etc. ⚫ Permite aplicar técnicas de orientación a objetos. ⚫ Lenguaje interpretado, con lo cual no hace falta definir variables. Existen muchos frameworks basados en PHP que permiten trabajar los patrones de diseño modelo-vista-controlador (MVC). MVC - MODELO - VISTA - CONTROLADOR El MVC o Modelo-Vista-Controlador es un patrón de arquitectura de software que, utilizando 3 componentes (Vistas, Models y Controladores) separa la lógica de la aplicación de la lógica de la vista en una aplicación. Modelo Se encarga de los datos, generalmente (pero no obligatoriamente) consultando la base de datos. Actualizaciones, consultas, búsquedas, etc. todo eso va aquí, en el modelo. Controlador: Se encarga de controlar, recibe las órdenes del usuario y se encarga de solicitar los datos al modelo y de comunicarles a la vista. Vistas: Son la representación visual de los datos, todo lo que tenga que ver con la interfaz gráfica va aquí. Ni el modelo ni el controlador se preocupan de cómo se verán los datos, esa responsabilidad es únicamente de la vista. Fases del desarrollo de una aplicación(4). El ciclo de vida del desarrollo de software es el proceso completo que se sigue para crear una aplicación o sistema. Se divide en varias fases que ayudan a planificar, diseñar, construir y mantener el software. Las fases son: Fases Inicial En esta, se planifica el proyecto, se hacen estimaciones, se decide si el proyecto es rentable o no, etc. Es decir, se establecen las bases de cómo va a desarrollarse el resto de fases del proyecto. En un símil con la construcción de un edificio, consistiría en ver si se dispone de licencia de construcción, cuánto va a costar el edificio, cuántos trabajadores van a necesitar para construirlo, quién va a construirlo, etc. La fase de planificación y estimación son las más complejas de un proyecto. Para esto, se necesita gente con experiencia tanto en la elaboración de proyectos como en las plataformas en las que va a realizarse su construcción. De esta fase, surgen muchos documentos tanto de planificación (general y detallada) como de estimaciones, en los que se incluyen datos económicos, posibles soluciones al problema y sus costes, etc. Son documentos que se realizan a alto nivel y se acuerdan con la dirección de la empresa o las personas responsables del proyecto. En estas fases iniciales, suelen tomarse decisiones que, a veces, afectan a todas las demás fases del proyecto, con lo cual tiene que estar todo bien documentado, detallado y soportado por datos concretos. Fase Inicial Por tanto: El cliente solicita un producto de software determinado. Nos contacta para plasmar sus necesidades concretas y presentar su solicitud de desarrollo de software. Por tanto: ➔ Hay que analizar los recursos que se destinarán al proyecto. ➔ Se investigará la viabilidad financiera y tecnológica. Se utilizan algoritmos para saber si el proyecto de software es factible o no. ➔ Se realizará un presupuesto. ➔ se realizarán documentos tanto de planificación (general o detallada) como de estimaciones en los que se incluyen datos económicos, posibles soluciones al problema y sus costes. Fase de Análisis ¿Qué se hace?: En esta fase se define qué es lo que el cliente o los usuarios necesitan de la aplicación. Esto puede ser desde qué funcionalidades tendrá la web (por ejemplo, un sistema de registro de usuarios) hasta qué tipo de información gestionará. Por tanto: ➔ Se analiza el problema. ➔ Recopilar y formular los requisitos del cliente y analizar cualquier restricción que pueda aplicarse. ➔ Entrevista con el cliente. ➔ Deben quedar registrados en un documento de requisitos de aplicación. ➔ El documento obliga a ambas partes a cumplir con lo acordado. Ejemplo: Si estamos creando una tienda online, aquí se definiría que los usuarios podrán ver productos, agregar productos al carrito, y hacer pagos. Fase de Diseño ¿Qué se hace?: Se decide cómo va a ser la estructura de la aplicación. Esto incluye tanto el diseño visual (interfaz gráfica) como el diseño técnico (base de datos, estructura del código). Por tanto: ➔ Determinar los requisitos generales de la arquitectura de la aplicación. ➔ Los documentos son más técnicos. Suelen crearse dos documentos de diseño: uno más genérico en el que se tiene una visión más general de la aplicación y otro más detallado en que se profundizará en los detalles técnicos. ➔ Estos documentos los realizan los analistas junto con la supervisión del jefe de proyecto. Ejemplo: En la tienda online, se diseñarán las páginas que el usuario verá (como la página de productos o el carrito), y también cómo se organizará la información de los productos en la base de datos. Fase de Codificación e Implementación ¿Qué se hace?: Aquí es donde los programadores escriben el código que convierte el diseño en una aplicación funcional. Se programan las funcionalidades de la web. El analista trabaja con los programadores y es donde se usan los lenguajes de programación para el desarrollo del proyecto. En esta etapa también se debe trabajar en conjunto con los usuarios para desarrollar la documentación efectiva para el software, como manuales de procedimiento, ayuda en línea y sitios web que incluyan respuestas a problemas frecuentes. Por tanto: ➔ Implementación del software en un lenguaje de programación. ➔ Se crea documentación muy detallada que incluye el código. Ejemplo: En una aplicación Web los desarrolladores crearían las funcionalidades para que los usuarios puedan registrarse, ver productos, agregar al carrito, y hacer pagos de manera segura. Fase de Pruebas En esta fase, se realizan pruebas para garantizar que la aplicación se ha programado de acuerdo con las especificaciones originales y los distintos programas de los que consta la aplicación están perfectamente integrados y preparados para la explotación. Como se ha visto anteriormente, las pruebas son de todo tipo. Podría clasificarse la documentación de las pruebas en dos bloques diferentes: 1. Funcionales. Existen unas pruebas funcionales en las que se prueba que la aplicación hace lo que tiene que hacer con las funciones acordes a los documentos de especificaciones que se establecieron con el cliente, por lo que esas pruebas deberían realizarse con el cliente presente. Mientras están realizándose las pruebas, tiene que hacerse todo tipo de anotaciones para luego plasmarlas en un documento, al que tendrá que darle el visto bueno el cliente (que, por ese motivo, estuvo en las pruebas) En ese documento, van detallándose fallos, tanto de la propia aplicación como modificaciones que se hayan realizado en ella, si no cumple con las especificaciones iniciales. En el caso de que haya discrepancias, suele consultarse documentación anterior para que no se incluyan en este punto funcionalidades nuevas o variaciones de las funcionalidades. 2. Estructurales. En otro documento aparte, se detallarán los resultados de las pruebas técnicas realizadas. A estas pruebas, ya no hace falta que asista el usuario o cliente, puesto que son de carácter meramente técnico. En estas pruebas, se harán cargas reales, se someterá Ejemplo ★ Se probaría que los usuarios pueden registrarse correctamente, que los productos se agregan al carrito sin fallos, y que los pagos se procesan de manera segura. ★ Las pruebas de estrés de software son una técnica crucial para evaluar el rendimiento y la estabilidad de un sistema de software en condiciones extremas o desfavorables. Consiste en someter la aplicación a altos niveles de estrés, como grandes cargas de usuarios, recursos limitados o entradas de datos excesivas, para identificar su punto de ruptura y sus posibles puntos débiles.. Fase de Explotación En esta fase, se instala el software en el entorno real de uso y se trabaja con él de forma cotidiana. Generalmente, es la fase más larga y suelen surgir multitud de incidencias, nuevas necesidades, etc. Toda esta información suele detallarse en un documento en el que se incluyen los errores o fallos detectados intentando ser lo más explícito posible, puesto que luego los programadores y analistas deben revisar estos fallos o bugs y darle la mejor solución posible. También surgirán otras necesidades que van a ir detallándose en un documento y que pasarán a realizarse en operaciones de mantenimiento. ¿Qué se hace?: Una vez que la aplicación ha pasado todas las pruebas, se lanza al público. Esto significa que se sube la aplicación al servidor para que los usuarios puedan acceder a ella a través de internet. Ejemplo: La tienda online se publica en un servidor web y los clientes pueden empezar a comprar en ella Fase de Mantenimiento En esta fase, se realizan todo tipo de procedimientos correctivos (corrección de fallos) y actualizaciones secundarias del software (mantenimiento continuo), que consistirán en adaptar y evolucionar las aplicaciones. Para realizar las labores de mantenimiento, hay que tener siempre delante la documentación técnica de la aplicación. Sin una buena documentación de la aplicación, las labores de mantenimiento son muy difíciles y su garantía, en ese caso, sería poca. Todas las operaciones de mantenimiento tienen que estar documentadas porque ha de saberse quién ha realizado la operación, qué ha hecho y cómo. También tienen que estar documentadas porque debería probarlas otra persona distinta al programador. Como se ha dicho, el comienzo y el final de cada fase no están claros. Todas las fases se solapan y, una vez que concluyen, el resultado es la aplicación. ¿Qué se hace?: Después de que la aplicación está en funcionamiento, es necesario darle mantenimiento. Esto incluye corregir errores que aparezcan, mejorar funciones o agregar nuevas características según las necesidades de los usuarios. Ejemplo: Si después de un tiempo los usuarios piden una nueva funcionalidad, cómo pagar con PayPal, los desarrolladores la añadirían en esta fase.

Use Quizgecko on...
Browser
Browser