زنگ

کسانی هستند که این خبر را قبل از شما می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید The Bell را بخوانید
بدون اسپم

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

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

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

    نتایج مورد انتظار باید قبل از آزمایش مشخص شود.

    از آزمایش برنامه توسط نویسنده باید اجتناب شود؛

    لازم است که نتایج هر آزمون را به طور کامل مطالعه کنید.

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

    لازم است برنامه را برای عوارض جانبی غیر منتظره بر روی داده های نادرست بررسی کنید.

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

دو شکل اساساً متفاوت برای تشکیل مجموعه های آزمایشی وجود دارد: ساختاری و عملکردی. رویکرد ساختاری بر اساس ساختار شناخته شده نرم افزار تست شده ، از جمله الگوریتم های آن (" جعبه شیشه ای") تست هایی برای بررسی صحت اجرای منطق داده شده در کد برنامه ساخته شده است. عملکردییک رویکرد براساس این واقعیت است که ساختار نرم افزار شناخته شده نیست (" جعبه سیاه") در این حالت ، آزمایش ها بر اساس مشخصات عملکردی ساخته می شوند. این رویکرد نیز نامیده می شود یک رویکرد مبتنی بر داده از آنجا که هنگام استفاده از آن ، آزمایشات بر اساس روشهای مختلف تجزیه مجموعه ای از داده ها ساخته می شوند. مجموعه های تست به دست آمده از این رویکردها برای ارائه تست جامع نرم افزار ترکیب شده اند.

کنترل دستی مورد استفاده در مراحل اولیه توسعه کلیه تصمیمات طراحی از نظر صحت و مناسب بودن در اسرع وقت مورد تجزیه و تحلیل قرار می گیرند ، در حالی که به راحتی قابل تجدید نظر هستند. تمیز دادن ایستا و پویا رویکردهای کنترل دستی. با استاتیک رویکرد ، ساختار ، کنترل و اتصالات اطلاعاتی برنامه ، داده های ورودی و خروجی آن تجزیه و تحلیل می شود. چه زمانی پویا- انجام دادن تست دستی(دستیابی به روند اجرای برنامه بر روی داده های اولیه داده شده شبیه سازی کنید). داده های اولیه برای این گونه چک ها عبارتند از: مشخصات فنی ، مشخصات ، نمودارهای ساختاری و کاربردی محصول نرم افزار ، نمودارهای اجزای جداگانه و برای مراحل بعدی - الگوریتم ها و متون برنامه و همچنین مجموعه های تست. ثابت شده است که کنترل دستی به افزایش قابل توجهی در بهره وری و قابلیت اطمینان برنامه ها کمک می کند و می تواند از یافتن 30 تا 70 درصد خطاهای طراحی منطقی و رمزگذاری کمک کند. روشهای اصلی کنترل دستی عبارتند از: بازرسی کد منبع, نمایش پایان به پایان, در جدول بررسی کنید, ارزیابی برنامه.

در قلب آزمایش ساختاری مفهوم کامل ترین آزمایش از همه نهفته است مسیرهاارائه شده توسط الگوریتم (دنباله ای از بیانیه های برنامه اجرا شده برای نسخه خاص از داده های اولیه). معایب: مجموعه آزمون ساخته شده مسیرها و خطاهایی را که به داده های جاسازی شده وابسته نیستند ، تشخیص نمی دهند. تضمین نکنید که برنامه صحیح است.

راه دیگر برای بررسی برنامه ها این است عملکردی آزمایش کردن: برنامه به صورت " جعبه سیاه"، هدف از آزمایش این است که دریابیم که رفتار برنامه با مشخصات مطابقت ندارد. برای یافتن همه خطاها ، باید اجرا کنید جامعتست (با تمام مجموعه های داده ممکن) ، که در اکثر موارد غیرممکن است. بنابراین ، آنها معمولاً " معقول" یا " قابل قبول»آزمایش محدود به اجرای برنامه روی یک زیر مجموعه کوچک از تمام ورودی های ممکن است. در آزمایش عملکردی ، روش های زیر در شکل گیری موارد آزمون از هم متمایز می شوند: پارتیشن معادل; تجزیه و تحلیل ارزش مرزی; تحلیل علّی; حدس خطا.

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

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

