گشتاسب مظفریان – GMozafarian

مشاور و توسعه دهنده نرم افزار -Adviser and Software Developer

۵

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

به نام اهورامزدای پاک

  1. برنامه نویسی پودمانی یاپیمانه ای(Modular Programming): برنامه نویسی ماژولار یک تکنیک طراحی نرم افزار است که برنامه را به قسمت های کوچک تری به نام ماژول تقسیم میکند و هر قسمت از برنامه وظیفه ای را بره عهده دارد این تکنیک هم همانند روش های برنامه نویسی ساخت یافته و شئ گرا در پی سرعت بخشیدن و راحت تر کردن برنامه نویسی در دهه ۱۹۶۰ ارائه گزدید . امروزه نیز روش برنامه نویسی ماژولار برای توسعه نرم افزار ها استفاده میشود مثلا : برنامه را به تعدادی ماژول و یک هسته تقسیم می کنند و هسته برنامه را به صورت شئ گرا و ماژول ها را به صورت تلفیقی از روش ساخت یافته و شو گرا نوشته و البته از کلاس ها و توابع هسته برای کنترل برنامه استفاده می کنند …

۲- برنامه نویسی ساخت یافته (Structured Programming): برنامه نویسی ساخت یافته اصطلاحی کلی برای روش خاصی از برنامه‌نویسی است که برنامه ها را با جریان و طرح واضح و درجه ای از ساختار واحدی یا سلسله مراتبی تهیه می کند. از مزایای این روش برنامه نویسی، سهولت در حفظ و خوانایی آن برای برنامه نویسان می باشد. شیرازه ی برنامه‌نویسی ساخت یافته اجتناب از به وجود آمدن کد اسپاگتی (Spaghetti Code) (کدی که در نتیجه جریان به هم پیچیده برنامه، معمولا به دلیل استفاده بیش از حد یا نامتناسب عبارتهای GOTO یا JUMP پیش می آید)، می باشد. برنامه های کد اسپاگتی را سخت می توان خواند و ردیابی منبع مشکلات در آنها مشکل است. در دهه ۱۹۶۰ این مفهوم برای غلبه به مشکلاتی که Goto ایجاد کرده بود، ایجاد شد و قلب آن هم حفظ تمرکز و در عین حال شکستن کد به بخشهای قابل فهم بود. چیزی که به مرور به شئ گرایی، مؤلفه بنیاد و… رسید.

مفهوم روش شناسی ساخت یافته یا Structured programming Methodology

۱- اجرای پشت سر هم دستورات، استفاده از IF و استفاده از حلقه فرض می شود.

۲- در طراحی (بیشتر) طراحی بالا به پایین. Top-down.

۳- در مدل سازی مدل Jackson Structured Programming .

در دهه ۱۹۶۰ میلادی توسعه نرم افزار دچار مشکلات عدیده ای شد. در آن زمان سبک خاصی برای برنامه نویسی وجود نداشت و برنامه ها بدون هیچگونه ساختار خاصی نوشته می شدند. وجود دستور پرش (goto) نیز مشکلات بسیاری را برای فهم و درک برنامه توسط افراد دیگر ایجاد می کرد، چرا که جریان اجرای برنامه مرتبا دچار تغییر جهت شده و دنبال کردن آن دشوار می گردید. لذا نوشتن برنامه ها عملی بسیار زمان بر و پرهزینه شده بود و معمولا اشکال زدایی, اعمال تغییرات و گسترش برنامه ها بسیار مشکل بود. فعالیتهای پژوهشی در این دهه باعث بوجود آمدن سبک جدیدی از برنامه نویسی بنام روش ساختیافته گردید؛ روش منظمی که باعث ایجاد برنامه هایی کاملا واضح و خوانا گردید که اشکال زدایی و خطایابی آنها نیز بسیار ساده تر بود.

اصلی ترین نکته در این روش عدم استفاده از دستور پرش (goto) است. تحقیقات بوهم و ژاکوپینی نشان داد که می توان هر برنامه ای را بدون دستور پرش و فقط با استفاده از ۳ ساختار کنترلی ترتیب، انتخاب و تکرار نوشت.

  • ساختار ترتیب، همان اجرای دستورات بصورت متوالی (یکی پس از دیگری) است که کلیه زبانهای برنامه نویسی در حالت عادی بهمان صورت عمل می کنند.
  • ساختار انتخاب به برنامه نویس اجازه می دهد که براساس درستی یا نادرستی یک شرط، تصمیم بگیرد کدام مجموعه از دستورات اجرا شود.
  • ساختار تکرار نیز به برنامه نویسان اجازه می دهد مجموعه خاصی از دستورات را تا زمانیکه شرط خاصی برقرار باشد، تکرار نماید.

