| توسعه نرم‌افزار |
| --- |
| فعالیت‌های اصلیدر مهندسی نرم‌افزار
* فرایند
* نیازمندی‌ها
* طراحی
* ساخت
* آزمون
* اشکال‌زدایی
* استقرار
* نگهداری
 |
| پارادایم‌ها و مدل‌ها
* چابک
* افزایشی
* پروتوتایپ
* مدل مارپیچی
* آبشاری
 |
| متدولوژی‌ها و چارچوب‌ها
* دواپس
* DSDM
* FDD
* IID
* Kanban
* MDD
* MSF
* PSP
* Scrum
* TSP
* RUP
* مدل وی
* XP
 |
| رشته‌های مورد حمایت
* رشته‌های مورد حمایت
مدیریت پیکربندی
* مستندسازی
* تضمین کیفیت (SQA)
* مدیریت پروژه
* تجربه کاربری
 |
| کاربردهای عملی
* توسعه آزمون محور
* BDD
* CI
* CD
* DDD
* PP
* TDD
 |
| ابزار
* کامپایلر
* اشکال‌زدا
* رخ‌نمانگار
* سازنده رابط کاربری گرافیکی
* مقایسه ابزارهای زبان مدل‌سازی یکپارچه
* محیط توسعه یکپارچه
* Build automation
* Release automation
* Infrastructure as Code
* آزمون
 |
| استانداردها و بدنه‌های دانش
* CMMI
* IEEE standards
* ایزو ۹۰۰۰
* ISO/IEC standards
* SWEBOK
* پم‌باک
* BABOK
 |
| واژه‌نامه‌ها
* هوش مصنوعی
* علوم رایانه
 |
| * ن
* ب
* و
 |

آنجوتا، آی‌دی‌ئی سی و سی++ در محیط گنوم
یک **محیط توسعهٔ یکپارچه** (به انگلیسی: integrated development environment) با کوته‌نوشت **IDE**، نرم‌افزاری است که امکانات کاملی را برای برنامه‌نویسان رایانه جهت توسعهٔ نرم‌افزار فراهم می‌کند. IDE معمولاً از حداقل یک ویرایشگر کد منبع، ساخت ابزارهای اتوماسیون و یک اشکال زدایی تشکیل شده‌است. برخی از IDEها، مانند NetBeans و Eclipse، حاوی کامپایلر، مترجم یا هر دو مورد لازم هستند. دیگران، مانند SharpDevel و Lazarus، چنین کاری نمی‌کنند.

مرز بین IDE و سایر قسمت‌های وسیع‌تر از توسعهٔ نرم‌افزار کاملاً مشخص نیست. گاهی یک سیستم کنترل نسخه یا ابزارهای مختلف برای ساده‌سازی یک رابط کاربری گرافیکی (GUI) یکپارچه شده‌است. بسیاری از IDEهای مدرن همچنین دارای یک مرورگر کلاس، یک مرورگر شیء و یک نمودار سلسله مراتبی کلاس برای استفاده در توسعهٔ نرم‌افزار شی‌گرا هستند.

بررسی اجمالی
------------

IDLE پایتون ورژن ۳.۷ که یک محیط توسعه یکپارچه است.
محیط‌های توسعه یکپارچه به منظور به حداکثر رساندن بهره‌وری برنامه‌نویس با ارائه مؤلفه‌های گره‌دار با رابط‌های کاربری مشابه طراحی شده‌اند. IDEها یک برنامه واحد ارائه می‌دهند که در آن تمام توسعه‌ها انجام می‌شود. این برنامه به‌طور معمول ویژگی‌های بسیاری را برای نویسندگی، اصلاح، کامپایل، راه‌اندازی و اشکال‌زدایی نرم‌افزار ارائه می‌دهد. این با توسعه نرم‌افزار با استفاده از ابزارهای نامربوط، مانند vi, GCC یا make سازگار است.

