Introducción al Desarrollo de Software: Conceptos, Herramientas y Control de Versiones
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 10,06 KB
Desarrollo de Software
Conceptos Básicos
Un sistema informático es un conjunto de elementos interrelacionados que procesan información. Se compone de:
- Hardware: Componentes físicos como la CPU, la memoria RAM y los dispositivos de almacenamiento.
- Software: Programas, datos e instrucciones que proporcionan la funcionalidad del sistema.
- Usuario: Persona que planifica y organiza tareas para interactuar con el sistema.
Un programa informático es un conjunto de instrucciones y datos diseñados para realizar tareas específicas en un sistema informático. Se escribe en un lenguaje de programación, que puede ser compilado o interpretado.
Tipos de Software
- De sistema: Proporciona una plataforma para otros programas. Ejemplo: sistemas operativos.
- De programación: Herramientas para el desarrollo de software, como compiladores y editores de código.
- De aplicación: Software diseñado para usuarios finales, como aplicaciones de ofimática y videojuegos.
Lenguajes de Programación
Clasificación por Nivel de Abstracción
- Bajo nivel: Cercanos al lenguaje máquina, como el ensamblador.
- Medio nivel: Permiten operaciones simples con la memoria, como el ensamblador.
- Alto nivel: Más comprensibles para los humanos, como Python y Java.
Clasificación por Evolución
- 1ª Generación: Lenguaje máquina (binario: 0 y 1).
- 2ª Generación: Lenguaje ensamblador (código más legible).
- 3ª Generación: Lenguajes orientados a objetos, como Java y C++.
- 4ª Generación: Lenguajes específicos para tareas concretas, como SQL.
- 5ª Generación: Utilizan lenguaje natural, como Lisp.
Clasificación por Forma de Ejecución
- Compilados: Generan un archivo ejecutable tras ser compilados. Ejemplo: C.
- Interpretados: Ejecutados línea a línea por un intérprete. Ejemplo: Python.
- Mixtos: Compilan a un bytecode intermedio. Ejemplo: Java.
Clasificación por Paradigma
- Estructurado: Basado en secuencias, condicionales y bucles.
- Orientado a objetos: Componentes autónomos que interactúan entre sí.
- Procedimental: Divide el programa en funciones o procedimientos.
- Imperativo: Indica al programa cómo debe realizar una tarea, está orientado a objetos.
Obtención del Código Ejecutable
Un programa pasa por tres tipos de código:
- Código fuente: Instrucciones escritas por el programador en un lenguaje de programación.
- Código objeto: Código máquina generado al compilar el código fuente.
- Código ejecutable: Archivo binario obtenido al enlazar el código objeto con las librerías necesarias. Puede ser portable, no portable o un script que requiere interpretación.
Proceso de Compilación
Compilador y enlazador (linker): El compilador transforma el código fuente en código objeto; el enlazador lo une con las librerías necesarias.
Fases de la Compilación
- Análisis lexicográfico: Agrupa caracteres en lexemas.
- Análisis sintáctico-semántico: Crea frases gramaticales con los lexemas.
- Generación de código intermedio: Produce pseudocódigo.
- Optimización de código: Mejora la eficiencia del pseudocódigo.
- Generación de código: Crea código máquina relocalizable.
- Enlazador: Vincula las librerías al código objeto.
Ciclo de Vida del Software
El ciclo de vida del software se divide en tres etapas:
- Etapa de definición: Incluye la ingeniería de sistemas, la planificación y el análisis de requisitos.
- Etapa de desarrollo: Comprende el diseño, la codificación y las pruebas.
- Etapa de mantenimiento: Se centra en la corrección, mejora, adaptación y prevención de errores.
Un desarrollo bien gestionado asegura la calidad y la adecuación del software.
Modelos de Desarrollo de Software
- Code and Fix: Sin gestión estructurada. Obsoleto desde los años 70.
- Modelo en cascada: Secuencial, con etapas definidas (análisis, diseño, codificación, pruebas, documentación, explotación, mantenimiento). Roles: analista, diseñador, programador, tester. Las variaciones, como la retroalimentación, permiten realizar ajustes.
- Modelos evolutivos: Mejoran el modelo en cascada mediante versiones iterativas.
- Modelo en V: Similar al modelo en cascada, pero con validación en cada fase.
- Iterativo incremental: Desarrollo en entregas con validación de cada incremento.
- Modelo en espiral: Ciclo basado en cuatro fases: definición de objetivos, evaluación de riesgos, desarrollo y verificación, y planificación.
- Modelos ágiles: Basados en el "Manifiesto Ágil", destacan SCRUM, XP, Kanban y Lean, con un enfoque en la flexibilidad y la entrega continua.
Instalación y Uso de Entornos de Desarrollo
Un IDE (Entorno de Desarrollo Integrado) es una herramienta que combina varias funciones esenciales para la programación, como un editor de texto, un compilador, un depurador y una interfaz gráfica. La elección del IDE depende del lenguaje de programación y de la licencia deseada. Algunos IDEs son compatibles con múltiples lenguajes.
Componentes Principales de un IDE
- Editor de texto: Para crear y modificar archivos de texto.
- Compilador: Traduce programas a lenguaje máquina o bytecode.
- Intérprete: Ejecuta programas escritos en lenguajes de alto nivel.
- Interfaz gráfica (GUI): Utiliza imágenes y gráficos para representar las opciones disponibles.
Componentes Adicionales
Los IDEs pueden incluir herramientas extra, como sistemas de control de versiones, a través de complementos.
IDEs Libres
- Gambas, GNAT Studio, Eclipse: IDE de código abierto y multiplataforma, extensible mediante plugins. Proporciona herramientas de gestión de proyectos, depuración y desarrollo de Java.
- NetBeans: IDE libre, especialmente para Java, basado en una arquitectura modular que facilita la extensión de aplicaciones.
IDEs Propietarios
- FlashBuilder, Turbo C++, Xcode, Microsoft Visual Studio: Requieren licencia. Visual Studio, en particular, soporta varios lenguajes y permite desarrollar aplicaciones para Windows, iOS, Android y la web.
Control de Versiones en el Desarrollo de Software
El control de versiones es esencial para gestionar las modificaciones en el software durante su desarrollo. Herramientas populares incluyen Git, Subversion, CVS, Mercurial y Monotone. Los sistemas de control de versiones se dividen en dos tipos:
- Sistemas centralizados: Un repositorio único almacena todo el software, con un único número de versión para facilitar su gestión.
- Sistemas distribuidos: Cada desarrollador tiene su propia copia del repositorio, lo que permite recuperar versiones si ocurre algún fallo. Es útil para trabajar con versiones inestables.
Glosario de Términos de Control de Versiones
- Rama (Branch): Copia aislada del proyecto.
- Trunk: Rama principal del proyecto.
- Repositorio: Base de datos que almacena los cambios.
- Conflicto: Ocurre cuando varios desarrolladores intentan cambiar el mismo código.
- Commit: Acción de realizar un cambio.
- Fusión (Merge): Integración de cambios de una rama a otra.
- Checkout: Obtener una copia del repositorio.
- Push/Pull: Enviar o recibir cambios entre repositorios.
Git: Sistema de Control de Versiones Distribuido
Git es una de las herramientas más populares de control de versiones. Es gratuita, de código abierto y ofrece un buen rendimiento. Permite trabajar con ramas y facilita las fusiones de código. No depende de un repositorio central.
Estados en Git
- Confirmado (Committed): Los datos están almacenados de forma segura.
- Modificado (Modified): El archivo se ha modificado pero no se ha confirmado.
- Preparado (Staged): El archivo está listo para ser confirmado.
Comandos Básicos de Linux
- mkdir: Crear una carpeta.
- ls: Ver el contenido de una carpeta.
- cd: Cambiar de directorio.
- touch: Crear un archivo.
- rm: Eliminar un archivo.
Comandos Básicos de Git
- git init: Inicializar un repositorio local.
- git status: Ver el estado de los archivos.
- git add: Añadir archivos al área de staging.
- git commit -m "mensaje": Hacer un commit con un comentario.
- git log --oneline: Ver los commits realizados.
- git diff: Ver diferencias entre archivos.
- git diff --staged: Ver diferencias en el área de staging.