«دیمکتب» دنیایی دیجیتالی برای یادگیری

اعتبارسنجی مدل های تحقیق در عملیات (بخش دوم): مقدمه ای بر تصدیق، اعتبارسنجی و تست

اعتبارسنجی مدل های تحقیق در عملیات (بخش دوم): مقدمه ای بر تصدیق، اعتبارسنجی و تست

در بخش اول این مقاله، تاریخچه ای از مفهوم اعتبارسنجی (Validation) در مدل های تحقیق در عملیات ارائه گردید. در این مقاله کمی بیشتر در خصوص اعتبارسنجی صحبت خواهیم کرد و این مفهوم را در کنار واژگانی نظیر تصدیق (Verification) و آزمایش و تست (Test) مورد بررسی قرار خواهیم داد. در یک تعریف کلی، تصدیق و اعتبارسنجی (V&V) یک مدل، سیستم و يا يك نرم افزار را می توان کلیه تکنیک ها مورد استفاده در تعیین میزان صحت هر يك از آن دانست. در این مقاله با توجه به نبود یک منبع معتبر در این حوزه به بررسی لزوم شناخت و استفاده از تکنیک های تست و تصدیق و اعتبارسنجی می پردازیم و به بیان اجمالی برخی از این روش ها خواهیم پرداخت.

مقدمه

در دنیای واقعی بشر همواره سعی در مدلسازی جهان پیرامون خویش داشته است. در فضای مهندسی نیز مهندسان در تلاش بوده اند تا بتوانند با استفاده از ابزارهای مختلف به مدلسازی مسائل پیرامون خویش بپردازند. اما همیشه پس از مدلسازی مسائل، مهندسان با این سوال روبرو بودند که آیا مدل آن ها معتبر است؟ و آیا جواب های صحیحی ارائه می دهد؟ گسترش دامنه چنین سوالاتی موجب به وجود آمدن حوزه اي به نام تصدیق (Verification) و اعتبارسنجی (Validation) شد که از این پس آن را به اختصار تصدیق و اعتبارسنجی و یا V&V می نامیم.

تصدیق و اعتبارسنجی امروزه بخشی مهم از هر سیستمی می باشد که در اکثر موارد قبل از پیاده سازی سیستم و در اوایل سیکل عمر سیستم انجام می شود. تصدیق و اعتبارسنجی هنگامی اهمیت بیشتری می یابد که تست سیستم گران باشد [1]. در گذشته در اکثر موارد کاربران این وظیفه را انجام می دادند و در واقع آنها خود به این سئوالات که آیا سیستم هدف آن ها را تامین می کند؟ و آیا این کار را به درستی انجام می دهد؟ پاسخ می دادند. اما این روش به دو دلیل عمده مناسب نیست:

  1. هیچ تضمینی وجود ندارد که مشکلات کشف شده توسط مشتریان رفع شود و
  2. انجام چنین تست هایی نیازمند هزینه، زمان و منابع می باشد که ممکن است کاربران (مشتریان) فاقد آن باشند[2].

همچنین در طی 20 الی 30 سال اخیر با گسترش سیستم ها به خصوص سیستم های نرم افزاری و افزایش پیچیدگی آن ها تصدیق و اعتبارسنجی نقش مهمتری یافته است و لزوم استفاده گسترده تر از آن ضروری به نظر می رسد. در سال های گذشته تصدیق و اعتبارسنجی در اکثر موارد توسط مهندسان نرم افزار انجام می شده است اما به نظر می رسد با افزایش پیچیدگی و گستردگی مسائل، ادامه این روند به همین صورت موجب ایجاد سیستم هایی با قابلیت اطمینان کم می شود. بنابراین لازم است این موضوع به عنوان یک مرحله جداگانه از طراحی و پیاده سازی سیستم ها، مد نظر قرار گيرد. توجه روزافزون به این حوزه وکاربرد آن در دیگر حوزه ها، نشان دهنده این الزام می باشد [10]. امروزه بهتر است به جای انجام این کار توسط کاربر و یا مهندس نرم افزار از یک شیوه قانونمند مبتنی بر قواعد از پیش تعیین شده استفاده شود.

