زبان هاي توصيف معماري

زبان هاي توصيف معماري

اين زبان ها امكان توصيف نرم افزاري و سخت افزاري سيستم را فراهم مي آورند. اين توصيف مي تواند شامل ويژگي هايي مانند فرآيند ها ،‌نخ ها ،‌ داده ها ، زيربرنامه ها به علاوه قطعات سخت افزاري مانند پردازنده ها ‌، گذرگاه ها و حافظه باشد. ارتباط بين مولفه ها مي تواند به صورت منطقي يا فيزيكي بيان شود.

زبان هاي توصيف معماري داراي ويژگي هاي زير هستند :

  • بايد براي ارتباط طراحي با همه طرف هاي مورد علاقه مناسب باشد.
  • بايد وظايف ايجاد ،‌ پالايش و معتبر سازي را پشتيباني كند.
  • بايد توانايي ارائه انواع رايج طراحي را داشته باشد.
  • بايد داراي امكانات تحليلي باشد تا بتوان به سرعت نمونه اوليه ايجاد نمود.

بيشتر اين زبان ها داراي ويژگي هاي مشتركي هستند كه عبارتند از :

داراي يك نمايش گرافيكي به همراه نحو رسمي تعريف شده هستند.

  • معمولا داراي ويژگي هايي براي مدل سازي سيستم هاي توزيع يافته هستند.
  • معمولا داراي امكان ارائه سلسله مراتبي جزئيات هستند.

 

برخي از نكات مثبت اين زبان ها :

  • روشي رسمي براي ارائه طراحي هستند.
  • قابل خواندن توسط ماشين و انسان هستند.
  • امكان طراحي سيستم در سطح بالا را ارائه ميكنند.
  • امكان تحليل سيستم ها را از لحاظ كامل بودن ،‌ سازگاري ،‌ ابهام و عملكرد ايجاد ميكند.
  • مي توانند از ايجاد خودكار سيستم هاي نرم افزاري پشتيباني كنند.

 

برخي از نكات منفي اين زبان ها:

  • توافق بين المللي خاصي براي اينكه زبان هاي توصيف طراحي بايد چه چيزي را ارائه كنند وجود ندارد.
  • ارائه هايي كه امروزه استفاده مي شوند اغلب براي تجزيه و تحليل كردن سخت هستند و توسط ابزار هاي تجاري پشتيباني نمي شوند.
  • اين زبان ها معمولا براي نوع خاصي از تحليل بهينه و مناسب هستند.

 

 

 

 

برخي از اين زبان ها عبارتند از :

AADL ، يك زبان بزرگ و كامل براي طراحي سيستم هاي نرم افزاري و سخت افزاري است. اين زبان از پردازنده ها درگاه ها و گذرگاه ها و حافظه به علاوه ي فرآيند ها ،‌ نخ ها و داده ها پشتيباني ميكند. تعريف مولفه ها به دو قسمت “انواع مولفه” كه بيانگر ويژگي قابل مشاهده براي ساير مولفه ها است و “پياده سازي مولفه” كه قسمت هاي داخلي را تعريف ميكند تقسيم ميشود. تصوير پايين يك مثال طراحي سيستم كنترل سرعت در اين زبان است.

ACME ، يك زبان كوچك و ساده است. اين زبان داراي سيستم هاي مفهومي ، مولفه ها ،‌ درگاه ها ،‌ نقش ها و ارائه ها است. ويژگي اصلي مربوط به اين زبان اين است كه ارائه هاي اين زبان مي توانند بسيار به مدل اساسي نزديك باشند. اين زبان را ميتوان زير مجموعه اي از AADL دانست. مثال زير پياده سازي پايپ لاين يونيكس مانند زبان سي است :

Component pipe =

{

Port in;

Port out;

Property implementation : String = “while (!in.eof)

{ in.read; compute; out.write; }”;

}

Rapide ، اين زبان مجموعه اي از چندين زبان است كه عبارتند از زبان نوع ، زبان تعريف ،‌ زبان محدوديت ،‌ و يك زبان برنامه نويسي قابل اجرا.” زبان نوع”،‌ يك رابط براي” زبان تعريف” كه بيانگر طراحي است ارائه مي دهد.” زبان محدوديت” نيازمندي ها را براي زمانبندي و ساير الگو هاي رخداد ها مشخص ميكند. هدف اصلي “زبان قابل اجرا” پياده سازي رفتار مولفه ها و ارتباط بين آنها است.

