وارسی مدل

در علوم کامپیوتر، وارسی مدل به این مسئله اشاره دارد که آیا مدل یک سیستم یک نیازمندی خاص را پشتیبانی می‌کند یا خیر. بررسی امکان بروز بن بست، مسابقه و حالت‌های خاصی که سیستم را از کار می‌اندازد، وظیفه فرایند وارسی مدل نرم‌افزار است. به طور خلاصه، وارسی مدل تکنیکی است برای تائید صحت عملکرد یک سیستم که دارای حالت‌های محدود( ) است. این روش برای اطمینان حاصل کردن از صحت عملکرد نیازمندی‌ها و طراحی یک سیستم بلادرنگ و نهفته به کار می‌رود. این شیوه صحت سنجی، تمامی حالت‌های ممکن سیستم را کاوش می‌کند و کلیه سناریوهای ممکن را به روش نظاممند امتحان می‌کند.
روش‌های وارسی مدل
در وارسی مدل کلیه حالت‌ها و انتقال‌های مدل ریاضی مورد بررسی قرار می‌گیرد. با استفاده از یک روش هوشمندانه با دامنه خاص، می‌توان تمامی حالت‌ها را با کاهش زمان محاسبه طی انجام یک عملیات، بررسی کرد. شیوه‌های پیاده سازی شامل شمارش فضای حالت‌ها، شمارش فضای حالت‌های نمادین، تفسیر انتزاعی، شبیه سازی نمادین و پالایش انتزاعی است. ویژگی‌هایی که اغلب مورد صحت سنجی قرار می‌گیرند، به صورت منطق‌های زمانی مثل منطق زمانی خطی (LTL) یا منطق محاسبات درختی (CTL) توصیف می‌شوند.
مزایا و کاربردها
این شیوه به نسبت سایر روش‌ها مثل وارسی اثبات، از سرعت بالایی برخوردار است.
با استفاده از مثال نقضی که در گزارش وارسی تولید می‌گردد، علت عدم ارضای ویژگی مورد انتظار در سیستم را می‌توان کشف نمود.
این روش، صحت سنجی پاره‌ای را میسر می‌کند. به بیانی دیگر می‌توان هر ویژگی به طور مجزا وارسی گردد.
در هر مرحله از توسعه تولید نرم‌افزار (طراحی، پیاده سازی و…) می‌توان از این روش بهره برد.
کشف خطاهایی که در الگوریتم‌های پیچیده نظیر پروتکل‌های ارتباطی و الگوریتم‌های جمع آوری زباله ممکن است رخ دهند و تشخیص آن‌ها در فاز طراحی مشکل است؛ با استفاده از این روش امکان پذیر است.
از جمله ویژگی‌های سیستمی که در وارسی مدل می‌توان از صحت عملکرد آن‌ها در مرحله پیاده سازی سیستم اطمینان حاصل نمود، عبارتند از:
کشف بروز بن بست در برنامه‌های همروند.
وارسی مشخصات زمانی؛ برای مثال بررسی بروز بن بست بعد از گذشت یک ساعت از راه اندازی مجدد سیستم.
مقایسه ابزارهای وارسی مدل
نام
وارسی مدل
وارسی معادل
واسط گرافیکی کاربر
دسترسی پذیری
Plain, Probabilistic, Stochastic,…
زبان مدل سازی
Properties language
Supported equivalences
Counter example generation
GUI
Graphical Specification
Counter example visualization
پروانه نرم‌افزار
زبان برنامه نویسی استفاده شده
پلتفرم/سیستم عامل
Approximate Probabilistic
Reactive modules
PCTL, PLTL
C
Unix - related
Plain
AltaRica
-calculus CTL*
ANSI C
Unix - related
Code analysis
Java
CTL, LTL
Java
Windows and Unix related
BLAST
Code analysis
C
Monitor automata
اکمل
Windows and Unix related
Plain
Cadence SMV, SMV, Verilog
CTL, LTL
Windows and Unix related
CADP
Probabilistic
LOTOS, FSP, LOTOS NT
AFMC
SB, WB, BB, OE, STE, WTE, SE, tau*E
MacOS, Linux, Solaris, Windows
Code analysis
C, C++
Assertions
C++
Windows and Unix related
Code analyses
C
Monitor automata
Java
Any
Plain and Timed
CCS, CSP, LOTOS, TCCS
AFMC, CTL, GCTL
SB, WB, me, ME
SML of New Jersey
Windows and Unix related
Timed
Ada, C, C++, Java, وی‌اچ‌دی‌ال, Verilog
LTL, MTL
Commercial use only
Windows and Unix related
Plain
DVE input language
LTL
C/C++
Unix, Windows
DREAM
Real-time
C++, Timed automata
Monitor automata
C++
Windows and Unix related
Plain
CCS, TCCS, SCCS
-calculus
SB, WB, BB, me, ME, OE
SML
Windows and Unix related
Hybrid
Simulink/Stateflow/TargetLink/C
Monitor automata
Commercial use only
Windows
Hybrid
AFMC, CTL
SB, OE
هسکل (زبان برنامه‌نویسی)
Unix related
Plain
FC2
SB, WB, BB
Unix related
Plain
AFMC, CTL, -calculus
Java
Windows and Unix related
Plain
Haskell
Assertions
Haskell
Linux, Windows, Mac-OS
Java Pathfinder
Plain and timed
Java
unknown
NOSA
Java
MacOS, Windows, Linux
Code analysis
C (, C++, all languages supported by LLVM)
Assertions
C++
Windows and Unix related
Plain
FSP
LTL
Windows and Unix related
Plain
Promela, mCRL2, NIPS-VM, DVE Input Language
-calculus, LTL, CTL*
SB, BB
C
Unix related
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
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
Hybrid
Simulink/Stateflow
Commercial use only
Windows, Linux
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
Code analysis
C, C++
Assertions
C++
Windows and Unix related
Plain
pi-calculus
CCL
اکمل
Windows and Unix related
SPIN
Plain
Promela
LTL
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
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
تفاوت وارسی مدل با تست نرم‌افزار
در وارسی مدل تمامی برنامه بررسی می‌شود مگر آن که یک عیب پیدا شود. اما در تست نرم‌افزار بر حسب مجموعه ورودی، در آن واحد فقط و فقط یک مسیر اجرا و وارسی می‌شود.
تست
وارسی