یک هدف از IDE، کاهش تنظیمات لازم برای تکمیل چندین برنامه توسعه است؛ در عوض همان مجموعه از قابلیت‌های یک واحد منسجم را فراهم می‌کند. کاهش زمان راه‌اندازی می‌تواند بهره‌وری توسعه دهنده را افزایش دهد؛ به خصوص در مواردی که یادگیری استفاده از IDE سریعتر از ادغام دستی و یادگیری همه ابزارهای فردی است. ادغام تنگ‌تر از همه وظایف توسعه پتانسیل بهبود بهره‌وری کلی فراتر از کمک به کارهای تنظیم را دارد. به عنوان مثال، کد را می‌توان در حالی که ویرایش می‌شود به‌طور مداوم تجزیه و تحلیل کرد؛ در صورت معرفی خطاهای نحوی، فیدبک فوری ارائه می‌دهد؛ بنابراین به توسعه دهندگان امکان می‌دهد کد را بسیار سریعتر و راحت‌تر با IDE اشکال‌زدایی کنند.

برخی از IDEها به یک زبان برنامه‌نویسی اختصاصی اختصاص داده شده‌است؛ این امکان را می‌دهد که مجموعه‌ای از ویژگی‌ها که بیشترین تطابق را با الگوی برنامه‌نویسی زبان دارد. با این حال، بسیاری از IDEهای چند زبانه وجود دارد.

در حالی که اکثر IDEهای مدرن گرافیکی هستند، IDEهای مبتنی بر متن مانند Turbo Pascal قبل از در دسترس بودن سیستم‌های پنجره‌ای مانند مایکروسافت ویندوز و X Window System (X11) مورد استفاده رایج قرار می‌گرفتند. آنها برای اجرای دستورها یا ماکروها معمولاً از کلیدهای عملکردی یا کلیدهای مهم استفاده می‌کنند.

تاریخچه
-------

IDE در ابتدا هنگام توسعه از طریق کنسول یا ترمینال امکان‌پذیر شد. سیستم‌های اولیه قادر به پشتیبانی از آنها نبودند، زیرا برنامه‌ها با استفاده از نمودارهای پخش شده، ورود به برنامه‌ها با کارتهای سوراخ دار (یا نوار کاغذی و غیره) پیش از ارسال آنها به کامپایلر ساخته می‌شدند. Dartmouth BASIC اولین زبانی بود که با IDE ایجاد شد (و همچنین اولین کسی بود که هنگام نشستن در مقابل یک کنسول یا ترمینال برای استفاده طراحی شده بود). IDE آن (بخشی از سیستم به اشتراک گذاری زمان Dartmouth) بود. مبتنی بر دستور، و بنابراین به نظر نمی‌رسد بسیار شبیه به IDEهای گرافیکی مبتنی بر منو پس از ظهور رابط کاربری گرافیکی. با این حال، ویرایش، مدیریت پرونده، تلفیق، اشکال زدایی و اجرای را به روشی سازگار با IDE مدرن یکپارچه کرده‌است.

همچنین به ساختار برنامه‌نویسی ساخت یافته از IBM (1974) مراجعه کنید.

Maestro I محصولی از Softlab مونیخ است و نخستین محیط توسعه یکپارچه جهان برای نرم‌افزار بود. مائسترو I برای ۲۲۰۰۰ برنامه‌نویس در سراسر جهان نصب شد. تا سال ۱۹۸۹، ۶۰۰۰ نصب در جمهوری فدرال آلمان وجود داشته‌است. مائسترو مسلماً رهبر جهان در این زمینه در دهه ۱۹۷۰ و ۱۹۸۰ بود. امروز یکی از آخرین Maestro من را می‌توان در موزه فناوری اطلاعات در آرلینگتون یافت.

یکی از اولین IDEها با یک مفهوم افزونه، Softbench بود. در سال 1995 Computerwoche اظهار داشت که استفاده یک IDE توسط توسعه دهندگان به خوبی مورد استقبال قرار نگرفته‌است زیرا این امر در خلاقیت آنها حکمر خواهد زد.

از دسامبر سال ۲۰۱۹، سه IDE که صفحات بارگیری آنها بیشتر در جستجوی آنها قرار گرفته عبارتند از: اکلیپس، اندروید استودیو و مایکروسافت ویژوال استودیو.

مباحث
-----

### برجسته نحو

ویرایشگر IDE معمولاً برجسته سازی نحو را ارائه می‌دهد، می‌تواند ساختارها، کلمات کلیدی زبان و خطاهای نحوی را با رنگ‌های بصری و جلوه‌های فونت نشان دهد.

### تکمیل کد

