یِاهو مارکت

فروشگاه یاهو

یِاهو مارکت

فروشگاه یاهو

مقاله35- بررسی پایگاه داده در محیط نرم‌افزارهای ACCESS , SQL صفحه125

مقاله35- بررسی پایگاه داده در محیط نرم‌افزارهای  ACCESS , SQL صفحه125

مقاله35- بررسی پایگاه داده در محیط نرم‌افزارهای ACCESS , SQL صفحه125

فهرست مطالب

عنوان صفحه

فصل اول: بررسی بانک اطلاعاتی SQL. .. 11

الف ـ آشنایی و استفاده از دستور SELECT .. 12

دستور SELECT .. .. 13

پرس و جو با استفاده از DISTINCT... . 14

عبارات ... 15

شرایط... 15

عملگرها.. . 16

عملگردهای ریاضی .. 16

عملگردهای مقایسه‌ای.... 16

عملگرهای کاراکتری.. . 17

عملگرهای منطقی... . 19

عملگرهای مجموعه‌ای. . 20

عملگرهای دیگر.... . 21

توابع . .. 23

توابع جمعی..... 23

توابع تاریخ و زمان .. 24

توابع ریاضی..... 26

توابع کاراکتری...................................................................................................... 26

توابع تبدیلی............................................................................................................ 29

ب ـ آشنایی و استفاده از دستورات پردازش‌ها.................................................... 29

جملات پردازش داده‌ها.......................................................................................... 29

درج داده‌ها با استفاده از جمله INSERT .......................................................... 31

درج یک رکورد با استفاده از INSERT … VALUES ................................... 31

درج چندین رکورد با استفاده از INSERT … SELECT ............................... 32

تغییر نوع داده‌های موجود با استفاده از جمله DELETE ................................. 34

ورود و صدور داده‌ها از منابع خارجی................................................................ 36

شبه جملات در پرس و جوهای SQL ................................................................. 38

تعیین معیاری با شبه جمله WHERE ................................................................ 38

شبه جمله STARTING WITH ....................................................................... 38

شبه جمله ORDER BY .................................................................................... 39

شبه جمله GROUP BY .................................................................................... 40

شبه جمله HAVING ......................................................................................... 40

فصل ج ـ آشنایی و استفاده از دستورات تعریف داده‌ها...................................... 42

ایجاد و نگهداری جداول........................................................................................ 42

شروع کار با جمله ایجاد پایگاه داده‌ای (CREATE DATABASE)............... 42

راه‌های ایجاد پایگاه داده....................................................................................... 42

طراحی پایگاه داده‌ای............................................................................................. 43

ایجاد یک فرهنگ داده‌ای (کاتالوگ سیستم)........................................................... 45

ایجاد فیلد کلید........................................................................................................ 46

جمله CREATE TABLE ................................................................................ 46

جمله ALTER TABLE .................................................................................... 48

جمله DROP TABLE ...................................................................................... 50

جمله DROP DATABASE ............................................................................ 51

ایجاد شاخص‌ها بر روی جداول جهت بهبود اجرا................................................ 51

استفاده از شاخص‌ها............................................................................................. 51

شاخص‌ها چه هستند؟........................................................................................... 52

نکات شاخص بندی................................................................................................ 54

شاخص‌بندی روی بیشتر از یک فیلد..................................................................... 55

استفاده از کلمه کلیدی UNIQUE به همراه CREATE INDEX .................. 55

شاخص‌ها و اتصال‌ها............................................................................................ 55

ایجاد دیدها........................................................................................................... 57

معرفی دید............................................................................................................. 57

کاربرد دیدها......................................................................................................... 57

تغییر نام ستون‌ها.................................................................................................. 58

پردازش دید در SQL .......................................................................................... 58

محدودیت‌های استفاده از SELECT .................................................................. 59

تغییر داده‌ها در یک دید ........................................................................................ 59

مشکلات تغییر داده‌ها با استفاده از دیدها ............................................................ 59

کاربردهای مشترک دیدها .................................................................................... 60

استفاده از دیدها برای تبدیل واحدها ................................................................... 61

ساده‌سازی پرس و جوهای پیچیده با استفاده از دیدها ...................................... 62

حذف دیدها با استفاده از جمله DROP VIEW ................................................ 62

د ـ اتصال جداول ................................................................................................. 64

اتصال جدول‌ها به شرط تساوی .......................................................................... 64

اتصال جدول‌ها به شرط عدم تساوی .................................................................. 65

اتصال جدول‌ها با استفاده از کلمه کلیدی JOIN ................................................ 66

اتصال درونی (INNER JOIN) ......................................................................... 66

اتصال بیرونی (OUTER JOIN) ....................................................................... 66

ه ـ کنترل جامعیت داده‌ها ................................................................................... 68

معرفی محدودیت‌ها .............................................................................................. 68

جامعیت داده‌ها ..................................................................................................... 68

چرا از محدودیت‌ها استفاده می‌کنیم؟ ................................................................... 69

مروری بر انواع محدودیت‌ها ............................................................................... 70

محدودیت‌های NOT NULL .............................................................................. 71

محدودیت‌های کلید اصلی ..................................................................................... 72

محدودیت‌های یکتایی ............................................................................................ 72

محدودیت‌های کلید خارجی .................................................................................. 72

محدودیت‌های کنترل ............................................................................................ 74

محدودیت‌های مدیریتی ......................................................................................... 74

استفاده از ترتیب صحیح ...................................................................................... 75

روشهای مختلف در ایجاد محدودیت‌ها ................................................................ 76

و ـ نرمال سازی پایگاه داده‌ها ............................................................................ 77

پایگاه داده‌ای خام ................................................................................................. 77

طراحی پایگاه داده‌ای منطقی ................................................................................ 77

نیازهای کاربر نهایی چیست؟ ............................................................................... 78

افزونگی داده‌ها ..................................................................................................... 79

فرم‌های نرمال ...................................................................................................... 80

فرم اول نرمال ...................................................................................................... 81

فرم دوم نرمال ..................................................................................................... 81

فرم سوم نرمال .................................................................................................... 81

مزایای نرمال سازی ............................................................................................ 81

معایب نرمال سازی .............................................................................................. 83

از نرمال درآوردن یک پایگاه اطلاعاتی................................................................. 83

فصل دوم: بررسی بانک اطلاعاتی اکسس........................................................... 85

مقدمه..................................................................................................................... 85

آشنایی با اکسس .................................................................................................. 86

تعریف کلی از ACCESS ................................................................................... 88

تکنیک کار در اکسس............................................................................................. 89

طراحی جدول (TABLE) .................................................................................... 90

آشنایی با خصوصیات فیلدها در محیط طراحی.................................................... 91

انواع عملگرها ....................................................................................................... 102

آشنایی با تنظیم خصوصیات محیط ورود داده‌ها (DataSheet View) ............ 103

انواع فیلترها .......................................................................................................... 108

طرز ایجاد Relationship .................................................................................. 109

آشنایی با طراحی Query .................................................................................... 113

ایجاد Query از طریق Design View ............................................................... 114

کاربرد Total در Select Query ....................................................................... 116

آشنایی با Action Query .................................................................................. 117

آشنایی با طراحی فرم (From) ............................................................................ 118

فرم چیست؟ .......................................................................................................... 119

طرز کار Form Wizard .................................................................................... 120

طرز کار AutoForm ......................................................................................... 121

تفاوت فرم و گزارش............................................................................................. 122

آشنایی با طراحی Report ................................................................................... 123

طرز کار Report Wizard ................................................................................. 124

منابع ..................................................................................................................... 125

 

 

مروری بر SQL

تاریخچه SQL از لابراتوار IBM در سان خوزه کالیفرنیا شروع می‌شود. جایی که SQL در اواخر دهه 1970 میلادی شکل گرفت.

کلمه SQL برگرفته از حروف اول کلمات Structuted Query Language ساخته شده و اغلب اوقات اشاره به sequel می‌‍‌کند.

این زبان ابتدا برای محصول DB2 شرکت IBM (یک سیستم مدیریت پایگاه داده‌ای رابطه‌ای یا RDBMS که امروزه نیز برای بعضی محیط‌ها فروخته می‌شود، طراحی شد.)

در واقع SQL امکان RDBMS را فراهم می‌آورد. SQL یک زبان غیر روالمند می‌باشد، بر خلاف زبان‌های روانمند یا زبان‌های نسل سوم (3 GLs) مثل کوبول و C که در آن زمانها ایجاد شده بودند.

تذکر ـ غیر روانمند یعنی چه به جای چگونه، بطور مثــال SQL می‌گوید که داده‌ها باید ذخیره، حذف، اضافه یا بازیابی شوند بدون آنکه به چگونگی انجام آنها کاری داشته باشد.

ویژگی مهمی که باعث تفاوت بین DBMS و RDBMS می‌گردد، آن است که یک RDBMS از یک زبان مبتنی بر مجموعه‌ها استفاده می‌کند. در اکثر RDBMS ها این زبان، زبان SQL است. در نتیجه SQL زبان مبتنی بر مجموعه‌ها است.

SQL، یک زبان کامپیوتری مبتنی بر استاندارد (American National Standards Institute) ANSI برای بازیابی و بروز رسانی داده‌ها در یک پایگاه داده‌ای می‌باشد و با برنامه‌های پایگاه داده‌هایی مانند MS Access ، DB2 ، MS SQL Server ، Oracle، Sybase و ... کار می‌کند.

از طریق SQL، یک برنامه نویس یا گرداننده داده‌ها می‌تواند کارهای زیر را انجام دهد:

! تغییر ساختار یک پایگاه داده‌ای

! تغییر مشخصات امنیتی سیستم

! امکان اعطای اجازه دسترسی کاربران به پایگاه داده‌ای یا جداول

! پرس و جو از یک پایگاه داده‌ای

استفاده از SQL و پایگاه داده‌ای رابطه‌ای نیز از مهمترین اقدامات انجام شده در جهت توسعه کاربرد Client/Server می‌باشد.

SQL بطور کلی شامل دو گروه از جملات می‌باشد:

1- جملات پردازش داده‌ها (DML)

2- جملات تعریف داده‌ها (DDL)

جملات پردازش داده‌ها (DML) شامل عبارات زیر می‌باشند:

INSERT

DELETE

UPDATE

 

مهمترین عبارات DDL در SQL نیز عبارتند از:

¶CREATE TABLE

¶ALTER TABLE

¶DROP TABLE

¶CREATE INDEX

¶DROP INDEX

¶CREATE VIEW

¶DROP VIEW

در بخش‌های بعد بطور کامل‌تر این دستورات توضیح داده خواهند شد.

 

دستور SELECT

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

توجه ـ هرگاه SELECT استفاده می‌‍شود حتما باید از شبه جملات FROM نیز استفاده شود.


انتخاب تمام ستون‌ها:

SELECT * FROM table_name

 

انتخاب ستون‌های خاص:

SELECT column_name(s)

FROM table_name

تذکر ـ در بعضی از نرم‌افزارهای SQL علامت سمیکولن (;) در انتهای جمله به مفسر می‌گوید که پرس و جو تمام شده است. به عنوان مثــال SQL*plus اوراکل، پرس و جویی را اجرا نمی‌کند تا زمانیکه یک سمیکلون (یا یک اسلش (/)) را پیدا نکند. در حالی که بعضی دیگر از نرم افزارهای SQL از سمیکلون به عنوان انتهای یک جمله SQL استفاده نمی‌کنند. به عنوان مثــال پرس و جو در مایکروسافت نیازی به تمام کننده ندارد زیرا پرس و جو در جعبه ویرایش تایپ می‌شود و وقتی دکمه‌ای را فشار دهیم اجرا می‌گردد.

پرس و جو با استفاده از DISTINCT

برخی اوقات در جداول بعضی از اقلام داده‌ای تکرار می‌شون. اگر آنچه نیاز داریم آن است که بدانیم چه مقادیر متفاوتی در یک ستون وجود دارند، از دستور زیر استفاده می‌کنیم:

SELECT DISTINCT column_name(s)

FROM table_name

این جمله اقلام داده‌ای تکراری در ستون مورد نظر را حذف می‌کند. به عبارت دیگر DISTINC باعث محدود شدن نتایج خروجی می‌شود به شکلی که داده‌های تکراری در جواب ظاهر نمی‌شوند.

عبارات

یک عبارت یک مقدار را برمی‌گرداند. از نقطه نظر نوع داده، عبارت انواع متفاوتی دارد مثل رشته، عدد و بولین. در واقع هر چیزی پس از شبه جمله (بطور مثــال SELECT یا FROM) بیانگر یک عبارت است. در مثــال زیر amount یک عبارت است که مقدار ستون omount را بر می‌گرداند:

SELECT amount FROM checks

شرایط

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

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

قاعده نگارش شبه جمله WHERE :

SELECT column_name(s)

FROM table_name

WHERE condition


عملگرها

عملگرها عناصری هستند که برای بیان چگونگی شرایط مورد نظر جهت استخراج داده‌ها در داخل یک عبارت استفاده می‌شوند. عملگردها به 6 گروه تقسیم می‌شوند: ریاضی، مقایسه‌ای، کاراکتری، منطقی، مجموعه‌ای و متفرقه.

¨ عملگرهای ریاضی

عملگردهای ریاضی عبارتند از: جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/) و باقیمانده صحیح (% یا MOD).

¨ عملگردهای مقایسه‌ای

عملگرهای مقایسه‌ای، عبارات را مقایسه نموده و یکی از این سه مقدار را بر می‌گردانند: صحیح (True)، غلط (False) یا ناشناخته (Unknown).

در فرهنگ اصطلاحات پایگاه داده‌ها، هیچ (NULL) به معنای عدم حضور داده در یک فیلد است. اما بدین مفهوم نیست که فیلد دارای مقدار صفر یا بلانک (blank) است. صفر یا بلانک یک مقدار است در حالیکه هیچ یعنی آن فیلد چیزی ندارد.

اگر مقایسه‌ای مثل field=9 را انجام دهیم و بدانیم تنها مقدار قابل قبول برای آن فیلد هیچ است، آنگاه نتیجه مقایسه ناشناخته است. چون ناشناخته یک شرط نامناسب است، نسخه‌های مختلف SQL ، مقدار ناشناخته را با مقدار غلط جایگزین می‌نمایند و عملگر خاص IS NULL را برای آزمایش شرط NULL ارائه می‌دهند.

عملگرهای مقایسه‌ای عبارتند از: مساوی (=)، بزرگتر از (> ) ، بزرگتر یا مساوی با (=>)، کوچکتر از (<)، کوچکتر یا مساوی با (=<) و نامساوی (= ! یا < >).

توجه ـ برای پیدا کردن مقادیر فیلدهای کاراکتری باید از علامت کوتیشن در طرفین مقدار مورد نظر استفاده شود. فیلدهای عددی نیازی به استفاده از علامت کوتیشن ندارند.

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

توجه ـ حروف بزرگ معمولا قبل از حروف کوچک ذخیره می‌شوند (ارزش کاراکتری حروف بزرگ کمتر از حروف کوچک است).

¨ عملگردهای کارکتری

از عملگردهای کاراکتری برای پردازش رشته‌های کاراکتری استفاده می‌شود (هم در خروجی داده‌ها و هم به منظور گذاشتن شرطی روی داده‌هایی که باید بازیابی گردند.)

! عملگر LIKE

گاهی اوقات می‌خواهیم بخشی از اطلاعات پایگاه داده‌ها را که دارای الگوی خاصی است ولی کاملا یک داده خاص را نمی‌پوشاند، انتخاب و بازیابی نماییم. یک روش طولانی و خسته کننده آن است که الگوی مورد نظر را در حالات مختلف ممکن در سرتاسر پایگاه داده‌ها به همراه علامت = استفاده کنیم. راه حل بعدی استفاده از LIKE است.

SELECT coumn_name FROM table_name

WHERE column_name LIKE pattern

مثــال/

SELECT * FROM customers

WHERE LastName LIKE S%

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

تذکر ـ از علامت % می‌توان در ابتدا، انتها و یا در هر دو طرف الگو (pattern) استفاده کرد.

اگر بخواهیم داده‌هایی را پیدا کنیم که یک یا چند کاراکتر از آن را در اختیار داریم، باید از نوع دیگری از wildcard، یعنی underscore (_ ) استفاده کنیم.

مثــال/

SELECT * FROM friends

Where phone LIKE 223_5_8_

همچنین می‌توان از ترکیب این دو Wildcard نیز استفاده کرد.

 

مثــال/

SELECT * FROM customers

WHERE LastName LIKE _b%

با استفاده از این مثــال تمام رکوردهایی که دومین کاراکتر نام خانوادگی آنها b است، پیدا می‌شوند.

عملگر «: عملگر» (لوله مضاعف) دو رشته را به هم متصل می‌کنند.

تذکر ـ بعضی از نسخه‌های SQL جهت اتصال از علامت جمع استفاده می‌کنند.

¨ عملگرهای منطقی

عملگرهای منطقی، دو یا چند شرط را در شبه جمله WHERE از یک جمله SQL جدا می‌کنند.

!عمگر AND : دو عبارت منطقی را ترکیب می‌کند. باید هر دو شرط داده شده در طرفین AND صحیح باشند تا نتیجه AND صحیح گردد. اگر یکی از شروط در طرفین AND غلط باشد، نتیجه AND غلط می‌گردد.

SELECT column_name(s)

FROM table_name

WHERE conditionl AND condition

! عملگر OR : از OR برای ارتباط شروط استفاده می‌شود. کافی است که یکی از شرط‌های دو سمت OR صحیح باشد تا نتیجه OR صحیح گردد و در صورتی نتیجه OR غلط است که هر دو شرط دو سمت OR غلط باشند.

SELECT column_name(s)

FROM table_name

WHERE conditionl OR condition2

!عملگر NOT : شرط داده شده را منفی می‌کند. به عبارتدیگر اگر شرط داده شده قبل از NOT غلط باشد، بعد از اعمال NOT صحیح می‌شود و بالعکس.

NOT همچنین می‌تواند با عملگر IS زمانیکه از NULL استفاده می‌کنیم، همراه شود.

¨ عملگرهای مجموعه‌ای

! عملگرهای UNION و UNION ALL :

UNION، اجتماع دو مجموعه پرس و جو را بدون تکرار برمی‌گرداند.

UNION ALL نیز شبیه UNION می‌باشد بجز آنکه تکراری‌ها را حذف نمی‌کند.

SQL STATEMENT 1

UNION/UNION ALL

SQL STATEMENT 2

! عملگر INTERSECT : رکوردهایی را برمی‌گرداند که در هر دو پرس و جو وجود داشته باشند (مشترک باشند).

SQL STATEMENT 1

INTERSECT

SQL STATEMENT 2

! عملگر MINUS : کلیه ردیف‌هایی را ه در پرس و جوی اول هستند ولی در پرس و جوی دوم نیستند، برمی‌گرداند.

SQL STATEMENT 1

MINUS

SQL STATEMENT 2

¨ عملگرهای دیگر

! عملگر IN : از عملگر IN هنگامی استفاده می‌شود که مقدار دقیق آنچه را که می‌خواهیم برگردانده شود، را بدانیم.

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value 1, value 2, …)

 

 

مثــال/

SELECTB * FROM customers

WHERE LastName IN (¢Hansen ¢ / ¢ Pettersen¢)

در مثــال فوق مشخصات مشتریانی که نام خانوادگی آنها Hansen و یا Pettersen می‌باشد، برگردانده می‌شود.

s عملگر BETWEEN … AND : عملگر BETWEEN … AND، بازده‌ای از داده‌ها را که بین د و مقدار موردنظر قرار دارند را برمی‌گرداند. (مقادیر موردنظر می‌توانند عدد، متن و یا تاریخ باشند).

تذکر ـ نتیجه عملگر BETWEEN … AND در پایگاه داده‌های مختلف متفاوت است. در بعضی از پایگاه‌ داده‌ها، BETWEEN … AND تنها مقادیری را که بین دو مقدار موردنظر قرار دارند، برمی‌گرداند. در بعضی از پایگاه داده‌ها مقادیری که بین دو مقدار موردنظر قرار دارند و شامل آن مقادیر نیز می‌باشند، برگردانده می‌شوند و در برخی دیگر مقادیر بین دو مقدار موردنظر به همراه یکی از مقادیر سمت چپ و یا سمت راست به عنوان نتیجه برگردانده می‌شوند.


توابع

استفاده از توابع SQL این امکان را می‌دهد تا کارهای خارق‌العاده‌ای مثل جمع یک ستون یا تغییر تمام کاراکترهای یک رشته به حروف بزرگ را انجام دهیم.

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

SELECT function (column)

FROM table – name

WHERE condition

s توابع جمعی

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

توجه ـ نمی‌توان از توابع جمعی (گروهی) در شبه جمله WHERE استفاده کرد.

sCOUNT : این تابع تعداد ردیف‌هایی را برمی‌گرداند که شرایط موجود در جلوی شبه جمله WHERE را تامین می‌کنند.

sSUN : این تابع مجموع مقادیر یک ستون عددی را برمی‌گرداند.

sAVG: تابع AVG میانگین یک ستون را محاسبه می‌کند.

AVG نیز مانند تابع SUN فقط برای فیلدهای عددی بکار می‌رود.

sMAX: این تابع بزرگترین مقدار یک ستون را پیدا می‌کند.

تابع MAX هم با اعداد کار می‌کند و هم با رشته‌های کاراکتری.

sMIN : تابع MIN شبیه تابع MAX است با این تفاوت که کوچکترین مقدار یک ستون را برمی‌گرداند. این تابع نیز هم با اعداد کار می‌کند و هم با رشته‌های کاراکتری.

sVARIANCE : مربع انحراف استاندارد را نشان می‌دهد که عددی حیاتی برای بیشتر محاسبات آماری است. این تابع از توابعی است که فقط با فیلدهای عددی کار می‌کند.

sSTDDEV : این تابع مقدار انحراف استاندارد یک ستون از اعداد را پیدا می‌کند.

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

s توابع تاریخ و زمان

ما در تمدنی زندگی می‌کنیم که توسط زمان و تاریخ اداره می‌شود و بیشتر کاربردهای SQL دارای توابعی برای فایق آمدن بر این مفاهیم هستند.

تذکر ـ این توابع از نوع داده Date استفاده می‌کنند.

sADD MONTHS: این تابع تعدادی ماه به تاریخ مشخصی اضافه می‌کند. بطور مثــال ممکن است مطلب فوق‌العاده‌ای اتفاق افتاده باشد و پروژه‌ای برای مدت دو ماه متوقف شده باشد و حالا اگر بخواهیم برنامه‌ریزی جدیدی ارائه دهیم، از این تابع استفاده می‌کنیم.

sLAST DAY: این تابع، آخرین روز یک ماه بخصوص را پیدا می‌کند.

sMONTHS – BETWEEN : اگر بخواهیم بدانیم که چند ماه بین ماههای x و y قرار می‌گیرد، از این تابع استفاده می‌کنیم. این تابع به ترتیب قرار دادن ماهها حساس است بنابراین بطور مثــال می‌توان از یک نتیجه منفی برای تعیین اینکه آیا تاریخی قبل از تاریخ دیگری اتفاق افتاده است یا نه، استفاده کرد.

sNEW – TIME : اگر بخواهیم زمان را براساس زمان منطقه‌ای تطبیق دهیم، باید از این تابع استفاده کنیم. در جدول صفحه بعد، زمان مناطق موردنظر که با این تابع قابل استفاده هستند، آورده شده است:

s NEXT – DAY : این تابع نام اولین روز هفته که مساوی با تاریخ بخصوصی است و یا بعد از تاریخ معینی می‌آید را بدست می‌آورد.

sSYSDATE : این تابع تاریخ و زمان سیستم را برمی‌گرداند.


s توابع ریاضی

بسیاری از اطلاعات که از پایگاه داده‌ها بازیابی می‌کنیم نیاز به محاسبات ریاضی دارند. نمونه‌هایی از توابع ریاضی عبارتند از: ABS, CEIL, DLOOR, SIN, COS, TAN, SINH, COSH, EXP, LN, LOG, MOD, POWER, SIGN, SQRT, و ...

s توابع کاراکتری

بسیاری از نسخه‌های SQL امکان استفاده از توابع کاراکتری و رشته‌ای را فراهم می‌آورند.

sCHR: این تابع، کاراکتر معادل عدد داده شده در آرگومان را برمی‌گرداند. کاراکتری که برگردانده می‌شود بستگی به مجموعه کاراکترهای پایگاه داده مورد استفاده (مثلاً ASCII و ...) دارد.

sCONCAT : این تابع همان عمل عملگر || را انجام می‌دهد. (دو رشته را به هم متصل می‌کند).

sINITCAR : این تابع اولین حرف یک کلمه را به حرف بزرگ و سایر حروف کلمه را به حروف کوچک تبدیل می‌کند.

