Complejidad Algorítmica: Notaciones Asintóticas y Principios de Ingeniería de Software

Clasificado en Informática

Escrito el en español con un tamaño de 3,08 KB

Fundamentos de la Complejidad Algorítmica y Calidad en el Desarrollo de Software

1. Notación Asintótica

1.1. Notación O (Big O)

Su utilidad radica en encontrar un límite superior del tiempo de ejecución de un algoritmo, es decir, el peor caso. Por ejemplo: en lugar de decir que un algoritmo determinado emplea un tiempo $4n-1$ en un arreglo de longitud $n$, se dirá que emplea un tiempo $O(n)$.

1.2. Notación $\Omega$ (Omega)

La notación omega se utiliza para manejar la cota inferior del tiempo de ejecución.

1.3. Notación $\Theta$ (Theta)

La notación theta se utiliza para indicar el orden exacto de complejidad (en el caso de que exista).

2. Eficiencia y Eficacia de Algoritmos

Un algoritmo es eficiente cuando logra alcanzar sus objetivos planteados utilizando la menor cantidad de recursos posibles, es decir, minimizando el uso de memoria, de pasos y de esfuerzo humano.

Un algoritmo es eficaz cuando alcanza el objetivo primordial.

3. Reglas Fundamentales para una Buena Programación

Las reglas que se deben considerar en una buena programación son:

  • Diseñar algoritmos en etapas, yendo de lo general a lo particular (método descendente).
  • Dividir el algoritmo en partes independientes (módulos).
  • Establecer y utilizar la solución de problemas con técnicas de programación estructurada.
  • Dar especial importancia a las estructuras de datos.
  • Describir completamente el algoritmo.
  • Verificar o realizar pruebas a cada algoritmo.

4. Técnicas de Programación Comunes

Existen diversas técnicas fundamentales en el desarrollo de software:

  1. Programación Estructurada.
  2. Programación Modular.
  3. Programación Orientada a Objetos (POO).
  4. Programación Concurrente.
  5. Programación Lógica.

5. Criterios de Calidad del Software

La percepción de la calidad del software varía según el rol:

5.1. Perspectiva del Usuario

  • Satisfacer las necesidades.
  • Facilidad de uso (usabilidad).

5.2. Perspectiva del Productor

  • Producción de un software que se ubique exitosamente en el mercado.
  • Maximización de los beneficios en función de los recursos invertidos.

5.3. Perspectiva del Implementador

  • Control sobre la cantidad y tipos de fallas.
  • Que sea fácil de entender.
  • Bajo impacto de las modificaciones (mantenibilidad).

6. Ingeniería del Software

La Ingeniería del Software es la disciplina o área de la informática que ofrece métodos y técnicas para desarrollar y mantener software de calidad.

7. Estructuras de Programación

Es fundamental estudiar las diferentes estructuras de programación disponibles para optimizar el diseño y la implementación de soluciones informáticas.

Entradas relacionadas: