Che cos'è l'ingegneria del software? Definizione, Fondamenti, Caratteristiche

Cos'è l'ingegneria del software?

L'ingegneria del software è definita come un processo di analisi dei requisiti degli utenti e quindi di progettazione, costruzione e test di applicazioni software in grado di soddisfare tali requisiti.

Diamo un'occhiata alle varie definizioni di ingegneria del software:

  • L'IEEE, nel suo standard 610.12-1990, definisce l'ingegneria del software come l'applicazione di un approccio sistematico, disciplinato e computabile per lo sviluppo, il funzionamento e la manutenzione del software.
  • Fritz Bauer lo definì come "l'istituzione e i principi ingegneristici standard utilizzati". Ti aiuta ad ottenere, in modo economico, un software affidabile e che funzioni in modo efficiente sulle macchine reali.'
  • Boehm definisce l'ingegneria del software come "l'applicazione pratica della conoscenza scientifica alla progettazione creativa e alla costruzione di programmi per computer". Include anche la documentazione associata necessaria per svilupparli, farli funzionare e mantenerli.'

Perché ingegneria del software? Crisi del software e sua soluzione

Cos'è stata la crisi del software?

  • Era la fine degli anni ’1960 quando molti progetti software fallirono.
  • Molti software hanno superato il budget. L'output era un software inaffidabile e costoso da mantenere.
  • Il software più grande era difficile e piuttosto costoso da mantenere.
  • Molti software non sono in grado di soddisfare le crescenti esigenze dei clienti.
  • La complessità dei progetti software aumentava con l'aumentare delle capacità hardware.
  • La domanda di nuovo software è aumentata più rapidamente rispetto alla capacità di generare nuovo software.

Tutti i problemi di cui sopra portano alla "crisi del software".

La Soluzione

La soluzione al problema era trasformare lo sforzo di codifica non organizzato in una disciplina di ingegneria del software. Questi modelli ingegneristici hanno aiutato le aziende a semplificare le operazioni e a fornire software che soddisfacesse le esigenze dei clienti.

  • La fine degli anni '1970 vide l'uso diffuso dei principi dell'ingegneria del software.
  • Negli anni '1980 si è assistito all'automazione del processo di ingegneria del software e alla crescita dell'ingegneria del software assistita da computer (CASE).
  • Gli anni '1990 hanno visto una maggiore enfasi sugli aspetti di "gestione" degli standard di qualità e dei processi dei progetti, proprio come ISO 9001

Perché l'ingegneria del software è popolare?

Ecco le ragioni importanti dietro la popolarità dell’ingegneria del software:

Perché l'ingegneria del software è popolare

  • Software di grandi dimensioni – Nella nostra vita reale è molto più comodo costruire un muro che una casa o un edificio. Allo stesso modo, man mano che le dimensioni del software diventano grandi, l’ingegneria del software ti aiuta a creare software.
  • Scalabilità- Se il processo di sviluppo del software fosse basato su concetti scientifici e ingegneristici, sarebbe più semplice ricreare un nuovo software per adattarne uno esistente.
  • Adattabilità: Ogni volta che il processo software è basato su basi scientifiche e ingegneristiche, è facile ricreare nuovo software con l'aiuto dell'ingegneria del software.
  • Costo- L'industria dell'hardware ha dimostrato le sue capacità e l'enorme produzione ha ridotto il costo del computer e dell'hardware elettronico.
  • Natura Dinamica– Natura del software in continua crescita e adattamento. Dipende dall'ambiente in cui lavora l'utente.
  • Gestione della qualità: Offre un metodo migliore di sviluppo software per fornire prodotti software di qualità.

Rapporto dell'ingegneria del software con altre discipline

Ecco come l'ingegneria del software si collega ad altre discipline:

  • Scienza del computer: Fornisce le basi scientifiche per il software poiché l'ingegneria elettrica dipende principalmente dalla fisica.
  • Scienze gestionali: L'ingegneria del software è un lavoro ad alta intensità di manodopera che richiede controllo sia tecnico che gestionale. Pertanto, è ampiamente utilizzato nella scienza della gestione.
  • Economia: In questo settore, l'ingegneria del software ti aiuta nella stima delle risorse e nel controllo dei costi. È necessario sviluppare un sistema informatico e mantenere regolarmente i dati entro un determinato budget.
  • Ingegneria dei sistemi: La maggior parte del software è un componente di un sistema molto più ampio. Ad esempio, il software in un sistema di monitoraggio del settore o il software di volo su un aereo. I metodi di ingegneria del software dovrebbero essere applicati allo studio di questo tipo di sistemi.