تکمیل کد یک ویژگی مهم IDE است که برای سرعت بخشیدن به برنامه‌نویسی در نظر گرفته شده‌است. IDEهای مدرن حتی دارای تکمیل کد هوشمند هستند.

### پالایشگاه

IDEهای پیشرفته پشتیبانی از پالایشگاه‌های خودکار را پشتیبانی می‌کنند.

### کنترل نسخه

انتظار می‌رود که یک IDE کنترل نسخه یکپارچه را به منظور تعامل با مخازن منبع فراهم کند.

### اشکال زدایی

IDE همچنین برای اشکال زدایی، با استفاده از یک دیباگر یکپارچه، با پشتیبانی از تعیین نقاط شکست در ویرایشگر، ارائه بصری مراحل و غیره استفاده می‌شود.

### جستجوی کد

IDEها می‌توانند پشتیبانی پیشرفته ای را برای جستجوی کد ارائه دهند: به منظور یافتن اعلامیه‌های کلاس و عملکرد، کاربردها، خواندن یا نوشتن متغیر و میدانی و غیره. IDEها می‌توانند از انواع مختلف رابط کاربری برای جستجوی کد استفاده کنند؛ به عنوان مثال ابزارک‌های مبتنی بر فرم و رابطه‌ای مبتنی بر زبان طبیعی

### برنامه‌نویسی بصری

برنامه‌نویسی ویژوال یک سناریوی استفاده است که در آن به‌طور کلی یک IDE مورد نیاز است. ویژوال بیسیک به کاربران امکان ایجاد برنامه‌های جدید را با حرکت برنامه‌نویسی، بلوک‌های ساختمانی یا گره‌های کد برای ایجاد نمودارهای جریان یا نمودارهای ساختاری می‌دهد که سپس کامپایل شده یا تفسیر می‌شوند. این نمودارها معمولاً مبتنی بر زبان مدل‌سازی یکپارچه هستند.

این رابط با سیستم Lego Mindstorms رواج یافته‌است و توسط تعدادی از شرکت‌ها که مایل به سرمایه‌گذاری بر روی مرورگرهای سفارشی مانند آنچه در موزیلا است، فعالانه مورد سوء استفاده قرار می‌گیرد. KTechlab از کد پویا پشتیبانی می‌کند و یک IDE و شبیه‌ساز محبوب Open Source برای توسعه نرم‌افزار برای میکروکنترلرها است. برنامه‌نویسی ویژوال همچنین وظیفه قدرت برنامه‌نویسی توزیع شده را دارد (به عنوان مثال نرم‌افزار LabVIEW و EICASLAB). یک سیستم برنامه‌نویسی بصری اولیه، حداکثر، پس از طراحی سینت سایزر آنالوگ مدل شد و از 1980s برای توسعه نرم‌افزار عملکرد موسیقی در زمان واقعی استفاده می‌شود. نمونه اولیه دیگر Prograph بود، یک سیستم مبتنی بر dataflow که در ابتدا برای Macintosh توسعه یافته بود. محیط برنامه‌نویسی گرافیکی «انگور» برای برنامه‌ریزی کیت‌های ربات qfix استفاده می‌شود.

این رویکرد همچنین در نرم‌افزارهای ویژه مانند Openlab استفاده می‌شود، جایی که کاربران نهایی می‌خواهند انعطاف‌پذیری یک زبان برنامه‌نویسی کامل، بدون منحنی یادگیری سنتی مرتبط با یک را داشته باشند.

### پشتیبانی از زبان

بعضی از IDEها از چندین زبان پشتیبانی می‌کنند، مانند GNU Emacs مبتنی بر زبان سی و Emacs Lisp و IntelliJ IDEA , اکلیپس، MyEclipse یا NetBeans، همه بر اساس جاوا، یا MonoDevel، مبتنی بر سی‌شارپ یا PlayCode.

پشتیبانی از زبان‌های جایگزین اغلب توسط افزونه‌ها ارائه می‌شود و به آنها امکان می‌دهد همزمان در همان IDE نصب شوند. به عنوان مثال، Flycheck یک برنامه مدرن چک کردن نحو در پرواز برای GNU Emacs 24 با پشتیبانی از ۳۹ زبان است. اکلیپس و Netbeans دارای افزونه‌هایی برای سی / سی پلاس‌پلاس، Ada ,GNAT (به عنوان مثال AdaGIDE)، پرل، پایتون، روبی و پی‌اچ‌پی هستند که براساس برنامه‌های افزودنی فایل، محیط یا تنظیمات پروژه بین اتوماتیک انتخاب می‌شوند.

