مهندسي نرم افزار
چشمانداز شغلي
همانطوري كه ميدانيد بسياري از امكانات و قابليتهاي برجسته و فوقالعاده فناوري اطلاعات (IT) در زمينه ارايه كالا و خدمات به بازار مصرف، وابستگي تام به نرمافزارهاي مربوط به آن دارد. در حال حاضر مهمترين زمينه توسعهاي در رابطه با معرفي سيستمهاي جديد IT به بازار مصرف، نرمافزارنويسي ميباشد كه در خلال آن نرمافزارنويسان در طي پنج مرحله شناسايي نوعي كالا/خدمات، ايجاد، تست، نصب و راهاندازي و ارتقاء قابليت نرمافزارها به اين كار مبادرت ميورزند. براي انجام اين كار ابتدا نرمافزارنويسان با كمك تيم كاري خود به شناسايي پيشنيازهاي مشتريان پرداخته، سپس اين پيشنيازها را به كدهاي نرمافزاري كارآمد و معتبر ترجمه و تبديل مينمايند.
در همين راستا فرد نرمافزار نويس بايد علاوه بر تسلط و درك كامل خواستههاي مشتريان در يكي از زمينههاي مختلف و متنوع فناوري اطلاعات و نرمافزارنويسي نظير بازيهاي رايانهاي و كارتهاي اعتباري الكترونيكي نيز تخصص و تجربه كافي كسب كرده باشد.
در اين بين برنامهنويسي يكي از بهترين و پردرآمدترين زمينههاي شغلي فناوري اطلاعات به شمار ميرود زيرا از طريق آن امكان راهيابي به ديگر زمينههاي تخصصي و فوق تخصصي نظير مديريت تيم/پروژه، طراحي و آناليز برنامه به راحتي ميسر ميباشد.
حتي نرمافزار نويسان ميتوانند از امكانات ويژه برخي از شركتهاي متقاضي، كه دورههاي آموزشي و بازآموزي نيز براي فارغالتحصيلان رشتههاي مختلف تحصيلي فناوري اطلاعات تدارك ميبينند، استفاده نموده و در اين زمينه به يك فرد كاملاً با تجربه و ماهر تبديل شوند.
در اين زمينه شغلي فرد نرمافزار نويس با استفاده از زبانهاي رايج برنامهنويسي نظير D.B.M.S يا همان سيستم مديريت پايگاه دادهها و ديگر ابزارهاي توسعهاي نرمافزارنويسي ميتواند براي برآورده ساختن نيازهاي ويژه متقاضيان به طراحي، ايجاد، تست، راهاندازي و ارتقا نرمافزار مورد دلخواه بپردازد. آنها همچنين ميتوانند براي انجام اين كار از توسعه متدولوژيهاي موجود نيز بهرهبرداري نمايند. در واقع يك فرد نرمافزار نويس با تسلط بر انواع زبانهاي رايج برنامهنويسي و نحوه تغيير و تبديل پيشنيازهاي مشتريان به كدهاي رايانهاي قابل اعتماد و كارآمد ميتواند به چنين فعاليتي مشغول شود.
از رايجترين زمينههاي نرمافزار نويسي ميتوان به نرمافزارهاي شركتي، تجارت الكترونيك، مديريت، شبكه تلفنهاي همراه و سيستمهاي برنامهريزي منابع شركتي (E.R.P.) در محيطهاي صنعتي و بازرگاني اشاره كرد. همانطوري كه در ابتدا نيز ذكر گرديد. فرد نرمافزارنويس بايد علاوه بر درك و تسلط بر خواستههاي مشتريان به ابزارهاي تغيير و تبديل اين خواستهها به كدهاي رايانهاي كارآمد و قابل اعتماد با ارزانترين شيوه ممكن نيز تسلط كامل داشته باشد. براي مثال برنامهنويس هنگام توليد يك نرمافزار تجاري و بازرگاني بايد از فضاي كسب و كار و تنگناهاي موجود در بازار كار آگاهي كامل داشته و از دانش (HCL) يا همان نحوه تعامل انسان با رايانه نيز برخوردار باشد. از جمله نرمافزارهايي كه براي محيطهاي كار نوشته ميشوند ميتوان به مواردي نظير نرمافزارهاي رزرواسيون بليط اينترنتي، سيستمهاي اطلاعات مديريتي شركت، كه دربردارنده تمام ابعاد يك كسب و كار ميباشد، فناوري انتقال تصاوير گرافيكي يا ويدئويي به تلفنهاي همراه و ديگر ابزارآلات سيار ثبت تلفني اشاره كرد.
درست است كه فعاليت برنامهنويسي در بيشتر مواقع در قالب يك تيم پروژه و در يك مكان جغرافيايي ثابت صورت ميپذيرد ولي چند تيم پروژه مختلف نيز ميتوانند در نقاط مختلف و دور از هم بر روي يك نرمافزار خاص كار كرده و نظرات پيشنهادي و تكميلي خود را از طريق وسايل پيشرفته ارتباطي نظير اينترنت، ويدئوكنفرانس، تلفن همراه و غيره به يكديگر منتقل نمايند. اين قبيل تيم پروژهها معمولاً به صورت موقتي در كنار يكديگر قرار گرفته و بعد از اتمام پروژه از هم جدا خواهند شد مگر اين كه پروژه جديدي را با يكديگر آغاز نمايند. بنابراين براي افرادي كه وارد اين حرفه ميشوند لازم است كه از كار در تيم پروژههاي مختلف لذت ببرند. در مراحل اوليه كار، فرد نرمافزار نويس درگير انجام وظايف فني و تكنيكي بسيار سنگيني همراه با ديگر افراد حاضر در پروژه ميشود ولي همچنان كه از زمان كار ميگذرد بتدريج فاز ديگري از پروژه به نام تعامل با مشتري آغاز ميگردد كه از طريق آن نرمافزار طراحي شده بايد مورد آزمايش و بهرهبرداري نهايي قرار گيرد. علاوه بر اين نرمافزارنويسان بايد براي عقبنماندن از پيشرفتهاي صورت گرفته در زمينه فنون مختلف نرمافزارنويس ارتباط و تعامل خود با ديگر فعالان اين بخش نظير شركتهاي تجاري، مؤسسات و دانشگاهها را همچنان حفظ نمايند.
همچنين شركت در كنفرانسهاي مختلف و دورههاي آموزشي فوقالعاده نيز مستلزم آن است كه نرمافزارنويسان علاوه بر مسافرتهاي كوتاه مدت و درازمدت، شبكه ارتباط شخصي خود با ديگران را هر چه بيشتر مستحكمتر كنند.
وظايف مرتبط با زمينه شغلي برنامهنويسي:
ـ بكارگيري روشهاي مدرن طراحي و ابزارهاي توسعهاي وابسته
ـ توسعه الگوريتمهاي آزمايشگر و رمزينهاي /كنترل همزمان به روش مدولار كه متناسب با ساختار نرمافزار طراحي شده باشد.
ـ آناليز سيستمي ريز برنامهها / مدولها، عملكرد، اندازه حافظه و .... سيستمهاي فني
ـ پشتيباني مديريت پروژه
ـ ساخت سيستم اصلي و سيستمهاي جانبي بر اساس طرح و ساختار توسعه يافته و سازه مدولار
ـ ساخت نمونه اوليه بخشهاي مختلف سيستم
ـ همكاري با قالبساز (معمار) سيستمها/ طراح سيستم
ـ طراحي آزمايشهاي مدولار، همياري در طراحي آزمايش نصب و يكپارچهسازي
ـ اجراي سيستم يكپارچه، آزمايش سيستم يكپارچه و راهاندازي نهايي سيستم
ـ توسعه/ بكارگيري مدل كنترل پروژه، مدل نصب و مستندسازي كليه بخشهاي سيستم و اضافه كردن اسناد مرتبط نظير انتشار بولتن
ـ اجراي آزمايش طرح، نصب و تست نهايي سيستم
ـ ارزيابي و مرتب كردن مدل پشتيباني و ارتقاء سيستم
ـ مشخص كردن الزامات و مقيدات كاربران و الزامات عملكردي
ـ ترسيم طرح عملياتي سيستم، توسعه رمزينهاي و ديگر فازهاي طراحي نرمافزار
زمينههاي تكنولوژيك مرتبط با نرمافزارنويسي:
ـ سيستمهاي عملياتي ويژه رايانههاي شخصي، ايستگاههاي كاري و ابزارآلات مصرفي
ـ زبانهاي برنامهنويسي نظير اسمبل، C ، JAVA و ...
ـ سيستمهاي جايگزين (Embedded Systems) در تلويزيونها، پلياستيشنها و ...
ـ سيستمهاي فناوري اطلاعات شركتي نظير سيستم برنامهريزي منابع شركتي
ـ كاربردهاي اينترنتي نظير تجارت الكترونيكي
ـ سيستمهاي كار مديريتي
ـ سيستمهاي فني ويژه كنترل ماشيني و ديگر اتوماسيونهاي صنعتي
ـ ابزارهاي توسعه ويژه نرمافزارهاي سيستمي و كاربردي
ـ سيستم پايگاه دادهها ويژه تبادل ديتا با نرمافزارهاي مربوطه
ـ فناوريهاي شبكهاي در سيستمهاي پخش همزمان و فضاهاي چند سايتي
ـ مهندسي نرمافزار
ـ فناوري قطعات مختلف نرمافزاري
ـ ارتقاء و توسعه نرمافزار
نوع و سطح مهارتهاي مورد نياز:
توصيف و تشريح مسير شغلي و فرصتهاي آينده:
اين زمينه شغلي همراه با كسب سالها تجربه مستلزم توانايي تجزيه و تحليل الزامات و پيششرطهاي گاهاً بسيار سنگين مشتريان و ويژگيهاي مختلف واسطهاي كاربري (User Interface) براي مبدل شدن به يك طراح و توسعه دهنده تمام عيار مولتي مديا يا ورود به جنبه كاملاً علمي اين زمينه شغلي جهت اجراي نقشهاي علمي رايانهاي نظير فضاهاي تحقيقاتي ميباشد.
به هر ميزان فرد نرمافزارنويس بيشتر به كسب تجربه بپردازد در نهايت ميتواند اميدوار باشد كه در آينده به يك مدير پروژه تبديل خواهد شد. براي رسيدن به چنين هدفي نرمافزارنويس بايد در دورههاي مختلف آموزشي مديريت پروژه نيز شركت به عمل آورد. مشاغلي نظير طراح/ توسعه دهنده سيستم، قالببند نرمافزار (معمار) در سطوح فني مسير شغلي آينده اين فرصت شغلي قرار ميگيرند كه البته دستيابي به چنين هدفي نيز مستلزم كسب تجربه بيشتري در پروژههاي نرمافزارنويسي مختلف ميباشد.
در هر صورت براي مبدل شدن به يك مدير پروژه و يا كارآفرين در اين زمينه شغلي، علاقمندان بايد به كسب تجربه كافي در بازار كسب و كار و فعاليتهاي تجاري و بازرگاني نيز به اندازه كافي بپردازند.
عناوين شغلي مرتبط:
ـ برنامهنويس كاربردي (Application Programmer)
ـ تكنسين يكپارچهسازي (Integration Technician)
ـ طراح سيستم فني (Technical System Designer)
ـ مهندس نرمافزار (Software Engineer)
ـ متخصص پشتيباني و حفاظت (Maintenance & Support Specialist)
ـ طراح سيستم (System Developer)
ـ آرشيتكت نرمافزار (SW Architect)
مشخصات افراد واجد شرايط:
اين زمينه شغلي بيشتر به مذاق افرادي خوش ميآيد كه از حل كردن مسايل فني مشتريان نظير برنامهنويسي رايانه لذت ميبرند. علاوه بر اين افرادي كه توانايي كار با تكنيكهاي طراحي نرمافزار دارند نيز در زمره افراد رتبه اول قرار دارند. در بيشتر مواقع شركتهاي استخدام و بكارگيري نرمافزارنويسان از افراد واجد شرايط مدرك تحصيلي مربوطه را نيز طلب ميكنند اگر چه برخي ديگر نيز چندان اهميتي به اين موضوع نميدهند.
در هر صورت افرادي كه داراي مدرك تحصيلي كارشناسي برنامهنويسي رايانهاي و طراحي سيستم هستند ميتوانند به عنوان طراح سيستمهاي فني، قالبساز نرمافزار (معمار نرمافزارنويسي) و متخصص ارتقاء پشتيباني سيستم مشغول به كار شوند. جالب است بدانيد كه خيلي از شركتها همانطوري كه قبلاً ذكر گرديد اين زمينه شغلي را به افرادي واگذاري ميكنند كه داراي مدرك كارشناسي مربوطه نيز نيستند و تنها به تجربه كاري آنها استناد ميكنند.
توصيف و تشريح شغلي:
طراحي و ساخت سيستم هاي نرمافزاري تنها راه حيات دادن به قطعات بيجان سختافزاري و بهرهبرداري فني و اقتصادي از آنهاست. در واقع هيچ قطعه سختافزاري رايانهاي را نميتوان يافت كه بدون كمك نرمافزار مربوط به آن قادر به فعاليت باشد و همان طوري كه ميدانيد اين دو پا يه پاي يكديگر به پيشرفتهاي خيرهكنندهاي در عصر حاضر دست يافتهاند. آرشيتكت نرمافزار با درك كامل خصوصيات و ويژگيهاي قطعه سختافزاري ابتدا نرمافزار عملياتي آن را در ذهن خود مجسم كرده، سپس ساختار كلي آن را طراحي ميكند. در حقيقت اين مراحل اساس فناوري ساخت نرمافزار را تشكيل ميدهند كه در نهايت به توليد يك نرمافزار عملياتي منجر ميشود. با اين توصيف كوتاه ميتوان به راحتي دريافت كه طراحي و ساخت نرمافزار يك شغل كاملاً پيچيده و فني بوده كه متقاضيان ورود به اين زمينه شغلي بايد علاوه بر تسلط بر پيچيدگيهاي نرمافزاري توانايي كار گروهي نيز داشته باشند.
ورود به اين شغل عموماً از طريق برنامهنويسي در يك محيط نرمافزاري امكانپذير بوده، هر چند كه معمار نرمافزار بايد به اصول و مباني سختافزار نيز تسلط كافي داشته باشد.
اساسيترين فعاليت يك طراح و آرشيتكت نرمافزار (SW) آناليز و طراحي به زبان سطح بالا ميباشد. افرادي كه در اين زمينه شغلي مشغول به فعاليت شوند معمولاً بر روي فناوري راهكارهاي نرمافزاري كار ميكنند كه اساس شبكههاي رايانهاي و مخابراتي را تشكيل ميدهد. در همين راستا و براي حصول اطمينان از كارآيي و يا بهبود وضعيت موجود سازه، آرشيتكت نرمافزار بايد به طور منظم بر روند پيشرفتهاي فني و تكنيكي پروژه نظارت نمايد كه اين كار البته با توجه به نقش هر يك از افراد حاضر در پروژه ممكن است مستلزم انجام تحقيقات، آناليز، تعيين ساختار، طراحي، ساخت، تست، اجرا و يا ارتقاء نمونه نرمافزار باشد.
از طرف ديگر طراح و آرشيتكت نرمافزار بايد علاوه بر لحاظ نمودن نظرات و پيشنهادات مشتري و يا واحد بازاريابي، دو عامل مهم ديگر به نامهاي مطالعه مسأله و هدف از طراحي نرمافزار را نيز در آناليزهاي خود بگنجاند..
همانطوري كه در ابتدا نيز ذكر گرديد اين كار يك فعاليت كاملاً پيچيده و فني بوده كه اساساً با برنامهنويسي و طراحي سر و كار دارد و آرشيتكت بايد بر هر دو مقوله سختافزار و نرمافزار آشنايي و تسلط كامل داشته باشد زيرا در اين سطح ماهيت سختافزار كه ممكن است يك ريزتراشه رايانهاي، تجهيزات مخابراتي، كنترلر رايانهاي خودرو و يا غيره باشد، به شدت بر طراحي نرمافزار تأثيرگذار است. بعد از اين مرحله آرشيتكت نرمافزار به توسعه مدل خواهد پرداخت. مدلهاي توسعهاي غالباً نمايانگر سيستمها و محيطهاي مورد استفاده آن (كاربر/ نرمافزار/ سختافزار) به دو صورت عناصر متحرك و ثابت مي باشد. براي ساخت و طراحي چنين مدلي، آرشيتكت نرمافزار بايد با تمامي عوامل دخيل نظير مشتري، دپارتمان بازاريابي، كاربران احتمالي، سختافزارسازان و ... ارتباط مستقيم برقرار كرده و نظرات و پيشنهادات آنها را به طور كامل در فرآيند طراحي اعمال نمايد زيرا تنها از اين طريق ميتوان اطمينان حاصل كرد كه نرمافزار طراحي شده از هر لحاظ اعم از عملكرد، زبان برنامهنويسي، سيستم عامل مورد استفاده و غيره منطبق با نيازهاي واقعي مصرف كننده طراحي و ساخته شده است. از نمونه محصولاتي كه بدين روش تا به حال توليد شدهاند ميتوان به موارد ذيل اشاره كرد:
ـ سيستمهاي عامل (ويندوز)
ـ زبانهاي برنامهنويسي (Java)
ـ ابزارآلات كنترل دقيق نرمافزاري (سيستمهاي ميني ديسك يا بخشي از موتور يك خودرو)
ـ كنترلرهاي شبكه مخابراتي
بيشتر افرادي كه اين زمينه شغلي را براي خود برميگزينند، غالباً در آزمايشگاههاي ويژه طراحي و توسعه نرمافزار و در غالب يك تيم كاري به فعاليت مشغول ميشوند، در اين بين اندازه تيم پروژه به دو عامل نوع محصول و مرحله توسعه بستگي كامل دارد زيرا براي مثال توسعه اوليه يك محصول نرمافزاري بر عكس مرحله برنامهنويسي آن نيازمند چند تيم كاري كوچك و متمركز ميباشد.
وظايف مرتبط با زمينه شغلي :
ـ تعيين و تشخيص نيازها و الزامات بازار و شركتها
ـ ساخت سازه
ـ ايجاد مدلهاي شفاف، دقيق، منسجم و يكپارچه از پيشنيازهاي مطرح شده
ـ توسعه مدلهاي آناليزي براي حل مشكلات و محدوديتهاي سيستم
ـ ارائه راهكارهاي طراحي
ـ آمادهسازي پيشنمونههاي آزمايشي
ـ توصيف و تشريح مشخصات و ابعاد كلي سيستم
ـ ايجاد طرحهاي نگاهداري و اجرايي
ـ توليد محصولات ارتقاء يافته
زمينههاي تكنولوژيك مرتبط:
ـ سيستمهاي عامل (ويندوز)
ـ زبانهاي برنامهنويسي (JAVA)
ـ سيستمهاي (Embedded) اعمال كنترلي يك تلفن همراه
ـ نرمافزارهاي ويژه كنترل ابزارآلات مخصوص
ـ سيستمهاي مخصوص كنترل شبكهها و سيستمهاي رايانهاي بسيار بزرگ
ـ نرمافزار مخصوص كنترل عمليات ماشينهاي بازي و سرگرمي
ـ نرمافزار مخصوص كار با اينترنت (Netscape)
ـ ابزارهاي توسعهاي نرمافزاري
ـ نرمافزار مخصوص كنترل عمليات شبكههاي مخابراتي
نوع و سطح مهارتهاي مورد نياز:
ـ توانايي جهتگيري فني و عاطفي
ـ توانايي تجزيه و تحليل
ـ توانايي برقراري ارتباط و تعامل سازنده با ديگران
ـ توانايي شركت در كارهاي گروهي
ـ خلاق
ـ استدلالگر
ـ برخورداري از تيزهوشي و ذكاوت كسب و كاري
ـ برنامهنويسي رايانهاي
ـ مهندسي نرمافزار
ـ طراحي و ساخت سيستم
ـ طراحي سيستمهاي محاسباتي
ـ رياضيات
ـ متدهاي توسعه سيستمي
ـ مستندسازي فني
ـ طرحريزي مفاهيم اوليه نرمافزارها
ـ الگوهاي طراحي
توصيف و تشريح مسير شغلي و فرصتهاي آينده:
افرادي كه در اين زمينه شغلي به كسب تجربه ميپردازند ميتوانند به طراح و سازنده يك محصول نرمافزاري و يا يك خانواده نرمافزاري تبديل شوند. در اين مرحله آرشيتكت نرمافزار با نام محصول توليدي خود در داخل يا خارج از شركت شناخته خواهد شد. در هر صورت با كسب مقداري تجربه در اين زمينه شغلي ميتوان علاوه بر جلب رضايت مشتريان مختلف در بازار با استفاده از طراحي و ساخت نرمافزارهاي مورد نياز آنها، در نهايت به يك مدير پروژه طراحي و توليد نرمافزار ارتقاء پيدا كرد.
مشخصات افراد واجد شرايط:
اين زمينه شغلي نيازمند افراد خلاق و با انگيزه و با توانايي انجام كارهاي فني پيشرفته و پيچيده براي حل مسايل و در نهايت توليد و توسعه محصولات نرمافزاري است. از ديگر مشخصات افراد واجد صلاحيت ميتوان به موارد ذيل اشاره كرد:
ـ داشتن مدرك دانشگاهي ليسانس و بالاتر در زمينه مهندسي نرمافزار يا ديگر زمينههاي مرتبط با IT
ـ دارا بودن تجربه فني موفقيت آميز قبلي در ديگر مشاغل فني مرتبط با IT نظير برنامهنويسي رايانهاي يا طراحي شبكه