payamvha/North_RAG huggingface dataset:
یک مقبره قرار دارد که گفته می‌شود مربوط به مکت از خاندان دوازدهم سلطنت بوده‌است. پایه و زیربنای دو مجسمه. در فاصله ۷ کیلومتری شهر فیوم در روستای «بیهمو» دوپایه و زیربنای ساخته شده از سنگهای جلا داده شده قرار دارد، این دو را شاه «امنمحات دوم» برای قرار دادن دو مجسمه بزرگ از خودش و همسرش در حال تماشای دریاچه مویس قدیمی (قارون) هستند، ساخته‌است. ارتفاع این دو مجسه بالغ بر۳۰ متر و ارتفاع این دوپایه و زیربنا ۴ متر بوده‌است.
نصیر حیدریان موسیقی‌دان و رهبر ارکستر اهل ایران، که از فروردین ماه سال ۱۴۰۴ رهبر دائم ارکستر سمفونیک تهران میباشد. او همچنین از مرداد ماه سال ۱۴۰۱ تا مهر ماه ۱۴۰۲ رهبر دائم ارکستر سمفونیک تهران بود. زندگی‌نامه. نصیر حیدریان راستی در تهران متولد شد و اولین گام موسیقی خود را در سن شش سالگی همزمان با تحصیل در مدرسه موسیقی گذاشت و در هنرستان موسیقی مشغول به تحصیل در رشته ساز ترومبون و تئوری موسیقی شد. وی پس از دریافت دیپلم در رشته ساز ترومبون به نوازنده در ارکستر سمفونیک تهران فعالیت خود را آغاز نمود و به مدت
سمفونیک تهران فعالیت خود را آغاز نمود و به مدت دو سال در کنار کار اصلی خود، به عنوان رهبر و سرپرست گروه کر ارکستر سمفونیک تهران نیز فعالیت داشت. نصیر حیدریان سالها بعد جهت ادامه تحصیل راهی کشور اتریش شد و در دانشگاه موسیقی و هنرهای نمایشی شهر وین، رشته ساز ترومبون را زیر نظر Horst Küblböck ادامه داد و در سال ۱۹۹۱ تا ۱۹۹۷ میلادی در دانشگاه موسیقی شهر گراتز تحصیل خود را در رشته رهبری ارکستر زیر نظر استادانی همچون Martin Turnovsky,Arturo Tamayo , Wolfgang Bosic ادامه داد. وی در سال ۱۹۹۹ موفق به دریافت جایزه
ادامه داد. وی در سال ۱۹۹۹ موفق به دریافت جایزه Die Richard Wagner Stipendienstiftung شد و پس از اتمام تحصیل و در یافت دیپلم رهبری، سرپرستی چندین ارکستر و آنسامبل را به عهده گرفت. وی در سال ۱۹۹۷ تا ۲۰۰۳ در اپرای شهر گراتز به عنوان رهبر ارکستر مهمان قطعات اپرایی مختلفی را رهبری نمود. همچنین اجرا در سایر شهرهای اروپا چون اجرای اپرا با ارکستر سمفونیک بازل Sinfonieorchester Basel، اجرای اپرا به عنوان دستیار بیت فورر با اپرای زوریخ Opernhaus Zürich، اپرای بن Opernhaus Bonn، ارکستر تالار بتهوون شهر بن Orchester
Bonn، ارکستر تالار بتهوون شهر بن Orchester der Beethovenhalle Bonn و ارکستر مجلسی مونیخ Münchner Kammerorchester، ارکستر جوانان ونزوئلا Youth Symphony Orchestra Venezuela، ارکستر جوانان جهان World Youth Orchestra و دستیار بیت فورر در اجرای آثار معاصر آهنگسازان اسپانیایی با آنسامبل موسیقی معاصر بارسلون و … را در کارنامه خود دارد. وی در سال ۲۰۰۳ در اپرای شهر گراتز اپرای پر چالش و پر آوازه Puch and Judy اثرHarrison Birtwistle و همچنین قطعه Begehren اثر را به عنوان رهبر ارکستر به روی صحنه برد که این اجرا در
عنوان رهبر ارکستر به روی صحنه برد که این اجرا در همان سال به نوشته مجله Opernwelt «دنیای اپرا» در سال ۲۰۰۳ به عنوان بهترین اجرا در سال لقب گرفت. وی در تابستان سال ۲۰۱۵ برای بر گزاری مسترکلاسهای رهبری عازم کشور کره شد و در مهر ماه سال ۱۳۹۴ به عنوان رهبر ارکستر میهمان به ایران دعوت شد و اپرای عاشورا اثر بهزاد عبدی را به روی صحنه برد و همچنین در آبان ماه ۱۳۹۵ به همراه ارکستر سمفونیک تهران در کشور چین در افتتاحیه جشنواره موسیقی شرکت نمود و در تیر ماه همان سال به همراه ارکستر جوانان جهان به عنوان رهبر ارکستر
به همراه ارکستر جوانان جهان به عنوان رهبر ارکستر سمفونیک تهران از کشور ایتالیا در جشنواره موسیقی فجر به همراهی ارکستر سمفونیک تهران در تالار وحدت به روی صحنه رفت. حیدریان بهمن ماه ۱۳۹۷ در سی و چهارمین جشنواره موسیقی فجر به عنوان رهبر مهمان با ارکستر رتوریک به روی صحنه رفت و اردیبهشت ماه ۱۳۹۸کنسرتو ساکسوفون اریک لارسون را با همراهی گرالد پرین فالک (سولیست ساکسوفون اهل اتریش) و سمفونی شماره سه مندلسون را به عنوان رهبر مهمان با ارکستر سمفونیک تهران اجرا کرد. نصیر حیدریان از سال ۲۰۰۳ به عنوان استاد دانشگاه در
حیدریان از سال ۲۰۰۳ به عنوان استاد دانشگاه در رشته رهبری ارکستر در درانشگاه موسیقی و هنرهای نمایشی شهر گراتز فعالیت دارد و سرپرستی ارکسترهایی همچون ارکستر بادی، موسیقی فیلم را به عهده دارد و در کنار کار اصلی و هنری خود، مستر کلاس‌های رهبری متعددی را در کشور اتریش، کره جنوبی و ایران برگزار می‌نماید. منابع. https://www.nassir-heidarian.at/ https://musiceiranian.ir/108032-mu-531.html https://www.yjc.ir/fa/news/5609738/غرور-ملی-ما-را-در-چین-نجات-می‌دهد http://www.navayefars.com/content/4531
http://www.navayefars.com/content/4531 https://www.mehrnews.com/news/2942380/علی-رهبری-را-فراری-ندهید-صداهای-آشنای-داغدار-سید-الشهدا-ع https://www.isna.ir/news/95050107966/نوازندگان-ارکستر-جوانان-جهان-و-سمفونیک-تهران-تمرین-کردند https://taranemusic.com/به-رهبری-نصیر-حیدریان-نخستین-تمرین-ارک/ http://www.musicema.com/node/251624 http://www.iscanews.ir/news/667119/نصیر-حیدریان:-در-انتخاب-رهبر-ارکستر-باید-سختگیرانه-عمل-کرد
کوه نانلائود با بلندا بلندترین مکان در ایالات فدرال میکرونزی و ایالت پوناپی و آبخوست پوناپی است. در نقشه‌برداری مکان‌نگاری با مقیاس ۱:۲۵,۰۰۰ سازمان زمین‌شناسی آمریکا به این کوه اشاره شده است. کوه نانلائود در بخش جنوبی آبخوست در مرز بین شمال خاوری کیتی و جنوبی‌ترین بخش نت قرار دارد. بلندترین کوه در میکرونزی کوه آگریهان با بلندا و دومین کوه بلند در این منطقه نانلائود است. در کیلومتر جنوب خاور نانلائود کوه بلند دیگری به نام «نیگنِنی» قرار دارد. سومین کوه بلند در پوناپی، دولوموار یا تُتُلُم با متر بلندا است.
در پوناپی، دولوموار یا تُتُلُم با متر بلندا است. دولوموار در فاصله کیلومتر امتداد کناری نیگنِنی قرار دارد.
ابرار حسین (۹ فوریهٔ ۱۹۶۱ – ۱۶ ژوئن ۲۰۱۱) یک بوکسور سبک‌وزن متوسط اهل پاکستان بود. حسین نماینده ورزش بوکس پاکستان در المپیک تابستانی ۱۹۸۴، ۱۹۸۸ و ۱۹۹۲ بود. در بازی‌های جنوب آسیا ۱۹۸۵ او مدال طلا را از داکا بنگلادش برای پاکستان به‌دست‌آورد و نیز در بازی‌های آسیایی ۱۹۹۰ حسین مدال طلا را برای پاکستان به‌دست‌آورد. سرگذشت. حسین متولد ۹ فوریهٔ ۱۹۶۱ (میلادی) در منطقهٔ مهرآباد واقع در کویتهٔ پاکستان در یک خانوادهٔ متعلق به گروه قومی هزاره و شیعه بود. او در روز ۱۶ ژوئن ۲۰۱۱ (میلادی) توسط دو فرد ناشناخته مسلح
۱۶ ژوئن ۲۰۱۱ (میلادی) توسط دو فرد ناشناخته مسلح موتورسیکلتسوار در جنوب غرب شهر کویته پاکستان کشته شد. گفته شده‌است که دلیل قتل او تعصبات مذهبی اسلامی بوده‌است.
جورج اولیور پلانکت (؛ – ) یک جمهوریخواه و عضو سازمان داوطلبان ایرلندی بود. او به همراه برادر بزرگترش جوزف پلانکت و برادر جوانتر او جان پس از قیام عید پاک ۱۹۱۶ به اعدام محکوم شدند، اما احکام اعدام جورج و جان لغو شد. وی در سال ۱۹۱۷ از زندان آزاد شد و در جنگ استقلال ایرلند جنگید و در جنگ جهانی دوم رئیس ستاد IRA بود.
زکی رستم (؛ – ) هنرپیشه اهل مصر بود. از فیلم‌ها یا برنامه‌های تلویزیونی که وی در آن نقش داشته‌است می‌توان به "مبارزه در دره"، "عشق و اشک‌ها" اشاره کرد.
حقوق بشر در مکزیک () به اصول اخلاقی یا هنجارها اشاره دارد که استانداردهای خاصی از رفتار انسان در مکزیک را توصیف می‌کنند. مشکلات موجود عبارتند از شکنجه، قتل‌های غیرقانونی و اعدام‌های سریع، سرکوبی پلیس و اخیراً ترور خبرنگاران مطبوعات. گزارش‌های دیده‌بان حقوق بشر. دیده‌بان حقوق بشر گزارش می‌دهد که از سال ۲۰۰۶ نیروهای امنیتی مکزیک سربه نیست کردن افراد را گسترش داده‌اند. همچنین گفته می‌شود که نیروهای امنیتی مکزیک قتل غیرقانونی شهروندان را به میزان قابل ملاحظه‌ای بالا برده‌اند و به‌طور گسترده‌ای از شکنجه، ضرب و
بالا برده‌اند و به‌طور گسترده‌ای از شکنجه، ضرب و شتم، القاء غرق شدگی، شوک الکتریکی و سوء استفاده جنسی به عنوان ابزارهایی برای کسب اطلاعات از قربانیان بازداشت شده، بکار می‌برند. علاوه‌براین، گزارش می‌دهد حملاتی که مقامات یا سازمانهای تبهکار به روزنامه‌نگاران مرتکب می‌شوند، آنها را مجبور به خودسانسوری می‌کند. این گزارش همچنین مشکلات مربوط به کودکان مهاجر غیرقانونی، حقوق زنان و دختران، هویت جنسیتی و حقوق معلولین را متذکر می‌شود. دولت و مبارزه با قاچاق مواد مخدر. در جریان مبارزه دولت با جرایم سازمان یافته
مخدر. در جریان مبارزه دولت با جرایم سازمان یافته مربوط به مواد مخدر، نیروهای امنیتی مرتکب تخلفات حقوق بشری شده‌اند که شامل قتل‌های غیرقانونی، ناپدید شدن افراد و شکنجه بازداشت شدگان می‌باشد. تلاش‌های محدودی برای بررسی و محاکمه این سوءاستفاده‌ها صورت گرفته‌است.
پردیس سینمایی آرامش رامسر یک سینما در شهر رامسر، ایران است. این سینما که در مرکز خرید آرامش رامسر قرار دارد در سال ۱۳۹۶ با دو سالن تأسیس شده‌است.
نگهداری نرم‌افزار در مهندسی نرم‌افزار به معنی اصلاح یک محصول نرم‌افزاری «پس از تحویل» آن است، و هدف این فعالیت آن است که برای بهبود کارایی، و دیگر ویژگی‌های نرم‌افزار، خطاهای موجود در آن را تصحیح کند. گرایشی از مهندسی نرم‌افزار است که شامل نگهداری و اصلاح یک محصول نرم‌افزاری پس از تحویل است به منظور تصحیح اشکالات پیش‌آمده و بهبود عملکرد یا ویژگی‌های دیگر آن نرم‌افزار. یک دید متعارف نسبت به تعمیر و نگهداری نرم‌افزار این است که آن را صرفا شامل رفع نقصهای نرم‌افزاری بدانیم، اما یک مطالعه نشان داده‌است که بیش
بدانیم، اما یک مطالعه نشان داده‌است که بیش از ۸۰٪ از فعالیت‌های مربوط به تعمیر و نگهداری نرم‌افزار مرتبط با اقدامات اصلاحی نیست. این دید متعارف توسط کاربرانی که مشکلی در نرم‌افزار گزارش می‌دهند که در واقعیت بهبودهایی بر کارایی نرم‌افزار هستند تقویت می‌شود. مطالعات جدیدتر درصد فعالیت‌های مربوط به تعمیر و نگهداری نرم‌افزار که مرتبط با رفع اشکال هستند را نزدیک به ۲۱٪ گزارش کرده‌اند. تاریخچه. نگهداری نرم‌افزار و تکامل سیستم‌ها برای اولین بار توسط Meir M. Lehman در سال ۱۹۶۹ میلادی مورد بررسی قرار گرفت. طی یک
در سال ۱۹۶۹ میلادی مورد بررسی قرار گرفت. طی یک دوره بیش از بیست ساله، تحقیقات او منجر به تدوین قوانین لیمن (لیمن ۱۹۹۷) شد. یافته‌های کلیدی تحقیقات وی شامل این است که تعمیر و نگهداری نرم‌افزار در واقع توسعه تکاملی آن است و نگهداری نرم‌افزار در واقع از درک آنچه برای سیستم (نرم‌افزار) در طول زمان اتفاق می‌افتد در تصمیم‌گیری کمک می‌گیرد. لیمن نشان داد که سیستم در طول زمان همچنان در حال تکامل است. آن‌ها در تکامل و رشد خود در طی زمان پیچیده‌تر می‌شوند مگر اینکه برخی از اقدامات مانند کد refactoring به منظور کاهش
از اقدامات مانند کد refactoring به منظور کاهش پیچیدگی صورت پذیرد. در اواخر دهه ۱۹۷۰ یک بررسی گسترده و معروف طی یک مطالعه توسط Lientz و Swanson انجام شد که در آن از سهم زیاد هزینه‌های تعمیر و نگهداری در هزینه‌های چرخه حیات یک نرم‌افزار پرده برداشته شد. آن‌ها فعالیت‌های تعمیر و نگهداری را به چهار کلاس طبقه‌بندی کردند: این بررسی نشان داد که حدود ۷۵٪ از فعالیت‌های تعمیر و نگهداری صرف دو نوع اول شد و اصلاح خطاها حدود ۲۱٪ از فعالیت‌های مربوط به تعمیر و نگهداری را به خود اختصاص داد. بسیاری از مطالعات بعدی نتایج
به خود اختصاص داد. بسیاری از مطالعات بعدی نتایج مشابهی را نشان می‌دهند. مطالعات نشان می‌دهد که مشارکت کاربر نهایی بسیار مهم است و در جمع‌آوری داده‌ها و نیازمندی‌های جدید و تجزیه و تحلیل آن‌ها نقش مهمی ایفا می‌کند، و این علت اصلی هر گونه مشکل در تکامل و تعمیر و نگهداری نرم‌افزار است؛ بنابراین تعمیر و نگهداری نرم‌افزار مهم است چرا که بخش بزرگی از کل هزینه‌های چرخه حیات نرم‌افزار را به خود اختصاص می‌دهد و همچنین عدم توانایی در ایجاد تغییر در نرم‌افزار با سرعت و قابلیت اعتماد مناسب به این معنی است که فرصت‌های
و قابلیت اعتماد مناسب به این معنی است که فرصت‌های کسب و کار از دست می‌روند. اهمیت تعمیر و نگهداری نرم‌افزار. کلید نگهداری نرم‌افزار توجه به مسائل مربوط به هر دو زمینه مدیریتی و فنی است. کلید مدیریت مسائل عبارتند از: هم‌ترازی و همراهی با مشتری، ایجاد اولویت‌هایی برای نیروی انسانی، برآورد صحیح هزینه‌ها. کلید حل مسائل فنی عبارتند از: برطرف کردن محدود درک، تأثیر، تحلیل، تست، نگهداری و اندازه‌گیری. تعمیر و نگهداری نرم‌افزار فعالیت بسیار گسترده‌ای است که شامل تصحیح خطا و پیشرفت قابلیت‌های نرم‌افزار و بهینه‌سازی
خطا و پیشرفت قابلیت‌های نرم‌افزار و بهینه‌سازی آن است. از آنجایی که تغییر اجتناب ناپذیر است، مکانیسم‌های مورد استفاده باید امکان ارزیابی و کنترل و ایجاد تغییرات را داشته باشند. بنابراین هر کاری که به منظور تغییر نرم‌افزار انجام می‌شود بخشی از عملیات تعمیر و نگهداری نرم‌افزار در نظر گرفته می‌شود و هدف آن حفظ ارزش نرم‌افزار در طول زمان می‌باشد. ارزش نرم‌افزار را می‌توان با گسترش پایه مشتری (Customer Base) آن افزایش داد و این امر نیازمند تبدیل شدن نرم‌افزار به حالتی است که برای استفاده کارآمدتر باشد و
به حالتی است که برای استفاده کارآمدتر باشد و فناوری‌های جدید در آن به کار گرفته شوند. تعمیر و نگهداری ممکن است در طول ۲۰ سال رخ دهد در حالی که توسعه ممکن است مجموعاً ۱–۲ سال طول بکشد. برنامه‌ریزی تعمیر و نگهداری نرم‌افزار. بخشی جدایی ناپذیر از نرم‌افزارها تعمیر و نگهداری آنهاست که نیازمند تهیه برنامه‌ای دقیق برای تعمیر و نگهداری آن در طول فرایند توسعه نرم‌افزار است. باید مشخص کنید که چگونه به درخواست‌های تغییر یا گزارش مشکلات کاربران پاسخ خواهید داد. بودجه فعالیت‌ها باید شامل تخمینی از منابع مورد نیاز و
فعالیت‌ها باید شامل تخمینی از منابع مورد نیاز و هزینه‌های آتی باشد تا دچار مشکل نشویم. تعمیر و نگهداری نرم‌افزار که می‌تواند برای ۵–۶ سال (یا حتی دهه‌ها پس از فرایند توسعه نرم‌افزار) ادامه داشته باشد نیازمند یک طرح مؤثر است که بتواند دامنه کاری نرم‌افزار را تعیین کند و زمینه را برای ارائه برآوردی از هزینه‌های چرخه زندگی نرم‌افزار فراهم کند. انتخاب استانداردهای مناسب جهت به چالش کشیدن اقدامات بعدی روی نرم‌افزار از مرحله اولیه مهندسی نرم‌افزار است که از دید سهامداران نگران دارای اهمیت بسزایی است. فرایندهای
سهامداران نگران دارای اهمیت بسزایی است. فرایندهای تعمیر و نگهداری نرم‌افزار. این بخش توصیف شش گام فرایند تعمیر و نگهداری نرم‌افزار را عنوان می‌کند: عوامل تعمیر و نگهداری. تأثیر عوامل مؤثر کلیدی بر نگهداری (طبقه‌بندی شده به ترتیب حداکثر تأثیر مثبت به پایین) نه تنها ماژول‌های مستعد خطا آزاردهنده و مشکل‌ساز هستند بلکه بسیاری از دیگر عوامل نیز می‌توانند موجب تنزل عملکرد بیش از پیش سیستم نیز بشوند. برای مثال "اسپاگتی کد" یک تکه کد بسیار پیچیده‌است که نگهداری مطمئن و ایمن آن کاملاً دشوار است. یک پیش‌آمد بسیار
و ایمن آن کاملاً دشوار است. یک پیش‌آمد بسیار معمول است که اغلب تنزل‌های عملکردی سیستم ناشی از عدم استفاده از ابزارهای نگهداری مناسب است همانند ابزارهای ردیابی نقص، ردیابی تغییر نرم‌افزار، نرم‌افزار مدیریت و تست نرم‌افزار. باید برای استفاده از این ابزارها اهتمام نمود.
توسعهٔ آزمون‌محور (به انگلیسی: Test-driven development) یک فرایند توسعهٔ نرم‌افزاری است که بر پایه تکرار یک سری دوره‌های خیلی کوتاه توسعه قرار دارد: ابتدا برنامه‌نویس یک مورد آزمایشی (در ابتدا دارای شکست) برای بهبود مطلوب یا ایجاد قابلیت جدید می‌نویسد، سپس کمترین مقدار تغییرات کدی را که باعث قبول شدن آزمایش می‌شود می‌نویسد، سپس کد جدید را با استانداردهای قابل قبول سازماندهی مجدد می‌کند. یک مهندس نرم‌افزار آمریکایی به نام کنت بک، که توسعه یا «بازکشف» این روش را به وی نسبت می‌دهند، در سال ۲۰۰۳ اظهار داشت که
را به وی نسبت می‌دهند، در سال ۲۰۰۳ اظهار داشت که TDD طرح‌های ساده و الهام بخش اعتماد به نفس را تشویق می‌کند. Test-driven development مربوط به مفاهیم آزمون-برای اولین بار (test-first programming concepts) برنامه‌نویسی و شدید برنامه‌نویسی (extreme programming) است که در سال ۱۹۹۹ مطرح شد اما اخیراً علاقه بیشتری را نسبت به خود ایجاد کرده‌است. برنامه نویسان همین‌طور می‌توانند این مفهوم را برای بهبود و اشکال زدایی کد میراث تهیه شده با روش‌های قدیمی تر به کار گیرند. در این روش، نرم‌افزار به‌صورت تدریجی توسعه
گیرند. در این روش، نرم‌افزار به‌صورت تدریجی توسعه می‌یابد. ابتدا تست‌ها و سناریوهای آزمونی تعریف می‌شوند که بر اساس نیازمندی‌ها و اهداف مشتریان تعیین می‌شوند. سپس، با نوشتن کدی ساده که تست‌ها را برآورده کند، پروسه توسعه آغاز می‌شود. در این مرحله، کد نوشته شده تنها کافیست تا تست‌ها با موفقیت اجرا شوند و همچنین ممکن است کد اولیه به صورت موقتی باشد. سپس، با ادغام قطعات کد جدید و با تضمین عبور تست‌ها، کد قابل اجرا و نهایی تولید می‌شود. این روند تکرار می‌شود تا نرم‌افزار به صورت کامل و با تمامی ویژگی‌ها و
تا نرم‌افزار به صورت کامل و با تمامی ویژگی‌ها و تست‌ها توسعه یابد. استفاده از توسعه مبتنی بر آزمون برای بهبود کیفیت و قابلیت اطمینان نرم‌افزارها و افزایش سرعت توسعه بهره‌مندی‌های قابل توجهی دارد. مطالعات و پژوهش‌های انجام شده نشان می‌دهند که استفاده از توسعه مبتنی بر آزمون منجر به کاهش خطاها، اشکالات و باگ‌های نرم‌افزار، افزایش کیفیت و عملکرد آن، کاهش هزینه‌های ناشی از خطاها و تست‌های دستی و افزایش رضایت کاربران می‌شود. یکی از مزیت‌های توسعه مبتنی بر آزمون، امکان شناسایی و رفع مشکلات نرم‌افزار در مراحل
امکان شناسایی و رفع مشکلات نرم‌افزار در مراحل ابتدایی توسعه است. با تعریف تست‌ها و سناریوهای آزمون، احتمال وقوع خطاها و نقص‌ها در نرم‌افزار کاهش می‌یابد و توسعه‌دهندگان قادر به شناسایی و رفع این مشکلات در مراحل زودهنگام هستند. این امر باعث می‌شود که هزینه و زمان موردنیاز برای تصحیح خطاها در مراحل بعدی توسعه کاهش یابد و در نتیجه نرم‌افزار با کیفیت‌تر و پایدارتری تحویل داده شود. همچنین، توسعه مبتنی بر آزمون به توسعه‌دهندگان امکان می‌دهد تا روند توسعه را بهبود دهند و تغییرات در نرم‌افزار را با اطمینان و کاهش
دهند و تغییرات در نرم‌افزار را با اطمینان و کاهش احتمال وقوع خطاها اعمال کنند. با اجرای تست‌ها در هر مرحله از توسعه، تأیید می‌شود که تغییرات و بهبودهای اعمال شده در نرم‌افزار به عنوان انتظاری که دارند عمل می‌کنند و هیچ اثر غیرمنتظره‌ای در سایر قسمت‌های نرم‌افزار ایجاد نمی‌شود. با توجه به مزایای مذکور و مطالعات انجام شده در زمینه توسعه مبتنی بر آزمون، این روش به عنوان یک روش مؤثر در توسعه نرم‌افزار، با توجه به شواهد علمی و مزایای آن، بسیار مورد توجه قرار گرفته‌است. چرخه توسعه آزمون محور. چرخه توسعه آزمون
چرخه توسعه آزمون محور. چرخه توسعه آزمون محور یک فرایند توسعه نرم‌افزار است که متکی بر تکرار یک چرخه توسعه بسیار کوتاه است که طی آن نیازمندی‌ها تبدیل به موارد آزمون بسیار خاص می‌شوند و سپس نرم‌افزار به قدری بهبود بخشیده می‌شود که فقط بتواند تست‌های مطرح شده را پاس کند. این روند مخالف نحوه توسعه سنتی نرم‌افزار است که اجازه می‌دهد تا بخش‌هایی به نرم‌افزار اضافه شود که هنوز تست‌های لازم را نگذرانده‌است و سپس آن بخش‌های جدید را تست می‌کند. توسعه آزمون محور، بر مبنای نوشتن آزمون (Test) برای نرم‌افزار بر اساس
مبنای نوشتن آزمون (Test) برای نرم‌افزار بر اساس نیازمندی‌ها (requirements) قبل از نوشتن برنامه شکل گرفته‌است. در این فرایند هدف توسعه دهنده معطوف به گذراندن این تست‌ها می‌شود. ابتدا چون برنامه خالی است، تمامی آزمون‌ها باید با عدم موفقیت رو به رو شوند، اما برنامه‌نویس گام به گام برای هر ویژگی (feature) این آزمون‌ها را پشت سر می‌گذارد که اگر در هر مرحله موفقیت‌آمیز نبود، بازمی‌گردد و کد را دیباگ می‌کند. البته باید توجه داشت که در متدولوژی TDD علاوه بر آزمون‌های گام به گام نیازمند آزمون‌های موازی مستقل نیز
گام به گام نیازمند آزمون‌های موازی مستقل نیز هستیم. چرخه کلی روش توسعه آزمون محور شامل گام‌هایی به ترتیب زیر است که بر اساس کتاب "Test-Driven Development by Example" نوشته شده‌است: ۱. یک تست جدید بنویس. در روش توسعه آزمون محور هر ویژگی جدید با افزودن یک تست شروع می‌شود. طبیعی است این تست باید طوری طراحی شود که تنها با افزوده شدن صحیح و کامل ویژگی جدید مطلوب پاس شود. ۲. تمام تست‌ها را اجرا کن و ببین آیا تست جدید پاس می‌شود یا خیر. در این مرحله قصد داریم مطمئن شویم تست جدیدی که افزودیم خطا بدهد، وگرنه با
شویم تست جدیدی که افزودیم خطا بدهد، وگرنه با افزودن کد جدید امکان اینکه چک شود ویژگی جدید واقعاً به درستی افزوده شده‌است یا خیر وجود نخواهد داشت. ۳. کد را بنویس. در این گام تنها کد اضافه ای که نیاز هست تا تست جدید پاس شود را می‌نویسیم و به زیاده روی در توسعه نمی‌پردازیم. ۴. مجدداً تست‌ها را اجرا کن. این بار اگر تمام تست‌ها پاس شوند مطمئن می‌شویم که تمام ویژگی‌های قبلی به درستی کار می‌کنند و علاوه بر آن ویژگی جدید نیز به‌طور صحیح اضافه شده‌است. ۵. کد را Refactor کن. روشن است که کد کل برنامه باید هر چند وقت
کن. روشن است که کد کل برنامه باید هر چند وقت یک بار تمیز و مرتب شود تا از ایجاد کد کثیف اجتناب شود و امکان بهبود مناسب و سریع در آینده فراهم باشد. در این گام قصد داریم دقیقاً همین کار را انجام دهیم. در این گام به‌طور ویژه لازم است به ملاحظات توسعه همانند رعایت وراثت و خوانایی و امکان نگهداری مناسب کد و الگوهای طراحی برنامه توجه داشته باشیم. ۶. گام‌های ۱ الی ۵ را (برای هر ویژگی جدید که اضافه می‌کنی) تکرار کن. برای هر ویژگی جدید گام‌های فوق را تکرار می‌کنیم. اصول کلیدی توسعه آزمون محور. TDD که در بین
اصول کلیدی توسعه آزمون محور. TDD که در بین برنامه‌نویسان به دلیل توانایی خود در افزایش بهره‌وری، کیفیت نرم‌افزار و قابلیت نگهداری شهرت دارد، بر سه اصل اساسی بنا شده‌است. این اصول شامل مفاهیم Test-First، توسعه incremental و تست مکرر است. روش Test-First: در TDD، تست‌ها نقشی محوری در سراسر فرایند توسعه دارند. آن‌ها به عنوان ناوبر عمل می‌کنند و کل سفر را هدایت می‌کنند. هر چرخه توسعه با ایجاد یک تست که عملکرد مورد نظر را تعریف می‌کند، آغاز می‌شود. TDD از چارچوب‌های تست خودکار استفاده می‌کند و آزمایش را در هر
تست خودکار استفاده می‌کند و آزمایش را در هر زمان معین تسهیل می‌کند. این امکان بازخورد دقیق و سریع در مورد رفتار برنامه را فراهم می‌کند. توسعه incremental: با پذیرش توسعه incremental، پروژه‌ها به‌طور طبیعی به اجزای کوچک‌تر و قابل مدیریت‌تر تقسیم می‌شوند. این رویکرد تمرکز برنامه‌نویس را بر روی مشکل در دست، افزایش می‌دهد و در عین حال فرصت‌هایی را برای برنامه‌ریزی بهتر و توسعه برتر فراهم می‌کند. تست مکرر: تست مکرر بازخورد ارزشمندی را در رابطه با نیازمندی‌های اجرا شده به برنامه‌نویسان ارائه می‌دهد. این به تشخیص
شده به برنامه‌نویسان ارائه می‌دهد. این به تشخیص زودهنگام عیوب کمک می‌کند و احتمال انتشار آن‌ها را کاهش می‌دهد. در نهایت، این مورد، منجر به افزایش سطح کیفیت و بهره‌وری می‌شود. TDD با دریافت بازخورد سریع از طریق تست، به نوشتن کد تمیز برای پیاده‌سازی یک نیازمندی کمک می‌کند. برای توسعهٔ مبتنی بر آزمون دو قانون تعریف شده‌است: ۱- همیشه فقط در صورت شکست یک تست، برای آن کد بنویسید: این قانون بر اهمیت نوشتن یک تست شکست‌خورده قبل از پیاده‌سازی هر عملکرد جدید یا ایجاد تغییرات در کد موجود تأکید می‌کند. ایده این است که
تغییرات در کد موجود تأکید می‌کند. ایده این است که با ایجاد یک مورد آزمون (test case) شروع کنید که رفتار یا ویژگی مورد نظری که می‌خواهید پیاده‌سازی کنید را تعریف می‌کند. از آن‌جایی که شما هنوز هیچ کدی ننوشته‌اید، تست با شکست مواجه خواهد شد. این موضوع، تضمین می‌کند که شما یک هدف مشخص و دقیق برای پیاده‌سازی دارید. با پیروی از این قانون، یک حلقه بازخورد ایجاد می‌کنید که در آن به‌طور مداوم تلاش می‌کنید تا با نوشتن حداقل مقدار کد لازم، تست شکست‌خورده را پاس کنید. پس از گذراندن تست، می‌توانید به مورد آزمون بعدی
پس از گذراندن تست، می‌توانید به مورد آزمون بعدی بروید یا کد خود را با اطمینان خاطر بازآرایی کنید و بدانید که هیچ مشکل جانبی ناخواسته‌ای برای خود ایجاد نکرده‌اید. ۲- همیشه تکراری را حذف کنید: این قانون توسعه‌دهندگان را تشویق می‌کند تا هر گونه افزونگی یا تکرار را در پایگاه کد خود حذف کنند. هنگامی که متوجه الگوهای تکراری یا منطق مشابه در تست‌ها یا کد تولیدی خود می‌شوید، استخراج و انتزاع آن‌ها به اجزا یا توابع reusable، مهم است. تکرار در کد می‌تواند منجر به مشکلات متعددی شود، مانند افزایش تلاش برای حفاظت و
مشکلات متعددی شود، مانند افزایش تلاش برای حفاظت و نگهداری، احتمال بیش‌تر وجود خطاها و کاهش خوانایی کد. با حذف موارد تکراری، طراحی و ساختار کلی پایگاه کد خود را بهبود می‌بخشید و آن را قابل نگهداری، خواناتر و مستعد به خطای کم‌تری می‌کنید. اعمال این قانون نه تنها به حذف تکرار در یک تست یا فایل کد، بلکه به شناسایی الگوهای رایج در چندین تست یا ماژول نیز گسترش می‌یابد. این دو قانون با هم کار می‌کنند تا فرایند توسعه را در TDD هدایت کنند. با تمرکز بر نوشتن تست‌های شکست‌خورده، ابتدا مطمئن می‌شوید که کد شما
تست‌های شکست‌خورده، ابتدا مطمئن می‌شوید که کد شما نیازمندی‌های مورد نظر را برآورده می‌کند. به‌طور هم‌زمان، با حذف تکراری‌ها، پایگاه کد خود را قابل مدیریت‌تر و قابل درک‌تر می‌کنید که منجر به توسعهٔ بهتر می‌شود. با توجه به این دو قانون، توسعهٔ مبتنی بر آزمون را می‌توان به عنوان یک مدل توسعهٔ iterative تعریف کرد که در آن برنامه‌نویس موارد آزمون را قبل از نوشتن کد با استفاده از نیازمندی‌ها استخراج می‌کند. سپس کدی برای افزایش عملکردی کوچک نوشته می‌شود تا در تست پاس شود و در صورت شکست تست، کد می‌تواند به‌طور
پاس شود و در صورت شکست تست، کد می‌تواند به‌طور مکرر برای افزایش کیفیت و طراحی مجدداً تغییر داده شود. مزایای توسعه آزمون محور. یک مطالعه در سال ۲۰۰۵ به این نتیجه رسید که استفاده از روش توسعه آزمون محور به معنی نوشتن تعداد بیشتری تست هست و برنامه‌نویسانی که تعداد بیشتری تست می‌نویسند (برخلاف تصور عموم) بازدهی بیشتری دارند. همین‌طور برنامه‌نویسانی که از روش توسعه آزمون محور بهره می‌بردند گزارش کردند که به تعداد دفعات کمتری نیاز به استفاده از Debugger در کار خود داشتند، که این امر به نوبه خود موجب بهبود و
خود داشتند، که این امر به نوبه خود موجب بهبود و افزایش بهره‌وری آنها می‌شود. چنین کاهشی در تعداد دفعات نیاز به استفاده از Debugger طبیعی به نظر می‌رسد، چرا که هر گام از توسعه و هر ویژگی جدیدی که به برنامه افزوده می‌شود خود همراه با تست در محل می‌باشد و تا زمانی که تست مربوطه و تمام تست‌های پیشین برنامه پاس نشوند به مرحله بعد نمی‌رویم. همین‌طور گزارش شده‌است که در روش توسعه آزمون محور هرگاه به خطایی برخورد کنیم معمولاً بازگشت به آخرین نسخه بدون خطا و شروع مجدد کار بهینه تر از استفاده از Debugger است که این
کار بهینه تر از استفاده از Debugger است که این امر عملاً نیاز به دیباگ کردن کد و هزینه‌های مالی و زمانی نگهداری و تعمیر کد را کاهش می‌دهد. از ویژگی‌ها و مزیت‌های دیگر این متدولوژی می‌توان موارد زیر را نام برد: ۱. بررسی کامل‌تر در ابتدا. این فرایند باعث می‌شود قبل از نوشتن برنامه، به جنبه‌های مختلف نیازمندی‌ها فکر کنیم و مواردی که روش‌های موجود می‌توانند شکست بخورند را بررسی کرده و در داخل آزمون‌ها در نظر بگیریم. ۲. متمرکز کردن اهداف. برنامه‌نویس هدف خود را با داشتن آزمون‌ها به روشنی می‌داند و می‌توانند
را با داشتن آزمون‌ها به روشنی می‌داند و می‌توانند صرفاً با تمرکز بر روی همین آزمون‌ها، از یک هدف و نیازمندی مبهم خود را دور کند. ۳. کاهش هزینه‌ها در نهایت. ممکن است TDD در ابتدا پرهزینه به نظر بیاید، اما به دلیل این که فرایند آزمون مرحله به مرحله و برای بخش‌های مختلف برنامه و بر اساس نیازمندی‌های مورد نیاز است، احتمال وارد شدن هزینه سنگینی که به خاطر عدم تطابق برنامه با نیازها پرداخت خواهد شد کاهش میابد ۴. توسعه گام به گام. در بسیاری از موارد پیش آماده که برنامه را کامل نوشتیم و بعد به آزمون آن پرداختیم و