اشکال زدایی فرایندی است بومی سازی (تعیین اپراتور برنامه ، اجرای آن باعث نقض فرایند محاسباتی) و تصحیح خطاهای موجود در هنگام تست نرم افزار. برای رفع خطا ، باید علت آن را تعیین کنید. اشکال زدایی نیاز به یک برنامه نویس دارد که از ویژگی های مدیریت سخت افزار مورد استفاده ، سیستم عامل ، محیط و زبان برنامه نویسی ، فرآیندهای در حال اجرا ، ماهیت و مشخصات خطاها ، تکنیک های اشکال زدایی و نرم افزار مربوطه آگاهی عمیقی داشته باشد. از نظر روانشناختی ناراحت کننده است (باید در مدت زمان محدود به دنبال اشتباهات خود باشید)؛ امکان تأثیر متقابل خطاها را در بخش های مختلف برنامه باقی می گذارد. هیچ روش اشکال زدایی به خوبی تعریف نشده وجود دارد. تمیز دادن:

    خطاهای نحوی- همراه با نظری که محل سکونت آنها را مشخص کند ، هنگام انجام تجزیه و تحلیل نحوی و جزئی معنایی توسط کامپایلر (مترجم) ثابت شود.

    خطاهای طرح- در هنگام ادغام ماژول های برنامه توسط لینک دهنده (پیوند دهنده) یافت.

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

    خطاهای تعریف داده منبع (خطاهای انتقال ، خطاهای تبدیل ، خطاهای بازنویسی و خطاهای داده)

    خطاهای طراحی منطقی (روش غیر قابل استفاده ، الگوریتم نادرست ، ساختار داده های نادرست ، دیگران) و رمزگذاری (خطاهای نادرست با استفاده از متغیرها، محاسبات ، رابط بین ماژول ، اجرای الگوریتم ، دیگران)؛

    خطاها در تجمع خطاها در نتایج محاسبه (نادیده گرفتن محدودیت های شبکه بیت و راه های کاهش خطا).

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

      تست دستی (در صورت مشاهده خطا ، هنگام کار با خطای شناسایی ، باید برنامه مورد نظر را به صورت دستی اجرا کنید.

      القایی(بر اساس تجزیه و تحلیل دقیق علائم خطا ، که ممکن است به عنوان نتایج محاسبه نادرست یا به عنوان یک پیام خطا به نظر برسد)؛

      کسر (اول ، آنها مجموعه ای از دلایل را تشکیل می دهند که می تواند باعث بروز این خطا شود ، و سپس ، با تجزیه و تحلیل دلایل ، مواردی را که مغایر با داده های موجود هستند ، حذف می کنند)؛

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

برای کسب اطلاعات بیشتر در مورد خطا ، آزمایش های اضافی انجام می شود و از روش ها و وسایل ویژه استفاده می شود: خروجی اشکال زدایی; ابزارهای اشکال زدایی یکپارچه; اشکال زدایی مستقل.

روش کلی برای اشکال زدایی محصولات نرم افزاری که برای اجرای در سیستم عامل های MS DOS و Win32 نوشته شده است:

مرحله ی 1- مطالعه تجلی خطا؛

مرحله 2 -تعیین محلی سازی خطا؛

مرحله 3- تعیین علت خطا؛

مرحله 4 -رفع نقص؛

مرحله 5 -امتحان مجدد

اگر از توصیه های اصلی رویکرد ساختاری برای برنامه نویسی پیروی کنید ، روند اشکال زدایی می تواند بسیار ساده باشد.

    برای ساختن برنامه "از بالا به پایین" ، از رابط کاربری تا زیرروالین های پردازش ، آزمایش آن را در هنگام اضافه کردن برنامه های فرعی؛

    داده های وارد شده را برای کنترل به کاربر نمایش داده و بلافاصله پس از ورود آنها را برای پذیرش بررسی کنید.

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

اطلاعات اضافی در مورد موضوع را می توانید در اینجا کسب کنید.

هدف، واقعگرایانه:

یک برنامه خاص را که قبلاً تهیه شده است با یک زبان الگوریتمی سطح بالا تست و اشکال زدایی کنید.

ترتیب کار و گزارش

در حین کار آزمایشگاهی ، لازم است مجموعه ای از تست ها را برای برنامه قبلاً تهیه شده و اشکال زدایی آن تنظیم کنید.

مجموعه آزمون های گردآوری شده باید در گزارش ارائه شود.

اطلاعات نظری.

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

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

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

تست هایی که به تشخیص خطاها کمک نمی کنند و فقط عملکرد صحیح برنامه را تأیید می کنند بی اثر هستند ، زیرا منجر به اتلاف منابع و وقت می شود.

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

مجموعه آزمون باید به صورت زیر باشد:

بررسی تمام گزینه های تأثیر خارجی برنامه و گزینه های مربوط به کار داخلی الگوریتم؛

به گونه ای که همه شاخه های الگوریتم حداقل یک بار طی می شوند.

برای کنترل موارد محدود و انحطاط.

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

مراحل آزمایش برنامه به سه مرحله قابل تقسیم است:

1. چک کردن در شرایط عادی.

2. بررسی در شرایط شدید.

3. در موقعیت های استثنایی بررسی کنید.

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

بررسی در شرایط عادی

مواردی که یک برنامه باید با تمام داده های ورودی ممکن کار کند بسیار نادر است. معمولاً محدودیت های خاصی در زمینه تغییر داده ها وجود دارد که در این برنامه باید عملکرد خود را حفظ کند. این برنامه باید نتایج صحیحی را برای مجموعه های نماینده داده های ورودی تولید کند.

بررسی در شرایط شدید

داده های آزمون این مرحله شامل مقادیر مرزی دامنه متغیرهای ورودی است که باید توسط این برنامه به عنوان داده های معتبر درک شود. نمونه های معمولی تعداد بسیار زیاد ، تعداد بسیار کمی یا اطلاعاتی نیست.

بررسی در شرایط استثنایی.

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

تست های نمونه

بگذارید محاسبه طول مورب موازی با استفاده از فرمول لازم باشد تولید داده های آزمایش برای شرایط عادی ، شدید و استثنایی.

مهمانی

متوازیالسطوح

توجه داشته باشید

تست عادی خوب d 1.7320508

مفاهیم "اشکال زدایی" ، "اشکال زدایی برنامه". فرآیند اشکال زدایی انواع (تکنیک) اشکال زدایی ، روش های اشکال زدایی.

پس از اتمام مراحل طراحی فرم و نوشتن کد برنامه ، تدوین برنامه لازم است. در طی مراحل گردآوری ، نه تنها خطاها باید اصلاح شوند ، بلکه تذکرها نیز می شوند. اکثر خطاها از نظر ماهیت نحوی هستند. اغلب پیام ها در مورد چنین خطایی حتی در مرحله نوشتن کد برنامه بوجود می آیند. اگر خطا توسط کاربر اصلاح نشود ، متن اپراتور به رنگ قرمز برجسته می شود. اگر خطاهای گردآوری برطرف شده باشد ، هنگام اجرای برنامه اصلاً لازم نیست که خطاهای جدید ایجاد شود. اینها می توانند خطاهای منطقی باشند. خطاها با داده های خاصی ممکن است ظاهر شوند: تقسیم بر 0 ، سرریز ، استخراج ریشه مربع از یک عدد منفی ، عدم ابتکاری در ابتدای محاسبات ، باز کردن یک پرونده غیر وجود و غیره.
هنگامی که یک استثناء در زمان اجرا رخ می دهد ، کامپایلر در کادر گفتگو به کاربر اطلاع می دهد.
اگر برنامه قطع شود ، در صورت بسته بودن گفتگو با کلیک روی دکمه اشکال زدایی ، خط به رنگ زرد برجسته می شود. اگر پیام خطا با دکمه End بسته شده باشد ، عنوان روشی که در آن خطا یافت شده است مشخص می شود.

اشکال زدایی یک برنامه

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

· اشکال زدایی نحوی... خطاهای نحوی توسط کامپایلر شناسایی می شوند ، بنابراین رفع آنها آسان است.

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

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

اصول اشکال زدایی

اصول محلی سازی خطا:

· بیشتر خطاها بدون شروع برنامه اصلاً شناسایی می شوند - فقط با بررسی دقیق متن.

اگر اشکال زدایی به بن بست رسیده است و خطایی قابل تشخیص نیست ، بهتر است برنامه را به تعویق بیندازید. هنگامی که چشم "تار" می شود ، بازده کار به طرز سرسختانه به صفر گرایش پیدا می کند.

ابزارهای کمکی بسیار مناسب مکانیسم های اشکال زدایی محیط توسعه هستند: ردیابی ، کنترل واسطه ای مقادیر. شما حتی می توانید از یک کمپرسی حافظه نیز استفاده کنید ، اما چنین اقدامات شدید به ندرت مورد نیاز است.

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

اصول تصحیح خطا حتی بیشتر به قوانین مورفی شباهت دارد:

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

احتمال اینکه خطا به درستی پیدا شود ، صددرصد نیست.

وظیفه ما این است که خود خطا را پیدا کنیم ، نه علامت آن.

من می خواهم این گفته را روشن کنم. اگر برنامه به طرز سرسختانه به جای صفر مرجع به نتیجه 0 برسد ، دور ساده حل مسئله نخواهد بود. اگر نتیجه به جای مرجع مثبت منفی باشد ، گرفتن آن از مدول بی فایده است - به جای حل مسئله ، با متناسب بودن مزخرف خواهیم شد.

· با تصحیح یک اشتباه ، خیلی راحت می توانید زن و شوهر دیگری را به برنامه اضافه کنید. اشکالات قلاب دار مشکل اصلی اشکال زدایی است.

· تصحیح خطاها اغلب ما را مجبور می کند به مرحله برنامه نویسی برگردیم. این ناخوشایند است ، اما گاهی اجتناب ناپذیر است.

روش های اشکال زدایی

1 روش نیرومند

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

o استفاده از چاپ اشکال زدایی در متن برنامه - به طور دلخواه و در مقادیر زیاد.
کسب اطلاعات در مورد اجرای هر جمله نیز جالب است. اما در اینجا دوباره با اطلاعات زیادی روبرو هستیم. علاوه بر این ، ما تقریباً با اپراتورهای اضافی برنامه را خالی می کنیم ، متنی غیرقابل خواندن را وارد می کنیم و حتی خطرات جدیدی را برای شما ایجاد می کنیم.

o با استفاده از ابزارهای اشکال زدایی خودکار - ردیابی با ردیابی مقادیر متوسط \u200b\u200bمتغیرها.
این احتمالاً رایج ترین روش اشکال زدایی است. نباید فراموش کرد که این تنها یکی از راههاست ، و اغلب استفاده از آن فقط در همیشه و در همه جا بی سود است.
مشکلات هنگامی بوجود می آیند که شما مجبور به پیگیری ساختار داده های خیلی بزرگ یا تعداد زیادی از آنها باشید. ردیابی این پروژه حتی مشکل ساز است ، جایی که اجرای هر یک از سفرهای فرعی منجر به تماس یک زن و شوهر از ده نفر دیگر می شود. اما برای برنامه های کوچک ، ردیابی کافی است.

از نظر برنامه نویسی "صحیح" ، روش های نیرو بد است زیرا آنها تحلیل مسئله را تشویق نمی کنند.

با جمع بندی خصوصیات روش های قدرت ، ما به مشاوره عملی می رسیم:

o از ردیابی و ردیابی مقادیر متغیر برای پروژه های کوچک ، روال جداگانه استفاده کنید.

o از چاپ اشکال زدایی در مقادیر کم و "در تجارت" استفاده کنید.

o یک دفع حافظه را به عنوان آخرین راه حل ترک کنید.

2. روش القایی - تجزیه و تحلیل برنامه از خاص به کلی.
ما به علائم خطا می پردازیم و داده هایی را که حداقل ارتباطی با آن دارند مشخص می کنیم. سپس با استفاده از آزمایشات ، فرضیه های بعید را از بین می بریم تا یک مورد باقی بماند ، که ما سعی در اصلاح و اثبات آن داریم.

3. روش کسر - از کلی به خاص.
ما فرضیه ای را ارائه می دهیم که می تواند خطا را توضیح دهد ، البته به طور کامل. سپس با استفاده از آزمایشات ، این فرضیه آزمایش و اثبات می شود.

4- حرکت معکوس مطابق الگوریتم.
اشکال زدایی از جایی شروع می شود که برای اولین بار نتیجه اشتباه گرفته شود. سپس کار برنامه به صورت معکوس ردیابی می شود (از نظر ذهنی یا به کمک تست ها) تا جایی که یک خطای احتمالی پیدا شود.

5- روش تست.

· روش القایی.
استقراء تحلیلی است از خاص به کل. با مراجعه به علائم خطایی که توسط یک یا چند آزمایش مشخص شده و روابط بین آنها وجود دارد ، می توانید علت خطا را بیابید.

· روش کسر.
این روش ، بر اساس برخی امکان پذیر است تئوری های کلی یا پیش نیازها ، با استفاده از اپراتورهای استثناء یا پالایش ، به نتیجه خاصی برسید (برای پیدا کردن محل خطا). برای نتیجه گیری ، باید همه اطلاعات موجود را در دسترس خود قرار دهیم: تمام نتایج همه آزمایشات در مورد همه خطاها. فرضیه های مطرح شده یک به یک از بررسی خارج می شوند.

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

ابزارهای خودکار برای برنامه های اشکال زدایی.

قابلیت های اشکال زدایی استاندارد. کنترل صحت برنامه کتبی (مراحل).

ابزار اشکال زدایی

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

1) چاپ اضطراری - پیامهایی راجع به اتمام غیر طبیعی بلوکهای فردی و کل برنامه به طور کلی نشان می دهد.

