یک سری موضوع اینجا مطرح می کنم که برای دانشجویان کارشناسی، ارشد و دکترای نرم افزار به عنوان یک موضوع برای ارائه در دروسی مانند «مهندسی نرم افزار»، «مهندسی نرم افزار پیشرفته»، «آزمون نرم افزار» و «معماری نرم افزار» و دروس مشابه مفید خواهد بود.
۱- نرم افزار اتکاپذیر چیست؟
۲- مبحث مدیریت پروژه های نرم افزاری
می توان یک پروژه ی نمونه را با 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 یک پیاده سازی داشت. (سمینار بنده در این زمینه)
موضوعات بیشتر به مرور به این مطلب اضافه خواهد شد.
موفق باشید؛
حمید رضا نیرومند

برچسب:
نویسنده: دانلودی