2009-02-26 6 views
8

Jakie udane konwersje/przeróbki zrobiliście z oprogramowania, z którym byliście zaangażowani? Gdzie są języki i ramy zaangażowane w proces? Jak duże było to oprogramowanie? Wreszcie, co jest najważniejszą rzeczą, której nauczyłeś się od bycia zaangażowanym w proces.Co udało Ci się zrobić/przerobić oprogramowanie?

Jest to związane z tym question

Odpowiedz

3

Idę na "najbardziej zawiłe" tutaj:

  • Przeportowany 8080 symulator napisany w FORTRAN 77 z DECSystem-10 biegania TOPS-10 do mainframe IBM 4381 z systemem VM/CMS.
+0

+1 za osiągnięcie celu. –

0

Konwersja teoretycznie przenośny kod C do teoretycznie przenośnego kodu C na wszystkich architekturach wspierać zmianę sprzętu, który zapisuje Firma X dolarów za sztukę.

Rozmiar jest różny - jest to typowa potrzeba, a ja wykonałem małe i duże projekty.

Nauczyłem się pisać bardziej przenośny kod C. Elegancja jest świetna, ale jeśli chodzi o to, kompilator dba o wydajność, a kod powinien być tak prosty i przenośny, jak to tylko możliwe.

2

Przepisałem 20 000 linii Perla, aby użyć "ścisłego użycia" w każdym pliku. Musiałem dodać "moje" wszędzie, gdzie było to potrzebne i musiałem naprawić błędy, które zostały odkryte w trakcie procesu.

Największą rzeczą, jakiej nauczyłem się na podstawie tego, jest: "To zawsze trwa dłużej, niż myślisz".

Musiałem zrobić to wszystko za jednym razem, aby inni koderowie nie pisali nowego, niezmienionego kodu w tym samym czasie. Myślałem, że to szybko, ale tak się nie stało, a ja wciąż hakerowałem o szóstej rano następnego ranka.

Zrobiłem to kompletnie i zameldowałem się, zanim wszyscy zaczęli pracę!

0

Wykonuję przepisanie systemu zarządzania projektami Inhouse do bardziej standardowego modelu MVC. Jest w stosie LAMP (PHP) i jestem blisko pierwszego etapu.

Rzeczy, których się nauczyłem od tego, to jak prosty program czuje się na początku i starałem się nie dodawać komplikacji, dopóki nie muszę.

przykład jest to, że zaprogramowany wszystkie funkcje, pierwszą (jak i był łatwy administracja), a następnie, gdy to jest załatwione, dodać skomplikowanej konieczności ograniczenia (poziom użytkownika itp)

+0

Nie udało się jeszcze wtedy ... wszystko co najlepsze! – MarkJ

0

I przeportowany/przebudowany/przepisał 30-liniowy program MS-DOS C++ w podobnej długości, ale o wiele bardziej w pełni funkcjonalnym i użytecznym programie Java Swing.

Nauczyłem się nigdy nie podejmować innej pracy z C++ lub Java.

+0

Jak idzie twoje nowe zadanie Cobol? – AShelly

+0

Źle odczytałeś. Powiedziałem, że nie będę podejmował innej pracy, w której musiałem grzebać przy użyciu nieudolnych języków programowania. :-) I to była fantastyczna decyzja. – Ken

0

