INGBM

گپ و گفتی پیرامون مهندسی نرم افزار و هوش مصنوعی

INGBM

گپ و گفتی پیرامون مهندسی نرم افزار و هوش مصنوعی

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

کلمات کلیدی
بایگانی

برنامه نویسی پیشرفته - چیستی و چرایی

يكشنبه, ۲ شهریور ۱۳۹۹، ۱۰:۱۸ ق.ظ

Advanced Programing

  1. Correctness (testing, debugging)
  2. Maintainable (object oriented methodology, coding style)
  3. Reusability (object orented)

(1)


در پست قبل به عنوان مقدمه به این پرداختیم که چرا نیاز به یک زبان برنامه نویسی داریم. بسیاری از ما قواعد یکی از زبانهای برنامه نویسی را بلد هستیم و برنامه هایی با اون نوشتیم، اما چرا نیازه که برنامه نویسی پیشرفته رو داشته باشیم؟! اساسا برنامه نویسی پیشرفته برای افزایش کیفیت (quality) کد در سه حوزه زیر تمرکز می کند: [1]

  • Correctness: کد واقعا اون کاری که بهش محول شده رو به درستی انجام بده برای این منظور نیاز هست تا با مفاهیم و تکنیک های Testing و Debugging آشنا بشیم.
  • Maintainable: یعنی کدمون این قابلیت رو داشته باشه که در آینده ویژگیهای جدیدی رو بهش اضافه کنیم یا ایرادات احتمالی رو برطرف کنیم. این ویژگی یک نیاز حیاتی هست و هر چقدر در این زمینه وقت بذاریم ضرر نمیکنیم، خصوصا در برنامه های بزرگ.
  • Reusability: در یک کلام یعنی بلد باشیم از کتابخانه های آماده استفاده کنیم و خودمون هم طوری کد بزنیم که بشه جاهای مختلف ازش استفاده کرد. متدولوژی شی گیرایی (object oreiented) این کمک رو به ما میکنه که کدی بنویسیم که بشه جاهای مختلف ازش استفاده کرد.

 

 

 

why Correctness?

اهمیت فاز تست - testing unit

(2)


نقص (defect) یعنی انحراف (deviation) نتیجه مورد انتظار(expected result) و واقعی(actual) در نرم افزار [2]. در فازهای تکمیل نرم افزار باید همواره از تطابق قابلیتهای نرم افزار با نیاز (انتظار) مشتری اطمینان پیدا کنیم. در نمودار بالا بر این تاکید شده که هر نقص در نرم افزار بلافاصله پس از ایجاد باید مرتفع شود. اگر این رفع نقص انجام نشه با گذر زمان به شدت هزینه تصحیح آن افزایش پیدا میکنه.

 

 

 

why Maintainable?

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

(3)


تصور کنید شخصی بعد از خرید یک ماشین از واحد خدمات پس از فروش کارخانه درخواست کند که «لطفا یک درب دیگر به ماشین بنده اضافه کنید!!» این نوع درخواستهای در بسیاری از صنایع و مهندسی ها خنده دار تلقی می شود ولی در مهندسی کامپیوتر یک امر کاملا رایج است[1]. یعنی در مهندسی کامپیوتر چیزی که تغییر نمی کنه، تغییر کردن برنامه است. والبته تغییر در نرم افزار مانند تغییر در یک ماشین نیازمند تغییر چرخه تولید و مشکلاتی از این قبیل نیست. اما به شدت هزینه بر است. و اگر کد کمی بهم ریخته باشد و مطابق متدولوژی مناسب مثل شی گرایی پیش نرفته باشد نا ممکن می شود. بنابراین بسیاری از بزرگان حوزه نرم افزار مثل Robert C. Martin معتقدند که برنامه نویسی یک هنر است. پس نیاز به دقت و ممارست دارد تا شیوه کدنویسی (coding style) ما پختگی و زیبایی لازم رو پیدا کند. (برای مطالعه بیشتر کتاب clean code رو پیشنهاد میکنم). بنابراین لازم است نرم افزار ما تمیز و مبتنی بر شی گرایی باشد. تا خود ما یا هر فرد دیگری که بعد از چند ماه یا چند سال مجدد کد را دید بتواند اولا به راحتی آن را بفهمد و ثانیا با اصلاح یک بخش از کد یا یک تابع خاص، کل برنامه بهم نریزد و نیاز به تغییر نداشته باشد.

 

 

why Reusability?

save software development time

کدی تولید کنیک که بشه چندجا ازش استفاده کنیم

(4)


اگر بتوانیم اولا از کتابخانه های آماده استفاده کنیم. ثانیا کدهایی که مینویسیم به گونه‌ای باشند که در قسمت های مختلف یک پروژه و پروژههای بعدی قابل استفاده باشند سرعت توسعه نرم افزار ما به شدت افزایش پیدا خواهد کرد و می توانیم در بازار رقابت کنیم [1].

 

 



منابع (ذکر منابع جهت حفظ حقوق عزیزان بوده هرچند کمی بر خلاف عرف رایج مقالات علمی انجام شده):
1. تدریس برنامه نویسی پیشرفته دکتر رامتین خسروی

2. سایت geeks for geeks

  • غلامرضا کوهنورد مقدم

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی