X
تبلیغات
مهندسی اینترنت

مهندسی اینترنت

مهندسی اینترنت - شبکه

نگاهی اجمالی به رمز نگاری

نگاهی اجمالی به رمز نگاری

مقدمه و تاریخچه


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

شروع و توسعه رمزنگاری

اولین بار سزار امپراتور رم باستان برای آنکه بتواند بدون اطلاع دشمن با ا ارتشش در سراسر دنیا در ارتباط باشد نوعی رمز را بکار گرفت. این رمز به این شکل بود که برای فرستادن یک پیام جای هر حرف را با سومین حرف بعد از آن در الفبا عوض می کردند، مثلا به جای 'A' حرف 'D' و به جای 'X' حرف 'A' را می گذاشتند.

بنابراین برای از کد خارج کردن پیام ها کافی بود دریافت کننده جای هر حرف را با سومین حرف بعد از آن در الفبا عوض کند. مثلا سعی کنید این پیغام سزاری را از رمز خارج کنید:

hqhpb dssurdfklqj
wkluwb ghdg
uhwuhdw wr iruhvw


خب، ممکن است بپرسید چه ریاضیاتی در کار است. ریاضی وقتی وارد ماجرا می شود که به هر حرف یک عدد نسبت دهیم. در این صورت فرایند کد کردن مثل اضافه کردن عدد 3 به عدد اولیه خواهد بود 

-------------------------------------------------

ادامه مطلب را در "ادامه مطلب" مطالعه فرمایید ...


ادامه مطلب
+ نوشته شده در  شنبه پنجم اردیبهشت 1388ساعت 18:56  توسط فرهاد  | 

تكنولوژی‌های نرم‌افزاری

 

 تكنولوژی‌های نرم‌افزاری

آشنایی با تكنولوژی‌های نرم‌افزاری قابل استفاده برای ارائه یك معماری خوب و كارا ضروری است. تكنولوژیهای رایج نرم افزاری امروز عمدتا به دو خانواده .Net و J2EE تقسیم ‌می‌شوند، اولی (J2EE) توسط شركت Sun بصورت یك استاندارد جهت پیاده سازی سیستمهای چند لایه تعریف شده كه توسط شركتهای معتبری مانند IBM، Oracle، Bea و Borland حمایت و پیاده سازی شده است در مقابل .Net یك پلتفرم نرم افزاری تجاری از شركت Microsoft می‌باشد كه بصورت گسترده‌ای مورد استفاده قرار می‌گیرد.

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

  • کامپوننت‌های لایه کاربر بر روی ماشین کاربر اجرا می‌شوند.
  • کامپوننت‌های لایه Web بر روی سرور J2EE قرار دارند.
  • کامپوننت‌های کاری نیز بر روی سرور J2EE قرار دارند.
  • نرم‌افزارهای سیستم اطلاعاتی سیستم که بر روی سرور EIS قرار دارند.

 

  • کامپوننت‌هائی که توسط J2EE معرفی شده‌اند عبارتند از : برنامه کاربردی client و applet ها که بر روی ماشین client اجرا می‌شوند.
  • Servletهای جاوائی و JSPها که بر روی سرور اجرا می‌شوند.
  • کامپوننت‌های EJB که اجزای منطق کاری هستند و بر روی سرور اجرا می‌شوند.
  • کامپوننت‌های J2EE توسط زبان برنامه‌نویسی جاوا نوشته و کامپایل

  Microsoft .Net دات نت ، پلات فرم جدید ماکروسافت بمنظور تحقق نظریه : " نرم افزار بعنوان سرویس " ، است . دات نت یک محیط پیاده سازی است که بکمک آن می توان اقدام به ایجاد و بکارگیری نرم افزار و نسل جدیدی از عناصر موسوم به " سرویس های وب " ، نمود. تمامی محصولات اصلی ماکروسافت از ویژوال استودیو دات نت تا ویندوز و نهایتا" مجموعه آفیس ، متاثر از پلات فرم فوق شده و خواهند شد . دات نت به پیاده کنندگان این امکان را خواهد داد که با زبان برنامه نویسی مورد علاقه خود ، اقدام به پیاده سازی برنامه ها نمایند. ویژگی ( پتانسیل ) فوق از طریق معرفی Common Language Runtime (CLR) ، میسر شده است .
دات نت، اولین پلات فرم طراحی شده از صدر تا ذیل با در نظر گرفتن واقعیتی با نام اینترنت است. دات نت از یک ماشین مجازی خاص در این زمینه استفاده می نماید . ماهیت ماشین مجازی فوق ، بگونه ای است که از API ویندوز فاصله و در این رابطه از یک کتابخانه کلاس استفاده می نماید که می توان به جرات این ادعا را داشت که تاکنون نظیر آن، ایجاد نشده است. امکان استفاده از زبانهای متعدد برنامه نویسی، وجود خواهد داشت. معماری دات نت، امکان ارتباط بین زبانها را بسادگی فراهم خواهد کرد. دات نت، یک رویکرد جدید در رابطه با پیاده سازی نرم افزار را مطرح نموده است. نگاه به دات نت ، عمدتا" بصورت سیستم های توزیع شده است.
با استفاده از XML ،امکان اجرای توابع بر روی کامپیوترهای متفاوت یک سازمان ویا جهان فراهم و جلوه ای زیبا در همیاری بمنظور اجرای یک برنامه، به نمایش در خواهد آمد. از این منظر ، سیستم ها از سرویس دهندگان تا سیستم های بدون کابل، قادر به اشتراک پلات فرم عمومی یکسانی خواهند بود. با استفاده از نسخه های خواهد شد.
دات نت ، بمنظور طراحی و پیاده سازی برنامه های سنتی نیز راهکارها و امکانات خواهد شد. دات نت ، بمنظور طراحی و پیاده سازی برنامه های سنتی نیز راهکارها و امکانات مناسبی را ارائه تا از این طریق امکان پیاده سازی و بکارگیری این نوع از نرم افزارها، بسادگی انجام گیرد . برخی از تکنولوژی ها ی ارائه شده در دات نت نظیر فرم های ویندوز، تلاشی در این راستا است.

Visaul Studio.Net
Visaul Studio.Net جدیدترین ابزار برنامه نویسی شركت Microsoft و شكل گرفته بر اساس فناوری .NET، رویكرد جدید Microsoft برای تولید نرم افزار است و تمام برنامه های این شركت برای آینده، بر مبنای آن خواهد بود.
ریشه .NET به نشانی های " .NET" در اینترنت بر می گردد. از نظر مفهوم، .NET یك فناوری جدید است كه باعث سهولت هر چه بیشتر انجام بسیاری از كارهای سخت گذشته شده است. خصوصاً ایجاد برنامه های قابل اجرا در شبكه با .NET، بسیار ساده شده است. اگر از دید برنامه نویسان نگاه كنیم، .NET یك سطح تجرید (Abstract) بالاتر برای برنامه سازی است.

 

 مروری بر Net Framework.
Net Framework.، تمامی لایه های پیاده سازی نرم افزار را از سطح سیستم عامل به  بالا، تحت پوشش قرار می دهد. Framework فوق، سطحی مناسب وقدرتمند از ارتباط و همبستگی بین تکنولوژی  Presentation  ، تکنولوژی های Component و تکنولوژی های  Data  را ارائه می نماید ( نظیر این ارتباط و همبستگی تاکنون در پلات فرم ویندوز مشاهده نشده است) .  معماری فوق ، امکان طراحی و پیاده سازی برنامه های مبتنی بر اینترنت و محیط های Desktop ، را بسادگی فراهم و نیازهای هر گروه از نرم افزارهای فوق را بخوبی جواب می دهد. اجزای اصلی Net Framework. در شکل مقابل نشان داده شده است . Net Framework. از لایه  پائین با عملیاتی نظیر مدیریت حافظه آغاز و بسمت بالا بمنظور ارائه اینترفیس های برنامه ها و کاربران ، دنبال  می شود. در بین لایه ها ، لایه های سیستمی دیگر که هر یک دارای پتانسیل های خاصی برای پیاده کنندگان می باشند ، وجود دارد.
 CLR) Common Language Runtime) ، بمنزله قلب فریمورک دات نت محسوب و engine لازم بمنظور ارائه قابلیت های کلیدی را ارائه می نماید . CLR ، شامل عناصر اساسی دیگری نظیر:  (Common Type System (CTS ، است. علاوه بر مدیریت حافظه ، CLR ، مراجعات به اشیاء و عملیات Garbage Collection را نیز انجام می دهد .  در لایه میانی ، ما شاهد نسل جدیدی از سرویس های استاندارد نظیر ADO.NET و XML می باشیم .سرویس های فوق، تحت کنترل Framework بوده و امکان بکارگیری آنها بصورت جامع و استاندارد در بین تمامی زبانها ، فراهم می گردد. بالاترین لایه، شامل اینترفیس های برنامه و کاربر است. فرم های ویندوز، روشی جدید بمنظور ایجاد برنامه های Desktop مبتنی بر win32  می باشند. فرم های وب، یک رابط کاربر مناسب برای برنامه های  مبتنی بر وب را ارائه می نمایند.
سرویس های وب ، مکانیزمی بمنظور ارتباط برنامه ها از طریق اینترنت و با استفاده از SOAP، می باشد. سرویس های وب، قابل مقایسه با عناصر COM و DCOM بوده با این تفاوت مهم که در این راستا از تکنولوژی های متعدد اینترنت، استفاده می گردد. فرم های وب و سرویس های وب ،  اینترفیس اینترنت  دات نت را تشکیل و پیاد ه سازی آنان از طریق بخش دیگری در فریمورک دات نت که  ASP.NET ، نامیده می شود ، محقق می گردد. پتانسیل های موجود در هر لایه فریمورک دات نت ، توسط هر یک از زبان های سازگار با دات نت، قابل استفاده خواهد بود. در پایان لازم است به این نکته اشاره گردد که  در این رابطه ( Net Framework. ) می توان از اینترفیس های مبتنی بر متن ( کاراکتری) نیز استفاده کرد. این نوع برنامه ها اصطلاحا" Console Application، نامیده می شوند .

مزایای استفاده از Net Framework.
در آغاز پیاده سازی برنامه های مبتنی بر ویندوز، تمامی برنامه های نوشته شده بمنظور استفاده از API ، از C و یا ++C استفاده می کردند. با مطرح شدن ویژوال بیسیک و سپس اینترنت، پیاده کنندگان مجبور به سفارشی نمودن ( پیاده سازی نسخه هائی خاص ) برنامه های C++ ، C، برنامه های ویژوال بیسیک و یا ASP بودند.
با استفاده از Net Framework.، می توان با اتکاء به مهارت های موجود، اقدام به آفرینش هر نوع نرم افزاری کرد. انتخاب Net Framework. بمنظور پیاده سازی برنامه ها، مزایای زیر را بدنبال خواهد داشت :

  • مبتنی بر استانداردهای وب . فریمورک دات نت، بطور کامل تکنولوژی های موجود در اینترنت نظیر : HTML , HTTP,SOAP,XSLT,XPath و سایر استانداردها را حمایت مینماید.
  • طراحی مبتنی بر یک مدل یکسان . از پتانسیل های یک کلاس دات نت ، می توان در هر یک از زبانهای حمایت شده در دات نت و یا مدل برنامه نویسی ، بخوبی استفاده کرد . بنابراین می توان ، بخش هائی از کدهای نوشته شده را در برنامه های متعدد استفاده کرد (برنامه های ویندوز، وب ، سرویس های وب XML ) .
  • پیاده کنندگان بسادگی قادر به استفاده از آن می باشند. در فریمورک دات نت ، کد ، بصورت Namespace های سلسله مراتبی و کلاس ها ، سازماندهی می گردد . فریمورک دات نت یک Common Type System)CTS) را بعنوان سیستم نوع یکسان ، ارائه نموده که توسط هر زبان سازگاز با دات نت، قابل استفاده خواهد بود .در سیستم فوق ، تمامی عناصر زبانها بصورت شی می باشند. این اشیاء قادر به استفاده توسط هر برنامه مبتنی بر دات نت و نوشته شده توسط هر زبان مبتنی بر دا ت نت ، خواهند بود .
  • کلاس های توسعه پذیر . ماهیت سلسله مراتبی فریمورک دات نت، برای پیاده کنندگان مخفی نخواهد بود .در این راستا می توان به کلا س ها دستیابی و آنها را توسعه داد( مگر اینکه آنها حفاظت شده باشند ). در این زمینه امکان پیاده سازی توارث از نوع Cross - Language ، نیز وجود خواهد داشت .

 

+ نوشته شده در  دوشنبه بیست و هشتم مرداد 1387ساعت 9:57  توسط فرهاد  | 

نكته‌ها

 نكته‌ها

 نقش Process Engineer در RUP چیست؟ RUP برای انواع پروژه‌های نرم‌افزاری در دامنه‌های مختلف ( مانند سیستم‌های اطلاعاتی، سیستم‌های صنعتی، سیستم‌های بلادرنگ، سیستم‌های تعبیه شده، ارتباطات راه دور، سیستم‌های نظامی و ...) و در اندازه‌های متفاوت، از پروژه‌های بسیار کوچک (یک نفر در یک هفته) تا پروژه‌های بسیار بزرگ (چند صد نفر تولید کننده با پراکندگی جغرافیایی)، کاربرد دارد. اما لازم است برای پروژه مورد نظر سفارشی شود. RUP قابلیت بالایی برای تغییر کردن به سمت محصولی که دقیقاً نیازها را برآورده سازد دارد که این تغییر برای هر پروژه تحت عنوان Tailoring شناخته می شود.
