Y@SiN
11-19-2009, 07:10 PM
این روزها، یکی از دغدعه های ذهنیم هم در زمینه تئوری مهندسی نرم افزار و هم در عمل و فعالیت های شرکت، بحث پشتیبانی نرم افزار است. مساله ای که بدون شک یکی از مهمترین جنبه های یک فعالیت نرم افزاری است، چنانچه در کنار فرآیند توسعه و فرآیند مدیریت به عنوان یکی از سه فرآیند اصلی ساخت سیستم مطرح می شود.
بحث های تئوریک مختلفی در کتابهای متفاوت در زمینه پشتیبانی نرم افزار مطرح می شود که به زودی به آنها در همین وبلاگ اشاره خواهم کرد. اما نکته ای که در این مطلب می خواهم مطرح کنم، نکته متفاوتی است. آیا نرم افزار را می توان مانند یک موجود زنده تصور کرد و برای آن یک بیمارستان ساخت؟
1- همه ما نرم افزاری ها، محصولاتمان را مانند بچه هایمان دوست داریم، چرا مانند مراقبت از اطفال برای پشتیبانی نرم افزار عمل نکنیم؟
2- هفته هایی که گذشت به خاطر یکی از آشنایان، گذرم به صورت مداوم به بیمارستان ..... افتاد، مطابق معمول کنجکاویم گل کرد و سری زدم به بخش های اطلاعاتی آنها و نحوه نگهداری از بیماران، سرویس های منظم و غیر منظمی که باید به بیمار بدهند و نحوه تبادل اطلاعات بین دو پرستار از دو شیفت مختلف و پرستار با پزشکش و .....[مطمئن هستم که بسیاری از شما متاسفانه حداقل حضوری به عنوان یک بیمار ، همراه بیمار و یا یک ملاقات کننده به بیمارستان داشته اید و می توانید وضعیت را در ذهنتان شبیه سازی کنید.]
3- اگر چه می توان برای بدست آوردن الگوی مناسب برای پشتیبانی از صنایع نیز بهره بردای کرد (سیستم های تعمیر و نگهداری معروف به سیستمهای PM الگوی بسیار مناسبی برای پشتیبانی از یک محصول می باشند.) اما شاید ماهیت نرم افزار نیاز به نگهداری دقیق تر و حساس تری دارد.
با ذکر این سه نکته، شاید تشکیل یک بیمارستان نرم افزار برای محصولات تولیدی یک شرکت و یا در ایده کلی برای یک سری محصولات معروف ایده بدی نباشد. این بیمارستان می تواند به بخش های زیر تقسیم شود:
- بخش CheckUP : در این بخش طی یک سری بازدیدهای مشخص (به صورت متناوب و طی یک الگوی زمانبندی و یا به صورت مداومی) سیستم نرم افزاری چک می شود تا از سالم بودن آن اطمینان حاصل شود. این چک شدن از طریق آزمایش های مختل�? صورت می گیرد، بررسی رفتار نرم افزار در مقابل ورودی های مختلف و بررسی LOG File های عملکرد نرم افزار، بررسی رفتار گذشته نرم افزار، شبیه سازی حالات خطا و سنجش عملکرد نرم افزار نسبت به آن، سنجش میزان حافظه استفاده شده و پیش بینی میزان مورد نیاز در آینده برای جلوگیری از بروز خطا در آینده، سنحش قدرت سخت افزار مورد نیاز از طریق گزارشهای مورد نیاز و ارائه به صاحب نرم افزار برای تقویت احتمالی سخت افزار، بررسی استفاده های غلط از نرم افزار و ارائه راهنمایی های لازم برای کاربری صحیح و ....
- بخش اورژانس: در این بخش برای نرم افزارهای بحرانی در زمان بروز خطاهای بحرانی ، پیش بینی لازم صورت می کیرد. ارائه خدمات پشتیبانی به صورت ONline ، مراجعه به محل استفاده نرم افزار و رفع خطای بحرانی آن، وجود متخصصان کشیک برای فراخوانی به صورت Oncall در هنگام بروز خطا و معرفی به سایر بخش های بیمارستان نرم افزار پس از رفع خطاهای بحرانی و تثبیت فعالیت های جاری نرم افزار برای انجام اصلاحات اساسی تر
- بخش های نگهداری: این بخش ها می تواند شامل بخش های متفاوتی باشد، اما نکته یکسان در همه آنها، نگهداری و رفع عیب اصولی نرم افزار در صورت بروز خطا می باشد. در این بخش ها با سرکشی منطم، وضعیت نرم افزار در یک بازه زمانی سنجیده می شود و نواحی بحرانی شناسایی می شود و قبل از بروز خطای جدی اصلاح می شوند. (علاج واقعه قبل از وقوع) نرم افزارهای معرفی شده از بخش های دیگر ، در این بخش (ها) مورد مطالعه جدی تر قرار گرفته و اشکالاتشان از طریق اصلاح ساختاری نرم افزار (درست مانند یک عمل جراحی و یا پیوند) و یا غیر ساختاری (مانند دارو ها و جراحی های سرپایی) برطرف می شود.
- بخش زایمان[!]: خدا را شکر بیمارستان ما فعلا این بخش را ندارد!
نکته مهم در این بیمارستان تهیه یک CPR از نرم افزارهاست. CPR مخفف Clinical Patient Record است که حاوی اطلاعات بالینی بیمار است که به دفت و با نظم خاصی تهیه می شود و به عنوان عاملی برای هماهنگ سازی خدمات بالینی بیمارستان استفاده می شود. به نحوی که هر خدمتی که بیمار دریافت نمود و یا هر تغییر وضعیتی که در بیمار رخ داد در آن ثبت می شود تا همه افراد مسؤول -برای مثال پزشک برای پرستاران و یا افراد یک شیفت کاری برای شیفت دیگر- از آن مطلع شوند و از انجام دوباره کاری و یا تجویز های غلط جلوگیری نمایند.
با تشکیل این پرونده و راه اندازی یک HIS: Hospital Information System می توان وضعیت بیمار را به صورت online بررسی نمود و از گم شدن و یا اشتباه شدن ورود اطلاعات جلوگیری نمود.
راه اندازی چنین سیستمی برای بیمارستان نرم افزار ما هم بسیار راهگشا است. هر چند می دانم که بسیاری از شرکتها برای ارائه خدمات پشتیبانی به نرم افزارهای خود، چنین پرونده ای را برای هر مشتری تشکیل داده اند، اما متاس�?انه در بسیاری از موارد خیلی خوب پرونده ها تشکیل نمی شود و یا به روز نمی شود و یا به اشتراک گذاشته نمی شود.
به نظر من در بخش پشتیبانی، نگاه انسانی به نرم افزار، نگاه مناسب تری است نسبت به نگاه صنعتی. یادتان باشد پیشتر در مورد تولد، حیات و مرگ نرم افزار نوشته بودم. این نگاه شاید جدی تر و حساس تر به مساله پشتیبانی نگاه کند و استفاده کنندگان نرم افزار هم راحت تر با آن کنار بیاییند.
این ایده هم مانند ایده Software FastFood نیاز به کار بیشتری دارد تا پخته شود. شاید هم ماننده همان قبلی، قبلا کسی رویش کار کرده باشد، هنوز جستجو نکرده ام، به هر حال دوست دارم روی مساله پشتیبانی نرم افزار بیشتر کار کنم. شاید به زودی یک دسته بندی جدید به همین نام در وبلاگ تشکیل دادیم، شاید ....
بحث های تئوریک مختلفی در کتابهای متفاوت در زمینه پشتیبانی نرم افزار مطرح می شود که به زودی به آنها در همین وبلاگ اشاره خواهم کرد. اما نکته ای که در این مطلب می خواهم مطرح کنم، نکته متفاوتی است. آیا نرم افزار را می توان مانند یک موجود زنده تصور کرد و برای آن یک بیمارستان ساخت؟
1- همه ما نرم افزاری ها، محصولاتمان را مانند بچه هایمان دوست داریم، چرا مانند مراقبت از اطفال برای پشتیبانی نرم افزار عمل نکنیم؟
2- هفته هایی که گذشت به خاطر یکی از آشنایان، گذرم به صورت مداوم به بیمارستان ..... افتاد، مطابق معمول کنجکاویم گل کرد و سری زدم به بخش های اطلاعاتی آنها و نحوه نگهداری از بیماران، سرویس های منظم و غیر منظمی که باید به بیمار بدهند و نحوه تبادل اطلاعات بین دو پرستار از دو شیفت مختلف و پرستار با پزشکش و .....[مطمئن هستم که بسیاری از شما متاسفانه حداقل حضوری به عنوان یک بیمار ، همراه بیمار و یا یک ملاقات کننده به بیمارستان داشته اید و می توانید وضعیت را در ذهنتان شبیه سازی کنید.]
3- اگر چه می توان برای بدست آوردن الگوی مناسب برای پشتیبانی از صنایع نیز بهره بردای کرد (سیستم های تعمیر و نگهداری معروف به سیستمهای PM الگوی بسیار مناسبی برای پشتیبانی از یک محصول می باشند.) اما شاید ماهیت نرم افزار نیاز به نگهداری دقیق تر و حساس تری دارد.
با ذکر این سه نکته، شاید تشکیل یک بیمارستان نرم افزار برای محصولات تولیدی یک شرکت و یا در ایده کلی برای یک سری محصولات معروف ایده بدی نباشد. این بیمارستان می تواند به بخش های زیر تقسیم شود:
- بخش CheckUP : در این بخش طی یک سری بازدیدهای مشخص (به صورت متناوب و طی یک الگوی زمانبندی و یا به صورت مداومی) سیستم نرم افزاری چک می شود تا از سالم بودن آن اطمینان حاصل شود. این چک شدن از طریق آزمایش های مختل�? صورت می گیرد، بررسی رفتار نرم افزار در مقابل ورودی های مختلف و بررسی LOG File های عملکرد نرم افزار، بررسی رفتار گذشته نرم افزار، شبیه سازی حالات خطا و سنجش عملکرد نرم افزار نسبت به آن، سنجش میزان حافظه استفاده شده و پیش بینی میزان مورد نیاز در آینده برای جلوگیری از بروز خطا در آینده، سنحش قدرت سخت افزار مورد نیاز از طریق گزارشهای مورد نیاز و ارائه به صاحب نرم افزار برای تقویت احتمالی سخت افزار، بررسی استفاده های غلط از نرم افزار و ارائه راهنمایی های لازم برای کاربری صحیح و ....
- بخش اورژانس: در این بخش برای نرم افزارهای بحرانی در زمان بروز خطاهای بحرانی ، پیش بینی لازم صورت می کیرد. ارائه خدمات پشتیبانی به صورت ONline ، مراجعه به محل استفاده نرم افزار و رفع خطای بحرانی آن، وجود متخصصان کشیک برای فراخوانی به صورت Oncall در هنگام بروز خطا و معرفی به سایر بخش های بیمارستان نرم افزار پس از رفع خطاهای بحرانی و تثبیت فعالیت های جاری نرم افزار برای انجام اصلاحات اساسی تر
- بخش های نگهداری: این بخش ها می تواند شامل بخش های متفاوتی باشد، اما نکته یکسان در همه آنها، نگهداری و رفع عیب اصولی نرم افزار در صورت بروز خطا می باشد. در این بخش ها با سرکشی منطم، وضعیت نرم افزار در یک بازه زمانی سنجیده می شود و نواحی بحرانی شناسایی می شود و قبل از بروز خطای جدی اصلاح می شوند. (علاج واقعه قبل از وقوع) نرم افزارهای معرفی شده از بخش های دیگر ، در این بخش (ها) مورد مطالعه جدی تر قرار گرفته و اشکالاتشان از طریق اصلاح ساختاری نرم افزار (درست مانند یک عمل جراحی و یا پیوند) و یا غیر ساختاری (مانند دارو ها و جراحی های سرپایی) برطرف می شود.
- بخش زایمان[!]: خدا را شکر بیمارستان ما فعلا این بخش را ندارد!
نکته مهم در این بیمارستان تهیه یک CPR از نرم افزارهاست. CPR مخفف Clinical Patient Record است که حاوی اطلاعات بالینی بیمار است که به دفت و با نظم خاصی تهیه می شود و به عنوان عاملی برای هماهنگ سازی خدمات بالینی بیمارستان استفاده می شود. به نحوی که هر خدمتی که بیمار دریافت نمود و یا هر تغییر وضعیتی که در بیمار رخ داد در آن ثبت می شود تا همه افراد مسؤول -برای مثال پزشک برای پرستاران و یا افراد یک شیفت کاری برای شیفت دیگر- از آن مطلع شوند و از انجام دوباره کاری و یا تجویز های غلط جلوگیری نمایند.
با تشکیل این پرونده و راه اندازی یک HIS: Hospital Information System می توان وضعیت بیمار را به صورت online بررسی نمود و از گم شدن و یا اشتباه شدن ورود اطلاعات جلوگیری نمود.
راه اندازی چنین سیستمی برای بیمارستان نرم افزار ما هم بسیار راهگشا است. هر چند می دانم که بسیاری از شرکتها برای ارائه خدمات پشتیبانی به نرم افزارهای خود، چنین پرونده ای را برای هر مشتری تشکیل داده اند، اما متاس�?انه در بسیاری از موارد خیلی خوب پرونده ها تشکیل نمی شود و یا به روز نمی شود و یا به اشتراک گذاشته نمی شود.
به نظر من در بخش پشتیبانی، نگاه انسانی به نرم افزار، نگاه مناسب تری است نسبت به نگاه صنعتی. یادتان باشد پیشتر در مورد تولد، حیات و مرگ نرم افزار نوشته بودم. این نگاه شاید جدی تر و حساس تر به مساله پشتیبانی نگاه کند و استفاده کنندگان نرم افزار هم راحت تر با آن کنار بیاییند.
این ایده هم مانند ایده Software FastFood نیاز به کار بیشتری دارد تا پخته شود. شاید هم ماننده همان قبلی، قبلا کسی رویش کار کرده باشد، هنوز جستجو نکرده ام، به هر حال دوست دارم روی مساله پشتیبانی نرم افزار بیشتر کار کنم. شاید به زودی یک دسته بندی جدید به همین نام در وبلاگ تشکیل دادیم، شاید ....