هر برنامه ساختیافته از تعدادی بلوک تشکیل می شود که این بلوکها به ترتیب اجرا می شوند تا برنامه خاتمه یابد(ساختار ترتیب). هر بلوک می تواند یک دستورساده مانند خواندن، نوشتن یا تخصیص مقدار به یک متغیر باشد و یا اینکه شامل دستوراتی باشد که یکی از ۳ ساختار فوق را پیاده سازی کنند. نکته مهم اینجاست که درمورد دستورات داخل هر بلوک نیز همین قوانین برقرار است و این دستورات می توانند از تعدادی بلوک به شرح فوق ایجاد شوند و تشکیل ساختارهایی مانند حلقه های تودرتو را دهند.
نکته مهم اینجاست که طبق قوانین فوق یک حلقه تکرار یا بطور کامل داخل حلقه تکرار دیگر است و یا بطور کامل خارج آن قرار می گیرد و هیچگاه حلقه های روی هم افتاده نخواهیم داشت.
از جمله اولین تلاشها در زمینه ساخت زبانهای برنامه نویسی ساختیافته، زبان پاسکال بود که توسط پروفسور نیکلاس ویرث در سال ۱۹۷۱ برای آموزش برنامه نویسی ساختیافته در محیطهای آموزشی ساخته شد و بسرعت در دانشگاهها رواج یافت. اما بدلیل نداشتن بسیاری از ویژگیهای مورد نیاز مراکز صنعتی و تجاری در بیرون دانشگاهها موفقیتی نیافت.
کمی بعد زبان C ارائه گردید که علاوه بر دارا بودن ویژگیهای برنامه نویسی ساختیافته بدلیل سرعت و کارایی بالا مقبولیتی همه گیر یافت و هم اکنون سالهاست که بعنوان بزرگترین زبان برنامه نویسی دنیا شناخته شده است.

 

 

