Domanda

Sono stato interessato a metodi formali per un certo tempo. Ho usato metodi formali per ragionare su alcune molto specifiche sotto-aree di alcuni progetti che ho lavorato su. Non sono mai stato in grado di convincere gli altri membri del team di provare lo stesso per non parlare di specificare un intero dominio con un metodo formale.

Un metodo che ho trovato particolarmente interessante è lega . Penso che può "scala" meglio come fondamento per un intero progetto, perché è concettualmente e notationally molto vicino a linguaggi di programmazione attuali. Inoltre, gli strumenti sono abbastanza solida in modo che i benefici della verifica del modello sono facilmente disponibili.

Sarei molto interessato a conoscere le reali esperienze che la gente avrebbe potuto avere con l'utilizzo di lega nei vostri progetti. Ti senti che ti ha aiutato nella progettazione di un modello di dominio migliore? Hai trovato errori nel vostro modello di dominio durante la verifica? Volete usare di nuovo?

È stato utile?

Soluzione

Sì, ho usato in lega ed è cugini industrialmente. Lega è stato più utile a convincermi che i miei modelli non erano selvaggiamente sbagliato --- o meglio, mi mostra dove hanno sbagliato e hanno dato luogo a risultati stupide. Altri strumenti più specifici, come Atena e Guttman di Song e CPSA di Ramsdell sono stati più utili nei loro domini più ristretti. Che altro vorresti sentir parlare?

Altri suggerimenti

Ho usato Lega su alcuni progetti e hanno trovato utile; su alcuni ma non tutti i progetti sono stato in grado di convincere gli altri coinvolti da utilizzare in lega così, o per lo meno per lavorare con i modelli in lega che ho scritto. Questi progetti possono o non possono essere quello che avete in mente di chiedere per i progetti 'reali', ma di certo ha avuto luogo nella parte del mondo reale lavoro in.

Nel 2006 e nel 2007 ho creato un modello parziale lega per il progetto di allora corrente della specifica W3C XProc; per quanto ho potuto capire, la maggior parte dei membri del gruppo di lavoro mai letto il documento che ho scritto (a http://www.w3.org/XML/XProc/2006/12/alloy-models/models.html ); hanno detto "Oh, abbiamo cambiato che parte della specifica la scorsa settimana, in modo da ciò che il modello dice non è più rilevante". Ma la carta è riuscito a convincere l'editor delle specifiche che il livello astratto 'componente' descritta nella prima bozza della specifica è stata tristemente underspecified e aveva bisogno di essere o completamente specificati o eliminato. Si lasciò cadere, con (credo) buoni risultati per la leggibilità e la fruibilità del spec.

Nel 2010 feci un modello della lega del modello XPath dati 1.0, che scoperto alcuni difetti in la specificazione. La reazione della maggior parte delle parti interessate (compreso il gruppo di lavoro del W3C responsabile del mantenimento della specifica XPath 1.0) ha, purtroppo, non è stata incoraggiante.

Un progetto di ricerca sono coinvolto con Lega ha utilizzato per modellare il MLCD Overlap Corpus, una raccolta di documenti di esempio e le informazioni correlate che stiamo creando collegamenti ipertestuali (soppressi su insistenza di SO); il modello Lega ha trovato un paio di errori nel nostro progetto iniziale per il catalogo corpus, così ne è valsa la pena.

E abbiamo usato anche in lega di formalizzare un lavoro di modellazione che abbiamo fatto sulla natura della trascrizione e sull'estensione del tipo / distinzione di token per documentare la struttura (per il nostro giornale, cercare il procedimento 2010 di Balisage: il markup Conferenza). Questo si trova un po 'fuori consueta area di Lega di applicazione, in quanto non ha nulla a che fare con la progettazione del software, ma la capacità di Lega per verificare modelli per coerenza e generare istanze è stato prezioso nel mostrarci alcune delle conseguenze logiche di questa o quella possibile assioma per il nostro modello.

Per rispondere alle vostre domande specifiche: si, lega mi ha aiutato a specificare modelli di dominio più puliti, e sì, ha riscontrato errori e difetti. Essi sono stati spesso piccole, per le ragioni Daniel Jackson spiega nel suo libro Software Astrazioni : in primo luogo, se si utilizza modelli in fase di progettazione, è rilevare gli errori presto, quando tutto è ancora piccolo. E, in secondo luogo (secondo le parole di Jackson), "Col senno di poi, la maggior parte dei problemi di progettazione del software sono banali."

E continua: "Ma se non richiamate a testa alta, questioni banali hanno la pessima abitudine di diventare banale." La mia esperienza conferma ampiamente questa. Molto meglio per scongiurare tali problemi in anticipo. Quindi sì, userò ancora lega.

In ritardo l'aggiunta a questa discussione ... Eunsuk Kang ha recentemente applicato in lega di eseguire la sicurezza analisi di API web per alcune start-up (dopo molte applicazioni della Lega in materia di sicurezza, come Apurva di analisi dei OAuth e Barth et al meccanismi di sicurezza analisi del navigatore a base nofollow per CSRF, ecc); Pamela Zave ha lavorato su un analisi impressionante di Chord , un peer to peer sistema di stoccaggio, e di recente ha redatto una correzione per l'algoritmo originale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top