Zakładam, że już widziałeś this link.
Nie myśl najpierw o kodzie (klasy, & c.). Pomyśl o przypadkach użycia i wymaganiach funkcjonalnych. Jaką funkcjonalność ma zapewniać automat vendingowy? W jaki sposób użytkownicy mają z nim współdziałać? A co z opiekunami? Staraj się nie mylić szczegółów implementacji z wysokimi wymaganiami, robiąc to.
Następnie, w zależności od rodzaju projektu
dla klasy
, pomyśl o wymaganiach niefunkcjonalnych. Jaki jest najważniejszy atrybut: szybkość, niezawodność, łatwość konserwacji, zdolność adaptacji do nowych sytuacji, bezpieczeństwo ...? Istnieją inne możliwości. Nie są to odpowiedzi binarne, tak/nie, myślcie więcej w kategoriach zakresów i minimalnych standardów w stosunku do optymalnych celów. Uwaga: "optymalny" zależy od punktu widzenia danego interesariusza. Łatwość użycia i bezpieczeństwo często są w konflikcie, więc musisz dowiedzieć się, co jest ważniejsze.
Następnie możesz wrócić do swoich przypadków użycia i sprawdzić, w jaki sposób wpływają na Twoje niefunkcjonalne wymagania. To tutaj odbywa się negocjacja z klientem, który w tym przypadku jest prawdopodobnie tobą. Czy musisz poświęcić funkcje, aby osiągnąć inny cel? Dla każdej cechy, jakie jest ryzyko w stosunku do nagrody? Łatwe do wdrożenia funkcje zapewniające wysoką wartość są świetne. Trudne do wdrożenia (z powodu ograniczeń) funkcje, które dodają jedynie niewielką wartość, powinny być wyraźnie priorytetowo traktowane jako ostatnie. Pozostałe dwie kombinacje wymagają starannego namysłu.
Następnie można rozpocząć projektowanie urządzenia.
Istnieje wiele różnych schematów, które można wykorzystać do wizualizacji problemu lub wyjaśnienia proponowanego rozwiązania innym.
Jesse Liberty napisał dobrą książkę na ten temat: http://www.amazon.com/Beginning-Object-Oriented-Analysis-Design-C/dp/1861001339 – Robert
Wydaje się Praca domowa. – Tiger
To prawdopodobnie praca domowa, ale on nie prosi o wyciągnięcie wniosków. On po prostu potrzebuje pchnięcia we właściwym kierunku. – Brandon