Una herramienta de programación o herramienta de desarrollo de software es un programa informático que los desarrolladores de software utilizan para crear, depurar, mantener o dar soporte a otros programas y aplicaciones. El término suele referirse a programas relativamente sencillos, que pueden combinarse para realizar una tarea, de forma muy similar a como se pueden utilizar varias manos para arreglar un objeto físico. Las herramientas más básicas son un editor de código fuente y un compilador o intérprete , que se utilizan de forma ubicua y continua. Otras herramientas se utilizan más o menos según el lenguaje, la metodología de desarrollo y el ingeniero individual, y a menudo se utilizan para una tarea discreta, como un depurador o un generador de perfiles. Las herramientas pueden ser programas discretos, ejecutados por separado (a menudo desde la línea de comandos ) o pueden ser partes de un único programa grande, llamado entorno de desarrollo integrado (IDE). En muchos casos, en particular para un uso más sencillo, se utilizan técnicas ad hoc sencillas en lugar de una herramienta, como la depuración de impresión en lugar de utilizar un depurador, la sincronización manual (del programa general o de una sección de código) en lugar de un generador de perfiles, o el seguimiento de errores en un archivo de texto o una hoja de cálculo en lugar de un sistema de seguimiento de errores.
La distinción entre herramientas y aplicaciones es confusa. Por ejemplo, los desarrolladores utilizan bases de datos simples (como un archivo que contiene una lista de valores importantes ) todo el tiempo como herramientas. [ dudoso – discutir ] Sin embargo, una base de datos completa suele considerarse una aplicación o software por derecho propio. Durante muchos años, se buscaron herramientas de ingeniería de software asistida por computadora (CASE). Las herramientas exitosas han demostrado ser esquivas. En cierto sentido, las herramientas CASE enfatizaban el soporte de diseño y arquitectura, como para UML. Pero las más exitosas de estas herramientas son los IDE.
Usos de herramientas de programación
Traducción del lenguaje humano al lenguaje informático
Las computadoras modernas son muy complejas y, para programarlas de manera productiva, se necesitan varias abstracciones. Por ejemplo, en lugar de escribir la representación binaria de un programa, un programador escribirá un programa en un lenguaje de programación como C, Java o Python. Las herramientas de programación como ensambladores , compiladores y enlazadores traducen un programa de un lenguaje fuente legible y escribible por humanos a bits y bytes que pueden ser ejecutados por una computadora. Los intérpretes interpretan el programa sobre la marcha para producir el comportamiento deseado.
Estos programas realizan muchas tareas bien definidas y repetitivas que, sin embargo, consumirían mucho tiempo y serían propensas a errores si las realizara un humano, como por ejemplo, diseñar partes de un programa en la memoria y corregir las referencias entre partes de un programa como lo hace un enlazador. Por otro lado, los compiladores optimizadores pueden realizar transformaciones complejas en el código fuente para mejorar la velocidad de ejecución u otras características de un programa. Esto permite que un programador se concentre más en aspectos conceptuales de nivel superior de un programa sin preocuparse por los detalles de la máquina en la que se ejecuta.
Poner la información del programa a disposición de los humanos
Debido a la alta complejidad del software, ni siquiera el desarrollador de software más experimentado puede comprender la mayoría de los programas a simple vista. Las abstracciones que proporcionan los lenguajes de programación de alto nivel también dificultan la comprensión de la conexión entre el código fuente escrito por un programador y el comportamiento real del programa. Para encontrar errores en los programas y evitar la creación de nuevos errores al ampliar un programa, un desarrollador de software utiliza algunas herramientas de programación para visualizar todo tipo de información sobre los programas.
Por ejemplo, un depurador permite a un programador extraer información sobre un programa en ejecución en términos del lenguaje fuente utilizado para programarlo. El depurador puede calcular el valor de una variable en el programa fuente a partir del estado de la máquina concreta utilizando la información almacenada por el compilador. Los depuradores de memoria pueden señalar directamente accesos a la memoria cuestionables o totalmente erróneos de programas en ejecución que, de otro modo, podrían pasar desapercibidos y son una fuente común de fallos de los programas.
Lista de herramientas
Las herramientas de software vienen en muchas formas:
- Herramientas de análisis de compatibilidad binaria
- Bases de datos de errores : comparación de sistemas de seguimiento de problemas , incluidos los sistemas de seguimiento de errores
- Herramientas de compilación: automatización de compilación , lista de software de automatización de compilación
- Gráfico de llamadas
- Cobertura de código § Software .
- Revisión de código : Lista de herramientas para la revisión de código
- Sitios para compartir código: Freshmeat , Krugle , SourceForge , GitHub . Véase también Motores de búsqueda de código .
- Herramientas de compilación y vinculación : GNU toolchain , gcc , Microsoft Visual Studio , CodeWarrior , Xcode , ICC
- Depuradores : Depurador#Lista de depuradores . Véase también Depuración .
- Desensambladores : Generalmente herramientas de ingeniería inversa .
- Generadores de documentación : Comparación de generadores de documentación , help2man, Plain Old Documentation , asciidoc
- Métodos formales : técnicas matemáticas para la especificación, desarrollo y verificación
- Generadores de interfaces GUI
- Generadores de interfaces de biblioteca: SWIG
- Herramientas de integración
- Los depuradores de memoria se utilizan con frecuencia en lenguajes de programación (como C y C++ ) que permiten la gestión manual de la memoria y, por lo tanto, la posibilidad de fugas de memoria y otros problemas. También son útiles para optimizar la eficiencia del uso de la memoria. Ejemplos: dmalloc , Electric Fence , Insure++ , Valgrind
- Generadores de analizadores : análisis sintáctico#Software de desarrollo de analizadores sintácticos
- Análisis o elaboración de perfiles de rendimiento: Lista de herramientas de análisis de rendimiento
- Control de revisión : Lista de software de control de revisión , Comparación de software de control de revisión
- Lenguajes de programación : PHP , AWK , Perl , Python , REXX , Ruby , Shell , Tcl
- Buscar: grep , find
- Código fuente Clones/Duplicaciones Búsqueda: Código duplicado#Herramientas
- Editor de código fuente
- Formato del código fuente : sangría , impresoras bonitas , embellecedores , minificadores
- Herramientas de generación de código fuente : Programación automática#Implementaciones
- Análisis de código estático : lint , Lista de herramientas para el análisis de código estático
- Pruebas unitarias: lista de marcos de pruebas unitarias
IDE
Los entornos de desarrollo integrados combinan las características de muchas herramientas en un solo paquete. Por ejemplo, facilitan la realización de tareas específicas, como la búsqueda de contenido únicamente en archivos de un proyecto en particular. Los IDE pueden utilizarse, por ejemplo, para el desarrollo de aplicaciones de nivel empresarial.
En esta comparación de entornos de desarrollo integrados se pueden encontrar diferentes aspectos de los IDE para lenguajes de programación específicos .
Véase también
- Herramientas de ingeniería de software asistidas por computadora
- Ciencias de la Computación
- Sistema de configuración
- Lenguaje de script
- Kit de desarrollo de software
- Ingeniería de software y lista de temas de ingeniería de software
- Sistemas de software
- Kits de herramientas para la innovación del usuario
- Experiencia de desarrollador
Referencias
- Taller sobre herramientas de desarrollo de software para computación a petaescala 2007
- Kernighan, Brian W .; Plauger, PJ (1976), Herramientas de software , Addison-Wesley, págs. 352, ISBN 0-201-03669-X
Enlaces externos
Medios relacionados con Herramientas de programación en Wikimedia Commons