دانشجویان مقطع کارشناسی معمولاً در پایان دوره تحصیلاتشان و صرفاً در قالب یکی دو درس با نام «مهندسی نرمافزار» با آن آشنا میشوند و مفاهیم بسیار مهم و پیچیده تنها بهصورت گذرا معرفی میشود و فرصت کافی برای مسلط شدن بر این مفاهیم فراهم نمیشود. با وجود این، چند سالی است برخی از دانشگاههای برجسته دنیا این رشته را بهصورت مستقل از همان مقطع کارشناسی تدریس میکنند. چهارچوبهای این رشته بهصورت مدون از سوی انجمنهای IEEE و ACM معرفی شده است. در این مقاله، با استناد به کتاب «راهنمای سرفصلهای مهندسی نرمافزار» که توسط شاخه کامپیوتر انجمن IEEE تهیه شده است، چهارچوب رشته مهندسی نرمافزار را مرور کردهایم تا داوطلبان ورود به دانشگاهها (چه در مقطع کارشناسی و چه کارشناسی ارشد) که مایلند روزی بهعنوان مهندس نرمافزار (و نه برنامهنویس کامپیوتر) مشغول به کار شوند، دقیقاً بدانند چه چیزی را باید بیاموزند و چه توقعی از آنان میرود. این چهارچوب برای مؤسسات آموزشی که مایلند دانشجویان را برای بازار کار این رشته آماده کنند نیز مفید است.
مهندسی نرمافزار چیست؟
طبق تعریف ساده و موجزی که در کتاب راهنمای SWEBOK v3.0 آمده است، (1)مهندسی نرمافزار عبارت است از «کاربرد یک رهیافت قابل اندازهگیری، منظم و سیستماتیک برای توسعه، اجرا و نگهداری نرمافزار، یا به طور خلاصه اعمال اصول مهندسی بر نرمافزار». فایل کامل این کتاب 335 صفحهای را میتوانید از وبسایت ماهنامه شبکه دانلود کنید. (2) این تعریف البته خیلی کلی است و برای کسانی که با این شاخه از مهندسی کاملاً آشنا نیستند مقداری گنگ است. مهمترین نکتهای که در این تعریف روشن نیست تفاوت مهندسی نرمافزار با مهارت برنامهنویسی است که درباره آن صحبت خواهیم کرد.
اما قبل از پرداختن به این موضوع لازم است دو نکته را روشن کنیم. نخست، تفاوت مهندسی نرمافزار با مهندسی کامپیوتر از نظر محتوای دروس علمی این رشته و هدف آن است. اگر هنوز مقاله «آشنایی با رشتههای اصلی کامپیوتر در دنیا در مقطع کارشناسی» در شماره 196 ماهنامه شبکه را مطالعه نکردهاید، توصیه میکنیم حتماً نگاهی به آن بیاندازید. در آنجا به تفاوت رشتههای اصلی کامپیوتر در دوره لیسانس، بهویژه تفاوت رشتههای «علوم کامپیوتر»، «مهندسی کامپیوتر» و «مهندسی نرمافزار» اشاره مختصری کردهایم. همچنین، در شماره 199 بهتفصیل درباره معنا و هدف رشته «مهندسی کامپیوتر» صحبت کردهایم. به طور خلاصه، هدف رشته «مهندسی کامپیوتر» تولید سیستمهای کامپیوتری (مانند خود کامپیوتر از قبیل لپتاپ یا گوشی موبایل هوشمند) است. اما «مهندسی نرمافزار» که زیرشاخهای از همین رشته محسوب میشود، با مقداری تغییر جهت در رویکرد و رهیافت، از مباحث سختافزاری و معماری دیجیتال عبور میکند و روی موضوع مهم «تولید انبوه نرمافزار» تمرکز میکند. دوم اینکه، چنانکه جلوتر توضیح خواهیم داد، رشته «مهندسی نرمافزار» بهدلیل ماهیت نرم این رشته به بُعد انسانی فرآیند مهندسی توجه ویژهای نشان میدهد که این بُعد در رشته «مهندسی کامپیوتر» کمرنگ است.
- ۹۸/۰۳/۱۳