== ملاحظات طراحی ==
در طراحی یک قطعه نرمافزاری، جنبههای بسیاری وجود دارد. اهمیت هر بررسی باید نشان دهنده اهداف و انتظارات برنامهنویسی برای دیدار باشد. برخی از این جنبهها عبارتندعبارتند از:
* '''سازگاری'''-: نرمافزار قادر به کار با سایر محصولات است که برای قابلیت همکاری با یک محصول دیگر طراحی شدهاند.
* '''توسعه پذیری'''-: قابلیتهای جدید میتواند به نرمافزار بدون تغییرات عمده در معماری پایه اضافه شود.
* '''ماجول بودن'''-: نرمافزار در نتیجه مستقل از اجزای مستقل است که منجر به بهبود قابلیت نگهداری میشود. سپس اجزاءاجزا میتوانند قبل از اینکه یک سیستم نرمافزاری مورد نظر یکپارچه شوند، بهطور انفرادی اجرا و آزمایش شوند که اجازه میدهد تا تقسیم کار در یک پروژه توسعه نرمافزار رخ دهد.
* '''[[تحمل خطا]]'''-: نرمافزار مقاوم است و قادر به بازیابی شکستهای قسمتهای جزیی است.
* '''قابلیت نگهداری'''-: اندازهگیری اینکه چگونه رفع اشکالات یا اصلاحات کاربردی میتواند انجام شود. قابلیت نگهداری بالا میتواند محصول ماجولار و توسعه پذیری باشد.
* '''قابلیت اطمینان''' (دوام نرمافزار)-: نرمافزار قادر به انجام یک تابع مورد نیاز در شرایط مشخص شده برای یک دوره مشخص از زمان است.
* '''قابل استفاده مجدد'''-: توانایی استفاده از برخی یا تمام جنبههای نرمافزار پیشین در پروژههای دیگر با اصلاحات کمی و بدون تغییر.
* '''نیرومندی'''-: این نرمافزار قادر به اجرا تحت فشار است یا تحمل ورودی غیرقابل پیشبینی یا نامعتبر است. به عنوان مثال، میتوان آن را با مقاومت در برابر شرایط کم حافظه طراحی کرد.
* '''[[امنیت]]'''-: این نرمافزار قادر به مقاومت در برابر اقدامات خصمانه است.
* '''قابلیت استفاده'''-: نرمافزار [[رابط کاربر]] باید برای کاربر و مخاطب هدف مورد استفاده قرار گیرد. مقادیر پیش فرض برای پارامترها باید انتخاب شوند به طوری که برای اکثریت کاربران انتخاب خوبی باشد.
* '''[[کارایی]]'''-: نرمافزار وظایف خود را در یک فریم زمان که برای کاربر قابل قبول است انجام میدهد و به حافظه بیشمار نیاز ندارد.
* '''قابل حمل بودن'''-: نرمافزار باید در شرایط مختلف و محیطهای مختلف قابل استفاده باشد.
* '''[[مقیاس پذیری]]'''-: نرمافزار به خوبی به افزایش دادهها یا تعداد کاربران کمک میکند.
== زبان مدلسازی ==
|