طراحی نرم‌افزار
طراحی نرم‌افزار فرایند پیش‌بینی و تعریف راه حل‌های نرم‌افزاری به یک یا تعدادی از مشکلات است. یکی از اجزای اصلی طراحی نرم‌افزار، نرم‌افزار مورد نیاز تجزیه و تحلیل software requirements analysis]]SRA]] است. SRA بخشی از فرایند توسعه نرم‌افزار است که مشخصات مورد استفاده در مهندسی نرم‌افزار را فهرست می‌کند. اگر نرم‌افزار به‌طور «کامل اتوماتیک» (به معنی بدون کاربر یا رابط کاربری) باشد، طراحی نرم‌افزاری ممکن است به اندازه یک فلوچارت یا متن توصیفی دنباله ای از رویدادهای برنامه‌ریزی شده ساده باشد. همچنین روش‌های نیمه استاندارد مانند زبان مدل‌سازی یکسان و مفاهیم مدل‌سازی اساسی وجود دارد. در هر صورت، بعضی مستندات این طرح معمولاً محصول طراحی است. علاوه بر این، طراحی نرم‌افزار ممکن است یک پلت فرم_مستقل(platform-independent)یا پلت فرم_مشخص(platform-specific) باشد که بسته به دسترسی به تکنولوژی مورد استفاده برای طراحی دارد. تفاوت اصلی بین تجزیه و تحلیل نرم‌افزار و طراحی نرم‌افزار این است که خروجی یک تجزیه و تحلیل نرم‌افزاری از مشکلات کوچکتر برای حل مسئله تشکیل شده‌است. علاوه بر این، تجزیه و تحلیل نباید با تفوت زیادی در میان اعضای تیم یا گروه‌های مختلف، طراحی شود. در مقابل، طراحی بر قابلیت‌ها متمرکز است و بنابراین طرح‌های متعددی برای یک مشکل مشابه می‌تواند وجود داشته باشد. بسته به محیط، طراحی اغلب متفاوت است، چه از طریق چارچوب (frameworks)های قابل اعتماد چه با الگوهای طراحی(design patterns) مناسب پیاده‌سازی شده باشد. نمونه‌های طراحی شامل سیستم‌های عملیاتی، صفحات وب، دستگاه‌های تلفن همراه یا حتی پارادایم ابری جدید است.
پایگاه داده
طراحی پایگاه باید به گونه‌ای باشد که از پیش با نحوه عملکرد لایه میانی مدل بانک اطلاعاتی روی برنامه استفاده‌کننده هماهنگ باشد (گاهی برعکس برنامه بر اساس بانک اطلاعاتی موجود ساخته می‌شود اما نه زمانی پایگاه داده مختص پروژه در حال طراحی است) برای مثال بسته به میزان وسعت پروژه و تعداد کاربران ممکن است از لایه (Datamapper) با سرعت بالاتر برای پروژه‌های عظیم‌تر نسبت به الگوی ثبت کنشور (AR) که از سرعت‌پایین‌تری برخوردار است استفاده شود حتی در مواردی ممکن است امکان استفاده از هیچ‌گونه لایه ORM وجود نداشته باشد برای مثال به خاطر مسائل امنیتی هر گونه تراکنش بانک اطلاعاتی بواسطه procedureها و روتین‌های از پیش‌نوشته شده ایمن انجام شود و اجازه افزودن یا ویرایش روی سرور بانک اطلاعاتی برای کاربران سرور وجود نداشته باشد. اکثراً توصیه شده‌است که از AR برای پروژه‌هایی که کاربران بسیار دارند استفاده نشود در عوض دیتامپر گزینه بهتر است. در مبحث بانک‌های اطلاعاتی از عبارت دومین یا دامنه برای امور کاملاً متفاوتی استفاده می‌شود یکی از آن‌ها لایه دومین در تضاد با لایه بیزینس در دیتامپر است که یکی لایه کنترل‌کننده ثبت و ویرایش و بررسی ریلیشن داده‌هاست و دیگری لایه مدل‌سازی در برنامه که از لایه اول استفاده می‌کند.