![]() مقاله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- ایجاد و مدیریت شبکه های اطلاعاتی مبتنی بر تجهیزات سخت افزاری سیسکوشبکههای نوع Circuit-Switched.. 10 شبکههای نوع Cell-Switched.. 11 Intranet, Extranet, Internet. 12 مشکلاتی که بریجها حل میکنند.29 آدرسدهی لایه سوم یا Layer-3.. 29 LEDها و مراحل بوت شدن سوئیچ.. 49 Interfaceهای فیزیکی موجود در روی دستگاه. 52 ترکیب دستورات به کار رفته برای دسترسی به Interfaceهای سوئیچ.. 52 ترکیب دستورهای به کار رفته برای دسترسی به Interfaceهای روتر. 53 مقدمهای بر سیستم عامل IOS.. 58 دسترسی به Configuration mode. 61 مشاهده محتویات Configuration file. 66 ذخیره کردن تنظیمات اعمال شده. 67 مشاهده تنظیمات اعمال شده دستگاه. 68 تنظیمات مربوط به Interfaceهای روتر. 74 مشخص کردن توضیحات مربوط به هر Interface. 75 پیکربندی مربوط به LAN Interfaces. 76 پیکربندی مربوط به Serial Interfaces. 77 قسمت های سخت افزاری روتر سیسکو. 85 (CDP) Cisco Discovery Protocol89 کاربرد Ping در Privilege EXEC.. 94 استفاده از Simple traceroute. 97 قابلیت انعطاف یا Scalability.. 110 پیکربندی Trunk در روی سوئیچ 2950.. 118 تنظیمات مربوط به VLANها در 2950.. 121 عیبیابی VLANها و اتصالات Trunk.. 122 Routing Protocols و Routed protocols. 124 پروتکلهای Distance Vector و Default Route. 124 مزیتهایی که پروتکل های Link State ارائه میدهند. 126 معایباستفاد از پروتکلهای Link state. 127 مقدماتی در مورد پروتکلهای Routing. 128 پخش ترافیک یا Load Balancing. 140 مقدمهای بر ترجمه آدرسها یا Address Translation.. 159 انواع سیستم ترجمه آدرسها یا Address translation.. 162 مزایای استفاده از سیستم ترجمه آدرسها یا Address translation.. 168 معایب استفاده از سیستم ترجمه آدرسها یا Address translation.. 169 اتصالات Circuit-Switched.. 170 PPP Authentication یا عمل تشخیص هویت در PPP.. 179 دستور debug frame-relay lmi195
|
![]() مقاله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
مقدمه مهمترین نقاط آسیب پذیر مهمترین نقاط آسیب پذیر:
در بخش اول این مقاله ، به بررسی BIND DomainName System وRemote Procedure Calls (موارد یک و دو) ، خواهیم پرداخت . اولین نقطه آسیب پذیر :BIND Domain Name System سیستم های عامل در معرض تهدید : نحوه تشخیص آسیب پذیری سیستم :
بمنظور حفاظت در مقابل حملات اخیر و مرتبط با نقاط آسیب پذیر کشف شده BIND می توان از منابع زیر استفاده نمود:
برای آگاهی و استفاده از پیشنهادات لازم بمنظور نصب ایمن تر BIND بر روی سیستم های سولاریس ، می توان از آدرس :Running the BIND9 DNS Server Securely و آرشیو مقالات ارائه شده در آدرس Afentis استفاده نمود. دومین نقطه آسیب پذیر : ( Remote Procedure Calls (RPC سیستم های عامل در معرض تهدید : نحوه تشخیص آسیب پذیری سیستم :
سرویس های RPC ، عموما" از طریق حملات buffer Overflow ، مورد سوء استفاده قرار می گیرند .علت این امر ، عدم انجام بررسی لازم و کافی در خصوص خطاها و یا اعتبار داده های ورودی توسط برنامه های RPC است . نقاط آسیب پذیر Buffer overflow ، این امکان را برای یک مهاجم فراهم می نماید که داده غیر قابل پیش بینی را ( اغلب بصورت کد مخرب ) به درون حافظه برنامه ، ارسال نماید . با توجه به ضعف موجود در رابطه با بررسی خطاء و صحت داده ، داده ارسالی مکان هائی حساس و کلیدی که مورد استفاده پردازنده می باشند را بازنویسی می نماید.در یک تهاجم موفقیت آمیز Overflow ، کد مخرب ارسالی ،در ادامه توسط سیستم عامل اجراء می گردد . با توجه به اینکه تعداد زیادی از سرویس های RPC ، با مجوزهای بیش از حد معمول ، اجراء می گردند ، استفاده موفقیت آمیز از نقاط آسیب پذیر فوق می تواند امکان دسـیابی غیر مجاز و از راه دور را به سیستم فراهم می نماید. نحوه حفاظت در مقابل نقطه آسیب پذیر:
سومین نقطه آسیب پذیر : WindowsAuthentication
ویندوز، رمزهای عبور را بصورت متن شفاف ذخیره و یا ارسال نمی نماید و در این راستا از یک مقدار Hash متناظر با رمزعبور ، بمنظور تائید کاربران ، استفاده می نماید . یک مقدار Hash دارای طولی ثابت است که توسط بکارگیری یک تابع ریاضی ( الگوریتم hashing ) بر روی حجم دلخواهی از داده ( message digest نامیده می شود) ایجاد می شود.در وینوز سه نوع الگوریتم تائید وجود دارد :
با اینکه اکثر محیط های فعلی ویندوز ، ضرورتی به حمایت از (Lan Manager
(LM را ندارند، ولی ویندوز بصورت محلی رمز های عبور Hash شده مربوط به LM
را ( LANMAN Hashes نیز نامیده می شود ) بصورت پیش فرض در ویندوز NT ، 2000
و XP ( در ویندوز 2003 وضعیت بدین شکل نیست ) ذخیره می نماید. با توجه به
اینکهLM از یک مدل رمزنگاری بمراتب ضعیف تر نسبت به رویکردهای فعلی
مایکروسافت ( NTLM,NTLMv2 ) ، استفاده می نماید، رمزهای عبور LM می توانند
در مدت زمانی کوتاه شکسته گردند. حتی رمزهای عبوری که دارای قدرت و استحکام
مناسبی می باشند ، در کمتر از یک هفته با استفاده از روش هائی خاص و با
اتکاء به قدرت سخت افزارهای موجود ، شکسته خواهند شد ضعف LM hashes بدلایل زیر است :
با توجه به ماهیت فرآیند hashing ،یک مهاجم صرفا" می بایست عملیات تشخیص
رمز عبور( cracking) را محدود به دو مجموعه نماید که هر یک دارای هفت
کاراکتر بوده که به حروف بزرگ تبدیل شده اند . با تکمیل عملیات فوق و اخد
نتایج مثبت ، یک مهاجم قادر به تشخیص رمز عبور یک کاربر تائید شده می گردد
وبدین ترتیب ، امکان دستیابی وی به منابع سیستم فراهم خواهد شد. پیچیدگی
عملیات تشخیص Hashe ، متنا سب با طول Hash افزایش می یابد ، بنابراین رشته
هائی که صرفا" شامل هفت کاراکتر می باشند ، بمراتب راحت تر نسبت به رشته
هائی که دارای چهارده کاراکتر می باشند ، تشخیص داده و اصطلاحا" شکسته می
گردند. با توجه به این موضوع که تمامی رشته ها شامل هفت کاراکتر بوده و
تمامی آنان به حروف بزرگ نیز تبدیل می گردند ، یک تهاجم به "سبک - دیکشنری"
( dictionary-style ) نیز بسادگی محقق و موفقیت آن تضمین شده خواهد بود.
بنابراین، روش LMhashing ، آسیبی جدی را متوجه سیاست های امنیتی رمز عبور
نموده و سیستم را در معرض تهدید قرار خواهد داد . سیستم های عامل در معرض تهدید : نحوه تشخیص آسیب پذیری سیستم:
نحوه حفاظت در مقابل نقطه آسیب پذیر :
در ویندوز 2000 ، 2003 و XP نیز امکاناتی ارائه شده است که می توان با
استفاده از آنان اقدام به پیکربندی تنظیمات مورد نظر در ارتباط با سطح
تائید Lan Manager نمود . در این رابطه لازم است برنامه Local
SecurityPolicy فعال و در ادامه گزینه های Local Policies و Security
Options بترتیب انتخاب گردند . در ویندوز 2000 سیاست LAN Manager
authentication level ، و در ویندوز XP و 2003 سیاست Networksecurity: LAN
Manager authentication level ، بمنظور پیکربندی ومقداردهی مناسب انتخاب
گردند . یاهومارکت |
![]() مقاله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
ارائه شده است که میتوان از آن جمله به زبان برنامه نویسی BASIC با ارائهی VISUAL BASIC جان تازهای گرفت و دوباره رونق یافت. به همین دلیل، به عنوان یک زبان برنامه سازی پایهای در دورهی آموزشس رایانه شناخته شده است. هنرجو، با آموختن این زبان، با اصول برنامه سازی و همچنین برنامه نویسی در محیط VISUAL BASIC , QUICK – BASIC آشنا خواهد شد. در هر زبان برنامه سازی اگر مقدمات آن زبان را بیاموزید،نوشتن برنامهها در آن ساده خواهد بود. مقدمات یک زبان عبارتند از : انواع دادههای موجود، چگونگی تعریف متغیرها، انواع عملگرها، دستورهای شرطی، انواع حلقههای تکرار و دستورهای ورودی / خروجی. کار با ویژوال بیسیک محیط ویژوال بیسیک ساده است. این محیط که از جمله محیطهای توسعه یافتهی مجتمع یعنی (Integrated Development Environment) IDE میباشد، به برنامه نویسان امکان میدهد که برنامههای تحت ویندوز خود را بدون نیاز به استفاده از برنامههای کاربردی دیگر، اجرا و خطایابی کند.
آشنایی با محیط ویژوال بیسیک بعد از اجرای برنامه ویژوال بیسیک، کادر محاورهای New project به نمایش در میآید که در این کادر به برنامه نویس امکان انتخاب یکی از انواع برنامههایی را میدهد که میتوان در VB ایجاد کرد. نوع Standard EXE که به طور پیش فرض در این کادر انتخاب شده است به برنامه نویس امکان میدهد که برنامه اجرایی استانداردی را ایجاد نماید (برنامههای اجرایی استاندارد از اکثر خصیصههای ویژوال بیسیک استفاده میکنند). کادر محاورهای New project شامل سه زبانه (Tab)است :
تعریف پروژه (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 و View object به صورت غیر فعال درمیآیند.
پنجره 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
در پایین نوار منو، نوار ابزاری وجود دارد که توسط آن میتوان به سرعت به برخی از گزینههای منو دسترسی پیدا کرد. طریقهی کار با جعبه ابزار برای اضافه کردن یک شیء از هر کنترل موجود در جعبهی ابزار میتوان به دو روش عمل نمود : الف ) با 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) پشتیبانی میکند. دادههای عددی تمام انواع دادههای عددی در یکی از مقولههای زیر جای میگیرند:
BasicVisual اعداد اعشاری و صحیح را به روشهای مختلف ذخیره و با آنها کار میکند. با آنکه برای یک کاربر بین 8 و 00/8 هیچ فرقی وجود ندارد ولی از نظر BasicVisual آنها متفاوتند. مقدار حافظهای که انواع دادهای مختلف به خود اختصاص میدهند یکسان نیست. با نگاه کردن به یک عدد نمیتوان گفت که چقدر حافظه اشغال کرده است. مثلاً، اعداد 999، 29، 701 هر دو به یک مقدار حافظه میگیرند. با آن که امروزه دیگر حافظه یک مشکل کلیدی نیست و شما هم به عنوان برنامه نویس نباید زیاد نگران آن باشید، ولی همیشه سعی کنید برای دادههایتان نوعی انتخاب کنید که حافظهی کمتری را اشغال میکند. در جدول 2 هفت نوع دادهی عددی BasicVisual، مقدار حافظهی مورد نیاز هر کدام و محدودهای میتوانند در خود جای دهند را میبینید. هنگام تعریف دادهها این جدول را مد نظر داشته باشید. به عنوان مثال، اگر میخواهید با اعداد منفی کار کنید نباید از نوع Byte استفاده کنید، اما اگر با سن افراد سر و کار دارید این نوع بهترین انتخاب ممکن است. جدول 2) هفت نوع دادهی عددی BasicVisual
بایت (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
توجه داشته باشید که اگر از عدد نویسی علمی استفاده میکنید، حروف D,E به ترتیب معرف انواع Double , Single هستند و دیگر نباید از پسوند نوع داده استفاده کنید. به یک مثال توجه کنید. اگر در برنامهای از واژهی عددی 8/5 استفاده کرده باشید، Visual Basic به طور خودکار نوع Single را برای آن برمیگزینند و 4 بایت حافظه به آن اختصاص میدهد. اما با نوشتن این عدد به صورت ، Visual Basic را وادار کنید تا به آن چشم یک عدد Double نگاه کند و 8 بایت حافظه برای آن کنار بگذارد. سایر انواع داده درک دادههای غیر عددی (برای کسانی که علاقهای به ریاضیات ندارند) آسانتر است. یکی از دلایلی که BASIC، علیرغم حضور زبانها پیشرفتهتر، همچنان مطرح مانده، تواناییهای آن در کار با رشتههای متن است. رشته (String) ترکیبی است از چند کاراکتر، که حتی میتوانند عدد باشند ولی نمیتوان روی آنها محاسبه انجام داد. نام، آدرس، شماره تلفن یا حساب بانکی را میتوان به صورت رشته نمایش داد. همواره سعی کنید فقط برای اعدادی که نیاز به محاسبه دارند از انواع عددی استفاده کنید. در جدول 4 انواع غیر عددی Visual Basic را میبینید. جدول 4 انواع دادهی غیر عددی Visual Basic
متغیر 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) میگویند. متغیرهای عمومی فقط در همان ماژولی که تعریف شدهاند دیده میشوند. متغیرها را میتوان به گونهای تعریف کرد که در تمام ماژولهای پروژه قابل دسترسی باشند. چون نام گذاری متغیرها بر عهدهی برنامه نویس است، باید قواعد نام گذاری آنها را بدانید:
علاوه بر قواعد الزامی فوق، سعی کنید هنگام نام گذاری متغیرها نکات زیر را هم رعایت کنید:
در هر دستور 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 میتواند یکی از موارد زیر باشد :
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
نکته جالب در جدول 5 آن است که عملگر + دو کار متفاوت انجام میدهد: جمع معمولی و به هم چسباندن (ترکیب) رشتهها. این عملگرها با توجه به محلی که مورد استفاده قرار رفته (بین دو عدد یا بین دو رشته) واکنش مناسب را نشان میدهد. هنگام ترکیب رشتهها، Visual Basic هیچ چیز به آنها اضافه نخواهد کرد. بنابراین اگر میخواهید بین دو رشته یک فاصله وجود داشته باشد باید خودتان آن را اضافه کنید. به مثال زیر توجه کنید: StrCompleteName=lblFirst.Caption & " " & lblLast.Caption به این نوع عملگرها عملگر تحریف شده میگویند چون عملکرد آنها بسته به مکان استفاده از آن متفاوت خواهد بود.
[1]- خصوصیت Name از این قاعده مستثنی است. [2]- Graphic user interface یاهومارکت |
![]() مقاله29-ارائه روشی برای طراحی مبتنی بر سرویس80صفهرست مطالب عنوان شماره صفحه
عنوان شماره صفحه
فهرست جداول عنوان شماره صفحه
چکیده معماری سرویس گرا به سرعت به عنوان نخستین ائتلاف و راه حل معماری محیطهای محاسباتی ناهمگون و پیچیده معاصر پدیدار گشته است . [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 توسعه ای داشته است که چارچوب کاری ذیل را ارائه کرده است :
در سال 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 واسطهایی فراهم می کنند که تلاش برای پیاده سازی و وابستگی تکنولوژی را کاهش می دهد . نظر به اینکه تکنولوژی محاسبات توزیع یافته تکامل پیدا می کند , ضرورت فراهم نمودن چندین پیاده سازی شبکه ای برای تامین نیازمندیهای کیفیتی سرویس نیز افزایش پیدا می کند . ممکن است این نیازمندیها شامل وقت شناسی در تحویل پیغام , کارایی , توان عملیاتی , قابلیت اطمینان , امنیت |