طراحی نرم‌افزار
طراحی نرم‌افزار فرایند پیش‌بینی و تعریف راه حل‌های نرم‌افزاری به یک یا تعدادی از مشکلات است. یکی از اجزای اصلی طراحی نرم‌افزار، نرم‌افزار مورد نیاز تجزیه و تحلیل software requirements analysis]]SRA]] است. SRA بخشی از فرایند توسعه نرم‌افزار است که مشخصات مورد استفاده در مهندسی نرم‌افزار را فهرست می‌کند. اگر نرم‌افزار به‌طور «کامل اتوماتیک» (به معنی بدون کاربر یا رابط کاربری) باشد، طراحی نرم‌افزاری ممکن است به اندازه یک فلوچارت یا متن توصیفی دنباله ای از رویدادهای برنامه‌ریزی شده ساده باشد. همچنین روش‌های نیمه استاندارد مانند زبان مدل‌سازی یکسان و مفاهیم مدل‌سازی اساسی وجود دارد. در هر صورت، بعضی مستندات این طرح معمولاً محصول طراحی است. علاوه بر این، طراحی نرم‌افزار ممکن است یک پلت فرم_مستقل(platform-independent)یا پلت فرم_مشخص(platform-specific) باشد که بسته به دسترسی به تکنولوژی مورد استفاده برای طراحی دارد. تفاوت اصلی بین تجزیه و تحلیل نرم‌افزار و طراحی نرم‌افزار این است که خروجی یک تجزیه و تحلیل نرم‌افزاری از مشکلات کوچکتر برای حل مسئله تشکیل شده‌است. علاوه بر این، تجزیه و تحلیل نباید با تفوت زیادی در میان اعضای تیم یا گروه‌های مختلف، طراحی شود. در مقابل، طراحی بر قابلیت‌ها متمرکز است و بنابراین طرح‌های متعددی برای یک مشکل مشابه می‌تواند وجود داشته باشد. بسته به محیط، طراحی اغلب متفاوت است، چه از طریق چارچوب (frameworks)های قابل اعتماد چه با الگوهای طراحی(design patterns) مناسب پیاده‌سازی شده باشد. نمونه‌های طراحی شامل سیستم‌های عملیاتی، صفحات وب، دستگاه‌های تلفن همراه یا حتی پارادایم ابری جدید است.
امنیت سیستم نرم‌افزار
در ابتدا تجزیه و تحلیل خطرهای عملکردی (FHA) اغلب به موازات یا به عنوان بخشی از تجزیه و تحلیل عملکرد مهندسی سیستم (برای تعیین توابع ایمنی-بحرانی (SCF) سیستم برای تجزیه و تحلیل بیشتر و بازبینی) به کار برده شدند. ایمنی سیستم نرم‌افزار به‌طور مستقیم به جنبه‌های مهم طراحی و ویژگی‌های ایمنی در نرم‌افزار و قابلیت سیستم ارتباط دارد، در حالیکه ویژگی‌های کیفی نرم‌افزار از لحاظ ذاتی متفاوت هستند و نیازمند بررسی دقیق استاندارد و دقت توسعه است. سطح اطمینان توسعه (DAL) و سطح دقت مرتبط (LOR) یک رویکرد درجه‌بندی شده به کیفیت نرم‌افزار و تضمین طراحی نرم‌افزار به عنوان پیش نیاز است که یک فرایند مناسب نرم‌افزار برای اطمینان بوسیله آن دنبال می‌شود. مفاهیم LOR و استانداردهایی مانند DO-178C جایگزین ایمنی نرم‌افزار نمی‌شوند. ایمنی نرم‌افزار هر IEEE STD-1228 و MIL-STD-882E بر الزامات ایمنی صریح و حتمی متمرکز شده و با استفاده از رویکردهای عملکردی از تجزیه و تحلیل الزامات ایمنی و دیدگاه تست تأیید می‌شود. تجزیه و تحلیل خطر ایمنی نرم‌افزار مورد نیاز برای سیستم‌های پیچیده تر که در آن نرم‌افزار توابع بحرانی را به‌طور کلی کنترل می‌کند در دسته‌های ترتیبی زیر هستند و در مرحله ای به عنوان بخشی از ایمنی سیستم یا فرایند مهندسی ایمنی انجام می‌شود: تجزیه و تحلیل الزامات ایمنی نرم‌افزار؛ تجزیه و تحلیل طراحی ایمنی نرم‌افزار (سطح بالا، طراحی دقیق و در سطح کد)؛ تجزیه و تحلیل آزمون ایمنی نرم‌افزار و تجزیه و تحلیل تغییر ایمنی نرم‌افزار. هنگامی که این تجزیه و تحلیل عملکردی ایمنی نرم‌افزار تکمیل می‌شود، تیم مهندسی نرم‌افزار می‌داند در هنگام طراحی در ویژگی‌های ایمنی نرم‌افزار برای اطمینان از عملکرد صحیح و شناسایی خطاها، خرابی‌ها، کاستی‌ها و پیاده‌سازی تعدادی از استراتژی‌های کاهش ریسک برای کنترل خطرات، کجا بر ایمنی تأکید کند و بر چه موضوعات عملکردی، مسیرهای عملکردی، دامنه‌ها و مرزهایی تمرکز کند. فناوری‌های امنیت نرم‌افزار و فناوری‌های مختلف محافظت از نرم‌افزار شبیه به ویژگی‌های ایمنی نرم‌افزار در طراحی برای کاهش انواع آسیب‌پذیری‌ها و خطرات تهدید است. نرم‌افزار تعیین‌کننده در طراحی بوسیلهٔ بررسی رفتار درست و قابل پیش‌بینی در سطح سیستم، مطلوب است.این مقاله شامل مواد دامنه عمومی از ادبیات دولت ایالات متحده "مشترک سیستم ایمنی نرم‌افزار سیستم کمیته" نرم‌افزار سیستم مدیریت ایمنی "یک روش فنی و مدیریت تیمی" این سند در اصل از سمت وب به دست آمده " link|date=May 2018 |bot=InternetArchiveBot |fix-attempted=yes}} http://www.monmouth.army.mil/cecom / ایمنی / sys_service /٪ 5B٪ 5D ". که این پایگاه در سال ۲۰۱۱ بسته شده‌است. یک PDF از این سند در https://web.archive.org/web/20171013125128/http://www.system-safety.org/Documents/Software_System_Safety_Handbook.pdf موجود است 2.15 مگابایت