### نگرش در سیستم عامل‌های مختلف محاسباتی

برنامه نویسان یونیکس می‌توانند ابزارهای خط فرمان POSIX را در یک محیط کامل توسعه، قادر به توسعه برنامه‌های بزرگی مانند هسته لینوکس و محیط آن قرار دهند. [۸] به این معنا، کل سیستم یونیکس به عنوان یک IDE عمل می‌کند. ابزارهای نرم‌افزاری GNU رایگان (مجموعه کامپایلر گنو (GCC)، اشکال زدایی GNU (GDB) و ساخت GNU) در بسیاری از سیستم عامل‌ها از جمله ویندوز در دسترس هستند. فلسفه فراگیر یونیکس «همه چیز یک جریان متنی است» توسعه دهندگان را که از ابزارهای خط فرمان پشتیبانی می‌کنند، قادر به استفاده از ویرایشگرهایی با پشتیبانی از بسیاری از ابزارهای استاندارد ساخت یونیکس و GNU، ساختن IDE با برنامه‌هایی مانند Emacs یا Vim می‌کند. داده نمایشگر اشکال زدایی در نظر گرفته شده‌است به عنوان یک جلو گرافیکی پیشرفته برای بسیاری از ابزارهای استاندارد دیباگر مبتنی بر متن. برخی از برنامه نویسان، مدیریت ساختن فایلها و مشتقات آن را با ابزار ساختن کدهای مشابه که در یک IDE کامل گنجانده شده‌است، ترجیح می‌دهند. به‌عنوان مثال، بیشتر مشارکت کنندگان در پایگاه داده PostgreSQL و GDB را مستقیماً برای ایجاد ویژگیهای جدید استفاده می‌کنند. حتی هنگام ساخت PostgreSQL برای Microsoft Windows با استفاده از Visual C ++، از اسکریپت‌های Perl به جای اینکه به ویژگی‌های IDE تکیه کنید، جایگزینی برای ساخت استفاده می‌شود. برخی از IDEهای لینوکس مانند Geany تلاش می‌کنند تا جلوی گرافیکی را برای عملیات ساخت سنتی ارائه دهند.

در سیستم عامل‌های مختلف ویندوز مایکروسافت، از ابزارهای خط فرمان برای توسعه به ندرت استفاده می‌شود. بر این اساس، بسیاری از محصولات تجاری و غیرتجاری وجود دارد. با این حال، هر یک از طراحی متفاوتی که معمولاً ناسازگاری ایجاد می‌کند، استفاده می‌کنند. اکثر فروشندگان اصلی کامپایلر برای ویندوز هنوز نسخه‌های رایگان ابزار خط فرمان خود، از جمله مایکروسافت (Visual C ++، Platform SDK , .NET Framework SDK، ابزار nmake) را ارائه می‌دهند.

IDE همیشه در محیط‌های Mac OS و MacOS کلاسیک اپل محبوب بوده و قدمت آن به کارگاه برنامه نویسان Macintosh , Turbo Pascal , THINK Pascal و THINK C در اواسط دهه ۱۹۸۰ بازمی‌گردد. در حال حاضر برنامه نویسان macOS می‌توانند بین IDEهای بومی مانند Xcode و ابزارهای منبع بازمانند Eclipse و Netbeans را انتخاب کنند. ActiveState Komodo یک IDE اختصاصی چند زبانه است که در macOS پشتیبانی می‌شود.

هوش مصنوعی
----------

برخی از ویژگی‌های IDE می‌توانند از پیشرفت‌های هوش مصنوعی بهره‌مند شوند. به‌طور خاص، می‌توان اطلاعاتی را از اقدامات IDE در بین توسعه دهندگان جمع‌آوری کرد تا ویژگی‌های IDE را تقویت کنند. به عنوان مثال، یک رویکرد مبتنی بر داده برای تکمیل کد منجر به تکمیل کد هوشمند می‌شود.

محیط توسعه یکپارچه وب
---------------------