Wright: اين زبان بر اساس مولفه هاي انتزائي ،‌ اتصال ها ، پيكربندي ها (كه نمونه ها از آنها مشتق مي شوند) ،‌ ضميمه ها (توپولوژي سيستم را مشخص ميكنند) و سلسله مراتب ها (يك مولفه مولفه ديگر را نگهداري ميكند) ايجاد شده است. در پايين يك مثال از عمليات رايج فيلتر است :

Configuration Capitalize

Component UpperCase

Connector Pipe

Instances

Split : SplitFilter

Upper : UpperCase

Merge : MergeFilter

P1, P2, P3 : Pipe

Attachments

Split.Left as P1.Source

Upper.Input as P1.Sink

Split.Right as P2.Source

Merge.Right as P2.Sink

Upper.Output as P3.Source

۴

Merge.Left as P3.Sink

End Capitalize.

 

Darwin ،‌ اين زبان از ساختار سلسله مراتبي پشتيباني ميكند. در اين زبان مولفه ها از ساير مولفه ها يا از مولفه هاي اوليه ساخته ميشوند. اين زبان همچنين از ساختار هاي برنامه هاي موازي و توپولوژي هاي شبكه پشتيباني ميكند.

Aesop ،‌ اين زبان مجموعه اي از ابزار براي توسعه يك مدل سيستم است. اين برنامه بر پايه يونيكس است و از ويژگي هاي پايپ و فيلتر ها پشتيباني ميكند. با وجود يك هسته پويا براي همه محيط ها قابل استفاده است. تمام مدل سازي با استفاده از رابط گرافيكي انجام مي شود.

 

UML ،‌ يك زبان مدل سازي محبوب و پركاربرد است. از نظر فني uml يك زبان ADL نيست و براي آن طراحي نشده است. اما براي مدل سازي يك سيستم مناسب است. مزيت اصلي اين زبان پركاربرد بودن آن است و اينكه برنامه نويسان زيادي با آن آشنا هستند.در نسخه ۲٫۰ آن يك زبان محدوديت شي OCL قرار داده شد كه يك زبان تعريفي براي توضيح مدل به صورت متني است. منتقدين اين نسخه بيان ميكنند كه آن بسيار پيچيده و بزرگ است تا بتوان آن را يادگرفت.

 

گرداوري : كامران محمودي

 

منابع :

http://en.wikipedia.org/wiki/Architecture_description_language