sLOWER : این تابع تمام کاراکترها را به حروف کوچک تبدیل می‌کند.

sUPPER : این تابع عکس تابع LOWER عمل می‌کند. (تمام کاراکترها را به حروف بزرگ تبدیل می‌کند).

sRPAD , LPAD : حداقل 2 و حداکثر 3 آرگومان رشته کاراکتری است که عملیات روی آن انجام می‌شود. آرگومان دوم، تعداد کاراکتری است که باید اضافه شود و آرگومان سوم که اختیاری نیز می‌باشد، نشان دهنده کاراکتری است که باید اضافه شود. پیش فرض سومین آرگومان بلانک (blank) یا می‌تواند یک کاراکتر تنها و یا رشته‌ای از کاراکترها باشد.

sRTRIM , LTRIM : حداقل یک و حداکثر دو آرگومان دارند. اولین آرگومان یک رشته کاراکتری است و دومین آرگومان که اختیاری نیز می‌باشد یا یک کاراکتر است یا یک رشته کاراکتری و یا پیش فرض‌اش یک بلانک (blank) است. اگر از آرگومان دوم استفاده کنیم و بلانک نیز نباشد، توابع TRIM کاراکترها را می‌اندازند. (حذف می‌کنند)

sREPLACE : کاراکتری را به جای کارکتر دیگری در یک رشته کاراکتری جایگزین می‌کند. این تابع سه آرگومان دارد. اولین آرگومان، رشته مورد جستجو را مشخص می‌کند. دومین آرگومان کلید جستجو است و آخرین آرگومان، رشته جایگزین اختیاری است. اگر سومین آرگومان نوشته نشود و یا بلانک (blank) درنظر گرفته شود، هر نمونه از کلید جستجو که در داخل رشته جستجو می‌شود، برداشته شده و به جای آن چیزی جایگزین نمی‌گردد. اگر آرگومان سوم را داشته باشیم، این آرگومان به جای هر نمونه از کلید جستجو در رشته موردنظر جایگزین خواهد شد. اگر دومین آرگومان خالی باشد، رشته موردنظر بدون تغییر باقی خواهد ماند.

sSUBSTR : این تابع سه آرگومان این امکان را می‌دهد که قطعه‌ای از یک رشته را بتوان انتخاب نمود. اولین آرگومان، رشته موردنظر است. دومین آرگومان امکان اولین کاراکتر رشته را مشخص می‌کند. سومین آرگومان تعداد کاراکتری را که باید انتخاب شود را نشان می‌دهد. اگر در دومین آرگومان از عدد منفی استفاده کنیم، نقطه شروع با شمردن از انتها شروع می‌شود. اگر آرگومان سوم را نداشته باشیم، باقیمانده رشته برگردانده می‌شود.

sTRANSLATE : این تابع سه آرگومان دارد: رشته موردنظر، رشته FROM و رشته TO. عناصر رشته موردنظر که در رشته FROM رخ می‌دهد، به عناصر وابسته در رشته TO تبدیل می‌شود.

sINSTR : با استفاده از این تابع، محل وجود یک رشته کاراکتری در داخل رشته‌ای دیگر مشخص می‌شود. اولین آرگومان، رشته موردنظر می‌باشد. آرگومان دوم، الگوی موردنظر است. سومین و چهارمین آرگومان اعدادی هستند که شروع جستجو و تعداد کاراکتر مورد جستجو را نشان می‌دهد.

تذکر ـ پیش فرض سومین و چهارمین آرگومان یک است. اگر سومین آرگومان منفی باشد، شروع جستجو از انتهای رشته انجام خواهد شد.

sLENGTH : این تابع طول یک رشته کاراکتری را برمی‌گرداند.


s توابع تبدیلی

این توابع، راه‌های ساده‌ای برای تبدیل یک نوع داده به نوع دیگری از داده را ارائه می‌دهند.

sTO CHAR : این تابع، یک عدد را به کاراکتر تبدیل می‌کند.

توجه ـ ممکن است برخی از نسخه‌های SQL از این تابع جهت تبدیل سایر انواع داده به نوع کاراکتری استفاده کنند (مثل Date به کاراکتر) و یا از فرمت دیگری برای این تابع و آرگومان‌های آن استفاده نمایند.

sTO NUMBER : این تابع یک رشته عددی را به یک عدد تبدیل می‌کند.

جملات پردازش داده‌ها

تا این مرحله یاد گرفتیم که چگونه داده‌ها را از پایگاه داده‌ای با استفاده از دستور SELECT بازیابی کنیم. بعد از اینکه داده‌ها بازیابی شد، آن را می‌توانیم در یک برنامه کاربردی بکار برده و یا آن را تصحیح کنیم. جملات زیر این امکان را به ما می‌دهند تا داده‌های داخل یک جدول پایگاه اطلاعاتی را پردازش کنیم:

s جمله INSERT (درج)

s جمله UPDATE (بهنگام سازی)

s جمله DELETE (حذف)

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

بیشتر سیستم‌های پایگاه داده‌ای رابطه‌ای ابزاری برای صدور و ورود داده‌ها تهیه کرده‌اند. این داده‌ها معمولا به شکل یک فایل متن محدود شده‌ای ذخیره می‌شوند. اغلب یک ساختار فایل ذخیره شده شامل اطلاعاتی درباره جدولی است که وارد شده است. ابزاری مثل SQL * Loader در اوراکل BCP در SQL Seever، Import / Export در اکسس مایکروسافت.

 


درج داده‌ها با استفاده از جملهINSERT

جمله INSERT این امکان را به ما می‌دهد تا داده‌ها را وارد پایگاه داده‌ای کنیم. این جمله می‌تواند به دو جمله تقسیم شود:

INSERT … VALUES

INSERT … SELECT

 

در یک رکورد با استفاده از INSERT … VALUES

نحوه نگارش جمله INSERT … VALUES داده‌ها را به داخل یک جدول به شکل یک رکورد درج می‌کند. این جمله برای عملیات کوچکی که درگیر چند رکورد است، مناسب می‌باشد. نحوه نگارش این جمله به شکل زیر است:

INSERT INTO table – name (column – namel, column – name2, …)

VALUES (nalue1 , value2, …)

فرمت اصلی جمله INSERT … VALUES با استفاده از ستون‌هایی که مشخص نموده‌ایم یک رکورد به جدول اضافه می‌کند و مقادیر مربوطه را به داخل این ستون‌ها اضافه می‌نماید.

در هنگام استفاده از این جمله سه قاعده را باید در موقع اضافه نمودن داده‌ها به جدول درنظر بگیریم:

1) باید نوع داده مقادیر بکار رفته با نوع داده فیلدهایی که اضافه شده‌اند یکسان باشد.

2) اندازه داده‌ها باید در قالب ستون گنجانده شوند. مثلا یک رشته 80 کاراکتری نمی‌تواند در داخل یک ستون 40 کاراکتری اضافه شود.

3) مکان داده در VALUES باید مطابق مکان ستونی باشد که باید داده به آن ستون اضافه شود. (یعنی اولین مقدار باید به داخل اولین ستون و دومین مقدار به دومین ستون و ... اضافه شود).

توجه ـ در جمله INSERT، نام ستون الزامی نیست و اگر نام ستون قید نشده باشد SQL مقادیر را بر طبق شماره ستون‌های آنها قرار می‌دهد. به عبارت دیگر، SQL اولین مقدار را در اولین ستون و دومین ستون را در دومین ستون و الی آخر درج می‌کند.

INSERT INTO table – name

VALUES (value1, value2, …)

درج چندین رکورد با استفاده از جمله INSERT … SELECT :

جمله INSERT … SELECT هنگامی کاربرد دارد که بخواهیم رکوردهای زیادی را به یک جدول اضافه کنیم. در چنین حالتی جمله INSERT … SELECT خیلی مفید است و این امکان را به برنامه نویس می‌دهد تا اطلاعاتی را از جدولی یا گروهی از جدول‌ها به داخل جدول دیگر منتقل کند.

نحوه نگارش جمله INSERT … SELECT بصورت زیر است:

INSERT INTO table – name (column – namel, column – name2, …)

SELECT column – namel column – name2, …

FROM table – name

WHERE seaech – condition

در جمله INSERT … SELECTقواعد زیر وجود دارد:

1) جمله SELECT نمی‌تواند ردیف‌هایی از جدول را انتخاب کند که در حال درج در آن هستیم.

2) تعداد ستون‌های جمله INSERT INTO باید مساوی با تعداد ستون‌های برگشتی از جمله SELECT باشد.

3) نوعت داده‌ها در جمله INSERT INTO باید مساوی با نوع داده‌های ستون‌های برگشتی از جمله SELECT باشد.

استفاده دیگر جمله INSERT … SELECT بازگرداندن جدولی است که شما آن را حذف و یا ایجاد کرده‌اید. (تهیه Back Up)

SELECT *

INTO new – table – name

FROM original – table – name

و یا:

INSERT INTO new – table – name

SELECT *

FROM original – table – name

حال می‌توانیم تغییرات موردنظر را در جدول اصلی با خیالی راحت اعمال نماییم.

تغییر نوع داده‌های موجود با استفاده از جمله UPDATE

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

UPDATE table – name

SET column – namel = new – valuel [ , column – name2 = new – value2, …]

WHERE search – condition

این جمله شبه جمله WHERE را کنترل می‌کند. برای تمام رکوردهای جدول داده شده شبه جمله WHERE به مقدار TRUE ارزیابی می‌شود و بهنگام می‌گردد.

توجه ـ اگر شبه جمله WHERE را از جمله UPDATE حذف کنیم، تمام رکوردهای داده شده با مقدار داده شده بهنگام می‌شوند.

حذف اطلاعات به کمک جمله DELETE

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

DELETE FROM table – name

WHERE condition

 

حذف تمام سطرها:

DELETE FROM table – name

و یا:

DELETE * FROM table – name

بسته به استفاده از جمله WHERE در جمله DELETE، SQL می‌تواند کارهای زیر را انجام دهد:

ـ یک ردیف را حذف کند.

ـ چندین ردیف را حذف کند.

ـ تمام ردیف‌ها را حذف کند.

ـ هیچ ردیفی را حذف نکند.

در اینجا به چند نکته اشاره می‌شود. وقتی از جمله DELETE استفاده می‌کنیم:

s جمله DELETE نمی‌تواند یک فیلد را حذف کند. (به جای آن از UPDATE استفاده می‌کنیم)

s جمله DELETE تمام رکورد را از یک جدول حذف می‌کند.

توجه ـ شبه UPDATE, INSERT، حذف رکوردها از یک جدول ممکن است باعث بروز مشکلات جامعیت در داخل جداول دیگر گردد. این مطلب مهم را وقتی در داخل یک پایگاه داده‌ای مشغول تغییر هستیم، باید درنظر داشته باشیم.



یاهومارکت
بخاطر بسپارید



مقاله34- ایجاد و مدیریت شبکه های اطلاعاتی مبتنی بر تجهیزات سخت افزاری سیسکو

مقاله34- ایجاد و مدیریت شبکه های اطلاعاتی مبتنی بر تجهیزات سخت افزاری سیسکو

مقاله34- ایجاد و مدیریت شبکه های اطلاعاتی مبتنی بر تجهیزات سخت افزاری سیسکو

فصل اول... 10

LAN... 10

WAN... 10

شبکه‌های نوع Circuit-Switched.. 10

شبکه‌های نوع Cell-Switched.. 11

Packet-Switched.. 11

MAN... 12

Intranet, Extranet, Internet. 12

VPN... 13

فصل دوم.. 13

OSI Reference Model13

مزایای مدل OSI. 14

خصوصیات مدل OSI. 14

Application Layer. 15

Peresentation Layer. 16

Session Layer. 16

Transport Layer. 17

Network Layer. 17

Data Link Layer. 18

Physical Layer. 19

فیبرهای نوری.. 20

Unicast. 21

Multicast. 22

Broadcast. 23

Ethernet. 23

انواع مختلف Ethernet. 25

IEEE 802.3.. 25

IEEE 802.2.. 27

بریج‌ها27

انجام عمل Learning. 28

انجام عمل Forwarding. 28

مشکلاتی که بریج‌ها حل می‌کنند.29

سوئیچ‌ها29

آدرس‌دهی لایه سوم یا Layer-3.. 29

جدول Routing. 31

منافع استفاده از روترها32

Transport Layer. 34

فصل سوم.. 34

TCP/IP.. 34

لایه Application.. 35

لایه Transport. 35

لایه Internet. 35

IP Datagram... 36

ICMP.. 36

ARP و RARP.. 37

مقدمه‌ای بر آدرس‌دهی IP.. 41

انواع کلاس‌های ادرس IP.. 42

Private IP address. 42

Subnetting. 43

Subnet Masks. 45

فصل چهارم.. 46

آشنایی با محصولات سیسکو. 46

Hubs. 47

سوئیچ‌ها48

روترها48

LEDها و مراحل بوت شدن سوئیچ.. 49

روترها49

پورتها و کنسولها50

پورت کنسول. 51

Interface‌های فیزیکی موجود در روی دستگاه. 52

ترکیب دستورات به کار رفته برای دسترسی به Interfaceهای سوئیچ.. 52

ترکیب دستورهای به کار رفته برای دسترسی به Interfaceهای روتر. 53

چگونگی کابل‌کشی Ethernet. 54

وسایل کابل‌کشی Ethernet. 55

کابل‌کشی در WAN... 56

فصل 5. 57

مقدمه‌ای بر سیستم عامل IOS.. 58

تنظیمات مقدماتی سوئیچ‌ها59

دسترسی به CLI. 59

EXEC mode. 60

دسترسی به Configuration mode. 61

پسورددهی به EXEC در 2950.. 61

آدرس‌دهی در 2950.. 65

Configuration files. 65

مشاهده محتویات Configuration file. 66

ذخیره کردن تنظیمات اعمال شده. 67

مشاهده تنظیمات اعمال شده دستگاه. 68

دستور show interfaces. 68

دستور show ip.. 71

دستور show version.. 72

تنظیمات مقدماتی روترها73

Configuration mode. 73

نامگذاری روترها73

تنظیمات مربوط به Interfaceهای روتر. 74

مشخص کردن توضیحات مربوط به هر Interface. 75

فعال کردن هر Interface. 75

پیکربندی مربوط به LAN Interfaces. 76

پیکربندی مربوط به Serial Interfaces. 77

آدرس‌دهی در روترها78

تخصیص آدرس IP.. 79

تست عملکرد روتر. 81

دستور show interface. 81

دستور show ip interface. 82

دستور show hosts. 83

دستور show version.. 84

فصل ششم.. 85

قسمت های سخت افزاری روتر سیسکو. 85

ROM... 85

RAM... 86

Flash.. 86

NVRAM... 86

Configuration register. 86

مراحل بوت شدن. 87

(CDP) Cisco Discovery Protocol89

CDP حاوی چه اطلاعاتی است؟. 89

تنظیمات CDP.. 90

آزمایش عملکرد CDP.. 90

Ping. 93

کاربرد Ping در Privilege EXEC.. 94

کاربرد دستور traceroute. 96

استفاده از Simple traceroute. 97

کاربرد telnet. 98

دستور debug. 99

فصل 7. 100

انواع روش های Switching. 100

ـ Store-and-forward.. 101

ـ Cut-through.. 101

ـ Fragment-Free. 101

عملکرد بریج ها و سوئیچ‌ها101

مرحله Learning. 102

مرحله Forwarding. 104

Loops. 104

پروتکل STP.. 106

فصل هشتم.. 106

آشنایی با مفهوم VLANs. 106

Subnetها و VLANها108

قابلیت انعطاف یا Scalability.. 110

انواع اتصالات VLAN... 110

اتصالات Access link.. 111

اتصالات Trunk.. 111

ISL.. 114

802.1Q... 116

پیکربندی Trunk در روی سوئیچ 2950.. 118

ایجاد VLAN... 120

تنظیمات مربوط به VLANها در 2950.. 121

عیب‌یابی VLANها و اتصالات Trunk.. 122

فصل نهم.. 123

انواع Routeها123

Routing Protocols و Routed protocols. 124

پروتکل‌های Distance Vector و Default Route. 124

مزیتهایی که پروتکل های Link State ارائه می‌دهند. 126

معایباستفاد از پروتکل‌های Link state. 127

فصل دهم.. 128

مقدماتی در مورد پروتکل‌های Routing. 128

استفاده از دستور Router. 128

دستور Network.. 129

IP RIP.. 131

پیکربندی IP RIP.. 131

عیب یابی IP RIP.. 134

دستور Show IP protocols. 134

دستور Show IP Route. 135

دستور Debug IP RIP.. 137

IP IGRP.. 138

پیکربندیIP IGRP.. 139

پخش ترافیک یا Load Balancing. 140

فصل یازدهم.. 143

OSPF.. 143

ویژگیهای OSPF.. 143

پیکربندی OSPF.. 144

EIGRP.. 146

عملکرد EIGRP.. 149

فصل دوازدهم.. 152

IP Access List. 152

آشنایی با ACL.. 153

انواع ACL.. 154

مرا حل پردازش ACLها155

فعال کردن ACL.. 158

فصل سیزدهم.. 159

مقدمه‌ای بر ترجمه آدرسها یا Address Translation.. 159

انواع سیستم ترجمه آدرسها یا Address translation.. 162

NAT.. 162

NAT استاتیک.... 162

NAT دینامیک.... 164

PAT.. 165

PAR.. 167

مزایای استفاده از سیستم ترجمه آدرسها یا Address translation.. 168

معایب استفاده از سیستم ترجمه آدرسها یا Address translation.. 169

فصل چهاردهم.. 169

انواع ارتباطات... 169

اتصالات Leased line. 169

اتصالات Circuit-Switched.. 170

اتصالات Packet-Switched.. 172

HDLC.. 174

نوع فریم HDLC.. 174

پیکربندی HDLC.. 175

PPP.. 176

نوع فریم یا Frame Type. 177

LCP و NCP.. 177

پیکربندی PPP.. 178

PPP Authentication یا عمل تشخیص هویت در PPP.. 179

PAP.. 179

CHAP.. 181

فصل پانزدهم.. 184

Frame Relay.. 184

Virtual Circuits. 184

طراحی Full-meshed.. 185

مزیتهای VCs. 186

انواع VC.. 189

PVCs. 189

SVCs. 190

پیکربندی Frame Relay.. 191

پیکربندی LMI. 193

عیب‌یابی LMI. 194

دستور show interfaces. 194

دستور show frame-relay lmi195

دستور debug frame-relay lmi195


فصل اول

LAN

اگر کامپیوترهایی را که در فواصل جغرافیایی کوچک مثل یک طبقه یا یک ساختمان قرار دارند به هم وصل کنیم، به این نوع شبکه‌ها، LAN گفته می‌شود. در شبکه‌های LAN انواع مختلف دستگاه‌ها، مثلRouter , Switch , Hub , Firewall , Pc , File Server , Voice Gateways , … را می‌توان مشاهده نمود. انواع Mediaهای مختلف برای وصل کردن دستگاه‌ها به همدیگر مورد استفاده قرار می‌گیرند. مثل Ethernet, Fast Ethernet (FE), Gigabit Ethernet (GE), Token Ring, FDDI که امروزه کاربرد Ethernet و FE در شبکه‌های موجود زیاد شده است.

 

WAN

اگر تعداد زیادی LAN که در فواصل جغرافیایی زیاد نسبت به هم قرار دارند را به هم وصل کنیم، این نوع از شبکه را به نام WAN می نامیم. چهار نوع مختلف WAN وجود دارد:

1. Circuit-Switched

2. Packet-Switched

3. Cell-Switched

4. Dedicated Connections

 

شبکه‌های نوع Circuit-Switched

این نوع از اتصالات WAN، یک ارتباط موقتی را بین دو قسمت ایجاد می‌کند که این ارتباط از طریق خطوط تلفن انجام می‌پذیرد. مثل اتصالات Dial-up و همچنین ISDN. از این نوع می‌توان هم به عنوان اتصالات اصلی و هم به عنوان اتصالات پشتیبان استفاده نمود.

 

شبکه‌های نوع Cell-Switched

این نوع از شبکه‌ها از یک ارتباط همیشگی استفاده می‌کنند. یعنی دسترسی به شبکه و یا اینترنت بی‌وقفه بوده و همچنین پهنای باند مورد نیاز را برای ما گارانتی می‌کند. امتیاز استفاده از این نوع در آن است که یک دستگاه به صورت همزمان می‌تواند به چندین دستگاه از روی یک Interface وصل شود. همچنین بسته‌های ارسالی توسط این نوع ارتباط دارای اندازه‌های ثابت بوده و بنابراین QoS (Quality of Service) یا کیفیت اتصال بهتری را ارائه می‌دهد. نقطه منفی استفاده از ارتباطات نوع Cell-Switched این است که از لوازم گران‌قیمت‌تری استفاده کرده و همچنین ایجاد و عیب‌یابی آن نیز مشکلتر از بقیه می‌باشد. از همین رو است که بهترین راه انتقال صوت و تصویر، استفاده از همین نوع است. تکنولوژی‌های ATM و SMDS مثال‌هایی برای Cell-Switched می‌باشند.

 

Packet-Switched

برخلاف نوع قبلی که از بسته‌هایی با طول ثابت برای انتقال اطلاعات استفاده می‌کرد، ارتباطات نوع Packet-Switched می‌تواند بسته‌هایی با طول مختلف را عبور دهد. تکنولوژی‌هایی مانند Frame Relay, X.25, DSL مثالهایی بارز از این نوع ارتباطات می‌باشند.

دو نوع جدید از ارتباطات Packet-Switched که در آمریکا به کار برده می شود، DSL و Cable می باشد. DSL نسبت به بقیه تکنولوژیهای WAN، از قیمت کمتری برخوردار بوده و از پهنای باندی تا حداکثر 2 Mbps استفاده می‌کند. همچنین DSL به مقدار فاصله ارتباط مستقیمی دارد. به این صورت که هر چقدر فاصله ما از منبع ارائه دهنده اشتراک DSL بیشتر باشد، سرعت و کیفیت دسترسی کمتر خواهد بود. Cable از کابلهای Coaxial که در ارتباطات تلویزیونی هم مورد استفاده قرار می‌گیرند، استفاده می‌نماید. اما ارتباطات Cable به صورت دسترسی اشتراکی است؛ به این صورت که هر چقدر کاربران بیشتری از آن استفاده کنند، سرعت دسترسی پائین خواهد آمد. هر دوی این تکنولوژیها بعد از ایجاد، به صورت همیشگی در حالت فعال قرار خواهند داشت و نیازی به شماره‌گیری با ISP وجود ندارد.

 

MAN

همانطوریکه WAN بین LANهای مختلف ارتباط برقرار می‌کند، MAN نیز همین کار را در محیط‌های جغرافیایی کوچک انجام می‌دهد. مثلاً در داخل یک شهر. به عبارت دیگر MAN یک ارتباط دوگانه بین LAN و WAN است. ولی برخلاف WAN که از سرعتهای کمتر تا متوسط بهره می‌برد، MAN از سرعتهای بالایی برای انتقال اطلاعات استفاده می‌کند. مثل خطوط T1 (1.544 Mbps) و Optical Services. دستگاه‌هایی که در MAN مورد استفاده قرار میگیرند، عبارتند از High-end, Routers, ATM Switches, Optical Switches.

 

Intranet, Extranet, Internet

بعد از مباحثی که در مورد انواع شبکه مطرح شد، اطلاحالات دیگری هم وجود دارند که باید در مورد آنها اطلاعاتی داشته باشیم.

Intranet: به شبکه‌های داخلی یک شرکت گفته می‌شود که منابع مورد نیاز برای کاربران در داخل همین شبکه قرار داشته و کاربران نیاز ندارند که برای یافتن منابع مورد نیاز خود به محیط عمومی اینترنت دسترسی داشته باشند. یک Intranet می‌تواند شامل LANs, Private WANs, MAN, VPN, SAN باشد.

Extranet: در واقع شبکه‌های Intranet گسترده را Extranet می‌گویند. این شبکه شامل افراد شناخته شده در خارج از شبکه Intranet می‌باشد که نیاز به دسترسی به منابع داخلی دارند. مثلاً کاربران و یا شرکای تجاری شرکت که به وسیله ارتباطات نوع VPN و یا Dial-up اقدام به استفاده از منابع شبکه داخلی می نمایند.

Internet: برخلاف Extranet که برخی از منابع شبکه در محلهای شناخته شده بیرون از Intranet قرار دارد، در اینترنت، منابع در محلهای ناشناخته و پراکنده متعدد ممکن است وجود داشته باشد. در واقع همه افراد ناشناخته موجود در اینترنت قادر به دسترسی به همه منابع می‌باشند.

 

VPN

