پيچيدگي در نرم افزار
بدليل تفاوت ذاتي بين نرم افزار و سخت افزار پيچيدگي خاصي در ابعاد مختلف از جمله تعريف نرم افزار، طراحي و پيادهسازي، تست و نگهداري آن وجود دارد كه:
با پيچيدگي سيستمهاي طبيعي و محصولات فيزيكي ساخت است بشر متفاوت است.
يك خاصيت ذاتي سيستمهاي نرم افزاري بزرگ
بنابراين نميتوان اين پيچيدگي را از بين برد بلكه بايد آنرا كنترل نمود.
انواع پيچيدگي:
intelleictually intractivility (تمردپذيري و اجازه پذيرفتن براي آشفتگي):
پيچيدگي بطور ذاتي در ساخت سيستم وجود دارد، پيچيدگي ممكن است از بزرگي سيستم ، يا از واسينگيها، بدعتها و پيادهسازي تكنولوژي و . . . بوجود آيد.
Management intractivility (تمرد پذيري مديريتي):
پيچيدگي در سازمان و فرآيند بكار گرفته شده در ساخت سيستم، ممكن است از اندازة پروژه (تعداد افردي كه در تمام جهات ساخت سيستم درگير هستند)، وابستگيهاي پروژه، فاصله جغرافيايي سيستمها و . . . بعبارتي عوامل توليد كننده نرم افزار غير قابل كنترل هستند چون سازمان، افراد و فرآيند هستند و ماشين نيستند كه كنترل شوند و سرمايههاي اوليه براي توليد نرم افزار الزاماً ماشين، سرمايه و پول نيست بلكه يكسري عوامل انساني متغيري هستند كه تحت مديريت قرار ميگيرند.
راهكارهاي معماري
حق مشكل I : معماري نرم افزري ميبايست سيستم را قابل هضم و بطور هوشمند قابل مديريت بوسيله مهيا كردن تجريدي كه بدون نياز به جزئيات، مهيا كننده مفاهيم ساده و يكسان باشند تجزيه سيستم و . . .