با چشمانی باز رشتههای علوم کامپیوتر را انتخاب کنیم
مهندسی نرمافزار رشتهای است که از 15 رکن یا اصطلاحاً حوزه علمی تشکیل شده است. هریک از این پانزده بخش یک موضوع مهندسی بسیار مهم و گسترده است که میتواند بهتنهایی موضوع یک یا چند درس سهواحدی دانشگاهی باشد. سه مورد از این پانزده زمینه با سایر رشتههای کامپیوتر مشترک هستند. آنها عبارتند از:
• مبانی کامپیوتر
• مبانی ریاضیات مهندسی
• مبانی مهندسی
اما دوازده بخش دیگر اختصاصی رشته نرمافزار هستند و ارکان آن را تشکیل میدهند. ارکان مهندسی نرمافزارعبارتند از:
• مهندسی نیازمندیهای نرمافزار
• طراحی نرمافزار
• تولید نرمافزار (کدنویسی)
• تست نرمافزار
• نگهداری نرمافزار
• مدیریت تنظیمات نرمافزار
• مدیریت مهندسی نرمافزار
• فرآیندهای مهندسی نرمافزار
• متدها و مدلهای مهندسی نرمافزار
• کیفیت نرمافزار
• اصول حرفهای و شغلی مهندسی نرمافزار
• اقتصاد مهندسی نرمافزار
چنانکه ملاحظه میکنید، از میان این دوازده رکن، تنها یک مورد یعنی تولید نرمافزار با مهارت برنامهنویس متناظر است و بقیه موارد اگرچه مرتبط هستند اما از جنس کدنویسی نیستند، بلکه مکمل یا پیشنیاز یا ماورای آن هستند. این ارکان را میتوان به چرخدندههای یک ساعت تشبیه کرد که حتی اگر یکی از آنها نچرخد کل سیستم متوقف میشود. رشته مهندسی نرمافزار چیست؟
یک نکته مهم برای نوآموزان رشته کامپیوتر تفاوت مهارت برنامهنویسی با مهندسی نرمافزار است. اغلب این دو با هم اشتباه میشود. در حالی که مهارت برنامهنویسی یک مهارت عام برای تمام شاخههای رشته کامپیوتر است، مهندسی نرمافزار شامل این مهارت و فراتر از آن است. اهمیت این موضوع آنجا است که این روزها بسیاری از جوانان حتی پیش از ورود به دانشگاه مهارتهایی در زمینه برنامهنویسی کسب کردهاند و مایلند در دانشگاه چیزی بیشتر از آنچه تا به حال میدانستهاند یاد بگیرند. بسیاری از دروس رشته مهندسی کامپیوتر» اگرچه جالب و مفیدند، اما بهلحاظ مفهومی بهموازات و نه در امتداد مباحث برنامهنویسی قرار میگیرند. محتوای رشته مهندسی نرمافزار» دقیقاً برای پاسخ به چنین نیازی تدوین شده است و در ادامه اصول برنامهنویسی معنا پیدا میکند. به این ترتیب، برنامهنویسی (یا کدنویسی) بهعنوان تنها یک ابزار برای این رشته معرفی میشود و ابزارهای دیگری که برای فرآیند تولید حرفهای نرمافزار نیاز است نیز معرفی میشوند. بعضی از این ابزارها انسانی هستند مانند مهندسی نیازمندیها» و برخی دیگر فرآیندهای مدیریتی هستند مانند روش آبشاری» یا روش اجایل» و بعضی ابزارها خود نرمافزارهای کمکی دیگری هستند که به یاری مهندسان نرمافزار میآیند، مانند نرمافزارهایی که برای پیگیری عیوب و باگهای نرمافزار در حال تولید به کار میروند.
فرآیند کامل مهندسی نرمافزار مانند ساعتی است که از دوازده چرخدنده تشکیل شده و هریک از این چرخدندهها یکی از ارکان این فرآیند را به حرکت درمیآورد. ساعت مهندسی نرمافزار وقتی در حالت ایدهآل قرار دارد که همه این چرخها بهدرستی و با سرعت مناسب و در جهت صحیح بچرخند.
دانشجویان مقطع کارشناسی معمولاً در پایان دوره تحصیلاتشان و صرفاً در قالب یکی دو درس با نام مهندسی نرمافزار» با آن آشنا میشوند و مفاهیم بسیار مهم و پیچیده تنها بهصورت گذرا معرفی میشود و فرصت کافی برای مسلط شدن بر این مفاهیم فراهم نمیشود. با وجود این، چند سالی است برخی از دانشگاههای برجسته دنیا این رشته را بهصورت مستقل از همان مقطع کارشناسی تدریس میکنند. چهارچوبهای این رشته بهصورت مدون از سوی انجمنهای IEEE و ACM معرفی شده است.
در این مقاله، با استناد به کتاب راهنمای سرفصلهای مهندسی نرمافزار» که توسط شاخه کامپیوتر انجمن IEEE تهیه شده است، چهارچوب رشته مهندسی نرمافزار را مرور کردهایم تا داوطلبان ورود به دانشگاهها (چه در مقطع کارشناسی و چه کارشناسی ارشد) که مایلند روزی بهعنوان مهندس نرمافزار (و نه برنامهنویس کامپیوتر) مشغول به کار شوند، دقیقاً بدانند چه چیزی را باید بیاموزند و چه توقعی از آنان میرود. این چهارچوب برای مؤسسات آموزشی که مایلند دانشجویان را برای بازار کار این رشته آماده کنند نیز مفید است.
درباره این سایت