فروشگاه

توضیحات

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

چکیده پایان نامه

موفقیت نرم افزار به فاکتوهای مهمی مانند تحویل به موقع طبق زمان و بودجه تعیین شده و برآوردن نیازمندی های کاربران وابسته است و پیچیدگی از

عوامل چشمگیر و تاثیرگذار بر آنها می باشد. در طول دهه های اخیر تلاش¬های متعددی در جهت اندازه¬گیری و کنترل پیچیدگی نر م افزار انجام شده

پذیرفته، ولی عمده¬ی این تلاش ها در طی مراحل طراحی و کد بوده است. با این حال اندازه گیری و کنترل پیچیدگی در این مراحل بسیار دیر است.

با شناسایی عوامل بروز پیچیدگی و اندازه گیری آنها در مراحل آغازین چرخه حیات نرم افزار می-توان

از بروز مشکلاتی که منبع بسیاری از خطاها در فازهای بعدی هستند جلوگیری کرد و مانع از انتشار این عوامل به فازهای بعدی فرآیند توسعه نرم افزار شد.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

در این رساله با تکیه بر فرآیند مهندسی نیازمندی¬ها و درک کامل از ماهیت آن به بررسی و شناسایی مباحث مهم در مهندسی نیازمندی ها پرداخته و

تاثیر هر یک بر پیچیدگی نرم افزار را مشخص می کنیم. در ادامه به ارائه مدلی از عوامل و نتایج پیچیدگی نرم افزار در فاز اول از چرخه حیات نرم افزار

می¬پردازیم. سپس با استفاده از مدل پیشنهادی و با هدف کنترل و کاهش پیچیدگی با استفاده از متریک پیشنهادی، پیچیدگی نرم افزار را در فاز اول از چرخه حیات و پس از انجام فرآیند مهندسی نیازمندی ها اندازه گیری می کنیم.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

در این پایان¬نامه ابتکار شناسایی، کنترل و اندازه گیری عوامل پیچیدگی نرم افزار در فاز اول از چرخه حیات نرم افزار و به محض تکمیل مستندات مربوط به نیازمندی های نرم افزار می باشد. زیرا همانطور که بیان شد تاکنون بیشتر فعالیت ها در فاز طراحی و کد بوده است.

این رویکرد منجر به صرفه¬جویی در هزینه تولید نرم افزار، نیروی انسانی و از آن مهمتر منجر به کاهش هزینه های نگهداری نرم افزار خواهد شد. مورد مطالعه «سیستم مدیریت قرائت از راه دور کنتورهای هوشمند گاز» است که استفاده از متریک پیشنهادی را نشان می دهد.

 

 ۱۱۷صفحه فایل ورد (Word) فونت ۱۴ منابع دارد

 

پس از پرداخت آنلاین میتوانید فایل کامل این پروژه را دانلود کنید

ارائه راهکاری برای کاهش پیچیدگی نرم افزار
ارائه راهکاری برای کاهش پیچیدگی نرم افزار

 

 

 

فهرست مطالب

چکیده ۱
فصل اول:طرح مسئله و محدوده تحقیق ۲
۱-۱ مقدمه ۳
۱-۲ تعریف مسئله ۵
۱-۳ بیشینه تحقیق ۷
۱-۴ ساختار پایان¬نامه ۱۱
فصل دوم:پیچیدگی نرم¬افزار ۱۳
۲-۱ مقدمه ۱۴
۲-۲ تعریف و ماهیت پیچیدگی نرم¬افزار ۱۴
۲-۳ علل پیچیدگی نرم¬افزار ۱۷
۲-۴ دسته¬بندی پیچیدگی نرم¬افزار ۲۰

۲-۵ پیچیدگی ذاتی در مقابل پیچیدگی ضروری ۲۲
۲-۶ پیچیدگی در چرخه حیات نرم¬افزار ۲۳
۲-۷ خلاصه فصل ۲۵
فصل سوم:مهندسی نیازمندی¬ها ۲۷

۳-۱ مقدمه ۲۸
۳-۲ تاریخچه مهندسی نیازمندی¬ها ۲۸
۳-۳ تعریف نیازمندی ۲۹
۳-۴ طبقه¬بندی نیازمندیها ۳۰
۳-۵ ذینفعان ۳۴

