وارسی مدل

در علوم کامپیوتر، وارسی مدل  به این مسئله اشاره دارد که آیا مدل یک سیستم یک نیازمندی خاص را پشتیبانی می‌کند یا خیر. بررسی امکان بروز بن‌بست، مسابقه و حالت‌های خاصی که سیستم را از کار می‌اندازد، وظیفهٔ فرایند وارسی مدل نرم‌افزار است. به‌طور خلاصه، وارسی مدل تکنیکی است برای تأیید صحت عملکرد یک سیستم که دارای حالت‌های محدود(:en:Finate-state machine) است. این روش برای اطمینان حاصل کردن از صحت عملکرد نیازمندی‌ها و طراحی یک سیستم بلادرنگ و نهفته به کار می‌رود. این شیوهٔ صحت سنجی، تمامی حالت‌های ممکن سیستم را کاوش می‌کند و کلیهٔ سناریوهای ممکن را به روش نظاممند امتحان می‌کند.

 روش‌های وارسی مدل 
در وارسی مدل کلیهٔ حالت‌ها و انتقال‌های مدل ریاضی مورد بررسی قرار می‌گیرد. با استفاده از یک روش هوشمندانه با دامنهٔ خاص، می‌توان تمامی حالت‌ها را با کاهش زمان محاسبه طی انجام یک عملیات، بررسی کرد. شیوه‌های پیاده‌سازی شامل شمارش فضای حالت‌ها، شمارش فضای حالت‌های نمادین، تفسیر انتزاعی، شبیه‌سازی نمادین و پالایش انتزاعی است. ویژگی‌هایی که اغلب مورد صحت سنجی قرار می‌گیرند، به صورت منطق‌های زمانی مثل منطق زمانی خطی (LTL) یا منطق محاسبات درختی (CTL) توصیف می‌شوند.

 مزایا و کاربردها 
 این شیوه به نسبت سایر روش‌ها مثل وارسی اثبات، از سرعت بالایی برخوردار است.
 با استفاده از مثال نقضی که در گزارش وارسی تولید می‌گردد، علت عدم ارضای ویژگی مورد انتظار در سیستم را می‌توان کشف نمود.
 این روش، صحت سنجی پاره‌ای را میسر می‌کند. به بیانی دیگر می‌توان هر ویژگی به‌طور مجزا وارسی گردد.
 در هر مرحله از توسعهٔ تولید نرم‌افزار (طراحی، پیاده‌سازی و…) می‌توان از این روش بهره برد.
 کشف خطاهایی که در الگوریتم‌های پیچیده نظیر پروتکل‌های ارتباطی و الگوریتم‌های جمع‌آوری زباله ممکن است رخ دهند و تشخیص آن‌ها در فاز طراحی مشکل است؛ با استفاده از این روش امکان‌پذیر است.
 از جمله ویژگی‌های سیستمی که در وارسی مدل می‌توان از صحت عملکرد آن‌ها در مرحلهٔ پیاده‌سازی سیستم اطمینان حاصل نمود، عبارتند از:
 کشف بروز بن‌بست در برنامه‌های همروند.
 وارسی مشخصات زمانی؛ برای مثال بررسی بروز بن‌بست بعد از گذشت یک ساعت از راه اندازی مجدد سیستم.

 مقایسه ابزارهای وارسی مدل 
