منبع پایان نامه درباره تناهی و نامتناهی، طراحی معماری، انعطاف پذیری

دانلود پایان نامه ارشد

د که به منظور تشریح فرمال سیستم ها و مسائل از آنها استفاده می شود. پارامترهای زیادی وجود دارد که نقاط قوت و ضعف هر یک از ابزار مذکور را نسبت به دیگران تعیین می نماید اما در این بین تعدادی از این مصادیق به دلایلی عمومیت بیشتری یافته اند و بیشتر در مورد بررسی و به روز رسانی قرار گرفته اند.
به طور کلی می توان ابزار توصیف فرمال26 را به دو گروه متدهای جبری و متدهای مبتنی بر مدل تقسیم بندی نمود ]5[ و ]10[. اگر فرض نمائیم که بهترین شیوه شناخت و توصیف سیستم ها شکستن آنها به بخش های کوچکتر و ساده تر27 برای کنترل پیچیدگی سیستم است، از بررسی شیوه توصیف هریک از این دو نوع ابزار می توان نتیجه گرفت که متدهای جبری برای توصیف interface بین بخش های سیستم مذکور مناسب است زیرا خصوصیات کارکردی28 یا ساختاری29 سیستم را به نحو مطلوبی نشان می دهد. با این حال این ابزار برای تشریح رفتار سیستم چندان کارآمد نیست. به منظور توصیف خصوصیات رفتاری یک سیستم30 از ابزار مدل سازی فرمال استفاده می گردد. در شکل 2.1 مثالهایی از گروه های گفته شده و نیز تقسیم بندی توانایی آنها در تشریح سیستم های تسلسلی31 و موازی32 آورده شده است.

شکل 2.1. مثال هایی از زبان های فرمال و تقسیم بندی آنها ]10[

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

شکل 2.2. روال طراحی یک سیستم نمونه به کمک متد های فرمال ]10[

همانگونه که دیده می شود، برقراری درک دقیقی از نیازمندیهای سیستم33 ، طراحی معماری و نیز توصیف (درک) فرمال سیستم به شکلی با یکدیگر ادغام شده اند که بازخورد هر مرحله از توصیف به کامل تر شدن طراحی در همان مرحله کمک می کند. بنابراین در پایان فاز توصیف فرمال، حداقل میزان خطا و حالات پیش بینی نشده در سیستم وجود خواهد داشت. درصد این خطا مستقیما به میزان توانایی ابزار توصیف در بررسی و تبیین جنبه های مختلف کارکردی و رفتاری سیستم باز می گردد ]11[.
در ادامه سعی می کنیم تعدادی از این ابزار فرمال را تشریح کرده و با هم مقایسه نمائیم. بعضی از نمونه ها تنها به صورت متد بوده و بعضی دیگر دارای گرامر نیز می باشند و زبان هستند.

ASM

ASM34 از ساختارهای کلاسیک ریاضی برای توصیف فرمال سیستم استفاده می کند بنابراین بسیار دقیق است. با این توضیح که ASM متدی مبتنی بر جبر رابطه ای و مناسب برای توصیف سیستم های تسلسلی است. باید توجه داشت که اگر در توصیف مسائل، semantic متد به کار رفته مبهم باشد توصیف حاصل واضح تر از تعریف اولیه سیستم نخواهد بود. بنابراین ASM با یک تعریف ریاضی، وضوح و یگانگی درک مفهوم مورد نظر را تضمین می کند35. ASM شکل خاصی از finite-state automata است که از مجموعه ای از ساختار های داده ای36 و توابع ریاضی تشکیل شده است و برای توصیف الگوریتم ها بر اساس حالات37 آنها به کار می رود ]12[.
در واقع ASM یک ساختار قراردادی ساده یا پیچیده از قواعد ریاضی است که از مجموعه ای از دامنه ها (یا مجموعه ها که هر یک نوع مشخصی از اشیا را نشان می دهند) و توابع و روابط قراردادی بر روی آنها تعریف شده اند ]13[. همانگونه که دیده می شود این مجموعه بسیار انتزاعی و مستقل از نوع مساله است.
دستیابی به سطوح بالایی از انتزاع از مهمترین مزایای ASM است.
در ادامه نمونه از تعریف فرمال ASM را برای سیستم PVM38 مشاهده می کنیم ]12[:
master : HOST
مشخص کننده ی ماشینی است که PVM روی آن اجرا می شود و و نقش کلیدی در مدیریت و نگهداری پیکره پویای PVM دارد.
arch : HOST → ARCH
تابع arch که معماری هر یک از HOSTها را مشخص می کند. این معماری عضوی از مجموعه انتزاعی ARCH است.
daemon : HOST → DAEMON
این تابع برای هر عضو از مجموعه HOST، پروسه ای از مجموعه DAEMON را مشخص می کند که وظیفه مدیریت برنامه های آن هاست و نیز ارتباطات بین پروسه ها را برعهده دارد. این daemon به کمک مجموعه ای از پروسه ها بر روی host پیاده سازی می شود.
demiurge : DAEMON
daemon خاصی است که بر روی master host اجرا می شود (می توان آنرا به صورت daemon(master) = demiurge بیان کرد) و وظیفه آن ایجاد و حذف hostها و نگهداری ارتباطات آنهاست.
این اشیا و روابط انتزاعی مقدمه ای برای مدل ASM از VPM است. در حال حاضر اطلاعات بیشتری در مورد ماهیت hostها، daemonها و معماری آنها مورد نیاز نیست.
در این زبان می توان از سودوکدهای ساده استفاده نمود بنابراین نحو39 زبان برای اکثر افراد قابل درک است.
بر خلاف بسیاری از ابزار، می توان مدل طرح شده به ASM را مستقیما اجرا نمود تا نتیجه رفتار سیستم مشخص گردد. همچنین از این ابزار می توان برای مدل کردن طیف وسیعی از سیستم ها استفاده کرد. از جمله می توان به سیستم های تسلسلی، موازی، توزیع شده، real time، سیستم های متناهی و نامتناهی و غیره اشاره نمود که نشان دهنده انعطاف پذیری ابزار می باشد.
در ادامه نمونه ای از نحو زبان ASM آورده شده است. این بخش چگونگی انتقال پیام مابین Agent ها را نشان می دهد. ]14[.
class COMMUNICATOR
Program() =
let availableMsgs = {m | m in me.mailbox where ReadyToDeliver(m)}
let selectedMsgs = chooseSubset(availableMsgs)

forall msg in selectedMsgs
me.mailbox(msg) := false //delete the message
let resolvedMsgs = ResolveMessage(msg) //resolve the message
forall m in resolvedMsgs
let a = Recipient(m)
if a undef then // if recipient found
InsertMessage(a,m) // forward the message
else
skip // else ignore message

برای مطالعه بیشتر به ]29[ الی ]32[ مراجعه کنید.

LOTOS

LOTOS40 توسط سازمان ISO برای بیان فرمال استاندارد های مربوط به OSI ساخته شد. این زبان به عنوان به عنوان یک FDT41 تحت استاندارد ISO/IEC 8807 در سال 1989 ارائه گردید42.
LOTOS یک زبان توصیف فرمال مبتنی بر روابط جبری است که برای توصیف سیستم های موازی و توزیع شده مناسب می باشد ]15[. در واقع دو بخش اصلی تشکیل دهنده LOTOS عبارتست از ADT43 و جبر پروسه ها. به دلیل پشتیبانی از گونه های داده ای انتزاعی، این زبان می تواند تبادل اطلاعات و در نتیجه رابطه بین اجرا را به خوبی توصیف نماید. همچنین به دلیل جبری بودن، خواص عملکردی سیستم را توصیف می نماید. به علاوه، پشتیبانی از عملگرهای temporal باعث می شود که این زبان توانایی توصیف خواص رفتاری و جنبه های زمانی سیستم ها را نیز داشته باشد.

مقدمه ای بر جبر پروسه ها44 ]16[
در این جبر، اجزای سیستم به صورت پروسه های انتزاعی نمایش داده می شوند که با یکدیگر ارتباط دارند. پروسه ها به صورت جعبه سیاه دیده می شوند که تنها رفتار خارجی آنها مورد بررسی قرار می گیرد. همچنین پروسه ها به کمک مکانیزم interaction point با یکدیگر رابطه برقرار می کنند. در LOTOS به این نقاط event gate یا به اختصار gate گفته می شود (شکل 2.3).

شکل 2.3. نقطه gate در جبر پروسه ها ]4[

Event نشان دهنده یک همگامی45 بین دو یا چند پروسه است. به طور کلی سه نوع event تعریف شده اند:
Pure synchronization: هیچ مقداری بین پروسه ها تبادل نمی شود.
Value establishment: مقادیر ارائه شده توسط یک یا چند پروسه از سوی بقیه مورد پذیرش نیست.
Value negotiation: مقادیر از سوی یک یا چند پروسه مورد قبول است.
همچنین یک عبارت رفتاری46 انتخابی از بین مجموعه ای از event ها است که برای یک محیط مطرح می گردد. در شرایطی که امکان همگام سازی بین eventهای پیشنهاد شده در یک محیط وجود نداشته باشد یک بن بست47 رخ داده است. همچنین اگر هیچ پیشنهادی در محیط مطرح نشده باشد یک livelock رخ می دهد (مانند یک حلقه بینهایت).
همچنین LOTOS مفهوم ترتیب زمانی eventها را نیز به قواعد جبری موجود اضافه نموده است. این زبان از عملگرهای temporal برای ترکیب عبارات رفتاری و به دست آوردن عبارات رفتاری پیچیده تر استفاده می کند. در عین حال این عملگرها از قواعد خوش تعریف پیروی می نمایند که تفسیر صریح و یکسانی را برای افراد ممکن می سازد.
به عنوان خلاصه ای از خصوصیات LOTOS، می توان آنرا تعریف فرمالی از ترکیب داده و کنترل، بر مبنای جبر پروسه ها دانست که همزمانی48 یکی خصوصیات ذاتی آن است. همچنین قواعد LOTOS به دلیل عملیاتی بودن قابل تفسیر و اجرا49 می باشد و ماژولار است ]17[.
در ادامه مثالی از مدلسازی مساله تولید کننده- مصرف کننده50 با این زبان آورده شده است. در این مساله سه ماژول تولید کننده، مصرف کننده و کانال که وظیفه هماهنگ سازی این دو را به عهده دارد حضور دارند. لازم به ذکر است که تغییراتی در صورت مساله به وجود آمده تا خصوصیات LOTOS بهتر نشان داده شود. ازآن جمله، تولید کننده می تواند دو خروجی را به صورت همزمان یا غیر همزمان تولید نماید و سپس متوقف شود. همچنین مصرف کننده پس از مصرف ترتیبی یا همزمان آنها متوقف می گردد (شکل 2.4).

شکل 2.4. مدل تولید کننده- مصرف کننده به کمک LOTOS ]17[

برای کنترل پیچیدگی مساله، در ابتدا عمل تجزیه51 را روی این سه بخش انجام داده و هر یک را به عنوان یک پروسه مستقل تشریح می کنیم. سپس آنرا را با هم ترکیب می نمائیم.
با توجه به تعاریف pc1 و pc2 به عنوان کانال های تولید کننده و cc1 و cc2 به عنوان کانال های مصرف کننده و همچنین عملگرهای انتخاب ([]) و فعال سازی52 () می توان پروسه های فوق را به صورت زیر تعریف نمود:
پروسه تولید کننده:
process Producer [pc1, pc2] : exit :=
pc1; pc2; exit
endproc

پروسه کانال:
process Channel [ pc1, pc2, cc1, cc2] : exit :=
pc1;
(
pc2; cc1; exit
[]
cc1; pc2; exit
)
cc2; exit
endproc

پروسه مصرف کننده:
process Consumer [cc1, cc2] : exit :=
cc1; cc2; exit
endproc

در این بین می توان جزئیات اجرایی بیشتر مانند عملکرد داخلی هریک از پروسه ها را با عملگرهای بیشتری مدل نمود به عنوان مثال مساله گم شدن یکی از ورودی ها به کانال به شکل زیر قابل توصیف است:
process Channel [pc1, pc2, cc1, cc2] : exit :=
pc1; ( pc2 ; cc1; exit [] cc1; pc2; exit [] i; pc2; exit )
( cc2; exit [] i; exit)
Endproc
در نهایت با تعریف عملگر میانه گزاری53 (|||) برای شبیه سازی توازی54 بین پروسه ها می توان ترکیب سه پروسه یاد شده را به شکل زیر نوشت:
specification Producer_Consumer [ pc1, pc2, cc1 cc2 ] : exit

behavior
(
Producer [ pc1, pc2 ]
|||
Consumer [ cc1, cc2 ]
)
||
Channel [pc1, pc2, cc1, cc2]

where
process Producer [ out1, out2 ] : exit := . . . (*As defined previously*)
process Consumer [ in1, in2 ] : exit := . . . (*As defined previously *)
process Channel [

پایان نامه
Previous Entries منبع پایان نامه درباره مدل سازی، دیتا سنترها، مدل فرمال Next Entries منبع پایان نامه درباره مدل سازی