نقشی به نام Process Engineer در RUP پیش‌بینی شده است كه با توجه به تجربه و دانشی كه ازRUP دارد، روش استفاده ازRUP و قسمتهایی را که استفاده از آنها مفید خواهد بود—با توجه به سازمان تولید كننده و یا خود پروژه — تعیین کرده و RUP را برای پروژه Tailor می‌کند. این نقش همچنین می‌تواند قالب مستنداتی كه باید تولید شوند، روند‌های انجام كار و نوع Artifact هایی كه لازم است تولید شوند را تعیین كند.

    10 مورد ضروری در RUP برای كسی كه اولین بار با RUP  (كه دارای 4 فاز، 9 دیسیپلین، 31 نقش، 103 دست‌آورد، 136 فعالیت، بعلاوه رهنمودها، چك‌ لیست‌ها و راهنمای ابزار می‌باشد) مواجه می‌شود این سؤال پیش می‌آید كه ”چطور می‌توان از میان این همه موارد تعیین كنیم كه كدام یك برای پروژه ما مورد نیاز است؟“، ”آیا به این یكی نیاز دارم؟“، ”آیا RUP فقط برای پروژه‌های بزرگ است؟“ و پاسخ نیز اغلب به این صورت است : ”خب بستگی دارد به ... “ در این مطلب یك لیست از ده مورد اساسی و ضروری RUP كه می‌تواند نقطة شروعی برای چگونگی بكارگیری RUP در هر پروژه باشد معرفی می‌شود. البته ضروری است كه چارچوب كلی RUP كه یك فرآیند تكراری و تكاملی  است  لحاظ شود.


10 مورد ضروری RUP برای كسی كه اولین بار با RUP  (كه دارای 4 فاز، 9 دیسیپلین، 31 نقش، 103 دست‌آورد، 136 فعالیت، بعلاوه رهنمودها، چك‌ لیست‌ها و راهنمای ابزار می‌باشد) مواجه می‌شود این سؤال پیش می‌آید كه ”چطور می‌توان از میان این همه موارد تعیین كنیم كه كدام یك برای پروژه ما مورد نیاز است؟“، ”آیا به این یكی نیاز دارم؟“، ”آیا RUP فقط برای پروژه‌های بزرگ است؟“ و پاسخ نیز اغلب به این صورت است : ”خب بستگی دارد به ... “ در این مطلب یك لیست از ده مورد اساسی و ضروری RUP كه می‌تواند نقطة شروعی برای چگونگی بكارگیری RUP در هر پروژه باشد معرفی می‌شود. البته ضروری است كه چارچوب كلی RUP كه یك فرآیند تكراری و تكاملی  است  لحاظ شود.
این ده مورد عبارتند از :
1- تصویر كلی ( Vision) – تولید یك تصویر كلی
داشتن یك تصویر كلی واضح، برای تولید محصولی كه نیازهای واقعی ذی‌نفعان را برآورده سازد، كلیدی است. تصویر كلی عصاره‌ای از دیسیپلین نیازمندی‌ها در RUP بدست می‌دهد : تحلیل مسأله، شناخت نیازهای ذی‌نفعان، تعریف سیستم و مدیریت نیازمندی‌ها(زمانی كه تغییر می‌كند).
2- طرح (برنامه) – مدیریت طرح
طرح‌ریزی خوب روند تولید محصول تأثیر كاملا مستقیمی بر روی كیفیت خوب محصول خواهد داشت. در RUP، طرح تولید نرم‌افزار (Software Development Plan)، همه اطلاعات مورد نیاز برای مدیریت پروژه را گرد‌آوری می‌كند.
3- لیست مخاطرات- شناسایی و كاهش ریسك‌ها
یك دستور اساسی RUP، شناسایی و رفع هرچه زودتر به ریسك‌های عمده پروژه است. لیست ریسك‌ها، به منظور در نظرگرفتن ریسك‌های شناخته شده در راه موفقیت پروژه است.
4- موارد مهم – تعیین و ردیابی موارد مهم
ارتباط باز و مداوم با داده‌های عینی كه مستقیما از فعالیت‌های در حال انجام مشتق می‌شوند، و تكمیل پیكربندی محصول در هر پروژه، اهمیت دارد.
5- طرح تجاری (Business Case)
طرح تجاری، اطلاعات لازم را از نقطه نظر تجاری فراهم می‌كند؛ به منظور تعیین اینكه آیا این پروژه ارزش سرمایه گذاری دارد یا نه؟
6- معماری – طراحی یك معماری بر اساس مؤلفه
در RUP، معماری یك سیستم نرم‌افزاری (در یك مقطع خاص)، سازمان یا ساختار مؤلفه‌های مهم سیستم است كه از طریق واسط‌ها با مؤلفه‌های متشكل از مؤلفه‌های كوچكتر و واسط‌های آنها ارتباط دارند. در واقع پاسخ به این سؤال است كه تكه‌های اصلی كدامند و چگونه با هم جور می‌شوند؟
7- محصول - ساخت و تست گام به گام (افزایشی) محصول
عصاره جریان كارهای پیاده‌سازی و تست در RUP، كدنویسی، ساخت و تست گام به گام مؤلفه‌های سیستم، با نشرهای قابل اجرا در پایان هر تكرار بعد از فاز آغازین است.
8- ارزیابی (Evaluation)
ارزیابی تكرار، نتایج یك تكرار، میزان برآورده شدن معیار ارزیابی، دروس آموخته شده و تغییرات فرآیند كه باید پیاده‌سازی شوند، را دربر می‌گیرد
9- درخواست‌های تغییر (Change Request)
عصاره مدیریت پیكربندی و تغییرات، مدیریت و كنترل محدوده‌ پروژه در هنگامی است كه تغییرات در طول چرخه حیات پروژه رخ می‌دهد و زمانیكه باید هدفِ در نظر گرفتن كلیه نیازهای ذی‌نفعان و برآورده كردن آنها، تا حد امكان، مورد نظر باشد.
10- حمایت از كاربر
حمایت از كاربر، باید دست‌ كم، شامل یك راهنمای كاربر باشد كه شاید از طریق راهنمای برخط پیاده‌سازی شده و ممكن است شامل یك راهنمای نصب و یادداشت‌های نشر باشد، و بسته به میزان پیچیدگی محصول، ممكن است ابزار آموزشی نیز مورد نیاز باشد و بالاخره یك صورت از مواد همراه (BoM) با هر نوع بسته‌بندی محصول(در صورت وجود بسته‌بندی متنوع محصول).
مرجع :

Leslee Probasco, “The Ten Essentials of RUP: The Essence of an Effective Development Process”, Rational Software, Canada.


 الگوهای طراحی چیستند و چه كاربردی دارند ؟ الگوها توصیف كننده‌ی مسایل متواتری هستند كه در شرایط مشخصی روی می‌دهند. الگوها شامل راه‌حل پیشنهادی برای حل این مسایل نیز می‌باشند. علاوه بر این الگوهای طراحی نرم‌افزار می‌توانند در مستند‌سازی طراحی انجام شده نیز كمك كنند تا تصویری كه در ذهنمان راجع به یك سیستم و یا زیر سیستم داریم در قالب مناسب بیان كنیم. افرادی كه می‌خواهند الگوهای ما را گسترش دهند یا پیاده‌سازی نمایند با مطالعه‌ی الگوها دقیقا از دیدگاه ما نسبت به سیستم و مسأله آگاه می‌شوند.
علاوه بر این الگوهای طراحی پاسخ‌گویی به انواع نیازمندی‌های وظیفه‌مندی و غیر وظیفه‌مندی را میسر می‌سازند و به این ترتیب به یك طراحی خوب كمك می‌كنند. الگوها علاوه بر ارایه‌ی راهكارهای مناسب برای دست‌یابی به نیازهای وظیفه‌مندی، توان پاسخ به نیازهای غیر وظیفه‌مندی مانند تغییر‌پذیری، آزمون‌پذیری و قابلیت نگهداری را نیز دارا هستند.
لازم است توجه شود كه الگو‌های طراحی به حل مسأله كمك می‌كنند و لی راه‌حل كامل آنرا در اختیار ما نمی‌گذارند، از این جهت شبیه‌ الگوهای لباس هستند كه شكل كلی از طراح را در اختیار ما می‌گذارند ولی برای استفاده مناسب از هر الگو لازم است طراحی با نوآوری و خلاقیت خود آن را در زمینه‌ی مورد نیاز خود بدوزد.
بحث الگوها در مهندسی اولین بار در معماری ساختمانی مطرح شد، لكن اولین كسی كه از الگوها برای تولید نرم‌افزار كمك گرفت فردی به نام اریك گاما است كه در سال 1991 در تز دكترای خود به بحث و بررسی الگوها پرداخت. گاما به همراه سه نفر دیگر گروه GoF را تشكیل دادند و در كتابی الگوهای خود را توصیف كردند. این كتاب با استقبال عمومی مواجه شد و از آن پس الگوهای طراحی GoF شهرت بسیاری پیدا كرده، در گستره‌های مختلف علم مهندسی نرم‌افزار به كار گرفته شدند.
كارایی و مقبولیت الگوهای طراحی (GoF Design Pattern) GoF به حدی رسیده است كه امروزه ابزارهای حرفه‌ای CASE بطور مستقیم از آنها پشتیبانی می‌كنند و امكان اعمال الگوهای طراحی GoF را فراهم می‌كنند. از جمله این ابزارها می‌توان از Rational XDE ،Rational Rose و Borland Together نام برد.


الگوهای طراحی چیستند و چه كاربردی دارند؟
الگوها توصیف كننده‌ی مسایل متواتری هستند كه در شرایط مشخصی روی می‌دهند. الگوها شامل راه‌حل پیشنهادی برای حل این مسایل نیز می‌باشند. علاوه بر این الگوهای طراحی نرم‌افزار می‌توانند در مستند‌سازی طراحی انجام شده نیز كمك كنند تا تصویری كه در ذهنمان راجع به یك سیستم و یا زیر سیستم داریم در قالب مناسب بیان كنیم. افرادی كه می‌خواهند الگوهای ما را گسترش دهند یا پیاده‌سازی نمایند با مطالعه‌ی الگوها دقیقا از دیدگاه ما نسبت به سیستم و مسأله آگاه می‌شوند.
علاوه بر این الگوهای طراحی پاسخ‌گویی به انواع نیازمندی‌های وظیفه‌مندی و غیر وظیفه‌مندی را میسر می‌سازند و به این ترتیب به یك طراحی خوب كمك می‌كنند. الگوها علاوه بر ارایه‌ی راهكارهای مناسب برای دست‌یابی به نیازهای وظیفه‌مندی، توان پاسخ به نیازهای غیر وظیفه‌مندی مانند تغییر‌پذیری، آزمون‌پذیری و قابلیت نگهداری را نیز دارا هستند.
لازم است توجه شود كه الگو‌های طراحی به حل مسأله كمك می‌كنند و لی راه‌حل كامل آنرا در اختیار ما نمی‌گذارند، از این جهت شبیه‌ الگوهای لباس هستند كه شكل كلی از طراح را در اختیار ما می‌گذارند ولی برای استفاده مناسب از هر الگو لازم است طراحی با نوآوری و خلاقیت خود آن را در زمینه‌ی مورد نیاز خود بدوزد.
بحث الگوها در مهندسی اولین بار در معماری ساختمانی مطرح شد، لكن اولین كسی كه از الگوها برای تولید نرم‌افزار كمك گرفت فردی به نام اریك گاما است كه در سال 1991 در تز دكترای خود به بحث و بررسی الگوها پرداخت. گاما به همراه سه نفر دیگر گروه GoF را تشكیل دادند و در كتابی الگوهای خود را توصیف كردند. این كتاب با استقبال عمومی مواجه شد و از آن پس الگوهای طراحی GoF شهرت بسیاری پیدا كرده، در گستره‌های مختلف علم مهندسی نرم‌افزار به كار گرفته شدند.
كارایی و مقبولیت الگوهای طراحی (GoF Design Pattern) GoF به حدی رسیده است كه امروزه ابزارهای حرفه‌ای CASE بطور مستقیم از آنها پشتیبانی می‌كنند و امكان اعمال الگوهای طراحی GoF را فراهم می‌كنند. از جمله این ابزارها می‌توان از Rational XDE ،Rational Rose و Borland Together نام برد.
الگوهای پایه GoF از لحاظ هدف به سه دسته تقسیم شده‌اند :‌
  1. الگوهای آفرینشی (Creational) در فرآیندهای تولید اشیاء استفاده می‌شوند و عبارتند از : Factory Method، Builder، Prototype و Singleton
  2. الگوهای ساختاری (Structural) در تركیب كلاس‌ها و اشیاء مورد استفاده قرار می‌گیرند و عبارتند از ‌: Adapter، Bridge، Composite، Decorator، Facade، Flyweight و Proxy
  3. الگوهای رفتاری (Behavioral) چگونگی تعامل بین كلاس‌ها یا اشیاء و نحوه‌ی توزیع مسؤولیت بین آنها را مورد بحث قرار می‌دهند و عبارتند از : Chain of responsibility, Command, Interpreter, Iterator, Mediator,Memento, Observer, State, Strategy, Template method و Visitor
شخصاً در استفاده از الگوها آنها را بسیار كاربردی یافته‌ام كه هم در سرعت طراحی و هم در كیفیت آن می‌تواند بسیار مفید واقع شود.

Composite Pattern (GOF Design Pattern)

الگوی شیء مرکب (Composite)
مقصود :
       تشکیل ساختاری درختی به منظور نمایش سلسله مراتب کل-جزء اشیاء
       به Client ها اجازه میدهد با اشیاء ساده و مرکب به شکل یکسان برخورد کنند.
