Quando non riutilizzare il software?

4

Sto lavorando su un'applicazione che aveva i requisiti di base per l'autenticazione nella prima versione (ovvero penso al login di un singolo amministratore), e ora ho il requisito di estenderlo per consentire a utenti, ruoli e permessi diversi.

È stato suggerito che io tenti di integrarmi con un prodotto esistente che faccia questo genere di cose come un server separato per l'autenticazione di base, o che si estenda anche all'autenticazione del secondo fattore. L'applicazione su cui sto lavorando è una piccola applicazione scaricabile che dovrebbe essere facile da configurare ed eseguire. L'altro prodotto è grande e 'enterprisy', che richiede l'installazione manuale, che potrei provare a fare automaticamente per quello di cui ho bisogno (forse).

Il grosso problema è che, quando descritto come un set di funzionalità di ciò che vorremmo fare nel mio prodotto, si adatta perfettamente a ciò che fa l'altro prodotto, ma non è in una forma che io possa usarlo. La gestione vuole l'integrazione con l'altro prodotto, perché sembra intuitivo che potremmo sfruttarla, ma l'altro prodotto non è in una forma che potrei usare. Pensandoci in termini di MVC, non penso che ci sia un modo per separare la vista dal modello.

L'altra cosa di cui sono preoccupato, che è accaduto in passato, è che se mi viene chiesto di integrarmi con questo, sarò quello che fa tutto il lavoro di integrazione, e se qualcosa non può essere fatto dall'altro prodotto, quindi sono solo sfortunato. L'integrazione con il mio prodotto è secondaria rispetto a qualsiasi altra cosa l'altro team vorrebbe, e il mio team non è un "cliente", quindi c'è poca motivazione a far sì che possano risolvere o aggiungere materiale per noi.

Quindi, in sintesi, la mia domanda è: Non voglio reinventare la ruota, ma dovrei provare a forzare un piolo quadrato in un buco rotondo cercando di utilizzare un prodotto che quello di cui ho bisogno, ma non in una forma facile da riutilizzare?

modifica: sto usando Java, quindi Spring Security è un'opzione.

    
posta Shawn D. 02.08.2011 - 17:47
fonte

3 risposte

3

Se il codice non è stato scritto per essere riutilizzato in anticipo, dovrai ristrutturarlo / refactarlo in modo che lo faccia. In tal modo rischierai la stabilità della piattaforma esistente. La direzione vuole sempre "riutilizzare" perché pensano che significhi meno tempo. Ma non hanno guardato il codice e non conoscono i dettagli e quell'ipotesi non è sempre vera. E sta a te spiegare perché.

Non parli della piattaforma che stai utilizzando, ma ci sono già soluzioni di sicurezza per le principali piattaforme MVC. Ad esempio, java ha una sicurezza primaverile. Perché non usi un framework costruito per la tua piattaforma, in cui gli autori erano interessati principalmente alla riusabilità. Quindi non stai reinventando una ruota E non devi preoccuparti di destabilizzare la tua base di codice esistente.

    
risposta data 02.08.2011 - 18:09
fonte
2

Sembra che le persone sentano troppo spesso di avere due opzioni.

  1. Inizia da zero / reinventa la ruota.
  2. Adatta il software che non è stato concepito per questa situazione utilizzando un wrapper o apportando modifiche strutturali a un framework esistente.

Tuttavia, esiste una terza opzione.

  1. Creare un nuovo framework utilizzando come base il vecchio software. Riutilizza qualsiasi algoritmo, metodo, cosa-hai-che si adatta al nuovo design del framework. In genere, puoi risparmiare circa il 50% del codice in questo modo, ma hai ancora un nuovo framework progettato per le tue esigenze.

Ora, se operi 2 o 3 dipende dal fatto che tu voglia o meno mantenerli insieme o separatamente. Se un wrapper può essere facilmente realizzato e l'unico software sarà mantenuto per essere mantenuto, allora questa è probabilmente l'opzione migliore.

    
risposta data 02.08.2011 - 19:59
fonte
1

Sai, puoi sempre forzare un piolo quadrato in un buco rotondo usando un adattatore. Perché non nascondere l'altro modulo dietro un'interfaccia che si adatta alle tue esigenze? Se è possibile, c'è solo poco che parli contro l'integrazione del software.

Una volta ho dovuto integrare Microsoft Access senza COM-Interop in un'applicazione esistente per scopi di reporting. Ho dovuto integrare un server TCP in Access-Project e forzare l'accesso a Windows nella mia applicazione. Ho avuto una brutta sensazione su questo quando l'ho scritto. Sembrava un fragile casino. Ma in realtà non lo era.

Ho nascosto tutto dietro le interfacce e alla fine ha funzionato alla grande, gli utenti erano entusiasti ed era facile da usare. Grazie all'interfaccia, Access può essere scambiato per qualcosa di meglio quando arriva il momento.

    
risposta data 02.08.2011 - 18:05
fonte

Leggi altre domande sui tag