== مفهوم طراحی ==
مفاهیم طراحی ارائه دهنده طراح نرمافزار بر اساسی است که از روشهای پیچیدهتر میتوان استفاده کرد. مجموعه ایمجموعهای از مفاهیم طراحی بنیادی تکامل یافته شرح زیر هستند:
# [[چکیده]]-: چکیده فرایند یا نتیجه تعمیم با کاهش محتوای اطلاعاتی یک مفهوم یا یک پدیده قابل مشاهده است، بهطور معمول برای حفظ تنها اطلاعاتی که به یک هدف خاص مرتبط است. در واقع نمایانگر ویژگیهای مهم بدون بیان جزئیات است.
# [[اصلاح]]-: این روند تکامل است. یک سلسله مراتب به وسیلهٔ تجزیه یک بیانیه ماکروسکوپیک از عملکرد به صورت گام به گام تا رسیدن به اظهارات زبان برنامهنویسی به دست میآید. در هر مرحله یک یا چند دستورالعمل از یک برنامه مشخص به دستورالعملهای دقیق تردقیقتر تجزیه میشوند. چکیده و اصلاح مفاهیم مکمل هستند.
# پیمانهپیمانهای: ایی-معماری نرمافزار به اجزای به نام ماژول تقسیم میشود.
# [[معماری نرمافزار]]-: این مورد به ساختار کلی نرمافزار اشاره دارد و راههایی که این ساختار یک سیستم یکپارچه مفهومی را فراهم میکند. معماری نرمافزار خوب با بازدهی خوب، سرمایهگذاری را با توجه به نتیجه مطلوب پروژه، مثلاً از نظر عملکرد، کیفیت، برنامه و هزینه انجام میدهد.
# سلسله مراتب کنترل-: یک ساختار برنامه ایبرنامهای که نشان دهنده سازمان یک جزء برنامه است و یک سلسله مراتب کنترل را نشان میدهد.
# تقسیم سازه-: ساختار برنامه را میتوان به صورت افقی و عمودی تقسیم کرد. پارتیشنهای افقی، شاخههای جداگانه سلسله مراتبی ماجولها را برای هر تابع برنامه اصلی تعریف میکنند. پارتیشنبندی عمودی نشان میدهد که کنترل و کار باید در ساختار برنامه توزیع شود.
# [[ساختار دادهها]]-: این مورد نشان دهنده ارتباط منطقی میان عناصر دادهای است.
# رویکرد نرمافزار-: در این مورد تمرکز بر پردازش هر یک از ماژولها به صورت جداگانه است.
# مخفی کردن اطلاعات-: ماژولها باید طوری مشخص و طراحی شوند تا اطلاعات موجود در یک ماژول برای ماژولهای دیگری که نیازی به چنین اطلاعاتی ندارند، غیرقابل دسترسی باشد.
گریدی بوچ {{انگلیسی|Grady Booch}} در مدل شیء خود، Abstraction,انتزاع، کپسوله Encapsulation,سازی، Modularisationمدولارسازی و سلسله مراتب را به عنوان اصول طراحی نرمافزار معرفی میکند.<ref>{{cite book|last1=Booch|first1=Grady|title=Object-Oriented Analysis and Design with Applications|date=2004|publisher=Addison Wesley|location=MA, USA|isbn=0-201-89551-X|edition=3rd|url=http://dl.acm.org/citation.cfm?id=975416|accessdate=30 January 2015|display-authors=etal}}</ref> The acronym PHAME (Principles of Hierarchy, Abstraction, Modularisation, and Encapsulation) is sometimes used to refer to these four fundamental principles.<ref>{{cite book|last1=Suryanarayana|first1=Girish|title=Refactoring for Software Design Smells|date=November 2014|publisher=Morgan Kaufmann|isbn=978-0-12-801397-7|pages=258|url=https://www.amazon.com/Refactoring-Software-Design-Smells-Technical/dp/0128013974|accessdate=31 January 2015}}</ref>
== ملاحظات طراحی ==
|