Organizuj i wykorzystuj ponownie cenne techniki, narzędzia i przykłady
Publikacja z 17 kwietnia 2007
Gdzieś, kiedyś, ktoś stanął przed problemem podobnym do Twojego i wymyślił sposób jego rozwiązania. Co by było, gdybyś mógł przechwycić ciężko zdobyte informacje tej osoby i ująć rozwiązanie w formie do wielokrotnego użytku? To jest dokładnie to, co wzorce projektowe i analityczne dostarczały inżynierom oprogramowania przez ostatnią dekadę. Jednak wzorce te na ogół omawiają konkretne rozwiązanie; nie dostarczają zbyt wielu wskazówek, jak zidentyfikować właściwy wzorzec i zastosować go w pierwszej kolejności.
Na szczęście można zwrócić się do ram analitycznych, które łączą rozwiązania wielokrotnego użytku z wzorcami analizy, badaniami, użytecznymi technikami organizacji i konkretnymi przykładami udanych podejść. Ramy analityczne są trochę jak twoja osobista biblioteka, dostosowana specjalnie do twojego własnego doświadczenia i tła.
Wzorce analityczne były używane w rozwoju oprogramowania przez wiele lat, aby zapewnić rozwiązania dla dostępu do danych, monitorowania i zarządzania transakcjami, bezpieczeństwa, przesyłania wiadomości, interfejsów użytkownika i innych potrzeb aplikacji. Nie są one przeznaczone do implementacji w kodzie, ale raczej do umożliwienia analitykom zrozumienia złożonych domen problemowych.
Analityczne ramy zawierają takie wzorce, a także zapewniają listę kontrolną umiejętności, narzędzi i technik, które są niezbędne do badania konkretnego obszaru, takiego jak analiza biznesowa lub architektury systemu. Może to być wielkim dobrodziejstwem dla firm poszukujących konkretnych umiejętności w celu zaspokojenia bieżących potrzeb. Jeśli kandydat może wykazać się wymienionym doświadczeniem i umiejętnościami, jest prawdopodobne, że odniesie sukces w realizacji zadania.
Zrozumienie struktury ram analitycznych
Rozważmy przez chwilę, jak ktoś wyszkolony w obróbce drewna zabiera się do tworzenia mebli. Pracownik ograniczony do kilku prostych narzędzi i własnej wiedzy może mieć trudności i czasochłonne tworzenie nowych elementów. Z drugiej strony, jeśli ta sama osoba otrzyma w pełni wyposażony warsztat, potężne narzędzia oraz pełną bibliotekę planów i przykładów, będzie jej o wiele łatwiej tworzyć złożone, interesujące meble. W bardzo podobny sposób, wydajność analityka może być poprawiona przez dostęp do zestawu sprawdzonych wzorców analizy, potężnych narzędzi analitycznych i technik oraz wielu przykładów skutecznych podejść do modelowania w celu uchwycenia i prezentacji złożonych informacji.
Ramy analityczne składają się z pięciu głównych komponentów: asortymentu narzędzi, zestawu użytecznych wzorców rozwiązań, jednej lub więcej form modelowych, wielu technik i umiejętności badawczych oraz metod grupowania złożonych informacji. W tabeli 1 przedstawiono elementy niezbędne do stworzenia ram analizy biznesowej.
Tabela 1. Ramy analizy biznesowej
Element | Opis |
---|---|
Narzędzia | Przetwarzanie słów, oprogramowanie do modelowania, kontrola wersji dokumentów |
Wzorce | Wzorce branżowe, wzorce systemów biznesowych, struktury organizacyjne przedsiębiorstw |
Formy modeli | Szablon organizacyjny, przypadek biznesowy Unified Modeling Language (UML), aktywność UML, Zachman Framework |
Techniki | Obserwacja, wywiad, badanie dokumentów |
Umiejętności | Zbieranie notatek, aktywne słuchanie, facylitacja spotkań, kierowanie zespołem, krytyczne myślenie, rozumowanie przez analogię |
Kategoryzacja | Ramy procesów biznesowych, hierarchia działów, biznesowe przypadki użycia, graf zależności biznesowo-funkcjonalnych |
W tych ramach analizy biznesowej, efektywne narzędzia do odkrycia i uchwycenia procesów biznesowych obejmują oprogramowanie do modelowania (w szczególności modelowanie UML, jeśli wymagania biznesowe są uchwycone jako przypadki użycia), narzędzia wspomagające przetwarzanie tekstów oraz pewną formę kontroli wersji dla modeli i dokumentów. Narzędzia mogą być dostosowane do konkretnych potrzeb lub mogą to być bardziej ogólne narzędzia, takie jak prosta wizualna pomoc do rysowania.
Powtarzające się wzorce analizy mogą być skuteczne, gdy są stosowane do konkretnej domeny analizy. W ramach analizy biznesowej, te wzorce obejmują wzorce systemu biznesowego (takie jak wprowadzanie zamówień, kontrola zapasów i rozwiązywanie problemów handlowych), wzorce specyficzne dla branży (takie jak routing telefonii, wysyłka paczek i planowanie oraz kontrole produkcji leków) i struktury biznesowe (takie jak macierze, hierarchie i organizacje rozproszone). Wzorce to tematy, które powtarzają się w poszczególnych obszarach biznesowych. Więcej informacji na temat sposobów wychwytywania powtarzających się tematów biznesowych można znaleźć w „Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML.” (Aby uzyskać więcej informacji, zobacz sekcję Powiązane tematy.)
Możesz użyć wyboru formularzy modelu do przechwytywania złożonych informacji. Dla złożonej analizy analitycznej istnieje wiele użytecznych form modeli, takich jak Unified Modeling Language (UML) dla systemów intensywnie wykorzystujących oprogramowanie, Systems Modeling Language (SysML) dla inżynierii systemów oraz Zachman Framework dla przekrojowych problemów organizacji. W przykładzie ram analizy biznesowej przedstawionym w tabeli 1, przydatne formy modeli do badania procesów biznesowych obejmują UML (do modelowania procesów i przypadków użycia), hierarchiczne schematy organizacyjne oraz potencjalnie zmodyfikowaną formę modelu Zachmana.
Techniki i umiejętności są kluczowym aspektem każdego podejścia analitycznego. Ważne jest, aby być w stanie zapewnić ocenę aktualnie dostępnych umiejętności osoby lub zespołu. Na przykład, technika wywiadu wymaga umiejętności robienia notatek i aktywnego słuchania. Prowadzenie warsztatów grupowych wymaga umiejętności facylitacji i kierowania zespołem. Analiza systemowa opiera się na umiejętności krytycznego myślenia o problemie (rozpoznając, jak problem można podzielić na mniejsze, prostsze dziedziny) i stosowania podobnych rozwiązań znalezionych w innych dziedzinach.
Celem analizy jest przedstawienie wyników publiczności. Najlepszy analityk na świecie nie odniesie sukcesu, jeśli nie będzie w stanie zorganizować informacji w sensowny, możliwy do zaprezentowania sposób. Zautomatyzowane narzędzia zapewniają tylko część rozwiązania tego problemu; ogólna organizacja informacji określa, w jaki sposób zamierzona publiczność będzie wykorzystywać dane. W ramach analizy biznesowej te zasady kategoryzacji są reprezentowane przez procesy biznesowe (gdzie biznes jest podzielony na subdomeny), wykresy zależności między przypadkami użycia biznesu oraz ogólną strukturę organizacyjną (zazwyczaj hierarchiczną).
Stosowanie ram analitycznych
Teraz, gdy już wiesz, co składa się na ramy analityczne, musisz nauczyć się, jak z nich korzystać. Istnieją co najmniej trzy sytuacje, w których ramy analityczne mogą się przydać. Pierwszą z nich jest sytuacja, w której dana osoba musi zmienić rolę. Na przykład, analityk biznesowy może przejść do roli analityka systemowego lub analityka testowego. Każda z tych ról ma inny zakres odpowiedzialności i wytwarza zupełnie inny zestaw dokumentacji i produktów pracy. Jeśli dana osoba może odwołać się do istniejących wcześniej ram analitycznych (z odpowiednimi przykładami), znacznie łatwiej będzie jej przygotować się i przejść do nowej roli. Osoba ta musi nauczyć się, które narzędzia, techniki, wzorce, modele i podejścia organizacyjne sprawdzają się najlepiej w każdej sytuacji. Dostęp do wzorca analitycznego dla każdego z tych obszarów może znacznie skrócić czas poświęcony na poszukiwanie rozwiązań.
Drugim obszarem, w którym ramy analityczne mogą okazać się przydatne, jest ocena umiejętności i przygotowania grupy outsourcingowej. Większość organizacji, które wykorzystują near-shore lub offshore outsourcing polegają na wcześniejszych doświadczeniach zespołów, aby ocenić ich zdolność do dostarczania uzgodnionych artefaktów. Jeśli zespół outsourcingu jest trzymany według określonego standardu, zdefiniowanego przez konkretny wzorzec analityczny, który okazał się skuteczny, istnieje większa pewność, że zespół będzie dysponował odpowiednim zbiorem materiałów i umiejętności. To samo można powiedzieć o zespołach wewnętrznych, chociaż zazwyczaj zespoły te mają już sprawdzone określone podejście, które stanowi źródło dla ram analitycznych.
Trzecim obszarem, w którym ramy analityczne są przydatne, jest szkolenie. Jeśli przestudiujesz ramy przedstawione w tabeli 1, powinno być oczywiste, że mogą one stanowić podstawę planu szkolenia doskonalącego zespół. Możesz przeprowadzić ocenę, aby określić, czy odpowiedni zbiór elementów ram, narzędzi, wzorców i umiejętności jest już dostępny wśród członków zespołu, czy też musi zostać dodany albo poprzez zakup narzędzia, albo szkolenie personelu.
Tworzenie i adaptacja ram
Ramy analityczne są użyteczne tylko wtedy, gdy narzędzia są znane modelarzowi. Przywołując utalentowanego stolarza, najdoskonalsze narzędzia są bezużyteczne bez twórczego zastosowania przez wyszkolonego i utalentowanego rzemieślnika. Podobnie, budowanie estetycznie wyglądających modeli wymaga dostosowania jednej lub więcej ram analitycznych do dziedziny problemu. Musisz wiedzieć, jak wybrać najbardziej odpowiedni szkielet, zapoznać się z elementami szkieletu i dostosować elementy szkieletu do danego problemu.
Wiele problemów ma powtarzające się aspekty, więc często można dostosować ściśle powiązany szkielet. Na przykład, prawie wszystkie starsze systemy komputerowe potrzebują jakiejś formy dochodzenia projektowego, choćby z innego powodu niż szkolenie nowych programistów w utrzymaniu i rozbudowie systemu. Dlatego też ramy projektowania systemu będą miały większe zastosowanie niż ramy procesów biznesowych.
Tworzenie nowych ram może być tak proste, jak sklonowanie istniejących ram i dodanie nowych wzorców i przykładów. Z drugiej strony, bardziej złożone ramy, takie jak te, które mogą być opracowane do analizy i zarządzania projektami systemów wbudowanych, mogą mieć niewiele wspólnego z innymi istniejącymi ramami, więc może być konieczne stworzenie ich od podstaw. Powinieneś zacząć od rozważenia narzędzi i technik, które możesz zastosować w danej dziedzinie. Na przykład, może być konieczne zmodyfikowanie istniejących technik, takich jak wywiad lub facylitacja grupy, aby wesprzeć nową domenę. Być może będziesz w stanie dostarczyć modelerowi inne narzędzia do konkretnych zadań, takie jak wspomagana komputerowo inżynieria oprogramowania (CASE) do organizowania treści dla federacji stron internetowych. W miarę upływu czasu, można rozszerzyć ramy, aby włączyć wiele przykładów. Wreszcie, na zakończenie projektu, można formalnie uchwycić techniki i wzorce, które okazały się najbardziej przydatne jako wzorce analizy do wykorzystania w następnym stosowanym problemie.
Może być konieczne dostosowanie ram analitycznych, zanim będzie można je wykorzystać w określonym kontekście. Adaptacja ram obejmuje włączenie nowych wzorców lub schematów organizacyjnych w celu lepszego dopasowania do potrzeb tematu. W ten sposób, można rozszerzyć i rozwinąć te ramy dla nowych domen problemowych. W miarę jak nowe narzędzia i techniki stają się dostępne, a nowe wzorce analizy są odkrywane i kodyfikowane, można je dodać do swojego zestawu narzędzi i zorganizować je w zmodyfikowane ramy. Jeśli poziom modyfikacji jest znaczący, może to wskazywać, że powinieneś skonstruować całkowicie nowe ramy.
Wprowadzanie ram analitycznych do użytku
Wyobraź sobie, że jesteś starszym programistą, który właśnie został przydzielony do nowego stanowiska architekta dla starszego systemu. Nie byłeś zaangażowany w pierwotne prace rozwojowe, ale musisz szybko nauczyć się systemu i wprowadzić nowych członków zespołu w stan gotowości, co wymaga, abyś to Ty pierwszy nabrał prędkości. Na szczęście, masz kilka rzeczy na swoją korzyść. Po pierwsze, masz dobry zestaw przykładów architektury z innych podobnych systemów w firmie. Po drugie, masz dostęp do wzorca analitycznego dla architektury oprogramowania (patrz tabela 2).
Tabela 2. Ramy analityczne architektury oprogramowania
Element | Opis |
---|---|
Narzędzia | Profiler kodu, narzędzie do raportowania baz danych, szablon dokumentu architektury oprogramowania, oprogramowanie do modelowania, analiza kodu |
Wzorce | Wzorce wdrożeń oprogramowania, wzorce architektury, wzorce projektowania systemu, wzorce przechowywania danych |
Formy modeli | Modele dynamiczne (takie jak sekwencja UML, wykresy algorytmów, stan UML i aktywność UML), diagramy związków encji z bazą danych, modele strukturalne (takie jak mapa wywołań klas i funkcji UML), diagramy przepływu danych, modele systemów korporacyjnych |
Techniki | Abstrakcyjne myślenie, organizacja i kategoryzacja, analiza krytyczna, sporządzanie notatek |
Umiejętności | Struktura kodu, analiza przepływu, profilowanie sprzętu, zachowanie systemu |
Kategoryzacja | Zachowanie funkcjonalne, zależność podsystemu, zależność komponentu, pakowanie wdrożenia |
Używając ram architektury oprogramowania, pierwszym krokiem jest zebranie wszystkich zalecanych narzędzi. Narzędzie do modelowania zapewnia możliwość wizualizacji istniejącego kodu do modelu UML, co pozwala na zbadanie istniejącej struktury kodu. Profiler runtime jest cenny dla nagrywania stosów wywołań, gdy funkcjonalność aplikacji jest wykonywana.
Następnie możesz zbadać wspólne wzorce architektoniczne obecne w aplikacji. Możesz zidentyfikować te wzorce, jeśli są obecne, używając wspólnych opisów wzorców odnotowanych w ramach, zwłaszcza wzorców analizy i projektowania. Wiele takich wzorców jest publikowanych; znajomość najczęstszych z nich często wystarcza do przeprowadzenia analizy architektonicznej.
Znajomość różnych form modeli, takich jak diagramy związków encji (ERD), UML i inne podejścia do modelowania zorientowane na system, zapewni Ci szeroki zakres opcji modelowania. Kategoryzowanie tych modeli według funkcjonalnego zachowania, logicznego porównania z fizyczną strukturą i wewnętrznymi stanami zachowania stworzy użyteczny zapis ogólnej architektury systemu. Wreszcie, ważne jest, aby znać swoje własne ograniczenia. Samoocena jest trudnym zadaniem, ale koniecznym do zapewnienia i upewnienia się, że wszystkie naprawdę niezbędne umiejętności są dostępne dla zespołu. Wykorzystanie zestawu oczekiwanych umiejętności wymienionych w ramach analitycznych architektury oprogramowania stanowi dobry punkt wyjścia do określenia rodzajów umiejętności wymaganych w zadaniu analizy architektonicznej. Ramy analityczne dostarczają listę kontrolną minimalnej ilości elementów potrzebnych do osiągnięcia sukcesu. Dodatkowe umiejętności mogą być wymagane dla wyspecjalizowanych architektur, takich jak sieci transportowe.
Podsumowanie
Studiowanie i zrozumienie złożonych systemów oprogramowania może być trudnym zadaniem. Aby odnieść sukces, musisz zastosować różnorodne narzędzia i techniki, aby zebrać, uporządkować i przedstawić opisy systemów. Tworząc i dostosowując ramy analityczne, możesz przygotować się z dużym wyprzedzeniem i zebrać przydatne narzędzia i przykłady do wykorzystania w bieżącej sytuacji. Teraz, gdy już wiesz, jakie elementy składają się na udane ramy analityczne, jak ponownie wykorzystać ramy i jak tworzyć nowe ramy, będziesz dobrze przygotowany do radzenia sobie z wieloma typowymi sytuacjami napotkanymi w dzisiejszych złożonych problemach.
Zasoby do pobrania
- PDF tej treści
- Aby uzyskać więcej informacji na temat archetypów biznesowych, przeczytaj Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML, autorstwa Jima Arlowa i Ili Neustadt (Addison-Wesley Professional, 2003).
- Sprawdź trzyczęściową serię Bena Liebermana (PDF) na temat sztuki modelowania, która uczy o tworzeniu ram analitycznych, organizacji i konstrukcji modelu oraz kompozycji wizualnej (developerWorks, sierpień 2003).
- Naucz się modelować za pomocą form strukturalnych, tematów organizacyjnych i punktów obrotu diagramu w artykule Bena Liebermana, „Buduj efektywne modele systemu” (developerWorks, marzec 2007).
.