طراحی نرم‌افزار
طراحی نرم‌افزار فرایند حل مسئله و برنامه‌ریزی در راستای ساختن یک نرم‌افزار است. طراحی نرم‌افزار فرایندی است که توسط آن یک عامل، مشخصه ای از نرم‌افزار را طراحی می‌کند که هدف آن، به انجام رساندن اهداف از پیش تعیین شده با استفاده از مجموعه ای از اجزای اولیه و با توجه به محدودیت‌ها است. طراحی نرم‌افزار می‌تواند به عنوان "تمام فعالیت‌های مربوط به مفهوم سازی، طراحی، اجرا، راه اندازی و در نهایت اصلاح سیستم‌های پیچیده" یا "فعالیت‌های مشخص مورد نیاز و قبل از برنامه‌نویسی و … [در] یک پروسه مهندسی نرم‌افزار. طراحی نرم‌افزار معمولاً شامل حل مسئله و برنامه‌ریزی یک راه حل نرم‌افزاری است که شامل طراحی جزئی اجزا و طراحی الگوریتم و طراحی معماری سطح بالا می‌باشد."
پایگاه داده
طراحی پایگاه باید به گونه‌ای باشد که از پیش با نحوه عملکرد لایه میانی مدل بانک اطلاعاتی روی برنامه استفاده‌کننده هماهنگ باشد (گاهی برعکس برنامه بر اساس بانک اطلاعاتی موجود ساخته می‌شود اما نه زمانی پایگاه داده مختص پروژه در حال طراحی است) برای مثال بسته به میزان وسعت پروژه و تعداد کاربران ممکن است از لایه (Datamapper) با سرعت بالاتر برای پروژه‌های عظیم‌تر نسبت به الگوی ثبت کنشور (AR) که از سرعت‌پایین‌تری برخوردار است استفاده شود حتی در مواردی ممکن است امکان استفاده از هیچ‌گونه لایه ORM وجود نداشته باشد برای مثال به خاطر مسائل امنیتی هر گونه تراکنش بانک اطلاعاتی بواسطه procedureها و روتین‌های از پیش‌نوشته شده ایمن انجام شود و اجازه افزودن یا ویرایش روی سرور بانک اطلاعاتی برای کاربران سرور وجود نداشته باشد. اکثراً توصیه شده‌است که از AR برای پروژه‌هایی که کاربران بسیار دارند استفاده نشود در عوض دیتامپر گزینه بهتر است. در مبحث بانک‌های اطلاعاتی از عبارت دومین یا دامنه برای امور کاملاً متفاوتی استفاده می‌شود یکی از آن‌ها لایه دومین در تضاد با لایه بیزینس در دیتامپر است که یکی لایه کنترل‌کننده ثبت و ویرایش و بررسی ریلیشن داده‌هاست و دیگری لایه مدل‌سازی در برنامه که از لایه اول استفاده می‌کند.