وبلاگ جوجه مهندس ها

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

وبلاگ جوجه مهندس ها

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

من که شاخ در آوردم!!

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

مرکز مشاوره : چه نوع کامپیوتری دارید؟
مشتری : یک کامپیوتر سفید...
*
مشتری : سلام، من «سلین» هستم. نمی تونم دیسکتم رو دربیارم
مرکز : سعی کردین دکمه رو فشار بدین؟
مشتری : آره، ولی اون واقعاً گیر کرده
مرکز : این خوب نیست، من یک یادداشت آماده می کنم...
مشتری : نه ... صبر کن ... من هنوز نذاشتمش تو درایو ... هنوز روی میزمه .. ببخشید ...
*
مرکز : روی آیکن My Computer در سمت چپ صفحه کلیک کن.
مشتری : سمت چپ شما یا سمت من؟
*
مرکز : روز خوش، چه کمکی از من برمیاد؟
مشتری : سلام ... من نمی تونم پرینت کنم.
مرکز : میشه لطفاً روی Start کلیک کنید و ...
مشتری : وش کن رفیق؛ برای من اصطلاحات فنی نیار! من بیل گیتس نیستم، لعنتی!
*
مشتری : سلام، عصرتون بخیر، من مارتا هستم، نمی تونم پرینت بگیرم. هر دفعه سعی می کنم می گه : «نمی تونم پرینتر رو یدا کنم» من حتی پرینتر رو بلند کردم و جلوی مانیتور گذاشتم ، اما کامپیوتر هنوز می گه نمی تونه پیداش کنه...
*
مشتری : من توی پرینت گرفتن با رنگ قرمز مشکل دارم...
مرکز : آیا شما پرینتر رنگی دارید؟
مشتری : نه.
*
مرکز : الآن روی مانیتورتون چیه خانوم؟
مشتری : یه خرس Teddy که دوست پسرم از سو پرمارکت برام خریده.
*
مرکز : و الآن F8 رو بزنین.
مشتری : کار نمی کنه.
مرکز : دقیقاً چه کار کردین؟
مشتری : من کلید F رو 8 بار فشار دادم همونطور که بهم گفتید، ولی هیچ اتفاقی نمی افته...
*
مشتری : کیبورد من دیگه کار نمی کنه.
مرکز : مطمئنید که به کامپیوترتون وصله؟
مشتری : نه، من نمی تونم پشت کامپیوتر برم.
مرکز : کیبوردتون رو بردارید و 10 قدم به عقب برید.
مشتری : باشه.
مرکز : کیبورد با شما اومد؟
مشتری : بله
مرکز : این یعنی کیبورد وصل نیست. کیبورد دیگه ای اونجا نیست؟
مشتری : چرا، یکی دیگه اینجا هست. اوه ... اون یکی کار می کنه!
*
مرکز : رمز عبور شما حرف کو ک a مثل apple، و حرف بزرگ V مثل Victor، و عدد 7 هست.
مشتری : اون 7 هم با حروف بزرگه؟
*
یک مشتری نمی تونه به اینترنت وصل بشه...
مرکز : شما مطمئنید رمز درست رو به کار بردید؟
مشتری : بله مطمئنم. من دیدم همکارم این کار رو کرد.
مرکز : میشه به من بگید رمز عبور چی بود؟
مشتری : پنج تا ستاره.
*
مرکز : چه برنامه آنتی ویروسی استفاده می کنید؟
مشتری :   .Netscape
مرکز : اون برنامه آنتی ویروس نیست.
مشتری : اوه، ببخشید... Internet Explorer
*
مشتری : من یک مشکل بزرگ دارم. یکی از دوستام یک Screensaver روی کامپیوترم گذاشته، ولی هربار که ماوس رو حرکت میدم، غیب میشه!
*
مرکز : مرکز خدمات شرکت مایکروسافت، می تونم کمکتون کنم؟
مشتری : عصرتون بخیر! من بیش از 4 ساعت برای شما صبر کردم. میشه لطفاً بگید چه قدر طول میکشه قبل از اینکه بتونین کمکم کنید؟
مرکز : آآه..؟ ببخشید، من متوجه مشکلتون نشدم؟
مشتری : من داشتم توی Word کار می کردم و دکمه Help رو کلیک کردم بیش از 4 ساعت قبل. میشه بگید کی بالاخره کمکم می کنید؟
*
مرکز : چه کمکی از من برمیاد؟
مشتری : من دارم اولین ایمیلم رو می نویسم.
مرکز : خوب، و چه مشکلی وجود داره؟
مشتری : خوب، من حرف a رو دارم، اما چه طوری دورش دایره بذارم؟

کرم یا ویروس ، مسئله این است!!

در RFC 1135(Request For Comments)  که تفاوت بین ویروس و کرم رو تشریح کرده تعریف زیر برای ویروس آمده :
" یک ویروس یک قطعه کد است که خودش را درون یک هاست در سیستم عامل جا می دهد تا خود را انتشار دهد . به طور مستقل نمی تواند اجرا شود. نیاز به اجرای هاستش دارد تا او را فعال کند."
به طور کلی ویروس ها یک فاز سرایت دارند که خودشون رو تکثیر می کنند و یک فاز حمله دارند که هر کاری دلشون می خواد می کنند و بلاهای خانمان سوزی رو بر سر شما و کامپیوتر زبون بسته میارن.(البته با توجه به نوع برنامه ای که برای اون ها نوشته شده.) . معمولا هم بدون اجازه و آگاهی شما تکثیر می شن .
اگر بخواهیم یک تعریف از ویروس ارائه بدیم :
یک ویروس یک برنامه است که با کد خودش ، خودش رو از طریق متصل شدن به دیگر فایلهای اجرائی تکثیر میکنه و  در این حالت کد ویروس با هر بار اجرای اون فایل اجرائی ، اجرا میشه.
منظور از یک فایل اجرائی میتونه یک فایل EXE  و یا COM و یا چیزی مثل بعضی از ماکروها در Microsoft Word .
و منظور از متصل شدن ویروس به برنامه اضافه شدن اون به انتهای برنامه ، یا جایگرفتن در وسط برنامه و یا قراردادن یک اشاره گر درون فایل به آدرس ویروس که میتونه در هر جائی از هارد دیسک شما باشه.
اکثر ویروس ها کار خودشون رو با جایگزاری کد خود به جای یک قطعه از کد برنامه های دیگه انجام میدن.
اگه بخواهیم از یک جنبه دیگه به ویروس ها نگاه کنیم ، میشه ویروس ها رو برنامه هائی در نظر گرفت که نوشته میشن تا تعداد زیادی کپی از خودشون بسازند. این گونه از ویروس ها خودشون رو با متصل کردن به برنامه های مختلف تکثیر می کنند.و به محض اجرای برنامه آلوده کد مخرب ویروس اجرا شده و به هر برنامه دیگری که بتونه خودش رو متصل می کنه.

کرم هم خیلی شبیه به ویروسه. با این تفاوت که دوباره از خودش تولید نمی کنه. به جای اون تنها بین سیستم ها خودش رو انتشار میده و نوعا تنها در حافظه وجود دارد.کرم ها معمولا بر روی شبکه ها و سیستم عامل های چندپردازنده ای دیده می شوند . کپی های قابل اجرا از خودش رو تولید می کنه و هر کپی جدید دوباره کپی های دیگری رو میسازه که به سرعت باعث کند شدن و گاهی از کار افتادن کل سیستم میشه.
RFC 1135 کرم رو به صورت زیر توصیف کرده: 
"کرم یک برنامه است که می تواند به طور مستقل اجرا شود . منابع هاستش را مصرف کرده و آن ها را به منظور نگهداری از خویش، تحلیل می دهد و می تواند یک نسخه کامل اجرائی از خودش را بر روی ماشین های دیگر انتشار دهد."

بنابراین کرم قطعه کدی است که خودش رو بین هاست های مختلف انتشار میده و ویروس قطعه کدی است که تنها بر روی یک هاست خودش رو انتشار میده.
برنامه هائی هم هستند که هر دو کار را انجام میدن که میشه به اون ها ویروس/کرم گفت.

 

آشنائی با مدل معماری لایه ای

مدل معماری لایه ای از چند لایه به شکل زیر تشکیل شده:

 

Architecture

 

 Presentation Layer(PL) یا لایه واسط کاربری

 

این لایه ، لایه ایست که کاربر مستقیما با آن سروکار دارد و خود از دو مولفه تشکیل شده :

  1. UI Component : یا مولفه های واسط کاربری که دقیقا همان فرمهائی است که کاربر سیستم آن ها را می بیند .
  2. UI Process Component : محاسبات و عملیاتی که برای تهیه فرم ها و محتوای نمایشی فرم ها انجام می شود در این قسمت گنجانده می شود.

اگر با مفهوم User Experience Model در تحلیل و طراحی شیء گرا آشنا باشید story board  همان UI Component و navigation map همان UI Process Component را شامل می شود.

 

Business Logic Layer(BLL)

نرم افزارهائی قدرتمند هستند که مستقل از لایه واسط کاربری بتوانند به ارائه سرویس بپردازند. اگر درخواستی از مولفه دیگری در یک سازمان که نرم افزار ما در آن نصب و راه اندازی شده وارد سیستم ما شود ، سیستم باید توانائی پاسخگوئی به آن را داشته باشد . مسائلی از این قبیل در بخش service interface راه اندازی می شود.

سطح بعدی در BLL شامل سه قسمت اصلی است :

  1. Business Entity
  2. Business Component
  3. Business Workflow

 

موارد دیگری که باید در BLL قرار گیرند عبارتند از :

  • Object ها
  • ارتباط میان اشیاء
  • قواعد و فرایند ها
  • رویه و ترتیب انجام کارها

که Object ها در قسمت Business Entity ، ارتباط میان اشیا ، قواعد و فرایند ها در قسمت Business Component و رویه و ترتیب انجام کارها در قسمت Business Workflow جای می گیرند.

 

Data Access Layer

ارتباط application  با داده ها و data base در لایه Data Access Layer انجام می گیرد. و نتیجه حاصل در اختیار لایه های بالاتر و یا سیستم های دیگر قرار می گیرد. داده هائی که یک application از آن ها استفاده می کند می تواند توسط خود سیستم نگهداری شود و یا از داده هائی باشد که در سیستم ها و application های دیگر تولید و نگهداری می شود .

Service Gateway قسمتی است که سرویسی را از لایه BLL در جای دیگر فراخوانی می کنیم .

 

 

به طور خلاصه، فرآیند مورد نظر ما این گونه کار می کند:

  • کاربر برای داده های برنامه درخواستی ارسال می کند.
  •  لایه Data Access داده های مورد نظر را بازیابی می کند و از طریق لایه Business Logic آن ها را به لایه نمایش می فرستد.بعضی مواقع لایه دسترسی به داده ها، این داده ها را مستقیما به لایه نمایش ارسال می کند.
  •  لایه نمایش اطلاعاتی که باید نمایش داده شوند را از طریق لایه Business Logic دریافت می کند.
  •  کاربر داده ها را تغییر می دهد و عمل مناسب در مورد آن ها را اجرا می کند ( مثل اضافه یا به روز کردن داده ها)
  •  لایه Business Logic صحت داده های وارد شده توسط کاربر را بررسی می کند ( داده ها را اعتبار سنجی می کند)
  •  اگر داده ها معتبر باشند آن ها را برای به روز رسانی در بانک اطلاعاتی به دست لایه دسترسی به داده می سپارد.

 

مزیت های استفاده از معماری لایه ای

  • برنامه ها به چند بخش منطقی جدا از هم تقسیم می شوند و اتصال میان UI ( رابط کاربری ) ، پردازش ها و بانک اطلاعاتی کم می شود.
  •  تغییر در بانک اطلاعاتی یا روال های دسترسی به داده ها تاثیری در لایه نمایش یا برنامه کلاینت نخواهد گذاشت.
  •  برنامه کلاینت با عبارات SQL آمیخته نخواهد شد.
  •  نام جداول و ستون ها به طور موثری از برنامه کلاینت حذف می شوند.
  •  برنامه کلاینت نمی فهمد که داده ها از کجا آمده اند ( چیزی که به آن location transparency گفته می شود)
  •  تغییر یا گسترش برنامه بسیار ساده تر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامه کلاینت.

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

 

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

1.       لایه های بالائی نتوانند مستقیما به داده ها دسترسی داشته باشند

2.       از لایه BLL به بالاتر به نوعData Base وابستگی نداشته باشد.

3.       و اگر بخواهیم تکنولوژی مورد استفاده در یک لایه را تغییر دهیم ، نیاز به تغییر در هیچ یک از لایه های دیگر نیست.

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