موضوع مقاله: طراحی نرم‌افزار | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # طراحی نرم‌افزار | مقدمه: طراحی نرم‌افزار فرایندی است که توسط آن یک عامل، مشخصه ای از نرم‌افزار را طراحی می‌کند که هدف آن، به انجام رساندن اهداف از پیش تعیین شده با استفاده از مجموعه ای از اجزای اولیه و با توجه به محدودیت‌ها است.Ralph, P. | ## بخش 1: طراحی نرم‌افزار | طراحی نرم‌افزار می‌تواند به عنوان «تمام فعالیت‌های مربوط به مفهوم سازی، طراحی، اجرا، راه اندازی و در نهایت اصلاح سیستم‌های پیچیده» یا «فعالیت‌های مشخص مورد نیاز و قبل از برنامه‌نویسی و … [در] یک پروسه مهندسی نرم‌افزار شناخته شود. طراحی نرم‌افزار معمولاً شامل حل مسئله و برنامه‌ریزی یک راه حل نرم‌افزاری است که شامل طراحی جزئی اجزا و طراحی الگوریتم و طراحی معماری سطح بالا می‌باشد.» بررسی اجمالی طراحی نرم‌افزار فرایند پیش‌بینی و تعریف راه حل‌های نرم‌افزاری به یک یا تعدادی از مشکلات است. SRA بخشی از فرایند توسعه نرم‌افزار است که مشخصات مورد استفاده در مهندسی نرم‌افزار را فهرست می‌کند. اگر نرم‌افزار به‌طور «کامل اتوماتیک» (به معنی بدون کاربر یا رابط کاربری) باشد، طراحی نرم‌افزاری ممکن است به اندازه یک فلوچارت یا متن توصیفی دنباله ای از رویدادهای برنامه‌ریزی شده ساده باشد. همچنین روش‌های نیمه استاندارد مانند زبان مدل‌سازی یکسان و مفاهیم مدل‌سازی اساسی وجود دارد. تفاوت اصلی بین تجزیه و تحلیل نرم‌افزار و طراحی نرم‌افزار این است که خروجی یک تجزیه و تحلیل نرم‌افزاری از مشکلات کوچکتر برای حل مسئله تشکیل شده‌است. علاوه بر این، تجزیه و تحلیل نباید با تفوت زیادی در میان اعضای تیم یا گروه‌های مختلف، طراحی شود. در مقابل، طراحی بر قابلیت‌ها متمرکز است و بنابراین طرح‌های متعددی برای یک مشکل مشابه می‌تواند وجود داشته باشد. نمونه‌های طراحی شامل سیستم‌های عملیاتی، صفحات وب، دستگاه‌های تلفن همراه یا حتی پارادایم ابری جدید است. فرایند طراحی یک دنباله ای از مراحل است که طراح را قادر می‌سازد که تمام جنبه‌های ساخت نرم‌افزار را توصیف کند. مهارت خلاقیت، تجربیات گذشته، حس اینکه چه چیزی نرم‌افزار «خوب» را می‌سازد و تعهد کلی به کیفیت، نمونه‌هایی از عوامل موفقیت قطعی برای یک طراحی مناسب است. با این وجود مهم است که توجه داشته باشید که فرایند طراحی همیشه یک روش ساده نیست؛ مدل طراحی را می‌توان با طراحی معماری خانه مقایسه کرد. با نشان دادن کلیت چیزی که باید ساخته شود آغاز می‌شود (به عنوان مثال، ارائه سه بعدی خانه)؛ و به آرامی، این برای ساخت هر جزئی (به عنوان مثال، نصب لوله‌کشی) اراِیه شده. است به‌طور مشابه، مدل طراحی که برای نرم‌افزار ایجاد شده‌است، دیدگاه‌های مختلفی از نرم‌افزارهای کامپیوتری را فراهم می‌کند. مجموعه ای از اصول طراحی نرم‌افزار را پیشنهاد می‌کند که در لیست زیر ارائه شده و گسترش یافته‌است: فرایند طراحی نباید از «دید تونلی» رنج ببرد. از آنجایی که تنها یک عنصر از مدل طراحی اغلب می‌تواند به تعدادی از نیازها برگردد، لازم است که وسیله ای برای ردیابی نحوه رعایت الزامات مدل طراحی داشته باشیم. طراحی باید فاصله فکری بین نرم‌افزار و مشکلی را که به عنوان آن را در دنیای واقعی وجود دارد، به حداقل برساند. | ## بخش 2: طراحی نرم‌افزار | طراحی باید طوری ساختار یافته باشد که به راحتی تخریب شود، حتی هنگامی که با داده‌های غیرمعمول، حوادث یا شرایط عملیاتی مواجه می‌شوند. طراحی باید بر اساس کیفیت در هنگام به وجود آمدنش ارزیابی شود، نه بعد از تمام شدنش. مفهوم طراحی مفاهیم طراحی ارائه دهنده طراح نرم‌افزار بر اساسی است که از روش‌های پیچیده‌تر می‌توان استفاده کرد. مجموعه‌ای از مفاهیم طراحی بنیادی تکامل یافته شرح زیر هستند: چکیده: چکیده فرایند یا نتیجه تعمیم با کاهش محتوای اطلاعاتی یک مفهوم یا یک پدیده قابل مشاهده است، به‌طور معمول برای حفظ تنها اطلاعاتی که به یک هدف خاص مرتبط است. یک سلسله مراتب به وسیلهٔ تجزیه یک بیانیه ماکروسکوپیک از عملکرد به صورت گام به گام تا رسیدن به اظهارات زبان برنامه‌نویسی به دست می‌آید. در هر مرحله یک یا چند دستورالعمل از یک برنامه مشخص به دستورالعمل‌های دقیق‌تر تجزیه می‌شوند. معماری نرم‌افزار: این مورد به ساختار کلی نرم‌افزار اشاره دارد و راه‌هایی که این ساختار یک سیستم یکپارچه مفهومی را فراهم می‌کند. معماری نرم‌افزار خوب با بازدهی خوب، سرمایه‌گذاری را با توجه به نتیجه مطلوب پروژه، مثلاً از نظر عملکرد، کیفیت، برنامه و هزینه انجام می‌دهد. سلسله مراتب کنترل: یک ساختار برنامه‌ای که نشان دهنده سازمان یک جزء برنامه است و یک سلسله مراتب کنترل را نشان می‌دهد. پارتیشن‌های افقی، شاخه‌های جداگانه سلسله مراتبی ماژول‌ها را برای هر تابع برنامه اصلی تعریف می‌کنند. رویکرد نرم‌افزار: در این مورد تمرکز بر پردازش هر یک از ماژول‌ها به صورت جداگانه است. مخفی کردن اطلاعات: ماژول‌ها باید طوری مشخص و طراحی شوند تا اطلاعات موجود در یک ماژول برای ماژول‌های دیگری که نیازی به چنین اطلاعاتی ندارند، غیرقابل دسترسی باشد. گریدی بوچ در مدل شیء خود، انتزاع، کپسوله سازی، مدولار سازی و سلسله مراتب را به عنوان اصول طراحی نرم‌افزار معرفی می‌کند. مخفف PHAME (اصول سلسله مراتب، انتزاع، مدولار سازی و کپسولاسیون) گاهی برای اشاره به این چهار اصل اساسی استفاده می‌شود. برخی از این جنبه‌ها عبارت‌ند از: سازگاری: نرم‌افزار قادر به کار با سایر محصولات است که برای قابلیت همکاری با یک محصول دیگر طراحی شده‌اند. توسعه پذیری: قابلیت‌های جدید می‌تواند به نرم‌افزار بدون تغییرات عمده در معماری پایه اضافه شود. ماجول بودن: نرم‌افزار در نتیجه مستقل از اجزای مستقل است که منجر به بهبود قابلیت نگهداری می‌شود. | ## بخش 3: طراحی نرم‌افزار | سپس اجزا می‌توانند قبل از اینکه یک سیستم نرم‌افزاری مورد نظر یکپارچه شوند، به‌طور انفرادی اجرا و آزمایش شوند که اجازه می‌دهد تا تقسیم کار در یک پروژه توسعه نرم‌افزار رخ دهد. قابلیت نگهداری: اندازه‌گیری اینکه چگونه رفع اشکالات یا اصلاحات کاربردی می‌تواند انجام شود. قابلیت اطمینان (دوام نرم‌افزار): نرم‌افزار قادر به انجام یک تابع مورد نیاز در شرایط مشخص شده برای یک دوره مشخص از زمان است. قابل استفاده مجدد: توانایی استفاده از برخی یا تمام جنبه‌های نرم‌افزار پیشین در پروژه‌های دیگر با اصلاحات کمی و بدون تغییر. نیرومندی: این نرم‌افزار قادر به اجرا تحت فشار است یا تحمل ورودی غیرقابل پیش‌بینی یا نامعتبر است. قابلیت استفاده: نرم‌افزار رابط کاربر باید برای کاربر و مخاطب هدف مورد استفاده قرار گیرد. مقادیر پیش فرض برای پارامترها باید انتخاب شوند به طوری که برای اکثریت کاربران انتخاب خوبی باشد. کارایی: نرم‌افزار وظایف خود را در یک فریم زمان که برای کاربر قابل قبول است انجام می‌دهد و به حافظه بیشمار نیاز ندارد. قابل حمل بودن: نرم‌افزار باید در شرایط مختلف و محیط‌های مختلف قابل استفاده باشد. زبان مدل‌سازی زبان مدل‌سازی یک زبان مصنوعی است که می‌تواند برای بیان اطلاعات، دانش یا سیستم‌ها در یک ساختار تعریف شده توسط مجموعه ای از قوانین ثابت استفاده شود. نمونه‌هایی از زبان‌های مدل‌سازی گرافیکی برای طراحی نرم‌افزار عبارتند از: زبان توصیف معماری (ADL) زبان مورد استفاده برای توصیف و نمایندگی معماری نرم‌افزار یک سیستم نرم‌افزاری است. نشانه گذاری مدل‌سازی فرایند کسب و کار (BPMN) نمونه ای از زبان مدل‌سازی پردازش است. زبان مدل‌سازی سازمانی توسعه یافته (EEML) است معمولاً برای مدل‌سازی فرایند کسب و کار در لایه‌های زیادی استفاده می‌شود. استفاده مجدد از این الگوها می‌تواند به سرعت بخشیدن به فرایند توسعه نرم‌افزار کمک کند. استفاده سند طراحی نرم‌افزار ممکن است مورد بررسی قرار گیرد و اجازه می‌دهد محدودیت‌ها و مشخصات و حتی نیازهای قبل از برنامه‌نویسی بررسی شود. | ## جمع‌بندی | ممکن است طراحی نرم‌افزار در فرایند برنامه‌ریزی، بدون نیاز به برنامه یا تجزیه و تحلیل باشد،Ralph, P.