Pergunta

O conversão bem-sucedida / reescrever que você fez de software você estava envolvido com? O que, onde os idiomas e estrutura envolvidos no processo? Quão grande foi o software em questão? Finalmente o que é a de cima ou dois coisa que você aprendeu de estar envolvido com o processo.

Isto está relacionado com esta questão

Foi útil?

Solução

Eu estou indo para "mais abstrusa" aqui:

  • portado um 8080 simulador escrito em Fortran 77 a partir de um DECSYSTEM-10 executando TOPS-10 para uma IBM 4381 de mainframe rodando VM / CMS.

Outras dicas

Eu reescrevi 20.000 linhas de Perl para usar "use strict" em cada arquivo. Eu tive que adicionar o "meu" em todos os lugares que fosse necessário e eu tive que corrigir os erros que foram descobertos durante o processo.

A maior coisa que eu aprendi de fazer isto é, "Ele sempre leva mais tempo do que você pensa."

Eu tive que fazê-lo de uma só vez durante a noite para que os outros programadores não seria escrever código novo, não fixo, ao mesmo tempo. Eu pensei que iria rapidamente, mas isso não aconteceu, e eu ainda estava cortando nele às 6 da manhã na manhã seguinte.

Eu entendi completa e check-in antes de todo mundo começou a trabalhar embora!

Eu reescrevi uma grande aplicação java web para uma aplicação ASP.Net para uma empresa realty por várias razões.

A maior coisa que eu aprendi é que, não importa o quão trivial o recurso ao sistema original tinha, se não é no segundo sistema, o cliente acha que a reescrita é um fracasso. gestão expectativa é tudo ao escrever o novo sistema.

Este é o maior regravações razão são tão difícil:. Parece tão fácil para o cliente ( "Apenas voltar a fazer o que eu já tenho e adicionar algumas coisas")

A única mais legal para mim, eu acho, foi o porta de MAME para o iPod . Foi uma grande experiência de aprendizagem com hardware integrado, e eu tenho que trabalhar com um monte de gente grande. Site oficial .

Estou fazendo uma reescrita de um sistema de gestão Inhouse projeto para um modelo MVC mais padrão. Sua na pilha LAMP (PHP) e eu estou perto da 1ª etapa.

As coisas que eu aprendi a partir desse momento é o quão simples o programa se sente no início e eu tentei não adicionar complexidade até que eu preciso.

Exemplo é que i programada toda a funcionalidade primeiro (como i foi um utilizador administrador) e, em seguida, quando isso é resolvido, adicionar a complexidade de ter restrições (níveis de utilizador, etc)

Eu portado / redesenhado / reescreveu programa a 30.000 da linha de MS-DOS C ++ em um comprimento semelhante, mas muito mais cheio de recursos e utilizável programa Java Swing.

Eu aprendi a nunca mais tomar um outro trabalho envolvendo C ++ ou Java.

Eu portado um aplicativo Powerbuilder cliente servidor, um par de cem telas de valor, em um aplicativo ASP.NET (C #).

Devido a problemas de desempenho e facilidade de manutenção, eu tinha sobre o ano anterior moveu uma tonelada de SQL embutido para fora dos scripts de Powerbuilder e em procedimentos armazenados.

Embora este faria um monte de você estremecer, ter um monte de lógica de negócios no banco de dados, isso significa o aplicativo Powerbuilder foi relativamente "leve" e quando nós construímos a extremidade dianteira .Net, poderia tirar proveito da SQL base de código e ter um monte de funcionalidade já construído e testado.

Não estou dizendo eu recomendo a criação de aplicativos dessa maneira, mas certamente trabalhou para a nossa vantagem neste caso.

Tivemos uma ferramenta de geração de código em nossa estrutura de aplicativo que foi usado para ler os arquivos de dados baseados em texto, cerca de 20 outras aplicações feitas uso dele.

Nós queríamos fazer uso de arquivos de dados XML em vez de arquivos baseados em texto estruturado. O código original foi bastante desatualizado e difícil de manter. Nós substituímos esta ferramenta por uma combinação de scripts de XSLT e uma biblioteca de utilitários. Para a biblioteca de utilitários poderíamos fazer uso de algum código na ferramenta de idade.

O resultado foi que todos os 20 aplicativos podem agora fazer uso de qualquer formato de arquivo baseado em texto obsoleto ou o novo formato baseado em XML. Nós também entregou uma ferramenta de conversão geração que converteu arquivos de dados antigos para novos arquivos de dados XML.

Depois de trazer um ou dois liberação agora temos decidiu que já não irá apoiar o formato de texto com base antiga e toda a gente é capaz de converter seus dados para XML.

Nós fizemos mal tem que fazer conversões manuais,

convertido o principal aplicativo empresa de C pré-padrão ++ para C ++ padrão. Tivemos uma venda contingente multimilionária em fazê-lo funcionar no AIX, e depois de olhar para isso decidimos que a conversão para C ++ padrão ia ser tão fácil como converter a tradicional C da IBM ++.

Eu não sei a contagem de linha, mas a RAN código fonte para centenas de megabytes.

Nós usamos ferramentas padrão do Unix para fazer isso, incluindo vi e os compiladores variados.

Demorou alguns meses. A maioria das correções eram simples, capturados pelo compilador e quase mecanicamente fixos. Alguns deles foram muito mais complicado.

Eu acho que a minha principal takeaway foi: Não fique muito muito inteligente com código em um idioma que não tenha sido normalizado ainda, ou é provável que tenha coisas a mudança de formas inesperadas. Tivemos que fazer um monte de cavar em algumas das adaptações / abusos de fluxos C ++ engenhosas.

anos Dez atrás eu consegui uma equipe que converteu um sistema de CAD a partir do DOS no Windows. A versão DOS usado bibliotecas home-Brew para gráficos de desenho, a versão do Windows utilizada MFC. O software foi de cerca de 70.000 linhas de código C no momento da conversão. A coisa mais importante que aprendemos no processo é o poder de abstração. Todas as rotinas de não-portáteis específicas do dispositivo foram isolados em alguns arquivos. Foi, portanto, relativamente fácil de substituir as chamadas para a biblioteca baseado em DOS que gostaria de chamar acessando diretamente o frame buffer com chamadas API do Windows. Da mesma forma, para a entrada de nós apenas substituído o ciclo de eventos que verificado para eventos de teclado e mouse, com o ciclo de eventos do Windows correspondente. Nós continuamos nossa política de isolar o código não-portáteis (desta vez Windows) do resto do sistema, mas ainda não encontrei este particularmente útil. Talvez um dia nós iremos portar o sistema para Mac OS X e ser grato novamente.

Vários. Mas eu mencionar um.

Foi uma ferramenta de modelagem de desempenho. Parte delphi 1, parte turbo pascal. É necessária uma reescrita senão ele não ia sobreviver. Então começamos como uma equipe de 2, mas só me sobreviveu até o fim. E eu estava pronto antes do prazo; -).

