زبان‌های خاص دامنه بنا به تعریف به زبان‌هایی گفته می‌شود که حیطه خاصی از محاسبات را هدف گرفته‌اند. این زبان‌ها اگر به درستی انتخاب و به‌کاربرده شوند، می‌توانند در حوزه کاربردی خود، کدهای پیچیده­ زبان‌های دیگر را به کدهای ساده و خوانا تبدیل کرده، ارتباط مؤثرتر با مشتریان را فراهم کرده، بهره‌وری را بالاتر برده و گلوگاه‌های فرایند کد نویسی را از بین ببرند. این زبان‌ها معمولاً کوچک هستند و بر جنبه خاصی از یک سیستم نرم‌افزاری متمرکزشده‌اند. با این زبان‌ها نمی‌توان یک برنامه کامل نوشت، بلکه معمولاً در یک سیستم نرم‌افزاری که خودش با یک زبان همه منظوره نوشته شده است، از چندین زبان خاص دامنه استفاده می‌شود (تفکر برنامه‌نویسی زبان گرا) [۶].
برای کارشناسان دامنه ساده­تر است که از زبان­های خاص دامنه استفاده کنند تا از زبان­های خصوصیات رسمی، همچنین دقت بالاتر در زبان­های خاص دامنه نسبت به زبان‌های طبیعی، ساخت ابزار را برای آن آسان تر می‌کند و این ساده شدن به کمک محدود کردن زبان­های خاص دامنه به دامنه­ خط محصول نرم‌افزار در حال توسعه به دست آمده است [۷].

(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))