۳-۶ مهندسی نیازمندی¬ها ۳۵
۳-۷ دلایل اهمیت مهندسی نیازمندی¬ها ۳۷
۳-۸ مراحل مهندسی نیازمندی¬ها ۴۰
۳-۸-۱ استخراج نیازمندی¬ها ۴۱
۳-۸-۲ تحلیل و مذاکرات نیازمندی¬ها ۴۴
۳-۸-۳ مستندسازی نیازمندی¬ها ۴۷

۳-۸-۴ تایید اعتبار نیازمندی¬ها ۵۲
۳-۸-۵ مدیریت نیازمندی¬ها ۵۳
۳-۹ محصول مهندسی نیازمندی¬ها ۵۴
۳-۱۰ چگونگی انجام مهندسی نیازمندی¬ها ۵۸
۳-۱۱ خلاصه فصل ۵۸

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

فصل چهارم:متریک¬های پیچیدگی نرم¬افزار ۶۰
۴-۱ مقدمه ۶۱
۴-۲ اندازه¬گیری و اهداف اندازه¬گیری ۶۱
۴-۳ کاربردهای اندازه¬گیری ۶۳
۴-۴ تعریف متریک نرم¬افزاری ۶۳
۴-۵ طبقه¬بندی متریک¬های نرم¬افزاری ۶۴
۴-۵-۱ متریک محصول ۶۴
۴-۵-۲ متریک فرآیند ۶۵
۴-۵-۳ متریک منابع ۶۶
۴-۶ متریک¬های پیچیدگی نرم¬افزار ۶۷
۴-۶-۱ خطوط متن ۶۸
۴-۶-۲ متریک فراریت نیازمندی ۶۹
۴-۶-۳ تعداد خطوط کد(LOC) 69

۴-۶-۴ متریک نقاط کارکرد ۷۰
۴-۶-۵ متریک پیچیدگی دورانی McCabe 72
۴-۶-۶ متریک Halstead 74
۴-۶-۷ متریک جریان اطلاعات ۷۶
۴-۶-۸ متریک¬های شیءگرا ۷۷

۴-۷ خلاصه فصل ۸۴
فصل پنجم:ارائه رویکرد پیشنهادی ۸۵
۵-۱ مقدمه ۸۶
۵-۲ دلایل بروز پیچیدگی نرم¬افزار ۸۷
۵-۳ تاثیر و نتایج پیچیدگی نرم¬افزار ۸۸

۵-۳-۱ کیفیت نرم¬افزار ۸۸
۵-۳-۲ نگهداری نرم¬افزار ۸۹
۵-۳-۳ بهره¬وری نرم¬افزار ۹۰
۵-۴ پیچیدگی و مهندسی نیازمندی¬ها ۹۰
۵-۵ مدل عوامل پیچیدگی نرم¬افزار ۹۳
۵-۵-۱ مستندات ۹۴
۵-۵-۲ ذینفعان ۱۰۰
۵-۵-۳ تیم پروژه ۱۰۲
۵-۶ مدل نتایج پیچیدگی نرم¬افزار ۱۰۳
۵-۷ متریک پیچیدگی مبتنی بر نیازمندی¬ها ۱۰۷
فصل ششم:پیاده¬سازی رویکرد پیشنهادی ۱۱۴
۶-۱ مقدمه ۱۱۵

 

 

 

فصل اول:طرح مسئله و محدوده تحقیق

 

۱-۱ مقدمه
با پیشرفت نرم‏افزارهای¬ کامپیوتری، افزایش نیاز کاربران به نرم¬افزارهای قدرتمندتر، کاربردی¬تر و با قابلیت¬های بیشتر مشهود می¬گردد. از این¬رو

نرم¬افزارها بزرگ‏تر و پیچیده‏تر شده و چنین تحولی فعالیت-های توسعه و خصوصاً نگهداری نرم¬افزار را دشوارتر و توسعه¬دهندگان را با چالش¬های