یک نوع مخصوص از شبکه است که ارتباطات برقرار شده در آن به صورت کاملاً امن صورت می‌گیرد. هنگامی که بخواهیم در محیط‌های عمومی اینترنت دسترسی به منابع را به صورت کاملاً امن انجام دهیم از این نوع شبکه استفاده می‌کنیم. مثلاً در Extranet، کاربران شناخته شده به وسیله استفاده از VPN به منابع داخلی یک شبکه دسترسی پیدا می‌کنند. در هنگام برقراری ارتباط از طریق VPN خصوصیات Confidentiality, Integrity Authentication, نیز مطرح می‌شوند. Authentication یعنی شناسایی هویت کاربران و صدور اجازه دسترسی به کاربران مجاز. Confidentiality یعنی اینکه اطلاعات انتقالی به وسیله خصوصیت Encryption یا پنهان‌سازی به صورتی حمل می‌شوند که قابل خواندن توسط افراد غیرمجاز نیستند. Integrity یعنی هیچکس قادر به تغییر اطلاعات ارسالی در بین راه نمی‌باشد.

فصل دوم

OSI Reference Model

سازمان بین‌المللی (ISO) استانداری برای چگونگی انتقال اطلاعات بین کامپیوتها و دستگاه‌های مختلف ارائه داده است که شامل تمام مراحل از مرحله ورود اطلاعات توسط کاربر تا مرحله تبدیل اطلاعات به سیگنالهای نوری و قرار گرفتن آنها در داخل سیم و یا به صورت بی‌سیم می‌شود. لازم به ذکر است که مدل OSI ایده‌های مطرح در زمینه انتقال اطلاعات را به صورت کلی بیان می‌کند و پروتکلهایی مثل IP و IPX کاملاً با استاندارد مزبور همخوانی ندارند. درک مدل 7 لایه‌ای OSI شما را در مدیریت آسان و عیب‌یابی مشکلات یاری خواهد داد.

 

مزایای مدل OSI

سازمان ISO مدل OSI خود را در 7 لایه ارائه داده است. منظور از این استاندارد، قادر ساختن سازندگان تجهیزات سخت‌افزاری تولید کنندگان نرم‌افزار و مدیران شبکه برای مدیریت شبکه برای مدیریت بهتر و ایجاد تکنولوژیهای پیشرفته جدید و منطبق ساختن آنها با قالبهای استاندارد امروزی است. 7 لایه مورد بحث در این استاندارد هر کدام مرحله‌ای از ارتباط بین دستگاه‌های مختلف را شرح می‌دهد.

یک کامپیوتر شخصی بهترین مدل برای تفهیم مدل OSI است. همانطور که می‌دانیم یک کامپیوتر از اجزای مختلفی تشکیل شده است؛ مثل صفحه نمایش، صفحه کلید، ماوس، CD ROM، RAM، و ... که مجزا بودن هر یک از قطعات باعث می‌شود که در مواقع بروز مشکل، ایرادیابی آن آسانتر باشد. مثلاً اگر CD RAM دارای مشکلی بود به راحتی می‌توان آن را تعویض نمود. مدل OSI نیز همین ایده را بازگو می‌کند.

 

خصوصیات مدل OSI

مدل OSI دارای 7 لایه به شرح زیر است:

لایه 7 : Application Layer

لایه 6 : Presentation Layer

لایه 5 : Session Layer

لایه 4 : Transport Layer

لایه 3 : Network Layer

لایه 2 : Data Layer

لایه 1 : Physical Layer

سه لایه بالایی در ارتباط با نرم‌افزارهایی هستند که کاربر از آنها استفاده می‌کند. 4 لایه پائینی نیز نقش انتقال اطلاعات را بین نرم‌افزارهای موجود در کامپیوترهای مختلف که کاربران از آنها استفاده می‌کنند بر عهده دارند. هر لایه نقش مجزایی را در این بین انجام می‌دهد. البته بیان این 7 لایه فقط به منظور درک بهتر مراحل انجام کار است و در حقیقت کل مراحل به صورت پیوسته انجام می‌شوند. همانطور که گفته شد پروتکل‌های مختلف کاملاً با استاندارد حاضر سازگاری ندارند. به طور مثال پروتکل IP دارای 4 لایه است که لایه‌های Application، Presentation و Session با هم یکی شده و یک لایه به اسم Application را تشکیل می‌دهند.

 

Application Layer

هفتمین یا بالاترین لایه مدل OSI است. این لایه یک محیط کاری را برای ارتباط بین کاربر و دستگاه ایجاد می‌کند که از این طریق افراد بتوانند با دستگاه ارتباط برقرار نمایند. این محیط می‌تواند گرافیکی و یا به صورت خط دستور CLI (Command Line Interface) باشد. این محیط برای دستگاه‌های سیسکو به صورت خط دستور است در حالیکه مرورگرهای وب مثل اینترنت اکسپلورر مایکروسافت از یک محیط گرافیکی استفاده می‌کنند. لازم به ذکر است که منظور از نرم‌افزارهای گفته شده آنهایی هستند که توانایی استفاده از شبکه را دارا هستند. در حالیکه شاید هزاران نرم‌افزار وجود داشته باشد که نتوانند از امکانات شبکه‌ها استفاده کرده و اطلاعات را از راه شبکه انتقال دهند. حدود 5 سال قبل مرز مشخصی بین نرم‌افزارهایی که می‌توانستند به وسیله شبکه ارتباط برقرار کنند با آنهایی که نمی‌توانستند وجود داشت. مثلاً نسخه‌های اولیه Microsoft Word که فقط دارای یک وظیفه بوده و آن هم پردازش متن و مدیریت اسناد بود. در حالیکه نسخه‌های جدید این نرم‌افزار دارای خصوصیت برقراری ارتباط با دیگران و حتی انجام کارهای گروهی در شبکه نیز هستند. نرم‌افزارهای دیگر نیز همگام با تحول در تکنولوژی قارد به برقراری ارتباط با شبکه می‌باشند. از مهمترین نرم‌افزارهای این دسته می‌توان به موارد زیر اشاره کرد:

Telnet, FTP, Web Browsers, Email, HTTP, SMTP, …

 

Peresentation Layer

ششمین لایه از مدل OSI است. این دو لایه مسئول این است که اطلاعات به چه فرمتی به کاربران نشان داده شوند. مثلاً این لایه در مورد اینکه متنها، تصاویر و فیلم و صدا چگونه به افراد نمایش داده شوند تصمیم می‌گیرند. به عنوان نمونه متن به صورت دو استاندارد ASCII و ABCDIC می‌تواند نمایش داده شود. که ASCII همان استانداردی است که امروزه در دستگاه‌های مختلف استفاده می‌شود و استاندارد ABCDIC نیز در محیطهای Mainframe مورد استفاده قرار می‌گیرد. در مورد تصاویر نیز استانداردهای مختلفی وجود دارد. مثل JPEG, GIF, BMP, PNG, … البته همین تنوع در مورد فایلهای صوتی و تصویری نیز وجود دارد. در بین نرم‌افزارهای موجود، مرورگرهای وب دارای توانایی زیادی در نمایش دادن فایلهایی مثل متنها و تصاویر هستند. همچنین این لایه می‌تواند به وسیله خصوصیت Encryption یا پنهان‌سازی، امنیت فایلها را نیز تأمین کند ولی در تکنولوژی امروز، ارائه دادن راهکارهای امنیتی در انتقال اطلاعات کاری پیچیده بوده و به وسیله مجموعه نرم‌افزارها و پروتکل‌های مختلف انجام می‌گیرد که پردازش بیشتری را نیاز دارد.

 

Session Layer

پنجمین لایه از مدل OSI را تشکیل می‌دهد. این لایه وظیفه تصمیم‌گیری در مورد ایجاد ارتباط با دستگاه‌های دیگر را بر عهده دارد. به این صورت که اگر منابع درخواستی روی سیستم محلی قرار داشت که هیچ، ولی اگر اطلاعات روی سیستمی دیگر در جایی دیگر قرار داشت تصمیم به برقراری ارتباط می‌گیرد. همچنین این لایه مسئول این است که اطلاعات در مسیرهای درست خود انتقال پیدا کنند. همچنانکه وظیفه دارد اطلاعات گرفته شده توسط یک ارتباط را به نرم‌افزار مخصوص به خود انتقال دهد. مکانیسم اصلی ایجاد ارتباط را لایه چهارم یا Transport Layer تشکیل می‌دهد و Session Layer برای ایجاد ارتباط با لایه چهارم مشورت می‌کند.

 

Transport Layer

چهارمین لایه از مدل OSI را تشکیل می‌دهد. این لایه نقش اصلی ارتباط را بر عهده دارد. ارتباط ایجادی می‌تواند هم به صورت مطمئن یا Reliable و هم به صورت نامطمئن یا Unreliable باشد. در نوع Relible این لایه مسئولیت کشف خطا و اصلاح آن را بر عهده دارد. به این صورت که در مواقع بروز مشکل، این لایه اقدام به فرستادن دوباره اطلاعات خواهد کرد. در ارتباطات نوع Unreliable این لایه فقط وظیفه کشف خطا را بر عهده دارد و کار اصلاح خطا را بر عهده لایه‌های بالاتر، مثلاً لایه Application می‌گذارد. مثال برای ارتباطات Reliable. پروتکل TCP است و پروتکل UDP نمونه‌ای برای ارتباطات Unreliable می‌باشد. همچنین می‌توان به SPX به عنوان Reliable اشاره نمود. البته پروتکلهای IP و IPX هر دو ارتباطات Unreliable را ایجاد می‌کنند ولی چون این پروتکلها در لایه Network عمل می‌کنند و نه در لایه Transport، برای همین در این دسته قرار نمی‌گیرند. در طی همین فصل به صورت خیلی جزئی‌تر لایه Transport و عملکرد آن را شرح خواهیم داد.

 

Network Layer

سومین لایه از مدل OSI است. این لایه وظایف کم ولی مهمی را بر عهده دارد که از آن جمله می‌‌توان به موارد زیر اشاره نمود:

این لایه وظیفه آدرس‌دهی لایه سوم شبکه را بر عهده دارد. برای همین هم توپولوژی منطقی یا Logical Topology شبکه را مشخص می‌کند. این آدرسها برای گروه کردن تعدادی از ماشینها با همدیگر مورد استفاده قرار می‌گیرند. آدرسهای لایه سوم دارای دو قسمت Host و Network می‌باشند که قسمت Network دستگاه‌های موجود را در گروه‌ها و یا شبکه‌های جداگانه قرار می‌دهد. آدرسهای لایه سوم همچنین باعث اتصال انواع Mediaهای مختلف به همدیگر می‌شوند. مثلاً FDDI, Token Ring, Ethernet به وسیله این لایه با همدیگر ارتباط برقرار می‌کنند. برای انتقال اطلاعات در بین شبکه‌هایی که از آدرسهای لایه سوم مختلف استفاده می‌کنند، دستگاهی به اسم روتر مورد نیاز است. روترها از اطلاعاتی که از آدرس‌دهی لایه سوم شبکه به دست می‌آورند در یافتن بهترین مسیر برای انتقال اطلاعات بهره می‌برند. از پروتکل‌هایی که در این لایه عمل می‌کنند، می‌توان به IPX , IP و Apple Talk اشاره نمود.

 

Data Link Layer

دومین لایه از مدل OSI است، برخلاف لایه Network که آدرس‌دهی منطقی یا Logical شبکه را بر عهده دارد. وظیفه این لایه آدرس‌دهی فیزیکی شبکه می‌باشد. این نوع آدرس به اسم آدرس MAC یا آدرس سخت‌افزاری نیز نامیده می‌شود. همچنین این لایه چگونگی اتصال دستگاه‌ها به Mediaهای مختلف و همچنین نوع فریم آنان را نیز مشخص می‌کند که شامل فیلدهای موجود در فریمهای لایه دوم یا فریمهای Data Link Layer می‌شود. دستگاه‌هایی در این لایه عمل می‌کنند که به یک نوع Media وصل شده باشند و یا به عبارتی دیگر به یک قطعه سیم اتصال داشته باشند. همانطور که به یاد دارید برای اتصال دستگاه‌هایی که به انواع مختلف Media اتصال دارند یک روتر لازم است.

این لایه همچنین مسئول تحویل گرفتن بیت های 0 و 1 از لایه اول و تبدیل آنها به فریمهای لایه دوم است. این لایه می‌تواند در حین انجام کار خطاهای ایجادی را شناسایی کرده و از فریمهای بد چشم‌پوشی کند. البته اصلاح خطاهای ایجاد شده به عهده این لایه نبوده و مسئولیت این کار را لایه چهارم بر عهده دارد. اما تعدادی از پروتکل‌های این لایه ویژگی اصلاح خطاهای ایجادی را نیز پشتیبانی می‌کنند نمونه‌هایی از پروتکل‌هایی که در این لایه عمل می‌کنند در شبکه‌های LAN عبارتند از:

IEEES 802.2, 802.3, 802.5 Ethernet II ANSIs FDDI

و برای شبکه‌های WAN استانداردهای زیر را داریم:

ATM, PPP, HDLC, Frame Relay, SLIP, X.25

دستگاه‌هایی که در این لایه عمل می‌کنند عبارتند از سوئیچ‌ها، روترها و کارتهای شبکه یا همان NICها.

 

Physical Layer

این لایه اولین و در واقع پائین‌ترین لایه موجود در مدل OSI می‌باشد که وظایف زیر را بر عهده دارد.

ـ تعیین نوع Interface که در برقراری ارتباط شرکت خواهد کرد.

ـ تعیین نوع سیم‌هایی که باید به کار برده شوند.

ـ تعیین نوع Connectorهایی که سیمها را به Interfaceها اتصال می‌دهند.

یک نوع از Interface به نام NIC نامیده می‌شود که ممکن است برای مثال کارت 10BaseT باشد و یا یک Interface ثابت روی یک دستگاه سوئیچ.

این لایه همچنین مسئول این است که اطلاعات 0 و 1 را به سیگنالهای الکتریکی و یا سیگنالهای نوری تبدیل کند و این کار را با اندازه گرفتن ولتاژ سیمها و یا اندازه گرفتن فرکانسهای نوری داخل فیبرهای نوری انجام می‌دهد. از جمله دستگاه‌هایی که در این لایه عمل می‌کنند DCEها هستند. یک DCE نقطه پایانی WAN هست و عملیات Synchronization و Clocking را در ارتباط با DTE (روترها و یا کامپیوترهای شخصی) انجام می‌دهد. گروه DCEها شامل مودم‌ها، CSU/DSU، NT1 می‌شوند. در برخی از حالات DCEها را از همان اول در داخل DTE جاسازی می‌کنند. برای مثال برخی از روترهای سیسکو دارای CSU/DSU و یا NT1 در داخل خودشان نیز می‌باشند. کلمه‌های DTE, DCE بیشتر در شبکه‌های WAN کاربرد دارند ولی اگر در LAN به کار برده شوند، منظور از DTE یعنی همان روترها، کامپیوترهای شخصی و یا File Serverها و منظور از DCE یعنی بریج‌ها و سوئیچ‌ها. برخی از استانداردهایی که در لایه اول فعالیت می‌کنند عبارتند از سیمهای Category-3, Category-5, Category-5E, EIA/TIA-232, EIA/TIA-449, MMF, SMF Fiber Channel

و در مورد استانداردهای Connector نیز موارد زیر را برای مثال مطرح می‌کنیم:

AUI, BNC, DB-9, DB-25, DB-60, RJ-11, RJ-45

 

فیبرهای نوری

اصولاً LAN را می‌توان به وسیله هر دوی سیمهای مسی و یا فیبرهای نوری ایجاد کرد. فیبرهای نوری از LEDها و یا نور لیزر برای انتقال اطلاعات استفاده می‌کنند. به این صورت که اگر در داخل فیبر، سیگنال نوری وجود داشته باشد به عنوان یک بیت 1 و اگر سیگنالی وجود نداشته باشد به عنوان یک بیت 0 در نظر گرفته می‌شود. به علت اینکه فیبرهای نوری باعث انتقال بسیارسریع اطلاعات می‌شوند، می‌توان در مواقعی که نیاز به سرعت در فواصل دور (در حدود 10 کیلومتر) داریم، از این فیبرها استفاده کرد. در حالیکه سیمهای مسی نمی‌توانند این ظرفیت را داشته باشند. ولی استفاده از فیبرهای نوری نیز مشکلات مربوط به خود را داراست. برای مثال نصب کردن فیبرهای نوری و عیب‌یابی خطاهای به وجود آمده مشکلتر از سیمهای مسی بوده و همچنین استفاده از فیبرها نیز گرانتر است. فیبرهای نوری به دو نوع وجود دارند: Single-mode و Multimode . فیبرهای Multimode از LED برای انتقال اطلاعات استفاده می‌کنند و ضخامت آنها 850 و یا 1200 نانومتر است. سرعت عبور اطلاعات از فیبرهای نوری Multimode در حدود صدها مگا بایت در ثانیه بوده و همچنین چندین سیگنال نوری به صورت همزمان می‌توانند از داخل یک قطعه از فیبر عبور بکنند. در مقایسه، فیبرهای نوری Single-mode از لیزر برای عبور اطلاعات استفاده می‌کنند و چون ظرفیت لیزر از LED بیشتر است، از اینرو سرعت عبور اطلاعات در این نوع فیبرها به 100 گیگابایت بر ثانیه و حداکثر فاصله 10 کیلومتر نیز می‌رسد. در این نوع فیبرها فقط یک سیگنال در واحد زمان می‌تواند از داخل فیبر عبور نماید. در سالهای اخیر به علت پیشرفتهایی که در زمینه تولید و استفاده از فیبرهای نوری به عمل آمده است خصوصیات پیشرفته زیادی به آنها اضافه گردیده که مهمترین آنها ویژگی WDM و DWDM می‌باشد. به وسیله استفاده از WDM می‌توان بیشتر از دو سیگنال نوری را به صورت همزمان از داخل فیبر عبور داد و با تکنولوژی امروز این مقدار در DWDM به 200 عدد سیگنال نوری در یک قطعه فیبر نوری نیز می‌رسد. البته مهمترین فایده استفاده از DWDM بهره بردن از خصوصیات انعطاف‌پذیری یا Flexibility و Transparency می‌باشد. یعنی می‌توان در یک قطعه از فیبر سیگنالهای نوری و با پروتکل‌های مختلف قرار داد. برای مثال یک سیگنال نوری ATM به همراه سیگنال نوری Ethernet و سیگنال نوری IP می‌توانند به صورت همزمان از فیبر عبور داده شوند. بنابراین به وسیله استفاده از تکنولوژی DWDM می توان با استفاده از یک فیبر نوری اتصالات مختلفی را به صورت همزمان ایجاد نمود و این ویژگی ما را از خریداری تعداد بیشتری فیبر نوری بی‌نیاز می‌کند. برخی از اصطلاحاتی که در استفاده از فیبرهای نوری کاربرد دارند در زیر آورده شده‌اند.

 

 

 

 

آدرس دهی لایه دوم:

Unicast

هدف آدرسهای Unicast فقط و فقط یک دستگاه است. قسمت بالای شکل مثالی برای این نوع ارتباط را نشان می‌دهد. در این مثال، کامپیوتر A یک فریم لایه دوم با آدرس MAC مربوط به کامپیوتر C را در داخل سیم قرار می‌دهد. کل دستگاه‌ها این فریم را دریافت کرده و آدرس گیرنده فریم را با آدرس خودشان مقایسه می‌ کنند که فقط کامپیوتر C این آدرس متناظر را با آدرس خودش تشخیص داده و فریم را پردازش می‌کند ولی بقیه دستگاه‌ها از فریم چشم‌پوشی می‌کنند.

 

 

 

Multicast

برخلاف آدرسهای Unicast این نوع آدرسها گروهی مشخص از دستگاه‌ها را هدف قرار می‌دهند. با اینکه مبحث Multicasting از حیطه این کتاب خارج است، ولی نکته جالب توجه در مورد آن این است که عضویت دستگاه‌ها در این گروه به صورت دینامیک می‌باشد؛ یعنی هر دستگاهی می‌تواند هر وقت که بخواهد عضو آن شود و هر زمانی که بخواهد از آن خارج شود. قسمت وسط شکل مثالی برای آدرسهای Multicast می‌باشد. در این مثال دستگاه A فریمی را با آدرس Multicast در داخل سیم قرار می‌دهد. فرض می‌کنیم در حال حاضر فقط دستگاه‌های A، C و D در این گروه قرار دارند. دستگاه B این فریم را گرفته و بعد از امتحان کردن آدرس گیرنده آن، از فریم چشم‌پوشی می‌کند. دلیل این کار این است که دستگاه B در گروهی نیست که بقیه کامپیوترها در آن گروه قرار دارند.

 



یاهومارکت
بخاطر بسپارید



مقاله31- آسیب پذیری و تهدیدات شبکه های کامپیوتری

مقاله31- آسیب پذیری و تهدیدات شبکه های کامپیوتری

مقاله31- آسیب پذیری و تهدیدات شبکه های کامپیوتری

فهرست مطالب

مقدمه صفحه 1

 

BIND Domain Name System: اولین نقطه آسیب پذیر

صفحه 6

Remote Procedure Calls (RPC)دومین نقطه آسیب پذیر :

صفحه 9

 

Windows Authenticationسومین نقطه آسیب پذیر :

صفحه 11

 

