2009-02-18 15 views
19

oprogramowania Mam nadzieję, że to nie jest duplikatem ...Przykłady wielkim projektowania i wdrażania

Co jest najbardziej solidnie zaprojektowany i wdrożony system oprogramowania/framework/aplikacji, które natrafiłem?

Wygląda na to, że TDD, zasady SOLID, wzorce projektowe OO i podobne rzeczy można łatwo wypromować na podcastach i blogach, używając naprawdę prostych przykładów, ale trudno sobie wyobrazić tworzenie dużych systemów, które w pełni spełniają te standardy, bez eksplozja kodu. W moim przedsiębiorstwie wykonywanie pełnego TDD wydaje się prawie wykluczone z naszych ograniczeń czasowych.

Jeśli ktokolwiek może wskazać mi jakieś dobre projekty open-source, bardzo chciałbym zagłębić się i zobaczyć, co jest dobre TDD/SOLID/etc. wygląda jak. Dzięki.

Odpowiedz

7

Oprogramowanie do przenoszenia promu kosmicznego ?

They Write the Right Stuff

Ale ile pracy oprogramowanie nie jest nie co sprawia, że ​​jest niezwykły. To, co robi czyni to niezwykłym, to jak dobrze działa oprogramowanie . To oprogramowanie nigdy się nie zawiesza . To nigdy nie musi być ponownie uruchomione. To oprogramowanie jest wolne od błędów. Jest doskonały, tak doskonały jak ludzie osiągnięci. Rozważmy te statystyki : ostatnie trzy wersje programu - każde 420 000 linii - miały po jednym błędzie po . W ostatnich 11 wersjach tego oprogramowania było łącznie z 17 błędów. Programy komercyjne o równoważnej złożoności wynoszącej miałyby 5 000 błędów.

+0

Przypominam sobie, że ten kod został opracowany z użyciem wielu formalnych metodologii dowodowej. Czy ktoś może to potwierdzić lub zaprzeczyć? – dmckee

0

Google Chrome

+0

Cieszę się chromem, ale gdzie jest miłość do Linuksa? To mój jedyny prawdziwy problem z chromem. –

+0

i czy naprawili wszystkie błędy zawieszania się/zamrażania z wersji beta? –

4

TeX?

Knuth wciąż oferuje reward for confirmed bugs.


BTW: Nie jestem pewien, czy Knuth zasubskrybował jakiś mechanizmy modne dla robienia naprawdę solidnego rozwoju. Nie mam pojęcia, jak on to robi. Może tylko dbałość o szczegóły.

4

.NET Framework.

  • To wspaniałe, gdy "dotaję" do przestrzeni nazw, a jej członkowie są dokładnie tym, czego bym się spodziewał.
  • To "po prostu działa".
0

Firefox 2,0

  • Proste UI
  • Mocna funkcjonalność
  • Bardzo stabilny
+0

Czekaj, co? Robost? Stabilny? Nie ma mowy Jose! –

+0

Działa dobrze dla mnie ... na pewno lepiej niż Internet Explorer 6/7 – Element

+1

@Element, wszystko jest lepsze niż Internet Explorer 6/7. –

0

Apache httpd.

  • Clean
  • Proste
  • funkcjonalna

także: Graphviz - niesamowite przykładem zasilania, spójności i prostoty.

Najlepszy kod, jaki kiedykolwiek widziałem, był przyzwoitością; to zostało zrobione w rzecz prawdziwej elegancji i piękna. Ale niestety musi pozostać anonimowy.

BTW: Wszelkie ogromny/interfejs API, które mogłybyzostać uproszczone, nie jest solidnie zaprojektowany przez definicji. A dla wielu firm, duże brzydkie interfejsy otrzymują tylko większe i uglier.

Paul.

2

Wiele innych postach wspomnieć programy, które nie zostały zrealizowane z TDD, i jako takie nie dają odpowiedzi na „Naprawdę chciałbym, aby kopać i zobaczyć, co dobre TDD/SOLID/etc. wygląda jak." Na przykład, jestem całkiem pewien, że źródła serwera HTTPD Apache i Firefox nigdy nie widziały TDD. Właśnie przeglądałem trochę ich źródeł, aw folderach testowych znajdowało się tylko kilka małych plików, a kod produkcyjny nie wyglądał tak, jakby był napisany TDD lub podążając za SOLID-em.

Na przykład Fitnesse został napisany przy użyciu TDD przez wynalazcę SOLID. To powinno być dobre odniesienie do tego, jak wygląda taki kod, szczególnie do nowszych części kodu (w jego książce Clean Code, Wuj Bob ma kilka przykładów złego kodu Fitnesse, który następnie czyści, więc niekoniecznie cały kod w Fitnesse to czyste).

Będę też wrzucił mój własny projekt, Dimdwarf Application Server, który został napisany w 100% z TDD/BDD i starając się napisać jak czysty kod, jak to możliwe (po SOLID itp.). Jest tam także trochę brzydkich części (głównie w planowaniu zadań i zbieraniu śmieci), ale te części są nadal w trakcie pracy i zostaną oczyszczone do czasu ukończenia tych funkcji.

+0

Andy prosi o dwie rzeczy: przykłady solidnego oprogramowania i przykłady naprawdę dobrego kodu opracowanego przy użyciu TDD. Fakt, że niektóre z lepszych przykładów nie używają TDD, nie dowodzi, że TDD nie jest dobre, ale dowodzi, że nie jest to konieczne. YMMV; niedawna formalizacja pod nazwą TDD; itp... – dmckee