Un model de analiză software este o metodă de proiectare a unui program de calculator prin echivalarea proceselor sau modelelor abstracte cu funcționarea programului dezvoltat. Conceptul este de a compara un tip de model care funcționează eficient într-un anumit context, de obicei în lumea reală, și apoi de a aplica aceeași logică și, uneori, terminologia modelului programului proiectat. Evaluând în acest fel funcționarea generală a unui program sau modul, scopul este de a găsi modele mai mici în timpul analizei software și, potențial, modele de proiectare adecvate pentru a începe să elaboreze detaliile reale de implementare. Spre deosebire de modelele de proiectare care sunt adesea folosite pentru a ajuta la implementarea proiectării și a codului, un model de analiză software este mai degrabă menit să ofere un cadru pentru gândirea unui proiect, astfel încât complexitățile să fie mai bine vizualizate. Nu există o definiție formală pentru utilizarea sau dezvoltarea unui model de analiză software, deși există câteva exemple de modele.
În etapele inițiale ale dezvoltării software, un model de analiză a software-ului este destinat să ajute la structurarea vederii generale a unui program și a modului în care părțile sale se leagă între ele. Cu toate acestea, modelul este destinat analizei abstracte și nu pentru elaborarea detaliilor mai mici ale unei aplicații, cum ar fi metode individuale, variabile sau formate de fișiere. Unul dintre motivele abstracției este că conceptul unui model unic de analiză a software-ului poate fi modificat doar ușor și apoi reutilizat pentru alt software care ar putea, în realitate, să îndeplinească o sarcină complet diferită.
Când se dezvoltă modelul de analiză software, exemplele din lumea reală sunt cele mai des folosite. Un exemplu ar putea fi utilizarea unui oficiu poștal ca model de analiză software pentru un server de mesaje simplu. În acest exemplu, literele ar reprezenta un mesaj, iar o ștampilă ar putea reprezenta un anumit tip de validare a serverului. O cutie poștală devine o coadă de mesaje, iar orele de preluare și predare sunt legate de procesele de trimitere și primire. În acest fel, structura complexă a aplicației poate fi abstractizată și gândită într-un mod mai concret, atât de mult încât terminologia sursei tiparului se poate traduce adesea în denumirile claselor sau ale componentelor programului în sine în timpul implementare.
Pot apărea complicații atunci când se utilizează un model de analiză software, în special pentru programe foarte mari. Suprasimplificarea unui program în timpul dezvoltării este posibilă, astfel încât unele subsisteme ar putea, în timpul implementării, să nu se încadreze strict în modelul analitic odată realizat. Alternativ, un model ar putea fi astfel structurat încât evenimentele din program să fie modelate într-un mod care să se potrivească cu modelul și să fie clare, dar ar putea să nu fie neapărat foarte eficiente.