ويژگي‌های سامانه‌هاي فوق کلان مقیاس

سامانه‌هاي فوق كلان مقياس ويژگي‌هايي دارند كه باعث مي‌شوند رويكردهاي (فعلي و مورد استفاده) روش‌هاي مهندسي نرم‌افزار نتوانند پاسخگوي توسعه آن‌ها باشند. اين ويژگي‌ها عمدتاً ناشي از «مقياس» اين گونه از سامانه‌ها است. ويژگي اصلي سامانه‌هاي فوق كلان مقياس، اندازه بسيار بزرگ آن‌ها در ابعاد مختلف است: تعداد خطوط كد؛ اندازه داده‌هايي كه ذخيره، بازيابي، دستكاري و پالايش مي‌شوند؛ تعداد اتصالات و تعاملات بين مولفه‌هاي نرم‌افزاري؛ تعداد عناصر سخت‌افزاري؛ و ... . البته ماهيت سامانه‌هاي فوق كلان مقياس به مواردي فراتر از «اندازه» آن‌ها برمي‌گردد. در واقع، اندازه باعث مي‌شود بسياري از مواردي كه در سامانه‌هاي معمولي غيرمهم يا كم اهميت بودند، تبديل به موارد بااهميت شوند. مشكلات ناشي از مقياس، نيازمند روش‌هاي جديد حل و تعريف مفاهيم نو براي طراحي، توسعه، كاركرد و تكامل سامانه‌ها است. مي‌توان هفت ويژگي را براي سامانه‌هاي فوق كلان مقياس در نظر گرفت. در ادامه، ضمن بيان اين ويژگي‌ها، مشخص مي‌كنيم چرا هر يك از آن‌ها باعث مي‌شود كه رويكردهاي فعلي مهندسي نرم‌افزار در مقابله با آن‌ها ناتوان باشد.

1- كنترل نامتمركز
2- نيازمندي هاي ذاتاً متضاد و ناشناخته
3- تكامل و استقرار مداوم
4- عناصر ناهمگن، ناسازگار و در حال تغيير
5- از بين رفتن تدريجي مرز بين افراد و سامانه
6- خرابي‌هاي طبيعي
7- پارادايم‌هاي جديد براي استفاده و سياست‌گذاري

 


ويژگي‌های سامانه‌هاي فوق کلان مقیاس

1- كنترل نامتمركز
مقياس سامانه‌هاي فوق کلان مقیاس تنها به شكل بسيار محدودي اجازه كنترل مركزي و سلسله مراتبي داده، توسعه، تكامل، و كاركرد را مي‌دهد. حتي مقدار محدود كنترل سلسله مراتبي كه امروزه در سامانه‌هاي بسيار بزرگ امكان‌پذير است، در سامانه‌هاي فوق کلان مقیاس مورد ترديد است، و در نتيجه مدل‌هاي متفاوتي را براي كنترل طلب مي‌كند.
از ميان مفروضاتي كه امروزه در صنعت توسعه نرم‌افزار وجود دارند و توسط اين ويژگي زير سوال مي‌روند، مي‌توان به مورد زير اشاره كرد:

  • تمام تضادها بايد متحدالشكل رفع شده باشند. سامانه‌هاي امروزي بر اساس اين ايده شكل مي‌گيرند كه همه تضادها بايد شناسايي و رفع شده باشند. انتظار داريم يك فرايند تحليل و رفع تضاد، و نيز يك سازمان تصميم‌گيري در مورد آن وجود داشته باشد. اين در حالي است كه مقياسِ سامانه‌هاي فوق کلان مقیاس تحليل همه¬ی تضادها و رفع آنها به شكل متمركز را براي ما غيرممكن مي‌سازد. در يك اكوسيستم، هيچ مجوز مركزي براي حل تضاد وجود ندارد. براي انجام اين كار بايد از ساير مكانيزم‌ها (ي غيرمركزي) استفاده كرد. در واقع اين مكانيزم‌ها به صورت محلي عمل مي‌كنند. همچنين، يك نوع تضاد ممكن است در جاهاي مختلف يك سامانه ظاهر شود و مكانيزم رفع آنها نيز متفاوت باشد. طراحان سامانه‌هاي بزرگ امروزي معمولاً چنين تصوري ندارند كه تحمل تضاد و رفع آن در زمان‌ها و مكان‌هاي مختلف ممكن است متفاوت باشد. همچنين، آنها معمولاً روال‌هايي را براي تعيين تضادهايي كه مي‌توانند مهمترين تاثير را بر دوام كلي سامانه داشته باشند، در نظر نمي‌گيرند. البته واقعيت اين است كه تعيين چنين روال‌هايي چندان هم ساخت‌يافته نيستند.

 


