Metodo per mascherare nomi di variabili in file C ++ (cpp, h) e creare un'API intermedia?

0

Ho un progetto che comporta l'uso di file C ++ insieme a un'API su un PC locale per comunicare con un'app server remoto, e per mantenere una parvenza di non divulgazione con uno o più sviluppatori assoldati, vorrei piace "mascherare" il contesto della logica rinominando tutte le variabili in qualcosa di meno ovvio.

Tuttavia, l'app C ++ locale deve ovviamente utilizzare le funzioni / i comandi forniti dal fornitore dell'API per interagire con il server remoto, quindi mi piacerebbe anche creare una 'intermedia API' per mascherare entrambi i comandi di invio, < em> e restituiscono i nomi dei parametri, con l'intento di rimuovere completamente l'accesso ai nomi effettivi utilizzati dall'API.

Infine, una volta che il codice è stato consegnato a me, potrei fare riferimento a un altro file in formato TXT, CSV o in altro formato e fare un grosso rinvio 'find- & -replace' delle variabili, e scartare l'API intermedia.

Quindi le domande sono:

  1. Quanto sarebbe complesso / fattibile?
  2. Quanto tempo potrebbe impiegare una cosa del genere per un array di 20 coppie comando / ritorno (quindi 40 nomi in totale)? Solo una stima del ballpark (ad esempio 15 ore).
  3. Se tale pratica è già ben consolidata e costruita come pacchetto / libreria prontamente disponibile, quale nome fanno gli articoli in questione e dove scaricarli?

Ho letto questo thread ( Perché i linguaggi di programmazione consentono di nascondere / nascondere variabili e funzioni? ) e capire che il debugging sarebbe reso più complicato ... Posso agire come programmatore secondario per quell'aspetto della compilazione.

    
posta CB001 08.05.2016 - 01:11
fonte

2 risposte

1

Se comprendo correttamente la tua domanda, ti piacerebbe offuscare il protocollo, ma non necessariamente mascherare la natura (lo scopo) del software che deve essere costruito dallo sviluppatore C ++ assunto.

Puoi prendere in considerazione l'utilizzo di protobuf e concentrare le tue attività di ridenominazione di massa solo sul messaggio e nomi dei campi. Lo sviluppatore C ++ assunto utilizzerà un set di nomi e il lato della comunicazione (scritto da te) utilizzerà il set di nomi effettivo. Inoltre, puoi considerare l'aggiunta di un numero di campi o parametri inutilizzati come esca, solo per confusione.

Si noti che se lo sviluppatore assunto può eseguire Wireshark sullo stesso computer, è banale scoprire la comunicazione con il server remoto.

Infine, vorrei ribadire che mascherare la natura del software non funzionerà per un programmatore assunto. Voi, in qualità di stakeholder del progetto, avrete difficoltà a comunicare con il programmatore assunto su cosa dovrebbe fare il software. Un sacco di requisiti software si verificano con il cliente che fornisce una descrizione dello scopo del software, e il programmatore deve ricercare sulla situazione del cliente, scoprire casi d'uso, rivedere e confermare i casi d'uso con i clienti, e passare attraverso vari fasi di prototipazione per verificare che questo sia ciò che il cliente desidera. Mascherare lo scopo del software renderà impossibile quella comunicazione. È improbabile che tu possa trovare un'analogia adeguata che descriva lo scopo del software a meno che la tua creatività non sia alla pari con uno scrittore di fantascienza di livello mondiale.

(Questa è una visione personale, informale, non ho esperienza o qualifiche nella gestione di progetti software. Mi riservo il diritto di cancellare questa risposta in qualsiasi momento, perché questa risposta non soddisfa i miei personali standard di rigore .)

    
risposta data 08.05.2016 - 04:40
fonte
0

Non puoi praticamente nascondere nulla a un determinato programmatore, ma puoi creare un livello di astrazione per nascondere i dettagli della tua implementazione da un utente occasionale, per vari scopi. Per ulteriori dettagli, cerca gli articoli del modello Proxy e Adapter.

A seconda dei requisiti dell'API originale potrebbe non essere possibile nascondere completamente i dettagli dell'implementazione e non dovrebbe essere la ragione principale per fare qualcosa, IMO.

Ad esempio, puoi realizzare questa astrazione utilizzando un'interfaccia o una pura classe virtuale in c ++, dove l'effettiva implementazione è ottenuta solo attraverso un metodo factory che restituisce un'implementazione di detta interfaccia.

Non è del tutto chiaro cosa vuoi ottenere, quindi questa è la migliore risposta che posso dare dal punto di vista delle normali pratiche di sviluppo.

    
risposta data 08.05.2016 - 10:45
fonte