Internet Explorer (IEچهارمین نقطه آسیب پذیر:(

صفحه 24

 

Windows Remote Access Services پنجمین نقطه آسیب پذیر :

صفحه 26

 

ششمین نقطه آسیب پذیر:نحوه حفاظت در مقابل دستیابی به ریجستری سیستم

صفحه 33

 

هفتمین نقطه آسیب پذیر:متداولترین پورت ها

صفحه 41

 

FTP هشتمین نقطه آسیب پذیر:

صفحه 47

 

Windows Peer to Peer File Sharingنهمین نقطه آسیب پذیر :

صفحه 50

منابع

 

صفحه 54


مقدمه

مهمترین نقاط آسیب پذیر
سیستم عامل، یکی از عناصر چهار گانه در یک سیستم کامپیوتری است که دارای نقشی بسیار مهم و حیاتی در نحوه مدیریت منابع سخت افزاری و نرم افزاری است . پرداختن به مقوله امنیت سیستم های عامل ، همواره از بحث های مهم در رابطه با ایمن سازی اطلاعات در یک سیستم کامپیوتری بوده که امروزه با گسترش اینترنت ، اهمیت آن مضاعف شده است . بررسی و آنالیز امنیت در سیستم های عامل می بایست با ظرافت و در چارچوبی کاملا" علمی و با در نظر گرفتن تمامی واقعیت های موجود ، انجام تا از یک طرف تصمیم گیرندگان مسائل استراتژیک در یک سازمان قادر به انتخاب مستند و منطقی یک سیستم عامل باشند و از طرف دیگر امکان نگهداری و پشتیبانی آن با در نظر گرفتن مجموعه تهدیدات موجود و آتی ، بسرعت و بسادگی میسر گردد .
اکثر کرم ها و سایر حملات موفقیت آمیز در اینترنت ، بدلیل وجود نقاط آسیب پذیر در تعدادی اندک از سرویس های سیستم های عامل متداول است . مهاجمان ، با فرصت طلبی خاص خود از روش های متعددی بمنظور سوء استفاده از نقاط ضعف امنیتی شناخته شده ، استفاده نموده و در این راستا ابزارهای متنوع ، موثر و گسترده ای را بمنظور نیل به اهداف خود ، بخدمت می گیرند . مهاجمان ، در این رهگذر متمرکز بر سازمان ها و موسساتی می گردند که هنوز مسائل موجود امنیتی ( حفره ها و نقاط آسیب پذیر ) خود را برطرف نکرده و بدون هیچگونه تبعیضی آنان را بعنوان هدف ، انتخاب می نمایند . مهاجمان بسادگی و بصورت مخرب ، کرم هائی نظیر : بلستر ، اسلامر و Code Red را در شبکه منتشر می نمایند. آگاهی از مهمترین نقاط آسیب پذیر در سیستم های عامل ، امری ضروری است . با شناسائی و آنالیز اینگونه نقاط آسیب پذیر توسط کارشناسان امنیت اطلاعات ، سازمان ها و موسسات قادر به استفاده از مستندات علمی تدوین شده بمنظور برخورد منطقی با مشکلات موجود و ایجاد یک لایه حفاظتی مناسب می باشند.
در مجموعه مقالاتی که ارائه خواهد شد ، به بررسی مهمترین نقاط آسیب پذیر یونیکس و لینوکس خواهیم پرداخت . در این راستا ، پس از معرفی هر یک از نقاط آسیب پذیر ، علت وجود ضعف امنیتی ، سیستم های عامل در معرض تهدید ، روش های تشخیص آسیب پذیری سیستم و نحوه مقابله و یا پیشگیری در مقابل هر یک از نقاط آسیب پذیر ، بررسی می گردد .همزمان با ارائه مجموعه مقالات مرتبط با یونیکس ( پنج مقاله ) ، به بررسی مهمترین نقاط آسیب پذیر در ویندوز ، طی مقالات جداگانه ای خواهیم پرداخت .
همانگونه که اشاره گردید ، اغلب تهدیدات و حملات ، متاثر از وجود نقاط آسیب پذیر در سیستم های عامل بوده که زمینه تهاجم را برای مهاجمان فراهم می آورد . شناسائی و آنالیز نقاط آسیب پذیر در هر یک از سیستم های عامل ، ماحصل تلاش و پردازش دهها کارشناس امنیتی ورزیده در سطح جهان است و می بایست مدیران سیستم و شبکه در یک سازمان بسرعت با آنان آشنا و اقدامات لازم را انجام دهند.
نقاط آسیب پذیر موجود در هر سیستم عامل که در ادامه به آنان اشاره می گردد ، سندی پویا و شامل دستورالعمل های لازم بمنظور برخورد مناسب با هر یک از نقاط آسیب پذیر و لینک هائی به سایر اطلاعات مفید و تکمیلی مرتبط با ضعف امنیتی است .

مهمترین نقاط آسیب پذیر:
یونیکس ، یکی از سیستم های عامل رایج در جهان بوده که امروزه در سطح بسیار وسیعی استفاده می گردد . تا کنون حملات متعددی توسط مهاجمین متوجه سیستم هائی بوده است که از یونیکس ( نسخه های متفاوت ) بعنوان سیستم عامل استفاده می نمایند . با توجه به حملات متنوع و گسترده انجام شده ، می توان مهمترین نقاط آسیب پذیر یونیکس را به ده گروه عمده تقسیم نمود :

  • BIND Domain Name System
  • Remote Procedure Calls (RPC)
  • Apache Web Server
  • General UNIX Authentication Accounts with No Passwords or Weak Passwords
  • Clear Text Services
  • Sendmail
  • Simple Network Management Protocol (SNMP)
  • Secure Shell (SSH)
  • Misconfiguration of Enterprise Services NIS/NFS
  • Open Secure Sockets Layer (SSL)

در بخش اول این مقاله ، به بررسی BIND DomainName System وRemote Procedure Calls (موارد یک و دو) ، خواهیم پرداخت .

اولین نقطه آسیب پذیر :BIND Domain Name System
نرم افزار BIND ) BerkeleyInternet Name Domain) ، در مقیاس گسترده ای و بمنظور پیاده سازی DNS)Domain Name Service) ، استفاده می گردد. BIND ، سیستمی حیاتی است که از آن بمنظور تبدیل اسامی میزبان ( نظیر : www.srco.ir ) به آدرس IP ریجستر شده ،استفاده می گردد .با توجه به استفاده وسیع از BIND و جایگاه حیاتی آن در یک شبکه کامپیوتری ، مهاجمان آن را بعنوان یک هدف مناسب بمنظور انجام حملات ، خصوصا" از نوع DoS)Denila Of Service) انتخاب و حملات متنوعی را در ارتباط با آن انجام داده اند. حملات فوق،از کارافتادن سرویس DNS و عدم دستیابی به اینترنت برای سرویس های مربوطه و میزبانان را می تواند بدنبال داشته باشد. با اینکه پیاده کنندگان BIND ، تلاشی مستمر را از گذشته تا کنون بمنظور برطرف نمودن نقاط آسیب پذیر انجام داده اند ، ولی هنوز تعداد زیادی از نقاط آسیب پذیر قدیمی ، بدرستی پیکربندی نشده و سرویس دهندگان آسیب پذیر در آن باقی مانده است .
عوامل متعددی در بروز اینگونه حملات نقش دارد: عدم آگاهی لازم مدیران سیستم در خصوص ارتقاء امنیتی سیستم هائی که بر روی آنان Bind deamon بصورت غیر ضروری اجراء می گردد و پیکربندی نامناسب فایل ها ، نمونه هائی از عوامل فوق بوده و می تواند زمینه یک تهاجم از نوع DoS ، یک Buffer Overflow و یا بروز اشکال در DNS Cache را بدنبال داشته باشد.از جمله مواردیکه اخیرا" در رابطه با ضعف امنیتی BIND کشف شده است مربوط به یک تهاجم از نوع DoS است . مقاله CERT AdvisoryCA-2002-15 جزئیات بیشتری را در این رابطه ارائه می نماید. از دیگر حملات اخیر ، تهاجمی از نوع BufferOverflow است . مقاله CERT AdvisoryCA-2002-19 جزئیات بیشتری را در این رابطه در اختیار قرار می دهد. درتهاجم فوق ، یک مهاجم از نسخه آسیب پذیر پیاده سازی توابع Resolver مربوط به DNS استفاده و با ارسال پاسخ های مخرب به DNS و اجرای کد دلخواه ، امکان سوء استفاده از نقطه آسیب پذیر فوق را فراهم و حتی دربرخی موارد می تواند زمینه بروز یک تهاجم از نوع DoS را باعث گردد .
تهدیدی دیگر که می تواند در این رابطه وجود داشته باشد ، حضور یک سرویس دهنده BIND آسیب پذیر در شبکه است . در چنین مواردی ، مهاجمان از وضعیت فوق استفاده و از آن بمنزله مکانی جهت استقرار داده های غیر معتبر خود و بدون آگاهی مدیرسیستم استفاده می نمایند. بدین ترتیب ، مهاجمان از سرویس دهنده بعنوان پلات فرمی بمنظور فعالیت های آتی مخرب خود بهره برداری خواهند کرد .

سیستم های عامل در معرض تهدید :
تقریبا" تمامی سیستم های عامل یونیکس و لینوکس بهمراه یک نسخه از BIND ارائه شده اند .در صورت پیکربندی میزبان بعنوان سرویس دهنده ، نسخه ای از BIND بر روی آن نصب خواهد شد.

نحوه تشخیص آسیب پذیری سیستم :
در صورت دارا بودن نسخه خاصی از BIND که بهمراه سیستم عامل ارائه و بر روی سیستم نصب شده است ، می بایست عملیات بهنگام سازی آن را با استفاده از آخرین Patch های ارائه شده توسط تولید کننده ( عرضه کننده ) انجام داد. در صورت استفاده از نسخه BIND مربوط به ISC: Internet Software Consortium ، می بایست از نصب آخرین نسخه BIND ، اطمینان حاصل نمود . در صورتیکه BIND نصب شده بر روی سیستم ، نسخه ای قدیمی بوده و یا بطور کامل Patch نشده باشد ، احتمال آسیب پذیری سیستم وجود خواهد داشت . در اکثر سیستم ها ، دستور : "named - v " ، اطلاعات لازم در خصوص نسخه BIND نصب شده بر روی سیستم را بصورت X.Y.Z نمایش خواهد داد . X ، نشاندهنده نسخه اصلی ، Y ،نشاندهنده جزئیات نسخه و Z نشاندهنده یک PatchLevel است . پیشنهاد می گردد ، آخرین نسخه BIND ارائه شده توسط ISC را دریافت و آن را بر روی سیستم نصب نمود. آخرین نسخه موجود Version 9.2.2 بوده و می توان آن را از سایت ISCدریافت نمود. یکی دیگر از رویکردهای کنشگرایانه مرتبط با نگهداری امنیت BIND ، عضویت در گروه های خبری نظیر Symantec برای آگاهی از آخرین هشدارهای امنیتی است . در این راستا می توان از یک برنامه پویشگر بهنگام شده که قادر به بررسی دقیق سیستم های DNS بمنظور تشخیص نقاط آسیب پذیراست ، نیز استفاده گردد .

نحوه حفاظت در مقابل نقطه آسیب پذیر:
بمنظور حفاظت در مقابل نقاط آسیب پذیر مرتبط با BIND موارد زیر پیشنهاد می گردد :

  • غیر فعال نمودن BIND deamon ( به آن named نیز اطلاق می گردد ) بر روی سیستم هائی که بعنوان یک سرویس دهنده DNS در نظر گرفته نشده اند . بمنظور پیشگیری ازاعمال برخی تغییرات خاص ( نظیر فعال نمودن مجدد آن ) ، می توان نرم افزار BIND را از روی اینگونه سیستم ها حذف نمود.
  • بمنظور بهنگام سازی سرویس دهنده DNS ، از تمامی Patch های ارائه شده توسط تولید کنندگان استفاده و در صورت امکان آن را به آخرین نسخه موجود ارتقاء دهید . برای دریافت اطلاعات تکمیلی در رابطه با نصب مطمئن تر BIND ، از مقالات ارائه شده درسایت CERT و بخش UNIX SecurityChecklist ، استفاده نمائید .
  • بمنظور پیچیده تر نمودن حملات اتوماتیک و یا پویش سیستم مورد نظر ، Banner مربوط به " Version String " را از BIND حذف و نسخه واقعی BIND را با یک شماره نسخه غیرواقعی در فایل named.conf ، جایگزین نمائید .
  • امکان ارسال انتقالات Zone را صرفا" برای سرویس دهندگان ثانویه DNS در Domain فراهم نمائید ( secondary DNS servers) . امکان انتقالات Zone در ارتباط با Domain های Parent و Child را غیر فعال و در مقابل از امکان Delegation ( واگذاری مسئولیت ) و فورواردینگ ( Forwarding ) استفاده نمائید .
  • امکان Recursion و glue fetching را بمنظور حفاظت در مقابل عماکرد ناصحیح DNS Cache ، غیر فعال نمائید .
  • بمنظور حفاظت در رابطه با استفاده از "named" و تحت تاثیر قرار دادن تمامی سیستم ، BIND را محدود نمائید . بنابراین BIND بعنوان یک کاربر non-privilage در دایرکتوری Chroot اجراء می گردد. برای نسخه شمازه نه BIND از آدرس http://www.losurs.org/docs/howto/Chroot-BIND.html استفاده نمائید .

بمنظور حفاظت در مقابل حملات اخیر و مرتبط با نقاط آسیب پذیر کشف شده BIND می توان از منابع زیر استفاده نمود:

برای آگاهی و استفاده از پیشنهادات لازم بمنظور نصب ایمن تر BIND بر روی سیستم های سولاریس ، می توان از آدرس :Running the BIND9 DNS Server Securely و آرشیو مقالات ارائه شده در آدرس Afentis استفاده نمود.

