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.

Entradas relacionadas: