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:
- Programación Estructurada.
- Programación Modular.
- Programación Orientada a Objetos (POO).
- Programación Concurrente.
- 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.