موضوع مقاله: نقشه نرم‌افزاری | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # نقشه نرم‌افزاری | مقدمه: نقشه نرم‌افزاری اطلاعات استاتیک، پویا و تکاملی سیستم‌های نرم‌افزاری وفرایندهای توسعه نرم‌افزار آن‌ها را با استفاده از تصویرسازی اطلاعات دوبعدی یاسه‌بعدی نمایش می‌دهد. | ## بخش 1: نقشه نرم‌افزاری | این یک مفهوم و ابزار اساسی در تصویرسازی نرم‌افزار، تجزیه و تحلیل و تشخیص نرم‌افزار است. کاربردهای اصلی آن شامل تحلیل ریسک و نظارت بر کیفیت کد، فعالیت تیم، یا پیشرفت توسعه نرم‌افزار است و به‌طور کلی، بهبود اثربخشی مهندسی نرم‌افزار با توجهبه همه مصنوعات، فرایندها، و سهامداران در سراسر فرایند مهندسی نرم‌افزار و نگهدارینرم‌افزار است. انگیزه و مفاهیم نقشه‌های نرم‌افزاری(software map) در زمینه مهندسی نرم‌افزار بکار می‌رود: پیچیده، پروژه‌های طولانی مدت توسعه نرم‌افزاری معمولاً با مشکلات زیادی برخورد می‌کنند مثل اصطکاک بین تکمیل ویژگی‌های سیستم و در همان زمان به دست آوردن درجه بالایی از کیفیت کد و کیفیت نرم‌افزار برای اطمینان از حفظ نرم‌افزار سیستم در آینده. به‌طور خاص، «حفظ سیستم‌های نرم‌افزاری پیچیده، هزینه‌بر است زیرا سازندگان بخش مهمی از زمان خود را با تلاش برای درک ساختار و رفتار سیستم صرف می‌کنند.» ایده کلیدی نقشه‌های نرم‌افزاری، مقابله با این چالش و مشکلات بهینه‌سازی با فراهم نمودن وسیله‌های ارتباطی تأثیرگذار برای بستن شکاف ارتباطی بین سهامداران مختلف و دامنه‌های اطلاعات در پروژه‌های توسعه نرم‌افزار و بدست آوردن دیدگاه در مفهوم تجسم اطلاعات است. نقشه‌های نرم‌افزاری از تکنیک‌های نقشه نگاری دقیقی که به خوبی تعریف شده‌اند استفاده می‌کنند و از استعاره مدل شهر سه‌بعدی استفاده می‌کنند تا فضای اطلاعاتی پیچیده و انتزاعی را بیان کنند. استعاره لازم است "چون که نرم‌افزار هیچ شکل فیزیکی ندارد، هیچ نقشه‌برداری طبیعی از نرم‌افزار به فضای دو بعدی وجود ندارد ." نقشه‌های نرم‌افزار نقشه‌هایی غیر فضایی هستند که باید داده‌های سلسله‌مراتب و ویژگی‌های آن را به یک نمایش فضایی تبدیل کند. برنامه‌ها نقشه‌های نرم‌افزاری به‌طور کلی امکان ارتباطات قابل فهم و مؤثر در زمینه‌های خطرات و هزینه‌های پروژه‌های توسعه نرم‌افزار را به سهامداران مختلف مانند تیم مدیریت و توسعه می‌دهد. آن‌ها وضعیت برنامه‌های کاربردی و سیستم‌هایی را که در حال حاضر در حال توسعه یا توسعه بیشتر هستند را برای رهبران پروژه و مدیریت در یک نگاه برقرار می‌کنند. «یک جنبه کلیدی برای این تصمیم‌گیری، این است که نقشه‌های نرم‌افزاری، زمینه ساختاری مورد نیاز برای تفسیر صحیح این شاخص‌های عملکرد را فراهم می‌کند». به عنوان یک وسیله ارتباطی، نقشه‌های نرم‌افزاری به عنوان فضاهای باز و شفاف اطلاعات عمل می‌کنند که اولویت‌های کیفیت کد و ایجاد توابع جدید را قادر می‌سازد که در برابر یکدیگر تعامل می‌سازد و برای بهبود فرایند توسعه نرم‌افزار اقدام‌های لازم را انجام دهند. برای مثال، آن‌ها تصمیم‌گیری را در مورد جایی که در آن کد افزایش کیفیت برای تسریع فعالیت‌های توسعه‌ای جاری و کاهش خطرات ناشی از مشکلات نگهداری آینده سودمند خواهد بود، راحت می‌کنند. با توجه به درجه بالای بیانگری شان (به عنوان مثال، چگالی اطلاعات) و تولید آنی آن‌ها، این نقشه‌ها همچنین به انعکاس وضعیت فعلی فرایندهای سیستم و توسعه کمک می‌کند، یک شکاف اطلاعات ضروری بین تیم‌های مدیریت و توسعه، افزایش آگاهی در مورد وضعیت، و خدمت به عنوان ابزار تشخیص ریسک اولیه.. | ## بخش 2: نقشه نرم‌افزاری | فهرست نقشه‌های نرم‌افزاری بر پایه اطلاعات عینی است که تجزیه و تحلیل کد و اطلاعات واردشده از سیستم‌های مخزن نرم‌افزار، اطلاعات از کده‌ای منبع، یا ابزارهای توسعه نرم‌افزار وابزارهای برنامه‌نویسی تعیین می‌شود. به‌طور خاص، نقشه‌های نرم‌افزاری به یک زبان برنامه‌نویسی، زبان مدل‌سازی یا مدل فرایند توسعهنرم‌افزار بستگی ندارد. نقشه‌های نرم‌افزاری از سلسله مراتب مفاهیم اجرای پیاده‌سازی نرم‌افزار مانند فایل‌های کد منبع برای ساخت یک نقشه درخت استفاده می‌کنند، به عنوان مثال، بخش مستطیلی که نشان‌دهنده کل سلسله‌مراتب و تقسیم مساحت به زیر نواحی مستطیلی است. یک نقشه نرم‌افزاری، به‌طور غیررسمی، شبیه یک مدل شهری مجازی سه‌بعدی است، که بدین ترتیب مصنوعات از سیستم نرم‌افزاری به عنوان ساختمان‌های سه بعدی مجازی، مستطیل شکل یا برج‌ها مطرح می‌شوند که بر اساس موقعیت آن‌ها در سلسله مراتب پیاده‌سازی نرم‌افزار قرار می‌گیرند. نقشه‌های نرم‌افزاری می‌توانند اطلاعات مربوط به توسعه نرم‌افزار، کیفیت نرم‌افزار و دینامیک سیستم را با نقشه‌برداری از این که اطلاعات بر روی متغیرهای تصویری عناصر نقشه درخت مانند اندازه مساحت، ارتفاع، رنگ یا بافت را ترکیب کنند. آن‌ها می‌توانند به صورت منظم مشخص شوند، به‌طور خودکار تولید شوند و توسط الگوها سازماندهی شوند. به عنوان نمونه سیستم نرم‌افزار نقشه برداری نقشه‌های نرم‌افزاری «ترکیب اطلاعات موضوعی در مورد فرایندهای توسعه نرم‌افزار (تکامل)، کیفیت نرم‌افزار، ساختار، و پویایی و نمایش این اطلاعات به روش نقشه ای است». مثلاً: ارتفاع یک ساختمان مجازی می‌تواند متناسب با پیچیدگی واحد کد (به عنوان مثال، تکیا ترکیبی از معیارهای نرم‌افزاری) باشد. مساحت زمین یک ساختمان سه‌بعدی مجازی می‌تواند متناسب با تعداد خطوط کد درماژول باشد یا (به عنوان مثال، خطوط اظهار نظر غیر تفسیر). رنگ می‌تواند وضعیت توسعه فعلی را بیان کند، به عنوان مثال، چند توسعه دهندگان در حال تغییر / ویرایش واحد کد هستند. با این پیکربندی نمونه، نقشه نرم‌افزار نقاط مهمی را در کد منبع با رابطه با جنبه‌های فرایند توسعه نرم‌افزار نشان می‌دهد. برای مثال در یک نگاه مشخص می‌شود که چه تغییری باید صورت گیرد: به سرعت تغییرات را اجرا کنید. | ## بخش 3: نقشه نرم‌افزاری | نقشه‌های نرم‌افزاری، ابزارهای کلیدی در حوزه تشخیص نرم‌افزار تشخیص نرم‌افزارخودکار هستند. به عنوان وسیله‌های هوش تجاری و سیستم‌های توصیه نقشه‌های نرم‌افزاری را می‌توان به‌طور خاص به عنوان ابزار تحلیلی و معرفی سیستم‌های اطلاعاتی کسب‌وکار، متخصص در تجزیه و تحلیل داده‌های مربوط به نرم‌افزار استفاده کرد. علاوه بر این، نقشه‌های نرم‌افزاری " به عنوان سیستم‌های توصیه برای مهندسی نرم‌افزار عمل می‌کنند. نقشه‌های نرم‌افزاری به اطلاعات مربوط به نرم‌افزار محدود نمی‌شوند: آن‌ها می‌توانندشامل هر گونه اطلاعات سلسله مراتبی سیستم همانند اطلاعات نگهداری از مصنوعات فنی پیچیده باشند. تکنیک‌های تجسم نقشه‌های نرم‌افزاری در حوزه تجسم نرم‌افزاری مورد بررسی قرار می‌گیرند. تجسم کردن نقشه نرم‌افزاری به‌طور معمول مبتنی بر نقشه درختی است، «یک رویکرد پر کننده فضابرای تجسم ساختارهای اطلاعات سلسله مراتبی» [۹] یا سایر رویکردهای نگاشت سلسله مراتبی. الگوریتم‌های طرح بندی برای ساخت نقشه‌های نرم‌افزاری، روش‌های چیدمان متفاوت برای تهیه نقشه فضایی اساسی از مؤلفه‌ها به کار می‌روند: الگوریتم‌های نقشه درخت که در ابتدا سلسله‌مراتب نرم‌افزار را در یک ناحیه مستطیلیتودرتو اجرا می‌کنند الگوریتم‌های (Voronoi-map)که در ابتدا سلسله مراتب نرم‌افزار را با ایجاد یک نقشه Voronoi طراحی می‌کنند. ثبات طرح آرایش فضایی محاسبه‌شده توسط چیدمان‌هایی که توسط نقشه‌های درختی تعریف شده‌اند بستگی به سلسله‌مراتب دارد. در صورتی که نقشه‌های نرم‌افزاری به صورت مرتب برای یک سیستم در حال تحول و در حال تغییر ایجاد شود، قابلیت استفاده از نقشه‌های نرم‌افزاری با چیدمان‌های بدون ثبات تحت‌تاثیر قرار می‌گیرد، یعنی تغییرات جزئی در سلسله‌مراتب ممکن است باعث تغییرات قابل‌توجهی در چیدمان شوند. تاریخ توابع نقشه‌های نرم‌افزاری و روش‌های نقشه‌های نرم‌افزاری به تجسم علمی تجسم نرم‌افزاری و تصویرسازی اطلاعات تعلق دارند. | ## جمع‌بندی | نقشه‌های نرم‌افزاری به صورت وسیعی توسعه‌یافته و مورد تحقیق قرار گرفته‌اند، به عنوان مثال، در موسسه(Hasso Plattner) برای مهندسی سیستم‌های فناوری اطلاعات، به ویژه برای سیستم‌های پیچیده فناوری اطلاعات استفاده شدند.