پيچيدگي در نرم افزار
بدليل تفاوت ذاتي بين نرم افزار و سخت افزار پيچيدگي خاصي در
ابعاد مختلف از جمله تعريف نرم افزار، طراحي و پيادهسازي، تست و نگهداري آن وجود
دارد كه:
با پيچيدگي سيستمهاي طبيعي و محصولات فيزيكي ساخت است بشر
متفاوت است.
يك خاصيت ذاتي سيستمهاي نرم افزاري بزرگ
بنابراين نميتوان اين پيچيدگي را از بين برد بلكه بايد آنرا
كنترل نمود.
انواع پيچيدگي:
intelleictually intractivility
(تمردپذيري و اجازه پذيرفتن براي آشفتگي):
پيچيدگي بطور ذاتي در ساخت سيستم وجود دارد، پيچيدگي ممكن است
از بزرگي سيستم ، يا از واسينگيها، بدعتها و پيادهسازي تكنولوژي و . . . بوجود
آيد.
Management intractivility (تمرد پذيري
مديريتي):
پيچيدگي در سازمان و فرآيند بكار گرفته شده در ساخت سيستم،
ممكن است از اندازة پروژه (تعداد افردي كه در تمام جهات ساخت سيستم درگير هستند)،
وابستگيهاي پروژه، فاصله جغرافيايي سيستمها و . . . بعبارتي عوامل توليد كننده نرم افزار غير قابل
كنترل هستند چون سازمان، افراد و فرآيند هستند و ماشين نيستند كه كنترل شوند و
سرمايههاي اوليه براي توليد نرم افزار الزاماً ماشين، سرمايه و پول نيست بلكه
يكسري عوامل انساني متغيري هستند كه تحت مديريت قرار ميگيرند.
راهكارهاي معماري
حق مشكل I
: معماري نرم افزري ميبايست سيستم را قابل هضم و بطور هوشمند قابل مديريت بوسيله
مهيا كردن تجريدي كه بدون نياز به جزئيات، مهيا كننده مفاهيم ساده و يكسان باشند
تجزيه سيستم و . . .
حل مشكل IF
: معماري نرم افزاري نميبايست توسعه سيستم را آسانتر براي مديريت بوسيله ارتقاي
ارتباطات، مهيا كرن بهتر با جدا كردن كار با كاهش زياد وابستگيهاي قابل مديريت و
غيره.
اما مسائل جديد پيدا شده مرتبط با تجزيه سيستم براي حل پيچيدگي
بايست توسط معماري بررسي شوند.
چگونه سيستم را به قطعات بشكنيم، يك تجزيه خوب اصل از بين رفتن
كوپلاژ بين مؤلفهها (يا قطعات) را بوسيله واسطهاي واضح و توانمند، ساده كردن
بوسيله تقسيم به قطعات منتقل قابل استدلال كه دوباره ميتوانند جدا شوند، ارضا ميكند.
آيا تمام قطعات مورد نياز را داريم ساختار ميبايست وظيفه مندي
و يا سرويسهاي مورد نياز سيستم را پشتيباني كند بنابراين رفتار ديناميكي سيستم
زمان طراحي معماري ميبايست بحساب آيد. همينطور ميبايست زيربناي ضروري براي
پشتيباني اين سرويسها را داشته باشيم.
آيا اين قطعات با هم بدرسيت كار ميكنند؟ اين موضوع واسط و
رابطههاي بين قطعات ميباشد. اما تطابق خوبي كه جامعيت سيستم را مديريت مي كند و
همچنين با شرايط سيستم كار كند زمانيكه اين قطعات تركيب ميشود خصوصيات خوب داشته
باشند. مورد لزوم است.
شكل زير وسعت تصميم و
تأثيرات مستقيم را معين ميكند. بخشيي از تصميمات در حوزه محدود به توسعههاي محلي
(Local) است و اثري روي
معماري ندارد و در سطح تك تك مؤلفهها است و از نوع غير معماري ميباشد.
بخش ديگر Local
نيست ولي تأثير زيادي ندارد. از خود تقسيمبندي سيستماتيك و Local ميباشد. خود سيستماتيك شامل Highimpaet ميباشد كه ما بدنبال Highimpnet ميباشيم (اولويت بالا براي ما مهم است).
تأثير زياد
(اولويت بالا، مهم براي حرفهها
تمركز تصميمات معماري
|
تأثير كم
غيرمعماري سيستماتيك
|
بطور كلي غير معماري( ممكن است مجموعهاي
از سيايت و خطوط راهبردي معماري نياز باشد)
|
غيرمعماري سيستماتيك
|
و بدليل اينكه تصميمات معماري روي جنبههاي مختلفي از جمله 1- Sysstempriority (قراردادهاي
اولويت: مثلاً آيا Perdormance
اولويت بيشتري دارد يا Security):
2- تجزيه و تركيب سيستم 3- مسائل مربوط به راههاي ميامنبر 4-
جامعيت سيم، . . . اثر ميگذارد، نبايد سيستمهاي عاري از لايههاي مختلف تجريد رخ
دهد. كه متمركز اصلي بر روي عناصر ساختاري سيستم را خصوصيات قابل روئيت از بيرون و
روابط ما بين آنها ميباشد.
مدل لايهبندي و تصميمات معماري:
به تا سطح تصميم معماري نرم افزار وجود دارد.
1- سطح بالاتر از معماري (Meta-
Architecture): dictionary معماري ميباشد مجموعهاي از تصميمات سطح بالا است كه ساختاري، تجزيه و مجموعهاي از
تصميمات سطح بالا را شامل ميشود. دورنماي معماري ، اصول- ليكها- مفاهيم كليدي و
مكانيزمها را شامل ميشود.
بررسي تصميمات سطح بالا كه بطور محكمي ساختار سيستم را تحت
تأثير قرار ميدهند، قواعد معين مي كه انتخاب كند و راهنماي كننده انتخاب تصيمات و
مصالحه در بين ديگر قواعد ميباشد، تمركز دارد.
2- سطح معماري: ساختار و رفتار، ديدههاي ديناميكل و
استارستكي، فرضيات و منطبق را شامل ميشود.
بر روي تجزيه و انتسايب وظايف، طراحي واسط ، انتساب فرآيندها و
نخها تمركز دارد. خود شامل سه سطح 1- معماري ادراكي 2- معماري منطقي 3- معماري
اجرا ميباشد.