انگیزه :
       در برنامه های گرافیکی میتوان با ترکیب اجزای پایه‌ای، اجزای مرکب ساخت
       نیاز به مدل کردن اشیاء مرکب مانند اشیاء ساده
کاربرد :

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

شرکت کنندگان :

  • جزء (Component)
  • برگ (Leaf)
  • شیء مرکب (Composite)
  • مشتری (Client)
همکاری‌ها :
  • مشتری‌ها واسط کلاس Component را برای تعامل با اشیاء مرکب استفاده می‌کنند.
  • اگر دریافت کننده یک برگ باشد، درخواست مستقیما پاسخ داده می‌شود.
  • اگر دریافت کننده مرکب باشد، درخواست به فرزندان آن فرستاده می‌شود.
 
موارد جدید در RUP 7 پس از نسخه‌ای از RUP كه در سال 2003 (همراه با Rational Suite) عرضه شد، تا مدت نسبتا زیادی (در حدود 3 سال) Rational نسخه جدیدی از RUP ارائه نكرده بود. البته در طی این مدت Plugin هایی برای RUP (از جانب Rational یا سایر شركت‌ها) عرضه شده بود كه عمدتا برای سفارشی سازی RUP برای یك حوزه خاص بودند. سرانجام نسخه مهم بعدی RUP به نام RUP 7 توسط Rational عرضه شد.

موارد جديد در RUP 7 پس از نسخه‌اي از RUP كه در سال 2003 (همراه با Rational Suite) عرضه شد، تا مدت نسبتا زيادي (در حدود 3 سال) Rational نسخه جديدي از RUP ارائه نكرده بود. البته در طي اين مدت Plugin هايي براي RUP (از جانب Rational يا ساير شركت‌ها) عرضه شده بود كه عمدتا براي سفارشي سازي RUP براي يك حوزه خاص بودند. سرانجام نسخه مهم بعدي RUP به نام RUP 7 توسط Rational عرضه شد. تغييرات عمده RUP 7 نسبت به RUP 2003.06.15 شامل موارد زير مي‌شود :
  • تغيير واژگان و مفاهيم مورد استفاده بر اساس Unified Method Architecture كه به عنوان استاندارد OMG براي فرا مدل فرآيند مهندسي نرم‌افزار (SPEM 2.0) پيشنهاد شده است.
  • تفكيك مفاهيم مقدماتي UMA بصورت يك plugin براي RUP با نام Base Concepts.
  • به‌روز آوري عمده در بخش بهترين تجربيات (Best Practices). اين بخش در قالب مفاهيم كليدي توليد مبتني بر كسب و كار (Buiseness –Driven Development) باز نويسي شده است.
  • فرآيند‌هاي جديد تحويل
  • تغييرات در نماي ظاهري صفحات RUP و tree browser
  • به‌روز‌آوري در ديسيپلين محيط (Environment) تا با ابزارهاي جديد سازگار شود.
  • ايجاد يك وظيفه جديد؛ توليد خصوصيات تكميلي (Develop Supplementary Specification)
  • محتويات جديدي براي ساخت سيستمي از سيستم‌ها، كه شامل تجزيه Use-case ها، تحليل عمليات و طراحي عمليات مي‌شود.


0 شايد براي شما هم اين سؤال پيش آمده باشد كه چه تغيير مهمي در UML رخ داده است كه پس از UML 1.5، UML 2.0 عرضه شد؟ آيا اضافه شدن دياگرام‌هاي جديد (مثل Timing Diagram) يا بهبود دياگرام‌هاي موجود (مانند افزودن امكانات بيشتر به Sequence Diagram ) موجب اين ارتقاء قابل توجه شده است؟ حقيقت اين است كه آنچه كه موجب اين ارتقاء‌ نسخه قابل توجه از 1 به 2 شده است

+ نوشته شده در  دوشنبه بیست و هشتم مرداد 1387ساعت 9:56  توسط فرهاد  | 

دیسیپلین‌های RUP

دیسیپلین‌های RUP

دیسیپلین مجموعه‌ای از کارهای به هم مرتبطی است که برای انجام جنبه خاصی از یک پروژه انجام می‌شوند. متدولوژی RUP دارای 6 دسیسپلین اصلی (مربوط به تولید محصول) و 3 دیسیپلین كمكی (مربوط به تیم و محیط تولید) است كه در ادامه به ترتیب معرفی خواهند شد.

    Business Modeling (مدل‌سازی كسب و كار) هداف مدل‌سازی كسب و كار عبارتند از:

  • شناخت ساختار و دینامیك‌های سازمانی كه در آن یك سیستم باید استقرار یابد(سازمان هدف).
  • شناخت مشكلات فعلی در سازمان هدف و تشخیص پتانسیل‌های بهبود
  • تضمین اینكه مشتری، كاربر نهایی و تولید كنندگان یك شناخت مشترك از سازمان هدف دارند.
  • هدایت نیازمندی‌های سیستم كه برای حمایت از سازمان هدف مورد نیازند.
  • دیسیپلین‌ مدل‌سازی كسب و كار توضیح می‌دهد كه برای رسیدن به این هدف چگونه می‌توان یك تصویر كلی از سازمان را تولید نمود، و براساس این تصویر كلی فرآیندها، نقش‌ها و مسؤولیت‌های آن سازمان را در یك مدل Use-case كسب وكار و یك مدل شیء كسب و كار تعریف كرد.

  Requirements (نیازمندی‌ها) اهداف دیسیپلین نیازمندی‌ها عبارتند از :

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

برای دستیابی به این اهداف، ابتدا فهم تعریف و محدوده‌ی مسأله‌ای كه سعی داریم با این سیستم آن را حل كنیم، حائز اهمیت می‌باشد. قوانین كسب و كارف مدل Use-Case كسب و كار و مدل شیء كسب و كار كه در طول مدل‌سازی كسب و كار تولید شده به عنوان ورودی با ارزشی برای این تلاش خواهند بود. در این راستا ذینفعان تشخیص داده می‌شوند و درخواستهای ذینفعان استخراج، جمع‌آوری و تجزیه و تحلیل می‌شوند. یك مستند تصویر كلی، یك مدل Use-Case، Use-Case ها و مشخصه‌های تكمیلی برای توضیح كامل سیستم تولید می‌شود. این توضیح درواقع كاری را كه سیستم انجام خواهد داد بیان می‌كند. این مستندات بعنوان منابع مهم اطلاعات تولید می‌شود. در تولید این مستندات باید خواسته‌های همه ذینفعان را در نظر گرفت.

  Analysis & Design (تحلیل و طراحی) اهداف تحلیل و طراحی عبارتند از:

  • تبدیل نیازمندی‌ها به طراحی سیستم كه قرار است بوجود آید.
  • پیدایش یك معماری مستحكم برای سیستم
  • سازگار ساختن طراحی برای هماهنگ شدن با محیط پیاده‌سازی و طراحی آن برای كارایی بهتر

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

   Implementation (پیاده‌سازی) اهداف پیاده‌سازی عبارتند از :

  • تعریف سازمان كد، برحسب زیر مجموعه‌ای از مجموعه‌های پیاده‌سازی سازمان یافته در لایه‌ها
  • پیاده‌سازی كلاس‌ها و اشیاء بوسیله مؤلفه‌ها (فایل‌های منبع، باینری‌ها، فایل‌های اجرایی و ...)
  • تست اجزاء تولید شده به عنوان واحد‌ها
  • مجتمع‌سازی نتایج تولید شده توسط پیاده سازان فردی‌ (یا تیم‌ها) به صورت یك سیستم قابل اجرا.

دیسیپلین پیاده‌سازی مرز خود با تست را به اینكه تك تك كلا‌س‌ها چگونه تست واحد می‌شوند، محدود می‌كند. تست سیستم و تست مجتمع سازی در دیسیپلین تست انجام می‌گیرد.

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

  • یافتن و مستند كردن نقایص در كیفیت نرم‌افزار
  • آگاهی دادن در مورد كیفیت نرم‌افزار بررسی شده
  • اثبات اعتبار فرضیاتی كه در طراحی و مشخصات نیازمندی‌ها ساخته شدند، از طریق نمایش‌های واقعی
  • تصدیق عملكردهای محصول نرم‌افزار همانطور كه طراحی شده است.
  • تصدیق اینكه نیازمندی‌ها بدرستی پیاده‌سازی شده‌اند.

یك تفاوت جالب ولی تاحدی ظریف میان دیسیپلین تست و سایر دیسیپلین‌ها در RUP این است كه تست گرفتن، اساسا وظیفه‌ی یافتن و ارائه ضعف‌ها در محصول نرم‌افزار را داراست. برای اینكه این تلاش موفقیت‌آمیز باشد، لازم است از یك روش نسبتا منفی و مخرب استفاده شود تا روشی سازنده. مسأله‌ای كه بسیار حائز اهمیت می‌باشد این است كه از دو روش اجتناب كنیم : یكی روشی كه بطور مناسب و موثر نرم‌افزار را بكار نگیرد و مشكلات و ضعف‌های آن را نشان ندهد و دیگری روشی كه آنقدر مخرب است كه احتمالا هیچگاه كیفیت محصول نرم‌افزاری را قابل قبول درنظر نمی‌گیرد.

  Deployment (استقرار) دیسیپلین استقرار فعالیت‌هایی را توضیح می‌دهد كه تضمین می‌كنند محصول نرم‌افزاری برای كاربران نهایی‌اش در دسترس می‌باشد. دیسیپلین استقرار سه حالت استقار محصول را توضیح می‌دهد.

  • نصب اختصاصی
  • آماده فروش كردن محصول نهایی
  • دستیابی به نرم‌افزار از طریق اینترنت

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

  Environment (محیط) دیسیپلین محیط بر فعالیت‌هایی كه برای پیكربندی فرآیند برای یك پروژه لازم و ضروری‌اند، متمركز می‌شود. این دیسیپلین فعالیت‌های مورد نیاز برای تولید رهنمودهایی كه در جهت پشتیبانی از یك پروژه لازم می‌باشند را توضیح می‌دهد. هدف فعالیت‌هایی محیطی فراهم آوردن محیط تولید (هم فرآیندها و هم ابزاری كه تیم تولید را پشتیبانی می‌كنند) برای سازمان تولید كننده نرم‌افزار می‌باشد.
جعبه ابزار مهندس فرآیند پشتیبانی ابزاری را برای پیكربندی یك فرآیند فراهم می‌كند. این مورد شامل ابزارها و نمونه‌هایی برای ایجاد سایتهای وب پروژه و سازمان بر اساس RUP می‌شود.

    Project Management (مدیریت پروژه) مدیریت پروژه نرم‌افزاری، هنر متوازن ساختن اهداف متقابل، مدیریت ریسك و غلبه بر محدودیت‌ها برای تحویل موفقیت آمیز محصولی است كه هم نیازهای مشتریان ( كسانی كه برای سیستم پول می‌پردازند) و هم نیازهای كاربران را برآورده كند. این حقیقت كه پروژه‌های بسیار كمی هستند كه واقعا موفقیت‌آمیزند برای توضیح سخت بودن این كار، كافی می‌باشد.
اهداف این دیسیپلین عبارتند از :

  • فراهم كردن یك چارچوب برای مدیریت پروژه‌های صرفاً نرم‌افزاری
  • فراهم كردن رهنمودهای عملی برای طرح‌ریزی، تعیین نیروی انسانی، اجرا و نظارت بر پروژه‌ها
  • فراهم كردن یك چارچوب برای مدیریت ریسك
    • با این وجود، این دیسیپلین از RUP برای پوشش دادن همه‌ی جنبه‌های مدیریت پروژه نیست. برای مثال این دیسیپلین موارد زیر را پوشش نمی‌دهد :‌
      • مدیریت افراد : استخدام، آموزش، رهبری
      • مدیریت بودجه : تعیین، تخصیص و غیره
      • مدیریت قراردادها :‌ با پشتیبانی كنندگان و مشتریان
      این دیسیپلین بطور عمده روی جنبه‌های مهم یك فرآیند تكراری تمركز می‌كند كه عبارتند از :
      • مدیریت ریسك
      • طرح ریزی برای یك پروژه‌ی تكراری، از طریق چرخه‌ی حیات و برای یك تكرار بخصوص
      • نظارت بر پیشرفت یك پروژه‌ی تكراری و متریك‌ها

  Configuration & Change Management (مدیریت پیكربندی و تغییرات) برای تأویل و تفسیر ”مدل بلوغ قابلیت“ انستیتو مهندسی نرم‌افزار(SEI CMM)، مدیریت پیكربندی و درخواست تغییر، تغییرات را به سمت خروجی‌های یك پروژه كنترل می‌كند و همچنین صحت و تمامیت خروجی‌های پروژه را حفظ می‌كند.
مدیریت پیكربندی و درخواست تغییر (CRM, CM) شامل موارد زیر می‌باشند :‌

  • تشخیص موارد پیكربندی
  • محدود كردن تغییرات آن موارد
  • رسیدگی به تغییراتی كه برای آن موارد ساخته شده
  • تعریف و مدیریت پیكربندی آن موارد

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

  • به روز رسانی همزمان
  • توجه دادن محدود شده
  • نسخه‌های چندگانه
+ نوشته شده در  دوشنبه بیست و هشتم مرداد 1387ساعت 9:55  توسط فرهاد  | 

ابزارهای Rational

 

 ابزارهای Rational

شركت IBM Rational ابزارهایی را برای پشتیبانی از RUP ارائه كرده است كه آشنایی با آنها به اجرای بهتر RUP كمك می‌كند. در این بخش برخی از ابزارهای Rational را معرفی می‌كنیم.
ابتدا لازم است یادآوری كنم كه نام‌های زیر علائم تجاری ثبت شده‌ی شركت IBM Rational است :

