Conceptos clave de programación y arquitectura de software
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 6,11 KB
Programa informático
Programa informático: conjunto de instrucciones que se ejecutan de manera secuencial con el objetivo de realizar una o varias tareas en un sistema.
Lenguaje de programación
Lenguaje de programación: conjunto de instrucciones, operadores y reglas de sintaxis y semántica que se ponen a disposición del programador para comunicarse con el hardware y el software.
Nivel de abstracción
Nivel de abstracción: indica cuán alejado está el lenguaje del código máquina.
- Bajo nivel: código máquina (binario).
- Medio nivel: tienen definidas una serie de instrucciones simples y posiciones de memoria (lenguaje ensamblador).
- Alto nivel: son cercanos a nuestro propio lenguaje y permiten la realización de patrones de diseño complejos (Java o C#).
Forma de ejecución
- Compilados: el código se compila y se enlaza con las librerías.
- Interpretado: se ejecuta línea a línea sin necesidad de compilar.
- Virtual: se genera un lenguaje «compilado» llamado bytecode y la máquina virtual se encarga de ejecutarlo.
Paradigma de programación
Paradigma de programación: estilo de programación que facilita la tarea de desarrollar o añade funcionalidad al programa.
- Imperativo: describe cómo realizar una tarea.
- Declarativo: describe qué es lo que hay que hacer.
- Procedimental: se divide en partes más pequeñas llamadas funciones; permite la reutilización.
- Orientado a objetos: encapsula el estado y las operaciones dentro de un objeto, emulando un modelo del mundo real; permite la herencia.
- Funcional: evita declarar datos mutables, se basa en funciones y evita efectos secundarios.
- Lógico: define un conjunto de reglas para ser interpretadas.
Tipos de código
- Fuente: es el código que nosotros escribimos en el programa.
- Objeto: es el resultado de compilar el código fuente; si es virtual, es el bytecode.
- Ejecutable: resultado de enlazar el código objeto con las librerías.
Procesos de desarrollo
Procesos de desarrollo:
- Análisis: define los requisitos del software que hay que desarrollar.
- Diseño: determina el funcionamiento sin entrar en detalles de implementación.
- Codificación: programar el software definido anteriormente.
- Pruebas: verifica que la codificación ha sido exitosa, que el software no tiene errores y que cumple con lo que debe hacer.
- Documentación: muestra la información completa de cómo manejar la aplicación.
- Explotación: implementar el software en el sistema elegido y distribuirlo.
- Mantenimiento: se corrigen errores o fallos que aparecen una vez que el programa ha sido implementado y se realizan ampliaciones requeridas.
Roles que interactúan en el desarrollo
- Analista de sistemas: realiza un estudio del sistema para dirigir el proyecto; participa en la fase de análisis.
- Diseñador del software: evolución del analista; realiza el diseño de la solución que hay que desarrollar; participa en la etapa de diseño.
- Analista programador: diseña una solución cercana al código; participa en diseño y codificación.
- Programador: escribe el código en función del estudio realizado por analistas y diseñadores; etapa de codificación.
- Arquitecto de software: investiga frameworks, revisa que el procedimiento se lleve a cabo de forma óptima; participa en análisis, diseño, documentación y explotación.
Arquitectura del software
Arquitectura del software: conjunto de decisiones que definen los componentes y la interacción entre ellos.
Patrones
Patrón: facilitan la búsqueda de soluciones a problemas comunes en el desarrollo de software. Deben ser efectivos resolviendo problemas similares y reutilizables.
- Creacionales: Fábrica abstracta, Instancia única (Singleton).
- Estructurales: Decorador (añadir de manera dinámica diferentes funcionalidades a un objeto), Fachada (permite crear una interfaz que unifique el acceso a los subsistemas, simplificando su uso), Objeto compuesto.
- Comportamiento: Estado, Visitor, Iterador.
Antipatrones
Antipatrones: son malas prácticas en el desarrollo del software.
- Código espagueti: código lleno de saltos y llamadas desordenadas; cualquier cambio puede desmoronar la aplicación.
- Flujo de lava: código desordenado.
- Martillo dorado / Varita mágica: uso de un mismo framework para todas las soluciones, independientemente de su idoneidad.
- Reinventar la rueda: desarrollar soluciones a problemas que ya tienen una solución.
- Reinventar la rueda cuadrada: reinventar la rueda de un modo incorrecto.
- Infierno de las dependencias: depender en exceso de librerías externas.
- Manejo inútil de excepciones: crear condicionales para que surjan excepciones y luego lanzarlas manualmente sin justificación.
- Cadenas mágicas: abuso en la utilización de cadenas de caracteres literales en lugar de constantes o enumeraciones.
- Copiar y pegar: duplicar una clase o método en vez de crear una solución reutilizable.