Pergunta

Da minha experiência, os compromissos para trás / para a frente compatibilidade são os gaiola dourada do indústria de engenharia de software. Eu particularmente observado que este seja o caso de formatos de arquivo de documentos e linguagens de programação / APIs. Os clientes e parceiros odeio quando os intervalos de dados ou de código existentes; No entanto, se você nunca quebrar a compatibilidade, você pode restringir seriamente a sua capacidade de inovar no longo prazo.

Existem soluções para este problema, que não depreciação gradual de características antigas? Parece que a virtualização, como no modo de Windows 7 XP, é uma possibilidade emocionante. Existem outros?

Além disso, para aqueles de nós que querem projetar novos sistemas que são tão à prova de futuro possível, que lições podemos aprender com os erros do passado feitas na indústria?

Foi útil?

Solução

Inovar através da extensão, não por reescrever as APIs públicas. Têm interfaces públicas genéricas consistentes para a funcionalidade back-end. Você pode reescrever módulos privadas a qualquer momento, desde que você fornecer os módulos API pública com os resultados que eles esperam.

Faça o seu melhorias no back-end e deixar a API consistente, tanto quanto possível. Criar novos módulos e documentá-las claramente ao estender as partes públicas de sua API, depreciação das velhas formas virá naturalmente se você fornecer novas e melhores maneiras de fazer as coisas que vêm como adições aos velhos costumes.

Para formatos de documentos, sempre incluir números de versão e verifique se você tem maneiras de apoiar todas as versões existentes. Tal como acontece com as APIs, adicionar a nova funcionalidade através do alargamento, não reescrevendo.

Quando você quiser trazer mudanças fundamentais para a arquitetura geral do software, tem a nova versão incluem o antigo como um módulo - ele vai levar a um tamanho maior, mas melhor suporte para dados e programas mais antigos

.

Outras dicas

Use XML como base para o seu formato de arquivo, e apenas adicionar à especificação DTD, não exclua. Desta forma, seus arquivos deve ser compatível com versões anteriores para versões anteriores, que é um plus.

Aqui está um bom exemplo: Utilizando slf4j Bridges para permitir a fácil migração de um módulo de registro para outro em Java.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top