Rational Software Corporation, Rational, Rational Suite, Rational Suite ContentStudio, Rational Apex, Rational Process Workbench, Rational Rose, Rational XDE, Rational Software Architect, Rational Summit, Rational Unified process,Rational Visual Test, AnalystStudio, ClearCase, ClearCase Attache, ClearCase MultiSite,ClearDDTS, ClearGuide, ClearQuest, PerformanceStudio, PureCoverage, Purify, Quantify,Requisite, RequisitePro, RUP, SiteCheck, SiteLoad, SoDa, TestFactory, Functiona Tester, TestFoundation,TestMate & TestStudio

  IBM Rational Rose یكی از مشهور ترین ابزارهای CASE است كه از اوخر دهه 90 میلادی عرضه شده است و به دلیل پشتیبانی خیلی خوب از زبان UML و امكان تولید كد از روی مدل به زبان‌های برنامه نویسی مختلف مورد استفاده فراوان قرار گرفته است. از نقاط قوت این ابزار، می‌توان به پشتیبانی از زبان‌های مختلف برنامه‌نویسی برای تولید كد اشاره نمود (هرچند كه جای Delphi و .Net خالی است). از دیگر مزایای این ابزار می‌توان به پایداری آن، امكان تولید گزارش‌های مختلف و امكان ارتباط با Rational RequistePro اشاره نمود.
