Joshua Bloch omawia ten punkt w swoim wywiadzie dla książki „Coders at Work”.
W przeciwieństwie do bardziej ortodoksyjnych i akademickich poglądów, radzi coś do melodii twoich myśli (może sam tam to przeczytałeś?): Że przed napisaniem dokumentacji musisz zrozumieć, czego chcesz od systemu i uzyskać bardziej „realne” „uczucie. W tym celu zaprojektowałby część interfejsów i kod klienta, który ich używa.
Najważniejszą rzeczą jest wiedzieć, co próbujesz zbudować: jaki problem próbujesz rozwiązać. Ważności analizy wymagań nie można przecenić. Są ludzie, którzy myślą: „Och, tak, analiza wymagań; idziesz do swojego klienta, mówisz: „Czego potrzebujesz?” Mówi ci i gotowe.
Nic nie może być dalej od prawdy. To nie tylko negocjacja, ale proces zrozumienia. Wielu klientów nie powie Ci o problemie; powie ci rozwiązanie. Klient może powiedzieć na przykład: „Potrzebuję, abyś dodał obsługę następujących 17 atrybutów do tego systemu. Następnie musisz zapytać: „Dlaczego? Co zamierzasz zrobić z systemem? Jak się spodziewasz, że będzie ewoluować? ”I tak dalej. Poruszasz się do przodu i do tyłu, dopóki nie zorientujesz się, czego naprawdę potrzebuje klient. Są to przypadki użycia.
Najważniejsze, co możesz zrobić na tym etapie, to wymyślenie dobrego zestawu przypadków użycia. Gdy to zrobisz, uzyskasz punkt odniesienia, na podstawie którego możesz zmierzyć każde możliwe rozwiązanie. Jest OK, jeśli spędzasz dużo czasu na zbliżeniu go do racji, ponieważ jeśli pomylisz się, już nie żyjesz. Reszta tego procesu będzie ćwiczeniem na próżno.
Najgorszą rzeczą, jaką możesz zrobić - i widziałem, że tak się dzieje - jest to, że dostajesz grupę inteligentnych facetów do pokoju na sześć miesięcy i piszesz 247- stronicową specyfikację systemu, zanim naprawdę zrozumieją, co to jest. próbuje zbudować. Ponieważ po sześciu miesiącach będą mieli bardzo precyzyjnie określony system, który może być bezużyteczny. I często mówią: „Zainwestowaliśmy tyle w specyfikację, że musimy ją zbudować”. Tworzą więc bezużyteczny system i nigdy się nie przyzwyczaja. I to jest okropne. Jeśli nie masz przypadków użycia, budujesz to, a następnie próbujesz zrobić coś bardzo prostego i zdajesz sobie sprawę, że: „O rany, robienie czegoś bardzo prostego, na przykład wzięcie dokumentu XML i wydrukowanie go, wymaga stron na stronach płyty głównej kod." I to jest okropne.
- Joshua Bloch, z wywiadu w „ Coders at Work: Reflections on the Craft of Programming ” Petera Seibela
Jeśli już myślisz w ten sposób, dobrze byłoby, gdybyś mógł przeczytać książkę i przeczytać cały wywiad. Jak powiedziałem, zawsze jest bardzo pouczający.