Várias coisas que fizemos:

  • Faça-o multimodel. O original tinha muitas globals. Tirei tudo e multi modelo deles era fácil de se adaptar.
  • mensagens de erro estendidas. Clique em uma mensagem e obter a ajuda.
  • Lotes de gráficos e diagramas. Todos clicável para perfurar para baixo.
  • Simulação. parâmetros mudam com o tempo e ver quanto tempo a configuração atual era suficiente.

Nós realmente fez este limpo e pago de volta fortemente no final. Tal grande experiência de aprendizado.

Re-escreveu um sistema para uma empresa que processa faturas legais - o sistema original era uma monstruosidade VB que não tinha idéia de bons princípios OO - tudo foi junto mista. O HTML fez SQL eo SQL escreveu HTML. Uma grande parte do que era um motor de regras personalizadas que usou algo como XML para as regras.

Duas equipes fizeram o re-escrita, que levou cerca de 9 meses. Uma equipe fez o front-end web e o fluxo de trabalho de back-end, enquanto o outro time (que foi) re-escreveu o mecanismo de regras. O novo sistema foi escrito em C #, e foi feito teste anterior. Adicionando novas regras para o sistema quando foi feito era sujeira simples, e foi tudo testável. Ao longo do caminho que fizemos coisas como converter a empresa de VSS para SVN, implementar a integração contínua, automatizar a implantação, e ensinar os outros desenvolvedores como fazer TDD e outras práticas Scrum / XP.

expectativas Gerenciando foi crucial através do projeto. Ter um cliente que foi esclarecido sobre software foi muito útil.

Ter um mix de testes, juntamente com toneladas testes de unidade e integração abrangentes ajudaram a grande escala (end-to-end).

vBulletin convertido que é escrito em PHP para C # / Asp.NET. Estou bastante familiarizado com ambas as línguas, mas PHP é as mãos para baixo o vencedor para a construção desse software. A maior dor na parte traseira foi a necessidade de fazer um C # equivalente a eval () do PHP para chamar os modelos.

Foi o meu primeiro desafio na tentativa de fazer uma conversão. Eu aprendi que eu preciso de mais experiência com C # e que escrevê-lo a partir do zero é apenas o caminho mais fácil às vezes.

I converteu um processo de construção dinâmica completamente escrito em Perl a uma solução C # / Net usando um fluxo de trabalho motor de um colega de trabalho tinha desenvolvido. (Que ainda estava em beta - então eu tinha que fazer alguns refinamentos). Isso deu-me a oppertunity para adicionar à prova de falhas e fail-over funcionalidade para o processo de construção.

Antes que você pergunte - no -. O fluxo de trabalho-Microsoft Foundation não poderia ser usado desde que você não pode alterar dinamicamente um processo durante o seu tempo de execução

O que eu aprendi:

  • a odiar o Perl-desenvolvedor
  • processo de otimização usando uma wf-motor
  • prova de falhas e fail-over estratégias
  • alguns C # ajustes;)

No final, abrangia cerca de 5k - 6k (incluindo o wf-motor) origem LoC de 3 200 Linha de Controlo Perl-arquivos. Mas foi divertido - e muito melhor no final;) ??

A conversão de código C teoricamente portátil em código C teoricamente portáveis ??entre arquiteturas para apoiar uma mudança de hardware que guarda os dólares empresa X por unidade.

O tamanho varia -. Esta é uma necessidade comum, e eu fiz pequenas e grandes projetos

Eu aprendi a escrever código C mais portátil. Elegância é grande, mas quando se trata direito baixo para ele o compilador cuida de desempenho, eo código deve ser tão simples e portátil quanto possível.

portado uma simulação escrito em Fortran 77 (apesar de ter sido escrito nos anos 90) para C / Java porque o original só trabalhou em pequenos conjuntos de dados. Aprendi a amar a notação O grande depois de várias vezes de explicar por que apenas movendo a tabela de dados inteiro na memória no início do programa não ia escala.

Migrando Stealth software missão bombardeiro B-2 a partir JOVIAL para C. 100% de conversão totalmente automatizada. Sério!

lição principal:. utilizando ferramentas de conversão automatizada configuráveis ??é uma grande vitória

DMS Software Reengineering Toolkit .

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