تفاوت معمار نرم افزار و مهندس و توسعه دهنده نرم افزار

?>

اکثراً فکر می کنند برنامه نویس(توسعه دهنده نرم افزار) همان مهندس نرم افزار است و خیلی ها حتی از وجود معمار نرم افزار خبری ندارند. در شرکت های کوچک نیز به طور معمول یک نفر استخدام می شود تا این سه نقش را به تنهایی ایفا کند.

اما در شرکت های بزرگ یا شرکت ها تولید نرم افزار این سه نقش تفاوت بسیاری با هم داشته و هر کدام نقش مهمی تو تحویل محصول و خلق ارزش بازی می کنند که در ادامه به توضیح هر سه می پردازیم.

معمار نرم افزار(Software Architect):

تعریفی که در ویکی پدیا برای معمار نرم افزار آمده است عبارت است از:

“معمار نرم‌افزار یک کارشناس نرم‌افزار است که انتخاب‌های طراحی سطح بالا را انجام می‌دهد و استانداردهای فنی شامل: استانداردهای کدگذاری نرم‌افزار، ابزارها و سیستم عامل را دیکته می‌کند.”

همانطور که تعریف مشهود است معمار نرم افزار می بایست تجربه بالایی نسبت به برنامه نویسی داشته باشد به عبارت دیگر باید از برنامه نویسی شروع کرده باشد و بعد از کسب تجربه کافی به عنوان معمار فعالیت نماید زیرا مسئولیت گزارش نیازمندی های نرم افزار و تهیه چارت و نمودارها جهت رسیدن به راه حل نهایی بر عهده او است.

به بیان خیلی ساده، تصور کنید که قصد ساخت یک خانه را دارید؛ معمار نرم افزار شخصی است که اجزا و شکل خانه را تعیین و نقشه اولیه را تهیه می کند.

برخی مسئولیت های معمار نرم افزار:

  • تهیه گزارش در خصوص نیازمندی های نرم افزار برای ذینفعان
  • طراحی و تهیه اسناد سطح بالای محصول
  • گذاشتن طرح اولیه یا نقشه راه در اختیار مهندسین و توسعه دهندگان نرم افزار
  • رعایت برنامه ها و مهلت های تعیین شده
  • آزمایش محصول نهایی برای اطمینان از مطابقت با الزامات و عملکرد کامل آن

مدارک تحصیلی و تجربه مورد انتظار معمار نرم افزار:

  • داشتن کارشناسی ارشد در یکی از رشته های کامپیوتر
  • تجربه زیاد در توسعه نرم افزار و مدیریت پروژه
  • قابلیت رهبری و سازماندهی
  • داشتن نگاه تحلیلی که قابلیت ترسیم جزئیات و تصویر کلی را کنار هم داشته باشد
  • روابط عمومی قوی و مهارت ارائه
  • ۵ تا ۸ سال تجربه به عنوان مهندس نرم افزار

مهندس نرم افزار(Software Engineer):

تعریف رسمی که برای مهندسی نرم افزار آمده است عبارت است از:

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

مهندس نرم افزار با استفاده از الگوریتم ها و هماهنگی با افراد بالاتر از خود به حل مسئله ها می پردازد.

مهندس نرم افزار با استفاده از اصول الگوریتمی و هماهنگی با افراد بالاتر از خود ، مسئله ای در دنیای واقعی را حل می کند.

یک مهندس نرم افزار در توسعه کارآمد و موثر نرم افزار تخصص دارد. آنها می دانند که رویکرد رسمی هر مشکلی چیست و آن را گام به گام دنبال می کنند. به این ترتیب ، آنها اطلاعاتی درباره قابلیت استفاده مجدد(Reusability)، قابلیت نگهداری(Maintainability) و درستی(Correctness) را نگهداری می کنند.

اگر به مثال ساخت خانه برگردیم مهندس نرم افزار شخصی است که نقشه اولیه را مطالعه کرده و بهترین روش را برای ساخت استفاده می کند.

برخی مسئولیت های مهندس نرم افزار:

  • تعیین امکان عملیاتی با ارزیابی تجزیه و تحلیل، تعریف مسئله، الزامات، توسعه راه حل و ارائه راه حل های پیشنهادی
  • بررسی مناطق دچار مشکل
  • دنبال کننده چرخه عمر نرم افزار(software development lifecycle)
  • توسعه سیستم های اطلاعاتی با طراحی، توسعه و نصب راه حل های نرم افزاری

مدارک تحصیلی و تجربه مورد انتظار مهندس نرم افزار:

  • کارشناس یا کارشناسی ارشد در رشته های کامپیوتر
  • ۵ سال تجربه حرفه ای در توسعه نرم افزار
  • دانش معماری نرم افزار و الگوهای طراحی(design patterns)
  • تجربه مشارکت در یک چرخه توسعه نرم افزار
  • تجربه در توسعه سیستم های توزیع شده یا مقیاس پذیر و برنامه هایی با تراکنش بالا

توسعه دهنده نرم افزار(Software Developer):

توسعه دهنده نرم افزار یا به صورت غیر رسمی برنامه نویس شخصی است که درک کاملی از مفاهیم برنامه نویسی مانند منطق و توابع برنامه نویسی را دارد. او در توسعه، پیاده سازی و مدیریت راهکارهای مبتنی بر تکنولوژی فعالیت می کند.

به عبارت ساده توسعه دهنده نرم افزار، وقت پیاده سازی چکش را روی میخ میکوبد و یا دیوارها را برای بازسازی فرو می ریزد.

برخی مسئولیت های توسعه دهنده نرم افزار:

  • تحقیق، طراحی، پیاده سازی و مدیریت برنامه های نرم افزاری
  • آزمایش و ارزیابی برنامه های جدید
  • شناسایی مناطق برای اصلاح در برنامه های موجود و متعاقباً ایجاد این تغییرات
  • نوشتن و اجرای کد کارآمد
  • ایجاد رویه های تضمین کیفیت
  • استفاده از ابزارها، فرآیندها و معیارهای نرم افزاری
  • حفظ و ارتقا سیستم های موجود
  • آموزش کاربران
  • همکاری نزدیک با سایر توسعه دهندگان ، طراحان UX ، تحلیل گران تجارت و سیستم

مدارک تحصیلی و تجربه مورد انتظار توسعه دهنده نرم افزار:

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *