نرم افزار، يک برنامه کامپيوتری شامل مجموعه ای از دستورالعمل ها بوده که با هد فمندی خاصی در کنار يکديگر قرار گرفته تا از اين طريق نماينگر خواسته های مورد نظر باشند. نرم افزار مجری خواسته های مورد نظر در سرزمين سخت افزار بوده و با در اختيار گرفتن مجموعه ای از منابع سخت افزاری سعی در تحقق اهداف از قبل تعريف شده دارد.
بمنظورطراحی و پياده سازی نرم افزار به مجموعه ای از ملزومات نياز خواهد بود.
۱- روشی بمنظور ايجاد ارتباط با کاربر. نرم افزار محصولی است که توسط انسان طراحی و توسط گروهی ديگر مورد استفاده قرار خواهد گرفت. بديهی است که شرط اول در بکارگيری يک نرم افزار، ايجاد ارتباط با آن است .
۲ - روشی بمنظور تامين اهداف: در بطن واژه نرم افزار همواره يک هد فمندی خاص دنبال می گردد . بر همين اساس است که نرم افزار را می توان بعنوان يک موجوديت نمو( رشد ) کننده نيز در نظر گرفت . برای دستيابی به اهداف مورد نظر می بايست پس از شناسائی و تبين اهداف، اقدام به ارائه راهکارهای لازم بمنظور نيل به آنها نمود. هر نرم افزار برای تامين اهداف خود از مجموعه ای سياست ها و قوانين استفاده می نمايد.
۳ - روشی بمنظور مديريت داده ها : داده ها در يک برنامه کامپيوتری دارای جايگاه خاصی می باشند. بمنظور توليد فرآورده های اطلاعاتی می بايست در مرحله اول داده های خام به يک نرم افزار تغذيه و در مرحله بعد و پس از پردازش های لازم فرآورده های مورد نظر توليد گردند.
يک نرم افزار از مجموعه ای برنامه های جانبی و روتين ها تشکيل می گردد که بر اساس يک ساختار ماژولار با يکديگر مرتبط خواهند شد. نرم افزار نظير يک جدول (Puzzel ) بوده که که ازعناصر متفاوتی تشکيل و با در کنار هم قرار گرفتن آنها يک شکل صحيح که همانا هدف تعريف شده است ، نمايان خواهد شد. عناصرموجود در جدول(ساختار) فوق، بدرستی تصوير مناسبی از نرم افزار را در اختيار علاقه مندان ( کاربران ) قرار خواهند داد.
از بدو مطرح شدن نرم افزار تاکنون ، معماری های متفاوتی بمنطور طراحی و پياده سازی ارائه شده است . معماری های فوق از يکطرف برخاسته از امکانات و ماهيت سخت افزار ها در زمان خود و از طرف ديگر نمايانگر نوع و نگرش انتظارات طرح شده توسط کاربران است . بخاطر داشته باشيم که نرم افزار دارای ماهيتی پويا بوده و در هر زمان می بايست خود را با خيل عظيم نيازها و انتظارات جديد کاربران تطبيق نمايد. چراکه نرم افزار عصاره خواسته های انسانی بمنظور بالفعل شدن بر روی بستر سخت افزار در گذر زمان است .