مهندسی نرم افزار software engineering از نگاهی دیگر
گسترده شدن استفاده از فناورى اطلاعات تقریباً در تمامى عرصه هاى زندگى و حیات انسان، اهمیت و نقش تولیدکنندگان محصولات نرم افزارى را به شدت افزایش داده است. در اینجا لفظ تولیدکنندگان به مجموعه افرادى اطلاق مى شود که در طول چرخه حیات یک سیستم نرم افزارى در ساخت، توسعه و نگهدارى آن مشارکت دارند.کشور ما هنوز دوران اولیه بلوغ خود را در عرصهIT تجربه مى کند، دوره اى سرشار از مسائل و چالش هاى گوناگون. چالش هایى که برخى از آنها به سیاست هاى کلان کشور مرتبط و برخى دیگر زاییده ویژگى هاى خاص نرم افزار و دست اندرکاران تولید و توسعه آن است.
این چالش ها به اشکال مختلف در مقابل تمامى دست اندرکاران این حوزه و به ویژه مدیر یک پروژه نرم افزارى عرض اندام مى کنند. عوامل زیر را مى توان سرچشمه بخش بزرگى از مشکلات این حوزه به شمار آورد:
- تکمیل نکردن زیرساخت هاى ضرورى IT، فراگیر نشدن فرهنگ استفاده از این فناورى در بخش وسیعى از حوزه ها، ارزان بودن نرم افزار برخلاف هزینه تولید بالاى آن و رعایت نکردن حقوق تولیدکنندگان محصولات نرم افزار به شکلى که بسیارى از نرم افزارها (چه نرم افزارهاى تولید داخل و چه تولید خارج) به راحتى و با قیمتى بسیار اندک در دسترس همگان است. نبود سرمایه گذارى مناسب براى پژوهش و تحقیق در حوزه نرم افزار. اگرچه مساعدت هایى در اختیار بخش هاى مختلف خصوصى و دولتى در چهارچوب طرح هاى مختلف قرار گرفته است، عمده این سرمایه ها اغلب به سمت بخش هاى سخت افزارى سرازیر شده و در عمل سرمایه گذارى در عرصه تولید و به تناسب آن تحقیق و پژوهش کاربردى حوزه نرم افزار که در زمره سودآورترین عرصه هاى اقتصادى در دنیا شناخته مى شود، بسیار اندک است.- ناتوانى هاى شرکت هاى تولید نرم افزار- دست اندرکاران تولید نرم افزار در کشور ما بیشتر شرکت هاى کوچک نرم افزارى با پشتوانه هاى مالى اندک هستند. شرکت هایى که هنوز بلوغ سازمانى کافى نیافته اند، قادر نیستند متناسب با متحول ترین عرصه تکنولوژیک رشد کنند و قراردادهاى ناپخته بیشتر این مشتریان مهم حوزه نرم افزار را سازمان هاى دولتى و نیمه دولتى تشکیل مى دهند. قراردادهاى تولید نرم افزار، قراردادهایى ناپخته و یک طرفه هستند و مجریان چنین پروژه هایى، با وجود آگاهى نسبت به ضعف هاى آن بیشتر اوقات به دلایل اقتصادى مجبور به پذیرش آنها هستند.در چنین فضایى مدیران پروژه هاى نرم افزارى با چالش ها، مسائل و مشکلات بسیارى روبه رو هستند که بخش عمده آن به ارتباط با سه گروه اصلى کارفرمایان (مشتریان)، اعضاى تیم یا کارکنان بخش نرم افزار و مدیر شرکت هاى نرم افزارى بازمى گردد.
• کارفرمایان و مشتریان
گروه اصلى و ذى نفع مرتبط با یک محصول نرم افزارى را مشتریان یا کاربران آن تشکیل مى دهند؛ کسانى که در حقیقت تامین کننده منابع مالى لازم براى تولید آن به شمار مى روند. شاید به جرات بتوان گفت که بیشترین چالش ها در تقابل با این گروه – که عمده ترین تامین کننده منابع مالى بخش هاى تولید نرم افزار هم هستند- رخ مى نماید. در عرصه ارتباط مدیران پروژه با این گروه مسائلى وجود دارد که ریشه آن را مى توان در میان موارد زیر جست وجو کرد:
- بخش هاىIT همچنان در اغلب سازمان ها و مراکز صنعتى، خدماتى و بازرگانى سازمان ضعیفى دارند و از دانش و فناورى روز، در عرصه اى که تکامل و تحول در آن، ساعت به ساعت رخ مى نماید، به دور هستند.
- کاربران، مدیران و ذى نفعان یک سیستم نرم افزارى دید روشنى از نرم افزار و قابلیت هاى آن ندارند.
- نرم افزار هنوز به عنوان کالایى ارزشمند شناخته نشده و کارفرمایان و مشتریان نرم افزار اگرچه حاضر هستند بهاى بالایى را براى یک سخت افزار براى مثال یک مانیتور بپردازند، در صرف هزینه براى نرم افزار به شدت خوددار هستند.
- در مزایاى خرید، تولید و استفاده از نرم افزار تردید دارند.
- دید روشنى از نیازهاى خود و قابلیت مکانیزاسیون آنها ندارند.
- دید روشنى از حجم تلاش لازم براى تولید یک نرم افزار ندارند.
- به ویژه در موازنه طرف هاى قرارداد ساخت و تولید نرم افزار، خود را طرف قدرتمند محسوب مى کنند. حاصل چنین موازنه اى قراردادهایى غیرواقع بینانه و یک طرفه است.
- به فرهنگ و دانش لازم براى استفاده از خدمات مکانیزه و الزامات، محدودیت ها و توانایى هاى آن کم بها مى دهند . از فناورى تولید نرم افزار، روش هاى تولید و توسعه، کیفیت در نرم افزار و به طور کلى مباحث تکنیکى و مدیریتى این حوزه کم تر آگاه هستند. براى نمونه در بسیارى از پروژه ها در حالى که براى مثال فرآیندى تکرارپذیر مانند RUP را به عنوان روش تولید نرم افزار در متن قرارداد بیان مى کنند، مراحل تحویل فرآورده هاى پروژه را آبشارى مشخص مى کنند.
به هر حال هر مدیر پروژه بسته به ویژگى هاى سازمان کارفرما یا مشتریان خود، مى تواند
اقلام جدیدى به فهرست بالا اضافه کند.
این وب لاگ به منظور افزایش سطح اطلاعات مهندسان نرم افزار و اصلاح دید فارغ التحصیلان این رشته نسبت به علم مهندسی نرم افزار ایجاد شده است.