2) چاپ در گره های برنامه - خروجی مقادیر میانی پارامترها در مکان های انتخاب شده توسط برنامه نویس. معمولاً ، اینها بخشهای مهم الگوریتم هستند (برای مثال ، مقداری که در ادامه مسیر اجرای آن بستگی دارد) یا اجزای فرمولهای پیچیده (جداگانه حسابگر و مخرج بخش بزرگی را محاسبه و نمایش می دهند).

3) ردیابی مستقیم:

حساب (پس از مساوی بودن ، متغیرهای انتخابی چه زمانی و چگونه تغییر می کنند) ،

منطقی (زمان و چگونگی اجرای دنباله انتخاب شده)

کنترل شاخص های فراتر از حد مجاز ،

ردیابی دسترسی به متغیرها ،

پیگیری تماسها به مناطق فرعی ،

· بررسی مقادیر شاخص های عناصر آرایه و غیره

محیط های توسعه امروزی اغلب از ما می خواهند که در یک حالت تعاملی به یک مشکل در حال ظهور واکنش نشان دهیم. در این حالت ، شما می توانید:

· مشاهده مقادیر فعلی متغیرها ، وضعیت حافظه ، بخشی از الگوریتم که در آن خرابی رخ داده است.

· اجرای برنامه را قطع کنید.