Architecture Description Languages, Stefan Björnander, Mälardalen University (http://www.mrtc.mdh.se/han/FoPlan/ass2-bjornander.pdf)

 

نمايش پورت هاي باز و نام برنامه در لينوكس

براي نمايش پورت هاي باز و برنامه اي كه از آن استفاده ميكند مي توانيد از اين دستورات در ترمينال لينوكس استفاده نماييد:

# nmap –system-dns localhost |grep “open”|tr -s ” “|cut -d  ” ” -f 1,3

 

توضيحات دستورها : با استفاده از دستور nmap (بايد برنامه nmap روي سيستم نصب شده باشد) مي توان پورت هاي سيستم را بررسي كرد سپس خروجي دستور nmap را به دستور grep داده كه توسط آن قسمت هايي از خروجي كه عبارت open در آنها هست نشان داده مي شوند . با استفاده از tr فاصله (space) بين كلمات را يكسان ميكنيم تا همه با يك عدد space جدا شده باشند و بعد از اين كار با استفاده از cut ستون هاي ۱ و ۳ كه شامل شماره پورت و نام برنامه هستند را از خروجي جدا ميكنيم تا نشان داده شوند.

نفس باد صبا مشک فشان خواهد شد

نفس باد صبا مشک فشان خواهد شد

عالم پیر دگرباره جوان خواهد شد

ارغوان جام عقیقی به سمن خواهد داد

چشم نرگس به شقایق نگران خواهد شد

این تطاول که کشید از غم هجران بلبل

تا سراپرده گل نعره زنان خواهد شد

گر ز مسجد به خرابات شدم خرده مگیر

مجلس وعظ دراز است و زمان خواهد شد

ای دل ار عشرت امروز به فردا فکنی

مایه نقد بقا را که ضمان خواهد شد

ماه شعبان منه از دست قدح کاین خورشید

از نظر تا شب عید رمضان خواهد شد

گل عزیز است غنیمت شمریدش صحبت

که به باغ آمد از این راه و از آن خواهد شد

مطربا مجلس انس است غزل خوان و سرود

چند گویی که چنین رفت و چنان خواهد شد

حافظ از بهر تو آمد سوی اقلیم وجود

قدمی نه به وداعش که روان خواهد شد

پيدا كردن مك آدرس كارت شبكه در لينوكس

راي نمايش اطلاعات شبكه در ترمينال لينوكس از دستور ifconfig استفاده مي شود، در اين اطلاعات آدرس فيزيكي كارت شبكه (Mac Address) با استفاده از HWaddr مشخص شده است براي اينكه از اين اطلاعات فقط آدرس كارت شبكه را نشان دهيم از اين دستور استفاده ميكنيم :

ifconfig eth0|grep “HWaddr”|tr -s ” “|cut -d ” ” -f 5

در اين دستور ابتدا خروجي دستور ifconfig كه نشان دهنده اطلاعات شبكه است به دستور grep  فرستاده شده تا توسط آن فقط بخش شامل بر HWaddr جستجو شود و با استفاده از دستور tr فاصله بين كلمات با يك اسپيس جايگزين مي شود تا نمايش ستوني اطلاعات بدست بياييد و بعد از آن با استفاده از cut فقط ستون پنجم كه داراي مك آدرس است جدا شده و نشان داده مي شود.

ایجاد کلاس در ویژوال بیسیک ۲۰۱۰

برای افزودن کلاس تازه به پروژه خود میتوانید از منو project گزینه add new item را انتخاب کنید یا اینکه از دکمه های ctrl+shift+A استفاده نمایید. بعد از انتخاب این گزینه منویی مشابه شکل زیر مشاهده میکنید که در آن منو گزینه class را انتخاب کرده و نام کلاس خود را وارد میکنید و دکمه add را انتخاب میکنید.

 

بعد از افزودن کلاس به پروژه می توانید شروع به تعریف داده ها و متد های کلاس نمایید.

ساختار اولیه کلاس به این صورت است :

Public Class ClassName

End Class

حال می خواهیم داده هایی برای این کلاس تعریف کنیم ؛ به عنوان مثال این کلاس دارای دو عدد صحیح می باشد.

Public Class ClassName

Dim num1 As Integer

Dim num2 As Integer

End Class

متغیر هایی که به این صورت تعریف شده اند به صورت خصوصی بوده و به دلیل اینکه خارج از متد (توابع) کلاس تعریف شده اند به صورت عمومی در کل کلاس قابل استفاده خواهند بود. در صورتی که بخواهیم داده های کلاس توسط کلاس های دیگر قابل دسترسی باشد باید آنها را به صورت عمومی تعریف کنیم مثلا :

Public num1 As Integer

Public num2 As Integer

یک کلاس علاوه بر داده ها می تواند شامل روال ها (subroutine) یا توابع (function) ها باشد. تفاوت روال و تابع در این است که یک تابع مقداری را برای خروجی برمیگرداند ولی روال صرفا یکسری دستورات را انجام داده و مقداری برنمیگرداند.

همانطور که میدانید کلاس ها دارای یک روال به نام سازنده هستند که هنگام ایجاد یک شی از نوع کلاس فعالیت های خاصی مانند مقدار دهی اولیه متغیر ها را انجام میدهند. در ویژوال بیسیک می توانید سازنده را با استفاده از یک روال به نام new ایجاد نمایید. حال ما یک سازنده به کلاس اضافه میکنیم تا مقدار متغیر ها را برابر یک قرار دهد.

 

Public Class ClassName

Dim num1 As Integer

Dim num2 As Integer

Public Sub new()

num1=1

num2=1

End Sub

End Class

حال می خواهیم یک روال برای جابه جا کردن مقدار دو عدد num1 و num2 بنویسیم.

Public Class ClassName

Dim num1 As Integer

Dim num2 As Integer

Public Sub new()

num1=1

num2=1

End Sub

Public Sub Swap()

Dim temp As Integer

temp=num1

num1=num2

num2=temp

End Sub

End Class

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

حال می خواهیم یک تابع تعریف کنیم که یک ورودی به نام input را از نوع عدد و به صورت فراخوانی با مقدار گرفته و آن را با مجموع دو عدد num1 و num2 مقایسه کند اگر بزرگتر بود مقدار true و اگر کمتر بود false برگرداند.

Public Class ClassName

Dim num1 As Integer

Dim num2 As Integer

Public Sub new()

num1=1

num2=1

End Sub

Public Sub Swap()

Dim temp As Integer

temp=num1

num1=num2

num2=temp

End Sub

Public Function Check(Byval input As Integer) As Boolean

If input>(num1+num2) Then

Return True

End If

Return False

End Function

End Class

دریافت سورس از طریق URL در ویژوال بیسیک

ممکن است در برنامه شما نیاز به دریافت فایل یا حتی سورس یک صفحه وب از طریق اینترنت باشد ، برای این منظور می توانید از تابع زیر در ویژوال بیسیک استفاده نمایید:

Public Function getURL(ByVal sURL As String) As String
Try
Dim retValue As String = “”
Dim wrGETURL As WebRequest
wrGETURL = WebRequest.Create(sURL)

Dim proxy As New WebProxy
proxy = WebProxy.GetDefaultProxy()
proxy.BypassProxyOnLocal = True
wrGETURL.Proxy = proxy

Dim objStream As Stream
objStream = wrGETURL.GetResponse.GetResponseStream()

Dim objReader As New StreamReader(objStream)
Dim sLine As String = “”
Dim i As Integer = 0

Do While Not sLine Is Nothing
i += 1
sLine = objReader.ReadLine
If Not sLine Is Nothing Then
retValue += sLine + vbNewLine
End If
Loop
Return retValue

Catch ex As Exception
‘Exception happened do something or just ignore this
Return False
End Try
End Function

این تابع ابتدا یک درخواست وب (web request) ایجاد میکند و سپس با استفاده از ورودی create آدرس دریافت شده از ورودی را به درخواست اضافه میکند و بعد از فراخوانی تابع دریافت پاسخ (get response stream) یک جریان داده (stream) برگردانده می شود که شامل محتوای فایل درخواست شده در اینترنت است و سپس با ایجاد یک خواننده جریان (stream reader) محتویات آن را خط به خط خوانده و به خروجی اضافه میکند در انتها محتوا را به صورت رشته برمیگرداند.

خواندن اطلاعات از پایگاه داده اسکیوال در ویژوال بیسیک ۲۰۱۰

در اینجا می خواهیم برای دسترسی به اطلاعات یک پایگاه داده اسکیوال به آن متصل شده و با اجرای یک کوئری اطلاعات مورد نیاز را دریافت کنیم:

برای اتصال به پایگاه داده باید ابتدا رشته اتصال (connection string) که مشخص کننده تنظیمات و محل وجود فایل پایگاه داده برای اتصال به آن است را ایجاد کینم.

قالب کلی این رشته به صورت زیر است :

Data Source=.SQLEXPRESS;AttachDbFilename=” آدرس فایل دیتابیس با پسوند ام دی اف”;Integrated Security=True;User Instance=True

با داشتن این رشته می توان به پایگاه داده مشخص شده متصل شد، برای اینکار باید یک اتصال(connection) جدید ایجاد کرد :

Dim Connection As New SqlConnection
Connection.ConnectionString = cstream

Connection.Open()

cstream در اینجا متغیری از نوع رشته است که connection string که در بالا شرح داده شد در آن قرار دارد. پس از ایجاد اتصال اسیکوال و مشخص کردن رشته اتصال با فراخوانی روال open اتصال برقرار می شود.

Dim SelectStatement As String
SelectStatement = “SELECT * FROM TableName ”
Dim DataAdapter = New SqlDataAdapter(SelectStatement, connection)
Dim CmdBuilder = New SqlCommandBuilder(DataAdapter)
DataTBL.Clear()
DataAdapter.Fill(DataTBL)

برای اینکه اطلاعات یک جدول را بخوانیم باید از دستور اسکیوال select استفاده کنیم ، با مشخص کردن نام جدول در این دستور و اجرای کد بالا اطلاعات جدول مشخص شده در یک ساختار داده برای نگهداری جدول ها به نام DataTable ریخته می شود که با استفاده از آن می توانیم به داده های درون جدول دسترسی پیدا کنیم.

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

DataTBL.Rows(0)(“ID”)

در انتها نیز با فراخوانی close اتصال را خاتمه می دهیم.

connection.close();