در این مقاله سعی داریم تا در ابتدا به بیانی روشن و واضح از مفهوم تصدیق و اعتبارسنجی دست یابیم و سپس به بررسی قوانین و قواعدی که در تصدیق و اعتبارسنجی استفاده می شود بپردازیم. در ادامه در بخش 2 به بررسی مفاهیم و تعاریف موجود در این حوزه خواهیم پرداخت. عدم وجود یک منبع جامع در این حوزه از ادبیات لزوم پرداختن به این مفاهیم و تعاریف را دوچندان می کند. پس از آشنایی کامل با این مفاهیم و تعاریف در بخش 3 به بیان تکنیک های مورد استفاده در تست، تصدیق و اعتبارسنجی پرداخته و تفکیک تمام اين روش ها و تکنیک های ارائه شده در ادبیات اين حوزه را مد نظر قرار خواهيم داد. در انتها و در بخش 4 نتایج به دست آمده از این مطالعه آورده شده و مطالعات آتی در این حوزه از ادبیات ارائه می شود.

تعاریف و مفاهیم

پیش از ورود به بحث لازم است، مفاهیم اساسی این حوزه را تعریف نماییم. این مفاهیم عبارتند از:

  1. تصدیق و اعتبارسنجی
  2. تست

در ادامه به تعریف هر یک از آن ها از دیدگاه محققان مختلف خواهیم پرداخت.

2-1- تصدیق و اعتبارسنجی

در ادامه به بیان مفاهیم و سیر تاریخی تصدیق و اعتبارسنجی می پردازیم و سپس روش ها و تکنیک های آن ها را بیان می کنیم. کارناپ [13] و پاپر [15،14] دو دانشمند مشهور رشته فلسفه علم در قرن بیستم برای اولین بار مفاهیم امروزه تصدیق و اعتبارسنجی را گسترش دادند و پس از آن افراد بسیاری درباره این موضوع تحقیق کردند (برای مطالعه بیشتر درباره سیر تاریخی تصدیق و اعتبارسنجی به مراجع [16 الي 20] مراجعه کنید). از بدو پیدایش تصدیق و اعتبارسنجی تعاریف بسیاری از آن ارائه شده است که سعی در تشریح مفهوم تصدیق و اعتبارسنجی داشته است که در ادامه به برخی از آن ها می پردازیم.

اولین حوزه ای که تصدیق و اعتبارسنجی را در حدود 40 الی 45 سال پیش به صورت ساختار یافته مورد استفاده قرار داد انجمن تحقیق در عملیات (OR) بود. از آنجا که حوزه تحقیق در عملیات شامل مباحث زیادی از جمله مدل تولید ، مدل برنامه ریزی ، مدل بازاریابی و ... است که هرکدام از آن ها دارای پیچیدگی زیادی است نیاز به وجود تصدیق و اعتبارسنجی در این حوزه مشهود بود ؛ این مسئله سبب شد که تعداد زیادی از مقالات و کتاب ها در این حوزه انتشار یابد. اما باید نقطه عطف این تحقیقات را تعریفی از تصدیق و اعتبارسنجی دانست که توسط انجمن شبیه سازی کامپیوتری (SCS) ارائه شده است [24]. آن تعریف به شرح زیر است:

  • اعتبارسنجی مدل: تحقیق می کند که آیا مدل (کامپیوتری) یک تصویر درست از مدل و محدودیت های تعیین شده ی آن را نمایش می دهد.
  • تصدیق مدل: تحقیق می کند که آیا مدل (کامپیوتری) و فرآیندهای آن از منظر کاربردی مدل دارای دامنه ای از درستی و سازگار می باشد.

در این ارتباط دو نوع مدل قابل تشخیص از یکدیگر در این زمینه وجود دارند:

  1. مدل مفهومی
  2. مدل کامپیوتری