یک محیط توسعه یکپارچه وب (Web IDE)، همچنین با عنوان IDE آنلاین یا Cloud IDE شناخته می‌شود، یک IDE مبتنی بر مرورگر است که امکان توسعه نرم‌افزار یا توسعه وب را فراهم می‌کند. از یک مرورگر وب مانند گوگل کروم یا موزیلا فایرفاکس می‌توانید به یک IDE وب دسترسی داشته باشید و یک محیط کار قابل حمل را فراهم کند. یک وب IDE معمولاً شامل همه ویژگی‌های یکسان با یک IDE سنتی یا رومیزی نیست، اگر چه تمام ویژگی‌های اصلی IDE مانند برجسته کردن نحو، معمولاً وجود دارد.

جستارهای وابسته
---------------

* مقایسه محیط‌های یکپارچه توسعه نرم‌افزار
* Wing IDE برای پایتون
* IDLE برای پایتون
* پای‌دو برای پایتون
* Eclipse برای زبان‌های برنامه‌نویسی مانند جاوا-C - C# - پایتون و…

منابع
-----

1. ↑  "Interaktives Programmieren als Systems-Schlager" from *Computerwoche* (German)

* مشارکت‌کنندگان ویکی‌پدیا. «Integrated development environment». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۱۰ ژوئن ۲۰۲۰.

پیوند به بیرون
--------------

|  |  |
| --- | --- |
|  | در ویکی‌انبار پرونده‌هایی دربارهٔ محیط توسعه یکپارچه موجود است. |

لیست IDEهای معروف پایتون

| * ن
* ب
* و
زبان‌های برنامه‌نویسی |
| --- |
| 
* گاه‌شمار

 |
| 
* زبان اسمبلی
* اسکالا
* ای‌پی‌ال
* بیسیک
* سی
* سی++
* سی شارپ
* هسکل
* کوبول
* فورترن
* جاوا
* جاوااسکریپت
* لیسپ
* پرولوگ
* پاسکال
* پرل
* پی‌اچ‌پی
* پایتون
* روبی
* ویژوال بیسیک دات‌نت
* اسمال‌تاک
* **بیشتر...**

 |
| 
* **رده:زبان‌های برنامه‌نویسی**
* **مقایسه**
* **فهرست‌ها**
	+ فهرست زبان‌های برنامه‌نویسی
	+ زبان‌ها بر پایه نوع
	+ بر پایه نسل
	+ زبان‌های غیر انگلیسی

 |

| * ن
* ب
* و
علوم رایانه |
| --- |
| Note: This template roughly follows the 2012 ACM Computing Classification System. |
| سخت‌افزار | 
* برد مدار چاپی
* دستگاه جانبی
* مدار مجتمع
* یکپارچه‌سازی کلان‌مقیاس
* سامانه روی یک تراشه
* رایانش سبز
* خودکارسازی طراحی الکترونیکی
* شتاب‌دهنده سخت‌افزاری

 |
| سازمانسامانه‌های رایانه | 
* معماری رایانه
* سامانه نهفته
* رایانش بی‌درنگ
* اطمینان‌پذیری

 |
| شبکه رایانه‌ای | 
* معماری شبکه
* پروتکل ارتباطات
* سخت‌افزار شبکه
* برنامه‌ریز شبکه
* کارایی شبکه رایانه‌ای
* سرویس شبکه‌ای

 |
| سازمان نرم‌افزار | 
* مفسر
* میان‌افزار
* ماشین مجازی
* سیستم‌عامل
* کیفیت نرم‌افزار

 |
| نظریه زبان‌های برنامه‌نویسیو ابزار توسعه نرم‌افزار | 
* الگو برنامه‌نویسی
* زبان برنامه‌نویسی
* کامپایلر
* زبان خاص دامنه
* زبان مدل‌سازی
* چارچوب نرم‌افزاری
* محیط یکپارچه توسعه نرم‌افزار
* مدیریت پیکربندی نرم‌افزار
* کتابخانه (رایانه)
* مخزن نرم‌افزاری

 |
