وارسی مدل

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

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

روش‌های وارسی مدل[ویرایش]

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

مزایا و کاربردها[ویرایش]

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

مقایسه ابزارهای وارسی مدل[ویرایش]

نام وارسی مدل وارسی معادل واسط گرافیکی کاربر دسترسی پذیری
Plain, Probabilistic, Stochastic,... زبان مدل سازی Properties language Supported equivalences Counter example generation   GUI   Graphical Specification Counter example visualization پروانه نرم‌افزار زبان برنامه نویسی استفاده شده پلتفرم/سیستم عامل
APMC Approximate Probabilistic Reactive modules PCTL, PLTL نه بله نه نه FUSC C Unix & related
ARC Plain AltaRica μ-calculus CTL* بله بله نه نه FUSC ANSI C Unix & related
BANDERA Code analysis Java CTL, LTL بله بله بله بله رایگان Java Windows and Unix related
BLAST Code analysis C Monitor automata بله نه نه نه رایگان OCaml Windows and Unix related
CADENCE SMV Plain Cadence SMV, SMV, Verilog CTL, LTL بله بله نه نه FUSC ؟ Windows and Unix related
CADP Probabilistic LOTOS, FSP, LOTOS NT AFMC SB, WB, BB, OE, STE, WTE, SE, tau*E بله بله بله بله FUSC ؟ MacOS, Linux, Solaris, Windows
CBMC Code analysis C, C++ Assertions بله بله نه نه رایگان C++ Windows and Unix related
CPAchecker Code analyses C Monitor automata بله بله نه ? رایگان Java Any
CWB-NC Plain and Timed CCS, CSP, LOTOS, TCCS AFMC, CTL, GCTL SB, WB, me, ME بله بله نه نه FUSC SML of New Jersey Windows and Unix related
DBRover Timed Ada, C, C++, Java, وی‌اچ‌دی‌ال, Verilog LTL, MTL نه بله بله بله غیر آزادCommercial use only ؟ Windows and Unix related
DiVinE Tool Plain DVE input language LTL بله بله نه بله رایگان C/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 بله نه نه نه FUSC SML Windows and Unix related
EmbeddedValidator Hybrid Simulink/Stateflow/TargetLink/C Monitor automata بله بله بله بله غیر آزادCommercial use only ؟ Windows
Expander2 Hybrid AFMC, CTL SB, OE نه بله نه نه رایگان هسکل (زبان برنامه‌نویسی) Unix related
Fc2Tools Plain FC2 ؟ SB, WB, BB بله نه بله بله رایگان ؟ Unix related
GEAR Plain ؟ AFMC, CTL, μ-calculus بله بله بله بله رایگان Java Windows and Unix related
ImProve Plain Haskell Assertions بله نه نه نه رایگان Haskell Linux, Windows, Mac-OS
Java Pathfinder Plain and timed Java unknown نه بله نه نه NOSA Java MacOS, Windows, Linux
LLBMC Code analysis C (, C++, all languages supported by LLVM) Assertions بله نه نه نه FUSC C++ Windows and Unix related
LTSA Plain FSP LTL بله بله نه بله رایگان ؟ Windows and Unix related
LTSmin Plain Promela, mCRL2, NIPS-VM, DVE Input Language μ-calculus, LTL, CTL* SB, BB بله نه نه نه رایگان C Unix related
MCMAS Plain, Epistemic ISPL CTL, CTLK بله بله نه بله رایگان C++ Unix, Windows, Mac-OS
mCRL2 Real-time mCRL2 mCRL2 mu-calculus SB, BB, t*E, STE, WTE بله بله نه بله رایگان C++ MacOS, Linux, Solaris, Windows
MRMC Real-time, Probabilistic Plain MC CSL, CSRL, PCTL, PRCTL SB نه نه نه نه رایگان C Windows, 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, PCTL نه بله نه نه رایگان C++, Java Windows, Linux, MacOS
Reactis Tester Hybrid Simulink/Stateflow ؟ نه بله بله نه غیر آزادCommercial use only ؟ Windows, 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++ Assertions بله بله نه نه رایگان C++ Windows and Unix related
SLMC Plain pi-calculus CCL بله نه نه نه رایگان OCAML Windows and Unix related
SPIN Plain Promela LTL بله بله نه بله FUSC C, C++ Windows and Unix related
TAPAAL Real-time Timed-Arc Petri Nets, age invariants, inhibitor arcs, transport arcs TCTL subset نه بله بله بله رایگان C++, Java MacOS, Windows, Linux
TAPAs Plain CCSP CTL, μ-calculus SB, WB, BB, STE, WTE, me, ME, OE بله بله بله بله رایگان Java Windows, MacOS and Unix related
UPPAAL Real-time Timed automata, C subset TCTL subset بله بله بله بله FUSC C++, Java MacOS, Windows, Linux
ROMEO Real-time Time Petri Nets, stopwatch parametric Petri nets TCTL subset بله بله بله نه رایگان C++, tcl/tk MacOS, Windows, Linux
TLC Plain TLA+, PlusCal TLA بله بله بله نه رایگان Java Windows, Linux

تفاوت وارسی مدل با تست نرم‌افزار[ویرایش]

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

تست وارسی

منابع[ویرایش]