به دلیل اینکه در مبحث تصدیق و اعتبارسنجی آشنایی با دو مفهوم فوق از اهمیت بسزایی برخوردار است در زیر تعریفی از این دو مفهوم ارائه می دهیم.

  • مدل مفهومی : از تمام اطلاعات ، مدل های ریاضی داده ها و معادلات ریاضیِ تشریح کننده فرآیند تشکیل شده است. مدل مفهومی از بررسی ، آنالیز و مشاهده سیستم واقعی به دست می آید.
  • مدل کامپیوتری : یک برنامه کامپیوتری است که مدل مفهومی را پیاده سازی می کند. در واقع مدل کامپیوتری می تواند یک نرم افزار و یا یک کد نوشته شده توسط یکی از زبان های برنامه نویسی باشد.

لازم به توضیح است تصدیق به بررسی رابطه مدل مفهومی و مدل کامپیوتری می پردازد و اعتبارسنجی به بررسی رابطه جهان واقعی و مدل کامپیوتری می پردازد. اینگونه تعریف واضحی از تصدیق و اعتبارسنجی در کمتر منبعی به چشم می خورد [2].

در طی دهه ی 1970 علاقه به مدلسازی و شبیه سازی مدل های دنیای واقعی افزایش یافت. پر اهمیت شدن این سیستم ها و گسترش استفاده از سیستم های کامپیوتری و همچنین استفاده از این سیستم ها در صنایع هواپیمایی و صنایع هسته ای موجب نیاز بیشتر به تصدیق و اعتبارسنجی شد. در پاسخ به این نیاز IEEE واژه های فوق را به صورت زیر تعریف کرد [21،22].

  • تصدیق : فرایند ارزیابی محصولِ فاز توسعه یک نرم افزار برای فراهم آوردن اطمینان از اینکه آیا نیازهای تعریف شده (در فاز قبل) را تامین می کند یا خیر.
  • اعتبارسنجی : عبارت است از فرآیند تست برنامه کامپیوتری و ارزیابی نتایج آن برای حصول اطمینان از برآورده شدن نیازهای از پیش تعریف شده.

همچنین موسسه American Institute of Aeronautics and Astronautics برای تصدیق و اعتبارسنجی تعاریف زیر را ارائه داده است [23]:

  • تصدیق : فرآیند تشخیص اینکه آیا پیاده سازی مدل، توصیف های توسعه دهندگان مدل و راه حل های مدل را به صورت دقیق نمایش می دهد.
  • اعتبارسنجی: فرآیند تشخیص اینکه آیا از دید کاربردهای برنامه ریزی شده، مدل چه درجه ای از جهان واقعی را با موفقیت شبیه سازی می کند.

2-2- تست

نویسندگان و محققان مختلف، تعاریف متفاوتی را از واژۀ تست ارائه نموده اند که در این جا به 3 تعریف از مراجع معتبر این حوزه بسنده می کنیم. از نظر Myers در سال 1976، تست عبارت است از پروسه اجرای برنامه به منظور پیدا کردن خطاها [3]. اين در حالي است كه از نظر Dijkstra در سال 1970، تست می تواند وجود اِشکالات در سیستم را نشان دهد اما هیچگاه نمی تواند عدم وجود آن ها را اثبات نماید [4]. اما موسسه IEEE در سال 1990، تست را به عنوان فرآیند اجرای یک سیستم یا یک مولفه از سیستم تحت شرایط خاص و مشاهده و یا ثبت نتایج به منظور ارزیابی بعضی جنبه های سیستم و یا مولفه ای از سیستم تعریف می نمايد [12].

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

حال مسائل اصلی در تست برنامه فوق این است که: چه اعدادی را جهت تست این برنامه به کار بریم؟ چند بار این تست را انجام دهیم؟ تا چه میزان می توان به نتایج تست اطمینان داشت؟ و سوالات بسیاری که می توان در این باره مطرح نمود و جملگی دلایلی آشکار در اثبات ادعای فوق است. تا آنجا که حتی برخی از سازندگان مدل، موارد فوق را در تصدیق و اعتبارسنجی مدل خود مد نظر قرار نمی دهند.