دومین نقطه آسیب پذیر : ( Remote Procedure Calls (RPC
با استفاده از RPC برنامه های موجود بر روی یک کامپیوتر قادر به اجرای روتین هائی در کامپیوتر دوم از طریق ارسال داده و بازیابی نتایج می باشند . با توجه به جایگاه عملیاتی RPC ، استفاده از آن بسیار متداول بوده و درموارد متعددی از آن بمنظور ارائه سرویس های توزیع شده شبکه نظیر مدیریت از راه دور ، اشتراک فایل NFS و NIS استفاده می گردد.وجود ضعف های امنیتی متعدد در RPC باعث بهره برداری مهاجمان بمنظور انجام حملات مختلفی شده است .دراکثر موارد ، سرویس های RPC با مجوزهای بیش از حد معمول ، اجراء می گردند . بدین ترتیب یک مهاجم غیر مجاز قادر به استفاده از سیستم های آسیب پذیر در جهت اهداف خود خواهد بود.اکثر حملات از نوع DoS در سال 1999 و اوایل سال 2000 در ارتباط با سیستم هائی بود که دارای ضعف امنیـتی و نقظه آسیب پذیر RPC بودند. مثلا" حملات گشترده و موفقیت آمیز در رابطه با سیستم های نظامی امریکا ، بدلیل نقطه آسیب پذیر RPC کشف شده در صدها دستگاه کامپیوتر مربوط به وزارت دفاع امریکا بوده است . اخیرا" نیز وجود یک ضعف امنیتی DCOMRPC در ویندوز ، باعث انتشار گسترده یک کرم در سطح اینترنت گردید .

سیستم های عامل در معرض تهدید :
تمامی نسخه های یونیکس و لینوکس که بر روی آنان سرویس های RPC نصب شده است در معرض این آسیب می باشند .

نحوه تشخیص آسیب پذیری سیستم :
با استفاده از یک پویشگر نقاط آسیب پذیر و یا دستور " rpcinfo" ، می توان از اجراء یکی از سرویس های متداول RPC بر روی سیستم آگاه گرید :

RPC Service

RPC Program Number

rpc.ttdbserverd

100083

rpc.cmsd

100068

rpc.statd

100024

rpc.mountd

100005

sadmind

100232

cachefsd

100235

snmpXdmid

100249

سرویس های RPC ، عموما" از طریق حملات buffer Overflow ، مورد سوء استفاده قرار می گیرند .علت این امر ، عدم انجام بررسی لازم و کافی در خصوص خطاها و یا اعتبار داده های ورودی توسط برنامه های RPC است . نقاط آسیب پذیر Buffer overflow ، این امکان را برای یک مهاجم فراهم می نماید که داده غیر قابل پیش بینی را ( اغلب بصورت کد مخرب ) به درون حافظه برنامه ، ارسال نماید . با توجه به ضعف موجود در رابطه با بررسی خطاء و صحت داده ، داده ارسالی مکان هائی حساس و کلیدی که مورد استفاده پردازنده می باشند را بازنویسی می نماید.در یک تهاجم موفقیت آمیز Overflow ، کد مخرب ارسالی ،در ادامه توسط سیستم عامل اجراء می گردد . با توجه به اینکه تعداد زیادی از سرویس های RPC ، با مجوزهای بیش از حد معمول ، اجراء می گردند ، استفاده موفقیت آمیز از نقاط آسیب پذیر فوق می تواند امکان دسـیابی غیر مجاز و از راه دور را به سیستم فراهم می نماید.

نحوه حفاظت در مقابل نقطه آسیب پذیر:
بمنظور حفاظت سیستم در مقابل حملات مبتنی بر RPC ، موارد زیر پیشنهاد می گردد :

  • غیر فعال نمودن و یا حذف هر یک از سرویس های RPC که ضرورتی به استفاده از آن بر روی شبکه نمی باشد .
  • نصب آخرین Patch ارائه شده در رابطه با سرویس هائی که امکان حذف آنان وجود ندارد:
    - برای نرم افزار سولاریس از آدرس ( http://sunsolve.sun.com ) استفاده گردد.
    - برای IBM AIX از آدرس : http://www.ibm.com/support/us و http://techsupport.services.ibm.com/server/fixes استفاده گردد.
    - برای نرم افزار SGI از آدرس : http://support.sgi.com استفاده گردد .
    - برای کامپک ( Digital Unix ) از آدرس http://www.compaq.com/support
    - برای لینوکس از آدرس : http://www.redhat.com/apps/support/errata و http://www.debian.org./security استفاده گردد .
  • عملیات جستجو بمنظور آگاهی و نصب آخرین Patch مربوطه می بایست بصورت مستمر انجام شود.
  • پورت 111 ( TCP و UDP ) مربوط به RPC portmapper و پورت 135 ( TCP و UDP ) مربوط به Windows RPC را در سطح روتر و یا فایروال بلاک نمائید .
  • پورت های Loopback 32770 ، 32789 مربوط بهTCP و UDP را بلاک نمائید .
  • فعال نمودن یک پشته غیراجرائی بر روی سیستم های عاملی که از ویژگی فوق ، حمایت می نمایند. استفاده از یک پشته غیراجرائی ، لایه ای حفاظتی در مقابل تمامی حملات Buffer overflows نبوده ولی می تواند عاملی موثر در جهت مقابله با برخی از حملات استاندارد گردد.
  • در ارتباط با سیستم های فایل NFS صادراتی ، مراحل زیر می بایست دنبال گردد :
    - استفاده از میزبان / IP مبتنی بر لیست های صادراتی
    - پیکربندی سیستم های فایل صادراتی بصورت فقط خواندنی
    - استفاده از "nfsbug" برای پویش نقاط آسیب پذیر

سومین نقطه آسیب پذیر : WindowsAuthentication
استفاده از رمزعبور، روش های تائید کاربر و کدهای امنیتی در هر گونه تعامل ارتباطی بین کاربران وسیستم های اطلاعاتی ، امری متداول و رایج است . اکثر روش ها ی تائید کاربران ، نظیر حفاظت فایل و داده ، مستقیما" به رمزهای عبور ارائه شده توسط کاربران ، بستگی خواهد داشت . پس از تائید کاربران ، امکان دستیابی آنان به منابع مشخص شده فراهم و هر یک از آنان با توجه به امتیازات و مجوزهای نسبت داده شده ، قادر به استفاده از منابع موجودخواهند بود. در اغلب موارد ، فعالیت کاربرانی که مجاز بودن آنان برای دستیابی به منابع ، تائید شده است ، لاگ نشده و یا در صورتیکه فعالیت آنان ثبت گردد ، کمتر سوء ظنی به آنان می تواند وجود داشته باشد . ( آنان پس از تائید وارد میدانی شده اند که بدون هیچگونه ردیابی ، قادر به انجام فعالیت های گسترده ای خواهند بود) . بنابراین ، رمز عبور دارای نقشی حیاتی و اساسی در ایجاد اولین سطح دفاع در یک سیستم اطلاعاتی بوده و از دست رفتن رمز عبور و یا ضعف آن می تواند سیستم را در معرض تهدیدات جدی قرار دهد . مهاجمان پس از دستیابی به رمز عبور کاربران تائید شده ( استفاده از مکانیزم های متفاوت ) قادر به دستیابی منابع سیستم و حتی تغییر در تنظیمات سایر account های تعریف شده و موجود بر روی سیستم خواهند بود،عملیاتی که می تواند پیامدهای بسیار منفی را بدنبال داشته باشد . پس می بایست بپذیریم که وجود یک account ضعیف و یا فاقد رمز عبور می تواند تهدیدی جدی در یک سازمان باشد . در این راستا علاوه بر اینکه می بایست از پتانسیل های ارائه شده توسط سیستم عامل با دقت استفاده نمود ، ضروری است ، تابع یک سیاست امنیتی تدوین شده در رابطه با رمز عبور در سازمان متبوع خود باشیم . تعریف و نگهداری یک account بهمراه رمز عبور مربوطه در سازمان ما تابع چه سیاست امنیتی است ؟ مهمترین و متداولترین نقاط آسیب پذیر در ارتباط با رمز عبور شامل موارد زیر است :

  • Account تعریف شده دارای رمز عبور ضعیف و یا فاقد رمز عبور است .
  • عدم حفاظت مناسب کاربران از رمزهای عبور ،صرفنظر از استحکام رمزهای عبور تعریف شده .
  • سیستم عامل و یا سایر نرم افزارهای موجود ، امکان ایجاد account مدیریتی ضعیف و فاقد رمز عبور را فراهم می نمایند .
  • الگوریتم های Hashing رمز عبور( رمزنگاری مبتنی بر کلید عمومی بر پایه یک مقدار hash ، استوار بوده و بر اساس یک مقدار ورودی که دراختیار الگوریتم hashing گذاشته می گردد ، ایجاد می گردد. در حقیقت مقدار hash ، فرم خلاصه شده و رمز شده ای از مقدار اولیه خود است ) ، شناخته شده بوده و در اغلب موارد مقدار Hashe بدست آمده ، بگونه ای ذخیره می گردد که امکان مشاهده آن توسط سایرین وجود خواهد داشت. مناسبترین نوع حفاظت در این راستا ، تبعیت از یک سیاست رمز عبور قدرتمند بوده که در آن دستورالعمل ها ی لازم برای تعریف یک رمز عبورمناسب مشخص و در ادامه با استفاده از ابزارهای موجود، بررسی لازم در خصوص استحکام و بی نقص بودن رمز عبور صورت گیرد.

ویندوز، رمزهای عبور را بصورت متن شفاف ذخیره و یا ارسال نمی نماید و در این راستا از یک مقدار Hash متناظر با رمزعبور ، بمنظور تائید کاربران ، استفاده می نماید . یک مقدار Hash دارای طولی ثابت است که توسط بکارگیری یک تابع ریاضی ( الگوریتم hashing ) بر روی حجم دلخواهی از داده ( message digest نامیده می شود) ایجاد می شود.در وینوز سه نوع الگوریتم تائید وجود دارد :

  • LM ( ایمنی کمتر و سازگاری بیشتر )
  • NTLM
  • NTLMv2 ( ایمنی بیشتر و سازگاری کمتر )

با اینکه اکثر محیط های فعلی ویندوز ، ضرورتی به حمایت از (Lan Manager (LM را ندارند، ولی ویندوز بصورت محلی رمز های عبور Hash شده مربوط به LM را ( LANMAN Hashes نیز نامیده می شود ) بصورت پیش فرض در ویندوز NT ، 2000 و XP ( در ویندوز 2003 وضعیت بدین شکل نیست ) ذخیره می نماید. با توجه به اینکهLM از یک مدل رمزنگاری بمراتب ضعیف تر نسبت به رویکردهای فعلی مایکروسافت ( NTLM,NTLMv2 ) ، استفاده می نماید، رمزهای عبور LM می توانند در مدت زمانی کوتاه شکسته گردند. حتی رمزهای عبوری که دارای قدرت و استحکام مناسبی می باشند ، در کمتر از یک هفته با استفاده از روش هائی خاص و با اتکاء به قدرت سخت افزارهای موجود ، شکسته خواهند شد
http://www.msdn.miscrosoft.com/library/default.asp?url=/library/en-us/security/Security/h_gly.asp

ضعف LM hashes بدلایل زیر است :

  • رمزهای عبور محدود به چهارده کاراکتر می باشند .
  • رمزهای عبور با استفاده از فضای خالی ، به چهارده کاراکتر تبدیل می شوند .
  • رمزهای عبور تماما" به حروف بزرگ تبدیل می گردند .
  • رمزهای عبور به دو بخش هفت کاراکتری مجزا تقسیم می گردند .

با توجه به ماهیت فرآیند hashing ،یک مهاجم صرفا" می بایست عملیات تشخیص رمز عبور( cracking) را محدود به دو مجموعه نماید که هر یک دارای هفت کاراکتر بوده که به حروف بزرگ تبدیل شده اند . با تکمیل عملیات فوق و اخد نتایج مثبت ، یک مهاجم قادر به تشخیص رمز عبور یک کاربر تائید شده می گردد وبدین ترتیب ، امکان دستیابی وی به منابع سیستم فراهم خواهد شد. پیچیدگی عملیات تشخیص Hashe ، متنا سب با طول Hash افزایش می یابد ، بنابراین رشته هائی که صرفا" شامل هفت کاراکتر می باشند ، بمراتب راحت تر نسبت به رشته هائی که دارای چهارده کاراکتر می باشند ، تشخیص داده و اصطلاحا" شکسته می گردند. با توجه به این موضوع که تمامی رشته ها شامل هفت کاراکتر بوده و تمامی آنان به حروف بزرگ نیز تبدیل می گردند ، یک تهاجم به "سبک - دیکشنری" ( dictionary-style ) نیز بسادگی محقق و موفقیت آن تضمین شده خواهد بود. بنابراین، روش LMhashing ، آسیبی جدی را متوجه سیاست های امنیتی رمز عبور نموده و سیستم را در معرض تهدید قرار خواهد داد .
علاوه بر تهدید و خطر ذخیره سازی LM hashes در SAM ، فرآیند تائید Lan Manager ، اغلب و بصورت پیش فرص بر روی سرویس گیرندگان فعال و توسط سرویس دهنده پذیرفته می گردد . لازم است به این نکته اشاره گردد که ، ماشین هائی که بر روی آنان ویندوز نصب شده است ، قادر به استفاده از الگوریتم های hash بمراتب قویتر در مقابل روش ضعیف LMhashes بمنظور ارسال داده های حساس نظیر رمز عبور می باشند .حداقل پیامد منفی استفاده از روش LM hashes ، آسیب پذیری سیستم تائید کاربران در ویندوز بوده و قطعا" در چنین مواردی نمی توان به فرآیند تائید کاربران ، اعتماد نمود چراکه در این وضعیت عملا" امکان استراق سمع ( شنود اطلاعاتی ) فراهم و یک مهاجم قادر به تشخیص و بدست آوردن رمزهای عبور خواهد بود.

سیستم های عامل در معرض تهدید :
تمامی نسخه های ویندوز در معرض این تهدید قرار دارند .

نحوه تشخیص آسیب پذیری سیستم:
با اینکه دلایل و علل متفاوتی می تواند در در رابطه با ضعف رمز عبور مورد توجه قرار گیرد ، مثلا" وجود Account های فعال برای کاربرانی که سازمان خود را ترک نموده ویا سرویس هائی که اجراء نشده اند، ولی یکی از مناسبترین روش ها بمنظور آگاهی از استحکام یک رمز عبور ، بررسی و تست تمامی آنان در مقابل نرم افزارهای cracking رمزهای عبور استفاده شده توسط مهاجمان است . لازم است به این نکته مهم اشاره گردد که از برنامه های تشخیص دهنده رمز عبور بر روی سیستم هائی که حتی مجوز دستیابی به آنان را دارید ، بدون اخذ مجوزهای لازم از مدیران ارشد سیستم ، نمی بایست استفاده نمود. برای دریافت نمونه برنامه هائی در این زمینه می توان از LC4 )l0phtcrack version 4) و John the Ripper استفاده کرد . صرفنظر از رویکرد ذخیره سازی محلی LAN Managerhash ، موارد زیر می بایست موردتوجه قرار گیرد :

  • در صورتیکه ویندوز NT ، 2000 و یا XP بصورت پیش فرض نصب شده اند،سیستم در معرض آسیب خواهد بود. در چنین مواردی Lan Manager hashes بصورت پیش فرض و محلی ذخیره می گردد.
  • در صورتیکه ، بدلایلی نیازمند تائید مبتنی بر LM در یک سازمان بمنظور ارتباط با سرویس دهنده وجود داشته باشد ، سیستم مجددا" در معرض آسیب قرار خواهد گرفت .چراکه این نوع از ماشین ها اقدام به ارسال LM hashes نموده و پتانسیل شنود اطلاعاتی در شبکه را ایجاد خواهند کرد.

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

  • اطمینان ازاستحکام و انسجام رمز های عبور . با استفاده از سخت افزار مناسب و اختصاص زمان کافی ، می توان هر رمز عبوری را crack نمود. در این راستا می توان با استفاده ازروش های ساده و در عین حال موفقیت آمیز، عملیات تشخیص رمز عبور را انجام داد . اغلب برنامه های تشخیص دهنده رمزعبوراز روشی موسوم به "حملات مبتنی بر سبک دیکشنری " ، استفاده می نمایند. با توجه به اینکه روش های رمز نگاری تا حدود زیادی شناخته شده می باشند ، برنامه های فوق ، قادر به مقایسه شکل رمز شده یک رمز عبور در مقابل شکل های رمز شده کلمات دیکشنری می باشند( در زبان های متعدد و استفاده از اسامی مناسب بهمراه جایگشت های مختلف آنان ) . بنابراین ، رمز عبوری که ریشه آن در نهایت یک کلمه شناخته شده باشد ، دارای استعداد ذاتی در رابطه با این نوع از حملات خواهد بود . تعداد زیادی از سازمان ها ، آموزش های لازم در خصوص نحوه تعریف رمزهای عبور را به کارکنان خود داده و به آنان گفته شده است که رمزهای عبور مشتمل بر ترکیبی از حروف الفبائی و کاراکترهای ویژه را برای خود تعریف نمایند.متاسفانه اکثر کاربران این موضوع را رعایت ننموده و بمنظور تعریف یک رمز عبور با نام "password" ، صرفا" اقدام به تبدیل حروف به اعداد و یا حروف ویژه می نمایند ( pa$$w0rd) . چنین جایگشت هائی نیز قادر به مقاومت در مقابل یک تهاجم مبتنی بر دیکشنری نبوده و "pa$$w0rd" به روش مشابهی که "password" تشخیص داده می شود ، crack خواهد شد .
    یک رمز عبور خوب ، نمی بایست از ریشه یک کلمه و یا نام شناخته شده ای اقتباس شده باشد .در این راستا لازم است به کاربران آموزش لازم در خصوص انتخاب و ایجاد رمزهای عبور از موارد تصادفی نظیر یک عبارت ، عنوان یک کتاب ،نام یک آواز و یا نام یک فیلم داده شود. با انتخاب یک رشته طولانی که بر اساس رویکردهای خاصی می تواند انتخاب گردد( گرفتن اولین حرف هر کلمه ، جایگزینی یک کاراکتر خاص برای یک کلمه ، حذف تمامی حروف صدادارو سایر موارد ) ، کاربران قادر به ایجاد رمزهای عبور مشتمل بر ترکیبی از حروف الفبائی و حروف ویژه بوده که در صورت مواجه شدن با حملات مبتنی بر دیکشنری ، تشخیص آنان بسختی انجام می شود. لازم است به این نکته نیز اشاره گردد که رمزعبور می بایست براحتی بخاطر سپرده شده و بازیابی ( یادآوری)آن مشکل نباشد ( هدف از ذخیره سازی ، بازیابی است اگر چیزی را ذخیره نمائیم ولی در زمان مورد نظر قادر به بازیابی آن نباشیم ، سیستم ذخیره و بازیابی ما با اشکال مواجه شده است ! ). پس از تدوین دستورالعمل لازم بمنظور تولید رمزهای عبور مناسب و آموزش کاربران بمنظور پایبندی به اصول امنیتی تعریف شده ، می بایست از روتین ها ی جانبی متعددی بمنظور اطمینان از پیروی کاربران از دستوراالعمل های اعلام شده ، استفاده گردد. بهترین گزینه در این راستا ، بررسی صحت رمزهای عبور پس از اعمال تغییرات توسط کاربران است .
    ویندوز 2000 ، XP و 2003 دارای ابزارهای قدرتمندی بمنظورافزایش توان سیاست های امنیتی می باشند . در اکثر نسخه های ویندوز بمنظور مشاهده سیاست تعریف شده در رابطه با رمز می توان از مسیر زیر استفاده و برنامه Local Security Policy را فعال نمود:

 

 

Local Security Policy Program

Start| Programs|Administrative Tools |Local Security Policy
Select : Account Policies , Then Password Policy

  • برنامه Local SecurityPolicy دارای تنظیمات زیر است :
    Password must meet complexity requirements ، با فعال نمودن سیاست فوق ، رمزهای عبور ملزم به رعایت استانداردهای موجود بمنظور استحکام و پیچیدگی بیشتر در زمان ایجاد و یا تغییر می باشند. در چنین حالتی ، رمزهای عبور تعریف شده می بایست با لحاظ نمودن موارد زیر ایجاد گردند:

    ◄ رمز عبور، نمی بایست شامل تمام و یا بخشی از نام account کاربر باشد .
    ◄ رمز عبور می بایست دارای حداقل شش کاراکتر باشد .
    ◄ رمز عبور می بایست شامل کاراکترهائی از سه گروه از چهار مجموعه زیر باشد :
    ● حروف بزرگ الفبای انگلیسی ( A تا Z )
    ● حروف کوچک الفبای انگلیسی ( a تا z )
    ● ارقام پایه دهدهی ( رقم های 0 تا 9 )
    ● کاراکترهای غیر الفبائی ( مثلا" ! ، $ ، # ، % )

    ( Enforcepassword history (range: 0-24 . اغلب کاربران تمایل دارند که پس از انقضاء تاریخ استفاده از رمز عبور خود ، مجددا" همان رمز عبور قبلی را تعریف و از آن استفاده نمایند . با استفاده از سیاست فوق ، می توان مشخص نمود که در چه زمانی و پس از چندین رمز عبور تعریف شده جدید ، کاربران مجاز به استفاده از رمزهای عبور قبلی خود برای وضعیت جدید می باشند .بدین ترتیب ،مدیران شبکه اطمینان لازم در خصوص عدم استفاده مستمر و دائمی یک رمز عبور توسط کاربران را بدست آورده و این موضوع می تواند از زوایای مختلفی بهبود وضعیت امنیتی شبکه را بدنبال داشته باشد . بمنظور نگهداری موثر تاریخچه رمز عبور، نمی بایست امکان تغییر رمزهای عبور بلافاصله پس از پیکربندی سیاست minimum password age ، وجود داشته باشد .

    ( Maximum password age (range: 0-999 days . سیاست فوق ، حداکثر عمر( اعتبار) یک رمز عبور را بر حسب روز ، مشخص می نماید.( قبل از اینکه سیستم کاربر را ملزم به تغییر رمز عبور نماید) . با در نظر گرفتن مقدار صفر ، رمز عبور دارای عمری جاودانه خواهد شد !

    (Minimum password age (range: 0-999 days . سیاست فوق ، حداقل عمر( اعتبار) یک رمز عبور را بر حسب روز ، مشخص می نماید( قبل از اینکه کاربر قادر به تغییر رمزعبور گردد) . با در نظر گرفتن مقدار صفر ، به کاربران اجازه داده خواهد شد که بلافاصله رمز عبور خود را تغییر دهند. minimum password age می بایست کمتر از maximum password age باشد . پیکربندی minimum password age می بایست بگونه ای انجام شود که دارای مقداری بیش از صفر باشد تا سیاست password history نیز لحاظ شده باشد. بدون وجود یک minimum password age ، کاربران قادر به تغییر ادواری و زمانبندی نشده رمزهای عبور شده و امکان استفاده مجدد از رمزهای عبور قدیمی در یک محدوده زمانی کمتر برای آنان فراهم می گردد.مقادیر پیش فرض تامین کننده اهداف و خواست های امنیتی در یک سازمان نبوده و لازم است مدیران سیستم در ابتدا یک رمز عبور مناسب را برای کاربر تعریف و پس از سپری شدن مدت زمان مشخصی ( مدت زمان فوق را minimum password age مشخص می نماید ) کاربر را ملزم به تعریف ( تغییر ) رمز عبور تعریف شده توسط مدیریت شبکه نمایند. زمانیکه کاربران ،عملیات Logon را انجام و در صورتیکه password history مقدار صفر را دارا باشد ، الزامی در رابطه با انتخاب یک رمز عبور جدید برای کاربران وجود نخواهد داشت . بدین دلیل password history دارای مقدار پیش فرض یک است .

    (Minimum password length (range: 0-14 characters ، سیاست فوق ، حداقل تعداد کاراکتر لازم برای تعریف یک رمز عبور را مشخص می نماید( حداقل طول یک رمز عبور) می توان در این رابطه حداقل طول یک رمز عبور را بین یک تا چهارده کاراکتر در نظر گرفت . با اختصاص مقدار صفر ، ضرورت وجود رمز عبور حذف می گردد. حداقل طول رمز عبور، می بایست متناسب و سازگار با سیاست های امنیتی سازمان باشد. در صورتیکه در این رابطه سیاست مشخص و شفافی وجود ندارد می توان مقدار هشت را در نظر گرفت .برخی از سازمان های امنیت اطلاعات شبکه ، مقدار دوازده را در این رابطه پیشنهاد داده اند .

    Store password using reversible encryption for all usersin the domain . سیاست فوق ، مشخص می نماید که می بایست رمزعبور با استفاده از رمزنگاری وارونه ، ذخیره گردد . در این رابطه ، امکانات حمایتی لازم درخصوص برنامه هائی که از پروتکل هائی بمنظور آگاهی از رمز عبور کاربر بمنظور انجام فرآیند تائید کاربران استفاده می نمایند، نیز ارائه شده است . ذخیره سازی رمزهای عبوری که از رمزنگاری وارونه استفاده می نمایند ، مشابه رمزهای عبورمعمولی است ( رمز عبور بصورت متن ذخیره می گردد). بنابراین فعال شدن سیاست فوق می بایست با لحاظ نمودن پارامترهای متعددی نظیر الزام یک برنامه بمنظور استفاده از یک رمز عبور حفاظت شده ، صورت پذیرد .
    یکی از روش هائی که می توان از آن بمنظور ایجاد اتوماتیک و نسبت دهی رمزهای عبور پیچیده به هر یک از account های کاربران استفاده نمود ، اجرای دستورالمل زیر از طریق خط دستور است :

From Command Line Prompt :

Net User Username / random

  • با اجرای دستورالعمل فوق ، رمزهای عبور تصادفی و پیچیده (همواره هشت کاراکتر طول ) به یک account نسبت داده شده و در ادامه رمزعبور مورد نظر بر روی صفحه نمایش داده می شود. روش فوق ، امکانی مناسب بمنظور نسبت دهی رمزهای عبوردر ارتبط با Service accounts بوده و کمتر در ارتباط با کاربران واقعی استفاده می گردد.
    بهترین روش برای ممیزی کیفیت رمزهای عبور ، اجرای برنامه های cracking رمز عبور در وضعیتStand-alone است (بخشی از فرآیند بررسی رمزهای عبور) . لازم است مجددا" به این موضوع اشاره گردد که بدون کسب مجوز لازم از مدیران ارشد سیستم در سازمان ، نمی بایست از برنامه های cracking استفاده شود.پس از کسب مجوز لازم بمنظور اجرای برنامه های cracking رمز عبور ، می بایست عملیات فوق را بر روی یک ماشین حفاظت شده انجام داد.کاربرانی که رمزهای عبور آنان crack می گردد، می بایست موضوع بصورت محرمانه به اطلاع آنان رسیده و دستورالعمل های لازم در خصوص نحوه انتخاب یک رمز عبور مناسب ، در اختیار آنان قرار داده شود.اخیرا" و در پاسخ به رمزهای عبور ضعیف ، استفاده از روش هائی دیگر بمنظور تائید کاربران، نظیر بیومتریک (زیست سنجی ) ، نیز مورد توجه واقع شده است .
  • حفاظت رمزهای عبور مستحکم . حتی اگر رمزهای عبور ، مستحکم و قدرتمند باشند ، در صورت عدم حفاظت آنان توسط کاربران ، سیستم های موجود در یک سازمان در معرض تهدید قرار خواهند گرفت . یک سیاست امنیتی مناسب ، می بایست شامل دستورالعمل های لازم بمنظور آموزش کاربران در رابطه با حفاظت رمزهای عبور می باشد.عدم ارائه رمز عبور به افراد دیگر، عدم نوشتن رمز عبور در محلی که امکان خواندن آن برای دیگران وجود داشته باشد و حفاظت اتوماتیک فایل هائی که رمزهای عبور در آن ذخیره شده اند ، از جمله مواردی می باشند که می بایست به کاربران آموزش داده شود. اغلب کاربران در مواجهه با پیامی مشابه "Your password has expiredand must be changed," که نشاندهنده اتمام عمر مفید یک رمز عبور است ، یک رمز عبور ضعیف را برای خود انتخاب می نمایند ، بنابراین لازم است در فرصت مناسب و قبل از برخورد با اینچنین پیام هائی ، به کاربران آموزش های لازم ارائه گردد.
  • کنترل مستمر account ها . مدیران سیستم و شبکه می بایست حضوری موثر و مستمر در ارتباط با مدیریت account های موجود داشته باشند .
    - هر گونه account مبتنی بر سرویسی خاص و یا مدیریتی که از آن استفاده نمی گردد، می بایست حذف گردد .
    - ممیزی account ها بر روی سیستم را انجام داده و لازم است در این رابطه یک لیست اصلی ایجاد گردد .در این رابطه می بایست رمزهای عبور در ارتباط با سیستم هائی نظیر روترها ، چاپگرهای دیجیتالی متصل شده به اینترنت و سایر موارد دیگر نیز مورد بررسی قرار گیرد.
    - روتین هائی خاص بمنظور افزودن account های تائید شده به لیست و یا حذف account هائی که ضرورتی به استفاده از آنان نمی باشد ، پیاده سازی و همواره خود را پایبند به آن بدانیم .
    - اعتبار لیست را در فواصل زمانی خاصی بررسی تا از بهنگام بودن آن اطمینان حاصل گردد.
    - از روتین های خاصی بمنظورحذف account متعلق به کارکنان و یا پیمانکارانی که سازمان را ترک نموده اند ، استفاده گردد .
  • نگهداری و پشتیبانی از سیاست رمزعبور . بمنظور پشتیبانی و نگهداری مناسب رمز عبور، می توان علاوه بر استفاده از امکانات کنترلی ارائه شده توسط سیستم عامل و یا سرویس های شبکه ، از ابزارهای گسترده ای که در این رابطه ارائه شده است ،نیز استفاده گردد . بدین ترتیب ،نگهداری سیاست رمز عبور ، مبتنی بر آخرین تکنولوژی های موجود خواهد بود.
  • غیر فعال نمودن تائید LM در شبکه . بهترین گزینه بمنظور جایگزینی با Lan Manager ، استفاده از روش NT LAN Managerversion 2) NTLMv2) است . متدهای چالش / پاسخ NTLMv2 ، با استفاده از رمزنگاری مستحکم تر و بهبود مکانیزم های تائید ، اکثر صعف های LM را برطرف نموده است جدول زیر ، کلید ریجستری موردنظری را که قابلیت فوق را در ویندوز NT و 2000 کنترل می نماید، نشان می دهد:

Rgistry key

Hive: HKEY_LOCAL_MACHINE
Key: SystemCurrentControlSetControlLSA
Value: LMCompatibilityLevel
Value Type: REG_DWORD - Number
Valid Range: 0-5
Default: 0

  • پارامتر فوق ، نوع و روش تائید را مشخص و می تواند مقداری بین صفر تا پنج را دارا باشد :
    0 - ارسال پاسخ بر اساس روش LM و NTLM ، هرگز از امکانات امنیتی NTLMv2 استفاده نمی شود .
    1 - استفاده از امکانات امنیتی NTLMv2
    2 - ارسال بر اساس روش تائید NTLM
    3 - ارسال بر اساس روش تائید NTLMv2
    4 - DC باعث رد تائید LM می گرد.
    5 - DC باعث رد تائید LM و NTLM شده و صرفا" تائید NTLMv2 پذیرفته می گردد .

در ویندوز 2000 ، 2003 و XP نیز امکاناتی ارائه شده است که می توان با استفاده از آنان اقدام به پیکربندی تنظیمات مورد نظر در ارتباط با سطح تائید Lan Manager نمود . در این رابطه لازم است برنامه Local SecurityPolicy فعال و در ادامه گزینه های Local Policies و Security Options بترتیب انتخاب گردند . در ویندوز 2000 سیاست LAN Manager authentication level ، و در ویندوز XP و 2003 سیاست Networksecurity: LAN Manager authentication level ، بمنظور پیکربندی ومقداردهی مناسب انتخاب گردند .
در صورتیکه بر روی تمامی سیستم ها ، ویندوز NTSP4 و یا بعد از آن نصب شده باشد ، می توان مقدارپارامتر فوق را بر روی تمامی سرویس گیرندگان سه و بر روی Domain Controllers مقدار پنج درنظر گرفت (پیشگیری از ارسال LM hashes بر روی شبکه ) . سیستم هائی نظیر ویندوز 95 و 98 از NTLMv2 بصورت پیش فرض بهمراه Microsoft Network Client استفاده نمی نمایند ، بنابراین لازم است بمنظور استفاده از قابلیت های NTLMv2 ، برنامه Directory Services Client بر روی آنان نصب گردد. پس از نصب سرویس فوق ، مقدار ریجستری با نام LMCompatibility می تواند مقدار صفر و یا سه را دارا باشد .در صورتیکه نمی توان سرویس گیرندگان قدیمی ( ویندوز 95 و یا ویندوز 98 ) را ملزم به استفاده از NTLMv2 نمود ، می توان تغییر مورد نظر را در رابطه با LM hashing نسبت به استفاده از NTLM (NT Lan Manager, version ) در Domain Controller اعمال نمود.در این رابطه می توان مقدار LMCompatibilityLevel را چهار در نظر گرفت . درصورت استفاده از ابزاری نظیر Local Security Policy،می بایست مقدار LAN Managerauthentication level را Send NTLMv2 Response onlyRefuse LM درنظر گرفت . لازم است به این نکنه اشاره گردد که ایمن ترین گزینه در این رابطه، اعمال محدودیت برروی سرویس گیرندگان است .



یاهومارکت
بخاطر بسپارید



مقاله30- ارتباط با پایگاه داده‌هایAccess در Visual Basic 82 ص

مقاله30- ارتباط با پایگاه داده‌هایAccess در Visual Basic  82 ص

مقاله30- ارتباط با پایگاه داده‌هایAccess در Visual Basic 82 ص

فهرست مطالب

عنوان صفحه

پیشگفتار

مقدمات Visual Basic

مقدمات بانک اطلاعاتی Access

توصیف پروژه

الف ) توصیف پایگاه داده‌ها

ب ) توصیف فرم‌های برنامه

ضمائم

ضمیمه 1- کد برنامه

فهرست منابع

 

پیشگفتار :

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

با گسترش کاربرد کامپیوتر در جهان این رشته به صورت گسترده‌ای در زمینه‌های مختلف توسعه یافته و هر روز نیز به این گسترش افزوده می‌گردد.

پیشرفت سریع تکنولوژی، به ویژه فناوری اطلاعات و ارتباطات (ICT) روز به روز چشم اندازها و افق‌های روشن‌تری را جهت تسخیر قلل علمی، فنی و صنعتی و حل مشکلات و مسائل بشر ارائه می‌کند و تک تک افراد جامعه را به تلاش مضاعف در کسب مهارتهای رایانه‌ای و کاربرد آنها در سایر علوم ملزم می‌سازد، به نحوی که امروزه افراد و جوامع ناتوان در بکارگیری فن آوریهای جدید رایانه‌ را بی سواد تلقی می‌کنند. یکی از رشته‌های علمی مفید در زمینه کامپیوتر کار با پایگاه داده‌ها و نرم افزارهای بانک اطلاعاتی است که در زمینه‌های مختلف تجاری و اداری و وب سایت و ... کاربرد دارد.

از این نرم‌افزارهای می‌توان به ORACLE ، ACCESS , MS SQL SERVER, MS SQL اشاره نمود.

ACCESS یک نرم افزار بانک اطلاعاتی قوی و آسان است که بسیاری از کاربران بانک اطلاعاتی تمایل زیادی به استفاده نرم افزار خوب و سودمند بهره گرفته شده است.

زبان برنامه نویسی BASIC نیز به دلیل راحتی و آموزش سریع و آسان از گذشته دور مورد استقبال بسیاری از کاربران و برنامه نویسان بوده است.

زبان VISUAL BASIC نسخة تحت ویندوز زبان Basic است که البته بسیار قوی‌تر و پیشرفته‌تر از نسخة تحت DOS آن عمل می‌کند و بسیاری از برنامه‌های پیشرفته و سطح بالا و پیچید ه مورد نیاز شرکت‌های بزرگ به ویژه برنامه‌های چند رسانه‌ای (Multi Media) با آن استفاده ازآن نوشته می‌شود.

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

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

بانک اطلاعاتی برنامه من مربوط به یک فروشگاه نوت بوک می‌باشد. در این فروشگاه علاوه بر خود نوت بوک، کیف نوت بوک، لوازم جانبی نوت بوک یا PC، اجزاء اصلی داخل نوت بوک یا PC و نیز خود PC عرضه می‌شود.

برنامه VB در این پروژه طبق Query های خاصی که در ارتباطش با بانک اطلاعاتی ACCESS درخواست می‌کند، لیست‌های متفاوتی از اطلاعات آن را به نمایش در می‌آورد.

نرم‌افزارهای مورد استفاده :

1- Microsoft Access 2003

از برنامه‌های مجموعة office 2003Microsoft

2- Microsoft Visual Basic

از برنامه‌های مجموعة Microsoft Visual Basic studio 6.0

 

مقدمات Visual Basic

مفاهیم اولیه

روش‌های برنامه نویسی معمولاً به دو نوع کلی تقسیم می‌شوند:

* برنامه نویسی تابع گرا یا ساخت یافته

* برنامه نویسی شی‌ءگرا

الف) برنامه نویسی تابع گرا یا Procedural : این روش برنامه‌نویسی متن گرا نیز نامیده می‌شود روش قدیمی تری است که مبتنی بر توابع می‌باشد و معمولاً یکی از توابع اصلی است. با شروع برنامه، کنترل برنامه به اولین دستور تابع اصلی رفته و به ترتیب شروع به اجرای دستورات، از اولین دستور تا آخرین دستور تابع، می‌کند و مواقعی هم ممکن است فراخوانی‌هایی به یک یا چند زیر برنامه داشته باشد که با هر بار فراخوانی، کنترل برنامه به ابتدای تابع مورد نظر رفته و دستورات آن تابع را به ترتیب اجرا می‌نماید آن گاه با اتمام دستورات تابع مذکور، کنترل برنامه به ابتدای تابع مورد نظر رفته و دستورات آن تابع را به ترتیب اجرا می‌نماید آن گاه با اتمام دستورات تابع مذکور، کنترل برنامه به دستور بعد از دستور فراخوانی برمی‌گردد و روال برنامه تا رسیدن به آخرین دستور تابع اصلی ادامه می‌یابد. بعد از اجرای آخرین دستور تابع اصلی یا رسیدن به دستور خاتمه‌ی برنامه، برنامه پایان می‌پذیرد؛ مانند اکثر زبان‌های برنامه نویسی که تا به حال با آن کار کرده‌ایم، که از جمله بیسیک، پاسکال و C.

ب ) برنامه نویسی شیء گرا (Object Oriented): برنامه نویسی شیء گرا دارای اصول و ویژگی‌هایی است که با پیدایش ویندوز ومفاهیمی چون «چند وظیفه‌ای» که در آن سیستم عامل وجود دارد، مطرح شد. در این روش، بر خلاف روش قبلی، به جای استفاده از تابع اصلی که وظیفه‌ی کنترل تمام برنامه را بر عهده دارد از مفاهیمی هم چون کلاس، خصوصیت و شیء استفاده می‌شود. بنابراین برای یادگیری بهتر این روش نخست باید با مفاهیم گفته شده آشنا شویم.

در محیط زندگی با مفهوم شیء آشنا هستم. همان طور که می‌دانید یک شیء چیزی است مادی که دارای خصوصیاتی است، از جمله این که می‌تواند در مقابل برخی اتفاقات که ممکن است برایش رخ دهد از خود واکنش‌هایی نشان دهد. پس با این حال می‌توان گفت که هر شیء به همراه سه جنبه‌ی زیر شناخته می‌شود :

  • خواص
  • رفتار یا متد
  • روابط

خواص ویژگی‌هایی است که مشخص کننده‌ی حالت فعلی شی‌ء است؛ برای مثال می‌‌توان گفت رنگ یک میز قهوه‌ای است یا قد یک شخص 170 سانتی‌متر بودن قد خواص آنهاست.

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

اشیایی که در دنیای واقعی وجود دارند، از انواع متفاوتند. حتی اشیای هم نوع ممکن است خصوصیات، رفتارها و روابط متفاوتی داشته باشند. با توجه به این نکته، برای شیء‌ها تقسیم بندی خاصی را در نظر می‌گیریم و اصطلاح کلاس را تعریف می‌کنیم. کلاس مجموعه‌ی تمام اشیای هم نوع است. هر چند این شیءها خواص، رفتار و روابط متفاوتی داشته باشند.

مثلاً انسان یک کلاس است و هر شخص به خصوصی از این مجموعه شیئی از کلاس مذکور تلقی می‌شود. با توجه به تعاریف و مفاهیمی که در بالا ذکر شد می‌توان روش برنامه نویسی شی‌ء گرا را به صورت زیر بیان کرد:

هر برنامه‌ی شیءگرا شامل تعدادی شیء با خواص و متدهای متفاوت است به طوری که روابط خاص بین آنها برقرار می‌باشد.

متدها مجموعه‌ای از دستورالعمل‌های برنامه نویسی هستند که باید در هنگام بروز رویدادهایی آشکار شوند. مجموعه‌ی این دستورالعمل‌ها رفتار آن شیء را در برابر رویداد به خصوصی نشان می‌دهند.

تاریخچه‌ی زبان BASIC

BASIC ، سر نام کلمات Beginner’s All-purpose Symbolic Instruction Code به معنی زبان همه منظوره برای افراد مبتدی است. این زبان برنامه نویسی، به دلیل سادگی ساختاری، از محبوبیت زیادی برخوردار است. یک هنرجوی مبتدی که آشنایی زیادی با رایانه و برنامه نویسی ندارد، پس از آموزشی کوتاه، قادر خواهد بود که این زبان را یاد گرفته، امکان نوشتن برنامه در محیط این زبان برنامه نویسی را به دست آورد.

زبان برنامه سازی BASIC، در سال 1964 میلادی، از سوی John Kenney و Thomas – kiurts در کالج دارتموث (Dartmouth) پدید آمد. این زبان، نخستین زبان برنامه سازی نبود ولی هدف این افراد، فراهم نمودن یک زبان ساده برای دانشجویان رشته‌های مختلف بود. تا به امروز نسخه‌‌های متعددی از زبان BASIC ارائه شده است که می‌توان از آن جمله به
QUICK BASIC , QBASIC , ANSI BASIC , BASIC , GW BASICاشاره کرد.

زبان برنامه نویسی BASIC با ارائه‌ی VISUAL BASIC جان تازه‌ای گرفت و دوباره رونق یافت. به همین دلیل، به عنوان یک زبان برنامه سازی پایه‌ای در دوره‌ی آموزشس رایانه شناخته شده است. هنرجو، با آموختن این زبان، با اصول برنامه سازی و همچنین برنامه نویسی در محیط VISUAL BASIC , QUICK – BASIC آشنا خواهد شد.

در هر زبان برنامه سازی اگر مقدمات آن زبان را بیاموزید،نوشتن برنامه‌ها در آن ساده خواهد بود.

مقدمات یک زبان عبارتند از : انواع داده‌های موجود، چگونگی تعریف متغیرها، انواع عملگرها، دستورهای شرطی، انواع حلقه‌های تکرار و دستورهای ورودی / خروجی.

کار با ویژوال بیسیک

محیط ویژوال بیسیک ساده است. این محیط که از جمله محیط‌های توسعه یافته‌ی مجتمع یعنی (Integrated Development Environment) IDE می‌باشد، به برنامه نویسان امکان می‌دهد که برنامه‌های تحت ویندوز خود را بدون نیاز به استفاده از برنامه‌های کاربردی دیگر، اجرا و خطایابی کند.

 

آشنایی با محیط ویژوال بیسیک

بعد از اجرای برنامه ویژوال بیسیک، کادر محاوره‌ای New project به نمایش در می‌آید که در این کادر به برنامه نویس امکان انتخاب یکی از انواع برنامه‌هایی را می‌دهد که می‌‌توان در VB ایجاد کرد.

نوع Standard EXE که به طور پیش فرض در این کادر انتخاب شده است به برنامه نویس امکان می‌دهد که برنامه اجرایی استانداردی را ایجاد نماید (برنامه‌های اجرایی استاندارد از اکثر خصیصه‌های ویژوال بیسیک استفاده می‌کنند).

کادر محاوره‌ای New project شامل سه زبانه (Tab)است :

  • برگه New : جهت ایجاد یک پروژه‌ی جدید
  • برگه‌ی Existing : برای باز کردن پروژه‌ای که از قبل وجود دارد.
  • برگه‌ی Recent : لیستی از آخرین پروژه‌های باز شده یا ایجاد شده را نشان می‌دهد.

تعریف پروژه (Project) : پروژه عبارت است از مجموعه‌ی فایل‌هایی (فرم، برنامه و ...) که در کل یک هدف واحد را دنبال می‌کنند. کدهای برنامه، مشخصات ظاهری برنامه و احتمالاً فایل‌های بانک اطلاعاتی در این مجموعه از فایل‌ها قرار دارند.

برای باز کردن یک پروژه بر روی آیکن Standard . exe دابل کلیک کرده و یا روی آیکن، کلیک کنید، سپس کلید Enter و یا دکمه‌یOpen را فشار دهید. با باز شدن پروژه، کادر تبادلی بسته شده و وارد محیط IDE می‌شویم. این محیط دارای چندین پنجره؛ یک میله‌ی منو و یک میله‌ی ابزار است که مشابه میله‌های منو و ابزار در اکثر برنامه‌های تحت ویندوز است.

پروژه‌ی Standard EXE شامل پنجره‌های زیر می‌باشد.

1- پنجره‌ی پروژه (PROJECT)

2- پنجر‌ه‌ی (Form Layout)

3- جعبه ابزار (ToolBox)

4- پنجره‌ی خصوصیات (Properties)

5- پنجره‌ی فرم (Form)

پنجره‌ی پروژه : پنجره‌ای است که معمولاً به نام Project Explorer نیز معروف است شامل تمام فایل‌های مربوط به پروژه می‌باشد.

نوار ابزار این پنجره شامل سه دکمه به نام‌های : View object , View code و Toggle Folder است.

  • دکمه‌یView code برای نمایش پنجره‌ای که در آن کد VB (دستورات برنامه) فایلی که در پنجره‌ی پروژه‌ی فعال وجود دارد، به کار می‌رود.
  • هم چنین View code برای نمایش شکل ظاهری فرم فعال در پنجره‌ی پروژه به کار می‌رود.

نکته : اگر در پنجره‌ی پروژه هیچ فایلی فعال نباشد هر دو دکمه‌ی View code و View object به صورت غیر فعال درمی‌آیند.

  • دکمه‌ی Toggle Folders باعث می‌شود که با هر بار فشار آن، پوشه‌ی Forms به صورت متناوب به نمایش درآمده و پنهان شود.

پنجره Project یکی از مهمترین ابزارهای مدیریت پروژه است.

پنجره (Form Layout) :این پنجره محل فرم را به هنگام اجرای برنامه (Run time) بر روی صفحه‌ی نمایش مشخص می‌کند.

این پنجره یک صفحه‌ی نمایش را نشان می‌دهد که در داخل آن محل قرار گرفتن فرم مشخص شده است.

با قرار دادن نشان گر ماوس بر روی شکل فرم و پایین نگه داشتن دکمه‌ی سمت چپ ماوس و جابه‌جا کردن آن (Drag) می توان فرم را در محل جدید خود قرار داد. به این ترتیب در زمان اجرا فرم مورد نظر در محل مشخص شده ظاهر می شود.

پنجره ی خصوصیات (properties window) : این پنجره ویژگی ها و خصوصیات فرم یا کنترل را نشان می دهد که به ترتیب الفبایی[1] مرتب شده اند.

در قسمت بالای پنجره، جعبه‌ی لیست مانندی (combo box) وجود دارد که در آن نام کنترل یا فرمی که خصوصیات آن در این پنجره آورده شده است. داخل این لیست نام تمامی کنترل‌ها و همچنین نام فرمی که فعلاً فعال است آورده شده است. با انتخاب هر کنترل یا فرم دیگری از این لیست خصوصیات مربوط به آن در پنجره نشان داده می‌شود. توجه کنید که بعضی از این خصوصیات مشترک هستند مانند خصوصیت Name که در هر مورد نشان دهنده‌ی نام کنترل یا فرم است، برخی دیگر برای کنترل‌ها یا فرم مشترک نیستند بلکه منحصر به فردند.

جعبه‌ی ابزار (Tool box) : این جعبه شامل کنترل‌هایی است که از هر کدام آنها می‌توان به تعداد دلخواه بر فرم‌های مربوط به پروژه اضافه کرد. به این شرط که نام هر شیء ایجاد شده منحصر به فرد باشد.

کنترل‌های مربوط به جعبه‌ی ابزار نسبت به نوع پروژه‌ای که در ابتدای ایجاد پروژه‌ی جدید مشخص می‌شود، متغیر است و معمولاً در نوع Standard EXE تعداد این کنترل‌ها بیشتر می‌باشد. با این حال روش‌هایی برای اضافه کردن کنترل‌هایی که به صورت استاندارد در جعبه‌ی ابزار قرار داده نشده‌اند ولی در VB موجود می‌باشد وجود دارد.

پنجره‌ی فرم‌ها (Forms) : این پنجره، فرم فعال در پنجره‌ی پروژه، با تمام اشیای مربوط به آن را در یک رابط گرافیکی کاربر [2](CUI) نشان می‌دهد.

در ابتدای ایجاد یک فرم جدید هیچ شیئی در آن وجود ندارد. البته در صورتی که دکمه‌ی View code در پنجره‌ی پروژه انتخاب شود و یا بر روی شی‌ء یا فرم Double Click شود، پنجره‌‌ی مربوط به کد در این قسمت نمایش داده می‌شود.

نوار منو (Menu bar) : نوار منو مکانی است که در اکثر برنامه‌های تحت ویندوز وجود دارد و شامل دستوراتی برای ساخت، نگهداری و راه اندازی برنامه‌هاست.

جدول 1 وظایف هر بخش از منو را به طور خلاصه مشخص نموده است.

جدول 1

File

برای باز کردن، ذخیره و چاپ پروژه

Edit

برای Paste کپی، حذف و غیره.

View

برای نحوه‌ی نمایش پنجره‌های محیط IDE

Project

برای افزودن خصیصه‌هایی مانند فرم‌ها به یک پروژه

Format

برای تنظیم کنترل‌های موجود بر روی فرم

Run

برای خطایابی

Query

برای اجرا، متوقف کردن برنامه و ...

Diagram

برای بازیابی داده‌ها از پایگاه داده‌ها

Tools

برای ابزارهای IDE و بهینه سازی محیط کار

Add­­_ins

برای نصب و حذف

Windows

برای مرتب کردن و نمایش پنجره‌ها

Help

راهنمای کاملی برای استفاده کننده

 

در پایین نوار منو، نوار ابزاری وجود دارد که توسط آن می‌توان به سرعت به برخی از گزینه‌های منو دسترسی پیدا کرد.

طریقه‌ی کار با جعبه ابزار

برای اضافه کردن یک شیء از هر کنترل موجود در جعبه‌ی ابزار می‌توان به دو روش عمل نمود :

الف ) با Double Click کردن روی هر کنترل، یک نمونه از شیء مربوطه که در وسط فرم فعال ظاهر می‌شود، همیشه از نظر اندازه و موقعیت ثابت است. با پایین نگه داشتن کلید ماوس روی هر شیء اضافه شده و حرکت دادن ماوس (Drag) می‌توان محل شیء را تغییر داد و نیز می‌توان با قرار دادن مکان نما در گوشه‌های شیء و Drag کردن، اندازه‌ی آن شیء را نیز به دلخواه تعیین نمود.

ب ) کنترل مربوط به آن شیء را در جعبه ابزار توسط کلیک سمت چپ ماوس انتخاب نمود و سپس بر روی فرم مورد نظر در محل دلخواه کلیک کرده و با Drag کردن، شیء را به اندازه‌ی دلخواه بر روی فرم اضافه نمود.

کلیات

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

پروژه‌ها می‌توانند انواع دیگری از کد داشته باشند. روال‌های Visual Basic می‌توانید سابروتین یا تابع باشند. تمام کدهایی که روال رویداد نیستند را می‌توان در یک محل جداگانه، به نام ماژول (module)، قرار داد. ماژول یک فایل جداگانه است که در پنجره‌ی خواص ظاهر خواهد شد. از نظر فنی، کدهای موجود در فرم هم در یک ماژول (به نام ماژول فرم) قرار دارند. هر پروژه به تعداد فرم‌هایشان دارای ماژول فرم است. وقتی برنامه‌ای دارای چند فرم است. برنامه نویس باید تصمیم بگیرد که کدام فرم در شروع برنامه روی صفحه ظاهر شود. فرم شروع (start form) اولین فرمی است که در برنامه ایجاد می‌شود، اما می‌توان این وضع را عوض کرد. برای این کار، آیتم Project>Project Name Properties را کلیک کنید (<Project Name> نام پروژه است) تا Visual Basic کادر محاوره‌ای خواص پروژه را نشان دهد.

پنجره‌ی code

اما یک ماژول فرم علاوه بر روال‌های رویداد می‌تواند حاوی قسمت دیگری هم باشد: قسمت تعاریف (Declaration Section). قسمت تعاریف فضایی است که نام‌های مورد استفاده در سایر قسمت‌های ماژول تعریف می‌شوند. کنترل‌ها نیازی به تعریف ندارند، اما سایر انواع داده‌های BasicVisual را باید در این قسمت تعریف کنید.

هر ماژولی هم که داشته باشد می‌تواند دارای یک قسمت تعاریف باشد؛ این قسمت همیشه در ابتدای ماژول ظاهر می‌شود. هر کدی که قبل از اولین روال رویداد نوشته شود جزء این قسمت محسوب خواهد شد.

متن انتخاب شده (که با دستور Option Explicit شروع شده) قسمت تعاریف ماژول است. دقت کنید که در لیست‌های Procedure , Object به ترتیب (Genera;) و (Declarations) دیده می‌شود؛ دو لیست در هر لحظه نشان می‌دهند که شما در کدام قسمت از ماژول فرم قرار دارید.

دو روال بعدی روال رویداد نیستند و این واقعیت را از نام آنها می‌توان دریافت. به یاد دارید که نام یک روال رویداد از دو قسمت، نام کنترل و نام رویداد که با یک زیر خط به هم متصل شده‌اند، تشکیل می‌شود. با این که نام روال Update _ Count () دارای دو قسمت و یک زیر خط است ولی اگر مکان نما را در بدنه‌ی این روال قرار دهید در لیست Object همچنان کلمه‌ی General را خواهید دید، چون روال مزبور جزء روال‌های عمومی ماژول است. (اما نام روال Update _ Countدر لیست Procedure ظاهر خواهد شد، چون این لیست حاوی نام تمام روال‌های ماژول از جمله روال‌های عمومی است).

داده‌های در ویژوال بیسیک

هر زبان برنامه‌نویسی برای پردازش اطلاعات به انواع مختلفی از داده‌ها نیاز دارد و BasicVisual هم از این قاعده مستثنی نیست. BasicVisual از انواع داده‌های مختلفی پشتیبانی می‌کند که با آنها می‌توان نیازهای مختلف برنامه نویس را برآورده کرد.

BasicVisual هم مانند سایر زبان‌های برنامه‌نویسی درباره‌ی داده‌های خود سخت گیر است (البته نه به شدت برخی ازآنها) و باید دقیقاً به او بگویید که از چه نوع داده‌ای می‌خواهید استفاده کنید. BasicVisual از دوازده (12) نوع داده (Data type) پشتیبانی می‌کند.

داده‌های عددی

تمام انواع داده‌های عددی در یکی از مقوله‌های زیر جای می‌‌گیرند:

  • اعداد صحیح (Integer). اعداد صحیح بدون نقطه‌ی اعشاری : مانند 614، 0، 934- 0
  • اعداد اعشاری (Decimal). اعداد با نقطه‌ی اعشاری (ممیز)؛ مانند 709، 8، 005، 0، 355، 402 – به اعداد اعشاری اعداد ممیز شناور هم گفته می‌شود. در تمام اعداد اعشاری باید نقطه‌ اعشاری وجود داشته باشد حتی اگر ارقام بعد از آن صفر باشند.

BasicVisual اعداد اعشاری و صحیح را به روش‌های مختلف ذخیره و با آنها کار می‌کند. با آنکه برای یک کاربر بین 8 و 00/8 هیچ فرقی وجود ندارد ولی از نظر BasicVisual آنها متفاوتند.

مقدار حافظه‌ای که انواع داده‌ای مختلف به خود اختصاص می‌دهند یکسان نیست. با نگاه کردن به یک عدد نمی‌توان گفت که چقدر حافظه اشغال کرده است. مثلاً، اعداد 999، 29، 701 هر دو به یک مقدار حافظه می‌گیرند. با آن که امروزه دیگر حافظه یک مشکل کلیدی نیست و شما هم به عنوان برنامه نویس نباید زیاد نگران آن باشید، ولی همیشه سعی کنید برای داده‌هایتان نوعی انتخاب کنید که حافظه‌ی کمتری را اشغال می‌کند.

در جدول 2 هفت نوع داده‌ی عددی BasicVisual، مقدار حافظه‌ی مورد نیاز هر کدام و محدوده‌ای می‌توانند در خود جای دهند را می‌بینید. هنگام تعریف داده‌ها این جدول را مد نظر داشته باشید. به عنوان مثال، اگر می‌خواهید با اعداد منفی کار کنید نباید از نوع Byte استفاده کنید، اما اگر با سن افراد سر و کار دارید این نوع بهترین انتخاب ممکن است.

جدول 2) هفت نوع داده‌ی عددی BasicVisual

Byte

1 بایت

0 تا 255

Integer

2 بایت

33/768 – تا 32/767

Long

4 بایت

2/147/483/648- تا 2/147/483/647

Single

8 بایت

اعداد منفی: - 402823و 383 + E تا – 401298 –E-451

اعداد مثبت : 401298و 451- E تا 402823و 383+ E

Double

8 بایت

اعداد منفی : - 79769313486232 و 3081+E تا ـ

94065645841247و 3244- E

اعداد مثبت : 94065645841247و 3244- E تا

79769313486232 و 3081+E

Currency

8 بایت

- 922/337/203/685/5808و477 تا

922/337/203/685/5807و477 (چهار رقم اعشار برای حفظ دقت محاسبات است)

Decimal

12 بایت

79/228/162/514/264/337/593/543/950/335 بدون اعشار

9228162514264337593543950335و7 با حداکثر 28 رقم اعشاری (Visual Basic هنوز به طور کامل از این نوع پشتیبانی نمی‌کند).

بایت (byte) معادل یک واحد ذخیره سازی در حافظه PC است. در نوع Single برای نوشتن نمای عدد از E یا e استفاده می‌شود؛ در نوع Double می‌توان از D یا d برای نوشتن نما استفاده کرد. برای تبدیل یک عدد از عدد نویسی معمولی باید عدد بعد از E (یا D) را به توان 10 رسانده و آن را در عدد قبل از E (یا D) ضرب کنید. مثلاً،E+55,83 معادل 10000 (105)× 83/5 یا 583000 است. هنگام کار با اعداد بسیار بزرگ (یا بسیار کوچک) عدد نویسی علمی کمک قابل توجهی به دقت و صرفه جویی درجا خواهد کرد.

وقتی در برنامه عددی را صریحاً می‌نویسید (به این قبیل اعداد واژه‌ی عددی –Numeric Literal– گفته می‌شود)، Visual Basic مناسب‌ترین نوع را برای آن برمی‌گزینند ولی گاهی لازم است تا واژه‌ی مورد استفاده از نوعی باشد که شما دارید نه آنچه که Visual Basic تعیین می‌کند. در چنین مواردی می‌توانید نوع واژه را صریحاً به Visual Basic معرفی کنید، این کار با استفاده از پسوند نوع داده (data – type suffix) امکان پذیر است. جدول 3 انواع پسوندهای عددی را در Visual Basic نشان می‌دهد.

جدول 3) پسوندهای عددی Visual Basic

پسوند

نوع داده

&

Long

!

Single

Double

@

Currency

 

توجه داشته باشید که اگر از عدد نویسی علمی استفاده می‌کنید، حروف D,E به ترتیب معرف انواع Double , Single هستند و دیگر نباید از پسوند نوع داده استفاده کنید.

به یک مثال توجه کنید. اگر در برنامه‌‌ای از واژه‌ی عددی 8/5 استفاده کرده باشید، Visual Basic به طور خودکار نوع Single را برای آن برمی‌گزینند و 4 بایت حافظه به آن اختصاص می‌دهد. اما با نوشتن این عدد به صورت ، Visual Basic را وادار کنید تا به آن چشم یک عدد Double نگاه کند و 8 بایت حافظه برای آن کنار بگذارد.

سایر انواع داده

درک‌ داده‌های غیر عددی (برای کسانی که علاقه‌ای به ریاضیات ندارند) آسان‌تر است. یکی از دلایلی که BASIC، علیرغم حضور زبان‌ها پیشرفته‌تر، همچنان مطرح مانده، توانایی‌های آن در کار با رشته‌های متن است. رشته (String) ترکیبی است از چند کاراکتر، که حتی می‌توانند عدد باشند ولی نمی‌توان روی آنها محاسبه انجام داد. نام، آدرس، شماره تلفن یا حساب بانکی را می‌توان به صورت رشته نمایش داد. همواره سعی کنید فقط برای اعدادی که نیاز به محاسبه دارند از انواع عددی استفاده کنید. در جدول 4 انواع غیر عددی Visual Basic را می‌بینید.

جدول 4 انواع داده‌ی غیر عددی Visual Basic

نوع داده

مقدار حافظه

محدوده

(طول ثابت) String

طول رشته

از 1 تقریباً 65400 کاراکتر

(طول متغیر) String

طول رشته + 10 بایت

0 تا 2 میلیارد کاراکتر

Date

8 بایت

از اول ژانویه 100 تا31 دسامبر9999

Boolean

2 بایت

True یا False

Object

4 بایت

معادل شیء تعریف شده

(عددی) Variant

16 بایت

هر عددی تا Doble

(متن) Variant

طول رشته + 22 بایت

مانند (طول متغیر) String

 

متغیر Boolean فقط می‌تواند دو مقدار بگیرد: True (درست) یا False (نادرست).

واژه‌های رشته‌ای (string literal) همیشه بین دو علامت نقل قول (") قرار می‌گیرند و می‌توانند شامل هر کاراکتری باشند. مثال‌های زیر همگی رشته هستند.

"Oh me, oh my"

"543 – 00 – 0324"

"1020 S.Yale Avenue"

""

هر چیزی که بین دو علامت " قرار گیرد، یک رشته است حتی اگر (مانند مثال آخر) هیچ کاراکتری در آن نباشد. رشته‌ای که طول آن صفر باشد، رشته‌ی Nullنامیده می‌شود. Visual Basic از رشته‌های خاصی به نام رشته‌های خالی (که با کلمه‌ی کلیدی Empty تعریف می‌شوند) پشتیبانی می‌کند. رشته‌ی خالی رشته‌ای است که هیچ مقداری (حتی Null) ندارد.

هنگام تعریف واژه‌هایی که حاوی تاریخ و زمان هستند از علامت استفاده کنید. Visual Basic از تمام فرمت‌های تاریخ و زمان پشتیبانی می‌کند. به مثال‌های زیر توجه کنید:

July 4,1776

7:11 pm

19:11:22

1-2-2003

5-Dec-99

نوع داده‌ای Boolean برای مواردی برای مواردی مناسب است که فقط دو مقدار متضاد (True یا False، Yes یا No و از این قبیل) دارید. خاصیت Enabled کنترل‌ها از این نمونه است.

نوع داده‌ای Variant می‌تواند هر مقداری (به جز رشته‌های با طول ثابت) را در خود جای دهد. از این نوع داده زمانی استفاده کنید که از قبل دقیقاً ندانید با چه نوع داده‌ای سر و کار خواهد داشت.

کار با متغیرها

متغیر (variable) مکانی است برای نگهداری یک مقدار، مقداری که در متغیر قرار داده می‌شود، قابل تغییر است (نام آن هم بر همین ویژگی دلالت دارد). وقتی مقداری را در یک متغیر قرار می‌دهید مقدار قبلی آن از بین خواهد رفت. متغیر مکانی است در حافظه برای ذخیره کردن داده‌های موقتی برنامه.

متغیرها با نامشان شناخته می‌شوند، بنابراین در یک روال استفاده از دو متغیر با یک نام مجاز نیست چون Visual Basic قادر به تشخیص آنها نخواهد بود. بر خلاف کنترل‌ها که Visual Basic خود به آنها یک نام پیش فرض می‌دهد، نامگذاری متغیرها از همان ابتدا برعهده‌ی برنامه نویس است. قبل از استفاده از یک متغیر باید آن را تعریف (declare) کنید، تعریف یک متغیر یعنی نامگذاری آن و تعیین نوع مقداری که می‌تواند بگیرد. متغیرها می‌توانند فقط از همان نوعی که تعریف شده‌اند مقدار بگیرند (به استثنای متغیرهای variant که می‌توانند از تمام انواع داده مقدار بگیرند)

تعریف متغیرها

برای تعریف یک متغیر (نامگذاری و تعیین نوع آن) از کلمه‌ی کلیدی Dim استفاده می‌شود. قبل از استفاده از یک متغیر حتماً باید آن را تعریف کرد. البته Visual Basic اجازه می‌دهد که این قاعده‌ی کلی را زیر پا بگذارید ولی تخلف از این قاعده می‌تواند به سردرگمی منجر شود. الزام (یا عدم الزام) به تعریف متغیرها را می‌توانید در منوی Tools، گزینه options، برگه‌ی Editor و گزینه‌ی Require Variable Declaration مشخص کنید. اگر دقت کرده باشید، در قسمت تعاریف پنجره‌ی کد که دستور به صورت پیش فرض وجود دارد:

Option Explicit

این دستور به Visual Basic می‌گوید که در کل ماژول مورد بحث، متغیرها قبل از استفاده باید تعریف شوند. در چنین ماژول‌هایی هر گاه نام یک متغیر را اشتباه بنویسید، Visual Basic آن را به شما گوشزد خواهد کرد. اما اگر این گزینه را غیر فعال کرده باشید، Visual Basic اشتباه در نوشتن نام یک متغیر را متغیر جدیدی تلقی کرده و به کار خود ادامه خواهد داد. در این حالت تمام متغیرهایی که صریحاً تعریف نشوند از نوع Variant در نظر گرفته خواهند شد.

شکل کلی استفاده از دستور Dim برای تعریف یک متغیر چنین است :

Dim Var Name As Data Type

که در آن Var Name نام متغیر و Data Type یکی از انواع داده‌های Visual Basic است. متغیرهای مورد استفاده در یک روال باید در همان ابتدای روال تعریف شوند. متغیرهای تعریف شده در یک روال فقط در همان روال قابل استفاده‌‌اند و در هیچ روال دیگری قابل دسترسی نیستند؛ به این قبیل متغیرها، متغیر محلی (local variable) گفته می‌شود. متغیرهایی که در قسمت تعاریف ماژول تعریف شوند از تمام روال‌های آن ماژول قابل دسترس خواهند بود؛ به این گونه متغیرها، متغیرعمومی (Global Variable) می‌گویند. متغیرهای عمومی فقط در همان ماژولی که تعریف شده‌اند دیده می‌شوند. متغیرها را می‌توان به گونه‌ای تعریف کرد که در تمام ماژول‌های پروژه قابل دسترسی باشند.

چون نام گذاری متغیرها بر عهده‌ی برنامه نویس است، باید قواعد نام گذاری آنها را بدانید:

  • نام متغیر باید با یکی از حروف الفبا شروع شود.
  • استفاده از حروف و اعداد در نام متغیرها مجاز است.
  • نام یک متغیر می‌تواند تا 255 کاراکتر طول داشته باشد.
  • سعی کنید حتی الامکان از حروف خاص (غیر الفبایی – عددی) استفاده نکنید؛ زیر خط (_) در این میان یک استثناست.
  • فاصله در نام متغیرها مجاز نیست.

علاوه بر قواعد الزامی فوق، سعی کنید هنگام نام گذاری متغیرها نکات زیر را هم رعایت کنید:

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

در هر دستور Dim می‌توان بیش از یک متغیر را تعریف کرد؛ تعریف‌ها با کاما (,) از هم جدا می‌شوند :

Dim intTotal As integer, CurSales99 As Currency

اگر نوع داده‌ی یک متغیر ذکر نشود، Visual Basic آن را از نوع variant تعریف خواهد کرد؛ بنابراین هر دو دستور زیر معادل یکدیگرند:

Dim vntControlVal As Variant

Dim vntControlVal

تعریف رشته‌ها

هنگام تعریف رشته‌ها یک مشکل ثانویه پیش می‌آید، چون دو نوع String وجود دارد: با طول ثابت، با طول متغیر. متداول‌ترین رشته‌ها رشته‌های با طول متغیرهستند چون روش تعریف آنها درست شبیه تعریف متغیرهای دیگر است. در مثال‌های زیر دو رشته‌ی با طول متغیر تعریف شده‌اند :

Dim strCityName As String

Dim strStateName As String

هر دوی این متغیرها می‌توانند رشته‌هایی با طول‌های متفاوت را در خود نگه دارند. مثلاً، اگر ابتدا در متغیر strCityName رشته‌ی "Tehran" و سپس رشته‌ای "Yazd" را ذخیره کنیم، این متغیر طول خود را متناسب با آن تغییر خواهد داد. در اکثر موارد این همان چیزی است که ما می‌خواهیم، ولی گاهی پیش می‌آید (مثلاً هنگام کار با فایل‌ها) که بخواهیم طول رشته‌ها ثابت بماند. در این موارد باید طول آنها را مشخص کنیم :

اگر رشته‌ای که طول آن بیش از پنج حرف باشد به متغیر strZipCode نسبت داده شود، Visual Basic فقط پنج حروف اول آن را ذخیره می‌کند و ما بقی را دور خواهد انداخت.

مقدار دادن به متغیرها

بعد از تعریف یک متغیر، می‌توان داده‌ها را در آن ذخیره کرد. ساده‌ترین راه برای ذخیره کردن یک مقدار در یک متغیر، دستور انتساب (assignment statement) است. شکل کلی این دستور چنین است :

Item Name = Expression

که در آن Item Name نام یک متغیر (یا خصوصیت) است و Expression می‌تواند یکی از موارد زیر باشد :

  • یک عبارت محاسباتی
  • یک واژه
  • یک عبارت منطقی یا رشته‌ای
  • مقدار خصوصیت یک کنترل (خواص کنترل‌ها از نوع Variant هستند ولی Visual Basic هنگام ذخیره کرده آنها در یک متغیر نوع آنها را تبدیل خواهد کرد)
  • ترکیبی از عبارات محاسباتی یا منطقی، واژه‌ها، متغیرها و مقدار خئاص کنترل‌ها هر چیزی که بتواند یک مقدار تولید کند، عبارت (expression) است. به مثال‌های زیر توجه کنید :

curSales : 571275

strFirstName="Herry"

blnPassedTest=True

blnsEnabled = iblTitle.Enabled

dblValue=45.1#

intcount=intNumber

dteOld= #4-1-92#

sngOld97Tptal=sngNew98Total-100000

مهمترین نکته درباره‌ی یک عبارت آن است که مقدار سمت راست عبارت به متغیر سمت چپ آن نسبت داده می‌شود. توجه کنید که مقدار سمت راست عبارت بایستی با نوع متغیر سمت چپ عبارت متناسب باشد، یا اینکه امکان تبدیل آن برای Visual Basic وجود داشته باشد. مثلاً، Visual Basic می‌تواند یک عدد کوچکتر را در متغیری از نوع Long (که قاعدتاً برای اعداد بزرگ به کار می‌رود) قرار دهد، ولی نمی‌تواند یک رشته را به متغیر عددی نسبت دهد. در Visual Basic،برای حفظ سازگاری با بیسیک‌های قدیمی، می‌توان از کلمه کلیدی let برای مقدار دادن به متغیرها استفاده کرد؛ دو دستور زیر معادل یکدیگرند:

Let intCount =1

inCount= 1

عملگرهای ویژوال بیسیک

Visual Basic از عملگر (operator) های محاسباتی و رشته‌ای متعددی پشتیبانی می‌کند. جدول 5 عملگرهای متداول Visual Basic را نشان می‌دهد. عملگر ابزاری است برای ترکیب کردن داده‌های مورد نظر.

عملگر توان (exponentiation) یک عدد را به توان عدد دیگر می‌رساند؛ 2^3 یعنی 2توان 3، عملگرهای ضرب، تقسیم، جمع و تفریق هم دقیقاً همان کاری را می‌کنندکه در محاسبات معمول با آن آشنا هستید. عملگر Mod برای محاسبه‌ی باقی مانده یک تقسیم است، بنابراین 3 11 mod معادل 2 خواهد شد. چون باقی مانده‌ی تقسیم 11 بر 3 معادل 2 است. عملگر Mod فقط برای اعداد صحیح است و اگر از اعداد اعشاری استفاده کنید، Visual Basic ابتدا آنها را به صحیح تبدیل کرده و سپس باقی مانده را محاسبه خواهد کرد. عملگر تقسیم صحیح () خارج قسمت صحیح تقسیم را برمی‌گرداند و باقی مانده‌ی تقسیم را دور می‌اندازد.

جدول 5 عملگرهای Visual Basic

عملگر

مفهوم

مثال

نتیجه

^

توان

2^3

8

*

ضرب

2*3

6

/

تقسیم

6/2

3

+

جمع

2+3

5

-

تفریق

6-3

3

Mod

مدول یا نهشت

11 mod 3

2

تقسیم صحیح

11/3

3

& یا +

ترکیب رشته‌ها

"Hi,"&"There"

"Hi, There"

 

نکته جالب در جدول 5 آن است که عملگر + دو کار متفاوت انجام می‌دهد: جمع معمولی و به هم چسباندن (ترکیب) رشته‌ها. این عملگرها با توجه به محلی که مورد استفاده قرار رفته (بین دو عدد یا بین دو رشته) واکنش مناسب را نشان می‌دهد. هنگام ترکیب رشته‌ها، Visual Basic هیچ چیز به آنها اضافه نخواهد کرد. بنابراین اگر می‌خواهید بین دو رشته یک فاصله وجود داشته باشد باید خودتان آن را اضافه کنید. به مثال زیر توجه کنید:

StrCompleteName=lblFirst.Caption & " " & lblLast.Caption

به این نوع عملگرها عملگر تحریف شده می‌گویند چون عملکرد آنها بسته به مکان استفاده از آن متفاوت خواهد بود.

 

[1]- خصوصیت Name از این قاعده مستثنی است.

[2]- Graphic user interface



یاهومارکت
بخاطر بسپارید



مقاله29-ارائه روشی برای طراحی مبتنی بر سرویس80ص

مقاله29-ارائه روشی برای طراحی مبتنی بر سرویس80ص

مقاله29-ارائه روشی برای طراحی مبتنی بر سرویس80ص

فهرست مطالب

عنوان شماره صفحه

چکیده

1

مقدمه

2

 

فصل اول: کلیات معماری سرویس گرا

 

1-1) تعاریف اولیه

5

1-1-1) سبک معماری مبتنی بر سرویس

5

2-1) اهداف تحقیق

7

3-1) پیشینه تحقیق

8

4-1) روش کار و تحقیق

