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

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

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

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

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

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

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

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

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

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

با نگاهی به سایت های کاریابی به راحتی می توان اولویت های فناوری های مختلف در ایران را شناسایی نمود. متاسفانه هیچ آماری از شرکتی معتبر در ایران برای نظارت و اندازه گیری زبان های برنامه نویسی و فناوری های توسعه نرم افزار وجود ندارد ولی هر سال IEEE آماری از ده زبان برتر با در نظر گرفتن ضریب نفوذ آن منتشر می کند.

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

در گزارش جهانی IEEE  برای سال 2015 این مسئله نمایان میشود که ایران از لحاظ فنی تفاوتی عمده با جریان های استاندارد دارد:

Java100
C99.9
C++99.4
Python96.5
C#91.3
R84.8
PHP84.5
JavaScript83.0
Ruby76.2
Matlab72.4

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

در ایران قبل از محبوبیت اندروید کسی که می خواست سریعتر جذب بازارکار شود می بایست آشنا به سی شارپ یا PHP می بود و اندروید باعث شد توجهات بیشتری بسمت جاوا جلب شود ولی آیا وجود اندروید باید توجهات بازار را بسمت جاوا جلب می کرد و یا متن باز بودن آن و غیر وابسته بودن پلت فرم ؟

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

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

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

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

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

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

در ایران تیم های توسعه با توجه به سرعت پاسخ به درخواست های مشتریانشان و برای اینکه خیالشان از وجود برنامه نویس راحت باشند بیشتر به سراغ C# و  PHP می روند ، یعنی اگر آشنا به یکی از این دو زبان باشید در ایران هیچ گاه بیکار نخواهید بود. محصولات توسعه Microsoft مثل Visual Studio در کنار تسهیل مراحل تولید نرم افزار ، با استفاده از Wizard های بسیاز زیاد و کاربردی تولید یک محصول نرم افزاری را از کد زنی به یک سری توابع آماده هدایت می کند که نه تنها موجب تسریع در فرآیند تولید نرم افزار می شود بلکه انبوهی از کد ها را ایجاد می نماید که مدیریت آنها در صورتی که برنامه نویس حرفه ای نباشد به سختی امکانپذیر میشود. گاهی برنامه نویس محصولی را ایجاد کرده و خطاهایی را مشاهده می کند که هیچ گونه کنترل و یا دانشی درباره ی آن ندارد و مسئله را با جستجو در stackoverflow و با کپی کردن بلاک های کدی که در آن سایت بعنوان پاسخ تایید شده قرار گرفته ، حل می کند. لذا مجددا برنامه نویس دانش لازم را برای کمتر کردن رویدادهای غیر معمول در فرآیندهای نرم افزاری پیدا نمی کند.

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

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

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

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

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

محمد رضا بهمنی

15 فروردین 1394

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

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

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