· در برنامه تغییراتی ایجاد کنید و مجدداً آن را اجرا کنید (در محیط کامپایلر ، این امر نیاز به کپی کردن مجدد کد دارد ؛ در محیط های تفسیر شده ، می توانید اجرای مستقیم را از بیانیه تغییر یافته ادامه دهید).

توصیه می شود در چهار مرحله متوالی تست مستقل یک ماژول را انجام دهید.

مرحله 1 براساس مشخصات ماژول در صورت اشکال زدایی ، تست هایی را برای هر فرصت و هر وضعیت تهیه کنید ، برای هر مرز محدوده معتبر همه ورودی ها ، برای هر محدوده تغییر داده ها ، برای هر محدوده نامعتبر از همه ورودی ها ، و هر شرط نامعتبر.

گام 2. متن ماژول را بررسی کنید تا مطمئن شوید که هر جهت از هر شاخه حداقل یک آزمایش را پشت سر خواهد گذاشت. تست های از دست رفته را اضافه کنید.

مرحله 3 متن ماژول را بررسی کنید تا اطمینان حاصل کنید که برای هر حلقه تست وجود دارد که حداقل سه حالت زیر را ارائه می دهد: بدنه حلقه هرگز اجرا نمی شود ، بدن حلقه یک بار اجرا می شود ، و بدن حلقه هر چند بار ممکن اجرا می شود. تست های از دست رفته را اضافه کنید.

مرحله 4 متن ماژول را بررسی کنید تا اطمینان حاصل کنید که تست هایی وجود دارد که حساسیت به مقادیر ویژه خاص را در ورودی آزمایش می کنند. تست های از دست رفته را اضافه کنید.

نکات اشکال زدایی

1) با دقت بیشتری بررسی کنید: خطا به احتمال زیاد در جایی اشتباه است که به نظر می رسد.

2) اغلب مشخص می شود که برجسته کردن قسمت هایی از برنامه ، که در آن هیچ خطایی وجود ندارد ، آسانتر بوده و بعد به بقیه نگاه کنید.

3) اظهارات ثابت ها ، انواع و متغیرها ، داده های ورودی را با دقت دنبال کنید.

4) در توسعه پی در پی ، شما باید هنگام نوشتن درایورها و خردها به ویژه مراقب باشید - خود آنها می توانند منبع خطا باشند.

5) کد را از بیشترین شروع تجزیه و تحلیل کنید گزینه های ساده... شایع ترین خطاها عبارتند از:

مقادیر آرگومانهای ورودی به ترتیب اشتباه پذیرفته می شوند ،

متغیر اولیه نیست ،

هنگام عبور مجدد از ماژول ، متغیر دوباره مورد استفاده قرار نمی گیرد ،

به جای تصحیح کامل کپی کردن ساختار داده ، فقط از سطح بالا کپی می شود (برای مثال ، به جای ایجاد یک متغیر پویا جدید و اختصاص دادن آن به مقدار مورد نظر ، آدرس به صورت احمقانه از یک متغیر موجود کپی می شود) ،

· پرانتز در یک عبارت پیچیده نادرست قرار داده شده است.

6) با اشکال زدایی مداوم طولانی مدت ، چشم ها "تاری" می شوند. این یک عمل خوب است که به دنبال کمک از شخص دیگری باشید تا استدلال های اشتباه را تکرار نکنید. با این حال ، متقاعد کردن این شخص دیگر برای کمک به شما غالباً یک چالش است.

7) خطا به احتمال زیاد مربوط به شما خواهد بود و در متن برنامه وجود دارد. خیلی کمتر معلوم می شود:

در کامپایلر ،

سیستم عامل،

بخش سخت افزار ،

· سیم کشی برق در ساختمان و غیره

اما اگر کاملاً مطمئن هستید که در برنامه خطایی وجود ندارد ، به ماژول های استاندارد دسترسی پیدا کنید ، دریابید که آیا نسخه محیط توسعه تغییر کرده است ، در پایان ، کافیست کامپیوتر را مجدداً راه اندازی کنید - برخی از مشکلات (خصوصاً در محیط های DOS راه اندازی شده از تحت ویندوز) به دلیل کار نادرست با حافظه ایجاد می شوند.

8) اطمینان حاصل کنید که کد منبع برنامه با کد شیء کامپایل شده مطابقت دارد (متن قابل تغییر است و ماژول اجرایی که تست می کنید از نسخه قدیمی تهیه شده است).

9) جستجوی وسواسی برای یک اشتباه تقریباً همیشه بی نتیجه است. اگر کار نمی کند - کار را به تعویق بیندازید ، نوشتن ماژول بعدی را شروع کنید یا در بدترین حالت ، مستندات را انجام دهید.