حال مي توان دشواري تست براي يك سيستم پيچيده را درك نمود. نمونه ی دیگری از این گونه برنامه ها توسط Humphrey ارائه شده است که یک رشته 10 کاراکتری از حروف الفبا را دریافت کرده و مورد آنالیز قرار می دهد [6]. این مثال نیز مانند مثال فوق الذکر نشان می دهد که ایجاد یک مجموعه از تست ها برای تست کامل یک مسئله تا چه اندازه دشوار می باشد.

اما یک تست خوب به عقیده Myers باید دارای خصوصیات زیر باشد: [3]

  • یک تست خوب تستی است که احتمال زیادی برای کشف خطاهای کشف نشده داشته باشد ؛ نه تستی که نشان دهد سیستم به خوبی کار می کند.
  • این که شما خود برنامه خود را به طور کامل تست کنید تقریبا غیر ممکن است.
  • یک قسمت الزامی برای هر تستی تشریح نتایج مورد انتظار است.
  • تست را هم برای موقعیت های معتبر و هم موقعیت های نامعتبر طراحی کنید.
  • نتایج تمام تست ها را به طور کامل بررسی کنید.
  • هنگامی که تعداد خطاها (مشکلات) در یک قسمت از نرم افزار (مدل) افزایش می یابد احتمال وجود خطاها کشف نشده هم در آن قسمت افزایش می یابد.
  • تست سیستم را به بهترین افراد خود واگذار کنید.
  • مطمئن باشید که تست پذیری یکی از اهداف اصلی در طراحی نرم افزار شما می باشد.
  • هیچگاه به برنامه اجازه ندهید تست کردن را آسان تر کند.
  • تست کردن مانند بسیاری از کارهای دیگر باید هدفمند باشد.

کتاب های مفید بسیاری درباره تست نرم افزار نوشته شده است. [به عنوان مثال 6 الي 9]

امیدواریم که این مطلب براتون مفید بوده باشه. این مطلب بروزرسانی خواهد شد...منتظر ما باشید...

مطالب آموزشی

1- سلسله مقالات و مباحث پیرامون آموزش مقاله نویسی:

بهترین روش مقاله نویسی (بخش اول): «ساختار یک مقاله علمی» و «انواع مقاله علمی»

بهترین روش مقاله نویسی (بخش دوم): «ماهیت مقاله علمی-پژوهشی»، «انواع گزارشات علمی» و «تعریف پژوهش»

بهترین روش مقاله نویسی (بخش سوم): «ساختار تفصیلی یک مقاله علمی» و «نحوه ارجاع دهی منابع در متن»

بهترین روش مقاله نویسی (بخش چهارم): «سيستم هاي ارزيابي آثار علمي»

بهترین روش مقاله نویسی (بخش پنجم): «شاخص هاي ارزيابي آثار علمي»

بهترین روش مقاله نویسی (بخش ششم): «چند نکته اساسي در تهيه يک مقاله علمي» و «نرم افزارهاي پرکاربرد در نگارش مقاله علمي»

بهترین روش مقاله نویسی (بخش هفتم): «انواع مجامع علمی»

بهترین روش مقاله نویسی (بخش هشتم): «معرفي برخي از مهمترين بانک هاي اطلاعاتي»

2- آشنایی با ابزارهای پیشرفته تحقیق و پژوهش (Research Tools)

آشنایی با گوگل پژوهشگر(Scholar Google) و ترفندهای پیشرفته جستجو در آن

3- اعتبارسنجی مدل های تحقیق در عملیات

اعتبارسنجی مدل های تحقیق در عملیات (بخش اول): تاریخچه

اعتبارسنجی مدل های تحقیق در عملیات (بخش دوم): مقدمه ای بر تصدیق، اعتبارسنجی و تست

4- سلسله مقالات و مباحث پیرامون مسئله طراحی مسیر گردشگر

مروري بر مسئله طراحي مسير گردشگر (بخش اول): آشنایی با مسئله

5- سلسله مقالات و مباحث پیرامون مسئله مکان یابی رقابتی

مکانیابی تسهیلات رقابتی (Competitive Facility Location) (بخش اول): چیستی مسئله