ويژگي‌های سامانه‌هاي فوق کلان مقیاس

2- نيازمندي هاي ذاتاً متضاد و ناشناخته
مقياس و پيچيدگي مسائلي كه سامانه‌هاي فوق كلان مقياس بايد حل كنند، اغلب ما را به سمت وضعيتي سوق مي‌دهد كه در آن نيازمندي‌هاي يك سامانه تا زمان استفاده از آن سامانه ناشناخته‌اند. حتا، گاهي پس از آن كه سامانه مورد نظر عملياتي شد، درك ما از مساله دچار تغيير مي‌شود. در واقع، هر تلاش براي حل مساله، فهم ما را از آن مساله بيشتر مي‌كند؛ و باعث مي‌شود مساله جديدي مطرح شده و به تلاشي ديگر براي حل آن نياز باشد. به اين شكل، بسياري از مسائلي كه سامانه‌هاي فوق كلان مقياس بايد حل كنند، پايان‌پذير نيستند. از طرف ديگر، سامانه‌هاي فوق كلان مقياس به دليل اندازه و ماهيت‌شان بايد طيف وسيعي از نيازمندي‌ها را ارضا كنند. هر چقدر دامنه اين نيازمندي‌ها وسيع‌تر باشد، تنوع و تضاد در بين آن‌ها افزايش مي‌يابد. همچنين، يكپارچگي راه‌حل‌ها نياز به دانش در حوزه‌هاي مختلف و بين دامنه‌اي دارد، كه به دست آوردن آن چندان ساده نيست.
از ميان مفروضاتي كه امروزه در صنعت توسعه نرم‌افزار وجود دارند و توسط اين ويژگي زير سوال مي‌روند، مي‌توان به موارد زير اشاره كرد:

  • نيازمند‌ي‌ها مي‌توانند از قبل شناسايي شوند و به تدريج با كسب تجربه كار با سامانه گسترش يابند. امروزه، نيازمندي‌هاي يك سامانه از قبل به طور كامل شناسايي نمي‌شوند، و بسياري از سامانه‌ها تنها با شناسايي و ارضاي نيازمندي‌هاي كليدي ساخته مي‌شوند. اما در سامانه‌هاي فوق كلان مقياس، ما اصطلاحاً با مسائل شروري روبه‌رو هستيم كه نه تنها نيازهاي آن‌ها شناخته شده نيستند (چون توافقي روي خود مساله وجود ندارد)، بلكه ثابت هم نيستند. (چون هر راه‌حل، مساله را تغيير مي‌دهد؛ و هيچ راه‌حلي مساله را كاملاً حل نمي‌كند.)

  • تصميمات مربوط به مصالحه بين نيازمندي‌ها پايدار هستند. در يك سامانه فوق كلان مقياس، تعداد ذي‌نفعان بسيار بالاست و نياز به مصالحه‌هاي متفاوتي وجود دارد كه در طول زمان نيز تغيير مي‌كنند. يك سامانه امروزي معمولاً با اين فرض ساخته نمي‌شود كه مصالحه‌هاي مختلف براي كاربران گوناگون تغيير كند.

 


ويژگي‌های سامانه‌هاي فوق کلان مقیاس

