معرفی رشته تحصیلی نرم افزار

همه چیز در مورد رشته تحصیلی نرم افزار

+ نوشته شده در  یکشنبه نهم بهمن ۱۳۹۰ساعت 22:57  توسط مجید ملکشاهی بیرانوند  | 

معرفی رشته نرم افزار

ماهیت کار

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

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

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

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

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

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

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

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

محیط کار

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

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

مثلا مهندسانی که توسط فروشندگان نرم افزار وشرکتهای مشاوره ای استخدام می شوند ، اکثر اوقات خود را دور از محل کار خود میگذرانند وبرای ملاقات با مشتریان سفرهای شبانه میکنند . آنها با مشتریهایی از کارهای تولیدی گرفته تا مؤسسات مالی سرو کار دارند .

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

فرصتهای شغلی

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

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

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

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

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

آموزش و ادامه تحصیل

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

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

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

با پیشرفت فنآوری رایانه ای ، کار فرمایان به مهارتهای جدید تری نیاز پیداخواهند کرد.

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

چشم انداز آینده

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

میزان در آمد

در سال ۲۰۰۰ میانگین در آمد سالانه مهندسان نرم افزار که تمام وقت فعالیت داشته اند در ایالات متحده حدود ۶۷۶۷۰ دلار بوده است .

+ نوشته شده در  شنبه هشتم بهمن ۱۳۹۰ساعت 20:14  توسط مجید ملکشاهی بیرانوند  | 

مهندسی کامپیوتر

پیشینه مهندسی نرم‌افزار [ویرایش]

اصطلاح مهندسی نرم‌افزار بعد از سال ۱۹۶۸ شناخته شد. این اصطلاح طی کنفرانس «مهندسی نرم‌افزار ناتو ۱۹۶۸» (که در گارمیش آلمان برگزار شد) توسط ریاست کنفرانس F.L. Bauer معرفی شد و از آن پس بطور گسترده مورد استفاده قرار گرفت.

اصطلاح مهندسی‌نرم‌افزار عموماً به معانی مختلفی به کار می‌رود:

  • به‌عنوان یک اصطلاح جامع برای تمامی جنبه‌های عملی برنامه‌نویسی کامپیوتر، در مقابل تئوری برنامه نویسی کامپیوتر، که علوم کامپیوتر نامیده می‌شود.
  • به‌عنوان اصطلاح مجسم کننده طرفداری از یک رویکرد خاص نسبت به برنامه‌نویسی کامپیوتر که اصرار می‌کند، مهندسی نرم‌افزار، بجای انکه هنر یا مهارت باشد، باید به‌عنوان یک رشته عملی مهندسی تلقی شود و از جمع کردن و تدوین روش‌های عملی توصیه شده به شکل متدولوژی‌های مهندسی نرم‌افزار طرفداری می‌کند.
  • مهندسی نرم‌افزار عبارتست از : الف) کاربرد یک رویکرد سیستماتیک، انتظام یافته، قابل سنجش نسبت به توسعه، عملکرد و نگهداری نرم‌افزار، که کاربرد مهندسی در نرم‌افزار است و ب) مطالعه روشهای موجود در استاندارد IEEE

محدوده مهندسی نرم‌افزار و تمرکز آن [ویرایش]

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

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

مهندسی نرم‌افزار همچنین با خصوصیات پروسه توسعه نرم‌افزاری در ارتباط است. در این رابطه، با خصوصیاتی مانند هزینه توسعه نرم‌افزار، طول مدت توسعه نرم‌افزار و ریسک‌های توسعه نرم‌افزار درگیر است.

نیاز به مهندسی نرم‌افزار [ویرایش]