۳- برنامه نویسی شئ گرا (Object Oriented Programming): برنامه‌نویسی شیءگرا یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی‌ها می‌باشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می‌کند. به این معنا که داده‌ها و توابعی که قرار است بر روی این داده‌ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع‌بندی شده و یک واحد (شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می‌شوند و از این طریق، توابع بیگانه خارج از آن شی، دیگر امکان ایجاد تغییر در داده‌های درون آن شی را ندارند. به طور مثال حساب بانکی شما که شامل مشخصات فردی شما و میزان سپرده شما در بانک است، تشکیل یک شی را می‌دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد. از دیگر ویژگی‌های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادیام‌های برنامه نویسی است.

 

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

۴- برنامه نویسی مؤلفه گرا (Component Oriented Programming): برخی اوقاتCOP و CBSE در نوشتار با همدیگر اشتباه گرفته می شوند . هر چند که CBSE یک مفهوم کلی است در صورتیکه  COP  فقط یه عنوان قسمتی از CBSE به کار برده می شود.

  •  CBSE= COA+COD+COP+COM
  • COA : Component Oriented Analysis
  • COD : Component Oriented Design
  • COP :  Component Oriented  Programming
  • COM : Component Oriented  Management

COA ، COD ، COM به ترتیب  نشان دهنده تحلیل مبتنی بر مولفه ، طراحی مبتنی بر مولفه و مدیریت مبتنی بر مولفه می باشند . CBSE ، به تسریع کردن توسعه نرم افزار و کاهش دادن هزینه سیستم با ترکیب نمودن مولفه های نرم افزاری از پیش ساخته شده تاکید دارد .  طراحی ، توسعه و نگهداری مولفه ها ، برای استفاده مجدد فرآیند پیچیده ای است . CBSE شیوه های مهندسی نرم افزار و تکنیکهای مختلف نرم افزار  را پوشش می دهد چه از نظر عملی و چه از دیدگاه تئوریک که هنوز هم به طور کامل تعریف و توسعه نیافته اند.

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

دو نوع اصلی از فعالیتها در CBSE وجود دارند :

DF ( Developing For reuse)  : توسعه برای استفاده مجدد.

DW ( Developing Withr reuse)  : توسعه با استفاده مجدد.

برای DF ، فعالیت توسعه می تواند با دنبال نمودن رویکردها یا دیدگاههای مهندسی نرم افزار سنتی تاکید بر استانداردهای مولفه ای سازماندهی گردد. برای نمونه هر مولفه ارائه کننده  در برگیرنده دو نوع واسط می باشد :

واسط تامیین کننده : که خدمات ارائه شده توسط مولفه را تعریف می کند.

واسط مورد نیاز (ضروری ): که مشخص می کند سیستم استفاده کننده از مولفه ، چه خدماتی را باید ارائه کند.

اگر این واسطها مهیا نشوند ،مولفه کار نخواهد کرد . برای DW  ، جستجو و بازیابی مولفه نرم افزار ، فعالیتهای تعیین کننده ای برای ساختن برنامه کاربردی دارند.

از دیدگاه فرآیند مهندسی نرم افزار ، مولفه ها می توانند به ۵ فرم مختلف طبقه بندی شوند ( یعنی مولفه در طی گذراندن ۵  مرحله  حاصل می شود ):

  1. مشخصه (ویژگی ) مولفه : این فرم مشخصه (ویژگی ) یک واحد نرم افزاری را ارائه میکند که رفتار مجموعه ای از اشیا مولفه ای را توصیف می کند و یک واحد پیاده سازی را تعریف می کند. رفتار به عنوان یک مجموعه از واسطها تعریف می شود مشخصات مولفه نهایتا در غالب پیاده سازی مولفه خواهد بود.
  2. واسط مولفه : فرم واسط تعریفی از مجموعه رفتارهای مولفه را ارائه می کند که می توانند توسط اشیا مولفه ای ارائه شوند.
  3. پیاده سازی مولفه : پیاده سازی مـولفه شکـلی از مـشخصه (ویژگی ) مولفه می باشد. این بدین معنی است که می توانند به طور مستقل جایگزین دیگر مولفه ها شده و نصب گردد. آن بدین معنی نیست که مولفه مستقل از دیگر مولفه هاست .بلکه ممکن است وابستگیهای زیادی داشته باشد.
  4. مولفه نصب شده : فرم نصب شده که یک نسخه نصب شده یا توسعه یافته از پیاده سازی مولفه می باشد کـه با مستقر کـردن آن در مـحیط اجـرایی تـوسعـه می یابد.استقرار مولفه در محیط اجرائیش ، محیط اجرایی را قادر به شناسایی مولفه نصب شده برای استفاده از آن می کند .
  5. شی مولفه ای : نمونه ای از مولفه نصب شده می باشد . مشابه OOP یک شی مولفه در COP یک شی با داده ها و مـشخصات ( ویـژگیها ی) منحصر به فرد می باشد ، که رفتار پیاده سازی شده را اجرا می کند یک مولفه نصب شده ممکن است چند شی مولفـه ای داشته باشد کـه نیازمـند ویـژگیهای صـریح و روشن می باشد.

۵- برنامه نویسی جنبه گرا (Aspect Oriented Programming): برنامه‌نویسی جنبه‌گرا روشی برای برنامه‌نویسی است که پس از برنامه و برای رفع مشکلات آن به وجود آمد. هدف از برنامه نویسی جنبه‌گرا، مستقل کردن وظایف (در قالب ماژول‌ها) است به طوری که کمترین تداخل را در یکدیگر داشته باشند تا نهایتاً بتوان از آنها برای برنامه‌های دیگر است. برای مثال وظیفهٔ اهراز هویت در یک برنامه را می‌توان به عنوان یک جنبه در نظر گرفت و ماژول جداگانه‌ای برای آن ساخت تا از این پس در تمام پروژه‌های مشابه بتوان از آن استفاده کرد. بیشتر زبان‌های برنامه‌نویسی، از برنامه‌نویسی جنبه‌گرا پشتیبانی خوبی به عمل می‌آورند. می‌توان از آن جمله به جاوا و روش AspectJ اشاره کرد. برنامه‌نویسی جنبه‌گرا، ارتباط تنگاتنگ و نزدیکی با دارد ولی دو مفهوم متفاوت هستند. به عنوان مثال اگر برنامه ای نوشته اید که از ماژول های مختلفی تشکیل شده است و حال می خواهید تمام پرس و جو های پایگاه داده را در محلی ذخیره نموده و گزارشی تهیه نمایید. بدون استفاده از برنامه نویسی جنبه گرا بایستی در هر ماژول توابع جدید افزوده شوند و در تمام ماژول ها ممکن است بخشی از کد تکرار شود. اما با استفاده از برنامه نویسی جنبه گرا شما می توانید بدون اینکه در ماژول های دیگر تغییری ایجاد کنید یک ماژول دیگر بنویسید تا به صورت خودکار در ماژول های دیگر فراخوانی شده و اجرا شود. در این راستا امکان تنظیم اینکه هر متد در ماژول جدید در کدام قسمت از هر متد در ماژول های دیگر اجرا شود وجود دارد. شما میتوانید بعد از اتمام اجرای بدنه کد در تمام متد های ماژول های دیگر, متدی با نام LogQuery را از ماژول جدید اجرا نمایید. بدون اینکه کد جدیدی به متد ها افزوده شود.

۶- برنامه نویسی عامل گرا (َAgent Oriented Programming):

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

گ.م

پست های مرتبط

لینک کوتاه: http://GMozafarian.ir/Jbajy
؟AgentAgent OrientedAgent Oriented ProgrammingAspectAspect OrientedAspect Oriented ProgrammingCBSECOACODCOMComponentComponent OrientedComponent Oriented AnalysisComponent Oriented DesignComponent Oriented ManagementComponent Oriented ProgrammingDeveloping For reuseDeveloping Withr reuseDWModularModular ProgrammingObjectObject OrientedObject Oriented ProgrammingOrientedStructuredStructured Programmingآبجکتبرنامهبرنامه نویسیبرنامه نویسی پودمانیبرنامه نویسی پیمانه ایبرنامه نویسی جنبه گرابرنامه نویسی جنبه گرا چیست >برنامه نویسی ساخت یافتهبرنامه نویسی شئ گرابرنامه نویسی شئ گرا چیست ؟برنامه نویسی عامل گرابرنامه نویسی عامل گرا چیست ؟برنامه نویسی عامل گرا چیست >برنامه نویسی مادولاربرنامه نویسی مادولار چیست ؟برنامه نویسی ماژولاربرنامه نویسی مولفه گرابرنامه نویسی مولفه گرا چیست ؟پودمانیپیمانه ایجنبهجنبه گراچیست ؟روشروش برنامه نویسیروش برنامه نویسی جنبه گراروش برنامه نویسی عامل گراروش برنامه نویسی ماژولار چیست ؟روش برنامه نویسی مولفه گراروش ساخت یافتهروشپساختساخت یافتهشئشئ گراشئ گرا چیست ؟طراحیطراحی نرم افزارعاملعامل گرامادولارماژولارمولفهمولفه گرانرم افزارنویسییافته

گشتاسب مظفریان گشتاسب مظفریان • شهریور ۱۶, ۱۳۹۴


پست‌های قبلی

پست‌های بعدی

Comments

  1. ley آبان ۲, ۱۳۹۴ - ۴:۰۵ ب.ظ Reply

    با سلام وخسته نباشید
    میخواستم بدونم درباره این روش های برنامه نویسی اطلاعات بیشتری ندارید ؟مثل قابلیت استفاده در سیستم عامل های مختلف یا
    پشتیبانی محیط های توسعه پیشرفته مثل ویژوال استودیو از آن
    برای مقاله ام میخوام لطفا زود جوابمو بدید ممنون

    • گشتاسب مظفریان

      گشتاسب مظفریان آبان ۳, ۱۳۹۴ - ۶:۳۰ ق.ظ Reply

      درود
      دقیقا کدوم روش بعضی از روش ها به صورت کامل پشتیبانی میشن و برای بعضی از روش ها هم حتما باید افزونه ها یا کامپایلر های خاصی استفاده بشه ….

  2. حمیدرضا دی ۱, ۱۳۹۵ - ۶:۳۳ ب.ظ Reply

    با تشکر از زحمات شما …سپاسگزاریم…

  3. امیر محمد بهمن ۱۷, ۱۳۹۵ - ۳:۰۴ ب.ظ Reply

    به نظرم شروع نوشته با “به نام اهورا مزدای پاک” یکی از مزخرف ترین موضوعاتی بود که دیدم.

    • علیرضا تیر ۵, ۱۳۹۶ - ۱۲:۱۲ ق.ظ Reply

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

پاسخ دهید

Your email address will not be published / Required fields are marked *