مقدمه

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

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

مهندسی نرم افزار در یک دید کلی

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

مرحله تعریف

در این مرحله تمرکز روی "چه" (what) است. اینجا مهندس نرم افزار در تلاش است تا مواردی همچون نوع اطلاعاتی که باید پردازش شود، عملکرد و رفتار مطلوب، نوع رابط هایی که باید ایجاد شود، محدودیت های موجود در طرح و معیار های صحت نرم افزار را شناسایی کند.

3 فعالیت اصلی این مرحله:

  • تعیین نیازها
  • تحلیل
  • طراحی

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

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

مرحله توسعه

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

مرحله پشتیبانی

در این مرحله تمرکز روی "تغییرات" (change) است. اصلاح خطا، تغییرات و اعمال نیازهای کارفرما است.

در این مرحله 4 نوع تغییر داریم:

  • اصلاح (correction): همان حل مشکلات احتمالی و رفع خطاهاست.
  • تطابق (adaptation): ایجاد تغییراتی در نرم افزار با گذشت زمان به منظور تطبیق با محیط (مثلا وقتی وب سرویس عوض می شود باید اپلیکیشن هم آپدیت شود)
  • بهبود (enhancement): افزودن قابلیت هایی فراتر از نیاز کاربر به منظور افزایش کیفیت و کارایی و سرعت
  • پیشگیری (prevention): تلاش برای اینکه نرم افزار همچنان نیاز کاربر را برطرف کرده و بر اثر تغییر یا گذر زمان سودمندی (برای کاربر هدف و توسعه دهنده) خود را از دست ندهد. (منظور اینه که در طول زمان حواسمون به کاربر باشه و تلاش کنیم تا کاربر رو به محصول وفادار کنیم)

 

خب این اولین مقاله از سری مقاله های "مهندسی نرم افزار" بود، هر سوالی که دارید می تونید از قسمت کامنت ها بپرسید ✉️