3- تكامل و استقرار مداوم
يكي ديگر از پيامدهاي «اندازه» اين است كه سامانه‌هاي فوق كلان مقياس براي مدت طولاني بايد به ارايه خدمات بپردازند. در واقع، اندازه اين نوع از سامانه‌ها جايگزيني يا از رده خارج شدن آن‌ها را غيرممكن مي‌سازد. سامانه‌هاي فوق كلان مقياس نيز همانند سامانه‌هاي بسيار بزرگ امروزي به طور مداوم تكامل پيدا مي‌كنند تا نيازمندي‌هاي جديد و تغييريافته را برآورده كنند. با اين حال، ما به تكاملي متفاوت از تكامل در سامانه‌هاي بسيار بزرگ امروزي نياز داريم. هنگامي كه از تكامل يك سامانه صحبت مي‌كنيم، منظورمان تغييرات هدايت‌شده‌اي است كه بر اساس قواعد و سياست‌ها، و به شكل محلي انجام مي‌شود؛ بدون آن كه يكپارچگي آن سامانه را از بين ببرد. اما، يكپارچگي در سامانه‌هاي فوق كلان مقياس توسط گروه‌هاي مختلفي از ذي‌نفعان انجام مي‌شود. هيچ تضميني وجود ندارد كه اين تغييرات كاملاً قاعده‌مند بوده و بر اساس قواعد از پيش‌تعريف شده انجام پذيرد.
از ميان مفروضاتي كه امروزه در صنعت توسعه نرم‌افزار وجود دارند و توسط اين ويژگي زير سوال مي‌روند، مي‌توان به مورد زير اشاره كرد:

  • بهينه‌سازي سامانه در فاصله‌هاي زماني گسسته (ساخت- بهره‌برداري- ساخت) مطرح مي‌شوند. سامانه‌هاي فوق كلان مقياس همچنان كه به كار خود ادامه مي‌دهند بايد اصلاح، بهينه و بازسازي شوند. در بسياري از سامانه‌هاي امروزي، ما معمولاً به گروه‌هاي مختلف اجازه انجام تغييرات را به شكل همزمان نمي‌دهيم. اما، در سامانه‌هاي فوق كلان مقياس اغلب لازم است تغييرات به شكل موازي انجام شوند، زيرا انتظار براي انجام تغييرات به شكل زنجيره‌اي غيرقابل قبول است

 


ويژگي‌های سامانه‌هاي فوق کلان مقیاس

4- عناصر ناهمگن، ناسازگار و در حال تغيير
اندازه سامانه‌هاي فوق كلان مقياس به این معني است كه عناصر آن (همچون سخت‌افزار، نرم‌افزار، روال‌ها، قواعد، افراد و ...) ناهمگن، ناسازگار و در حال تغيير هستند. عناصر نرم‌افزاري به دليل گوناگون بودن منابع آن‌ها ناهمگن هستند (زبان‌هاي برنامه‌سازي متفاوت، سكوهاي مختلف، متدولوژي‌هاي متفاوت و ...). از آن جا كه ايجاد نرم‌افزارها نيز در شرايط متفاوتي (از منظر مكان‌ها، زمان‌بندي‌ها، فرآيندها، اهداف، ذي‌نفعان و ...) انجام شده است، احتمالاً در طراحي، ساخت و بهره‌برداري با يكديگر ناسازگارند. بخش‌هاي مختلف يك سامانه همواره در حال تغيير هستند. محيط عملياتي تغيير مي‌كند؛ بخش‌هاي خراب سخت‌افزار بايد جايگزين شوند؛ نرم‌افزارها و سخت‌افزارها به روز مي‌شوند؛ و پيكربندي مولفه‌ها اصلاح مي‌شوند.
از ميان مفروضاتي كه امروزه در صنعت توسعه نرم‌افزار وجود دارند و توسط اين ويژگي زير سوال مي‌روند، مي‌توان به موارد زير اشاره كرد:

  • تاثير يك تغيير مي‌تواند به قدر كفايت پيش‌بيني شود. فرض بر اين است كه در زمان تغيير يك عنصر، اطلاعات كافي درباره ضروري بودن يا غيرضروري بودن آن عنصر وجود دارد. بر اساس همين اطلاعات مي‌توان جايگزيني‌ها را انجام داد، و تاثيرات آن‌ها را از قبل دانست. به دليل مقياس فوق كلان، تاثيرات مربوط به عنصر اصلي و عنصر جايگزين‌شده يك سامانه به روشني مشخص نيستند، و نمي‌توان از قبل درباره آن‌ها برنامه‌ريزي كرد.

  • اطلاعات پيكربندي دقيق و به شدت كنترل‌پذير هستند. هنگامي كه مي‌خواهيم تاثير تغييرات را در يك سامانه امروزي مشخص كنيم، بايد پيكربندي يك سامانه كاملاً شناخته‌شده و قابل شناسايي باشد. در سامانه‌هاي فوق كلان مقياس دقت اطلاعات پيكربندي كاملاً مشخص نيستند، و تغييرات بايد بدون در نظر گرفتن دقت اين اطلاعات انجام شوند.

  • مولفه‌ها و كاربران نسبتاً همگن هستند. در طراحي و پياده‌سازي سامانه‌هاي امروزي، انتظار داريم توانايي كاربران و چگونگي استفاده آن‌ها از سامانه مشخص باشند. اما در سامانه‌هاي فوق كلان مقياس به دليل وسعت و گوناگوني افراد درگير، چگونگي استفاده از سامانه بايد بدون در نظر گرفتن توانايي كاربران لحاظ شود. همچنين، اطمينان از درستي منطق مولفه استفاده شده، به دليل مقياس فوق كلان آن، بسيار دشوارتر است. در طراحي سامانه‌هاي فوق كلان مقياس بايد به اين ناهمگوني‌ها كه معمولاً در ساخت سامانه‌هاي امروزي در نظر گرفته نمي‌شوند، توجه داشت.

 

 


