tag: modelowanie

Zarąbiście “proste” narzędzie UML

Maj 7th, 2011

W dyskusjach bliskich darmowemu kursowi uml, który można znaleźć tutaj,
często poruszanym tematem było narzędzie do modelowania, które byłoby proste i najlepiej darmowe.
Różne propozycje padały, ale na takie coś, jak znalazłem dzisiaj bym nie wpadł.
Znalazłem na prawdę “proste” narzędzie do rysowania na szybko diagramów UML. Narzędzie jest tekstowe (na stronie głównej nawet jest notka “I love UTF8!”) i trzeba się tylko nauczyć składni, ale diagramy rysuje na prawdę ładne ;)
Weźmy jako przykład kawałek diagramu ze wspomnianego kursu.

# Diagram z przykładu z http://darmowy-kurs-uml.scire.pl
[Klient]^[Firma]
[Klient]^[Osoba]
[Faktura]*->1[Klient]
[Faktura]1->*[PozycjaFaktury]
[PozycjaFaktury]*->1[Towar]

W wyniku dostaniemy bardzo ładny obrazek w formacie png, który wygląda następująco:

Prawda, że ładne? A jeszcze ten tryb odręcznego rysowania …

Wspomniane narzędzie to yUML, które można znaleźć na http://yuml.me/.
Można rysować diagramy klas, diagramy aktywności i diagramy przypadków użycia.

Tekst można wprowadzać w wersji podstawowej przez formularz na stronie, ale są też dodatkowe narzędzia, z których najbardziej spodobało mi się to na Androida.

Ciekaw jestem do czego mogłoby się wam takie narzędzie przydać i czy się wam podoba. Bardzo proszę, napiszcie w komentarzach.

Tags: , , ,
Posted in Analiza systemowa, Informatyka, UML | 15 komentarzy »

Jak zgromadziłem 600 osób zainteresowanych tym samym tematem w niespełna miesiąc?

Marzec 22nd, 2011


Trzeba dodać, że nie wydałem ani jednego grosza na jakąkolwiek reklamę.

Muszę się przyznać, że tworząc darmowy kurs UML robiłem to początkowo z myślą o studentach, bo UML się przydaje na moich zajęciach, które prowadzę na MIM UW. Potęga “marketingu szeptanego” przeszła jednak moje najśmielsze oczekiwania.

Początkowa motywacja.

Jak wspomniałem, prowadzę na wydziale Matematyki Informatyki i Mechaniki Uniwersytetu Warszawskiego, zajęcia z inżynierii oprogramowania. Są to konkretnie laboratoria z Inżynierii Oprogramowania i mają za zadanie przećwiczyć (z grubsza rzecz biorąc) proces tworzenia oprogramowania. Równolegle do laboratorium jest prowadzony wykład, który ma dać podstawę teoretyczną i to bogactwo wiedzy mogłoby być wykorzystane na laboratorium od strony praktycznej. Pojawia się jednak mały problem, bo jedno i drugie (wykład i laboratorium) jest prowadzone równolegle i wykład czasami nie nadąża.
Nauczony doświadczeniem z poprzedniego roku postanowiłem się wysilić i wrzucić trochę wiedzy, która mogłaby pomóc i przygotować zawczasu przynajmniej tych studentów, którzy chcą coś robić więcej poza tym co muszą.

Co było dalej

Ponieważ z natury jestem (zdrowo ;) ) leniwy potrzebuję dodatkowych bodźców. Na szczęście potrafię sobie te bodźce sam zapewnić i w myśl zasady “jak chcesz coś zrobić powiedz o tym wszystkim, a to zrobisz”, zrobiłem stronę służącą do zapisywania się na kurs i pochwaliłem sie paru znajomym. Między innymi mój stary kolega Jacek Laskowski, którego bloga gorąco polecam wszystkim pasjonatom JAVA i nie tylko, napisał o moim kursie na tymże blogu. Wcześniej dałem jeszcze link na goldenline.pl i się zaczęło.

Forma kursu

Długo zastanawiałem się nad formą i nad tym jak zdopingować ludzi do systematycznej pracy. Ostatecznie stanęło na wideo w odcinkach ze zdrową porcją wiedzy. Odcinki są podzielone odstępami około 3 dni, co wydawało mi się dobrym czasem na przetrawienie materiału i zrobienie ćwiczeń. Jednak jak zrobić, aby każdy uczestnik szedł swoim trybem (przecież nie wszyscy się zapisali równocześnie). Z pomocą przyszło tu narzędzie, które pozwala na automatyczne wysyłanie maili w określonych odstępach czasu.
W każdym mailu, staram się zwracać do uczestników w dość osobisty sposób tak, aby zapanowała dość luźna atmosfera i aby nawiązać ciekawą relację, bo przecież po drugiej stronie jest wartościowy człowiek. To przyniosło ciekawe efekty, ale o tym za chwilę.