Przekazałem aplikację Powerbuilder serwera klienta, kilkaset ekranów, do aplikacji ASP.NET (C#).

Z powodu problemów z wydajnością i konserwacją, w zeszłym roku przeniosłem ton wbudowanego SQL ze skryptów Powerbuilder i do procedur składowanych.

Mimo że sprawiłoby to, że wiele z was skrzywiłoby się, mając dużą logikę biznesową w bazie danych, oznacza to, że aplikacja Powerbuilder była stosunkowo "lekka" i kiedy zbudowaliśmy frontowy koniec .Net, mogła skorzystać z Baza kodów SQL i wiele wbudowanych i przetestowanych funkcji.

Nie mówię, że polecam budowanie aplikacji w ten sposób, ale z pewnością działało na naszą korzyść w tym przypadku.

0

Posiadamy narzędzie do generowania kodu w naszej strukturze aplikacji, które było używane do czytania w tekstowych plikach danych, Około 20 innych aplikacji z niego skorzystało.

Chcieliśmy wykorzystać pliki danych XML zamiast plików tekstowych. Oryginalny kod był dość przestarzały i trudny do utrzymania. Zastąpiliśmy to narzędzie kombinacją skryptów XSLT i biblioteki narzędzi. Dla biblioteki narzędziowej możemy użyć jakiegoś kodu w starym narzędziu.

W rezultacie wszystkie 20 aplikacji mogło teraz korzystać z przestarzałego formatu pliku tekstowego lub nowego formatu opartego na XML. Dostarczyliśmy także narzędzie do generowania konwersji, które konwertowało stare pliki danych na nowe pliki danych XML.

Po wydaniu jednej lub dwóch wersji zdecydowaliśmy, że nie będziemy już obsługiwać starego formatu tekstowego i każdy będzie mógł konwertować dane na format XML.

Zrobiliśmy prawie trzeba zrobić ręcznie konwersje

1

przepisałem dużych aplikacji Java Web do aplikacji ASP.Net dla firmy Realty różnych powodów.

Największą rzeczą, jakiej się nauczyłem, jest to, że niezależnie od tego, jak banalna jest funkcja oryginalnego systemu, jeśli nie ma go w drugim systemie, klient uważa, że ​​przepisanie jest awarią. Zarządzanie oczekiwaniem jest wszystkim przy pisaniu nowego systemu.

To jest największy powód, dla którego zmiany są tak trudne: wydaje się tak łatwe dla klienta ("Po prostu powtórz to, co już mam i dodaj kilka rzeczy.").

0

Konwertowano główną aplikację firmową z wcześniejszego standardowego C++ na standardowy C++. Mieliśmy kontyngent na sprzedaż w wysokości wielu milionów dolarów na sprawdzenie, czy działa on w systemie AIX, i po obejrzeniu tego zdecydowaliśmy, że konwersja do standardowego C++ będzie równie łatwa jak konwersja do tradycyjnego C++ IBM.

Nie znam liczby linii, ale kod źródłowy osiągnął setki megabajtów.

Do tego celu użyliśmy standardowych narzędzi Unix, w tym vi i różnych kompilatorów.

Trwało to kilka miesięcy. Większość poprawek była prosta, złapana przez kompilator i prawie mechanicznie naprawiona. Niektóre z nich były znacznie bardziej skomplikowane.

Myślę, że moim głównym wyjściem było: Nie bądź zbyt sprytny z kodem w języku, który nie został jeszcze ujednolicony, lub prawdopodobnie zmieni się w nieoczekiwany sposób. Musieliśmy sporo wkopać w niektóre z genialnych adaptacji/nadużyć strumieni C++.

0

Dziesięć lat temu zarządzałem zespołem, który przekonwertował system CAD z DOS na Windows. Wersja DOS używana do rysowania grafiki, wersja Windows używana MFC. W chwili konwersji oprogramowanie zawierało około 70 000 linii kodu C. Najważniejszą rzeczą, jakiej nauczyliśmy się w tym procesie, jest siła abstrakcji. Wszystkie nieprzenośne procedury specyficzne dla urządzenia zostały wyizolowane w kilku plikach.W związku z tym stosunkowo łatwo było zastąpić wywołania biblioteką opartą na systemie DOS, które pobierałyby bezpośrednio dostęp do bufora ramki za pomocą wywołań interfejsu Windows API. Podobnie, w przypadku danych wejściowych właśnie zastąpiliśmy pętlę zdarzeń, która sprawdzała zdarzenia związane z klawiaturą i myszą, z odpowiednią pętlą zdarzeń systemu Windows. Kontynuowaliśmy naszą politykę izolowania nieprzenośnego (tym razem systemu Windows) kodu od reszty systemu, ale jeszcze nie uznaliśmy tego za szczególnie użyteczny. Być może pewnego dnia przeniesiemy system na Mac OS X i znów będziemy wdzięczni.

0

Kilka. Ale wspominam o jednym.

Było to narzędzie do modelowania wydajności. Część delphi 1, część turbo pascalowa. Potrzebował przepisania, gdyby nie przeżył. Zaczęliśmy więc jako zespół 2, ale tylko ja przetrwałem do końca. I byłem gotowy przed terminem ;-).

