Oggi è impossibile non interagire con un software. C’è chi passa intere giornate a dialogare con un programma specifico, a causa del suo lavoro, e chi invece incrocia tante piccole applicazioni che hanno scopi differenti. In ogni caso, tutto questo fa parte del quotidiano. E bisogna conoscerlo bene.
Abbiamo parlato di programmi dedicati a scopi differenti, come il Material Requirements Planning (MRP) o l’Advanced Planning & Scheduling. Ma per avere una panoramica chiara in tutti i settori conviene fare un passo indietro e capire bene di cosa stiamo parlando e di quali sono le implicazioni nel quotidiano.
Indice dei contenuti
Cos’è un software, definizione di base
Partiamo dalla definizione di software: in informatica, il termine (traduzione letterale: elementi morbidi) indica un set di istruzioni e dati necessari per far funzionare i computer ed eventuali macchine collegate. Con lo scopo di eseguire attività specifiche. Che possono essere materiali o immateriali come, ad esempio:
- La lavorazione di un prodotto.
- L’estrazione di dati specifici.
Il concetto di software – noto anche come applicativo o script – è opposto all’hardware, che indica gli elementi fisici di un computer come il monitor, l’elaboratore centrale e le periferiche di input e output (tastiera, mouse, stampante). Chiaramente, esistono diversi tipi di software che svolgono compiti differenti.
Un esempio comune: il browser, il programma che utilizziamo per navigare su internet. Anche Microsoft Word è un software e come puoi ben immaginare siamo arrivati già a un punto essenziale di questa guida: quello che ci porta a esigere una definizione delle varie tipologie di applicativi presenti sul mercato.
Prima di dedicarci a temi approfonditi come architettura software, programmazione strutturata, linguaggio assembly e altri temi appassionanti, dobbiamo fare una precisazione importante per amore della chiarezza.
La storia del software: dalle origini a oggi
Non possiamo approfondire il tema in questione senza ricordare che c’è una grande storia alle spalle. Le origini del concetto prendono forma negli anni ‘40 del Novecento, quando l’Inghilterra era impegnata a decriptare il codice Enigma dei tedeschi grazie a una macchina basata su rotori che mescolavano lettere.
Le origini
Alan Turing, John von Neumann e altri studiosi del tempo arrivarono a una concezione chiara: le istruzioni dovrebbero essere memorizzate all’interno della macchina e non codificate in maniera rigida su supporti rigidi come le famose schede bucate. Un passo da gigante è stato fatto nel 1957 quando si inizia a parlare di software così come intendiamo noi questo concetto: istruzioni per l’hardware.
La nascita di due linguaggi di programmazione strutturati, FORTRAN nel 1957 e COBOL nel 1959, danno una spinta importante per i rispettivi ambiti operativi: il calcolo matematico e il settore contabile.
Anni ’60 e ’70
Il linguaggio Cobol e il linguaggio Fortran rappresentano dei punti di riferimento nella storia del software. Lo stesso vale per la programmazione C del 1970: Il ventennio che va dagli anni ‘60 ai ‘70 è teatro di un’evoluzione tecnica importante per il settore, tanto che in questo periodo si diffonde il concetto di software engineering, l’ingegneria che gestisce la complessità per programmare in modo efficace e strutturato.
In questo periodo nascono anche i primi sistemi operativi, ovvero non più applicativi ma veri e propri System software. Tra i nomi che meritano attenzione abbiamo UNIX, sviluppato da Bell dagli informatici statunitensi Ken Thompson e Dennis Ritchie, che può essere considerato (fonte Wikipedia) il primo sistema operativo portabile, multiutente e multitasking, implementato con il linguaggio di programmazione C.
Anni ’80 e ’90
Gli anni ‘80 del XX secolo sono decisivi per uno sviluppo di software con interfaccia grafica e di largo consumo. Nomi come Apple e Microsoft propongono sistemi operativi aperti al pubblico di massa e non solo agli specialisti. Nello specifico, MS-DOS, Windows e Mac System Software contribuiscono a spingere il computer nelle case e negli uffici di tutti. Mentre le varie distribuzioni Linux – evoluzione del sistema operativo UNIX – diventano portavoce di una visione alternativa e non proprietaria (open source).
Internet
Nel frattempo nascono nuove sfaccettature come sistemi operativi per mainframe e server, fino a raggiungere l’avvento del web e del mobile. Internet trasforma il software da prodotto locale a servizio accessibile in rete, aprendo la strada al software-as-a-service (SaaS) e al cloud computing. La diffusione degli smartphone trasforma il concetto di software in mobile app progettata per l’interazione mobile.
Differenza tra software, app e programma
Spesso questi termini vengono utilizzati come sinonimi nel linguaggio comune. Non è un problema sostanziale ma in una guida dedicata all’argomento è importante comprendere anche questi aspetti sottili prima di arrivare agli aspetti tecnici. Allora, quali sono le differenze che dobbiamo conoscere?
Il punto di partenza è semplice: il programma è una parte del software, quella che si occupa di una singola operazione. Il programma, per essere ancora più specifico, racchiude una serie di istruzioni definite con un linguaggio di programmazione per svolgere un compito. Quindi, si concentra su una singola funzione.
Il software, invece, è un insieme completo e strutturato di programmi, librerie, istruzioni, supporto, interfacce utente e dati che lavorano insieme per eseguire una serie di attività complesse. Tutto chiaro? Degli esempi:
- Adobe Photoshop è un software
- La taglierina per le foto è un programma.
- Excel è un software.
- La calcolatrice è un programma.
Anche “applicazione” può essere sinonimo di software anche se in questo caso possiamo parlare di mobile app, web app e altro ancora. Per questo conviene valutare il tema successivo: le diverse tipologie.
Quanti tipi di programmi esistono?
In primo luogo dobbiamo fare una grande divisione tra software applicativi e di sistema: in quest’ultima voce includiamo tutti i sistemi operativi, quelli che permettono di eseguire i programmi applicativi – i primi della lista, quelli che permettono di eseguire dei compiti specifici – e l’hardware di un computer.
Per essere precisi, anche i driver che permettono di guidare e configurare una periferica possono essere definiti come componenti software. Altra grande differenza la possiamo ritrovare tra web app e software desktop: nel primo caso abbiamo dei programmi che possono essere utilizzati solo online, nel secondo invece seguiamo la classica procedura di installazione e uso sul dispositivo fisso. Per avere uno schema chiaro possiamo utilizzare questa grafica di techtarget.com che ci illustra le differenze sostanziali.
Bisogna fare anche una divisione tra software proprietario e open source: il primo è distribuito con una licenza che limita l’accesso al codice sorgente. L’open source software, invece, consente di visualizzare, modificare e ridistribuire il codice sorgente. Questa soluzione può essere ideale per progetti commerciali che esigono soluzioni flessibili e scalabili nel ciclo di vita del software.
Implementazione e design del software
Uno dei punti da prendere in considerazione: un programma deve essere creato seguendo dei principi fondamentali. Lo sviluppo non è un processo che nasce dal nulla. I primi passi da muovere nel ciclo di vita della progettazione del software (SDLC, Software Development Lifecycle) sono chiari a chi è del settore.
In primo luogo bisogna definire l’analisi delle esigenze delle persone che utilizzeranno il software e la creazione di requisiti dettagliati. Si raccolgono e analizzano le necessità del cliente per capire cosa deve fare il programma. Diversamente, il lavoro sarebbe rivolto solo alla linea teorica e alle esigenze dei progettisti.
Una volta definito il frame teorico, si passa alla parte pratica: si sviluppa l’architettura del software stabilendo le tecnologie da utilizzare, i modelli di database, le caratteristiche delle interfacce utente e le interazioni tra le diverse funzioni. Questa è una fase decisiva del percorso e prende il nome di software design: è il momento in cui si pianifica e definisce la struttura generale con il software architect prima della scrittura del codice.
In questo passaggio per ridurre la complessità del prototipo software, per migliorarne la qualità, si trasformano i requisiti – ovvero, cosa deve fare – in qualcosa in grado di raggiungere degli obiettivi. Questa è una fase molto delicata perché fa da ponte tra le esigenze e le possibilità. Lo step successivo, infatti, è l’implementazione tecnica dove viene completato il lavoro di sviluppo e quindi si verifica il test del software.
Desideri parlare con un nostro esperto? Contattaci
Ultime News Tecnologie e concetti IT
-
Cos’è un Ransomware? Ecco come attacca e come puoi proteggerti
14 Ottobre 2024 -
Quali sono le tendenze della gestione avanzata dell’iperconvergenza?
19 Settembre 2024 -
Tutte le novità di SQL Server e le funzionalità aggiuntive
18 Luglio 2024 -
Come fare manutenzione dei database SQL Server
8 Luglio 2024 -
Quali sono le differenze tra SQL Server e Oracle?
13 Maggio 2024 -
Cos’è e come fare monitoraggio di Microsoft SQL Server
23 Aprile 2024 -
Guida SQL Server, tutto quello che devi sapere
19 Aprile 2024