| توسعه نرم‌افزار | 
* فرایند توسعه نرم‌افزار
* تحلیل نیازمندی‌ها
* طراحی نرم‌افزار
* ساخت نرم‌افزار
* استقرار نرم‌افزار
* تعمیر و نگهداری نرم‌افزار
* تیم برنامه‌نویسی
* نرم‌افزار متن‌باز
* برنامه‌نویسی
* آزمون نرم‌افزار

 |
| نظریه محاسبات | 
* مدل محاسبه
* زبان صوری
* نظریه اتوماتا
* نظریه رایانش‌پذیری
* نظریه پیچیدگی محاسباتی
* منطق در علوم کامپیوتر
* معنی‌شناسی (علوم رایانه)

 |
| الگوریتمها | 
* الگوریتم
* تحلیل الگوریتم‌ها
* کارایی الگوریتمی
* الگوریتم‌های تصادفی
* هندسه محاسباتی

 |
| ریاضیاترایانه | 
* ریاضیات گسسته
* احتمالات
* آمار
* نرم‌افزار ریاضی
* نظریه اطلاعات
* آنالیز ریاضی
* آنالیز عددی

 |
| سامانه اطلاعاتی | 
* پایگاه داده
* ذخیره‌سازی داده رایانه
* سامانه اطلاعات سازمانی
* نرم‌افزار اجتماعی
* سامانه اطلاعات جغرافیایی
* سامانه پشتیبانی تصمیم
* کنترل فرایند
* پایگاه داده چند رسانه‌ای
* داده‌کاوی
* کتابخانه دیجیتال
* سکوی رایانش
* بازاریابی اینترنتی
* وب جهان‌گستر
* بازیابی اطلاعات
* مستندسازی فنی

 |
| امنیت رایانه | 
* رمزنگاری
* روش‌های صوری
* خدمات امنیتی
* سامانه تشخیص نفوذ
* خرابی سخت‌افزار
* امنیت شبکه
* امنیت اطلاعات
* امنیت برنامه

 |
| تعامل انسان و رایانه | 
* طراحی تعاملی
* رایانش اجتماعی
* رایانش فراگیر
* مصورسازی
* دسترس‌پذیری رایانه
* واسط‌های کاربر
* رایانش پوشیدنی

 |
| همروندی | 
* رایانش همزمان
* رایانش موازی
* رایانش توزیع‌شده
* چندریسمانی
* چندپردازشی

 |
| هوش مصنوعی | 
* پردازش زبان‌های طبیعی
* بازنمود دانش
* بینایی رایانه‌ای
* برنامه‌ریزی خودکار
* بهینه‌سازی
* نظریه کنترل
* فلسفه هوش مصنوعی
* هوش مصنوعی توزیع شده
* استدلال خودکار
* زبان‌شناسی رایانشی
* یادگیری ماشین

 |
| یادگیری ماشین | 
* یادگیری با نظارت
* یادگیری بی‌نظارت
* یادگیری تقویتی
* یادگیری چند-وظیفه‌ای
* روش اعتبارسنجی متقابل

 |
| گرافیک رایانه‌ای | 
* پویانمایی رایانه‌ای
* رندرینگ (گرافیک رایانه‌ای)
* روتوش
* واحد پردازش گرافیکی
* واقعیت ترکیبی
* واقعیت مجازی
* فشرده‌سازی تصویر
* مدلسازی جامد

 |
| رایانشکاربردی | 
* تجارت الکترونیک
* نرم‌افزار سازمانی
* ریاضیات محاسباتی
* فیزیک محاسباتی
* شیمی محاسباتی
* زیست‌شناسی محاسباتی
* علوم اجتماعی محاسباتی
* مهندسی و علم محاسبه
* انفورماتیک پزشکی
* هنر دیجیتال
* نشر الکترونیک
* جنگ مجازی
* رأی‌گیری الکترونیکی
* بازی ویدئویی
* واژه‌پرداز
* تحقیق در عملیات
* فناوری آموزشی
* سامانه مدیریت اسناد

 |
| توجه: بنا بر سامانه رده‌بندی رایانش ای‌سی‌ام علم رایانه همچنین می‌تواند به موضوع‌ها یا زمینه‌های گوناگون تقسیم شود.
* **کتاب:علوم رایانه**
* **رده:علوم رایانه**
* **طرح کلی علوم رایانه**
* **ویکی‌پدیا:ویکی‌پروژه علوم رایانه**
* **ویکی‌انبار**
 |