Kilka rzeczy zrobiliśmy:

  • Make it multimodel. Oryginał miał wiele globali. Usunąłem je wszystkie i model multi był łatwy do dostosowania.
  • Rozszerzone komunikaty o błędach. Kliknij wiadomość i uzyskaj pomoc.
  • Wiele wykresów i diagramów. Wszystkie klikalne, aby drążyć.
  • Symulacja. Zmień parametry w czasie i zobacz, jak długo aktualna konfiguracja była wystarczająca.

Naprawdę sprawiliśmy, że ten jest czysty, a na koniec sporo zapłacił. Takie duże doświadczenie edukacyjne.

0

Przepisano system dla firmy, która przetwarza faktury prawne - oryginalny system był potworem VB, który nie miał pojęcia o dobrych zasadach OO - wszystko było zmieszane razem. HTML zrobił SQL, a SQL napisał HTML. Dużą jego częścią był niestandardowy mechanizm reguł, który dla reguł używał czegoś podobnego do XML.

Dwa zespoły dokonały ponownego napisania, co zajęło około 9 miesięcy. Jeden zespół wykonał front end i backend workflow, podczas gdy drugi zespół (na którym byłem) ponownie napisał silnik reguł. Nowy system został napisany w języku C# i został wykonany jako test-pierwszy. Dodanie nowych reguł do systemu było proste i wszystko można przetestować. Po drodze zrobiliśmy takie rzeczy jak przekształcenie firmy z VSS na SVN, wdrożenie ciągłej integracji, zautomatyzowanie wdrożenia i nauczenie innych programistów, jak wykonywać TDD i inne praktyki Scrum/XP.

Zarządzanie oczekiwaniami było kluczowe dla projektu. Posiadanie klienta, który znał się na oprogramowaniu, było bardzo pomocne.

Posiadanie mieszanki dużych (końcowych) testów wraz z kompleksowymi testami jednostkowymi i integracyjnymi pomogło tonom.

0

Konwertowany vBulletin, który jest napisany w PHP na C#/Asp.NET. Jestem obeznany z obydwoma językami, ale PHP jest zwycięzcą w budowaniu tego oprogramowania. Największy ból z tyłu wymagał zrobienia odpowiednika C# w PHP do wywoływania szablonów.

To było moje pierwsze wyzwanie podczas próby nawrócenia. Dowiedziałem się, że potrzebuję więcej doświadczenia z C# i że pisanie tego od zera jest czasami prostszą drogą.

0

Przekonwertowałem dynamiczny proces kompilacji całkowicie napisany w Perlu do C# /.Rozwiązanie sieciowe wykorzystujące silnik workflow opracowany przez współpracownika (który był jeszcze w wersji beta), więc musiałem wprowadzić pewne udoskonalenia). To dało mi możliwość dodania funkcji fail-safe i fail-over do procesu budowania.

Zanim zapytasz - nie - nie można użyć programu Microsoft Microsoftu Workflow-Foundation, ponieważ nie można dynamicznie zmieniać procesu podczas jego uruchamiania.

Co dowiedziałem:

  • nienawidzić Perl-developer
  • procesu optymalizacji przy użyciu WF-silnik
  • fail-safe i fail-over strategie
  • niektóre C# szczypie;)

W końcu objęło ono około 5k - 6k (łącznie z silnikiem WF) pochodzenie LoC z 3 200 plików LoL Perl. Ale było fajnie - i znacznie lepiej w końcu;)

0

Przesunięto symulację napisaną w Fortran 77 (pomimo tego, że napisałem ją w latach 90.) do C/Java, ponieważ oryginał działał tylko na małych zbiorach danych. Nauczyłem się kochać notację wielkiej litery po kilkukrotnym wyjaśnieniu, dlaczego przeniesienie całej tabeli danych do pamięci na początku programu nie miało być skalowane.