Metodologie / narzędzia do samodzielnego opracowywania [zamknięte]


10

Załóżmy, że musisz samodzielnie opracować oprogramowanie średniej wielkości. Jakby to był osobisty projekt, który chcesz zrealizować.

Jakich metod / narzędzi użyłbyś do zdefiniowania, co należy opracować, nauczyć się i mieć ogólne wyobrażenie o tym, czym jest system w szczegółach?

Zasadniczo, aby być na bieżąco i nie zgubić się po drodze.


3
Ołówek, papier i mój mózg. Posiadanie tablicy pomaga. Poważnie, duża część moich prac projektowych odbywa się bezpośrednio w IDE. Czy masz konkretne pytanie oparte na problemie, z którym się obecnie mierzysz? Pomógłby nam odpowiedzieć na pytanie, gdybyśmy wiedzieli konkretnie, jaki problem próbujesz rozwiązać.
Robert Harvey

@RobertHarvey haha ​​To bardzo prawda. Cóż, w pewnym sensie. Rozwijam pomysł, który miałem, osobisty projekt. Po prostu oprogramowanie jest większe, niż sobie wyobrażałem, i wciąż muszę się nauczyć, jak to działa, a potem wymyślę, jak to zrobić.
Cassio

1
@RobertHarvey Głównymi problemami są prawdopodobnie brak burzy mózgów na szczegółach, śledzenie tego, co należy zrobić, oraz widok systemu jako całości.
Cassio

2
Jestem 99,9% pewien, że omówiliśmy to w innym pytaniu lub dwóch, ale w tej chwili nie mogę ich znaleźć.
Adam Lear

4
Zawsze staram się zgubić po drodze. To szybka ścieżka do nauki.
Joel Etherton,

Odpowiedzi:


5

Zwykle używam Mercurial, jeśli chcę funkcję, po prostu ją dodaję, a jeśli już jej nie chcę, po prostu ją usuwam. Staram się też dobrze pisać komentarze, aby się nie zgubić.


Tak - Mercurial jest jednym z tych narzędzi, które wydają się być stworzone przez Apple :) Prosty, ale potężny, piękny, ale przydatny ...
Rook

4

Może łatwo rosnąć poza zasięgiem twojej uwagi. Nie rozpiętość , szerokość .

Trudno jest wziąć pod uwagę zbyt wiele elementów jednocześnie .

A potem ... staje się kolejką górską regresji .
Wszystko, co robisz, niszczy poprzednie rzeczy, a cofanie się nie pomaga.

Aby tego uniknąć, należy agresywnie przetestować regresję .
Automatycznie. (Nie możesz tego zrobić inaczej i pozostać przy zdrowych zmysłach)

Testy mocno obciążą twoje energie.

Jeśli projekt dotyczy interfejsu użytkownika ... prawdopodobnie toast:

  • Testowanie interfejsu użytkownika jest trudne .
  • Zautomatyzowane testowanie interfejsu użytkownika jest ... wciąż trudne .

Niesprawdzony pomysł z ostatniej chwili na projekty skoncentrowane na interfejsie użytkownika.
Zarejestruj krewnego ze wolnym czasem i zamiłowaniem do klikania myszką jako testera interfejsu użytkownika.
Myślę „nastolatek” tutaj o .

Inne sprawy:

  • To zajmie wieczność .
  • Zmierzysz się z blokiem pisarza .
    (W rzeczywistości nie istnieje jako warunek, jest to popularny błąd, który ludzie przywiązują do braku dyscypliny )

Jeśli używany do kochać jakąś kontrolą wersji , użyj go.
Rozpoczynanie nauki teraz cię rozproszy .

Grafowanie pomysłów, jak już wspomniano, może pomóc.

Użyłem Freemind , CMaps , XMind , Yed , graphviz i ... coś innego.

XMind jest mniej sensu:

  • bardzo szybko wstawianie danych do
  • automatyczne układy
  • Ściśle staram się, abyś pozostał na temacie
  • bardzo dobre do robienia notatek podczas lekcji (ja tak chciałbym mieć go na studiach )
  • wciąż trudny w użyciu podczas zastanawiasz się nad czymś, czego tam nie wyjaśniłeś.