نام وارسی مدل وارسی معادل واسط گرافیکی کاربر دسترسی پذیری Plain, Probabilistic, Stochastic,...زبان مدل سازیProperties languageSupported equivalencesCounter example generation GUIGraphical SpecificationCounter example visualization پروانه نرم‌افزار زبان برنامه‌نویسی استفاده شده پلتفرم/سیستم عامل APMC Approximate Probabilistic Reactive modules PCTL, PLTLCUnix & related ARC Plain AltaRica μ-calculus CTL*ANSI CUnix & related BANDERA Code analysis Java CTL, LTLJavaWindows and Unix related BLAST Code analysis C Monitor automataاکملWindows and Unix relatedCADENCE SMVPlainCadence SMV, SMV, VerilogCTL, LTLWindows and Unix related CADPProbabilisticLOTOS, FSP, LOTOS NTAFMC SB, WB, BB, OE, STE, WTE, SE, tau*E MacOS, Linux, Solaris, Windows CBMC Code analysis C, C++ AssertionsC++Windows and Unix related CPAchecker Code analyses C Monitor automata?JavaAny CWB-NC Plain and Timed CCS, CSP, LOTOS, TCCS AFMC, CTL, GCTL SB, WB, me, MESML of New JerseyWindows and Unix related DBRover Timed Ada, C, C++, Java, وی‌اچ‌دی‌ال، Verilog LTL, MTLCommercial use onlyWindows and Unix related DiVinE Tool Plain DVE input language LTLC/C++Unix, Windows DREAM Real-time C++, Timed automata Monitor automata C++Windows and Unix related Edinburgh CWB Plain CCS, TCCS , SCCS μ-calculus SB, WB, BB, me, ME, OE SMLWindows and Unix related  EmbeddedValidator Hybrid Simulink/Stateflow/TargetLink/C Monitor automataCommercial use onlyWindows Expander2 Hybrid AFMC, CTL SB, OE هسکل (زبان برنامه‌نویسی)Unix related Fc2Tools Plain FC2  SB, WB, BBUnix related GEAR Plain  AFMC, CTL, μ-calculusJavaWindows and Unix related ImProve Plain Haskell AssertionsHaskellLinux, Windows, Mac-OS Java Pathfinder Plain and timed Java unknownNOSAJavaMacOS, Windows, Linux LLBMC Code analysis C (, C++, all languages supported by LLVM) AssertionsC++Windows and Unix related LTSA Plain FSP LTLWindows and Unix related LTSmin Plain Promela, mCRL2, NIPS-VM, DVE Input Language μ-calculus, LTL, CTL* SB, BBCUnix related MCMAS Plain, Epistemic ISPL CTL, CTLK      C++ Unix, Windows, Mac-OS mCRL2 Real-time mCRL2 mCRL2 mu-calculus SB, BB, t*E, STE, WTEC++MacOS, Linux, Solaris, Windows MRMC Real-time, Probabilistic Plain MC CSL, CSRL, PCTL , PRCTL SBCWindows, Linux, MacOS NuSMV Plain SMV CTL, LTL, PSL      C Unix, Windows, MacOSX ompca, OpenMP C Analysis software symbolic simulation with API control C/C++ programs with OpenMP directives logic predicates or flexible procedures through API      C, C++ Ubuntu Linux, Windows version available soon PAT Plain,Real-time,Probabilistic CSP#, Timed CSP, Probablilistic CSP LTL, Assertions      C# Windows, other OS with Mono PRISM Probabilistic PEPA, PRISM language, Plain MC CSL, PLTL , PCTLC++, JavaWindows, Linux, MacOS  Reactis Tester Hybrid Simulink/Stateflow Commercial use onlyWindows, Linux RED dense-time, linear hybrid, fully symbolic communicating timed automata (CTA), linear-hybrid automata (LHA) TCTL with fairness assumptions, CTA with fairness assumptions timed simuilation, fair simulationزبان برنامه‌نویسی سیUbuntu Linux SATABS Code analysis C, C++ AssertionsC++Windows and Unix related SLMC Plain pi-calculus CCLاکملWindows and Unix related SPIN Plain Promela LTLC, C++Windows and Unix related TAPAAL Real-time Timed-Arc Petri Nets, age invariants, inhibitor arcs, transport arcs TCTL subset C++, JavaMacOS, Windows, Linux TAPAs Plain CCSP CTL, μ-calculus SB, WB, BB, STE, WTE, me, ME, OEJavaWindows, MacOS and Unix related UPPAAL Real-time Timed automata, C subset TCTL subset C++, JavaMacOS, Windows, Linux ROMEO Real-time Time Petri Nets, stopwatch parametric Petri nets TCTL subset C++, tcl/tkMacOS, Windows, Linux TLC Plain TLA+, PlusCal TLA JavaWindows, Linux

 تفاوت وارسی مدل با تست نرم‌افزار 
در وارسی مدل تمامی برنامه بررسی می‌شود مگر آن که یک عیب پیدا شود. اما در تست نرم‌افزار بر حسب مجموعهٔ ورودی، در آن واحد فقط و فقط یک مسیر اجرا و وارسی می‌شود.

تست
وارسی

 منابع 

 http://en.wikipedia.org/wiki/Model_checking
 http://en.wikipedia.org/wiki/List_of_model_checking_tools
 https://web.archive.org/web/20120125074747/http://babelfish.arc.nasa.gov/trac/jpf/wiki/intro/testing_vs_model_checking


رده:تست نرم‌افزار
رده:منطق در علوم کامپیوتر
رده:مهندسی نرم‌افزار