جدیدی مواجه می-کند. دشواری کار، زمان بیشتری برای انجام می¬طلبد، در این زمان منابع بیشتری بکار گرفته ی¬شود و منابع بیشتر به معنی تحمیل هزینه¬های بیشتر خواهد بود.
تاخیر در تحویل، تجاوز در هزینه¬ها و بودجه¬های تعیین¬شده، کاهش کیفیت و قابلیت اطمینان و نارضایتی کاربر، از نتایج افزایش پیچیدگی در نرم¬افزار

است. بنابراین کاهش پیچیدگی، قلب توسعه¬ی نرم-افزار است و یکی از عوامل موثر در موفقیت یا شکست پروژه محسوب می¬شود و بدلیل تاثیرات آن بر صفات مهم نرم¬افزار از جمله کیفیت، از جایگاه ویژه¬ای در مباحث مهندسی نرم¬افزار برخوردار است.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

بنابراین در عصری که افزایش پیوسته‏ی قابلیت‏های نرم‏افزار انتظار می‏رود، واضح است که اگر بخواهیم هزینه‏ها بدون صدمه دیدن کیفیت نرم‏افزار کنترل شوند باید مهارت کافی در تشخیص منابع پیچیدگی، مدیریت آن و تا حد امکان حذف پیچیدگی را داشت.

این مشکلات سازمان¬های نرم¬افزاری را بر آن داشته تا دنبال راه¬حلی برای مشکل پیچیدگی باشند. برای نیل به این مقصود محققان به دنبال رابطه‏ای بین ویژگی‏های نرم‏افزار و مشکلات و دشواری‏های کار توسعه‏ی نرم‏افزار بوده‏اند. حاصل این تلاش‏ها ارائه میزان‏هایی برای اندازه‏گیری پیچیدگی نرم‏افزار بوده است. هر کدام از این میزان‏ها بعد/ ابعادی از پیچیدگی نرم‏افزار را در نظر داشته‏ و بیشتر بر روی کد متمرکز شده‏اند.

اما منظور از «پیچیدگی» چیست؟ پیچیدگی نرم‏افزار یک موضوع وسیع در مهندسی نرم‏افزار است و از سال ۱۹۷۶ محققان زیادی تلاش کرده‏اند تا تعریف دقیقی برای پیچیدگی نرم‏افزار پیدا کنند و توافقی عمومی بر روی چگونگی تعریف آن وجود ندارد ولی بیشتر تعاریف مبتنی بر دیدگاهZuse از پیچیدگی است[۳]، «پیچیدگی نرم‏افزار سختی تحلیل، نگهداری، تست، طراحی و تغییر نرم‏افزار است».

به عبارت دیگر پیچیدگی نرم¬افزار موضوعی است که در کل فرآیند توسعه نرم¬افزار و در هر مرحله از چرخه حیات محصول وجود دارد.

و این واقعیت که

پیچیدگی نرم¬افزار در طی فازهای مختلف ایجاد می-شود، تعریف و اندازه¬گیری آن¬را سخت می¬کند. ترکیب پیچیدگی حاصل از تحلیل مسئله،

طراحی و کدنویسی در یک عدد بسیار مشکل است. به همین دلیل محققان پیچیدگی را از جنبه¬های مختلفی مورد بحث قرار می¬دهند.

پیچیدگی نرم‏افزار را می‏توان بصورت سطوح پیچیدگی برای مولفه‏های مختلف یک سیستم نظیر پیچیدگی الگوریتم، پیچیدگی کد، پیچیدگی زبان

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

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

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

خواهد شد. بنابراین بین پیچیدگی و تشریح نیازمندی¬های نرم¬افزار که خروجی فاز اول از چرخه حیات نرم¬افزار محسوب می¬شود، ارتباط وجود دارد.

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

البته جهت تشریح و مشخص کردن نیازمندی¬های نرم¬افزار تکنیک استاندارد و منحصر به فردی وجود ندارد، اگرچه استانداردهایی مانند IEEE توصیه‏هایی خاصی در این زمینه ارائه داده¬اند[۲] اما عموماً نیازمندی‏ها به زبان طبیعی تشریح می‏شوند

. این رویکرد زمینه مناسب¬تری را برای ذینفعان،

خصوصاً کاربران و مشتریان جهت درک بهتر فراهم می¬آورد. در این بین هدف مهندسی نیازمندی‏های نرم‏افزار تأمین بیشترین رضایت مشتری/کاربر با