منابع و مراجع

  • [1] Riley M. Duren, Validation(not just verification) of deep space mission, ,NASA,2006
  • [2] Steven R.Rakitin, Software verification and validation for practitioners and managers artech house ,2001
  • [3] Myers, G. J., The Art of Software Testing, New York: Wiley, 1976.
  • [4] Dijkstra, E. W., “Structured Programming,” in J. N. Buxton and B. Randell (eds.), Software Engineering Techniques, Brussels, Belgium: NATO Science Committee, 1970.
  • [5] Humphrey, W. S., Managing the Software Process, Reading, MA: Addison-Wesley,1989.
  • [6] Kit, E., Software Testing in the Real World, Reading, MA: Addison-Wesley, 1995
  • [7] Marick, B., The Craft of Software Testing, Upper Saddle River, NJ: Prentice-Hall PTR,1995.
  • [8] Kaner, C., et al., Testing Computer Software, 2nd ed., Boston, MA: InternationalThomson Computer Press , 1993.
  • [9] Humphrey, W., A Discipline for Software Engineering, Reading, MA: Addison-Wesley,1995.
  • [10] Oden J. , Babushka I. , Verification and validation in computational engineering and science: basic concepts, Comput. Methods Appl. Mech. Engrg. 193 (2004) 4057–4066
  • [11] IEEE Standard 1008-1987, IEEE Standard for Software Unit Testing, IEEE,© 1987 by IEEE,Inc.
  • [12] IEEE Standard 610.12-1990, IEEE Standard Glossary of Software Engineering Terminology, 1990.
  • [13] Carnap, R. Testability and Meaning, Philosophy of Science, Vol. III, 1963.
  • [14] Popper, K. R. The Logic of Scientific Discovery, Basic Books, New York, 1959.
  • [15] Popper, K. R. Conjectures and Refutations: The Growth of Scientific Knowledge, Routledge and Kegan, London, 1969
  • [16] Roache, P. J. Verification and Validation in Computational Science and Engineering, Hermosa Publishers, Albuquerque, NM, 1998.
  • [17] Kleindorfer, G. B., O’Neill, L., and Ganeshan, R. Validation in Simulation: Various Positions in the Philosophy of Science, Management Science, Vol. 44, No. 8, 1998; 1087-1099.
  • [18] Balci, O., and Sargent, R. G. A Bibliography on the Credibility Assessment and Validation of Simulation and Mathematical Models, Simuletter, Vol. 15, No. 3, 1984; 15-27.
  • [19] Hamilton, M. A. Model Validation: An Annotated Bibliography, Communications in Statisitcs-Theory and Methods, Vol. 20, No. 7, 1991; 2207-2266.
  • [20] Oberkampf, W. L. Bibliography for Verification and Validation in ComputationalSimulation, Sandia National Laboratories, SAND98-2041, Albuquerque, NM, 1998.
  • [21] IEEE. IEEE Standard Dictionary of Electrical and Electronics Terms, ANSI/IEEE Std 100- 1984, 1984.
  • [22] IEEE. IEEE Standard Glossary of Software Engineering Terminology, IEEE, IEEE Std
  • 610.12-1990, New York, 1991.
  • [23] AIAA. Guide for the Verification and Validation of Computational Fluid DynamicsSimulations, American Institute of Aeronautics and Astronautics, AIAA-G-077-1998,Reston, VA, 1998.
  • [24] Schlesinger, S. Terminology for Model Credibility, Simulation, Vol. 32, No. 3, 1979;103-104.
  • [25] Andriole, Stephen J., editor, Software Validation, Verification, Testing, and Documentation, Princeton, NJ : Petrocelli Books, 1986.
  • [26] Kopetz, Herman, Real-Time Systems: Design Principles for Distributed Embedded Applications, Boston, MA: Kluwer Academics Publishers, 1997.
  • [27] Eushiuan Tran, Verification- Validation and Certification, Carnegie Mellon University
    18-849b Dependable Embedded Systems, 1999.
  • [28] Verification & Validation,Assoc. Prof. Information Assurance Division of Business & Management, Norwich University