Co się dzieje teraz

Od czasu opublikowania kursu cały czas przybywają nowi subskrybenci. Nazbierało się ich do dziś dnia prawie sześciuset. Ale to nie wszystko. Z wieloma nawiązałem ciekawą relację. Ludzie odpisują mi na maile, dziękują, dają cenne wskazówki i czekają na więcej.

Nic nie wskazuje na to, aby liczba subskrybentów przestała kiedykolwiek rosnąć, codziennie zapisuje się kilkadziesiąt nowych osób i wypada tylko się cieszyć, że z niczego wyszło tak wiele.

Jeśli zatem Ty również chcesz skorzystać, zapraszam !!!
Darmowy kurs UML

Tags: , , , ,
Posted in Autorzy, Informatyka | Brak komentarzy »

Analityk Systemowy – łącznik dwóch światów

Luty 19th, 2011


Słownikowa definicja analityka systemowego mówi, że jest to osoba, która potrafi analizować złożone problemy organizacji w celu opisania tych problemów i przedstawienia ich w formie możliwej do przetwarzania przez systemy informatyczne. No dobrze, ale co to tak naprawdę znaczy? Kto powinien być analitykiem systemowym, informatyk, czy znawca badanej dziedziny? Jaką uczelnię powinien skończyć, aby poprawnie wywiązywać się ze swoich zadań? Powinien reprezentować interesariuszy biznesowych, a może zespół informatyczny, który będzie wykonywał prace projektowe. Gdzie w ogóle uczą bycia analitykiem systemowym? Hm, sporo tych pytań i nie bardzo wiadomo jak na nie odpowiedzieć. Ja jednak spróbuje to zrobić w tym artykule.

Wróćmy na początek do definicji. Wygląda na to, że analityk systemowy powinien przynajmniej być w stanie zrozumieć daną dziedzinę biznesową, bo inaczej jak by miał analizować „złożone problemy organizacji”. Tę tezę potwierdza również fakt, że musi to wszystko później opisać ludziom, którzy będą implementować jego rozwiązania w systemie informatycznym. Musi to zrobić w taki sposób, aby nie powtórzyła się znana historyjka z huśtawką (gdzie huśtawka spełnia wszystkie wymagania, ale nie da się na niej huśtać).

A więc analityk systemowy nie tylko musi zebrać wymagania i przetłumaczyć je na język bardziej strawny przez informatyków, ale również dopilnować, aby jego intencje zostały zrealizowane we właściwy sposób przez zespół informatyczny.

Spójrzmy na sprawę z jeszcze innej perspektywy. Co będzie jeśli wymagania są zebrane, system w połowie zaimplementowany, a rząd wprowadzi nową ustawę, która całkowicie wywróci projekt do góry nogami? Albo co będzie jak sprawdzi się powszechna opinia, że użytkownicy biznesowi sami nie wiedzą czego chcą dopóki czegoś nie zobaczą? Kto wtedy będzie odpowiedzialny za wyprostowanie sprawy?

Kto powinien być analitykiem systemowym?

Najlepiej jakby była to osoba z doświadczeniem. Wynika to z tego, że rzadko uczy się na uczelniach analizy systemowej. Na informatyce jest to elementem inżynierii oprogramowania i uczą tego zwykle informatycy. Z kolei na uczelniach dziedzinowych gorzej jest z nauczaniem elementów „twardej” wiedzy informatycznej (oczywiście pewnie znajda się wyjątki). A tymczasem analityk powinien być dość zaawansowany technicznie, aby wiedział co się da zrobić, a czego nie. Z drugiej strony powinien umieć słuchać i nie bać się pytać, gdy czegoś nie rozumie. Parafrazując znaną maksymę „analityk ma dwoje uszu, a tylko jedne usta po to, aby dwa razy więcej słuchać niż mówić”. Jednak mówić powinien, szczególnie wypytać o wszystko czego nie rozumie, więc nieśmiałość i poczucie wstydu z byle powodu odpada.