10

5-1) مقایسه ای بر مدلهای توسعه وابسته به معماری

11

1-5-1) توسعه مبتنی بر object

11

2-5-1) توسعه مبتنی بر مؤلفه

12

3-5-1) محاسبات توزیع یافته

13

4-5-1) معماری سرویس گرا

14

1-4-5-1) توسعه مبتنی بر سرویس

15

2-4-5-1) قابلیتهای معماری سرویس گرا

17

6-1) مؤلفه های SOA

18

 

7-1) اصول سرویس گرائی

21

8-1) سرویس گرائی و تشکیلات سازمانی

27

1-8-1) لایه های سرویس

29

1-1-8-1) لایه سرویس کاربردی

32

2-1-8-1) لایه سرویس تجاری

34

3-1-8-1) لایه سرویس همنوائی

34

2-8-1) سرویسهای Agnostic

37

 

فصل دوم : تحلیل مبتنی بر سرویس

 

1-2) چرخه حیات معماری سرویس گرا

40

2-2) استراتژیهای تحویل SOA

41

1-2-2) روش پایین به بالا

41

2-2-2) روش بالا به پایین

43

3-2-2) روش Meet-In-The-Middle

45

3-2) تحلیل سرویس گرا

47

1-3-2) اهداف تحلیل سرویس گرا