Ołówek i notatnik wciąż dobrze oceniają w mojej pierwszej dziesiątce:

  • ja skanowanie wielu moich notatek
  • Robię wiele małych objaśniających rysunków.

    • (Jeśli myślisz ze zdjęciami , możesz nigdy nie znaleźć satysfakcjonującego narzędzia burzy mózgów)

W ostateczności zawsze możesz przygotować powerpointy na własne potrzeby :)


+1. Czy masz jednak jakieś sugestie na temat „podejmowania decyzji w sprawie czegoś, czego tam nie wyjaśniłeś”?
Cassio

@ Cassio Przełączam się między xmind a ołówkiem + szkicownikiem, robię spiczaste listy w libreoffice, zapisuję przykłady i testuję przybliżoną implementację. Jest to dość czasochłonny proces, ale musisz odrzucić trochę nieproduktywnego myślenia, aby dojść do czegoś, co wydaje się właściwe. (PS: zgniatanie papieru przed
podrzuceniem

1
@ZJR Rzeczywiście. Czasami po prostu bałam się pisać rzeczy, których nie potrzebowałam i marnować na to czas, ale teraz widzę, że tak właśnie działa ten proces. Początkowo piszemy kilka niepotrzebnych rzeczy, ale z czasem się poprawiamy. :) Dzięki!
Cassio

3

Programowanie piśmienne.

Praktyk umiejętności czytania i pisania może być uważany za eseistę, którego głównym zmartwieniem jest ekspozycja i doskonałość stylu. Taki autor, z tezaurusem w ręku, ostrożnie wybiera nazwy zmiennych i wyjaśnia, co oznacza każda zmienna. On lub ona dąży do programu, który jest zrozumiały, ponieważ jego koncepcje zostały wprowadzone w kolejności, która jest najlepsza dla ludzkiego zrozumienia, przy użyciu kombinacji formalnych i nieformalnych metod, które wzmacniają się nawzajem.

Jeśli piszesz gazetę (lub książkę, raport lub dokument) na temat swojego projektu, masz tendencję do pozostania przy zadaniu.

Zacznij od szkicu tego, co robisz: omówienie przypadku, wydanie 1, wydanie 2, wydanie n. Zapisz podsumowanie przypadków użycia. Priorytetyzuj je. Weź ich w sprinty i wydania.

Każda wersja ma widok przypadku użycia, widok logiczny, widok przetwarzania, widok komponentu, widok wdrożenia. W przypadku sprintu wyszczególnij przypadki użycia. Opublikuj dokument HTML, aby pokazać, co zamierzasz zrobić. Po wyszczególnieniu przypadków użycia dla sprintu, napisz model logiczny. Napisz kod, który to obsługuje. Napisz dokumentację przetwarzania. Napisz kod, aby go obsłużyć. Twórz moduły. Napisz dokumentację widoku komponentu. Napisz testy i dokumentację pomocniczą. Opublikuj wyniki sprintu jako dokument HTML.

Powtórz dla każdego sprintu. Od czasu do czasu przeglądaj i edytuj dokument.

Istnieje wiele umiejętnych narzędzi programistycznych. Pomogą ci stworzyć źródło, które tworzy dokumentację i kod z jednego tekstu.

Używam sfinksa i PyLit, ale to dlatego, że jestem programistą Python.


Dobrze jest wyrzucić z niego papier uniwersytecki , a następnie zapomnieć o nim, źle, jeśli planuje się później wypuścić lub utrzymać produkt. Każdy i tak powinien używać doxygen , nawet w Pythonie. Ale to dlatego, że jestem fanem :)
ZJR

2

Jeśli chcesz zapisać swoje pomysły, możesz użyć narzędzia do mapowania myśli, takiego jak XMind lub FreeMind . Oba narzędzia są bezpłatne (dla osób fizycznych dla XMind) i świetnie sprawdzają się podczas burzy mózgów i porządkowania pomysłów. Rzecz w tych narzędziach jest taka, że ​​masz mniejsze szanse na zapomnienie.