Dodatkowo bardzo przydatne jest, jeśli analityk zna się na dziedzinie, której problemy analizuje. Analityk będzie dużo rozmawiał z biznesem i jeśli będzie ciągle zadawał pytania w stylu „co to jest prolongata” doprowadzi do irytacji swoich rozmówców. Ale i tak lepsze to niż udawać, że się wszystko rozumie.

Rola i odpowiedzialność w projekcie

Z grubsza rzecz biorąc, rolą analityka systemowego w projekcie jest zbieranie i zarządzanie wymaganiami. Aby tego dokonać analityk musi zadbać o to, aby znane mu były przynajmniej te procesy biznesowe, które mają jakąś interakcję z budowanym systemem.

Po zrozumieniu niezbędnych procesów biznesowych, analityk systemowy zajmuje się wydobywaniem wymagań na system. Musi zatem zlokalizować miejsca styku procesów biznesowych z systemem i opisać to, jak w poszczególnych procesach biznesowych wykorzystywany będzie system i kto z niego będzie w tych miejscach korzystał. Do opisywania tej części rzeczywistości, analityk na szczęście ma stosowne narzędzia, a na ich czele stoi UML (ang. Unified Modeling Language).

W następnym etapie, analityk musi opisać jak dana interakcja z systemem (przypadek użycia) będzie obsługiwana przez system.

Warsztat łącznika dwóch światów

Procesy biznesowe – niby nie jest niezbędne ich rozumienie, zawsze można skupić się na wymaganiach funkcjonalnych i zapomnieć o zrozumieniu merytoryki procesów biznesowych. Jednak użytkownicy, którzy opowiadają o swoich wymaganiach zwykli o czymś zapominać. Ponieważ lepiej żeby sobie przypomnieli już na samym początku, podczas rozmów o tym jak pracują i próby zrozumienia procesów biznesowych, można ograniczyć przeoczenia, czy niedociągnięcia. Trzeba też pamiętać, że ludzie biznesu nie robią tego złośliwie, raczej niektóre rzeczy wydają się tak oczywiste, że „nie warto o nich wspominać”. Do modelowania procesów biznesowych można wykorzystać diagramy aktywności w UML. Są też bardziej dedykowane notacje, jak BPMN (ang. Business Process Modeling Notation).

Funkcjonalność systemu – do modelowania funkcjonalności używa się zwykle diagramu przypadków użycia (ang. Use Case Diagram). Są na nim dwa główne artefakty. Pierwszy z nich – Aktor – obrazuje osobę lub urządzenie korzystające z systemu. Drugi artefakt, to Przypadek użycia (ang. Use Case) odzwierciedla on funkcję systemu, którą wykorzystuje Aktor. Należy zaznaczyć, że aktor jest zawsze na zewnątrz Systemu, a Przypadek użycia obrazuje to, co się dzieje wewnątrz.

Realizacja funkcji systemu – aby dowiedzieć się jak działa dana funkcja systemu niezbędny jest opis danego przypadku użycia. Służą do tego scenariusze. Można je opisywać za pomocą języka naturalnego, lub skorzystać z części UML jaką są diagramy aktywności.

Narzędzi informatycznych wspierających opisywanie systemów za pomocą języka UML jest mnóstwo. Niektóre próbują nawet (z lepszym lub gorszym skutkiem) z takiego opisu generować gotowy kod systemu lub przynajmniej szkielet kodu, który później programista może uzupełnić.

Ciekawa nisza

Z punktu widzenia planowania kariery zawodowej, niewątpliwie warto rozważyć karierę analityka systemowego. Jeśli już przepracujemy przed ekranem monitora wiele godzin i przejdzie nam ochota na poznawanie kolejnego rewolucyjnego języka programowania warto rozważyć pracę bliżej biznesu. Dzięki temu można poznać wielu ciekawych ludzi, a charakter tej pracy da nam również możliwość poznania wielu dziedzin biznesowych, bo przygotowując wymagania na system informatyczny można naprawdę dużo dowiedzieć się o tym jak działają nawet najbardziej złożone organizacje.

Jeśli więc lubisz technologię i nie chcesz się z nią całkowicie rozstawać, a jednocześnie chciałbyś poszerzać swoje horyzonty, polecam zajęcie analityka systemowego. Może się okazać, że z czasem zagniesz swoją wiedzą o bankowości niejednego bankowca, a o księgowości niejednego księgowego.

Tags: , , , , ,
Posted in Analiza systemowa, Biznes, Informatyka | 21 komentarzy »