Sfide dell'ingegneria del software

Ecco alcune sfide critiche affrontate dagli ingegneri del software:

  • In settori critici per la sicurezza come lo spazio, l’aviazione, le centrali nucleari, ecc. il costo di un guasto del software può essere enorme perché sono a rischio vite umane.
  • L’aumento delle richieste del mercato per tempi di consegna rapidi.
  • Gestire la crescente complessità del software necessario per le nuove applicazioni.
  • La diversità dei sistemi software dovrebbe comunicare tra loro.

Attributi per prodotti software

Le caratteristiche di qualsiasi prodotto software includono funzionalità che vengono visualizzate dal prodotto quando viene installato e utilizzato.

Non sono i servizi forniti dal prodotto. Si sono invece riferiti al comportamento dinamico del prodotto e all'uso che ne viene fatto.

Esempi di questi attributi sono:

Efficiency, reliability, robustness, maintainability, etc. 

Tuttavia, l'importanza relativa di queste caratteristiche varia da un sistema software all'altro.

Caratteristiche del Prodotto Descrizione
manutenibilità Il software dovrebbe evolversi per soddisfare le mutevoli esigenze dei clienti.
AFFIDABILITÀ L'affidabilità comprende varie caratteristiche. Un software affidabile non dovrebbe mai causare danni fisici o economici al momento del guasto del sistema.
EFFICIENZA L'applicazione software dovrebbe utilizzare in modo eccessivo le risorse di sistema come la memoria e il ciclo del processore.
usabilità L'applicazione software deve avere un'interfaccia utente e una documentazione specifiche.

Ottimizzare l'attributo di cui sopra è molto impegnativo. Ad esempio, offrire un'interfaccia utente migliore può ridurre l'efficienza del sistema.

Caratteristiche del buon software

Qualsiasi software dovrebbe essere giudicato in base a ciò che offre e ai metodi che ti aiutano a utilizzarlo.

Ogni software deve soddisfare i seguenti attributi:

  • Operazionale
  • Transitional
  • Assistenza

Ecco alcune caratteristiche importanti del buon software sviluppato da professionisti del software

Operazionale

Questa caratteristica ci consente di conoscere il buon funzionamento del software nelle operazioni che possono essere misurate su:

  • bilancio
  • EFFICIENZA
  • usabilità
  • AFFIDABILITÀ
  • Correttezza
  • Funzionalità
  • Sicurezza
  • Sicurezza

Transitional

Questo è un aspetto essenziale quando il software viene spostato da una piattaforma all’altra:

  • Interoperabilità
  • riutilizzabilità
  • Portabilità
  • Adattabilità

Assistenza

Questo aspetto parla di quanto bene il software abbia le capacità di adattarsi in un ambiente in rapida evoluzione:

  • Flessibilità
  • manutenibilità
  • modularità
  • Scalabilità

Sommario

  • L'ingegneria del software è un processo di analisi dei requisiti degli utenti e quindi di progettazione, costruzione e test di applicazioni software in grado di soddisfare tali requisiti
  • Motivi importanti per utilizzare l'ingegneria del software sono: 1) Software di grandi dimensioni, 2) Scalabilità 3) Adattabilità 4) Costo e 5) Natura dinamica.
  • Alla fine degli anni '1960 molti software superano il budget. Pertanto offre software inaffidabile e costoso da mantenere.
  • La fine degli anni '1970 vide l'uso diffuso dei principi dell'ingegneria del software.
  • Concetto di ingegneria del software 1) Informatica 2) Scienze gestionali 3) Ingegneria dei sistemi e 4) Economia
  • L’aumento della richiesta del mercato di tempi di consegna rapidi è la sfida più grande nel campo dell’ingegneria del software.
  • 1) Manutenibilità, 2) Affidabilità, 3) Efficienza e 4) Usabilità sono gli attributi più importanti dei prodotti software.
  • Le tre caratteristiche più importanti di un buon software sono 1) Operarazionale 2)Transitorio 3)Manutenzione.