دپارتمان آموزش مجازی شرکت جهت علاقه مندان به این دوره ی آموزشی توضیحاتی در این رابطه ارائه داده است. جهت ثبت نام در این دوره کوتاه مدت آموزشی و در یافت گواهینامه آموزشی معتبر در این زمینه به قسمت ( ثبت نام دوره ) مراجعه فرمائید. باتشکر
معرفی اولیه رشته نرم افزار
مهندسی کامپیوتر(نرم افزار)
تحلیل اطلاعات برای تشخیص و توصیه آنها و همچنین طراحی لی اوت کامپیوترها و بررسی تغییرات تجهیزات جانبی وظیفه ی اصلی مهندسین کامپیوتر است.تحلیل نیازهای کاربرها و توصیه ی نرم افزار مناسب برای آنها،ساخت،تست و اصلاح نمونه ی موجود،کار با مدل ها با شبیه سازی توسط کامپیوتر،مشورت با سایر کارکنان و ارزیابی رابطه ی بین سخت افزار و نرم افزار،تحلیل نیازهای کلی سیستم،طراحی و توسعه سخت افزارهای کامپیوتری و پشتیبانی وسایل جانبی شامل سی پی یو ها،ریزپردازنده ها،مدارهای یکپارچه،چاپگرها و دیسک های سخت،ارزیابی فاکتورها مانند هزینه ها و ارزیابی امنیت سیستم ها و …،نظارت بر عملکرد تجهیزات و اعمال تغییرات برای اطمینان از درست کار کردن سیستم،طراحی میزان قدرت مورد نیاز سیستم،ذخیره،بازیابی و دستکاری داده ها،تست کردن سخت افزارا و پشتیبانی از لوازم جانبی موجود،توانایی اعمال مهندسی مجدد در صورت لزوم،گسترش آموزش برای کاربران در صورت لزوم.به روز کردن دانش کامپیوتر برای عقب نماندن از دنیای سریع پیشرفت کامپیوترها.
تاثیر شدید رایانه ها و فن آوری اطلاعات بر زندگی روزمره ، نیاز به طراحی و توسعه سیستمهای نرم افزاری رایانه ای جدید و به کاربردن فن آوریهای جدید،را در طیف وسیع و در حال رشدی از کاربردها الزامی ساخته است. وظایفی که به وسیله افرادی که با عنوان مهندس نرم افزار شناخته می شوند انجام میشود به سرعت در حال رشد ونمو هستند که منعکس کننده بخشهای تخصصی جدید و تغیرات فنآوری ونیز اولویتها و عملکرد کارفرمایان میباشند مهندسان نرم افزار با بکارگیری اصول و روشهای علم رایانه ، مهندسی و تجزیه و تحلیلهای ریاضی به طراحی ، توسعه ، آزمایش و ارزیابی نرم افزارها و سیستمهای رایانه یی می پردازند که به کمک آنها رایانه ها قادر به انجام بسیاری از عملکردهایشان می شوند..
مهندسین نرم افزار شاغل در فرایند تولید سیستمها و برنامه های کاربردی نیازها ی کاربرها را تجزیه وتحلیل کرده و سیستمها و نرم افزارهای کاربردی را برای رایانه ها طراحی و تولید کرده ویا تغییر میدهند. آنها در طراحی و توسعه انواع نرم افزارها مشارکت دارند از جمله سیستمهای عامل ، توزیع شبکه و کامپایلرها که برنامه ها را برای پردازش سریعتر تغییر می دهند . مهندسان نرم افزار با برنامه نویسی یا کد گذاری به رایانه برای انجام کاری خاص خط به خط دستورالعمل میدهند.
مهندسان نرم افزار باید در زمینه برنامه نویسی از مهارتهای بالایی برخوردار باشند اما اکثرا به جای نوشتن کد با طراحی الگوریتم ها،تجزیه و تحلیل و حل مشکلات برنامه نویسی سر و کار دارند.همچنین آنها مشکلات فنی ایجاد شده را برطرف می نمایند.
مهندسان نرم افزارهای کاربردی به تجزیه و تحلیل نیازهای کاربرها پرداخته و نرم افزارهای کار بردی عمومی ویا برنامه های ابزاری تخصصی را طراحی و بوجود می آورند ویا تغییر میدهند . با توجه به هدف برنامه،از زبانها ی برنامه نویسی متفاوتی استفاده می شود.
زبانهای بر نامه نویسی اصلی مورد استفاده شامل سی ، سی پلاس پلاس و جاوا و برنامه هایی که کمتر کاربرد دارند شامل فرترن و کوبول می باشند .بعضی مهندسین نرم افزار هم به توسعه بسته های نرم افزاری سیستم و هم برنامه های کاربردی سفارشی میپردازند.
مهندسین نرم افزارهای سیستم وظیفه هماهنگ کردن نصب ونگهداری سیستمهای رایانه ای یک شرکت را برعهده داشته و رشد و گسترش این سیستمها را در آینده برنامه ریزی می کنند. مهندسین شاغل در یک شرکت به هماهنگ کردن نیازها ی رایانه ای هربخش ازجمله دادن سفارشات ، صورت برداری کالاها ، صورت حساب ها و ثبت صورت پرداخت ها می پردازند و از لحاظ فنی پیشنهاداتی ارائه می دهند . آنها در ضمن باید اینترانتهای شرکت ، بعنی شبکه هایی که رایانه ها را درون یک شرکت به هم متصل کرده و ارتباطات درون شرکتی را راحت میکنند راه اندازی کنند.
مهندسین نرم افزارهای سیستم برای شرکتهایی که سیستمهای کامل رایانه ای را طراحی ، اجرا و نصب میکنند نیز کار میکنند .احتمال دارد که انان در بخش بازاریابی و فروش کار کنند که در این بخشها به عنوان مرجع فنی اولیه برای فروشندگان و مشتریان به فعالیت می پردازنند . در ضمن فعالیت هایی چون فروش تولیدات و حمایت های فنی پس از فروش برای مشتریان نیز در حیطه کار آنان می باشد .
مهندسان نرم افزاراغلب به عنوان بخشی از یک تیم که طراحی سخت افزار و نرم افزار و سیستمها را بر عهده دارد به فعالیت می پردازند . یک تیم هسته ای کارهای مهندسی ، فروش ، ساخت و فرماندهی کارکنان را تا ارائه محصول نهایی به عهده میگیرد.
مهندسی نرمافزار پیشهای است که به یاری دانش رایانه و دیگر فناوریها و روشها به آفریدن و نگاهداری نرمافزار رایانهای میپردازد.
مسائل اصلی مهندسی نرمافزار تولید نرمافزار بر اساس موارد زیر است:
• الزامات تعیین شده
• در زمان تعیین شده
• در محدودهٔ بودجه پیشبینی شده
مهندسی نرمافزار طراحی، برنامه نویسی، توسعه، مستندسازی و نگهداری نرمافزار با بکارگرفتن روشهای فنی و عملی از علوم کامپیوتر، مدیریت پروژه، مهندسی، محدوده کاربرد، طراحی رابط، مدیریت تجهیزات دیجیتال و سایر زمینهها است.
کاربردهای مهندسی نرمافزار دارای ارزشهای اجتماعی و اقتصادی هستند، زیرا بهرهوری مردم را بالا برده، چند و چون زندگی آنان را بهتر میکنند. مردم با بهرهگیری از نرمافزار، توانایی انجام کارهایی را دارند که قبل از آن برایشان شدنی نبود. نمونههای از این دست نرمافزارها عبارتاند از: سامانههای توکار، نرمافزار اداری، بازیهای رایانهای، و اینترنت.
فناوریها و خدمات مهندسی نرمافزار به کاربران برای بهبود بهرهوری و کیفیت یاری میرساند. نمونههایی از زمینههای بهبود: پایگاه دادهها، زبانها، کتابخانهها، الگوها، فرآیندها و ابزار.
پیشینه مهندسی نرمافزار
اصطلاح مهندسی نرمافزار بعد از سال ۱۹۶۸ شناخته شد. این اصطلاح طی کنفرانس «مهندسی نرمافزار ناتو ۱۹۶۸» (که در گارمیش آلمان برگزار شد) توسط ریاست کنفرانس F.L. Bauer معرفی شد و از آن پس بطور گسترده مورد استفاده قرار گرفت.
اصطلاح مهندسینرمافزار عموماً به معانی مختلفی به کار میرود:
• بهعنوان یک اصطلاح غیر رسمی امروزی برای محدوده وسیع فعالیتهایی که قبلا برنامهنویسی و تحلیل سیستمها نامیده میشد.
• بهعنوان یک اصطلاح جامع برای تمامی جنبههای عملی برنامهنویسی کامپیوتر، در مقابل تئوری برنامه نویسی کامپیوتر، که علوم کامپیوتر نامیده میشود.
• بهعنوان اصطلاح مجسم کننده طرفداری از یک رویکرد خاص نسبت به برنامهنویسی کامپیوتر که اصرار میکند، مهندسی نرمافزار، بجای انکه هنر یا مهارت باشد، باید بهعنوان یک رشته عملی مهندسی تلقی شود و از جمع کردن و تدوین روشهای عملی توصیه شده به شکل متدولوژیهای مهندسی نرمافزار طرفداری میکند.
• مهندسی نرمافزار عبارتست از : الف) کاربرد یک رویکرد سیستماتیک، انتظام یافته، قابل سنجش نسبت به توسعه، عملکرد و نگهداری نرمافزار، که کاربرد مهندسی در نرمافزار است و ب) مطالعه روشهای موجود در استاندارد IEEE
انواع نرم افزارها:
نرم افزارهای سیستمی
real-time software (نرم افزارهای بلادرنگ)
business software (نرم افزارهای تجاری)
engineering/scientific software (نرم افزارهای علمی و مهندسی)
embedded software (نرم افزارهای نهفته یا تعبیه شده)
PC software (نرم افزارهای کامپیوترهای شخصی)
AI software (نرم افزارهای هوش مصنوعی)
Web applications (نرم افزارهای کاربردی تحت وب)
محیط کار
مهندسان نرم افزار دردفاتر کار راحت و با نور مناسب و یا در آزمایشگاههای رایانه ای که مجهز به تجهیزات رایانه ایست به کار می پردازند .اکثر آنها ساعت های معینی رادر هفته کار میکنند اما به علت ماهیت پروژه ای کار، ممکن است مجبور به شبکاری ویا کار در تعطیلات برای تحویل به موقع سفارش و یا حل مسائل نا خواسته فنی بشوند . آنها همانند سایر کارکنانی که ساعتها پشت رایانه می نشینند و بر روی صفحه کلید تایپ میکنند ممکن است دچار عوارضی چون خستگی چشم ، کمر درد و ناراحتی های دست و مچ مانند سندرم تونل کارپال شوند.
بسیاری از مهندسان نرم افزار در تلاش برای بهبود برنامه های نرم افزاری برای کاربران ، باید با مشتریان و همکاران ، تبادل کاری نزدیک داشته باشند.
مثلا مهندسانی که توسط فروشندگان نرم افزار وشرکتهای مشاوره ای استخدام می شوند ، اکثر اوقات خود را دور از محل کار خود میگذرانند وبرای ملاقات با مشتریان سفرهای شبانه میکنند . آنها با مشتریهایی از کارهای تولیدی گرفته تا مؤسسات مالی سرو کار دارند.
با گسترش شبکه های اینترنتی ، مهندسان نرم افزار قادر خواهند بود با استفاده از مودمها ، رایانه های قابل حمل ، پست الکترونیکی و اینترنت از دفتر کار خود و با اتصال به رایانه مشتریان حمایتهای فنی را ارائه داده و مشکلات جزئی را شناسایی و رفع کنند.
محدوده مهندسی نرمافزار و تمرکز آن
مهندسی نرمافزار به مفهوم توسعه و بازبینی یک سیستم نرمافزاری مربوط میباشد. این رشته علمی با شناسایی، تعریف، فهمیدن و بازبینی خصوصیات مورد نیاز نرمافزار حاصل سر و کار دارد. این خصوصیات نرمافزاری ممکن است شامل: پاسخگویی به نیازها، اطمینانپذیری، قابلیت نگهداری، در دسترس بودن، آزمونپذیری، استفاده آسان، قابلیت حمل و سایر خصوصیات باشد.
مهندسی نرمافزار ضمن اشاره به خصوصیات فوق، مشخصات معین طراحی و فنیای را آماده میکند که اگر بدرستی پیادهسازی شود، نرمافزاری را تولید خواهد کرد که میتواند بررسی شود که آیا این نیازمندیها را تامین میکند یا خیر.
مهندسی نرمافزار همچنین با خصوصیات پروسه توسعه نرمافزاری در ارتباط است. در این رابطه، با خصوصیاتی مانند هزینه توسعه نرمافزار، طول مدت توسعه نرمافزار و ریسکهای توسعه نرمافزار درگیر است.
نیاز به مهندسی نرمافزار
نرمافزار عموماً از محصولات و موقعیتهایی شناخته میشود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژِی هستهای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامههایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیدهترین ماشینهای مدرن قابل مقایسهاند. بهعنوان مثال یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی خدود ده میلیون بخش دارد)، در حالی که نرمافزار هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.
تکنولوژیها و روشهای عملی
مهندسین نرمافزار طرفدار تکنولوژیها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگارند. این بحث در سالهای دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسین نرمافزار از تکنولوژیها و روشهای عملی بسیار متنوعی استفاده میکنند. کسانی که کار عملی میکنند از تکنولوژیهای متنوعی استفاده میکنند : کامپایلرها، منابع کد، پردازشگرهای متن. کسانی که کار عملی میکنند از روشهای عملی بسیار متنوعی استفاده میکنند تا تلاشهایشان را اجرا و هماهنگ کنند : برنامه نویسی در دستههای دونفری، بازبینی کد، و جلسات روزانه. هدف هر مهندس نرمافزار بایستی رسیدن به ایدههای جدید خارج از مدلهای طراحی شده قبلی باشد، که باید شفاف بوده و بخوبی مستند شده باشد.
با وجود رشد فزاینده اقتصادی و قابلیت تولید فزایندهای که توسط نرمافزار ایجاد شده، هنوز هم بحث و جدلهای ماندگار درباره کیفیت نرمافزار ادامه دارند.
ماهیت مهندسی نرمافزار
دیوید پارناس گفتهاست که مهندسی نرمافزار یک شکل از مهندسی است. استیو مککانل گفتهاست که هنوز اینطور نیست، ولی مهندسی نرمافزار باید یک شکل از مهندسی بشود. دونالد کنوت گفتهاست که برنامه نویسی یک هنر است.
دیوان فعالیتهای آماری آمریکا مهندسان نرمافزار را به عنوان زیرگروهی از «متخصصین کامپیوتر»، با فرصتهای شغلیای مانند «دانشمند کامپیوتر»، «برنامه نویس» و «مدیر شبکه» دسته بندی کردهاست. BLS تمام مهندسین دیگر این شاخه علمی، که شامل مهندسین سختافزار کامپیوتر نیز هست، را بهعنوان «مهندسین» دسته بندی میکند.
فرصت های شغلی رشته نرم افزار
فرصتهای شغلی
هر چند مهندسان نرم افزار توسط اکثر صنایع استخدام می شوند، بیشترین تجمع آنها در صنایع رایانه و خدمات پردازش اطلاعات میباشد. این صنایع شامل شرکنهایی هستند که بسته های نرم افزاری آماده را تولید میکنند و یا خدمات رایانه ای قراردادی مانند برنامه نویسی رایانه ای ، یکپارچه سازی سیستم ها و بازیابی اطلاعات مانند خدمات اینترنتی و پایگاههای داده ها را ارائه می دهند میباشند.
بسیاری از مهندسان نرم افزار در سایر بخش ها مانند مراکز دولتی ، سازندگان رایانه و تجهیرات الکنرونیکی مربوطه ، کالج ها و دانشگاها به فعالیت می پردازند.
کارفرمایانی که مهندسین نرم افزار را استخدام میکنند از شرکتهای تازه کار گرفته تا موسسات صنعتی پیشرو و جا افتاده را شامل میشوند . گسترش اینترنت ، پست الکترونیکی و سایر سیستمهای ارتباطی باعث بسط الکترونیک به شرکتهای مهندسی می شود که زمینه های کاری اساسا نامربوطی به این رشته دارند.
مثلا شرکنهای مهندسی که متخصص در ساخت پلها و نیرو گاهای برق می باشند به منظور طراحی و گسترش سسیستمهای اطلاعات جغرافیایی و قابلیت های طراحی خود کار، مهندسان نرم افزار را استخدام می کنند. شرکنهای ارتباطاتی به منظور بهره برداری از بازاردرحال رشد ارتباطات شخصی ، به مهندسان نرم افزار نیازمندند . شرکتهای اصلی ارتباطاتی موقعیت های کاری مناسبی را هم برای مهندسان نرم افزار کار بردی و هم مهندسان سیستم فراهم می کنند.
تعداد روزافزونی از مهندسان نرم افزار که اکثرا خود اشتغالند به عنوان مشاور به شکل قراردادی یا پیمانی به کار گرفته می شوند . گروهی از مشاوران در شرکتهای تخصصی مشغول بکارند که ایجاد و نگهداری اینترانت وپایگاههای اینترنتی شرکتها را بر عهده دارند. ا ز آنجایی که شرکتهای تجاری نیاز به مدیریت ، به روز رسانی و سفارشی سازی سیستمهای پیچیده رایانه ای دارند لذا فرصتهای مشاوره ای برای مهندسان نرم افزاری از روند رو به افزایش بر خوردار خواهد بود.
چشم انداز آینده
فرصت های شغلی برای مهندسان نرم افزاری از رشد سریعی بر خوردار است . احتمال می رود که رشد سریع در صنایع رایانه ای و خدمات پردازش اطلاعات که بالا ترین شمار استخدام مهندسین نرم افزار را داراست منجربه ایجاد فرصت های شغلی مناسبی برای فارغ التحصیلان این رشته باشد . کار فرمایان به دنبال استخدام مهندسان زبده ای هستند که در زمینه برنامه نویسی ، تجزیه و تحلیل سیستمها روابط عمومی و تجارت دارای مهارت های بالایی باشند. از آنجایی که مشاغل تجاری و دیگر سازمان ها روز به روزبا فنآوری جدید وفق میابند و به دنبال افزایش کارایی سیستمهای رایانه ای خود می باشند، انتظار می رود که استخدام مهندسان نرم افزار در همه زمینه ها روند صعودی یابد. رقابت میان مشاغل تجاری عاملی در جهت ادامه نوآوری های پیشرفته فنآوری میشود و سازمانها برای اجرای تغییرات لازم در این مسیر به همکاری مهندسان نرم افزار بیشتری نیاز پیدا خواهند کرد . نیاز به مهندس نرم افزار با رشد شبکه های رایانه ای افزایش می یابد به عنوان مثال نتیجه گسترش فنآوری اینترنت و رشد سریع تجارت الکترونیکی و داد و ستد اینترنتی استخدام بیشتر مهندسان نرم افزار است که توانایی راه اندازی اینترنت ، و سایر امور شبکه را داشته باشند . مهندسین نرم افزار است. که توانایی راه اندازی اینترنت و سایر امور شبکه را داشته باشند.همچنین گسترش سیستمهای پردازش اطلاعات در مشاغل تجاری ، مخابرات ، مراکز دولتی و سایر موارد روز به روز شکل پیچیده تری می یابد وبه منظور راه اندازی ، حفظ امنیت و ارتقای سیستمها و حل مشکلات به گروهی از مهندسان سیستمهای نرم افزاری نیاز می باشد.همزمان با این تحولات فرصت های مشاوره نرم افزاری نیز برای مهندسان فراهم شود.
وضعیت نیاز ایران:
رشته کامپیوتر که باعث جهانی شدن اطلاعات و ارتباطات شده است ، رشته امروز و آینده است تا جایی که پیش بینی میشود تا ۱۰ سال دیگر در کشورهای پیشرفته مردم همان قدر که به نیروی برق وابسته هستند به شبکه اینترنت وابسته خواهند شد. با توجه به توضیحات گفته شده روند رو به رشد استفاده از کامپیوتر در زندگی روزانه، اشتغال و موقعیت کاری برای فارغ التحصیلان این رشته فراهم است تا در قالب شرکتهای تولیدکننده نرم افزار، شرکتهای تولیدکننده قطعات، مراکز صنعتی تولیدی، شرکتها و مؤسسات خدماتی، مراکز آموزشی و … مشغول به کار شده و فعالیت کنند.
با توجه به پیشرفت کند ایران نسبت به جامعه جهانی کامپیوتر، در سالهای اخیر نیاز به مهندسین خلاق و کوشا در این زمینه کاملاً احساس می شود. روند رو به رشد استفاده از کامپیوتر در محافل عمومی و خصوصی، استفاده گسترده از شبکه اینترنت و زمینه های مرتبط با آن، فراهم آمدن شرایط آموزش و تجارت الکترونیک همه و همه دست به دست هم داده اند تا از اکنون چشم انداز روشنی نسبت به آینده این رشته وجود داشته باشد به نحوی که فعالان در این زمینه از آینده معلوم و مطمئنی برخوردار خواهند بود. تنها نگرانی به قسمت نرم افزار مربوط می شود که باید مهندسان خلاق ایرانی اقدام به تهیه نرم افزارهای گوناگون و کارآمد کرده تا تنها مصرف کننده صرف نباشیم.
خیلی مطلبتون مفید بود
ممنون مغسی گلم…………..
خیلی مطالب خوبی گذاشته بودید ممنون بابت زحماتتون.. موفق و پیروز باشید
با سلام و خسته نباشید . مطالب خیلی خوبی رو به اشتراک گذاشته بودید ممنون از زحمت هاتون موفق باشید.
خیلی مطالب خوب و مفیدی بود ممنون از زحماتتون همیشه موفق باشید;-)
سلام تشکر می کنم از شما مرسی
باتشکروسپاس فراوان
با تشکر فراوان از ذکات علمت بهره مند شدیم
عالی بود واقعا ممنون.
خیلی ممنون از بابت مطالب خیلی خوبتون
خواهش میکنم انشالله با مطالب و موضوعات مرتبط مادر ارتباط باشید و در کانال تلگرام عضو شوید @iranElearn
مطالب بسیار خوب بود . من مطمئنم اگر قانون کپی رایت در ایران سرو سامان بگیره قطعا سهم عمده ای رو از مهندسان ترم افزار رو شامل میشه