برآوردن انتظارات آن‏ها و تحویل نرم‏افزار در زمان و بودجه برآورد شده است. جهت دستیابی به رضایت مشتری و موفقیت پروژه در فرآیند مهندسی نرم¬افزار، می¬توان رابطه-ی زیر را سرلوحه کار قرار داد:

محصول آماده + کیفیت خوب + تحویل در زمانبندی و بودجه‏بندی تعیین شده = رضایت مشتری

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

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

مشخصات نیازمندی‏ها علاوه بر محدودیت‏های کیفیتی و سرویس‏هایی که سیستم باید فراهم کند باید شامل اطلاعات دامنه کاربرد و مفاهیم سازمانی که سیستم باید در آن کار کند نیز باشد. از این نظر، سه نوع از نیازمندی‏ها شناسایی می‏شوند: کارکردی

، غیرکارکردی و سازمانی. مشخص کردن نوع

نیازمندی‏ها بسیار مهم است. از آنجا که این نیازمندی‏ها ویژگی‏های متفاوتی دارند با این تمایز می‏توانیم روش‏ها و تکنیک‏های مناسبی را در طول فرآیند مهندسی نیازمندی‏ها انتخاب کنیم.
بنابراین نیازمندی¬ها شالوده فرآیند توسعه نرم¬افزار را شکل می¬دهند. شالوده سست منجر به سقوط کل ساختمان می¬شود و ضعف در مستند نیازمندی¬ها منجر به سقوط کل پروژه نرم¬افزاری می¬شود.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

۱-۲ تعریف مسئله
پیچیدگی نرم‏افزار، میزان کار فکری مورد نیاز برای درک نرم‏افزار را مشخص می‏کند. پیچیدگی در فاز توسعه‏ی نرم‏افزار، تلاش مورد نیاز برای تحلیل، طراحی،

کد، آزمون و اشکال‏زدایی برنامه، پیمانه‏ها و زیر سیستم‏ها را به شدّت تحت تأثیر قرار می‏دهد. در فاز نگهداری نرم‏افزار، پیچیدگی دشواری مکان‏یابی و تصحیح خطاهای کشف نشده پیاده‏سازی و همچنین میزان تلاش مورد نیاز برای تغییر پیمانه‏هایی از برنامه که باید تصحیح شوند را مشخص می‏کند.

طبقه‏بندی غالب برای پیچیدگی، ذاتی و افزونه است [۳]. پیچیدگی ذاتی از ماهیت مسأله نشأت می‏گیرد و با تحقق نیازمندی‏های نرم‏افزار گره خورده است. پیچیدگی افزونه نتیجه‏ی کوشش ناکافی برای حل مسأله است. بکارگیری الگوی طراحی نادرست

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

 

تصمیم‏گیری‏های آن‏ها در مراحل اولیه ایجاد می‏شود

. بدیهی است که مهندسی نیازمندی‏ها بزرگ‏ترین موضوع در مقابله با پیچیدگی ذاتی است.

نیازمندی‏ها مولفه‏های مشخصات نیازمندی‏های نرم‏افزار هستند که به طور مستقیم پیچیدگی مسأله/محاسبات نرم‏افزار را منعکس می‏کنند. در سال ۱۹۹۵

مطالعاتی توسط گروه Standish انجام گرفت و تحت عنوان گزارش CHAOS[6] منتشر گردید. در این مطالعات، ۸۰۰۰ پروژه نرم¬افزاری از ۳۵۲ شرکت مورد مطالعه قرار گرفتند، و دلایل شکستِ ۵۰% از این پروژه¬¬¬ها مشکلات آنها در بحث نیازمندی¬ها بود.

شناسایی و تحلیل نیازمندی¬ها حساس¬ترین فرآیند چرخه حیات نرم¬افزار است. Brooks بیان می-کند که «سخت¬ترین بخش از ساخت یک سیستم

نرم¬افزاری تصمیم¬گیری در باب تعیین ساختن چه چیز است. هیچ¬یک از دیگر بخش¬های کار سخت تر از تعیین جزئیات نیازمندی¬های تکنیکی