نرم‌افزار عموماً از محصولات و موقعیتهایی شناخته می‌شود که قابلیت اطمینان زیادی از آن انتظار می‌رود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاه‌های انرژِی هسته‌ای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامه‌هایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیده‌ترین ماشینهای مدرن قابل مقایسه‌اند. به‌عنوان مثال یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی خدود ده میلیون بخش دارد)، در حالی که نرم‌افزار هدایت چنین هواپیمایی می‌تواند تا ۴ میلیون خط کد داشته باشد.

تکنولوژی‌ها و روشهای عملی [ویرایش]

مهندسین نرم‌افزار طرفدار تکنولوژی‌ها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگارند. این بحث در سالهای دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسین نرم‌افزار از تکنولوژی‌ها و روشهای عملی بسیار متنوعی استفاده می‌کنند. کسانی که کار عملی می‌کنند از تکنولوژی‌های متنوعی استفاده می‌کنند : کامپایلرها، منابع کد، پردازشگرهای متن. کسانی که کار عملی می‌کنند از روشهای عملی بسیار متنوعی استفاده می‌کنند تا تلاشهایشان را اجرا و هماهنگ کنند : برنامه نویسی در دسته‌های دونفری، بازبینی کد، و جلسات روزانه. هدف هر مهندس نرم‌افزار بایستی رسیدن به ایده‌های جدید خارج از مدلهای طراحی شده قبلی باشد، که باید شفاف بوده و بخوبی مستند شده باشد.

با وجود رشد فزاینده اقتصادی و قابلیت تولید فزاینده‌ای که توسط نرم‌افزار ایجاد شده، هنوز هم بحث و جدل‌های ماندگار درباره کیفیت نرم‌افزار ادامه دارند.

ماهیت مهندسی نرم‌افزار [ویرایش]

دیوید پارناس گفته‌است که مهندسی نرم‌افزار یک شکل از مهندسی است. استیو مک‌کانل گفته‌است که هنوز اینطور نیست، ولی مهندسی نرم‌افزار باید یک شکل از مهندسی بشود. دونالد کنوت گفته‌است که برنامه نویسی یک هنر است.

دیوان فعالیتهای آماری آمریکا مهندسان نرم‌افزار را به عنوان زیرگروهی از «متخصصین کامپیوتر»، با فرصت‌های شغلی‌ای مانند «دانشمند کامپیوتر»، «برنامه نویس» و «مدیر شبکه» دسته بندی کرده‌است. BLS تمام مهندسین دیگر این شاخه علمی، که شامل مهندسین سخت‌افزار کامپیوتر نیز هست، را به‌عنوان «مهندسین» دسته بندی می‌کند.

جُستارهای وابسته

+ نوشته شده در  شنبه هشتم بهمن ۱۳۹۰ساعت 20:8  توسط مجید ملکشاهی بیرانوند  | 

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

مهندسی نرم‌افزار پیشه‌ای است که به یاری دانش رایانه و دیگر فناوری‌ها و روش‌ها به آفریدن و نگاهداری نرم‌افزار رایانه‌ای می‌پردازد.

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

  • الزام های تعیین شده
  • در زمان تعیین شده
  • در محدودهٔ بودجه پیش‌بینی شده

مهندسی نرم‌افزار طراحی، برنامه نویسی، توسعه، مستندسازی و نگهداری نرم‌افزار با بکارگرفتن روشهای فنی و عملی از علوم کامپیوتر، مدیریت پروژه، مهندسی، محدوده کاربرد، طراحی رابط، مدیریت تجهیزات دیجیتال و سایر زمینه‌ها است.

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

فناوری‌ها و خدمات مهندسی نرم‌افزار به کاربران برای بهبود بهره‌وری و کیفیت یاری میرساند. نمونه‌هایی از زمینه‌های بهبود: پایگاه داده‌ها، زبان‌ها، کتابخانه‌ها، الگوها، فرآیندها و ابزار.


برچسب‌ها: مهندسی کامپیوتر
+ نوشته شده در  شنبه هشتم بهمن ۱۳۹۰ساعت 20:7  توسط مجید ملکشاهی بیرانوند  |