ابزار توسعه نرم‌افزار

ابزار توسعه نرم‌افزار یا همان ابزار برنامه‌نویسی در واقع یک برنامه کامپیوتری است که توسعه دهندگان نرم‌افزار بمنظور ایجاد، خطایابی، نگهداری یا دیگر پشتیبانی‌های لازم برای برنامه‌ها و نرم‌افزارها ان را بکار می‌برند.
معمولا این لفظ درمورد برنامه‌های ساده بهم مرتبط بکار می‌رود که می‌توانند باهم ترکیب شوند تا یک وظیفه را انجام دهند.
توانایی بکار گیری ابزارهای مولد گوناگون معیاری برای سنجش میزان مهارت یک مهندس نرم‌افزار است.
غالب ابزارهای اولیه و اساسی که در همه جا و بطور مداوم استفاده می‌شوند، ویرایشگر کد (source code editor)، کامپایلر (compiler) و مفسر (interpreter) هستند. اما سایر ابزارها بر اساس زبان برنامه‌نویسی، متدولوژی (روش) توسعه و فرد مهندس ممکن است بیشتر یا کمتر بکار برده شوند و غالبا برای یک وظیفه و کار مستقل و جدا مثل خطا یابی یا تحلیل برنامه (profiler) که میزان فضای برنامه را می‌سنجد یا زمانی که برای اجرا لازم دارد و… استفاده می‌شوند.
ابزارها ممکن است برنامه‌ها را به بخش‌هایی تقسیم کنند و جداگانه ان‌ها را اجرا کنند که اغلب از طریق خط فرمان (command line) انجام می‌گیرد یا ممکن است بخشی از یک برنامه بزرگ به نام یک محیط توسعه یکپارچه (IDE) باشند.
در بسیاری از موارد بویژه در مواردی که کاربری آسان مد نظر باشد تکنیک‌های موقت ساده (ad hoc) به جای ابزارها بکار می‌روند در مواردی مثل چاپ خطا بجای بکاربری خطایاب یا زمان‌بندی دستی برای همه برنامه یا بخشی از کد به جای استفاده از امکان تحلیل برنامه یا ردیابی اشکالات در یک فایل متنی یا یک صفحه گسترده به جای استفاده از یک سیستم ردیاب اشکالات.
تمایز میان ابزارها و برنامه‌ها مبهم و تیره است. برای مثال توسعه دهندگان پایگاه داده‌های ساده را یعنی چیزی مثل یک فایل که شامل لیستی از مقادیر مهم هستند را همیشه بعنوان ابزار بکار می‌برند. درحالی که یک پایگاه داده کامل معمولا یک برنامه مستقل یا نرم‌افزار است.
ابزارهای کامپیوتری کمکی مهندسی نرم‌افزار (case tools) بر روی طراحی و پشتیبانی معماری، تاکید دارند مثل UML. اما معروف‌ترین این ابزارها همان محیط‌های توسعه یکپارچه (IDE) هستند.
لیست ابزارها
ابزارهای نرم‌افزاری در اشکال و فرم‌های مختلف وجود دارند که در زیر لیستی از آنها آمده است:
Binary compatibility ابزاری برای تحلیل است
Bug databases: Comparison of issue tracking systems - شامل سیستم‌های ردیابی خطا هست
ابزارهایی برای ساخت برنامه‌ها هستند: Build automation, List of build automation software
Call graph
Code coverage: Code coverage#Software code coverage tools.
سایت‌هایی برای اشتراک کد:Freshmeat, Krugle, Sourceforge, GitHub. See also Code search engines.
Compilation and linking tools: GNU toolchain, gcc, Microsoft Visual Studio, CodeWarrior, Xcode, ICC
Debuggers: Debugger#List of debuggers. See also Debugging.
Disassemblers: Generally reverse-engineering tools.
Documentation generators: Comparison of documentation generators, help2man, Plain Old Documentation, asciidoc
Formal methods: Mathematical techniques for specification, development and verification
GUI interface generators
Library interface generators: SWIG
Integration Tools
Memory debuggers are frequently used in programming languages (such as C and C++) that allow manual memory management and thus the possibility of memory leaks and other problems. They are also useful to optimize efficiency of memory usage. Examples: dmalloc, Electric Fence, Insure++, Valgrind
Parser generators: Parsing#Parser development software
Performance analysis or profiling: List of performance analysis tool
Revision control: List of revision control software, Comparison of revision control software
Scripting languages: PHP, Awk, Perl, Python, REXX, Ruby, Shell, Tcl
Search: grep, find
Source code Clones/Duplications Finding: Duplicate code#Tools
Source code editor
Text editors: List of text editors, Comparison of text editors
Source code formatting: indent
Source code generation tools: Automatic programming#Implementations
Static code analysis: lint, List of tools for static code analysis
Unit testing: List of unit testing frameworks
محیط توسعه یکپارچه (IDE)
محیط‌های توسعه یکپارچه (IDE) ویژگی‌های ابزارهای مختلف را باهم ترکیب کرده و در یک بسته آورده‌اند. این محیط‌ها انجام وظایف و کارهای خاص را آسان‌تر کرده‌اند مثلا امکان جستجو یک محتوا یا متن در فایل‌های یک پروژه خاص. کاربرد دیگر IDEها در توسعه سطح سازمانی برنامه هاست.
همچنین بعضی از IDEها، مثل eclipse، هم محیطی برای برنامه‌نویسی می‌باشند و هم محیطی برای مستندسازی و هم محیطی برای اجرا و کامپایل برنامه‌ها که مزایای زیادی دارد و فرد را از نصب ابزارهای مختلف با محیط کاربری مختلف و… بی‌نیاز می‌کند.