Osobiście korzystałem z Freemind przed rozpoczęciem mojego ostatniego osobistego projektu. Nie miałem żadnej konkretnej metodologii per se . Właśnie przedstawiłem swoje pomysły podczas godzinnych sesji raz na dwa dni. Myślę, że rozstawianie sesji burzy mózgów pomogło mi lepiej zobaczyć, co było nie tak, co nie było konieczne, ale może być przydatne w kolejnych wersjach itp.

Przy pierwszym zatwierdzeniu kodu zapisałem również plik burzy mózgów w repozytorium kodu źródłowego (użyłem bitbucket ) i utrzymałem go na bieżąco z moimi najnowszymi pomysłami.


Bardzo dobre. Już je testuję. Dzięki!
Cassio

2

Traktuj to jak prawdziwy projekt oprogramowania (ponieważ jest jednym). Jest tylko kilka rzeczy, które zmieniają się, ponieważ liczba programistów jest jedna. Nadal potrzebujesz kontroli źródła. Nadal potrzebujesz sposobu organizowania funkcji, aby dodać błędy do naprawienia. Nadal potrzebujesz automatycznego testu, aby sprawdzić, czy nie tworzysz regresji w kodzie. Powinieneś także mieć automatyczny sposób na skompilowanie kodu (jeśli to konieczne), uruchom testy i przejrzyj raporty.

Pracuję nad osobistym projektem, tak jak opisałeś. Używam Git, Redmine, JUnit i Jenkins, aby spełnić wszystkie kategorie, które opisałem. Mój przebieg pracy to:

  • Wybierz bilet do pracy
  • Rozgałęź bazę kodu
  • Opracuj kod i testy dla zadania (zatwierdzaj zmiany w gałęzi w dobrych punktach zapisu)
  • Scal gałąź z powrotem do pnia
  • Sprawdź, czy kompilacja zakończyła się pomyślnie, testy przeszły pomyślnie i nie wystąpiły inne problemy
  • Powtarzać

Utrzymywanie wszystkiego w zarządzaniu i organizacji jest tak samo ważne, jak w przypadku wielu programistów. Wielu programistów wymaga organizacji, aby informacje były przekazywane wszystkim. Kiedy jesteś tylko ty, masz już wszystkie informacje, ale zapamiętanie każdej części systemu jest trudne. System zarządzany ułatwia ci pracę i możesz skupić się na zadaniu.


2

Przybory:

  • System kontroli wersji (nawet jeśli jesteś jedynym programistą w swoim garażu lub domowym komputerze osobistym): GIT, Mercurial, Tourtoise

  • Edytor z podświetleniem kodu źródłowego, nawet jeśli masz IDE (Scintilla, Vim, Notepad)

  • Tablica, tablica, niektóre rzeczy po prostu nie pasują do twojej aplikacji Designer Tools.

  • Narzędzie do projektowania: Rational Rose, Umbrello, (UML, ER,) Visio lub „Słabe narzędzia projektanta”, takie jak Power Point, Corel Draw, Open Office Draw

  • Tekst / kod źródłowy Narzędzie do porównywania tekstu, np. WinMerge


Bardzo pomocny! Ćwiczę to wszystko. Dzięki.
Cassio

1

To zależy od tego, jak możesz rozróżniać i obsługiwać różne zadania, ponieważ musisz przyjrzeć się każdemu etapowi procesu programowania.

Myślę, że narzędzia są użyteczne tylko wtedy, gdy już wiesz, jak z nich korzystać, a jednym z najgorszych błędów jest nauczenie się, jak działa narzędzie, a nie nauczenie się, co z nim zrobić.

Po pierwsze, moim zdaniem, musisz zapisać, czego oczekujesz od oprogramowania, a zwłaszcza tego, czego nie zrobi. To kluczowy punkt. Następnym krokiem jest podzielenie końcowego systemu na niższe podsystemy, co ułatwi proces budowania. I na koniec musisz wybrać swoje narzędzia. Zasadniczo dobry IDE, VCS i modeler danych. Możesz dodać wiele innych narzędzi, aby pomóc, ale uważaj, aby nie zacząć od niewłaściwej ścieżki.

Początek nie wydaje się tak atrakcyjny, ale z czasem cały proces będzie przyjemny.


Tak! Pamiętaj, że kod to - jeśli projekt jest dobrze zaprojektowany - niewielka część całości.
Lucas Maus
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.