یک سری موضوع اینجا مطرح میکنم که برای دانشجویان کارشناسی، ارشد و دکترای نرمافزار به عنوان یک موضوع برای ارائه در دروسی مانند «مهندسی نرمافزار»، «مهندسی نرمافزار پیشرفته»، «آزمون نرمافزار» و «معماری نرمافزار» و دروس مشابه مفید خواهد بود.
موضوع برای تحقیق و ارائه در درس مهندسی نرمافزار و معماری نرمافزار:
۱- نرمافزار اتکاپذیر چیست؟
۲- مبحث مدیریت پروژههای نرمافزاری
میتوان یک پروژهی نمونه را با MS Project یا دیگر ابزارهای مدیریت پروژه پیادهسازی کرد.
۳- مبحث پشتیبانی نرمافزارها
۴- ارائه یکی از مدلها و متودولوژیهای Agile / Lean / DevOps / Scrum / XP و بقیه که در این صفحه قابل دسترسی است.
۵- توضیح معماری MVC
۶- روشهای توصیف نرمافزار (formal, semi-formal and informal methods of software development)
۷- مبحث R&D در تولید نرمافزار
موضوع برای تحقیق و ارائه در درس آزمون نرمافزار:
۱- آزمون نرمافزار از طریق جنبهگرایی (Software Testing via Aspect-Oriented Programming)
میتوان بعد از اشاره به مفاهیم مختلف جنبهگرایی، با انتخاب یکی از موارد زیر، یک نمونه از آزمون یک برنامه با استفاده از مفهوم جنبهگرایی را پیادهسازی کرد:
نمونههای محیطهای با پشتیبانی از جنبهگرایی:
AspectC++
AspectC
Aspect#, AspectDNG, LOOM.NET, AspectC#, EOS
Aspect-Oriented Perl, Aspect.pm
Aspects, Pythius (Python)
AspectR (Ruby)
AspectS, Apostle, MetaclassTalk (Squeak/Smalltalk)
AspectXML
AOPHP, AspectPHP
Object Teams
UMLAUT
۲- آزمون برنامههای جنبهگرا (Testing Aspect-Oriented Programs)
این مبحث از مباحث روز و در حال کار به حساب میآید...
۲- ابزارهای تولید دادهآزمون (Test data generation Tools)
میتوانید این ابزارها را توضیح دهید:
Jtest
C++ test
AgitarOne
Codepro Analytix
Autotest
Randoop
Pex
ابزارهای دیگری نیز هستند که در تصویر زیر یک مقایسه بین آنها انجام شده:
۳- تولید داده آزمون با استفاده از شبکههای عصبی / الگوریتمهای ژنتیک
این نوع موضوعات برای دانشجویانی که به هوش مصنوعی علاقه دارند، موضوع جالبی است.
۴- طراحی اوراکل با استفاده از شبکههای عصبی
۵- تست واحد در C# یا جاوا یا PHP (بحث Unit Test در زبانهای مخلتف)
در ویژوال استودیو ابزاری برای تست واحد وجود دارد. در PHP نیز ابزار PHPUnit (سایت رسمی: https://phpunit.de ) برای این کار تعبیه شده که کار آزمون نرمافزارهای بزرگ را تا حد زیادی ساده میکند.
۶- آزمون نرمافزار به کمک آزمون جهشی
Mutation Test نوعی آزمون است که ما خود خطاهایی در نرمافزار ایجاد میکنیم و سپس دادهآزمونهایی به نسخهی خطادار برنامه میدهیم و بررسی میکنیم که آیا نسخهی خطادار پاسخ اشتباه مورد نظر را تولید خواهند کرد؟
۷- بررسی دیتاستهای آماری ناسا در مورد نرمافزارهای تولید شده توسط ناسا
۸- تولید اتوماتیک مسیرهای مستقل در آزمون جعبه سفید
۹- وارسی در حین اجرا با کمک برنامهنویسی نظارتگرا (Runtime Verification with MOP)
میتوان ضمن اشاره به مفاهیم MOP و آزمون حین اجرا، با کمک JavaMOP یک پیادهسازی داشت. (سمینار بنده در این زمینه)
چند پکیج ویدئویی در مورد مهندسی و معماری و آزمون نرم افزار:
۱- شرکت Lynda.com یک پکیج به نام Foundations.Of.Programming.Test.Driven.Development دارد که بسیاری از مفاهیم آزمون نرمافزار را به صورت عملی آموزش داده.
۲- این پکیج برای مهندسی و معماری و آزمون نرمافزار فوق العاده است: دانلود Pluralsight Software Development Tutorial Series
۳- این مجموعه برای مهندسی نرمافزار مقدماتی عالی است: دانلود Pluralsight Software Engineering Essentials
موضوعات بیشتر به مرور به این مطلب اضافه خواهد شد.
موفق باشید؛
حمید رضا نیرومند