80/20 influisce anche sulla programmazione

Abbiamo tutti sentito parlare della regola 80/20, quella che dice che l'80% del nostro successo (effetti) proviene solo dal 20% delle nostre azioni (cause). Ebbene, questa verità universale influenza anche lo sviluppo del software, e in questo articolo tratteremo un po 'dei fondamenti di questa affermazione.

BPM

Business Process Management, per il suo acronimo in inglese, è una disciplina gestionale (tra le altre cose) che permette di comprendere visivamente i processi che devono essere svolti in un'azienda (o in molti altri luoghi). Tra le sue qualità principali c'è il fatto di poter analizzare processi complessi e renderli "semplici".

Ci sono molti strumenti open source che ti permettono di sviluppare diagrammi BPM, quello che ho usato per questo articolo è BonitaSoft. Se vuoi saperne di più sulla gestione dei processi, ci sono molti tutorial su Internet e libri sull'argomento. Torniamo ora all'argomento centrale.

Progetti software

Oggi ci sono molte metodologie per sviluppare progetti, ci sono agile, tradizionale, mista, ecc. Ecc. Un punto che hanno tutti in comune è preparazione. Cosa intendo con questo? Quell'80% del tuo successo in questo progetto software sarà basato sul primo 20% dell'intero processo, la preparazione. 

Preparare un progetto

Questo è qualcosa di logico che in realtà viene applicato molto poco (come molte altre cose logiche che sono illogiche in pratica). Quando si parla di preparazione bisogna capire la capacità di comprendere il problema, capire la soluzione e soprattutto, il processo che la soluzione si applica. Una delle cose che si trovano meno nei progetti software non professionali è la mancanza di documentazione sull'argomento. Questo di solito appare nelle aziende private poiché il desiderio di vendere supera il processo di creazione.

Poiché molti di coloro che leggono questi articoli lavorano o sono legati alla tecnologia, vale la pena ricordare che se a un certo punto della loro vita lavorativa trovano un'azienda / fornitore che non soddisfa una buona preparazione, è quasi l'80% sicuro 😛 che il progetto non funzionerà.

L'astrazione è la chiave

Questo è qualcosa che ho imparato dal mio tempo usando GNU / Linux e si è dimostrato più volte fondamentale nel processo di creazione del software. La capacità di astratto problemi a trasformarli in cose più "semplici" è fondamentale per poter generare codice elegante, e soprattutto di lunga durata. E forse questa è una delle principali differenze tra grandi progetti professionali e progetti che crescono senza controllo. I primi pensano, comprendono e strutturano il processo mentre i secondi mantenere lavorare senza doverlo capire.

Stager

Questo è il nome del progetto che sviluppa l'installatore di Gentoo, come puoi immaginare, questo è un processo abbastanza complesso, poiché supporta un gran numero di architetture. Un altro fattore da tenere in considerazione è il numero di configurazioni che supporta, a livello di kernel, sistema di inizializzazione, ecc. E ti dico tutto questo perché è anche il mio progetto di tesi, che devo finire prima di finire gli studi. Ovviamente non posso fare un programma che includa assolutamente tutte le opzioni possibili in così poco tempo (fino a luglio del prossimo anno), ma almeno posso generarne uno che permetta di installare un sistema funzionale in modo molto semplice.

Capire il processo di installazione

Grazie agli strumenti BPM, è possibile generare un diagramma di processo che ci permette di comprendere i passaggi necessari per la corretta installazione di Gentoo su un computer.

Processo di installazione di Gentoo

Proprio. Christopher Diaz Riveros

Nonostante contenga diversi processi e sottoprocessi, è stato ovviamente abbastanza riassunto e si può vedere che abbiamo 18 passaggi lineari. Questo è importante perché un'applicazione che ha una struttura lineare è semplice da implementare e allo stesso tempo il parallelismo può essere generato in uno o più thread se necessario.

Un altro fattore importante è che ci permette astratto insiemi di processi per tipo, ad esempio, la definizione di un thread del kernel ci consente di sapere che ci sono attività specifiche al suo interno che sono direttamente correlate al processo di installazione corretta di un kernel.

Processo secondario "kernel"

Proprio. Christopher Diaz Riveros

In questo modo ogni passaggio "complesso" diventa un passaggio "semplice" in modo globale, senza perdere i dettagli necessari. Ciò facilita la visibilità dell'assieme senza abbassare il livello di specifica necessario per completare con successo il processo. E non possiamo negare che sia più facile vedere l'immagine che leggere l'intero Manuale in una volta sola 🙂

Risparmia tempo

Un altro ovvio vantaggio è che non avendo un linguaggio di programmazione direttamente connesso, è possibile eseguire analisi logiche senza necessariamente perdere tempo nell'implementazione del linguaggio. Questo è un vantaggio rispetto alla quantità di tempo che può essere speso per implementare una funzionalità solo per scoprire che verrà scartata perché esiste una soluzione più efficiente. Come quali sarebbero le soluzioni in pseudo-codice (qualcosa che è anche ignorato da molti "sviluppatori" ma non dovrebbe esserlo).

Dirigere i progetti diventa facile

Tenendo conto di questi concetti, la gestione del progetto (di qualsiasi tipo) diventa più facile, perché concentriamo i nostri sforzi dove sono realmente necessari e, se questa parte viene eseguita correttamente, il resto ricade sotto il suo stesso peso. Spero che aiuti la tua curiosità e ti motiva a fare ricerche su BPM, algoritmi e chissà, forse ti incoraggerà ad aiutarmi con la mia tesi 😛 Grazie mille per essere arrivato e ci vedremo presto. Saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Alexander sindaco Muñoz suddetto

    Ciao. Grazie per avere condiviso le tue conoscenze. Mi sembra che sia un argomento appassionante ma che richiede molto lavoro di ricerca e messa in pratica dei concetti per poterli interiorizzare. All'inizio la questione è fonte di confusione perché si tende ad associarla più dalla parte dell'identificazione dei requisiti per un sistema e non necessariamente con i processi aziendali dell'azienda, cioè come l'azienda funziona. Alla fine, penso che sia più sul ruolo che gli sviluppatori di software svolgono nel modellare il business dell'azienda, al fine di rendere il funzionamento del business più efficiente ed efficace.

    1.    Chris ADR suddetto

      Ciao Alessandro, grazie mille per la condivisione. A dire il vero, è un argomento un po 'complesso cercare di riassumere tutto in uno spazio così piccolo, ma se posso contribuire un po' a uscire dalla confusione con il tuo commento 🙂 è vero che i sistemi dovrebbero cercare di risolvere i requisiti, che è la funzionalità di base più possibile, ea quel punto è vero che uno sviluppatore dovrebbe concentrarsi su un livello superiore.
      La conoscenza dei processi consente agli sviluppatori di presentare sistemi più che sufficienti, comprendendoli come qualcosa che soddisfa i requisiti minimi possibili.
      L'eleganza del codice sta nel poter comprendere l'intero processo, e generarlo in modo più profondo, dove viene applicata la migliore soluzione possibile, e questo è possibile solo comprendendo veramente il processo piuttosto che il requisito, come hai ben detto 🙂
      Se lo modelliamo un po 'attorno al FOSS, significa non solo conoscere i requisiti del software, ma anche la filosofia alla base, e sapere come verrà mantenuto, da chi e tutta quella conoscenza del processo che non solo genera una soluzione efficiente ., ma sarà possibile mantenere nel tempo 🙂
      Grazie mille ancora e saluti.