Kurs UML – wstęp

Matthew @ 2010-06-19 — Kategorie: Inżynieria oprogramowania, Techblog, UML

Z okazji dostania się na profil dyplomowany o wdzięcznej nazwie Inżynieria Oprogramowania (i dwa przedmioty z baz danych) postanowiłem, że rozpocznę kolejny cykl kursów które piszę (po Qt, epizodzie z gitem (do którego może wrócę) który przeszedł w tłumaczenie Pro Gita oraz jednym odcinku Boosta (niech ja tylko znajdę na niego odrobinę motywacji). Tym razem będzie to UML (a za jakiś czas może i wzorce projektowe). Mam nadzieję, że nie zawiodę i komuś się to przyda. Sukcesem będzie, jeżeli studenci 3 roku na ETI uznają go za wystarczający (lub lepszy) od wykładów (na które nie chodziłem ;() z Inżynierii Oprogramowania (przedmiocie na 3 roku, nie profilu) i pozwoli on komuś zaliczyć egzamin z tego. Na początku zrobię wstęp o UMLu, rodzajach diagramów, narzędzi, które można wykorzystać do ich tworzenia. Praktyczne umiejętności będą w części 1.

Więc czym jest UML? Jest to Zunifikowany Język Modelowania (Unified Modeling Language), który jak sama nazwa wskazuje, służy do modelowania. I wbrew temu co mogłoby się wydawać, nie tylko modelowania programów. Jeżeli ktoś chce, można go z powodzeniem wykorzystać do modelowania struktur organizacji firm czy procesów biznesowych (aczkolwiek nigdy tego nie robiłem, więc jeżeli ktoś miałby z tym jakiś problem, to musi poszukać pomocy u kogoś innego). Ja się jednak skupię na pokazaniu UMLa z punktu widzenia programisty.

Kto stworzył UML? Byli to panowie Grady Booch, Ivar Jacobson i James Rumbaugh. Każdy z nich, na początku, miał własną metodę modelowania. Jednak w końcu postanowili połączyć siły i tak powstał UML. W tej chwili, jego rozwoje, zajmuje się grupa OMG (Object Management Group), która zajmuje się również rozwijaniem CORBAy, Od roki 2009 mamy do dyspozycji wersję 2.2 standardu UML.

Diagramy UML? Mamy kilka rodzajów diagramów w UMLu.  Dwie główne grupy to diagramy struktur oraz zachowań. Pierwsze pokazują nam jak coś ma być zbudowane, drugie, jak ma się zachowywać. W ramach diagramów struktur wyróżniamy:

  • diagramy klas i obiektów,
  • pakietów
  • struktur złożonych,
  • komponentów,
  • wdrożeń,
  • profili

W przypadku diagramów zachowań mamy:

  • diagramy aktywności,
  • przypadków użycia,
  • stanów (maszyny stanów) ,
  • interakcji

Przeważnie nie używa się ich wszystkich w ramach jednego projektu, aczkolwiek, w miarę możliwości, postaram się przedstawić je wszystkie.

Specyfikacja? Na specyfikację UMLa składają się: Diagram Interchange Specification, UML Infrastructure, UML Superstructure oraz Objecy Constraint Language. Pierwszy dokument dotyczy sposoby współdzielenia modeli UML przez różne narzędzia. Drugi opisuje metamodel stosowany do tworzenia reszty UMLa, który to jest zawarty w trzecim dokumencie (jak komuś brakuje lektury do poduszki to polecam – ponad 600 stron). Zaś OCL służy do pisania ograniczeń i wyrażeń dla elementów modelu. Dodatkowo UML jest bardzo elastyczny, a co za tym idzie, wiele z jego elementów jest opcjonalnych. Pozwala również na dorzucanie własnych rozszerzeń.

A co z narzędziami? UML został tak zaprojektowany, aby tworzenie diagramów odbywało się w łatwy sposób, również bez użycia komputera. Jednak dla tych, którzy nie wyobrażają sobie innego sposobu pracy, krótki spis przydatnych narzędzi CASE (Computer Aided Software Engineering – Komputerowe Wspomaganie Inżynierii Oprogramowania):

  • Enterprise Architect – moim zdaniem jedno z lepszych, jeżeli nie najlepszy program do tworzenia diagramów UML. I do tego w miarę tani (studenci są jednak proszeni o niespoglądanie na cenę)
  • Visual Paradigm for UML – również komercyjne rzędzie. Droższe od EA, jednak posiada darmową wersję. Wszelkie diagramy, które będą się pojawiały w następnych wersjach kursu będą właśnie pochodziły z tego programu (chyba, że ktoś do tego czasu ufunduje mi EA ;))
  • StarUML – jedno z Open Source’owych narzędzi, jednak chyba już nie rozwijane
  • Umbrello – kolejny przykład wolnego narzędzia CASE. Przykład tego, jak takie narzędzie nie powinno wyglądać.

Lista innych narzędzi znajduje się na Wikipedii.

Jakiś przykład? W tym momencie mam pytanie do osób, którym udało się przebrnąć przez ten wpis i nie chcieli, z rozpaczy, wydłubać sobie oczu tępym nożem. Na jakim przypadku chcielibyście, aby opierały się kolejne części kursu? Myślałem, żeby wziąć fooaudio, ale jeżeli będziecie chcieli, żeby w przykładach modelowania, był jakiś inny projekt, to zmienię mój wcześniejszy wybór.

PS. Żaden z moim projektów, kursów, tłumaczeń nie umarł czy został porzucony. Co najwyżej sobie smacznie kimają. Muszę tylko odpocząć po roku akademickim i mieć więcej czasu na ich prowadzenie. Dla niecierpliwych: wersja 0.2 fooaudio zostanie wydana 11 sierpnia 2010 roku.

Komentarze:

pierdol UMLa, dzisiaj extreme programming i „najpierw kodujemy, potem myślimy” są w modzie.

@bigfun: o metodykach lekki ciężko się robi wpisy, szczególnie nie pracując w tych metodykach. :P

@bigfun: a potem szybko uciekajmy, zanim nas rozliczą za wygenerowane koszty ;D

@alan: trzeba było od razu powiedzieć, że tego Cie nauczyli na KIO, to bym wziął inny profil. ;P

Myślę, że jednym z fajniejszych narzędzi do UML, z którymi się sarłem, może być MS Visio i jak wspomniałeś Enterprise Architect. Oraz szczególnie odradzę DIA! :P

„Na jakim przypadku chcielibyście, aby opierały się kolejne części kursu?”
Moze na przykladzie jakiejs aplikacji internetowej?

@Raven: ciężko, nie siedzę w tym, więc nawet zamodelowanie podstawowego działania by było po prostu trudne dla mnie.

to jest koszmar, taka sztuka dla sztuki :>

Dodaj komentarz:

 

Subscribe without commenting