از نقاط ضعف مهم این ابزار این است كه باید از یك IDE جداگانه برای توسعه كدهای تولید شده استفاده نمود .

    IBM Rational XDE ابزار طراحی و تولید كد Rational است كه به نوعی جایگزین Rose خواهد بود. برا ی دو پلتفورم .Net و J2EE عرضه شده است و دارای امكانات زیر است :

  • توسعه مبتنی بر مدل با پشتیبانی از UML
  • همگام سازی خودكار (یا بنا به درخواست) مدل با كد
  • امكان تعریف و استفاده از الگوها و قالب‌های جدید
  • امكان طراحی پایگاه داده (منطقی و فیزیكی)
  • انتشار مدل‌ها بر روی وب و گزارش‌گیری تجمیع با سایر ابزارهای Rational (مانند ClearCase(

یكی از مهمترین ویژگی‌های این ابزار امكان تجمیع با IDE توسعه كد است (Visual Studio.Net برای پلتفورم .Net و elipse برای پلتفورم J2EE )

  IBM Rational Software Architect یك ابزار پیشرفته ، كامل و مجتمع طراحی و تولید است باعث افزایش قابل توجه تولید مبتنی بر مدل با استفاده از زبان UML برای ساخت برنامه‌های كاربردی و سرورهایی با معماری خوب می‌شود.
از ویژگی‌های مثبت این ابزار می‌توان به موارد زیر اشاره كرد :

  • با استفاده از این ابزار می‌توانید تمام جنبه‌های طراحی و تولید نرم‌افزار را یكپارچه نمایید (با elipse IDE، ClearCase و RequistePro مجتمع است ) .
  • برنامه‌ها با بهره‌وری بیشتری تولید می‌شوند
  • از آخرین تكنولوژی‌های مدل‌سازی استفاده می‌كند.
  • می‌توانید ساختار برنامه‌های كاربردی مبتنی برJava خود را كنترل و مرور كنید.
  • یك پلتفورم با معماری باز و قابل انعطاف برای مدل‌سازی فراهم كرده است.
  • از UML 2 به خوبی پشتیبانی می‌كند.
  • امكان پشتیبانی از مدل‌های تولید شده بوسیله Rose و XDE پشتیبانی می‌كند.

در برایر مزیت‌های فراانی كه این ابزار دارد، باید توجه كنید كه برای استفاده از آن به سخت‌افزار قدرتمندی احتیاج دارید.

    IBM Rational RequistePro ابزاری برای مدیریت نیازمندی‌های و use-case ها برای تیم پروژه است كه باعث بهبود ارتباطات برای اهداف پروژه، افزایش تولید مشاركتی، كاهش ریسك‌های پروژه و بهبود كیفیت برنامه پیش از استقرار در محیط كاربر می‌شود.
از مزایا و امكانات این ابزار می‌توان به موارد زیر اشاره كرد :

  • همكاری بسیار نزدیك با Microsoft Word به گونه‌ای كه یك محیط مناسب برای تعریف و سازماندی نیازمندی‌ها فراهم می‌كند و امكان همگام سازی بی‌درنگ مستندات نیازمندی‌ها در Microsoft Word با اطلاعاتی كه راجع به آنها در RequisitePro تعریف شده است را دارد (البته تجربه شخصی بنده در استفاده از این همكاری نزدیك و كامل با Microsoft Word نشان داده كه این همكاری چندان پایدار و مناسب نیست و در اكثر مواقع باعث خرابی Word می‌شود. ضمن آنكه چنانچه مستندات شما به زبان فارسی باشد، باید قالب‌های لازم برای آنها را نیز تهیه كنید).
  • فراهم كردن یك پایگاه داده جامع و كامل از صفات نیازمندی‌ها كه با استفاده از آن می‌توانید برای انواع نیازمندی‌های مختلف، ویژگی‌های مورد نظر خود ( مانند هزینه، زمان، ریسك، اولویت، پیچیدگی و موارد دلخواه خود را تعریف و مقدار دهی كنید).
  • این امكان را فراه می‌آورد كه روابط علّْی میان نیازمندی‌ها را به صورت پدر و فرزندی نمایش می‌دهد و هرجا كه در این روابط خللی ایجاد شد، آنرا نمایش می‌دهد (مثالا اگر نیازمندی علّت تغییر كند، نشان داده می‌شود كه رابطه علی آن با نیازمندی معلول به هم خورده است و اثر این تغییر در نیازمندی معلول نیز باید ظاهر شود).
  • با توجه به ساختار مبتنی بر پایگاه داده آن امكانات مناسبی برای گزارش‌گیری، جستجو و پالایش نیازمندی‌ها فراهم می‌كند.
  • در حال حاضر از پایگاه داده‌های Access، SQL Server و Oracle پشتیبانی می‌كند.

  IBM Rational ClearCase ClearCase در واقع یك ابزار CVS پیشرفته و دارای امكانات و قابلیت‌های مناسبی برای مدیریت پیكربندی و دارایی‌های پروژه است. دارای امكاناتی برای كنترل مجتمع نسخه‌‌ها، مدیریت خودكار فضای كاری، پشتیبانی از تولید موازی، مدیریت Baseline ها، Build ها و Release ها.
ابزار ClearCase امكانات لازم برای ایجاد، به‌روز‌آوری، ساخت، تحویل، استفاده مجدد و نگهداری دارایی‌های حیاتی كسب و كار را دارد.
از مزایا و امكانات این ابزار می‌توان به موارد زیر اشاره كرد :

  • امكان مجتمع شدن با IDE های پركاربردی مانند Visual Studio .Net، Eclipse، Rational Application Developer و WebSphere Studiio
  • واسط‌های محلی، دور و مبتنی بر Web كه امكان دسترسی در هر مكان و هر زمان را فراهم می‌آورد.
  • پشتیبانی از محیط های Linux، Windows و Mainframe (z/OS)
  • مجتمع شدن كامل بار Rational ClearQuest كه یك راهكار كامل برای مدیریت پیكربندی نرم‌افزار فراهم می‌اورند.

  IBM Rational ClearQuest ابزار ClearQuest از طریق مدیریت فرآیند كاری انعطاف‌پذیر و قابلیت ردگیری نقایص و تغییرت در طول چرخه‌ی حیات پروژه امكانات بهتری برای كنترل فرآیند تولید نرم‌افزار فراهم می‌آورد. این ابزار به خودكارسازی و حاكم كردن فرآیند تولید، مدیریت مسائلی كه در طی چرخه عمر پروژه رخ می‌دهد و تسهیل ارتباط میان تمام ذینفعان در كل سازمان كمك می‌كند.
با استفاده از امكانات پرس‌وجو ، نمودارها و گزارش‌هایی این ابزار وضعیت پروژه، بارِكاری، و مواردی مانند ثبت نقایص و درخواست‌‌های بهبود به راحتی قابل نظارت و اولویت‌بندی هستند. از دیگر مزایای این ابزار می‌توان به داشتن واسط‌های محلی، دور و مبتنی بر Web اشاره كرد كه دسترسی در هر مكان و هر زمان را امكان‌پذیر كرده است. همچنین امكان مجتمع شدن با ClearCase یك راه‌حل كامل برای مدیریت پیكربندی پروژه فراهم می‌كند.

    IBM Rational Functinal Tester یك ابزار پیشرفته و خودكار برای آزمون عملكردی برنامه‌های كاربردی Java، .Net و مبتنی بر Web خود دارند. برای آزمون‌گران تازه‌كار هم قابلیت‌های آزمون خودكار برای فعالیت‌هایی مانند آزمون داده گرا (Data Driver ) دارد. همچنین با پشتیبانی از زبان‌های اسكریپت‌نویسی ( J Script در محیط Eclipse و VB Script در محیط .Net ) امكانات پیشرفته و قابل انعطاف را برای فعالیت‌های آزمون فراهم می‌كند.
همچنین با داشتن یك كپی از ClearCase LT امكان تولید موازی TestScript ها و استفاده از آنها بوسیله تیم‌هایی كه بصورت جغرافیایی پراكنده شده‌اند را فراهم می‌آورد.

+ نوشته شده در  دوشنبه بیست و هشتم مرداد 1387ساعت 9:55  توسط فرهاد  | 

فازهای RUP

 

 فازهای RUP

 

فازها و milestone های یك پروژه در RUP   Inception (آغازین) هدف اصلی این فاز دستیابی به توافق میان كلیه‌ی ذینفعان بر روی اهداف چرخه‌ی حیات پروژه است. فاز Inception به دلیل تلاشهای تولید و توسعه جدید به صورت پایه‌ای اهمیت فراوانی دارد كه در آن ریسك‌های نیازسنجی و تجاری مهمی وجود دارد كه باید پیش از اینكه اجرای پروژه مورد توجه قرار گیرد، بررسی شوند. برای پروژه‌هایی كه بر توسعه سیستم موجود متمركزند، فاز Inception كوتاهتر است، با اینحال این فاز برای حصول اطمینان از اینكه پروژه ارزش انجام دادن دارد و امكان‌پذیر نیز هست، انجام می‌شود. اهداف اصلی فاز آغازین شامل موارد زیر است :‌

  • بدست‌ آوردن محدوده نرم‌افزاری پروژه و محدودیت‌های آن كه شامل یك دید عملیاتی، معیار پذیرش و اینكه چه چیز باید در محصول باشد و چه چیز نباید باشد، می‌شود
  • مشخص كردن Use-Case های اساسی سیستم، سناریوهای اصلی عملیات كه مسائل مربوط به طراحی اصلی را ایجاد می‌كند.
  • نمایش و شاید توضیح حداقل یك معماری كاندیدا برای بعضی سناریوهای اصلی
  • برآورد هزینه و زمان كلی برای كل پروژه

  Elaboration (جزییات) هدف فاز جزئیات تعیین معماری كلی سیستم به منظور فراهم آوردن یك زمینه‌ی مناسب برای قسمت عمده‌ی طراحی و پیاده‌سازی در فاز Construction است. معماری با درنظرگرفتن بیشتر نیازمندی‌های مهم (آن دسته از نیازمندی‌ها كه تأثیر زیادی بر معمار سیستم دارد) و نیز ارزیابی ریسك كامل می‌شود. پایداری معماری از طریق یك یا چند نمونه‌ی اولیه ساختاری ارزیابی می‌‌شود. اهداف اصلی فاز جزئیات شامل موارد زیر است :

  • اطمینان از اینكه معماری، نیازمندی‌ها و طرح‌ها به اندازه‌ی كافی پایدارند و ریسك‌ها به اندازه‌ی كافی كاهش یافته‌اند بطوریكه بتوان هزینه و زمان‌بندی لازم برای تكمیل تولید را پیش‌بینی كرد. برای اكثر پروژه‌ها، گذر از این مرحله‌ی مهم مانند انتقال از یك عملیات سبك و سریع و با ریسك پایین به یك عملیات با هزینه و ریسك بالا همراه با اجبار سازمانی است.
  • بیان همه‌ی ریسك‌های پروژه كه از نظر ساختاری اهمیت دارند.
  • ایجاد یك معماری پایه، مشتق شده از سناریوهای مهم كه از لحاظ ساختاری اهمیت دارند، كه این معماری ریسك‌های فنی عمده پروژه را نیز مشخص می‌كند.
  • تولید یك نمونه‌ی اولیه‌ی تكاملی از مولفه‌های با كیفیت تولیدی خوب، و همچنین یك یا چند نمونه‌ی اولیه‌ی اكتشافی و نمونه‌های اولیه‌ی غیر قابل استفاده جهت كاهش ریسكهای خاص مانند :‌
    • سازش‌های مربوط به نیازمند‌ی‌ها یا طراحی
    • استفاده‌ی مجدد از مؤلفه‌ها
    • عملی بودن محصول یا توضیحات برای سرمایه گذاران، مشتریان و كاربران نهایی
  • توضیح اینكه معماری پایه از نیازمندی‌های سیستم با هزینه‌ی منطقی و در زمان منطقی پشتیبانی می‌كند
  • ایجاد یك محیط پشتیبانی كننده

  Construction (ساخت) هدف این فاز واضح سازی نیازمندی‌های باقیمانده و تكمیل تولید سیستم بر اساس معماری مبنا می‌باشد. فاز ساخت به نوعی یك فرآیند ساخت است كه در آن تأكید بر مدیریت منابع و كنترل عملیات به منظور بهینه‌سازی هزینه‌ها، زمان‌بندی‌ها و كیفیت است. در این حالت یك انتقال از تولید یك نمونه‌ی ذهنی در طی فازهای Inception و Elaboration به تولید محصولات قابل استقرار در طی Construction وTransition می‌شود. اهداف اصلی فاز Construction شامل موارد زیر می‌باشد :

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

  Transition (انتقال) تمركز این فاز بر این است كه تضمین نماید نرم‌افزار برای كاربران نهایی آماده می‌باشد. فاز Transition می‌تواند به چندین تكرار تقسیم شود، و شامل تست كردن محصول برای آماده‌سازی جهت انتشار و ایجاد تنظیمات كوچك بر اساس بازخورد كاربر می‌باشد. در این نقطه از چرخه‌ی حیات، بازخورد كاربر باید بطور عمده بر تنظیم دقیق محصل، پیكربندی، نصب و نكات مربوط به قابلیت استفاده تمركز یابد، و همه‌ی نكات ساختاری اصلی باید هرچه زودتر در چرخه‌ی حیات پروژه طرح شوند. با به اتمام رسیدن فاز Transition اهداف چرخه‌ی حیات باید برآورده شده باشند و پروژه در موقعیتی باشد كه بتوان آنرا خاتمه داد. در برخی موارد، پایان چرخه‌ی حیات فعلی ممكن است با آغاز چرخه‌ی حیات بعدی در مورد همان محصول همزمان شود و ما را به سمت تولید یا ویرایش دیگری هدایت كند. برای پروژه‌های دیگر، پایان فاز Transition ممكن است با تحویل كامل خروجی‌ها به گروه سومی كه ممكن است مسؤول عملیات نگهداری و پیشرفت سیستم تحویل دهده شده می‌باشند، همزمان شود. این فاز بر اساس نوع محصول در فاصله‌ی بسیار ساده تا بی‌نهایت پیچیده قرار دارد. نصب یك نسخه‌ی جدید از یك بسته نرم‌افزاری موجود ممكن است بسیار ساده باشد، در حالیكه جایگزینی سیستم كنترل ترافیك هوایی یك كشور ممكن است بسیار پیچیده باشد. فعالیت‌هایی كه در طول یك تكرار در فاز Transition انجام می‌گیرد به هدف بستگی دارند. برای مثال معمولاً در هنگام رفع اشكالات، پیاده‌سازی و تست كافی هستند. با این وجود اگر ویژگیهای جدیدی باید اضافه شوند، این تكرار شبیه به تكراری در فاز Construction می‌شود كه نیازمند تحلیل و طراحی و غیره است. فاز Transition زمانی وارد عمل می‌شود كه یك خط مبنا آنقدر بالغ شده كه بتواند در دامنه‌ی كاربر نهایی استقرار یابد. این امر بطور نمونه نیازمند این است كه تعدادی زیر مجموعه‌ی قابل استفاده از سیستم با كیفیت قابل قبول و مستندات كاربر، كامل شده باشند، تا انتقال به كاربر نتایج مثبتی را برای همه‌ی گروه‌ها در بر داشته باشد. اهداف مهم فاز Transition عبارتند از :

  • تست بتا برای تشخیص اعتبار سیستم جدید با توجه به انتظارات كاربر
  • تست بتا و عملیات موازی همراه با یك سیستم قدیمی كه در حال جایگزینی می‌باشد.
  • تبدیل پایگاه‌های داده‌ی عملیاتی
  • آموزش كاربران و نگهداری كنندگان
  • بازاریابی، توزیع و فروش برای نخستین انتشار محصول
  • تنظیم فعالیت‌ها از قبیل رفع اشكال، افزایش كارایی و قابلیت استفاده
  • ارزیابی خط مبناهای استقرار در مقایسه با تصویر كلی و معیار قابلیت قابل قبول برای محصول
  • دستیابی به موافقت ذینفع در مورد اینكه خط مبناهای استقرار كامل می‌باشند
  • دستیابی به موافقع ذینفع در مور اینكه خط مبناهای استقرار با معیار ارزیابی تصویر كلی سازگارند.
+ نوشته شده در  دوشنبه بیست و هشتم مرداد 1387ساعت 9:51  توسط فرهاد  | 

RUP چیست ؟

 

RUP چیست ؟

 

معماری و ساختار كلی RUP فرایند انجام یک پروژه تعریف می‌کند که چه کسی، چه کاری را در چه هنگام و چگونه برای رسیدن به هدف (انجام پروژه) انجام می‌دهد. در مهندسی نرم‌افزار، هدف ساختن یک محصول نرم‌افزاری و یا بهبود یک نمونه‌ی موجود است. هدف از تعیین فرایند، تضمین کیفیت نرم‌افزار، برآورده شدن نیاز‌های کاربر و قابل تخمین بودن زمان و هزینه‌ی تولید می‌باشد. علاوه بر این، تعیین فرایند، روندی جهت تحویل مصنوعات دوران تولید نرم‌افزار به کارفرما و ناظر پروژه ارائه می‌دهد تا از این طریق اطمینان حاصل کنند که پروژه روند منطقی خود را طی می‌کند و نظارت درست بر انجام پروژه ممکن است و از سوی دیگر، معیاری برای ارزیابی پروژه انجام شده می‌باشد. تا كنون متدولوژی‌های مختلفی برای فرآیند تولید نرم‌افزار ارائه شده‌اند كه یكی از مشهورترین آنها RUP است.
RUP، متدولوژی ارائه شده توسط شرکت Rational، پرکاربردترین فرآیند تولید و توسعه نرم افزاری در دنیای کنونی است و به عنوان یک استاندارد صنعتی بالفعل در دنیای IT پذیرفته شده است. به گزارش رویتر در سال 2001 میلادی بیش از ششصد هزار شرکت تولید کننده نرم افزار، از ابزارهای شرکت Rational استفاده می کرده‌اند که این تعداد کماکان هم در حال افزایش است. این متدولوژی، برای انواع پروژه‌های نرم‌افزاری در دامنه‌های مختلف ( مانند سیستم‌های اطلاعاتی، سیستم‌های صنعتی، سیستم‌های بلادرنگ، سیستم‌های تعبیه شده، ارتباطات راه دور، سیستم‌های نظامی و ...) و در اندازه‌های متفاوت، از پروژه‌های بسیار کوچک (یک نفر در یک هفته) تا پروژه‌های بسیار بزرگ (چند صد نفر تولید کننده با پراکندگی جغرافیایی)، کاربرد دارد.
مزیت بزرگ این متدولوژی، استفاده از روش تکرار در تولید و مدیریت تولید نرم‌افزار است که این امر، امکان تولید مبتنی بر کاهش ریسک و مواجه با مشکلات اصلی در ابتدای کار و در نتیجه احتمال موفقیت بیشتر را فراهم می‌کند. از محاسن دیگر این متدولوژی مبنا قرار دادن نرم‌افزار و تولید یک معماری پایدار در ابتدای کار است، که در نتیجه امکان کشف مشکلات عمده ساختاری، تست و مجتمع سازی ممتد را از ابتدای کار فراهم می‌کند. از دیگر مزایای این روش این است که افراد تیم همزمان با پیشرفت پروژه، مطالب جدیدی فرا می‌گیرند و کیفیت فرآیند تولید نیز به طور مرتب افزایش می‌یابد.
همانطور كه در شكل بالا مشاهده می‌شود، RUP دارای دو بعد است :

  1. محور افقی نشان دهنده‌ی زمان است و با پیشرفت خود جنبه‌های چرخه‌ی حیات فرآیند و فازهای RUP را نشان می‌دهد.
  2. محور عمودی نمایانگر دیسیپلین های RUP است كه فعالیت‌ها را با استفاده از ماهیتشان به صورت منطقی دسته‌بندی می‌كند.
    در هر فاز ممكن است یك یا چند تكرار وجود داشته باشد و در هر تكرار عملیات دیسپیلین‌های مختلف انجام می‌گیرند.
    + نوشته شده در  دوشنبه بیست و هشتم مرداد 1387ساعت 9:49  توسط فرهاد  | 

    آشنائی اوليه با ASP. NET 3.5 و VS 2008

     

    آشنائی اوليه با ASP. NET 3.5 و VS 2008

    شركت مايكروسافت در نوزدهم نوامبر 2007 ( بيست و هشتم آبان ماه هشتاد و شش ) ، رسما" نسخه ASP. NET 3.5 و ويژوال استوديو 2008 را عرضه كرد .

    همانند نسخه شماره 3 كه نسبت به نسخه شماره 2 دارای امكانات بيشتری بود ، در اين نسخه نيز نسبت به نسخه قبلی امكانات جديدی اضافه شده است .    اسمبلی های اساسی نصب شده توسط نسخه شماره 2 فريمورك ، همچنان در نسخه های 2 و 5 / 3 قابل استفاده می باشند . به عبارت ديگر ، در نسخه شماره 5 / 3 ، مفاهيم و نحوه نوشتن كد و مواردی از اين قبيل نسبت به نسخه شماره 2 تغيير نكرده است . در اين نسخه ، نوع ها ، ويژگی ها و قابليت های جديدی به فريمورك اضافه شده است .
    ويژوال استوديو 2008 ، ابزاری قدرتمند برای پياده سازی برنامه های ASP. NET است . برخلاف نسخه قبل كه صرفا" مختص يك نسخه خاص فريمورك بود ( به عنوان نمونه در ويژوال استوديو  2003 ،  نسخه ASP.NET 1.1 و در  ويژوال استوديو 2005 نسخه ASP. NET 2.0 ) ، از ويژوال استوديو  2008 می توان به همراه چندين نسخه فريمورك استفاده كرد  . شما می توانيد از طريق يك ليست drop down ، نوع فريمورك خود جهت پياده سازی برنامه ها  ( به عنوان نمونه ASP. NET 2.0 ، ASP. NET 3.0 و يا ASP. NET 3.5 را انتخاب نمائيد .
    شكل 1 نحوه انتخاب فريمورك در زمان ايجاد يك وب سايت جديد را در ويژوال استوديو 2008 نشان می دهد .

    نحوه انتخاب فريمورك در زمان ايجاد يك وب سايت جديد در ويژوال استوديو 2008
    شكل 1 : نحوه انتخاب فريمورك در زمان ايجاد يك وب سايت جديد در ويژوال استوديو 2008

    در ويژوال استوديو 2008 ،‌در محيط طراحی نيز تغييراتی در جهت قدرتمند تر شدن آن ايجاد شده است . افزودن امكاناتی نظير هوشمندی در تايپ و اشكال زدائی كدهای جاوا اسكريپت و قابليت مشاهده و حتی توقف در هسته كد فريمورك دات نت در حين اشكال زدائی نمونه هائی در اين زمينه می باشند .
    در اين مقاله مروری خواهيم داشت به ويژگی های جديد 5 / 3 و امكانات جديد مرتبط با ASP. NET در ويژوال استوديو 2008 .
     

    ارائه يك نسخه جديد فريمورك دات نت  و دستاوردهای آن
    زمانی كه يك نسخه جديد ASP. NET ارائه می گردد ، در واقع يك نسخه جديد از فريمورك دات نت نيز ارائه می گردد . كنترل های وب و منطق برخورد با صفحات در كلاس هائی خاص از فريمورك دات نت پياده سازی شده اند .
    فريمورك دات نت دارای امكانات فراوانی است كه از آنها در شرايط مختلف استفاده می شود و همه چيز به ASP. NET خلاصه نمی گردد .
    متعاقب ارائه يك نسخه جديد از فريمورك دات نت ، امكانات و ويژگی های جديدی نيز به همراه آن ارائه می گردد كه می توان آنها را در سه گروه زير تقسيم كرد :

    • ويژگی هائی از فريمورك كه مختص پياده كنندگان برنامه های ASP.NET ارائه شده اند :اين نوع ويژگی ها جهت پياده سازی برنامه هایASP. NET بسيار مهم و حياتی می باشند . مثلا" پس از معرفی نسخه شماره 2  ASP. NET ، قابليت های جديدی نظير كنترل Gridview و كنترل های نسبت دهی داده نظير sqlDataSource و ObjectDataSource در اختيار پياده كنندگان قرار گرفت .

    • ويژگی هائی از فريمورك كه می تواند برای  پياده كنندگان برنامه های ASP. NET  نيز مفيد واقع شود : اين نوع از ويژگی ها صرفا" مختص ASP. NET نمی باشند و از آنها می توان در مواردی ديگر نظير WinForm نيز استفاده كرد . از پتانسيل های فوق عموما" در ASP. NET استفاده می گردد . به عنوان نمونه ، فريمورك 2 ، نوع های anonymous و Generics را معرفی و وضعيت Dataset را بهبود بخشيد .
      هيچكدام از موارد فوق مختص ASP. NET نمی باشند ، ولی اغلب توسط پياده كنندگان ASP. NET استفاده می گردند . 
       

    • ويژگی هائی از فريمورك كه توسط پياده كنندگان ASP. NET استفاده نمی گردد . فريمورك دات نت مشتمل بر تعداد زيادی از كلاس هائی است كه به ندرت و يا هرگر توسط پياده كنندگان ASP. NET استفاده نمی گردد نظير كلاس های موجود در  System.Windows.Forms .

    در ادامه  به بررسی دو گروه اوليه خواهيم پرداخت .
    در ابتدا لازم است به اين موضوع اشاره نمائيم كه شما می توانيد يك پوستر از فريمورك 5 / 3 با فرمت pdf  را از اين محل دريافت نمائيد . علاوه بر وجود  تعداد زيادی از كلاس ها و namespace در فريمورك دات نت ، اين پوستر دو چيز را كاملا" شفاف نشان می دهد : اين كه چه ميزان از فريمورك دات نت با ASP.NET مرتبط نيست  و  امكانات و ويژگی های جديد اضافه شده به هر يك از نسخه های فريمورك دات نت  .
    شكل 2 ويژگی های ASP. NET 2.0 و قابليت های  جديد اضافه شده در هر يك از نسخه های 3 و 5 / 3 را نشان می دهد .

    امكانات اضافه شده به هر يك از نسخه های فريمورك دات نت
    شكل 2 : امكانات اضافه شده به هر يك از نسخه های فريمورك دات نت

    برای كسب اطلاعات بيشتر در خصوص اين موضوع كه چگونه دات نت 5 / 3 ، اسمبلی های اضافه و قابليت های جديدی را به دات نت 2 اضافه كرده است ، به وبلاگ Daniel Moth  مبحث "فريمورك 5 / 3 "  مراجعه نمائيد .
    در وبلاگ فوق و مبحث " Visual Studio 2008 Stack " ، يك تصوير شفاف از تغييرات انجام شده در ويژوال استوديو  ، زبان های برنامه نويسی ، كتابخانه های فريمورك و CLR نيز ارائه شده است .

    مروری بر ويژگی هائی از فريمورك كه مختص پياده كنندگان برنامه های ASP.NET ارائه شده اند
    ASP.NET 3.5 يك نسخه جديد و ارتقاء‌ يافته نسبت به نسخه قبلی است كه سه ويژگی جديد زير در آن از ساير موارد مشهود تر است :

    • حمايت ذاتی  از ASP.NET AJAX

    • كنترل ListView

    • كنترل DataPager

    قبل از ASP.NET 3.5 ، لازم بود كه در ابتدا فريمورك ASP.NET AJAX مايكروسافت دانلود و بر روی سيستم به عنوان يك الحاقيه نصب گردد . در ASP.NET 3.5 ، كلاس های مرتبط با AJAX مستقيما" در فريمورك دات نت ساخته شده اند تا امكان ساخت سريع و آسان برنامه های وب مرتبط با AJAX  در برنامه های ASP.NET فراهم گردد . 
    ASP.NET 2.0 به همراه خود كنترل های داده جديدی نظير Gridview، DetailsView و FormView را معرفی كرد . كنترل GridView ، ليستی از ركوردها را در يك جدول نمايش می دهد . كنترل های DetailsView و FormView در هر لحظه يك ركورد را نمايش می هند . كنترل DetailView در يك ساختار نمايشی مشابه جدول و FormView در يك لی اوت متاثر از يك تمپليت خاص ، اطلاعات خود را نمايش می دهند .
    ListView در واقع يك نسخه ارتقاء يافته از كنترل های DataList و Repeater است كه می تواند چندين ركورد را به همراه قابليت هائی‌ نظير Gridview نمايش دهد . با اين تفاوت كه بكارگيری تمپليت ها با انعطاف بيشتری انجام می گردد .
     كنترل DataPager به صورت يك نوع اينترفيس free-standing paging كار می كند . به عبارت ديگر كنترل فوق ، يك رابط كاربر paging را تفسير ( به عنوان نمونه صفحه بعد ، قبل ، دكمه آخر   ) و با يك كنترل وب داده مرتبط می شود . كنترل فوق صرفا" با آن گروه از كنترل هائی كار می كند كه IPageableItemContainer interface را پياده سازی كرده باشند كه صرفا" ( در حال حاضر ) در كنترل ListView وجود دارد .
    برای آشنائی بيشتر با نحوه استفاده از كنترل های ListView و DataPager می توانيد به وبلاگ  Scott Guthrie مبحث " كنترل ListView " مراجعه نمائيد. مايكروسافت نيز ويدئوهای جديدی جهت آشنائی با نحوه استفاده از كنترل های ListView و DataPager ارائه كرده است .

    مروری بر ويژگی هائی از فريمورك كه می تواند برای  پياده كنندگان برنامه های ASP. NET  نيز مفيد واقع شود
    مهمترين ويژگی ارائه شده در  نسخه شماره 5 / 3 فريمورك دات نت ، معرفی LINQ ( برگرفته شده از Language Integrated Query  ) است . با استفاده از فناوری فوق ، می توان گرامری شبيه SQL را با استفاده از زبان های برنامه نويسی VB و #C نوشت تا پياده كنندگان بتوانند از داده در برنامه های خود استفاده نمايند . 
    به همراه  ويژوال استوديو 2008  يك  LINQ to SQL designer  ارائه شده است كه به كمك آن می توان يك بانك اطلاعاتی را به عنوان يك LINQ به  SQL object model مدل سازی كرد . پس از مدل سازی بانك اطلاعاتی ، می توان به سادگی كدهای مورد نظر خود را به منظور كار با داده نوشت .
    كد زير نحوه بازيابی محصولات گروه Test از بانك اطلاعاتی نمونه Northwind را با گرامر مبتنی بر LINQ توسط  VB و #C نشان می دهد ( كلاس NorthwindDataContext  بر اساس مدل طراحی شده ، ايجاد شده است ) .

     

     C#

     NorthwindDataContext  db = new  NorthwindDataContext() ;
     var Products = from  p  in  db.Products
                          
     Where p.category.CategoryName == "Test"
                          
     select P;
    VB

     Dim db AS New
     NorthwindDataContext
     Dim products = From p In db.products _
                            Where p.category.categoryName = "Test" _
                            Select  p

     

     LINQ ، به سادگی يك گرامر را جهت كار با داده تعريف می كند . همچنين ، ORMs ( برگرفته شده از Object Relational Mappers  ) از قبل تعبيه شده ای وجود دارد كه فريمورك مرتبط را به منظور توليد عبارات LINQ ايجاد می نمايد تا بر روی يك بانك اطلاعاتی و يا XML كار كند .
    Scott Guthrie  در چندين مقاله با عنوان " استفاده از LINQ برای پياده سازی SQL ORM " به اين موضوع پرداخته است .
    ويژوال استوديو 2008 از گرامر LINQ در زمان استفاده از آن به صورت full-IntelliSense حمايت می نمايد . گرامر LINQ از طريق امكانات جديد ارائه شده در فريمورك دات نت نظير خصلت های اتوماتيك ، متدهای extension و عبارات lambda ، امكان پذير می باشد . پرداختن به موارد فوق خارج از حوصله اين مقاله است .

    مروری بر ويژگی های جديد ويژوال استوديو 2008
    ويژوال استوديو 2008 امكانات متعددی را در جهت كمك به پياده كنندگان نظير بهبود محيط Designer ، امكانات پيشرفته ويرايش CSS و اشكال زدائی جاوا اسكريپت ارائه كرده است . در اين نسخه از ويژوال استوديو برای پياده سازی برنامه های وب می توان يكی از محيط های NET 2.0, NET 3.0 و يا NET 3.5 را انتخاب كرد . اين بدان معنی است كه شما می توانيد از ويژوال استوديو برای كار بر روی يك وب سايت پياده سازی شده با ASP.NET 2.0 نيز استفاده نمائيد . در ادامه مروری سريع خواهيم داشت به هر يك از موارد فوق .
    در نسخه قبلی ويژوال استوديو ، پياده كنندگان می توانستند از Designer و يا Source view در زمان ويرايش عناصر ويژوال در يك صفحه ASP.NET استفاده نمايند . محيط Designer يك نمايش WYSISYG از صفحه را نمايش می دهد . در Source view ، كدهای markup مربوط به كنترل ها نمايش داده می شود . در ويژوال استوديو 2008 ، يك ويژگی جديد با نام  Split screen ارائه شده است كه توسط آن كدهای markup در يك pane و WYSIWYG در pane ديگر نمايش داده می شود . زمانی كه در مد split قرار می گيريم ، همزمان با اضافه كردن محتويات به Designer  ، بطور اتوماتيك كدهای markup در Source view بهنگام می گردند( متاسفانه عكس اين حالت درست نيست ) . اگر شما markup جديدی را بطور دستی در Source view درج نمائيد ، مجبور خواهيد بود كه صفحه را save و يا دكمه refresh را كليك نمائيد تا Designer view نيز  بهنگام گردد .
    شكل 3 ، Split screen را در ويژوال استوديو 2008 نشان  می دهد .

    Split screen را در ويژوال استوديو 2008
    شكل 3 : Split screen در ويژوال استوديو 2008

    همزمان با افزايش تعهد مايكروسافت به AJAX ، ويژوال استوديو 2008 امكانات حمايتی بهتری  را در ارتباط با جاوا اسكريپت ارائه كرده است .  امكانات زمان طراحی و اشكال زدائی بطور كامل بهبود يافته اند . زمانی كه از طريق source view اقدام به نوشتن كدهای جاوا اسكريپت می نمائيد ، امكانات و قابليت های IntelliSense مشابه در زمان نوشتن كدهای سمت سرويس دهنده در اختيار شما گذاشته می شود .  اين شامل حمايت از كدهای جاوا اسكريپت inline و اسكريپت هائی است كه از طريق فايل های جاوا اسكريپت خارجی به آنها مراجعه می گردد .
    ( دستيابی به فايل های اسكريپت از طريق گرامری مشابه    امكان پذير است ) .
    Scott Guthrie در وبلاگ خود و با عنوان VS 2008 JavaScript IntelliSense  به اين موضوع اشاره كرده است كه پياده كنندگان می توانيد حتی تذكرات هوشمند را به توابع جاوا اسكريپت و با استفاده از توضيحات XML اضافه نمائيد . وی همچنين در وبلاگ خود به بررسی قابليت های اشكال زدائی جاوا اسكريپت پرداخته است .
    اخيرا" شركت مايكروسافت عنوان نموده است كه به زودی كد فريمورك دات نت را تحت مجوز MS-RL در اختيار عموم قرار خواهد داد . نكته جالب مرتبط با اين رويداد برای پياده كنندگانی كه از  ويژوال استوديو استفاده می نمايند در اين است كه آنها می توانند ويژوال استوديو 2008 را به يك URL اشاره دهند  كه شامل نمادهای اشكال زدائی برای فريمورك دات نت است . بدين ترتيب ، در زمان اشكال زدائی امكان ورود به كد فريمورك دات نت فراهم می گردد . اين موضوع می تواند به پياده كنندگان كمك نمايد تا شناخت بهتر و عميق تری نسبت به نحوه عملكرد فريمورك دات نت پيدا نمايند . 
    هنوز مشخص نشده است ( در زمان نوشتن اين مطلب ) كه آيا مايكروسافت نمادهای اشكال زدائی را از طريق يك URL عمومی در دسترس قرار خواهد داد . پس از عموميت URL ، پياده كنندگان می توانند از طريق ويژوال استوديو به آن اشاره نمايند .

    + نوشته شده در  دوشنبه چهاردهم مرداد 1387ساعت 15:48  توسط فرهاد  | 

    برنامه نویسی وب سرویس

     

    برنامه نویسی وب سرویس

     

    از آنجاییکه شرکت مایکروسافت از ابتدای توسعه استاندارد SOAP با آن درگیر بوده است، تکنولوژی آن برای توسعه وب‌سرویس‌ها از شرکت‌های رقیب اندکی فاصله گرفته و بیشتر مورد اقبال واقع شده است. با استفاده از محیط توسعه .NET شرکت مایکروسافت، می‌توان براحتی وب‌سرویس‌های مورد نظر را تولید کرده و مورد استفاده قرار داد. در این نوشته می‌خواهیم به صورت قدم به قدم مراحل ساخت یک وب‌سرویس و یک برنامه تحت ویندوز برای استفاده از آن وب‌سرویس را دنبال کنیم. برای برنامه‌نویسی از محیط توسعه Visual Studio.NET استفاده خواهیم کرد، بنابراین قبل از اینکه به بحث اصلی یعنی نحوه کدنویسی بپردازیم، بهتر است اشاره کوتاهی به موارد و پیش‌ نیازهای این محیط توسعه داشته باشیم.
    برای استفاده از Visual Studio.NET یا .NET Framework SDK باید بر روی کامپیوتر خود Internet Information Server یا همان IIS را نصب کرده باشید. متاسفانه IIS و .NET بر روی ویندوزهای ME یا 98 قابل استفاده نمی‌باشد و بنابراین باید از یکی از ویندوز‌های NT، 2000 یا XP Professional استفاده کرد. برای نصب IIS به Control Panel بروید و Add/Remove Programs را انتخاب کنید. در ستون سمت چپ، آیکونی با عنوان Add/Remove Windows Components وجود دارد. بر روی آن کلیک کنید. شکل زیر پنجره Add/Remove Windows Components را بر روی کامپیوتر من نمایش می‌دهد.

    پنجره انتخاب کامپوننت‌های ویندوز برای نصب

    همانگونه که در شکل فوق می‌بینید جعبه انتخاب کنار IIS تیک خورده است و این یعنی IIS بر روی ویندوز من نصب شده است. اگر این جعبه انتخاب نشده باشد آنرا انتخاب کرده و با کلیک بر روی دکمه Next فرایند نصب آنرا دنبال کنید. پس از نصب IIS، می‌توانید Visual Studio.NET یا .NET Framework SDK را بر روی کامپیوتر خود نصب کنید.

    برنامه‌نویسی وب‌سرویس با استفاده از Visual Studio.NET
    می‌خواهیم یک وب‌سرویس ایجاد کنیم که قیمت کالاهای مختلف موجود در انبار را بتوان از طریق آن بدست آورد. برنامه‌های دیگر می‌توانند از طریق وب به این وب‌سرویس متصل شده و قیمت کالاها را دریافت نمایند. Visual Studio.NET را باز کنید. یک پروژه جدید از نوع ASP.NET Web Service و برای زبان C# ایجاد کنید. مسیر آنرا در وب تغییر دهید و یک نام مناسب برای آن انتخاب کنید(مثلا SimpleStockQuote). پنجره ایجاد پروژه جدید در شکل زیر نمایش داده شده است:

    نمایشی از نحوه ایجاد یک پروژه C# Web Service در Visual Studio.NET

    پس از ایجاد یک پروژه وب‌سرویس، در Visual Studio.NET پنجره طراحی برنامه نمایش داده خواهد شد. با استفاده از لینکی که بر روی این صفحه قرار داده شده است می‌توانید به قسمت مربوط به کد برنامه بروید. یکسری کد اولیه تولید شده است که شامل نام‌های پیش‌فرض برای شناسه‌های مختلف برنامه و همچنین کد‌های استانداردی است که برای تولید هر وب‌سرویسی مورد نیاز می‌باشد.
    نکته: کلید میان‌بر برای حرکت بین کد برنامه و وضعیت طراحی برنامه F7 و SHIFT+F7 می‌باشد.
    در کد تولید شده قسمتی وجود دارد که با عبارت [WebMethod] شروع می‌شود و به صورت کامنت درآمده‌ است. ابتدا این خط را از حالت کامنت خارج کنید و در خط بعد از آن، متدی را اضافه کنید که برای گرفتن قیمت کالاها از آن استفاده کنیم. نام این متد را GetQuote انتخاب می‌کنیم که یک پارامتر ورودی از نوع رشته‌ای خواهد داشت. این پارامتر رشته‌ای شامل نام کالا خواهد بود و خروجی آن از نوع اعشاری است و قیمت کالا را مشخص می‌کند. این متد را به صورت زیر می‌نویسیم:

    [WebMethod]
    public double GetQuote(string name)
    {
    if (name==”good1”) return 55.6;
    else return -1;
    }

    به همین سادگی وب‌سرویس نوشته شده آماده اجرا شده است. از منوی Debug گزینه Start without Debugging را انتخاب کنید. این گزینه باعث اجرای برنامه و نمایش پنجره مرورگری مشابه شکل زیر می‌شود:

    نمایشی از اجرای وب‌سرویس دریافت قیمت کالا

    اولین لینک از این پنجره با عنوان Service Description باعث نمایش توصیف سرویس می‌شود که یک فایل WSDL است. برای نمایش توصیف وب‌سرویس‌های توسعه داده شده توسط شرکت مایکروسافت که دارای پسوند asmx هستند، کافیست که پرس‌وجوی wsdl به آن ارسال شود. به عنوان مثال، در برنامه‌ای که در بالا نوشتیم با استفاده از پرس‌وجوی زیر توصیف وب‌سرویس نمایش داده خواهد شد.
    http://localhost/SimpleStockQuote/Service1.asmx?wsdl
    شکل زیر اطلاعات WSDL را در پنجره مرورگر نمایش می‌دهد.

    نحوه نمایش اطلاعات WSDL مربوط به وب‌سرویس

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

    دسترسی به متد GetQuote از طریق مرورگر

    اگر عبارت good1 را در قسمت name وارد کنید، جواب 55.6 را دریافت خواهید کرد. ورود هر عبارت دیگر باعث نمایش -1 خواهد شد.

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


    [WebService(Description=”Webservice for Stock Quote”,
    Namespace=”http://www.shojaee.com/”)]
    public class Service1: System.Web.Services.WebService
    {

    با استفاده از تگ WebMethod و صفت Description آن می‌توان توضیحاتی برای متدهای تعریف شده در وب‌سرویس به برنامه اضافه کرد. به عنوان مثال برای متد GetQuote می‌توان از دستور زیر استفاده کرد.

    [WebMethod(Description=”A simple method for getting Stock Quote. Submit good1 else get -1”)]

    خروجی برنامه بعد از تغییرات فوق به صورت زیر خواهد بود.

    خروجی اجرای وب‌سرویس پس از افزودن تگ‌های WebMethod و WebService


    تولید یک مشتری برای وب‌سرویس
    مشتری وب‌سرویس می‌تواند یک صفحه وب‌ باشد یا یک برنامه کاربردی که در حقیقت از متدهای تعریف شده در وب‌سرویس استفاده می‌کنند. در ادامه یک برنامه تحت ویندوز ایجاد خواهیم کرد که از متد وب‌سرویسی که توسعه داده‌ایم استفاده خواهد کرد. برای استفاده از وب‌سرویس از طریق یک برنامه تحت ویندوز، Visual Studio.NET را باز کنید. در پنجره New Project گزینه Widows Application را انتخاب کنید. شکل زیر نحوه انتخاب درست را نمایش می‌دهد.

    ایجاد یک مشتری تحت ویندوز برای وب‌سرویس

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

    طراحی ظاهر برنامه تحت ویندوز

    حال در پنجره Solution Explorer بر روی پوشه References کلیک سمت راست کرده و گزینه Add Web Reference را انتخاب نمایید. در پنجره‌ای که ظاهر می‌شود باید URL مربوط به فایل WSDL وب‌سرویس را وارد کرده و کلید Enter را فشار دهید تا محتویات فایل WSDL وب‌سرویس در همان پنجره نمایش داده شود. حال دکمه Add Reference را انتخاب کنید. شکل زیر نمایشی از این پنجره را بر روی کامپیوتر من نمایش می‌دهد.

    نحوه اضافه کردن یک ارجاع به وب‌سرویس

    حال می‌توان عمل کدنویسی برنامه را انجام داد. بر روی دکمه Get Quote در برنامه دوبار کلیک کنید. با اینکار قسمتی از کد برنامه که مربوط به رویداد کلیک‌کردن دکمه است، نمایش داده خواهد شد. در این قسمت باید متنی که کاربر در جعبه متنی اول وارد کرده است را به عنوان پارامتر ورودی به متد GetQuote از وب‌سرویس ارسال کند و سپس نتیجه اجرای متد را در جعبه متنی دوم نمایش دهد. همانطور که در هنگام ایجاد مثال‌ وب‌سرویس دیدیم، نامی که برای کلاس وب‌سرویس انتخاب شد، Service1 می‌باشد و GetQuote در حقیقت یک متد از این کلاس می‌باشد. طبق روال عادی فراخوانی یک چنین متدی، ابتدا باید یک شئ از نوع کلاس Service1 ایجاد کنیم و سپس متد GetQuote از آن شئ را فراخوانی کنیم. در هنگام اضافه کردن ارجاع به وب‌سرویس در شکل بالا، یک پوشه جدید به پنجره Solution Explorer با عنوان Web References اضافه می‌شود. در داخل این پوشه، پوشه دیگری اضافه شده است که حاوی فایل WSDL مربوط به همان کلاس Service1 می‌باشد. نام این پوشه مشخص‌کننده نام کلاسی است که باید در برنامه، یک شئ از آن ساخته شود. نام این پوشه در کامپیوتر من localhost است و بنابراین نام کلاس مربوط به وب‌سرویس بر روی کامپیوتر من localhost.Service1 خواهد بود. با توضیحات داده شده، کدی مشابه زیر، باید در رویداد onClick مربوط به دکمه Get Quote نوشته شد.

    localhost.Service1 obj1=new localhost.Service1();
    textBox2.Text = obj1.GetQuote(textBox1.Text).ToString();

    حاصل اجرای برنامه به صورت زیر خواهد بود.

    اجرای برنامه تحت ویندوز که از وب‌سرویس استفاده می‌کند

    منبع:

    Brian Hochgurtel, Cross-Platform Web Services Using C# and Java, 2003.

    + نوشته شده در  پنجشنبه دهم مرداد 1387ساعت 15:47  توسط فرهاد  | 

    آشنایی با مقدمات وب سرویس

     

    آشنایی با مقدمات وب سرویس

    برنامه‌نویسی شئ‌گرا امکان استفاده مجدد از کدهای نوشته‌شده را در سیستم‌های مختلف با معماری‌های متفاوت بوجود آورد. یک برنامه‌نویس می‌تواند از کلاس‌های ایجاد شده توسط سایر برنامه‌نویسان استفاده کند و کدهای خود را نیز در قالب کلاس برای استفاده در اختیار آنها قرار دهد. اگر بخواهیم اغراق کنیم، می‌توان پیش‌بینی روزی را کرد که دیگر برنامه‌نویس نیازی به پیاده‌سازی کلاسی نخواهد داشت و تنها با جستجو در بین کلاس‌های موجود می‌تواند آنرا بدست آورد. به عنوان مثال، فرض کنید که یک برنامه‌نویس احتیاج به نوشتن کدی برای کار با تاریخ‌های شمسی و انجام تبدیل‌های مورد نیاز به تاریخ‌های دیگر مانند تاریخ میلادی یا قمری داشته باشد. این برنامه‌نویس ابتدا در مخزن کلاس‌ها جستجو می‌کند تا شاید بتواند کلاسی را پیدا کند که اینکار را انجام دهد. اگر قبلا چنین کلاسی نوشته نشده باشد، خودش شروع به کدنویسی آن می‌کند و سپس آنرا به مخزن کلاس‌ها اضافه می‌کند. از این به بعد، سایر برنامه‌نویسان با مراجعه به مخزن کلاس‌ها و یافتن این کلاس دیگر نیازی به کدنویسی نخواهند داشت.
    برخی از شرکت‌هایی که در زمینه زبان‌های برنامه‌نویسی فعالیت می‌کنند از همین ویژگی استفاده کرده‌اند و با فراهم کردن مجموعه‌ای از کلاس‌هایی که کاربرد زیادی داشته‌اند و اضافه‌کردن آنها به زبان‌های برنامه‌نویسی بر قدرت آن زبان افزوده‌اند. اینکار باعث می‌شود تا وقت برنامه‌نویس برای تکرار راه رفته دیگران به هدر نرود و همچنین او بتواند با تمرکز بر کار اصلی کیفیت آنرا بهبود بخشد. با مراجعه به همان مثال قبلی، برنامه‌نویسی که می‌خواهد یک سیستم مرخصی برای یک سازمان تولید کند دیگر نیازی به فکر کردن به کلاس تاریخ و نحوه کار با تاریخ‌ و ساعت نخواهد داشت. او مستقیم می‌تواند سراغ کار اصلی خود برود یعنی دنبال کردن نحوه گرفتن مرخصی در یک سازمان، بهبودهایی که می‌توان در آن لحاظ کرد، قابلیت‌هایی که باید در نرم‌افزار گنجانده شود و گزارشاتی که موردنیاز خواهد بود. با بوجود‌آمدن زبان‌های برنامه‌نویسی جدید مانند C# و جاوا، کتابخانه‌هایی که به میزان زیادی مورد استفاده بوده‌اند به عنوان بخشی از این زبان‌ها ارائه شده است.
    با این وجود، باید در نظر داشت که همیشه نمی‌توان از مخزن مرکزی استفاده کرد چون ممکن است کاری که می‌خواهیم انجام دهیم آنقدر خاص باشد که بتوان آنرا منحصربه‌فرد خواند. در مواردی قواعد و قوانین کاری می‌تواند از یک سازمان به سازمان دیگر فرق کند. در چنین مواردی که نمی‌توان کدی نوشت که همه بتوانند از آن استفاده کنند، تنها به کلاس‌های عمومی و پایه اکتفا می‌کنیم.
    دسترسی به کلاس‌ها و اشیاء موجود در مخزن را می‌توان در سطوح مختلفی انجام داد. در سطح اول، اشیاء موجود بر روی یک کامپیوتر تنها می‌توانند توسط برنامه‌هایی مورد استفاده قرار گیرند که بر روی همان کامپیوتر اجرا می‌شوند. به عنوان مثال، در شاخه Windows یک کامپیوتر فایل‌های DLL زیادی وجود دارد. این فایل‌های DLL کتابخانه‌هایی از توابعی هستند که می‌تواند توسط سایر برنامه‌ها مورد استفاده قرار گیرد. اگر جستجویی در شاخه Windows کامپیوتر خود برای عبارت *.dll انجام دهید، نتایج بدست‌آمده مشابه شکل زیر خواهد بود.

    نتیجه جستجوی *.dll در شاخه ویندوز



    هر کدام از این DLL حاوی اطلاعاتی است که برنامه‌های مختلف از آن برای ایجاد اشیاء موردنیاز خود استفاده می‌کنند. از آنجایی‌که DLLها در شاخه Windows قرار دارند، برنامه‌های مختلف می‌توانند براحتی آنها را پیدا کرده و مورد استفاده قرار دهند. از سوی دیگر، یک برنامه می‌تواند DLLهای خود را با کپی کردن آنها در این شاخه به اشتراک بگذارد. در ادامه، برای فهم بهتر مفاهیم کتابخانه، کلاس و شئ آنها را در قالب یک مثال C# مورد استفاده قرار می‌دهیم.

    کتابخانه‌ها(library) ، کلاس‌ها(class) و اشیاء(object)
    بهترین روش برای فهم مفاهیم کتابخانه، کلاس و شئ کار عملی با آنها می‌باشد. تا زمانیکه صحبت کردن در مورد این مفاهیم در حد حرف و تئوری باقی بماند، بعید است که بتوان درک درستی از آنها بدست آورد. در این قسمت، با استفاده از زبان C# یک کتابخانه ایجاد می‌کنیم.
    برنامه Visual Studio.NET را باز کنید. از منوی File، گزینه New و سپس Project را انتخاب کنید. Visual C# Projects را از سمت چپ پنجره New Project انتخاب کنید و از سمت راست Class Library را انتخاب کنید. یعنی شما می‌خواهید یک کتابخانه‌ای از کلاس‌ها با زبان C# ایجاد کنید. نام کتابخانه را من MyLibrary انتخاب کرده‌ام. دکمه OK را بزنید تا کد اولیه کتابخانه تولید شود. پنجره New Project برای این مثال، در شکل زیر نمایش داده شده است.

     پنجره New Project برای ایجاد کتابخانه‌ای از کلاس‌ها



    در کد تولید شده، یک فضای نام(namespace) با عنوان MyLibrary وجود دارد. چنانچه قبلا با C# کار کرده باشید با فضای نام و کاربرد آن آشنا خواهید بود ولی ما در این قسمت با فضای نام کاری نداریم. فضای نام در حقیقت یک شناسه واحدی است که از تداخل کلاس‌ها و متدها همنام در یک پروژه بزرگ جلوگیری می‌کند. این کتابخانه، تنها حاوی یک کلاس است که نام HelloClass را برای آن انتخاب کرده‌ایم. در داخل یک کلاس، متدی با عنوان SayHelloToIran اضافه کرده‌ایم.

    پس تا اینجا یک کتابخانه داریم و یک کلاس. این کلاس قابلیت این را دارد که با استفاده از تنها متد خود در کنسول خروجی به ایران سلام کند.

    using System;
    namespace MyLibrary
    {
    public class HelloClass
    {
    public void DisplayHelloIran()
    {
    Console.WriteLine(“Hello Iran!”);
    }
    }
    }

    این برنامه را با استفاده از Build Solution کمپایل کنید. نتیجه یک فایل DLL خواهد بود که در همان مسیر برنامه و در داخل شاخه BIN ایجاد خواهد شد.
    حال می‌خواهیم برنامه‌ای ایجاد کنیم که از این کتابخانه‌ای که تولید کرده‌ایم استفاده کند و یک شئ از روی تنها کلاس آن ایجاد کند و متد DisplayHelloIran را از آن فراخوانی کند. در حقیقت، حالا می‌خواهیم به سراغ شئ برویم. تا حالا با کتابخانه و کلاس آشنا شدیم. کدنویسی‌های مورد نیاز خود را در داخل کلاس قرار دادیم ولی هنوز چیزی در خروجی چاپ نشده است. عبارت Hello Iran! را وقتی می‌توان در خروجی نوست که که یک شئ از روی کلاس HelloClass ایجاد شود و سپس متد موردنظر آن شئ فراخوانی شود. در حقیقت، کلاس توانایی اجرا شدن ندارد، اشیاء هستند که روح در کالبد بی‌جان کلاس می‌دمند. ضمن اینکه خودشان قابلیت‌های کلاس را بدست می‌آورند پیکر بی‌جان او را همانطور رها می‌کنند تا بقیه اشیاء نیز اگر خواستند یک کپی از پیکر بی‌جان کلاس بگیرند و روح خود را در آن جاری کنند.
    دوباره از منوی File، New و سپس Project را انتخاب کنید. حالا در پنجره New Projects، Windows Application را انتخای کنید. برای آنکه برنامه محل فایل DLL را بداند، در پنجره Solution Explorer که به صورت پیش‌فرض در سمت راست صفحه وجود دارد، بر روی References کلیک سمت راست کرده و Add Reference را انتخاب کنید. سپس با استفاده از Browse محل فایل DLL مورد نظر را که در این مثال همان فایل MyLibrary.dll است را به برنامه معرفی کنید. پس از اینکار، پنجره Solution Explorer مشابه شکل زیر خواهد بود.

    کتابخانه MyLibrary به قسمت Referenceهای برنامه اضافه شده است



    حال که برنامه کتابخانه موردنظر ما را می‌شناسد، می‌توان از کلاس موجود در آن استفاده کرد و یک شئ تولید نمود. متد اصلی برنامه در C# متد main می‌باشد که در شروع برنامه دستورات داخل آن اجرا می‌شود. در این متد، یک شئ با نام hi از روی کلاس HelloClass ایجاد می‌کنیم و با فراخوانی متد DisplayHelloIran از آن عبارت Hello Iran! در خروجی نوشته خواهد شد.

    using System;
    using MyLibrary;
    namespace ConsoleApplication1
    {
    class Class1
    {
    static void Main(string[] args)
    {
    HelloClass hi = new HelloClass();
    hi.DisplayHelloIran();
    }
    }
    }



    استفاده از اشیاء راه دور(remote object)
    همانگونه که گفته شد، استفاده از اشیاء سطوح مختلفی دارد. گفتیم که اولین سطح این است که از اشیاء توسط برنامه‌هایی استفاده کنیم که در همان کامپیوتری اجرا می‌شوند که شئ هم وجود دارد. سازمانی را تصور کنید که صدها و شاید هزاران ایستگاه کاری(workstation) داشته باشد و برنامه‌هایی که بر روی آنها اجرا می‌شود از اشیائی استفاده می‌کنند که از کلاس‌ها و کتابخانه‌های مشترک ایجاد شده‌اند. بنابراین اگر بخواهیم در همان سطح اول باقی بمانیم باید کلیه کتابخانه‌های موردنیاز را بر روی کلیه ایستگاه‌های کاری کپی کنیم. اینکار دردسر زیادی را برای ما به‌همراه خواهد داشت. اگر تغییری در کدهای نوشته‌شده ایجاد شود باید کتابخانه‌های محلی کلیه کامپیوترهای سازمان را بروز کنیم. برای گذر از این مشکل، می‌توان کمی از سطح اول پا را فراتر گذاشت و با وارد شدن به سطح دوم، مفهوم شئ راه‌دور را مطرح کرد. اشیاء راه دور، اشیائی هستند که در یک کامپیوتر مرکزی ایجاد می‌شوند و سپس توسط کلیه کامپیوترهای موجود در شبکه می‌توانند مورد استفاده قرار گیرند. این شبکه می‌تواند شبکه اینترنت باشد.
    تکنولوژی‌های زیادی وجود دارد که امکان استفاده از اشیاء راه دور را در برنامه‌ها برای ما ممکن می‌سازند. از این میان می‌توان به COM، CORBA، RMI و RPC اشاره کرد. هرکدام از این روش‌ها را در ادامه همین فصل با جزیئات بیشتری بررسی خواهیم کرد. نتیجه استفاده از هر یک از این تکنولوژی‌ها این است که می‌توان کد نوشته‌شده را در یک محل تغییر داد و کلیه سیستم‌ها و برنامه‌های موجود در شبکه که از آن کد استفاده می‌کرده‌اند، فورا منطبق با تغییرات انجام‌شده کار خود را ادامه خواهند داد. شاید متوجه شده باشید که اشکال استفاده از اشیاء راه دور این است که در صورت بروز خطا در شئ راه دور، کلیه سیستم‌ها و برنامه‌ها دچار مشکل خواهند شد. شکل زیر نشان می‌دهد که چگونه یک شئ راه دور بین چندین برنامه به اشتراک گذاشته می‌شود.

     اشیاء راه دور می‌توانند در بین برنامه‌های مختلف به اشتراک گذاشته شوند

    رسیدن به هدف اشیاء راه دور و توسعه تکنولوژی مربوطه مشکل بوده است. پیاده‌سازی با استفاده از تکنولوژی CORBA علاوه بر اینکه کار زیادی لازم دارد، هزینه‌های بالایی نیز برای خرید یک ORB به‌همراه خواهد داشت. ORB سروری است که برنامه‌ها برای استفاده از اشیاء راه دور به آن نیاز دارند. علاوه بر این، تنها درصد کمی از برنامه‌نویسان به صورت حرفه‌ای با این تکنولوژی سروکار دارند و بنابراین یافتن یک متخصص در این زمینه کار سختی خواهد بود.
    COM و COM+ راه‌ حل ساده‌تری را برای استفاده از اشیاء راه دور ارائه کرده است. بسیاری از نرم‌افزارهای مورد نیاز آن از قبیل Visual Studio و Microsoft Transaction Server را می‌توان براحتی و با قیمت تقریبا پایینی بدست آورد. مشکل این تکنولوژی آن است که محدود به برنامه‌های تحت ویندوز می‌شود. بنابراین نمی‌توان از اشیاء راه دور در سیستم‌ عامل‌هایی از قبیل UNIX استفاده کرد. علاوه بر این، همانند CORBA برای استفاده از این تکنولوژی نیز نیروهای متخصصی موردنیاز می‌باشد که یافتن برنامه‌نویسانی در این سطح براحتی امکان‌پذیر نیست.
    تلاش‌های انجام شده برای دستیابی به یک تکنولوژی اشیاء راه دور که بتوان ساده‌تر آنرا پیاده‌سازی کرد و مورد استفاده قرار داد، به تکنولوژی‌های RMI و RPC منجر شد. این تکنولوژی‌ها در حقیقت سیستم‌های درخواست و پاسخ هستند و همانند یک صفحه وب عمل می‌کنند و اینکه آن صفحه وب چگونه به درخواست مرورگر پاسخ می‌دهد. مشکلی که در این تکنولوژی‌ها وجود دارد، نحوه پیاده‌سازی آن است که هر شرکتی از روش مخصوص به خود استفاده می‌کند. بنابراین امکان سازگاری بین کارهای انجام شده در شرکت‌های مختلف وجود ندارد. علاوه بر این، عدم وجود سازگاری در سطح پلاتفرم مانع از اقبال عمومی به استفاده از تکنولوژی اشیاء راه دور شده است.

    شروع وب‌سرویس‌ها و SOAP
    در اواخر دهه 1990، شرکت مایکروسافت به ضعف‌های موجود در تکنولوژی شئ راه دور خود یعنی COM و COM+ پی‌برد. وقتیکه آنها شروع به توسعه .NET کردند، متوجه شدند که تکنولوژی شئ راه دور آنها به چیزهای جدیدی نیاز دارد تا بتواند به موفقیت برسد.
    یکی از جنبه‌هایی که مایکروسافت برای تکنولوژی شئ راه دور خود نیاز داشت، عدم وابستگی آن به پلاتفرم بود. آنها یک استاندارد مبتنی بر XML ایجاد کردند و آنرا SOAP نامیدند. SOAP ترکیبی از یک سند XML و پروتکل استانداردی بود که بتواند در سطح اینترنت مورد استفاده قرار گیرد. SOAP می‌تواند از پروتکل‌های HTTP، FTP و SMTP برای انتقال داده استفاده نماید. توسعه‌دهندگان اغلب از این پروتکل‌ها با عنوان پشته پروتکل‌های وب‌سرویس نام می‌برند.
    پس از آنکه شرکت مایکروسافت استاندارد SOAP را تکمیل کرد، آنرا در اختیار کنسرسیوم وب جهانی( W3C) قرار داد تا این تکنولوژی به صورت متن-باز(open source) برای استفاده عموم در‌ دسترس قرار گیرد. کنسرسیوم وب جهانی آنرا به یک استاندارد رسمی تبدیل کرد، سایر شرکت‌ها شروع به توسعه تکنولوژی‌های شئ راه دور مشابه و سازگار با تکنولوژی ارائه شده توسط مایکروسافت نمودند. در حال حاضر، محصولات مبتنی بر وب‌سرویس که برای پلاتفرم‌هایی مانند UNIX یا AS400 نوشته شده است، سازگار با تکنولوژی‌‌های مایکروسافت هستند که بر روی نسخه‌های مختلف ویندوز در حال اجرا می‌باشد. دلیل این امر، استفاده مایکروسافت از تکنولوژی‌های استانداردی مانند XML و پروتکل‌های مختلفی می‌باشد که بر روی کلیه پلاتفرم‌ها وجود دارد.
    در حال حاضر، بسیاری از شرکت‌هایی که در زمینه زبان‌های برنامه‌نویسی فعالیت می‌کنند، محصولات خود را مبتنی بر تکنولوژی وب‌سرویس شرکت مایکروسافت ارائه می‌دهند. بزودی دیگر اهمیتی نخواهد داشت که شما از چه پلاتفرم یا زبانی استفاده می‌کنید. با استفاده از وب‌سرویس‌ها، شاید تکنولوژی اشیاء راه دور بتواند به آن هدف نهایی خود برسد زیرا وب‌سرویس‌ها هم استاندارد هستند و هم ساده و شرکت‌هایی که در زمینه زبان‌های برنامه‌نویسی فعالیت می‌کنند آنها را برای پیاده‌سازی راحت‌تر می‌کنند.
    قبل از ادامه بحث، مهم است که تفاوت میان دو مفهوم SOAP و وب‌سرویس را مشخص کنیم. SOAP پروتکلی است که برای انتقال داده بر روی اینترنت مورد استفاده قرار می‌گیرد. یک وب‌سرویس از SOAP استفاده می‌کند تا داده‌های مورد نظر خود را به یک برنامه یا صفحه وب انتقال دهد. به عنوان مثال، یک وب‌سرویس می‌تواند قیمت‌های سهام را در اختیار سایر برنامه‌ها قرار دهد، درحالیکه SOAP استانداردی است که با استفاده از آن می‌توان از وب‌سرویس قیمت سهام در پلاتفرم‌های مختلف استفاده نمود.

    واژه‌های اختصاری:

    DLL: Dynamic Link Library
    COM: Component Object Model
    CORBA: Common Object Request Brokerage
    RMI: Remote Method Invocation
    RPC: Remote Procedure Call
    ORB: Object Request Broker
    SOAP: Simple Object Access Protocol

    منبع:

    Brian Hochgurtel, Cross-Platform Web Services Using C# and Java, 2003.

    + نوشته شده در  پنجشنبه دهم مرداد 1387ساعت 15:41  توسط فرهاد  |