10) سعی کنید زمان لازم را برای فهمیدن علت خطا در نظر بگیرید. این به شما کمک می کند:

اصلاح برنامه ،

سایر خطاهای مشابه را تشخیص دهید ،

آنها را در آینده انجام ندهید.

11) اگر علائم خطا را از قبل می دانید ، گاهی اوقات مفید نیست که آن را درست برطرف کنید ، بلکه در جستجوی سایر شکوفه ها در پس زمینه رفتار برنامه شناخته شده باشید.

12) سخت ترین تشخیص خطاها ، خطاهای شناور است ، یعنی مواردی که هنگام رفع سایرین به کد وارد شده اند.

رد تأیید صحت نتایج آزمون توسط خود برنامه مورد آزمایش است

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

هنر آزمایشگر این است که تا حد امکان یک سیستم آزمایشی کامل ایجاد کند که تمام شاخه های محاسبات ممکن را بررسی کند. بگذارید این مسئله را با ساده ترین مثال توضیح دهیم. بگذارید برنامه تعداد اولین عناصر N یک آرایه X حاوی عناصر M را پیدا کند. علاوه بر آزمون "عادی" ، که وضعیتی را که در آن 1 بررسی می شود ، بررسی می کند م اما این یک مورد ساده است ، و حلقه ها معمولاً لانه هستند و در داخل آنها تجزیه و تحلیل موارد انجام می شود ، که در داخل آنها حلقه های خاص خود را دارند.

در ابتدا ما به قانون "چچاکو" اشاره کردیم - یک مبتدی می تواند هر سیستم را به حالت تعلیق درآورد. توضیحی در این باره وجود دارد ، ناآگاهانه ، او یکی از ترکیب های بعید از داده های ورودی را تعیین می کند (کار در یک محیط بصری ، او برای نامشخصی دکمه نامناسب را فشار می دهد). بنابراین ، یک تست کننده انجام اشکال زدایی می تواند بتواند جایگاه یک مبتدی را بگیرد ، سیستم تست باید اطمینان حاصل کند که این برنامه نه تنها در "شرایط عادی" به درستی کار می کند ، بلکه دارای "نرم و نرم" نیز خواهد بود و منجر به حلقه یا شکستن شدید نخواهد شد. موقعیتهای محتمل

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

ابزار اشکال زدایی

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

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

قبل از بررسی دقیق این ابزارها ، به یاد بیاورید که در حین اشکال زدایی ، یک برنامه می تواند در یکی از سه حالت باشد: طراحی ، محاسبه و وقفه. پس از اتمام طراحی ، می توانید برنامه را برای اجرا اجرا کنید. پس از قطع اجرای برنامه در یک نقطه معین ، با وارد شدن به وضعیت وقفه ، می توانید مقادیر متغیرها و خواص اشیاء را در این مرحله بررسی کنید و در صورت لزوم ، این مقادیر را "دستی" تغییر دهید. در این حالت ، شما می توانید ترتیب اپراتورهای اجرا شده را تغییر دهید ، اپراتور بعدی را مشخص کنید ، می توانید قبل از ادامه محاسبه ، متن برنامه را ویرایش کنید. انتقال از حالت محاسبه به حالت وقفه می تواند به دلایل مختلفی اتفاق بیفتد ، به عنوان مثال با رسیدن به نقطه شکست ، وقتی یکی از بسیاری از شرایط قطع انجام شد ، به دلیل اجرای گام به گام برنامه. ما بعداً درباره همه این احتمالات بحث خواهیم کرد ، اما اکنون یک مورد خاص را در نظر خواهیم گرفت. بعضی اوقات یک برنامه "حلقه" می شود و باید مجبور شود وارد یک وضعیت قطع شود. چگونه یک برنامه در حال اجرا را متوقف کنم؟ فقط کافیست کلید Ctrl + Break را از طریق کار با DOS فشار دهید. کادر گفتگوی زیر با یک پیام متوقف می شود.

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

فرآیند اشکال زدایی با تلاش برای تولید مشکل شروع می شود ، که می تواند هنگام برنامه نویسی فرآیندهای همزمان یا برخی از اشتباهات غیرمعمول معروف به heisenbugs ، چالش برانگیز باشد

فن آوری های اشکال زدایی

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

2) نمایش وضعیت فعلی برنامه با استفاده از نقاط بحرانی برنامه ها اپراتورهای خروجی - به صفحه ، چاپگر ، بلندگو یا پرونده. به خروج اطلاعات اشکال زدایی به یک پرونده ، ورود به سیستم گفته می شود.

ابزار اشکال زدایی

1. اشکال زدایی - ابزاری نرم افزاری که به برنامه نویس اجازه می دهد تا اجرای برنامه مورد نظر را تماشا کند ، آن را متوقف و مجدداً راه اندازی کند ، آن را با حرکت آهسته اجرا کند ، مقادیر را در حافظه تغییر دهد و حتی در برخی موارد به موقع برگردد.

2. نمایندگان- به شما امکان می دهد تعیین کنید که یک قطعه کد خاص چه مدت اجرا می شود ، و تجزیه و تحلیل پوشش بخش های کد غیر عملی را نشان می دهد.

3. logger های API- به برنامه نویسان اجازه دهید تعامل بین برنامه و API ویندوز را با نوشتن پیام های ویندوز به سیاهه مربوطه ردیابی کند.

4. جداکننده هابه برنامه نویس اجازه دهید کد اسمبلر پرونده اجرایی را مشاهده کند

5. تیراندازبه برنامه نویس کمک کنید تا ترافیک شبکه ایجاد شده توسط برنامه را ردیابی کند

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

7. سیاهههای مربوط به سیستم.

استفاده كردن زبانهای برنامه نویسی سطح بالامانند جاوا معمولاً اشکال زدایی را آسان تر می کند زیرا آنها دارای ابزاری مانند هستند رسیدگی به استثناء، کمک زیادی به جستجوی منبع مشکل می کند. در برخی از زبانهای سطح پایین مانند اسمبلر، اشکالات می توانند به مشکلات ظریف مانند فساد حافظه یا نشت حافظه منجر شوند ، و تعیین این مسئله که در ابتدا باعث ایجاد این اشکال شده است ، دشوار است. در این موارد ، ترفندهای پیشرفته و ابزارهای اشکال زدایی لازم است.

