پیچیدگی نرم افزار (software complexity) در یک محصول از پیچیدگی عملکرد کدهای آن (رابط های سیستمی متعدد و الزامات پیچیده) سرچشمه می گیرد. پیچیدگی نرم افزار گاهی اوقات بیش از حد و فراتر از کنترل افزایش می یابد. بنابراین نگهداری آنها پرهزینه و در سیستم های حیاتی توسعۀ آن خطرناک است. در صورت عدم کنترل، پیچیدگی نرمافزار میتواند بسیار زیاد شود و تبدیل به برنامههای پیچیده و دست و پا گیر شود. دو نوع پیچیدگی وجود دارد:
پیچیدگی اساسی: پیچیدگی اجتناب ناپذیری است که برای برآوردن الزامات عملکردی لازم است. به عبارتی این نوع پیچیدگی باتوجه به پیچیدگی ذاتی محصول است و نمی توان آن را کم و حذف کرد. برای حذف این پیچیدگی باید از یک سری از عملکردهای محصول صرف نظر کرد و آنها را پیاده سازی نکرد.
پیچیدگی تصادفی: پیچیدگی اضافی است که به دلیل طراحی ضعیف یا عدم مدیریت پیچیدگی ایجاد می شود. این نوع پیچیدگی باید به حداقل برسد.
پیچیدگی بیش از حد نرم افزار می تواند بر توانایی توسعه دهندگان برای مدیریت لایه های مختلف و ارتباط بین آنها و اجزای یک برنامه تأثیر منفی بگذارد. همچنین می تواند توسعه، بهینه سازی و تست ماژول های خاص را دشوار کند. هر قطعه کد باید ارزیابی شود تا مشخص شود که چگونه بر برنامه از نظر استحکام و تغییرپذیری تأثیر می گذارد. یک سری معیارها برای تعیین پیچیدگی نرم افزار از جمله اندازه نرم افزار، معیار هالستد، Span و تعداد گره وجود دارد.
پیچیدگی نرم افزار مبحث گسترده ای است. رعایت پیچیدگی نرم افزار و کاهش آن، نیازمند برنامه نویس باتجربه و با دانش نسبت به این موضوع است. امروزه یک مبحث بسیار مهم که باعث کند شدن روند توسعۀ بسیاری از شرکت ها شده، پیچیدگی نرم افزار است. از جمله خدمات پروژۀ میکروکنترلر یوبرد، آموزش و کاهش پیجیدگی نرم افزار است.
مطالب مرتبط در میکروآموزش:
0 دیدگاه