ماهیت پیچیدگی :

 

در مرکزِ موضوع پیچیدگی، مسأله شناخت قرار می‏گیرد[۴]. زمانیکه نرم‏افزار تأخیر دارد، ناقص است، بدرستی معیّن نشده

 یا بطور دقیق قیمت گذاری نمی‏شود ممکن است به این دلیل باشد که توسعه‏دهندگان نرم‏افزار در یک حوزه ناشناخته و پویا

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

 استفاده مجدّد نیست یا نگهداری و عملیاتی شدن آن سخت است  بدلیل کنار هم قرار گرفتن پیچیده­ی بخشهایی با تعامل

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

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

 هر حالت، پیامدِ پیچیدگی خسارتی است که بدلیل عدم شناخت می‏پردازیم. بنابراین پیچیدگی میزانی برای دشواری

 شناخت و درک یک چیز است.

 

اجزاءی کلیدی در پیچیدگی:

 

پیچیدگی برچسبی است که ما به وجود متغیرهای وابسته‏ی زیاد در یک سیستم موجود می‏دهیم. هر چه متغیرها زیاد و

 وابستگی بین آنها زیادتر باشد سیستم پیچیده‏تر می‏شود.  اتّصال بین متغیرها ما را مجبور می‏کند که در آن واحد ویژگی‏های

 بسیار زیادی را در نظر بگیریم به‏ علاوه اینکه غیر ممکن است که فقط مسئولیّت یک عمل را در سیستم پیچیده به عهده بگیریم.

پیچیدگی چند جزء کلیدی دارد:

مقیاس: تعداد اجزاءی سیستم نرم‏افزاری

تنوّع: گستره‏ اجزاءی متفاوتی که سیستم را تشکیل می‏دهند.

اتّصال: ارتباطات بین مولفه‏ها