اشکال زدایی \u003d آزمایش + یافتن خطاها + ویرایش

انواع اشکال زدایینرم افزار ، از جمله تست (در کشور ما).

1.1. خود مختار اشکال زدایی. آزمایش جداگانه متوالی قسمتهای مختلف برنامه های موجود در نرم افزار ، با جستجو و تصحیح خطاها که هنگام تست ثبت شده اند. این در واقع شامل اشکال زدایی در هر ماژول برنامه و اشکال زدایی از جفت شدن ماژول است.



1.2 پیچیده اشکال زدایی . تست نرم افزار به صورت کلی با جستجو و تصحیح خطاهای ثبت شده در هنگام تست در کلیه اسناد (از جمله متون برنامه های نرم افزاری) مربوط به نرم افزار به طور کلی. چنین اسنادی شامل تعریف الزامات نرم افزار ، مشخصات کیفیت نرم افزار ، مشخصات نرم افزاری کاربردی ، توضیحات P.O است. و متون برنامه های نرم افزاری.

2.1. نحوی اشکال زدایی. خطاهای نحوی توسط کامپایلر شناسایی می شوند ، بنابراین رفع آنها آسان است.

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

ارتباط بین فرآیندهای آزمایش و اشکال زدایی از طریق الگوریتم اشکال زدایی

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

در این حالت ، تستر یا برنامه نویس باید از قبل نتیجه کنترلی دریافت کند که با آن صحت کار کد تست شده انجام می شود.

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

ابزار تست خودکار کد منبع برنامه ها.

تکنیک اصلی در اینجا ایجاد تست های کد منبع است که روی قطعه کد تست شده اعمال می شود و سیستم تست نتایج آنها را گزارش می کند.

نمونه هایی از چنین سیستم هایی شامل ماژول داخلی doctest در Python و کتابخانه آزمایش چند زبانه xUnit است که تحت شرایط GNU / GPL و LGPL توزیع می شود. اساس همه این ابزارها و تکنیکها تقسیم یک کار بزرگ به تعدادی کار واضح و کوچکتر است.


23. اصول اساسی برنامه نویسی شی گرا: محاصره کردن ، وراثت ، چندشکلی. تفاوت بین رویکرد شی گرا و رویکرد مدولار هنگام تهیه برنامه ها

برنامه نویسی شی گرا (OOP) یک الگوی برنامه نویسی است که در آن مفاهیم اساسی مفاهیم هستند اشیاء و کلاس ها (یا در نسخه کمتر شناخته شده نمونه های اولیه ، نمونه های اولیه).

نمونه اولیه یک نمونه از شیء است ، در تصویر و شباهت که اشیاء دیگر ایجاد می شوند.

کلاس

زمینه های، که در کلاس شرح داده شده است ، برای ذخیره مؤلفه های حالت شی استفاده می شود ، یعنی زمینه ها وضعیت اشیاء را تعریف می کنند.

مواد و روش هاکه در کلاس شرح داده شده است ، رفتار اشیاء را تعیین کنید. هر روش واکنش جسم را به برخی پیامهای خارجی یا داخلی تعیین می کند.

یک شی - متغیر نوع کلاس

اصول برنامه نویسی شی گرا.

1. انتزاع - مفهوم - برداشت.انتزاع راهی برای برجسته کردن مجموعه ای از خصوصیات مهم یک جسم است ، و ویژگی های ناچیز را از نظر دور می کند. بر این اساس ، انتزاع مجموعه ای از تمام این خصوصیات است.

2. کپسوله سازی.

Encapsulation یک اصل OOP است که طبق آن زمینه ها و روش ها در یک کلاس ترکیب می شوند.

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

3. وراثت.وراثت خاصیت سیستم است که به شما امکان می دهد یک کلاس جدید را بر اساس یک کلاس موجود با عملکردی جزئی یا کاملاً وام گرفته شده توصیف کنید.

وراثت توانایی ایجاد کلاسهای پیچیده تر جدید از کلاسهای موجود با اضافه کردن زمینه ها و تعریف روشهای جدید است ( اصل سلسله مراتب).

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

4. پلی مورفیسم.Polymorphism یک ویژگی سیستم برای استفاده از اشیاء با همان رابط و بدون اطلاع در مورد نوع و ساختار داخلی جسم است.

چند شکل ("تنوع") در برنامه نویسی - امکان تغییر کد برنامه متناسب با مقدار برخی پارامترها.

4.1. چندشکلی ناب - امکان تفسیر متفاوت از کد عملکرد بسته به نوع آرگومانها.

4.2. توابع بارگذاری (نامهای چند شکل) - امکان تعریف چندین کارکرد با یک نام. انتخاب عملکرد مورد نظر را می توان با انواع آرگومان ها ، دامنه (درون یک ماژول ، پرونده ، کلاس و غیره) تعیین کرد. اگر انتخاب با توجه به نوع آرگومان ها تعیین شود ، اضافه بار خوانده می شود پارامتری.

4.3. روش های مهم - در OOP - امکان تعاریف مختلف روشها در کلاس فرزندان و کلاس والدین. روش بتونی توسط کلاس جسم مورد نظر تعیین می شود. هنگام غلبه بر روشها ، بین پلی مورفیسم ساده و پیچیده تمایز قائل می شود.

4.3.1. چندشکلی ساده استفاده می شود اگر ، هنگام فراخوانی یک روش overridden ، نوع شیء مورد استفاده این روش دقیقاً شناخته شده باشد ، و بنابراین ، دقیقاً مشخص است که کدام روش باید به هم متصل شود: یک روش والدین یا یک روش کودک. در این حالت ، روش مورد نیاز در مرحله تعیین می شود تلفیقی برنامه ها.