نمی¬باشد، که شامل تمام رابط¬ها به دیگر افراد، ماشین¬ها و دیگر سیستم¬های نرم¬افزاری است» [۲۸]. از این¬رو می¬توان مولفه¬های فاز اول از چرخه¬ی حیات نرم¬افزار را بعنوان عوامل بروز پیچیدگی در نظر گرفت.

پیچیدگی نرم¬افزار موضوعی است که در کل فرآیند توسعه نرم¬افزار و در هر مرحله از چرخه حیات محصول وجود دارد،‌ بنابراین جهت جلوگیری از انتشار پیچیدگی در چرخه حیات نرم¬افزار بهتر آن است که از همان مراحل ابتدایی یعنی فاز تحلیل نیازمندی¬ها، در جهت کنترل و کاهش پیچیدگی گام برداریم.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

در این حالت تصمیمات طراحی و پیاده¬سازی دقیق¬تر اتخاذ شده و منجر به کاهش پیچیدگی

طراحی، پیچیدگی کد، پیچیدگی آزمون و در نهایت کاهش پیچیدگی نرم¬افزار می¬شود. با این روند هزینه نگهداری نرم¬افزار کاهش و کیفیت نرم¬افزار بهبود می¬یابد.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

ایده‏¬ی پشت تمام تعاریف پیچیدگی این است که هرچه عبارت یا مدلی حاوی اطلاعات بیشتری باشد، پیچیده‏تر است. نیازمندی‏ها منشأ پیچیدگی

نرم‏افزار است تعداد زیاد نیازمندی‏ها، پیچیدگی و حجم هر نیازمندی و وابستگی بین نیازمندی‏ها بسیاری از فعالیت‏های اساسی چرخه‏ی حیات نرم‏افزار را تحت تأثیر قرار می‏دهند. شکل۲-۱ فعالیت‏های مهم متأثر از نیازمندی‏ها و مخصوصاً وابستگی بین آن‏ها را نشان می‏دهد.

تاکنون بیشتر تلاش¬های انجام گرفته جهت اندازه¬گیری، کنترل و کاهش پیچیدگی نرم¬افزار در مرحله کدنویسی و طراحی بوده است. در این

پایان¬نامه با تکیه بر فرآیند مهندسی نیازمندی¬ها، به بررسی و تحلیل فاکتورهای تاثیرگذار

در پیچیدگی نرم¬افزار-در فاز اولیه توسعه نرم¬افزار- پرداخته

می¬شود، تا در این راستا با شناسایی و اندازه¬گیری آنها، از ورود خطا به فرآیند و چرخه حیات محصول جلوگیری کرده و مهندس نرم¬افزار را قادر سازیم تا خطاها را که منشا بسیاری از هزینه¬ها در فاز نگهداری هستند، در همان فازهای نخست شناسایی کند.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

در همین امتداد به معرفی عوامل موثر در ایجاد پیچیدگی نرم¬افزار و نتایج حاصل از پیچیدگی، در فاز اول از چرخه حیات نرم¬افزار می¬پردازیم و در ادامه

با استناد به مدل پیشنهادی به ارائه متریکی جهت اندازه¬گیری میزان پیچیدگی در فاز اول از چرخه حیات نر¬م¬افزار خواهیم پرداخت.

۱-۳ بیشینه تحقیق
تاکنون کار زیادی در مورد منشأ و ماهیت پیچیدگی نرم‏افزار انجام نشده است. بیشتر کارهای انجام شده در زمینه‏ی پیچیدگی به تأثیر آن بر پروژه‏های

نرم‏افزاری پرداخته‏اند و کیفیت و هزینه‏های محصول در رأس بررسی‏ها قرار می‏گیرند. توجه مدیران و مهندسان پروژه‏های نرم‏افزاری به پیچیدگی نرم‏افزار برای کنترل و پیش‏بینی کیفیت و بهره‏وری محصول است [۶].
پیچیدگی نرم‏افزار برای اولین بار در دهه¬ی۷۰، توجه عمومی را به خود جلب کرد. سبک

برنامه‏نویسی پیمانه‏ای و شی‏گرا هر دو برای کاهش پیچیدگی نرم‏افزار مطرح شدند که کم و بیش پیچیدگی نرم‏افزار را تعدیل کردند. با این وجود، با افزایش اندازه نرم‏افزار، کنترل پیچیدگی نرم‏افزار خارج از کنترل بوده است[۷].
این مسأله امری طبیعی است که بیشتر سیستم‏های بزرگ به پیچیدگی گرایش دارند. McGregor تفاوت جالبی بین پیچیدگی

