Εισαγωγή
Θα μπορούσαμε να ορίσουμε το λογισμικό ως ένα σύνολο προγραμμάτων - δομές δεδομένων και εντολές - καθώς και το υλικό τεκμηρίωσης του. Οι δομές δεδομένων επιτρέπουν στο πρόγραμμα να διαχειρίζεται πληροφορίες, ενώ οι εντολές, όταν εκτελούνται, παρέχουν στους χρήστες τις επιθυμητές λειτουργίες. Η τεκμηρίωση περιγράφει τον τρόπο λειτουργίας και χρήσης των προγραμμάτων.
Στην ορολογία της επιστήμης των υπολογιστών μπορούμε να διακρίνουμε τις παρακάτω κατηγορίες λογισμικού (με βάση τον τρόπο παρέμβασης) χωρίς να είναι πλήρως διακριτές μεταξύ τους:
- Λογισμικό Συστήματος (system software)
- Λογισμικό Εφαρμογών (applications software)
- Λογισμικό για την αύξηση της παραγωγικότητας (productivity software)
- Επιστημονικό Λογισμικό (scientific software)
- Λογισμικό Τεχνητής Νοημοσύνης (artificial intelligence software)
- Ενσωματωμένο Λογισμικό (embedded software)
Θα μπορούσαμε επίσης να αναφέρουμε και να κατηγοριοποιήσουμε το λογισμικό σε - εμπορικό ή μη εμπορικό - χαρακτηρίζοντας ως εμπορικό το λογισμικό που χρειάζεται να το αγοράσουμε για να το χρησιμοποιήσουμε. Επίσης θα μπορούσαμε να μιλήσουμε για ανοικτό υπό την έννοια της δυνατότητας αγοράς του πηγαίου κώδικα (με δυνατότητα επαναχρησιμοποίησης του και συμπλήρωσης του) και κλειστό λογισμικό όταν υπάρχει η δυνατότητα αγοράς μόνο του εκτελέσιμου κώδικα.
Υπάρχει και το λεγόμενο ελεύθερο λογισμικό υπό την έννοια ότι ο «ιδιοκτήτης-κατασκευαστής» του το διαθέτει χωρίς κάποιο κόστος. Μια ιδιαίτερη κατηγορία είναι το ΕΛ/ΛΑΚ (Ελεύθερο Λογισμικό / Λογισμικό Ανοικτού Κώδικα) το οποίο συνδυάζει και τα δύο παραπάνω χαρακτηριστικά.