4.3.2. چند شکلی پیچیده استفاده می شود اگر ، هنگام فراخوانی یک روش overridden ، لازم است مشخص شود که کدام روش باید به هم متصل شود: یک روش والدین یا یک روش کودک ، از آنجا که شیء برای آن روش overridden خوانده می شود یا می تواند یک شیء کلاس والدین باشد یا یک شیء از کلاس کودک باشد. در این حالت ، روش مورد نیاز در مرحله تعیین می شود تحقق برنامه هایی که نوع شیء دقیقاً مشخص است.

4.4. توابع عمومی (قالبها) - توانایی توصیف کلاسهای پارامتریزه و الگوهای عملکرد ، پارامترهای چنین توصیفی انواع روش یا آرگومانهای عملکرد هستند.

تفاوت بین یک رویکرد شی گرا و یک مدولار است.

1) شی گرا روش طراحی نرم افزار. محصولات مبتنی بر:

- انتخاب کلاس اشیاء.

- تعیین خصوصیات بارز اشیاء و روشهای پردازش آنها.

- ایجاد سلسله مراتب کلاسها ، وراثت اشیاء و روشهای پردازش آنها.

2) برنامه نویسی مدولار سازمان برنامه به عنوان مجموعه ای از بلوک های مستقل کوچک ، ماژول ها ، ساختار و رفتار آنها از قوانین خاصی پیروی می کند.

لازم به ذکر است که مفهوم "ماژول" در این مورد با مفهوم "ماژول" (به معنای "کتابخانه") زبان مطابقت ندارد. پاسکال... این یک واحد نرم افزاری ساده ، بسته (مستقل) (رویه یا عملکرد) ، قابل مشاهده است و تنها یک عملکرد را ممکن می کند. برای نوشتن یک ماژول ، باید حداقل آگاهی از متن دیگران ، چه با تلفن و چه با شماره تماس بگیرید ، کافی باشد.

در برنامه نویسی مدولار محصولات نرم افزاری ابتدا ترکیب و تابع عملکردها تعیین می شود و سپس مجموعه ای از ماژول های نرم افزاری که این توابع را پیاده سازی می کنند.


24. کلاس ها و اشیاء: تعریف آنها ، رابطه بین آنها. نقش مؤلفه های کلاس - زمینه ها ، خصوصیات ، روش ها. مشخصات مشخص شده دسترسی ، عمومی ، خصوصی ، محافظت شده. سازندگان و ویرانگرها ، نقش آنها. وقایع و استفاده از آنها در مدیریت برنامه

کلاس یک نوع داده ساختاری است که شامل توضیحات در زمینه داده ها ، و همچنین رویه ها و توابع کار با این قسمت های داده (روش) است.

یک شی - متغیر نوع کلاس - موجودی در فضای آدرس یک سیستم محاسباتی که هنگام ایجاد نمونه از کلاس (به عنوان مثال ، پس از اجرای نتایج تلفیقی (و پیوند) کد منبع برای اجرای ، ظاهر می شود).

رابطه به کلاس با موضوع:

مفهوم کلاس عمومی تر از مفهوم یک شی است. یک شیء نمونه ای از یک کلاس است... یک کلاس را می توان به عنوان یک مجموعه اشیاء مشاهده کرد (دقیقاً همانطور که یک مجموعه مجموعه ای از عناصر است). یک کلاس می تواند اتمی یا تقسیم شود (دقیقاً مثل مجموعه ای که به زیر مجموعه ها تقسیم می شود). به عنوان مثال ، کلاس PERSON شامل یک کلاس فرعی STUDENT است که به نوبه خود شامل یک جسم John_Smith است.

کلاس ها(به عنوان مثال در دلفی):

رشته کلاس ( صفت) در OOP - متغیری که با یک کلاس یا یک موضوع مرتبط است. زمینه های، که در کلاس شرح داده شده است ، برای ذخیره مؤلفه های حالت شی استفاده می شود ، یعنی زمینه ها وضعیت اشیاء را تعریف می کنند. این قسمت ها به نام آنها قابل دسترسی هستند.

مواد و روش هاتوصیف شده در کلاس (زیرروالهایی که زمینه ها و خواص کلاس را پردازش می کنند) رفتار اشیاء را تعیین می کنند. هر روش واکنش جسم را به برخی پیامهای خارجی یا داخلی تعیین می کند.

ویژگی - راهی برای دستیابی به وضعیت داخلی یک شی ، تقلید از یک متغیر از نوع. دسترسی به یک ویژگی شی از طریق فراخوانی تابع انجام می شود. هنگامی که می خواهید مقدار این ویژگی را تنظیم کنید ، یک روش نامیده می شود و وقتی سعی می کنید مقدار این ویژگی را بدست آورید ، روش دیگری نامیده می شود.

به فیلدها ، خصوصیات و روشهای کلاس گفته می شود اعضای کلاس.

متغیر توصیف شده به عنوان یک کلاس در واقع اشاره گر به عنوان نمونه از کلاس در یک برنامه شی گرا با استفاده از کلاس ها ، هر شیء "نمونه" برخی از کلاس خاص است و هیچ اشیاء دیگری ارائه نمی شود.

مشخصات مشخص شده دسترسی ، عمومی ، خصوصی ، محافظت شده.

Encapsulation یک ویژگی سیستم است که به شما امکان می دهد داده ها و روش هایی را که با آن کار می کند در یک کلاس جمع کنید و جزئیات اجرای را از کاربر پنهان کنید.

به طور پیش فرض (در دلفی) ، دید اعضای کلاس والدین دقیقاً به ارث رسیده است ، اما مجاز است بالا بردن دید ، ایجاد زمینه ها ، خصوصیات و روش های قابل دسترسی تر. کاهش دید مجاز نیست.

سطح محصورسازی(دسترسی اعضای کلاس):

1) عمومی... اعضای کلاس در این بخش از هر جای برنامه قابل دسترسی هستند.

2) خصوصی... اعضای کلاس فقط در ماژول هایی که کلاس در آن توضیح داده شده است ، در دسترس هستند. به طور پیش فرض ، تمام زمینه های کلاس در نظر گرفته شده است که در این بخش قرار دارند خصوصی.

