شرکت مدل سازان نرم افزار (مسنا)

نگاهی نو، راهی نو، آینده ای پیش رو

شرکت مدل سازان نرم افزار (مسنا)

نگاهی نو، راهی نو، آینده ای پیش رو

شرکت مدل سازان نرم افزار  (مسنا)

شرکت مدل سازان نرم افزار
ارائه راه حلهای پردازش ابری
ارائه راه حلهای مبتنی بر تبلت و گوشی های هوشمند
تولید نرم افزار های تحت وب
طراحی و تولید سرویسهای نرم افزاری (SAAS)
----
از سایت شرکت بازدید کنید www.masna-soft.ir

۵ مطلب در تیر ۱۳۹۴ ثبت شده است

دشواری های ورود به یک پروژه نیمه تمام

چندی پیش وارد یک پروژه نیمه تمام نرم افزاری شدیم، در حالیکه تیم قبلی قرار نبود همکاری در ادامه ساخت سیستم را ادامه دهد و البته مستنداتی به جز کد از سیستم نیز وجود نداشت.

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

مدتی ذهنم مشغول بود و  دنبال دلایل این وضعیت می­گشتم که دستاوردهای جالبی به ذهنم رسید که در این پست به آن می­پردازم.

شاید شما هم شنیده باشید که هزینه رفع یک اشکال از سیستم در فازهای مختلف فرایند تولید متفاوت است. در جداول زیر (بدون اشاره به منبع) به برخی از این آمارها اشاره شده است:

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

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

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

مطالب فوق را می ­توان به عنوان دلایل اصلی مربوط به کندی و پر­هزینه شدن پروژه­ ای دانست که ما در آن وارد شده بودیم.

  • شرکت مدل سازان نرم افزار (مسنا)

مرکز خدمات پردازش ابری آمازون (AWS) اعلام کرد که در حال راه‌اندازی نسل جدید مراکز داده خود در هند است و پیش‌بینی می‌کند این کشور سرانجام به یکی از بزرگ‌ترین قطب‌های جهان در حوزه خدمات ابری تبدیل شود.


به گزارش ایتنا از رایورز به نقل از زد.دی.نت، مرکز خدمات ابری آمازون توضیح داد که در سال ۲۰۱۶ میلادی «منطقه زیرساخت» در کشور هند تاسیس می‌کند و «اندی جِیسی» مدیر مرکز AWS در این خصوص گفت که ده‌ها هزار مشتری در هند هم‌اکنون از ۱۱ منطقه زیرساختی در خارج از مرزهای این کشور سرویس‌های خود را در اختیار می‌گیرند که قرار است از سال ۲۰۱۶ به بعد نیاز همه آنها به صورت داخلی تامین شود.

جِیسی توضیح داد: ‌«بسیاری از این مشتریان در کناری کاربرانی که به تازگی سراغ خدمات ابری رفته‌اند از ما می‌پرسند که چرا تاکنون زیرساخت‌های ابری در هند راه‌اندازی نکرده‌ایم. ما با به پایان رساندن طرح جدید خود می‌توانیم خدمات پردازش ابری را با تاخیر کمتر، ایمنی بیشتر و سیستم‌های جامع‌تر برای پردازش داده‌ها ارائه کنیم.»

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

 


لازم به ذکر است شبکه تلویزیونی NDTV هند از سال ۲۰۰۹ به بعد خدمات AWS را مورد استفاده قرار می‌دهد و علاوه بر آن مراکز بزرگی چون شرکت خودروسازی Tata Motors خدمات ابری مورد نیاز خود را از آمازون می‌گیرند.

در مه ۲۰۱۴ که انتخابات ریاست جمهوری هند برگزار شد، شبکه NDTV با استفاده از خدمات پردازش ابری AWS موفق شد ترافیک شدید خود مبتنی بر فضای وب را به راحتی مدیریت کند.
در این دوره زمانی ترافیک سایت این شبکه در یک روز عادی ۵۰۰ میلیون بار بود که این رقم در روز انتخابات به ۱۳ میلیارد عدد رسید. سایت اینترنتی این شبکه تلویزیونی به واسطه خدمات ابری آمازون توانست در روز انتخابات ریاست جمهوری هند در هر ثانیه ترافیک ایجاد شده به وسیله ۴۰۰ هزار کاربر را مدیریت کند.

  • شرکت مدل سازان نرم افزار (مسنا)

  • شرکت مدل سازان نرم افزار (مسنا)

ادامه از بخش اول:

-        پشته تکنولوژی که سیستم بر آن بنا نهاده شده است

پشته تکنولوژی مشخص کننده ترکیب و کیفیت تیم مورد نیاز است که البته در قالب یک پرسش ساده میتوان به آن رسید.

-        مستندات (نوع و میزان)

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

-        کیفیت کدهای تولید شده

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

-        چالشهای سازمانی مربوط به سیستم

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

 

به طور خلاصه تجرب ه­ای را که می­ توان در این جا منتقل کرد به طور خلاصه در قالب چند توصیه ارائه می ­شود:

قبل از ورود به ادامه یک پروژه­ ی نیمه تمام:

-         با چند نفر از کاربران صحبت کنید.

-         با تیم آن پروژه جلسه داشته باشید.

-         با عناصر فنی آن سازمان مثل مسئول شبکه و ... صحبت کنید.

-         با مدیران اصلی مرتبط با این محصول حتماً مشاوره کنید.

-         حتما کدهای آن پروژه را به مدت زمان مناسبی بازبینی کنید.

-         سعی کنید با افراد واحدهای مختلف سازمان که از قبل با آنها ارتباط داشته اید صحبت کنید و از آنها هر چه اطلاعات توانستید در بیاورید.

-         در بستن قرارداد این نوع کارها دقت لازم را مبذول دارید چون هزینه این کار بیشتر از کارهای معمولی است!!

  • شرکت مدل سازان نرم افزار (مسنا)

چندی پیش برای همکاری در یک پروژه نرم افزاری دعوت به همکاری شدیم. شرایط ویژه ­ای بر نرم افزار حاکم بود. تیم قبلی کار را رها کرده و سیستم نیمه تمام را قرار بود ما ادامه بدهیم.

ابتدا شروع به جمع ­آوری اطلاعات از شرایط پروژه کردم. البته با توجه به زمان کم  نتوانستم در مدت کوتاهی که فرصت داشتم در این امر موفقیتی بدست بیاورم. لذا اطلاعات منتقل شده را مبنای کار قرار داده و وارد پروژه شدم.

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

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

سیستم بدون مستندات تحویل ما شده بود.

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

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

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

هزینه های کار نرخ رشد بالایی داشت و این با میزان کار خروجی اصلا مطابقت نداشت.

شرایط فوق انگیزه­ ای شد برای اینکه در چون چرای این اتفاق قدری تامل کرده و اقدام به نوشتن این پست کرده و در این زمینه انتقال تجربه کنم.

اگر با تصمیم گیری برای ورود به یک پروژه نیمه تمام مواجه شدیم چه اطلاعاتی باید داشته باشیم و چگونه آن­ها را بدست بیاوریم؟

-        ذی نفعان و میزان رضایت آن­ها

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

-        معماری سیستم

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

-        مدل مفهومی

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

ادامه مطالب در بخش دوم همین عنوان آمده است...

  • شرکت مدل سازان نرم افزار (مسنا)