و بغرنجی مطرح می‏کند [۸]. پیچیدگی ممکن است در ذات دامنه مسأله باشد چنین مسأله‏ای طبیعتاً راه‏حل پیچیده‏ای داشته و درک چنین راه‏حلی زمان زیادی لازم دارد زیرا از

 

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

مسأله نیست. اما یک راه‏حل بغرنج درک و تحلیل دشواری دارد واضح است که مهندسان و توسعه‏دهندگان باید از راه‏حل‏های بغرنج اجتناب کرده و راه‏حل‏های پیچیده را به درستی مدیریت کنند.

Algar مطرح می‏کند که گروههای اصلی پیچیدگی که توسط توسعه‏دهندگان تعریف می‏شوند

عبارتنداز: اندازه، ساختار، محیط، دامنه کاربری و پیچیدگی ارتباطات. Fenton پیچیدگی نرم‏افزار را از جنبه‏های مختلف به چهار روش متفاوت تفسیر می‏کند: پیچیدگی مسأله (که پیچیدگی محاسباتی نیز نامیده

می‏شود) که پیچیدگی مسأله زیرین را اندازه‏گیری می‏کند، پیچیدگی الگوریتمی ؛ پیچیدگی

الگوریتمی است که برای حل مسأله پیاده‏سازی ارائه شده و کارایی نرم‏افزار را اندازه‏گیری می‏کند، پیچیدگی ساختاری ؛ پیچیدگی ساختار نرم‏افزاری را نشان می‏دهد که الگوریتم را پیاده‏سازی می‏کند. پیچیدگی

وابسته به دانش ؛ میزان تلاش مورد نیاز برای درک نرم‏افزار را نشان می‏دهد[۲].

تأکید این رساله روی پیچیدگی مسأله‏ است، این نوع پیچیدگی از طریق فاکتورها و خروجی فاز تحلیل نیازمندی¬ها و مشخصات آنها منعکس می‏گردد.

از اوسط سال ۱۹۷۰، مهندسی نیازمندی‏ها بعنوان یک شاخه متمایز کاری و تحقیقی شناخته شده و تعاریفی برای آن ارائه شد. در ابتدا مهندسی نیازمندی‏ها بصورت مرحله اول مهندسی نرم‏افزار تعریف شد. در طول سال‏ها با تکامل تحقیقات

مربوط به مهندسی نیازمندی‏ها، تعریف مهندسی نیازمندی‏ها وسعت یافت بطوری که کل چرخه‏ی حیات را در بر گرفت. موضوعات مهندسی نیازمندی‏ها با اهداف کسب و کار، برنامه‏ریزی، فرآیندها، توسعه و تکامل سیستم‏های درگیر دستیابی به مقاصد سازمانی مرتبط هستند.

اگرچه در مورد علل و ماهیت پیچیدگی نرم‏افزار اطلاعات زیادی موجود نیست [۶]؛ امّا چندین تعریف برای پیچیدگی ارائه شده است. بیشتر این تعاریف بر

اساس این مفهوم هستند که «پیچیدگی نرم‏افزار میزان دشواری تحلیل، طراحی، کد، آزمون، نگهداری، تغییر و اصلاح نرم‏افزار است». اندازه‏گیری نرم‏افزار،

متریک‏ها (معیارها) و میزان‏های نرم‏افزاری از دهه‏ شصت و به طور عمده از دهه هفتاد پایه‏ریزی شدند حاصل این کارهای ابتدایی، نتایج بیشتری بود که در

دهه‏های هشتاد و نود و بعد از آن ظاهر شد. طی سالیان محققان محدوده وسیعی از متریک¬های پیچیدگی نرم¬افزاری را ارایه کرده¬اند که با موفقیت در عمل وارد شده¬اند و در زمینه مدیریت ریسک، پیش¬بینی قابلیت¬اطمینان، محدود نگهداشتن هزینه و بهبود کیفیت نرم¬افزار کاربرد مستقیم داشته

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