3) حفاظت شده... اعضای کلاس در ماژولی که کلاس مشخص در آن شرح داده شده است ، و همچنین در داخل روشهای کلاس هایی که این کلاس را به ارث می برند در دسترس هستند و در ماژول های دیگر نیز در دسترس هستند.

4) منتشر شده... اعضای کلاس در این بخش از هر جای برنامه قابل دسترسی هستند. این بخش شامل خواص کلاس می باشد: فیلدهای موجود برای ویرایش و تغییر مقادیر در زمان طراحی و از بازرسان شی.

5) خودکار... اعضای کلاس در این بخش از هر جای برنامه قابل دسترسی هستند. توضیحات مجاز است فقط در صورتی که کلاس از کلاس استاندارد به ارث برسد ، در این بخش قرار داده شود TAutoObject(در دلفی) ، برای ایجاد سرورهای به اصطلاح اتوماسیون با استفاده از فناوری طراحی شده است کام (مدل شایستگی شایسته).

سازندگان و ویرانگرها.

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

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

وقایع و استفاده از آنها در مدیریت برنامه.

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

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

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


25. تفاوت های اصلی بین Object Pascal (Delphi) و Turbo Pascal. آرایه های پویا در دلفی: توضیحات ، ویژگی ها ، برنامه

توربو pascal - یک محیط توسعه یکپارچه برای زبان برنامه نویسی پاسکال و یک زبان برنامه نویسی در این محیط ، گویش پاسکال از بورلند.

دلفی - یک محیط برنامه نویسی که از زبان برنامه نویسی Object Pascal استفاده می کند.

Object Pascal نتیجه پیشرفت زبان است توربو pascalکه به نوبه خود از زبان توسعه یافته است پاسکال. پاسکال یک زبان کاملاً رویه ای بود

توربو pascalاز نسخه 5.5 در اضافه شده است جسم پاسکال گرا خصوصیات ، و در Object Pascal - شناسایی پویا از یک نوع داده با امکان دسترسی به ابرداده کلاس ها (یعنی به توضیحات کلاس ها و اعضای آنها) در کد کامپایل شده ، که درون نگاری نیز گفته می شود - این فناوری نام RTTI را دریافت کرده است.

از آنجا که کلیه کلاسها عملکردهای کلاس پایه TObject را به ارث می برند ، هر نشانگر به یک شی می تواند به آن تبدیل شود و سپس از متد ClassType و عملکرد TypeInfo استفاده کنید ، که درون زایی را فراهم می کند.

شی پاسکال ( دلفی) نتیجه پسوند عملکردی Turbo Pascal است.

مدل شی Delphi Pascal کاملتر از مدل مورد استفاده Borland Pascal 7.0 است:

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

- سازوکارهای پیشرفته تر برای اجرای روشهای چند شکل (انتزاعی ، روش پویا) "،

- ابزارهایی برای کار با metaclasses (متغیرهای متاکلاس ، روش کلاس ، مکانیسم RTTI).

آرایه های پویا در دلفی.

آرایه مجموعه ای از داده های سفارش یافته است. پویا یک آرایه نامیده می شود ، اندازه آن می تواند در طول اجرای برنامه تغییر کند.

آگهی آرایه: var My_Array: آرایه ای از BaseType؛

با این اعلامیه ، هیچ حافظه ای اختصاص نمی یابد ، و اندازه اولیه آرایه است صفر.

تنظیم اندازه آرایه: SetL طول (My_Array ، 100)؛

گرفتن تعداد عناصر آرایه: n: \u003d طول (My_Array)؛

با مراجعه به مورد اول آرایه: My_Array: \u003d 10؛ x: \u003d My_Array؛

اعلامیه 2D آرایه: var A: آرایه ای از آرایه BaseType؛

اگر یک آرایه پویا را به یک متغیر اختصاص دهید ، محتوای آن کپی نمی شود ، فقط یک نشانگر به آرایه اختصاص داده می شود. اما در صورت درخواست آرایه جدید طول تنظیم، سپس کپی انجام می شود.


26. ساختار ماژول ها در دلفی. رابط ، قطعات اجرایی ، قطعات آغاز و خاتمه. روش ها و توابع: ویژگی های دلفی

یک پروژه دلفی مجموعه ای از واحد های برنامه - ماژول ها است.

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

دستورالعمل با ماژول شروع می شود واحد، که حاوی نام ماژول است.

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

ساختار ماژول دلفی.

واحد<имя>;

رابط <интерфейсная часть>

پیاده سازی <исполняемая часть>

مقداردهی اولیه <инициирующая часть>

نهایی شدن <завершающая часть>

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

واحد نام ماژول؛

رابط // بخش رابط

(توضیحات روشها و کارکردهای ماژول که می توانند توسط سایر ماژولها استفاده شوند.)

شرط بندی // بخش اعلامیه ثابت

(اعلامیه های ثابت جهانی ماژول که می تواند توسط روشها و کارکردهای ماژول مورد استفاده قرار گیرد.)

نوع // اعلامیه های نوع توزیع شده

(اعلامیه های انواع ماژول های جهانی که می توانند توسط روشها و کارکردهای ماژول مورد استفاده قرار گیرند)

واری // بخش اعلام متغیر

(اعلامیه های متغیرهای جهانی ماژول که می توانند توسط روشها و توابع ماژول مورد استفاده قرار گیرند)

پیاده سازی // بخش اجرای

(توضیحات (متن) رویه ها و عملکردهای ماژول!}

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

رویه ها و عملکردها در دلفی.

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

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

- هنگامی که زیرآب هیچ داده ای را به برنامه اصلی برنمی گرداند.

- هنگامی که یک زیرروست بیش از یک مقدار را به برنامه فراخوانی برگرداند.

مولفه های ورودی است.

اظهارنامه رویه

روش ProcedureName (var parameter1: type1؛… var پارامتر K: نوع K)؛

زنگ

کسانی هستند که این خبر را قبل از شما می خوانند.
برای دریافت آخرین مقالات مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید The Bell را بخوانید
بدون اسپم