47

2-3-2) پروسه تحلیل سرویس گرا

48

 

فصل سوم : الگوها و اصول طراحی

 

1-3) نکات قابل توجه طراحی

52

1-1-3) مدیریت دانه بندی سرویس و مؤلفه

52

2-1-3) طراحی برای قابلیت استفاده مجدد

53

3-1-3) طراحی برای قابلیت ترکیب سرویس

54

 

1-3-1-3) اتصال و همبستگی

54

2-3) رهنمودهای عمومی

55

1-2-3) استانداردهای نامگذاری

55

2-2-3) طراحی عملیات سرویس به شکلی که ذاتا قابل توسعه باشد

56

3-2-3) تعیین متقاضیان مطرح سرویس

56

3-3) الگوهای طراحی و انواع معماری

57

1-3-3) الگوها

58

2-3-3) طراحی بنیادی

59

 

فصل چهارم : راهکار پیشنهادی

 

1-4) مرحله 1 بازبینی لایه بندی سیستم SOA

64

1-1-4) فعالیت 1 مروری بر استراتژیهای لایه بندی

64

2-1-4) فعالیت 2 بازبینی لایه بندی فاز تحلیل

66

3-1-4) فعالیت 3 معرفی لایه های تخصصی تر

67

1-3-1-4) لایه داده

67

2-3-1-4) لایه دسترسی سرویس

70

3-3-1-4) لایه تعامل

71

2-4) مرحله 2 تحلیل تغییرپذیری

77

1-2-4) فعالیت 1 شناسایی انواع تغییرپذیری

79

2-2-4) فعالیت 2 مدلهای موجود برای تغییرپذیری

83

3-2-4) فعالیت 3 گروهبندی و مدلسازی تغییرپذیری

84

4-2-4) فعالیت 4 نگاشت نقاط تغییرپذیر

87

 

3-4) مرحله 3 سرویسهای فاز طراحی

89

1-3-4) فعالیت 1 تعیین سرویسها

90

2-3-4) فعالیت 2 جایگاه سرویسهای کنترلی

98

4-4) مرحله 4 مروری بر دانه بندی

99

1-4-4) فعالیت 1 تکنیک دانه بندی سرویسها و چنددانه ای بودن

102

2-4-4) فعالیت 2 متدهای چند دانه ای سرویسها

104

5-4) مرحله 5 مدلسازی فرایند

108

1-5-4) استفاده از مدلسازی فرایند برای طراحی معماری سرویس گرا

108

2-5-4) ابزار مدلسازی فرایند

109

3-5-4) فعالیت طراحی فرایند کسب و کار مبتنی بر سرویس

113

 

فصل پنجم : بررسی موردی

 

1-5) انتخاب بررسی موردی

115

1-5) سیستم سفارش کالا

116

3-5) تحلیلی بر راهکار پیشنهادی

134

 

فصل ششم : نتیجه گیری و پیشنهادات

 

1-6) نتیجه گیری

136

2-6) پیشنهادات

138

مقاله

139

پیوستها

140

منابع و ماخذ

 

فهرست منابع فارسی

196

فهرست منابع لاتین

197

سایتهای اطلاع رسانی

200

اختصارات

201

چکیده انگلیسی

202

 

 
 


فهرست شکلها

عنوان شماره صفحه

شکل 1-1) میان افزار مبتنی بر پیغام[24]

14

شکل 2-1) مدل مفهومی معماری سرویس گرا[24]

15

شکل 3-1) توسعه مبتنی بر سرویس[24]

16

شکل 4-1) یک دیدگاه اولیه از چگونگی قرار گرفتن منطق خودکارسازی در داخل واحدها توسط SOA

20

شکل 5-1) عملیاتهایی که به سرویسهای متفاوتی تعلق دارند و بخشهای متنوعی از منطق پروسه را نمایش می دهند.

20

شکل 6-1) چگونه مؤلفه های یک معماری سرویس گرا با یکدیگر ارتباط دارند.

21

شکل 7-1) پیمانهای سرویس به طور رسمی مؤلفه های سرویس, عملیات و پیغام از یک معماری سرویس گرا را تعریف می کند.

23

شکل 8-1) سرویسها وابستگی ها را به قرارداد سرویس محدود می کنند و با این کار به منطق سرویس دهنده زیرین و تقاضاکننده اجازه می دهند که loosely coupled باقی بمانند.

24

شکل 9-1) عملیات Update Everything یک ترکیب سرویس را بسته بندی می کند

25

 

شکل 10-1) مراحل statelessو stateful که یک سرویس درهنگام پردازش یک پیغام از آنها عبور می کند .

27

شکل 11-1) جایگاه سرویسها[1]

28

شکل 12-1) لایه های تخصصی سرویس[1]

32

شکل 13-1) سلسله مراتب چرخه حیات توسعه سرویسهای وب[9]

36

شکل 14-1) بخش بندی سرویسها که محیط راه حل و پردازشهای تجاری را تفکیک کرده است[1].

38

 

شکل 1-2) چرخه حیات معماری سرویس گرا

40

شکل 2-2) گامهای تکنیک پائین به بالا

42

شکل 3-2) گامهای تکنیک بالا به پائین

44

شکل 4-2) گامهای تکنیک meet in the middle[1]

46

 

شکل 1-3) در صورت تجزیه یک سرویس ,الگوهای نظارتی به عدم تاثیرگذاری در قرارداد سرویس کمک می کنند.[27]

 

59

 

شکل 2-3) منطق Agnostic و [27] Non Agnostic

60

 

شکل 1-4) فعالیتهای فاز طراحی

 

63

شکل 2-4) مدل گسترش سیستم تحت تاثیر لایه بندی [30]

65

شکل 3-4) پنهان سازی پیچیدگی توسط لایه انتزاعی داده

69

شکل 4-4) لایه دسترسی سرویس[2]

70

شکل 5-4) ساختار منطقی از سرویسهای تعاملی

73

 

شکل 6-4) مثالهایی از سرویس تعاملی در SOA

76

شکل 7-4) چارچوب مبتنی بر سرویس برای سرویسهای تعاملی

76

شکل 8-4) 4 نو ع تغییرپذیری

80

شکل 9-4) واسط مورد نیاز فرایند کسب و کار

81

شکل 10-4) نقاط تغییرپذیر ممکن

82

شکل 11-4) شمایی از تغییرپذیری در XML[6]

83

شکل 12-4) مدل تصمیم , مدل واسطی برای سازگاری سرویسها می باشد[6]

84

شکل 13-4) دیاگرام فعالیت و نقاط تغییر پذیر[31]

85

شکل 14-4) مدل خصیصه[31]

86

شکل 15-4) سرویسهای Gateway[2]

92

شکل 16-4) سرویسهای Façade[2]

93

شکل 17-4) جایگاه دستورات کنترلی درمقایسه دو راه حل [2]

96

شکل 18-4) سرویسهای دانه درشت[11]

101

شکل 19-4) ارتباط سرویس دانه درشت و سرویس دانه ریز[11]

103

شکل 20-4) متد جدیدی برای ارسال اطلاعات آدرس اضافه شده است.[11]

105

شکل 21-4) یک متدی که هر دو نوع اطلاعات آدرس و حساب را بر می گرداند.[11]

105

شکل 22-4) متدی که مؤلفه های درخواست داده شده را برمی گرداند[11]

107

شکل 23-4) مدلسازی سلسله مراتبی با BPMN[5]

112

شکل 24-4) مجموعه مدلهای فاز طراحی و ارتباط آنها

113

شکل 1-5) دیاگرام فعالیت 3 عامل

117

 

شکل 2-5) سرویسهای کاندید

120

شکل 3-5) مدل لایه بندی سیستم

121

شکل 4-5) تغییر پذیری در گردش کار

122

شکل 5-5) مدل خصیصه

123

شکل 6-5) دیاگرام فعالیت برای شناسایی وابستگیها

124

شکل 7-5) دیاگرام General Composition

125

شکل 8-5) مدل نگاشت

125

شکل 9-5) لایه تامین کننده QOS

126

شکل 10-5) سرویسهای دانه ریز

127

شکل 11-5) دیاگرام Consignee Collaboration

127

شکل 12-5) دیاگرام Consignee Sequence Diagram

128

شکل 13-5) دیاگرام Shipper Collaboration

128

شکل 14-5) دیاگرام Shipper Sequence

129

شکل 15-5) دیاگرام Partial Order Process Collaboration

129

شکل 16-5) دیاگرام Partial Order Process Sequence

 

130

شکل 17-5) دیاگرام تعاملات مابین سرویس فرایند و سرویسهای همکار

 

131

شکل 18-5) مدل BPMN

132

 

 

 

 

 

فهرست جداول

عنوان شماره صفحه

جدول 1-1) مقایسه مدلهای توسعه وابسته به معماری

17

جدول 1-6) راهکار پیشنهادی در تامین اصول طراحی

137

 

 

 

 


چکیده

معماری سرویس گرا به سرعت به عنوان نخستین ائتلاف و راه حل معماری محیطهای محاسباتی ناهمگون و پیچیده معاصر پدیدار گشته است . [1]SOA نیازمند این است که سازمانها مدلهای کسب و کار خود را ارزیابی کنند, به ایجاد تکنیکهای تحلیل و طراحی مبتنی بر سرویس بیاندیشند و طرحهای گسترش و پشتیبانی روابط مابین فروشنده , مشتری و شریک تجاری را ارزیابی کنند . طراحان نمی توانند انتظار مدیریت توسعه یک پروژه سرویس گرا را داشته باشند بدون اینکه به شیوه طراحی دقیق و متدولوژی توسعه تکیه داشته باشند . از آنجایی که متدولوژی توسعه مبتنی بر سرویس اهمیت حیاتی در توصیف ,ساخت, پالایش و تطبیق فرایندهای کسب وکاری دارد که تغییرپذیری بالایی دارند و تا به حال روش مناسب و منسجمی برای توسعه برنامه های کاربردی تجاری قدرتمند وجود ندارد , هدف این تحقیق ارائه روشی برای طراحی مبتنی بر سرویس می باشد . در این تحقیق از تکنیکها و مباحث مطرح درSOA استفاده شده و برای طراحی سرویس گرا روشی پیشنهاد می شود . تمرکز تحقیق بر روی فرایند طراحی می باشدکه اصول و تکنیکهای کافی برای مشخص کردن , ساخت و پالایش فرایندهای کسب وکاری که به سرعت دچار تغییر می شوند فراهم می کند . روش پیشنهای برای ایجاد کنترل متمرکز از تجرید لایه های سرویس و طبقه بندی انواع سرویس استفاده نموده و در کنار استفاده از سیستمهای موروثی در حمایت از استراتژیهای کوتاه مدت سازمانها ,بر اساس اصول طراحی و اصول سرویس گرائی در راستای استراتژیهای بلند مدت عمل می کند تا در تامین اهداف تجاری و حمایت از فرایندهایی که به سرعت دچار تغییر می شوند مفید واقع شود . همچنین زمینه تعامل عاملهای مختلف فرایند که در سطح چندین سازمان گسترده شده اند فراهم می شود و با تحلیل تغییرپذیری, انعطاف پذیری سیستم در حمایت از نقاط متغیر فرایندها و تغییر در سیاستهای کسب و کار افزایش می یابد . بدین منظور در ادامه بحث ابتدا سبکهای مختلف توسعه نرم افزار به همراه سبک مبتنی بر سرویس و اصول سرویس گرائی به تفصیل بررسی می گردد , سپس چرخه حیات معماری سرویس گرا و فاز تجزیه و تحلیل که مقدمه ای برای طراحی می باشد مورد بررسی قرار می گیرد و در ادامه با بیان اصول و الگوهای طراحی موجود , راهکار پیشنهادی با نمونه پیاده سازی شده به صورت مشروح بیان می گردد .

 

کلمات کلیدی :SOA , Layer, Service Type , Process ,Variation , Granularity .Composition

مقدمه

در طول چهار دهه اخیر، میزان پیچیدگی نرم افزارها بصورت صعودی افزایش یافته و تقاضا برای نرم افزارهای قدرتمندتر بیشتر شده است. در این میان، به نظر می رسد که روشهای قدیمی جوابگوی نیازهای در حال رشد کنونی نیستند و نیاز به ایجاد و بکارگیری روشهائی است که بوسیله آنها بتوان بر این پیچیدگیها بصورت کاراتر و در زمانی کوتاهتر غلبه کرد. از سوی دیگر امکان کنار گذاشتن یکباره سیستمهای نرم افزاری موجود که تا به حال مشغول سرویس دهی به مشتریان بوده اند، وجود ندارد و می بایست سیستمهای جدید را بصورت یکپارچه و در کنار همین سیستمهای فعلی بوجود آورد. معماری سرویس گرا، با تکیه بر اصول سرویس گرائی و محاسبات و سرویس های توزیع شده و بر پایه پروتکلهای شبکه و لایه های منطقی سرویس و همچنین زبانهایی که تولید نرم افزارهای توزیع شده را فراهم می کنند، به عنوان راه حلی مناسب جهت از میان برداشتن مشکلات و مسائل مذکور مطرح گردیده است[20,21].

SOA مجموعه ای از اصول , نظریه ها و تکنیکهایی را فراهم می کند که فرایندهای کسب و کار , اطلاعات و دارایی های تشکیلات بتوانند به شیوه مؤ ثری سازماندهی شوند و این فرایندها می توانند برای پشتیبانی از طرحهای استراتژیک و سطوح بهره وری که در محیطهای رقابتی کسب و کار مورد نیاز هستند, گسترش داده شوند . بسیاری از تشکیلات اقتصادی در استفاده اولیه شان از SOA چنین پنداشتند که از مولفه های موجود به عنوان سرویس وب می توانند استفاده کنند و عنوان کردند تنها با ایجاد سرویسهای پوشاننده[2] و رها کردن مولفه های زیرین غیر قابل دسترس, این کار عملی خواهد بود . در نتیجه پیاده سازی لایه نازکی از SOAP/WSDL/UDDI بالای برنامه کاربردی موجود یا مولفه هایی که سرویسهای وب را تحقق می بخشند , تا حد گسترده ای در صنعت نرم افزار تجربه شد . اما تا به حال روش مناسبی برای ایجاد برنامه های کاربردی تجاری قدرتمند وجود ندارد . اگرچه طبیعت مولفه ها مناسب استفاده از آنها به عنوان سرویس وب می باشد , در بیشتر موارد اینطور نیست و برای طراحی مجدد و ارائه کارکرد مولفه ها به شیوه صحیح و از طریق سرویس وب نیازمند تلاش مضاعفی می باشیم[9].

پیاده سازی موفق SOA مستلزم این است که به مفاهیم و استراتژیهای پیاده سازی که خصوصیات و ویژگیهای اساسی SOA را فرموله می کنند , توجه شود . به مجرد پیاد ه سازی موفق SOA, مزایایی در جهت کاهش زمان توسعه و ایجاد محصول , بهره برداری از کاربردهای انعطاف پذیر با پاسخ دهی سریع و امکان اتصال پویای استدلالهای کاربردی شرکای تجاری , حاصل می شود . یک پیاده سازی کامل SOA نه تنها در ارتباط با گسترش و صف آرایی سرویسها می باشد بلکه امکان استفاده از سرویسها درجهت اجتماع برنامه های کاربردی متمایز و ایجاد کاربرد مرکب را منعکس می سازد.

 

 

 

 

 

 

 

 

 

فصل اول:

کلیات معماری سرویس گرا

 

 

 

 

 

 

 

 

 

1-1 تعاریف اولیه

1-1-1 معماری سرویس گرا (SOA)

SOA مجموعه قوانین ، سیاستها و چارچوبهایی است که نرم افزارها را قادر می سازد تا عملکرد خود را از طریق مجموعه سرویسهای مجزا و مستقل و در عین حال مرتبط با هم در اختیار سایر درخواست کنندگان قرار دهند تا بتوانند بدون اطلاع از نحوه پیاده سازی سرویس و تنها از طریق رابطهای استاندارد و تعریف شده، این سرویسها را یافته و فراخوانی نمایند و یا در تعریف دیگر می توان گفت معماری سرویس گرا روشی برای ساخت سیستمهای توزیع شده ای است که در آنها عملکرد سیستم بصورت سرویس در اختیار کاربران و یا سایر سرویسها قرار می گیرد. از دیگرتعاریف ارائه شده مرتبط با معماری های سرویس گرا می توان به واحدهای نرم افزاری آماده در شبکه[3] یا سرویسهای سطح حرفه ای[4] اشاره کرد.در حال حاضر، تکنولوژی سرویسهای وب و پیاده سازی نمونه های موفق از آن، نشان داده است که SOA می تواند به عنوان راه حلی عملی و دست یافتنی در طراحی سیستمهای توزیع شده جدید و یکپارچه سازی سیستمهای بزرگ موجود مطرح گردد[3]. در این معماری، همه توابع به عنوان سرویس تعریف می گردند. این توابع شامل توابع تجاری و تراکنشهای تجاری می باشند که تراکنشهای تجاری خود شامل توابع سطح پایین و توابع سیستمی سرویسها هستند. سرویسها بصورت مستقل طراحی و پیاده سازی شده و به عنوان جعبه سیاه عمل می نمایند. قطعات دیگر در خارج از این قطعه, نیازی به دانستن نحوه انجام کار در این سرویس را ندارند و تنها به نتیجه آن نیازمندند. قطعات، سرویسهای خود را از طریق رابطهای تعریف شده در اختیار قطعات دیگر قرار میدهند که این رابطها قابل دستیابی و فراخوانی هستند، بدون اینکه محل قرار گیری آنها اهمیت داشته باشد (رابطهای محلی یا دور ). در ضمن، این رابطها می توانند به همان نرم افزار کاربردی یا به آدرسی در محل دیگری از شبکه مرتبط باشند. رابطها به عنوان کلیدی در برقراری این ارتباطها هستند و از طریق آنها نوع پارامترهای ورودی و نتایج (خروجی) مشخص می گردد[1,34,26].

نیاز به معماری سرویس گرا و امکانات آن ازجنبه های مختلف به نحوه بارزی در برنامه های کاربردی توزیع شده جدید خصوصا برنامه های مرتبط باE-Commerce مشهود و ملموس است. به عنوان نمونه اگرمثلا سرویسمربوط به پرداخت با کارت اعتباری غیر فعالباشد، ‌قرار نیست که فرایند فروش متوقف شود. بلکه سفارش ها بایستی پذیرفته شوندوعملیات پرداخت به وقت دیگری موکول شود. همانند سایر معماری های توزیع شده،‌ SOA ساخت برنامه های کاربردی با استفاده از اجزایی که در حوزه های جدا از هم قراردارند را ممکن می سازد و غالبا از سرویسهای وب به عنوان نقاط ورود برنامه کاربردیاستفاده می کند که از لحاظ مفهومی معادل همان اجزای proxy و stub در سیستمهایتوزیع شده سنتی مبتنی بر اجزاء هستند. با این تفاوت که در این جا ارتباط بین سرویسوب و استفاده کننده خیلی آزادانه تر و مستقل تراست. به علاوه SOA به خاطر در بر داشتن فاکتورهایی که اهمیت حیاتی در تجارت دارند، نیز منحصر به فرداست ( فاکتورهایی نظیر قابلیت اطمینان سرویس،‌ جامعیت پیام ، یکسانی تراکنش وامنیت پیام ). اگر سیستمی توانایی های خود را در قالب سرویسیروی وب ارائه کند، در آن صورت نحوه فراخوانی آن سرویس باید به طور واضح مستند سازیو اعلام شود. بسیاری از مسائل دسترس پذیری و مقیاس پذیری برنامه های کاربردیامروزی در SOA به نحو مطلوبی حل شده است. البته در SOA فرض بر این است که احتمال خطا همیشه وجود دارد و می تواند اتفاق بیفتد، بنابرایناستراتژی هایی برای پاسخگوئی به خطاها در آن تعبیه شده است . برای مثال اگر یک سرویس نتواند یک پیغام را در مرحله اول بپذیرد،این معماری طوری طراحی شده است که مجددا پیام را بفرستد و اگر یک سرویس به طورکامل قابل دسترس نباشد، (که هرگز نباید در یک سیستم SOA پایدار اتفاق بیفتد ) آنگاه معماری طوری طراحی شده است که روی دادن خطاهایی که منجر به قطع کامل در خواستسرویس می شود، ‌امکان پذیر نباشد. استفاده از معماری سرویس گرا همچنین قابلیت اطمینان را افزایش می دهد، زیرا خطاهایموقت در بخشی از جریان کار نمی توانند کل فرایند تجاری را از کار بیاندازند.به بیان کلی،‌ SOA فرایندی تکامل یافته را ارائه می نماید و از این نظر می توانآن را بلوغ سریسهای وب و تکنولوژی های یکپارچه سازی به حساب آورد. در SOA به اینامر توجه شده است که سیستمهای با اهمیت حیاتی که بر مبنای تکنولوژی های توزیع شدهساخته می شوند، باید تضمین های خاصی را تامین نمایند. در این گونه سیستمها بایداین اطمینان وجود داشته باشد که در خواستهای سرویسهای موردنیاز, به طور صحیح مسیر دهی و هدایت شوند، در زمان مناسب به آنها پاسخ داده شود و این سرویسها به طور واضح ودقیق, سیاستهای ارتباطی و رابطهای خود را اعلام کنند.[1-34-35-36]

 

2-1 اهداف تحقیق

راهکارهای نوین توسعه سیستم های نرم افزاری که هم اکنون بطور گسترده استفاده می گردند علیرغم نکات برجسته و نقاط کارامد غالبا سیستم هائی ایجاد می کنند که از کمبودهائی رنج می برند. مهمترین نقاط ضعف این سیستم های نرم افزاری شامل موارد زیر است:

¨ کمبود انعطاف پذیری محیط کسب و کار سازمان

¨ کند بودن در پشتیبانی از تغییرات نیازمندیهای کسب و کار و پشتیبانی اهداف و سیاستهای جدید

¨ سربارها و پیچیدگیهای عملیاتی و قابلیت استفاده مجدد کم سرمایه های فعلی سازمان

¨ کمبود تعامل پذیری مناسب و دشواری گسترش سریع استانداردهای صنعتی نوین

¨ عدم پشتیبانی اصول پایه مهندسی نرم افزار و استانداردهای شفاف و صریح

SOA ، با تکیه بر محاسبات توزیع شده و بر پایه پروتکلهای شبکه و لایه های میانی سرویس و همچنین زبانهایی که تولید نرم افزارهای توزیع شده را فراهم می کنند، بعنوان راه حلی مناسب جهت از میان برداشتن مشکلات و مسائل مذکور مطرح گردیده است. بمنظور توسعه سیستم های نرم افزاری با رویکرد SOA و طراحی فرایند سرویس گرا و شناسائی سرویس های مختلف تکنیکهای مختلفی وجود دارد که غالب این روشها علیرغم مزایائی که دارند دارای معایبی نیز می باشند .

از آنجایی که متدولوژی توسعه مبتنی بر سرویس اهمیت حیاتی در توصیف ,ساخت, پالایش و تطبیق فرایندهای کسب وکاری دارد که به سرعت دچار تغییر[5] می شوند و تا به حال روش مناسب و منسجمی برای توسعه برنامه های کاربردی تجاری قدرتمند وجود ندارد هدف ما ارائه روشی برای طراحی مبتنی بر سرویس می باشد . طراحی سرویسها شامل چندین موضوع اساسی می باشد که به منظور غلبه بر پیچیدگی در ساخت کاربردهای مبتنی بر سرویس ضرورت دارد روشن شود .در این تحقیق ما از تکنیکها و مباحث مطرح درSOA به شکل منسجم استفاده نموده و برای طراحی سرویس گرا روشی پیشنهاد خواهیم کرد . تمرکز ما بر روی فرایند طراحی می باشدکه اصول و تکنیکهای کافی برای مشخص کردن , ساخت و پالایش فرایندهای کسب وکاری که به سرعت دچار تغییر می شوند , فراهم می کند . در طی فاز طراحی یک سیستم مبتنی بر سرویس , سرویسها بر اساس ملاحظات خاصی - از قبیل پیمانه ای بودن , در نظر گرفتن نقاط تغییرپذیر برای ارائه قابلیت تصمیم گیری در راستای استفاده های مختلف از سرویسها , دارا بودن قابلیت استفاده مجدد , خود مختاری و غیره , طراحی وساختاردهی می شوند . به دلیل اینکه اساس وپایه SOA قابلیت استفاده مجدد می باشد , هدف ما رعایت اصول طراحی سیستم شامل اعمال ملاحظات پیاده سازی در صورت وجود یک پیکربندی اولیه SOA برای سازمان و همچنین اعمال نیازمندیهای غیر کارکردی , اصول طراحی سرویسها و بازبینی پیکربندی لایه های شناسائی شده می باشد .

 

3-1 پیشینه تحقیق

از گذشته های دور برنامه نویسان تلاش می کردند تا کدهای نرم افزاری را بصورت پیمانه ایبنویسند تا بتوان ازآن کدها در تولید نرم افزارهای دیگر استفاده کرد . تفاوت نوشتن کد بصورتپیمانه ای و براساس معماری سرویس گرا در حجم مخاطبان آن است. در جهانامروز طیف مخاطبانی که می توانند بصورت بالقوه از یک سرویس استفاده کنند، کل کاربران رویشبکه اینترنت است. بنابراین باید مکانیزمی بوجود می آمدکه می توانست پاسخگوی اینمحیط جدید (اینترنت) و کاربران آن باشد، بنابراین تفکر ایجاد معماری سرویس گرا بوجود آمد . ایده SOA اولین بار توسط دو شرکت IBM ,Microsoft در اواخر دهه 1980 پیشنهاد گردید، که هر دو شرکت طی سالهای اخیر ازحامیان اصلی سرویس های وب و عامل بسیاری از ابداعات جدید در حیطه پشتیبانی SOA و سرویس های وب، مانند UDDI ,WSE بوده اند. [3-22] در زمینه طراحی مبتنی بر سرویس متدولوژی RUP توسعه ای داشته است که چارچوب کاری ذیل را ارائه کرده است :

  1. service identification
  2. service specification
  3. service realization
  4. service deployment

 

در سال 2005Tomas Erl تکنیکی ارائه نمود که قراردادها و اصول سرویس گرایی را در درون فرایند طراحی سرویس قرار می دهد و تصمیمات کلیدی اتخاذ می گردد[1] . در سال 2004 Dijkman and Dumas مدلی در زمینه طراحی مبتنی بر سرویس با لحاظ چندین دیدگاه ارائه نمودند . دیدگاههای مطرح در مدل ارائه شده , رفتار واسط[6] , رفتار سرویس دهنده[7] , ترتیب و نظم[8] و همنوائی[9] می باشد [7] . در مدل ارائه شده محدودیتهای موجود بررسی و ارتباط مابین این 4 دیدگاه اخذ می شود در نهایت مدل ارائه شده زمینه ارزیابی سازگاری مابین سرویسهای ترکیب شده را فراهم می کند . Christian Emig از یک process language از قبیل [10]BPMN برای نگاشت اتوماتیک مدل به یک زبان قابل اجرا استفاده کرده است[5] . Soo Ho Chang برای مدلسازی تغییرپذیری متدی ارائه کرده است [6] . Thomas Oliver نشان داده است که چگونه مدل فرایند برای طراحی و تحقق معماریهای سرویس گرا استفاده می شود[10] . روشهای موجود به شکل کامل به فاز طراحی نپرداخته اند و می توان گفت تنها در بخشی از مباحث مطرح SOA تکنیکهایی ارائه کرده اند .

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

 

4-1 روش کار و تحقیق

در این پایان نامه در زمینه مدلها و سبکهای مختلف توسعه نرم افزار بحث شده و با توسعه مبتنی بر سرویس مقایسه خواهند شد . سپس SOA با توجه به مولفه هایش شرح داده خواهد شد و معماری لایه و ویژگیهای آن بیان خواهد شد . بخش بعدی در ارتباط با روشن نمودن اصول مبتنی بر سرویس در طراحی و توسعه نرم افزاری خواهد بود و ویژگیهای طراحی مبتنی بر سرویس بیان خواهد شد . سپس فاز تحلیل سرویس گرا از دیدگاه استراتژیهای مختلف و ایجاد خروجی قابل استفاده برای فاز طراحی بیان می شود . بخش بعدی به اصول طراحی سرویس گرا و رهنمودهای عمومی طراحی می پردازد و الگوهای طراحی موجود معرفی می شود . درنهایت روشی برای طراحی مبتنی بر سرویس ارائه خواهد شد . گامهای طراحی دربردارنده تکنیک و اصول مربوطه از جهت حمایت سرویس گرائی می باشند . هر یک از گامهای طراحی حاوی مثالی به منظور نمایش فرایند تعریف شده خواهند بود و در پایان نمونه کاربردی پیاده سازی شده و نتیجه گیری را خواهیم داشت .

روش ارائه شده با بازبینی لایه بندی مرحله تحلیل آغاز می شود و با اضافه نمودن لایه های تخصصی تر به فرایند همکاری سرویسها کمک می کند . سپس تحلیل بر روی نیازمندهای تغییر پذیر صورت می گیرد و نقاط تغییر پذیر[11] شناسایی می شوند . ممکن است مجموعه این نقاط بعدا دچار تغییر شود ویا اینکه نقاط جدیدی تعریف شود . سپس بر اساس انواع سرویسهایی که در فرایند طراحی با آنها رو به رو هستیم نگاشت سرویسها به لایه های مجزای تعریف شده انجام می پذیرد . حوزه عملکرد سرویسها , نیازمندیهای پردازشی سرویسها ,سرویسهای ترکیبی و ترتیب هماهنگی از سرویسها برای دست یافتن به اهداف فرایندکسب وکار مشخص می شود . با شناسایی قوانین تجاری , استثناها و شروط , لایه سرویس فرایند که یک لایه کنترلی است تعریف می شود . سپس با استفاده از مبحث دانه بندی[12] ,بر روی سرویسهای مرحله قبل بازبینی خواهیم داشت و متدهای هر کدام از سرویسها از جهت حوزه عملکرد و خروجی تولید شده مورد بررسی قرار خواهند گرفت . در صورت نیاز ممکن است برای تامین امنیت ضرورت متدهای چند دانه[13] تعریف شود . در این مرحله مدلسازی سرویسهای ترکیبی انجام می شود و خروجی این مرحله Sequence Diagam , Collaboration Diagram, Generic model خواهد بود . در مرحله نهایی با استفاده از BPMN - بر خلاف UML که مبتنی بر object است , BPMNقابلیتهایی در مدلسازی فرایند دارد - می توان به مدلسازی فرایند پرداخت و با امکانات این ابزار کد قابل اجرای فرایند ایجاد می شود .

 

5-1 مقایسه ای بر مدلهای توسعه وابسته به معماری

در این بخش درزمینه مدلهای مختلف توسعه نرم افزار و سبکهای معماری, بحث شده و با توسعه مبتنی بر سرویس مقایسه می شوند . سپس سبک معماری سرویس گرا با بیان جزئیات و با توجه به مولفه ها , ویژگیها و معماری لایه لایه شرح داده می شود .

 

1-5-1 توسعه مبتنی بر object

توسعه مبتنی بر object با کپسوله سازی داده و رفتار در یک نوع داده مجازی به نام کلاس از توسعه نرم افزار حمایت می کند . اشیاء از طریق ارسال پیغام با همدیگر ارتباط برقرار می کنند . توسعه مبتنی بر شی با حمایت کافی از پنهان سازی رفتار و داده در اشیاء و کلاسها ,پیشرفت طراحی نرم افزار را موجب می شود .

طراحی مبتنی بر object فاز اساسی در تولید نرم افزار است که موفقیت تجاری در بازار نرم افزار داشته است . طراحی مبتنی بر شی شامل طرح ریزی ساختار نرم افزار , بهبود کیفیت نرم افزار از طریق یافتن کمبودهای ساختار و نمونه سازی سریع از سیستم نرم افزاری می باشد . مزیت مبتنی بر شئ بودن این است که ساختارهای نرم افزار به سادگی به نمونه های واقعی نگاشت می یابند . امروزه تکنولوژی مبتنی بر شیء به طور گسترده ای به کار گرفته می شود و الگوی برجسته ای برای توسعه نرم افزارهای کاربردی می باشد . این تکنولوژی زمانی که با زیرسازی های مولفه ای ترکیب می شود , قابلیت همکاری محیطهای مختلف نرم افزاری را فراهم می کند[24] .

 

2-5-1 توسعه مبتنی بر مؤلفه

مؤلفه ها , ماژولهای نرم افزاری پیچیده ای نسبت به اشیاء هستند و نیازمند برقراری تغییراتی در تفکر سیستمها , فرایندهای نرم افزاری و به کارگیری تکنولوژی می باشند . توسعه مبتنی بر مؤلفه به توسعه دهندگان اجازه می دهد تا سیستمهای با کیفیت تر و پیچیده تر ایجاد کنند به دلیل اینکه متدهای بهتری برای مدیریت پیچیدگیها و وابستگیهای داخل یک کاربرد فراهم می کند . یک مؤلفه نرم افزار به مثابه یک واحد ترکیبی , با وابستگیهای مفهومی صریح و واسطهایی که مبتنی بر قرارداد هستند تعریف می شود . یک مؤلفه نرم افزاری می تواند به شکل مستقلی گسترش داده شود و این مبحثی است که بوسیله third parties برای ترکیب استفاده می شود .

ممکن است که مؤلفه ها برای ایجاد واحدهای بزرگتر مجتمع شوند که این واحد می تواند یک مؤلفه جدید , یک چارچوب مؤلفه ای و یا یک سیستم کامل . مؤلفه ترکیب شده خصوصیات به اشتراک گذاشته شده را از مؤلفه های سازنده کسب می کند که اغلب اجتماع plug-and-play نامیده می شود .

مؤلفه های با قابلیت استفاده مجدد بازتاب صحیحی از طراحی نرم افزارهای موثر می باشند . در این معماری یک زمینه طراحی فراهم می شود که در آن مولفه ها ساخته شده و مجددا استفاده می شوند . جنبه مهم دیگر مؤلفه ها این است که توسعه معماری نرم افزار مبتنی بر توصیفات مؤلفه از ساخت مستقل و همزمان اجزاء سیستم حمایت می کند . این ویژگی موجب می شود که بخشهای مستقل سیستم , زیر سیستمهای قابل تست باشند و بتوان سیستم را مابین یک یا چندین تیم توزیع یافته تقسیم کرد .

 

3-5-1 محاسبات توزیع یافته

اگرچه معماری سرویس گرا دلالت مستقیمی به محاسبات توزیع یافته[14] ندارد , اما ناگزیر است که تکنولوژیهای میان افزار موجود و مفاهیم محاسبات توزیع یافته را بهم پیوند دهد . یک معماری سرویس گرای موفق باید به مشکلات رویارویی با تکنولوژیهای میان افزار موجود از طریق حمایت یک راه حل موثر در توسعه برنامه های کاربردی و تکنولوژیهای آتی غلبه کند و این کار از طریق توجه به مفاهیم و تکنولوژیهای قابل حصول انجام می شود .

راه حلهای اخیر در محاسبات توزیع یافته به برپایی یک ارتباط مستقیم مابین دو برنامه توزیع یافته بر روی پروتکل فیزیکی شبکه مربوط می شود . پروتکلهای سطح بالاتر از قبیل SNA ,TCP/IP,IPX واسطهایی فراهم می کنند که تلاش برای پیاده سازی و وابستگی تکنولوژی را کاهش می دهد . نظر به اینکه تکنولوژی محاسبات توزیع یافته تکامل پیدا می کند , ضرورت فراهم نمودن چندین پیاده سازی شبکه ای برای تامین نیازمندیهای کیفیتی سرویس نیز افزایش پیدا می کند . ممکن است این نیازمندیها شامل وقت شناسی در تحویل پیغام , کارایی , توان عملیاتی , قابلیت اطمینان , امنیت