است.
تحقیق بر روی متریک‏ها از دهه ۷۰ شروع شد در آن زمان روش توسعه‏ی نرم‏افزار رویه‏گرا بود. اولین متریک نرم‏افزاری مطرح شده که تاکنون مورد استفاده بوده خط کد است.
در سال ۱۹۷۶ McCabe اصطلاح «دور » را به عنوان متریکی برای پیچیدگی بر اساس تعاریف گراف پیشنهاد کرد. در سال ۱۹۷۷ Halstead اصطلاح دانش نرم‏افزار را برای تخمین بار کاری یا زمان کار برنامه‏نویسان معرفی کرد. ایده پشت این اصطلاح این بو…………………….

۱-۴ ساختار پایان¬نامه
این پایان¬نامه در ۶ فصل مجزا تنظیم شده است که بشرح زیر می¬باشد:
• فصل اول، مقدمه و در رابطه با تعریف صورت مسأله، تعیین حوزه و ساختار تحقیق بود.

• فصل دوم به ادبیات موضوع تحقیق اختصاص دارد در این فصل مفاهیم پیچیدگی نر‏م‏افزار، پیچیدگی ذاتی و افزوده، علل و عوامل تأثیرگذار در پیچیدگی

نرم‏افزار، اجزای تعیین کننده‏ی پیچیدگی نرم‏افزار و پیچیدگی در چرخه‏ی حیات نرم‏افزار به تفصیل بررسی می‏شود تا اطلاعات لازم برای پرداختن به جزئیات روش پیشنهادی این تحقیق فراهم شود.
• در فصل سوم به درک و شناخت نیازمندی‏ها می‏پردازیم که بلوک‏های پایه‏ی اتصال دهنده تمامی فعالیت‏های توسعه‏ی نرم‏افزار هستند سپس به تفصیل بیان

می‏کنیم که فرآیند مهندسی نیازمندی‏ها چرا، چگونه، توسط چه کسانی و در چه زمانی انجام می‏شود و اهمیت،محصول و تکنیک¬های این فرآیند چیست.

• در فصل چهارم به موضوع اندازه¬گیری و متریک¬های نرم¬¬افزاری و بطور خاص متریک¬های پیچیدگی نرم¬افزار پرداخته می¬شود. در این فصل ابتدا

به تعریف اندازه¬گیری، دلایل و اهداف آن اشاره می¬شود. در ادامه پس از تعریف متریک نرم¬افزاری به بررسی متریک¬های مختلف در فازهای مختلف

 

نرم¬افزار پرداخته خواهد شد. در انتها با بررسی دیدگاه¬های مختلف روی متریک¬های موجود، زمینه ارائه مدل ومتریک پیشنهادی در فصل بعد مهیا می¬شود.
• در فصل پنجم این پایان¬نامه، به ارائه¬ی مدل و متریک پیشنهادی جهت کنترل و کاهش پیچیدگی نرم¬افزار ارائه پرداخته می¬شود.

• در فصل ششم استفاده از متریک پیشنهادی را با بررسی «سیستم مدیریت قرائت از راه دور کنتورهای هوشمند گاز» نشان می¬دهیم و به ارائه جداول مقایسه¬ای جهت ارزیابی متریک پیشنهادی می¬پردازیم.
• در فصل هفتم

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

 

 

فصل دوم:پیچیدگی نرم¬افزار

۲-۱ مقدمه
هزینه‏های رو به رشد نرم‏افزار سازمان‏های نرم‏افزاری را بر آن داشته تا دنبال راه‏حلی برای کاهش این هزینه‏ها باشند. برای نیل به این مقصود محققان به

دنبال رابطه‏ای بین ویژگی‏های نرم‏افزار و مشکلات و دشواری‏های کار توسعه‏ی نرم‏افزار بودند. دشواری کار، زمان بیشتری برای انجام آن طلب می‏کند؛ در این

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

کنترل آن برای کنترل هزینه‏ها در چرخه‏ی حیات نرم‏افزار است زیرا پیچیدگی نرم‏افزار از عوامل اصلی

در افزایش سریع هزینه‏های توسعه و نگهداری عنوان می‏شود.
پیچیدگی نرم¬افزار فاکتوری است که به¬راحتی قابل اندازه¬گیری یا توصیف نیست و غالباً در طول فرآیند برنامه¬ریزی پروژه نادیده گرفته می¬شود.