ويژگي‌های سامانه‌هاي فوق کلان مقیاس

5- از بين رفتن تدريجي مرز بين افراد و سامانه
افراد نه تنها كاربران يك سامانه فوق كلان مقياس هستند، بلكه بخشي از رفتار كلي آن نيز محسوب مي‌شوند. در واقع، مرز بين سامانه و نقش‌هاي كاربر/ توسعه‌دهنده به روشني مشخص نيست. يك شهر را در نظر بگيريد. افرادي كه در اين شهر ساكن هستند، ممكن است تغيير و نگهداري آن را نيز به عهده داشته باشند. در واقع يك شخص، نقش‌هاي متفاوتي دارد. در يك سامانه فوق كلان مقياس نيز چنين وضعيتي رخ مي‌دهد. يك شخص در يک زمان ممکن است كاربر سامانه باشد؛ در وقتي ديگر ممکن است يك نقش نگهداشت را بر عهده گيرد؛ در زماني ديگر مي‌تواند عملكردهاي سامانه را اضافه و كم يا تصحيح کند. در نظر گرفتن افراد به عنوان بخشي از سامانه‌هاي فوق كلان مقياس به اين معني است كه با تغيير توانايي‌هاي محاسباتي و پيكربندي سامانه‌ها بايد فرآيندها و روال‌هاي مربوطه جهت كمك به درك افراد در راستاي اهداف و ماموريت‌هاي آن‌ها اصلاح شود. زيرا افراد بخشي از خود سامانه فوق كلان مقياس هستند.
از ميان مفروضاتي كه امروزه در صنعت توسعه نرم‌افزار وجود دارند و توسط اين ويژگي زير سوال مي‌روند، مي‌توان به موارد زير اشاره كرد:

  • افراد تنها كاربر سامانه هستند. درك و تحليل تاثيرات برخي از جنبه‌هاي سامانه‌هاي فوق كلان مقياس، بدون در نظر گرفتن رفتار افراد به عنوان عناصر آن غيرممكن است. در نظر گرفتن رفتار انساني در تحليل كلي وظايف يك سامانه موضوع جديدي نيست. با اين حال، در سامانه‌هاي فوق كلان مقياس اين مساله يك موضوع كاملاً ضروري و حياتي محسوب مي‌شود.

  • رفتار جمعي افراد مورد توجه نيست. هنگامي كه صحبت از طراحي و تحليل سامانه‌هاي فوق كلان مقياس مي‌شود، به دليل مقياس بسيار بالاي آن‌ها، رفتار جمعي گروه كاربران و توسعه‌دهندگان يك عامل بسيار مهم در چگونگي نگرش، پذيرش و استفاده از سامانه محسوب مي‌شود.

  • تعاملات اجتماعي يك موضوع مرتبط نيستند. امروزه، تاكيد طراحي سامانه‌هاي اطلاعاتي تنها بر فناوري است (چگونه سامانه‌ها را به اندازه كافي سريع، مطمئن، وظيفه‌مند و ... كنيم). معمولاً يك ديدگاه فني- اجتماعي وجود ندارد. در سامانه‌هاي فوق كلان مقياس، چگونگي استفاده گروه كاربران از فناوري و نيز چگونگي پشتيباني فناوري از نيازهاي گروه كاربران اهميت دارد. در نظر نگرفتن اين موارد يك خطاي بزرگ محسوب مي‌شود.

 

 


ويژگي‌های سامانه‌هاي فوق کلان مقیاس

 

