Complejidad en el Software
La complejidad es una caracteristica inherente de todo lo que nos rodea en el universo. Por tanto, tambien esta presente en el Software. La vemos cuando los proyectos dejan de salir bien, cuando hay perdidas de dinero y cuando cuesta mucho avanzar en la profesion.
Especificamente existen cuatro fuentes principales de Complejidad en el Software
- Problemas en el Dominio. Debido a que el dominio tiene complejidad en si
- Problemas en el Desarrollo. Debido a que el Software se puede desarrollar de muchas formas y manejar un equipo de desarrolladores es complejo
- Problemas en la Solucion. Debido a la complejidad de los sistemas discretos
# Problemas en el Dominio
En el Dominio, podemos identificar problemas que son las razones para el incremento de la complejidad
- Existencia de compromisos entre los Tipos de Requisitos en el Software (Funcionales y No Funcionales)
- Problemas de Comunicacion. Varianza en los terminos, problemas de comunicacion escritos, orales y verbales, entre el equipo, con la maquina, con el cliente
- Cambios de Requisitos tras ver prototipos, interfaces.
- La evolucion inherente del Software. Incrementa la complejidad solicitrando mas cosas, permitiendo que un sistema antiguo se conserve a flote hoy en dia.
# Problemas en el Desarrollo
En el proceso de desarrollo tambien existen problemas que incrementan la complejidad de un Software. Principalmentre
- Ingenieria para simplificar un sistema que es complejo por naturaleza
- Coordinacion y colaboracion entre un equipo de desarrollo que proviene de diferentes lugares.
- Flexibilidad de Creacion. Se te permite crear desde los bloques mas primitivos sobre los cuales sostener un software que suelen no tener las medidas suficientes para asegurar su correcto funcionamiento
# Problemas Inherentes
Debido a que el Desarrollo de Software se hace sobre un sistema computacional siempre existe la posibilidad de entrar en un error, debido a que, no hay forma de demostrar logicamente que un problema no puede ocurrir por X o Y razon.
Una computadora tiene un numero limitado de estados que se ve influenciado por cosas tan minimas como la electricidad hasta por cosas de alto nivel en un Software como lo es una variable.
Hacer pruebas intensivas a todo esto es muy poco probable debido a que requiere unas habilidades matematicas increibles y un intelecto que va mas alla de lo comun que es un Software hoy en dia.