بنابراین محققان بدنبال روشی کمّی برای پیش¬بینی میزان دشواری فهم، تغییر و نگهداری نرم¬افزار هستند تا با اندازه¬گیری و کنترل آن، منجر به کاهش هزینه¬ها در چرخه حیات نرم¬افزار شوند.
در واقع، در چند دهه اخیر پیچیدگی نرم¬افزار دوره جدیدی در زمینه دانش کامپیوتری ایجاد کرده است.

پیچیدگی نرم¬افزار را می¬توان بعنوان گرداننده

اصلی هزینه، قابلیت اطمینان و عملکرد سیستم-های نرم¬افزاری تعریف کرد.

اغلب تلاش¬های انجام شده در زمینه¬ی اندازه¬گیری پیچیدگی، به تاثیر پیچیدگی بر پروژه¬های نرم-افزاری پرداخته¬اند که در راس آنها کیفیت و

هزینه¬های محصول قرار می¬گیرد. در واقع توجه مدیران و مهندسان پروژه¬های نرم¬افزاری به پیچیدگی نرم¬افزار برای کنترل و پیش¬بینی کیفیت و بهره¬وری محصول است.
۲-۲ تعریف و ماهیت پیچیدگی نرم¬افزار
هنگامی که در مورد پیچیدگی نرم¬افزار صحبت می¬شود اولین سوالی که باید پاسخ داده شود

این است که «پیچیدگی چیست؟». باید گفت که توافق عمومی روی چگونگی تعریف پیچیدگی وجود ندارد و باور عمومی بر این است که پیچیدگی نرم¬افزار را نمی¬توان فقط با استفاده از یک بعد تعریف کرد.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

پیچیدگی نرم‏افزار یک موضوع کلی، غیراستاندارد و اصطلاحی وابسته است که ترکیب سیستم را توصیف می‏کند.

دلیل وابسته بودن این اصطلاح این است که مقدار مطلقی را نمی‏توان به آن نسبت داد. پیچیدگی نرم‏افزار اصطلاح غیراستانداردی است زیرا محدوده‏ی آن مشخص نبوده و می‏تواند در موارد متفاوت

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

فرهنگ کامپیوتری استاندارد IEEE [13]، «پیچیدگی» را به این صورت تعریف می‏کند: «میزان سختی درک یا بازبینی یک سیستم یا مولفه که طراحی یا پیاده¬سازی شده است». عبارت «سختی ِدرک» اشاره دارد که پیچیدگی لزوماً

مقیاس مطلقی برای اندازه¬گیری نیست بلکه نسبی است. به این معنی که آنچه برای شخصی پیچیده به نظر می‏رسد می‏تواند برای دیگری براحتی قابل فهم باشد.

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

تعریف Zuse از پیچیدگی بدین شرح است، «پیچیدگی نرم‏افزار سختی تحلیل، نگهداری، تست، طراحی و تغییر نرم‏افزار است»[]، به عبارت دیگر پیچیدگی نرم¬افزار موضوعی است که در کل فرآیند توسعه نرم¬افزار و در هر مرحله از چرخه حیات محصول وجود دارد.

Myers [16] پیچیدگی را به اینصورت تعریف می¬کند:«پیچیدگی یک شی معیاری از تلاش ذهنی موردنیاز جهت فهم و ایجاد آن شی است».

این تعاریف پیچیدگی نرم‏افزار را به پیچیدگی وابسته به روان‏شناسی مربوط می‏کند. سه نوع مشخص از پیچیدگی وابسته به روانشناسی…………………………..

 

بلافاصله بعد از پرداخت موفق میتوانید فایل کامل این پروژه را با سرعت و امنیت دانلود کنید

 

 

 

 

نقد وبررسی

نقد بررسی یافت نشد...

اولین نفر باشید که نقد و بررسی ارسال میکنید... “ارائه راهکاری برای کاهش پیچیدگی نرم افزار”

ارائه راهکاری برای کاهش پیچیدگی نرم افزار

0 نقد و بررسی
وضعیت کالا : موجود است.
شناسه محصول : 2212

قیمت : تومان9,800