به رغم این‌که مدت مدیدی از پدیدار شدن زبان­های خاص دامنه می‌گذرد، اما فقدان دانش برنامه‌نویسی با این زبان‌ها مانع بزرگی در توسعه و فراگیری آن‌ها است و به همان میزان در کاهش سرعت و بهره‌وری پروژه‌های خاص نرم‌افزاری مؤثر است. معمولاً بر استفاده از زبان­های خاص دامنه به عنوان لایه‌ای روی یک کتابخانه معمولی تأکید فراوانی شده است. به این ترتیب، برنامه‌نویس این دو مورد را باهم پیش برده و روش‌هایی را نیز در زمینه تولید کد[۱۲] یاد خواهد گرفت [۸].
در بسیاری از زبان­های خاص دامنه برای رسیدن به درک آن‌ها نیاز به مهارت­ های برنامه­نویسی است و توسط متخصصین حرفه‌ای فناوری اطلاعات و نرم‌افزار در کارهای روزانه، ساختار و سیستم­های حفظ و مدیریت استفاده می­ شود. آن‌ها برای یک جنبه فنی ویژه از توسعه سیستم خاص هستند؛ بنابراین حوزه­ CSS[13] به عنوان یک زبان­ خاص دامنه و به طور کلی توسعه وب و به خصوص سبک نگارش و طرح­بندی است. بسیاری از توسعه­دهندگان وب از یک پس زمینه طراحی گرافیکی شروع و تبدیل به متخصصینی به عنوان کد نویسان HTML، CSS و جاوا اسکریپت می­شوند، تنها به این دلیل که این کار به آن‌ها کنترل ریزدانه‌ی بهتری در فرایند طراحی می­دهد. بسیاری از طراحان گرافیک، به همین دلیل، در نهایت خود را به گونه ­ای در می­یابند که برای بهتر شدن کد از ابزارهای گرافیکی مانند دریم­ویور[۱۴] اجتناب می­ کنند. هدف در زندگی این نیست که همه به یک کد نویس تبدیل شوند. با اینکه بسیاری از زبان­های خاص دامنه در قلمرو برنامه­نویس باقی می­مانند، موارد بسیاری وجود دارند که در آن یک زبان خاص دامنه که به خوبی طراحی ‌شده، می ­تواند با سایر کسانی که در فرایند توسعه سهم دارند، به غیر از توسعه‌دهندگان حرفه­ای استفاده شود. در برخی موارد، زبان­های خاص دامنه می­توانند آن­هایی که در فرایند توسعه سهم دارند را قادر سازند باعث به وجود آمدن قسمت­ هایی از سیستم شوند به گونه‌ای که این قسمت ­ها را قادر سازند که خودشان، خود را کد نویسی کنند. در موارد دیگر، زبان­ خاص دامنه می ­تواند یک نمایش از سیستم شود که به اشتراک گذاشته شده است. اگر هدف یک زبان خاص دامنه ویژه، پیاده‌سازی قوانین کسب‌وکار است، به صورت ایده­آل، آن زبان خاص دامنه باید قانون کسب‌وکار را به گونه‌ای بیان کند که هم ذینفعان کسب‌وکار که آن را مشخص کرده‌اند و هم برنامه­نویسی که آن را نوشته است وقتی آن را می­خوانند به طور واضح آن را درک کنند [۹].
در اصل، زبان خاص دامنه یک نام جدید برای چیزی است که ما هر روز در زندگی برنامه­نویسی حرفه‌ای خود از آن استفاده می­کنیم. برنامه ­های کاربردی زیادی وجود ندارند که بتوانند به طور کامل در یک زبان همه منظوره واحد نوشته شوند. به این ترتیب ما همه‌روزه مصرف‌کنندگان تعداد زیادی از زبان­های خاص دامنه مختلف هستیم که هر کدام از آن­ها مختص یک هدف خاص است. اصطلاح زبان­ خاص دامنه فقط چند سال است که وجود دارد. این اصطلاح یک زبان برنامه­نویسی را توصیف می­ کند که مختص یک دامنه­ مسئله‌ی خاص است. زبان­های خاص دامنه مدت زمان زیادی است که در اطراف ما هستند. یکی از ویژگی­های هیجان‌انگیز یونیکس همیشه زبان­های مینی آن بوده است. زبان­های خاص دامنه شامل مجموعه ­ای غنی از زبان­های حروف‌چینی (troff, eqn, pic)، ابزارهای shell(awk, sed and so on) و ابزارهای توسعه نرم­افزار (make, yacc, lex) می­شوند. [۱۰]
۲-۵-۱ طراحی و پیاده‌سازی زبان خاص دامنه
زبان­های خاص دامنه اشکال مختلفی دارند. برخی از زبان­های خاص دامنه، مانند مینی زبان‌های یونیکس (sed awk, troff)، ساختاری نحوی دارند که برای آن زبان خاص، یکتا است. برای اجرای چنین زبان­های خاص دامنه­ای، باید قادر به تجزیه این ترکیب نحوی به چیزی غیر از فایل­های متنی بود که حاوی کد منبع آن زبان خاص باشد تا بتوان زبان خاص دامنه خود را در این سبک (که شامل پیاده­سازی یک مترجم کوچک است که از lexing و ابزار تجزیه مانند LEX، YACC و یا antlr استفاده می­ کند)، پیاده­سازی کرد [۵].
نوشتن مترجم یک مهارت خاص است که خارج از مجموعه مهارت­ های اکثر گروه ­های توسعه نرم‌افزار است. نوشتن تجزیه کننده‌ای اختصاصی و یا مترجم دستور زبان، نیازمند تلاش قابل‌توجهی است، مگر اینکه زبان خاص دامنه بخواهد به صورت کلی استفاده شود که این فراتر از محدوده­ بسیاری از زبان­های خاص دامنه خاص برنامه است.
بسیاری از زبان­های خاص دامنه که استفاده می­شوند، در زبان­های دیگر جاسازی‌شده‌اند. نمونه­ آن اکثر ­ اسکریپت­های پیکربندی XML در پلت فرم جاواست. این مینی زبان­های خاص دامنه بر پشت نحو XML سوار شده ­اند و به صورت اختیاری می­توانند از یک تعریف شِما[۱۵] برای تعریف نحو خاص خودشان استفاده کنند.
۲-۵-۲ انواع زبان‌های خاص دامنه
زبان­های خاص دامنه به سه دسته اصلی تقسیم می­شوند: زبان­های خاص دامنه خارجی، زبان­های خاص دامنه داخلی و میز کار زبان[۱۶]: [۶]
زبان خاص دامنه خارجی، یک زبان جدا از زبان اصلی برنامه­ی کاربردی است که برنامه با آن کار می­ کند و معمولاً یک نحو سفارشی دارد، اما استفاده از نحو یک زبان دیگر نیز رایج است (XML انتخابی مکرر است). یک اسکریپت، زبان خاص دامنه خارجی است که معمولاً توسط یک کد در برنامه­ی میزبان بررسی و تفسیر خواهد شد (با بهره گرفتن از فنون تجزیه متن). سنت­ یونیکس با زبان­های کوچک، مطابق با این سبک است. نمونه­هایی از زبان­های خاص دامنه خارجی عبارت‌اند از عبارات منظم، SQL، AWK و فایل­های پیکربندیXML برای سیستم­هایی مانندStruts و هایبرنیت.
زبان خاص دامنه داخلی روشی خاص برای استفاده از یک زبان همه منظوره است. یک اسکریپت در یک زبان خاص دامنه داخلی، کدی معتبر در زبان همه منظوره­­ی خود است، اما تنها از یک زیرمجموعه از ویژگی­های این زبان در یک سبک خاص استفاده می­ کند که جنبه­ کوچکی از سیستم کلی را لمس می­ کند. نتیجه باید به جای اینکه زبان میزبان خود را نشان دهد، احساس یک زبان سفارشی را بدهد. مثال کلاسیک این سبک، لیسپ[۱۷] است. برنامه­نویسان لیسپ اغلب از این برنامه­نویسی به عنوان ایجاد و استفاده از زبان­های خاص دامنه یاد می­ کنند. روبی[۱۸] نیز فرهنگی قوی برای زبان خاص دامنه دارد. بسیاری از کتابخانه­ های روبی به سبک زبان­های خاص دامنه هستند. به طور خاص، معروف‌ترین چارچوب روبی، یعنی ریلز[۱۹]، اغلب به عنوان مجموعه ­ای از زبان­های خاص دامنه دیده می­ شود.
میز کار زبان یک محیط توسعه یکپارچه تخصصی برای تعریف و ایجاد زبان­های خاص دامنه می­باشد. به طور خاص، یک میز کار زبان فقط برای تعیین ساختار یک زبان خاص دامنه استفاده نمی­ شود بلکه به عنوان یک محیط ویرایش سفارشی برای مردم استفاده می­ شود که اسکریپت­های زبان­های خاص دامنه را بنویسند. اسکریپت­های به دست آمده محیط ویرایش و زبان را صمیمانه باهم ترکیب می­ کنند [۶].
هنگامی که صحبت از زبان­های خاص دامنه باشد، تصور می­ شود ساخت زبان خاص دامنه کاری دشوار است. در واقع، معمولاً کار سخت، ساخت مدل است. زبان­های خاص دامنه پس از آن فقط در بالای آن لایه­بندی می­شوند. هنوز تلاش لازم است تا زبان خاص دامنه­ای به دست آورد که خوب کار کند، اما این تلاش معمولاً از تلاشی که برای ساخت مدل اساسی می­ شود بسیار کمتر است. [۱۱]
به طور کلی به زبان­های خاص دامنه به این صورت اشاره شد که آن­هایی که با نحو منحصربه‌فرد خود پیاده‌سازی شده ­اند، به عنوان زبان­های خاص دامنه خارجی معرفی می­شوند و زبان­های خاص دامنه که در نحو یک زبان میزبان پیاده­سازی شده ­اند، جاسازی‌شده،­ و یا زبان­های خاص دامنه داخلی هستند. در حالت ایده آل، هر زمان یک زبان خاص دامنه جدید ساخته شد، بهترین چیز می ­تواند این باشد که به آن نحو یکتا و فردی خودش داده شود؛ بنابراین می‌توان ساختارهای زبانی تعریف کرد که هم با دامنه مسئله طراحی ‌شده‌اند و هم با مخاطبان هدف در ذهن [۵].
اگر کاربری که برای زبان خاص دامنه در نظر گرفته شده است، غیر برنامه‌نویس باشد، توسعه یک نحو بر پایه­ XML می ­تواند مشکل‌ساز باشد. XML در باز و بسته شدن و درست خاتمه دادن به برچسب­ها دارای قوانین خاص خود است که برای هر کس به جز یک برنامه­نویس، محرمانه به نظر می­رسد. در هنگام کار با زبان­های خاص دامنه که جاسازی‌شده/داخلی در زبان دیگر هستند، یک محدودیت طبیعی وجود دارد. یک زبان خاص دامنه مبتنی برXML نمی­تواند کمک کند که شبیه به XML باشد.
با توجه به محدودیت­های زبان میزبان، زبان­های خاص دامنه جاسازی‌شده/داخلی، هرگز به اندازه­ای که یک زبان خاص دامنه خارجی سفارشی آزاد است، آزاد نخواهند بود. خوشبختانه، زبان­های خاص دامنه مبتنی بر گرووی، قادرند در قالبی ساختار دهی شوند که برای انسان خواناتر است. با این حال، آن‌ها همیشه نیاز دارند تا از نحوی که به خوبی شکل گرفته است، استفاده کنند و همیشه در هنگام طراحی زبان­های خاص دامنه مبتنی بر گرووی که برای مخاطبانتان قابل خواندن هستند، وضعیت رو به مصالحه پیش می­رود.
با بهره گرفتن از برنامه­نویسی زبان گرا، هدف باید ساخت زبان­های خاص دامنه­ای باشد که می­توانند توسط همه ذینفعان خوانده و درک شوند. به این ترتیب، این زبان­های خاص دامنه باید تبدیل به خصوصیات به اشتراک گذاشته­ی زندگی سیستم شوند، حتی اگر در پایان آن­ها ضرورتاً باید توسط یک برنامه­نویس با درک فنی زبان­های خاص دامنه نوشته شوند.
با اینکه زبان­های خاص دامنه، بسیاری از چالش­های فعلی توسعه نرم افزار را حل می­ کنند، ادبیات مربوطه ادعا می­ کند که زبان­های خاص دامنه معمولاً یک ایراد دارند و آن تلاش­ های بالای مورد نیاز برای پیاده­سازی و استفاده از آنهاست. با این حال، زبان­های خاص دامنه داخلی با تلاش کمتری توسعه می­یابند، چرا که بر روی یک زبان برنامه نویسی موجود ساخته شده و می­توانند از تمام زیرساخت­های زبان که شامل مفسر، کامپایلر، و یا مترجم می­ شود، استفاده کنند. [۱۲]
۲-۶ گرووی[۲۰]، زبان میزبان
جاوا و پلت فرم جاوا با همه چارچوب‌ها و کتابخانه‌های آن، در حال حاضر به یک جهان همه‌جانبه برای توسعه‌دهنده نرم‌افزار تبدیل شده است. ماشین مجازی جاوا بر روی همه چیز قابل‌اجراست، از بزرگ‌ترین پردازنده مرکزی گرفته تا کوچک‌ترین ریزتراشه و هر برنامه­ی کاربردی قابل تصوری را پشتیبانی می­ کند. برای اولین بار وسعت کل حوزه نرم‌افزار، از بازی‌های تلفن همراه بر روی تلفن گرفته تا مأموریت برنامه ­های سازمانی حیاتی، توسط این پلت فرم زبان پشتیبانی می­شوند.
تاکنون، زبان برنامه‌نویسی جاوا جایگاه خود را به عنوان زبان برنامه‌نویسی استاندارد پلت فرم جاوا، به دست آورده است. این زبان به مدت تقریباً نه سال، نیازهای برنامه‌نویسان را به بهترین شکل ممکن برطرف کرده است، اما جاوا نمی‌تواند و نباید تمام نیازهای همه گروه‌های برنامه‌نویسان را که پروژه‌ها و اهداف متفاوتی را دنبال می‌کنند برآورده سازد. چرا که زبانی با این مشخصات بخش بزرگی از قابلیت‌های خود را به نفع پاسخ‌گویی به همه کاربران از دست می‌دهد و تضعیف می‌شود. زبان جاوا مانند زبان­های‌C++‌ ، ‌C#، به شدت ساخت یافته است. این نوع زبان‌ها که گاه زبان‌های قراردادی نامیده می‌شوند، برای حل بسیاری از مسایل مناسب هستند اما پاسخگوی همه مشکلات نیستند. زبان‌های قراردادی بسیار نکته‌سنج و خرده‌گیر هستند به این معنی که کوچک‌ترین اشکال در نوشتن برنامه، ترجمه کردن کد را ناممکن می‌سازد. اگرچه این دقت بیش از حد، نتیجه اجرای کد را قابل پیش‌بینی می‌سازد، اما از سوی دیگر از سرعت کار برنامه‌نویس می‌کاهد.‌
در هنگام توسعه با جاوا، به خاطر در دسترس بودن کتابخانه ­ها و یا چارچوب­ها هرگز محدودیتی وجود ندارد. مسلماً تنها محدودیتی که باقی می­ماند خود زبان است؛ مانند تمام زبان­های شیءگرای سنتی، حتی جاوا نیاز به حجم زیادی متن استاندارد و تنظیم صحنه در هنگام برنامه­نویسی دارد. در جاوا، به عنوان یک زبان همه منظوره، هیچ مسئله‌ای وجود ندارد که نتوان یک راه حل برای آن کد کرد. گاهی اوقات، با این حال، بهتر است راه­حل در شکل کوتاه­تری از کد بیان شود که توسط زبان­های پویایی مانند روبی و پایتون[۲۱] پشتیبانی می­ شود [۵].
با آمدن این زبان­ها و بعدها زبان­های اسکریپتی پویا یا دینامیک (دینامیک معنی گسترده­ای دارد، به شکل خلاصه می­توان گفت توانایی گسترش نحو و یا پشتیبانی یک فناوری در سطح زبان نه رابط برنامه کاربردی و یا نوع دهی خودکار) مثل روبی نیاز به افزوده شدن امکانات جدید به دستور زبان جاوا هر روز بیشتر و بیشتر احساس می­ شود. مخصوصاً اینکه رقیب تجاری جاوا یعنی .Net با پشتیبانی از تعدادی زبان برنامه­نویسی برای پلت فرم آن، در برنامه­نویس­ها ایجاد کشش می­ کند. همان طور که اشاره شد اضافه کردن موارد جدید به جاوا مثل چیزهایی که در C یا C ++ و یا روبی و غیره هست با فلسفه وجودی جاوا سازگار نیست [۱۳].
اکنون زمان آن رسیده است که پلت فرم جاوا یک زبان سریع را برای پیشبرد اهداف خود به کار گیرد. جواب جاوا به این تناقضات (ارائه امکانات جدید جالب و جذاب و ایجاد زبانی به غیر از جاوا برای برنامه­نویسی پلت فرم جاوا در مقابل فلسفه و مدل پیشرفت و مقاومت­هایی که در مقابل امکانات جدید هست) و به شکل استاندارد و مورد تأیید سان، گرووی است. گرووی اکنون زمینه لازم برای این کار را دارد و‌ نشان‌دهنده یک دوران جدید برای پلت فرم جاوا است. دورانی که در آن جامعه­ برنامه­نویسان جاوا از گوناگونی و تنوع ایجادشده بهره فراوانی خواهند برد و قادر به استفاده از تمام پتانسیل‌های پلت فرم جاوا هستند. تشخیص هوشمندانه این مسئله که جاوا چیزی بیش از یک زبان برنامه‌نویسی است و درک این نکته که پلت فرم جاوا قدرت کافی برای اینکه چند زبان همزمان روی آن کار کنند و به حیات خود ادامه دهند را دارد، از عوامل مهم در موفقیت طرح ایجاد زبان گرووی هستند. امروزه زبان‌های متعددی برای اجرا روی ماشین مجازی جاوا طراحی ‌شده‌اند. گرووی به این دلیل بهترین انتخاب است که از پایه و اساس برای پلت فرم جاوا طراحی شده است. از سوی دیگر، دستور زبان آن برای توسعه‌دهندگان برنامه‌های جاوا آشناست. گرووی برخی از بهترین ویژگی­های پایتون، روبی و اسمالتاک[۲۲] را پیاده‌سازی می‌کند. جیتون[۲۳] و جی‌روبی نمونه‌های بسیار درخشانی از پشتیبانی پلت فرم جاوا از دیگر زبان‌های برنامه‌نویسی موجود هستند. با این وجود جیتون و جی‌روبی تنها درگاه‌هایی[۲۴] هستند که ارتباط جاوا را با زبان‌های دیگر ممکن می‌سازند. دستور زبان این درگاه‌ها برای طراحان جاوا ایجاد نشده است و حتی مجموعه کتابخانه‌های استفاده‌شده برای پیاده‌سازی آن‌ها با آنچه که برای برنامه‌نویسی جاوا استفاده می‌شود متفاوت است. در مقابل گرووی برای توسعه‌دهندگان جاوا طراحی شده است و پایه و اساس آن بر مبنای رابط­های برنامه کاربردی استاندارد پلت فرم جاوا استوار است [۱۴].
گرووی، یک زبان شیء‌گرا است که برای پلت فرم جاوا نوشته شده است. گرووی زبانی پویاست و ویژگی‌هایی مشابه پایتون، روبی، پرل[۲۵] و اسمالتاک دارد. همچنین می‌تواند بعنوان یک زبان اسکریپت­‌نویسی برای پلت فرم جاوا استفاده شود. دستور زبان گرووی مشابه جاوا است و کدها درون کروشه قرار می‌گیرند. این کدها به صورت بایت کد ترجمه می‌شوند و سپس توسط ماشین مجازی جاوا اجرا می‌شوند. کدهای گرووی می‌توانند به سادگی با دیگر کدهای جاوا و همچنین با کتابخانه‌های جاوا کار کنند. از دیگر ویژگی­های مترجم گرووی این است که می‌تواند بایت کدهای استاندارد جاوا تولید کند. به این ترتیب کدهای گرووی را می‌توان در هر پروژه جاوا مورد استفاده قرارداد. بیشتر کدهای جاوا در مترجم گرووی شناخته می‌شوند. به این ترتیب انتقال کد بین دو زبان بسیار ساده است. توضیحات کامل­تر در ضمیمه‌ی یک ذکر شده است.
۲-۷ آزمون نرم‌افزار
اهمیت آزمایش نرم‌افزار و اثرات آن بر کیفیت نرم‌افزار نیاز به تأکید بیشتری ندارد. داچ[۲۶] دراین‌باره این‌گونه بیان می­نماید:
توسعه سیستم­های نرم‌افزاری شامل یک سری فعالیت‌های تولید می‌باشد که امکان اشتباهات انسانی در آن زیاد است. خطاها در ابتدای یک فرایند و مراحل توسعه بعدی آن ظهور می­نمایند. به دلیل عدم توانایی انجام کارها و برقراری ارتباط به صورت کامل، توسعه نرم‌افزار همواره با فعالیت تضمین کیفیت همراه است. آزمایش نرم‌افزار عنصری حیاتی از تضمین کیفیت نرم‌افزار می­باشد و مرور تقریبی مشخصه، طراحی و تولید کد را نشان می­دهد.
آزمایش، مجموعه فعالیت‌هایی است که می ­تواند از قبل به صورت ساماندهی شده برنامه­ ریزی و هدایت شود. به این دلیل، باید الگویی برای آزمایش نرم‌افزار تعریف شود. این الگو شامل مجموعه مراحلی است که می­توان فنون خاص طراحی نمونه‌های آزمایش و روش‌های آزمایش را در آن قرارداد.
چند راهبُرد آزمایش نرم‌افزار در این رابطه پیشنهاد شده است. همه آن‌ها برای توسعه‌دهنده نرم‌افزار، الگویی را به منظور آزمایش فراهم می‌کنند و همگی دارای خصوصیات زیر هستند:
آزمایش از سطح مؤلفه شروع می­ شود به سمت خارج در جهت مجتمع سازی کل سیستم رایانه‌ای پیش می­رود.
فنون متفاوت آزمایش، در نقاط زمانی مختلف مناسب می­باشند.
آزمایش توسط توسعه‌دهنده نرم‌افزار و برای پروژه­ های بزرگ توسط گروه مستقل آزمایش، هدایت می­ شود.
آزمایش و اشکال‌زدایی فعالیت­های متفاوتی هستند، اما اشکال‌زدایی باید با هر راهبُرد آزمون همراه باشد.
یک راهبُرد برای آزمایش نرم‌افزار باید آزمایش­های سطح پایینی را هدایت کند که برای بازبینی صحت پیاده­سازی یک قطعه کد کوچک لازم می­باشند. همچنین این راهبُرد باید آزمایش­های سطح بالایی را سازمان‌دهی کند که اکثر توابع سیستم را در رابطه با نیازهای مشتری اعتبارسنجی می­نمایند. یک راهبُرد باید راهنمایی­هایی را برای مجری و مجموعه ­ای از علائم نشان‌دهنده را برای مدیر فراهم نماید. چون این مراحل راهبُرد آزمایش، زمانی انجام می­شوند که فشار مربوط به پایان مهلت، شروع به افزایش می­نماید، پیشرفت باید قابل اندازه ­گیری باشد و مشکلات باید تا حد امکان به سادگی برطرف شوند [۱۵].
۲-۷-۱ اهداف آزمون
در مورد آزمایش نرم‌افزار، میر[۲۷] چند قانون زیر را بیان می‌کند که اهداف مناسبی برای آزمایش هستند: [۱۵]
آزمایش فرآیندی است شامل اجرای برنامه باهدف یافتن خطا.
یک نمونه آزمایش خوب، نمونه‌ای است که با احتمال بالایی خطاها را بیابد.
آزمایش موفق، آزمایشی است که خطاهای یافت نشده تاکنون را بیابد.
این اهداف تغییری اساسی در دیدگاه ایجاد می­نمایند. این اهداف باعث تغییر در دیدگاه متداولی می­شوند که آزمایش موفق را آن نوع آزمایشی می­داند که در آن خطایی یافت نشود. هدف، طراحی آزمایش­هایی است که به طور سامان‌بخش رده­های متفاوتی از خطاها را آشکار نمایند و این عمل را با حداقل مقدار زمان و فعالیت انجام دهند
۲-۷-۲ انواع آزمون
آزمون نرم‌افزار به گونه‌های مختلفی انجام می‌شود که در ادامه بررسی خواهند شد.
۲-۷-۲-۱ آزمون جعبه سفید
آزمایش جعبه سفید، که گاهی آزمایش جعبه شیشه ­ای نامیده می­ شود، یک روش طراحی نمونه­های آزمایش است که از ساختار کنترل طراحی رویه­ای برای هدایت نمونه­های آزمایش استفاده می­ کند. با بهره گرفتن از روش­های آزمایش جعبه سفید، مهندس نرم‌افزار می ­تواند نمونه­های آزمایشی را به دست آورد که: [۱۶]
تضمین نمایند که تمام مسیرهای مستقل داخل پیمانه حداقل یک بار آزمایش شوند.

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...