6- خرابي‌هاي طبيعي
از آن جا كه زيربناي فيزيكي يك سامانه فوق كلان مقياس بسيار گسترده است، خرابي سخت‌افزار ديگر يك امر غيرعادي نيست؛ بلكه به طور طبيعي اتفاق مي‌افتد. همچنين، از آنجا كه مولفه‌هاي نرم‌افزاري فراتر از ظرفيتي كه طراحي شده‌اند، تحت فشار قرار مي‌گيرند، رفتار آن‌ها نيز ممكن است نامطلوب باشد؛ كه اين مساله نيز كاملاً عادي است. فرض كنيد يك پروتكل ارتباطي در هر يك ميليون انتقال فايل يك بار با شكست روبه‌رو مي‌شود. اگر انتقال فايل يك ميليون بار در روز اتفاق افتد، به طور متوسط يك شكست در روز خواهيم داشت. در سامانه‌هاي فوق كلان مقياس معمولاً بروز خرابي آن قدر متداول است كه در واقع مي‌توان گفت خطا «هميشه» رخ مي‌دهد. با توجه به مقياس چنين سامانه‌هايي، مساله خرابي بايد به شكل يك مشكل پيوسته در طراحي و ساخت لحاظ شود. 
از ميان مفروضاتي كه امروزه در صنعت توسعه نرم‌افزار وجود دارند و توسط اين ويژگي زير سوال مي‌روند، مي‌توان به موارد زير اشاره كرد:

 

  • خطا به ندرت رخ مي‌دهد. اندازه در سامانه‌هاي فوق كلان مقياس، تعداد خرابي‌ها را در واحد زمان افزايش مي‌دهد. با افزايش اندازه و كاربرد يك سامانه فوق كلان مقياس، وقوع خطا امري كاملاً «طبيعي» است. در حالي كه در سامانه‌هاي امروزي بروز خطا يك امر غيرمتداول و استثنايي در نظر گرفته مي‌شود.

  • مي‌توان خطاها را برطرف كرد. بسياري از روش‌هاي مهندسي نرم‌افزار علاقه‌مند به پيشگيري و تشخيص خطاها هستند. اگرچه در سامانه‌هاي بسيار بزرگ نمي‌توان اطمينان حاصل كرد كه همه خرابي‌ها برطرف شده‌اند؛ با اين حال، در سامانه‌هاي فوق كلان مقياس، اين مساله بغرنج‌تر است. سامانه‌هاي فوق كلان مقياس بايد به موضوع تحمل خطا توجه بيشتري داشته باشند. (البته امروزه هم سامانه‌هاي خاصي داريم كه به دليل شرايط ويژه استفاده، به ضريب اطمينان بسيار بالا نيازمنديم.)

 


ويژگي‌های سامانه‌هاي فوق کلان مقیاس

7- پارادايم‌هاي جديد براي استفاده و سياست‌گذاري
به دليل اندازه سامانه‌هاي فوق كلان مقياس، افرادي كه مسوول ساخت آن‌ها هستند (احتمالاً مديران، توسعه‌دهندگان، فروشندگان، و ...) نمي‌توانند به طور قطعي تعريف شوند. نمي‌توان نيازمندي‌هاي متغير و غيرقطعي ذي‌نفعان را كنترل كرد. نمي‌توان نيازمندي‌ها را به شكل متمركز و سراسري نظارت كرد. در حقيقت اندازه سامانه‌هاي فوق كلان مقياس باعث بروز يك چالش اساسي براي مديران مي‌شود. اگر نتوان نيازمندي‌هاي واقعي ذي‌نفعان را به طور كامل مشخص كرد، چگونه مي‌توان فرآيند بستن قرارداد، طراحي و ساخت را كنترل كرد.
از ميان مفروضاتي كه امروزه در صنعت توسعه نرم‌افزار وجود دارند و توسط اين ويژگي زير سوال مي‌روند، مي‌توان به مورد زير اشاره كرد:

  • يك پيمانكار اصلي مسوول توسعه، راه‌اندازي و تكامل سامانه است. كنترل مركزي كه معمولاً در مدل‌هاي امروزي توسعه نرم‌افزار وجود دارد و توسط پيمانكار اصلي انجام مي‌شود، با سامانه‌هاي فوق كلان مقياس هماهنگي ندارد. به عنوان مثال، هيچ پيمانكار اصلي مسوول توسعه، راه‌اندازي و تكامل اينترنت نيست. بلكه سازمان‌هاي مختلف، مسووليت‌هاي متفاوتي در ايجاد اينترنت دارند. در واقع يك روش كنترل غيرمتمركز و محلي وجود دارد.