Projektowanie systemów informatycznych
Transkrypt
Projektowanie systemów informatycznych
Projektowanie systemów informatycznych Tytuł kursu: projektowanie systemów informatycznych Cel kursu: Celem wykładu jest zapoznanie studentów z najważniejszymi aspektami projektowania systemów informatycznych a w szczególności realizacją diagramów UML w perspektywie implementacyjnej. Planowany zakres wykładu Wykład 1: Wprowadzenie do projektowania systemów informatycznych. Wykład 2: Diagramy klas UML w perspektywie implementacyjnej. Wykład 3: Diagramy sekwencji, pakietów, stanu i wdrożenia. Wykład 4. Projektowanie interfejsu użytkownika cz. 1 Wykład 5. Projektowanie interfejsu użytkownika cz. 2 Projektowanie systemów informatycznych, wykład 1 1 Niniejszy kurs będzie poruszał zagadnienia dotyczące projektowania systemów informatycznych. Ponieważ dziedzina jest bardzo obszerna a rozmiar kursu dość ograniczony więc zdecydowałem się na prezentację najważniejszych aspektów oraz najczęściej wykorzystywanych technik w projektowaniu systemów informatycznych. Przy czym w dalszej części kursu zamiast używać długiego określenia: projektowanie systemów informatycznych będę pisał krótko projektowanie. Niniejszy kurs nie należy traktować jako kompendium wiedzy z dziedziny projektowania. Jest on jedynie wstępem do obszernej wiedzy na temat której napisano wiele książek. Dopiero przestudiowanie literatury podanej na slajdzie 3 daje w miarę pełny obraz dziedziny. Biorąc pod uwagę powyższe zdecydowałem się podzielić kurs na dwie główne części: Pierwsza część będzie dotyczyła wprowadzenia do projektowania systemów informatycznych ze szczególnym uwzględnieniem roli UML i metod obiektowych. Myślę, że to wprowadzenie zaprezentuję w trzech jednostkach wykładowych. Druga część będzie dotyczyła projektowania interfejsu użytkownika, innych aspektów nie związanych z dziedziną problemu. Niniejszy kurs zwłaszcza w pierwszej części będzie pewną kontynuacją kursu z poprzedniego semestru, który dotyczył modelowania systemów informatycznych, gdyż projektowanie traktowane jest jako kolejny etap budowy systemu informatycznego po modelowaniu. Stąd wyniki modelowania stanowią dane wejściowe dla projektowania. Zakładam, że student realizujący niniejszy kurs zna podstawy inżynierii oprogramowania. Stąd, w celu przypomnienia, proponuję przed rozpoczęciem studiowania dalszej części tego kursu przeczytać wykład 1 kursu z modelowania systemów informatycznych realizowanego na poprzednim semestrze. 1 Zasady zaliczenia kursu W materiałach wykładowych przewidziano dwa zadania do rozwiązania. Końcowa ocena jest średnią Państwa ocen za poszczególne zadania. Końcowa ocena wyliczana jest według następujących zasad zamieszczonych w tabeli poniżej: Zakres średniej (2 2.75> (2.72 3.25> (3.25 3.75> (3.75 4.25> (4.25 4.75> (4.75 5> Ocena 2 3 3.5 4 4.5 5 Dodatkowo na zjeździe, pod koniec semestru, mogę zapytać z dowolnego zadania oddanego przez studenta aby sprawdzić czy zadanie zostało wykonane samodzielnie. Projektowanie systemów informatycznych, wykład 1 2 W przypadku gdy student otrzymał ocenę końcową 2 istnieje możliwość jej poprawienia poprzez oddanie zadań na zjeździe w siedzibie WSInf, przy czym student może otrzymać wtedy maksymalną ocenę końcową równą 3. 2 Cel i zakres pierwszego wykładu Wykład 1: Wprowadzenie do projektowania systemów informatycznych Cel Prezentacja celów i zakresu projektowania systemów informatycznych. Zakres 1) Literatura przedmiotu 2) Etapy projektowania systemów informatycznych 3) Czynności realizowane na etapie projektowania 4) Perspektywy języka UML 5) Diagramy UML tworzone na etapie projektowania Projektowanie systemów informatycznych, wykład 1 3 3 Literatura przedmiotu Literatura: 1. Sommerville I.: Inżynieria oprogramowania, WNT 2. Fowler M.: UML w kropelce, LTP Warszawa 2005 3. Yourdon E., Argila C.: Analiza obiektowa i projektowanie, WNT, 2000 4. Jaszkiewicz A.: Inżynieria oprogramowania, Helion, 1997 5. Gamma E., Helm R., Johnson R., Vlissides J.: Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku, WNT, 2005 6. J. Cooper.: Java. Wzorce projektowe, Helion, 2001 7. A. Shalloway, J. R. Trott.: Programowanie zorientowane obiektowo. Wzorce projektowe. Wydanie II, Helion, 2005 8. http://wazniak.mimuw.edu.pl/ Projektowanie systemów informatycznych, wykład 1 4 Polecam szczególnie wykłady na stronie [8]. Uważam, że każdy student a w szczególności studenci e-studiów powinien zaglądać na tę stronę, gdzie można znaleźć bardzo profesjonalnie przegotowane wykłady z informatyki. Polecam szczególnie wykład nr. 18 inżynieria oprogramowania, jednostka wykładowa: zasady skutecznego działania. Polecam również „biblię” inżynierii oprogramowania [1] gdzie znajdą Państwo rzetelne napisane, zrozumiałym językiem, bardzo bogate kompendium wiedzy z inżynierii oprogramowania. Jako pierwszą książkę dotyczącą UML polecam [2]. Książka ta łagodnie wprowadza do użytkowania tego języka. Ponadto zawiera bardzo cenne uwagi dotyczące literatury inżynierii oprogramowania. Uwagi te można traktować jako przewodnik po studiowaniu tej obszernej dziedziny nauki. Polecam również szczególnie „biblię” wzorców projektowych [6] autorstwa „bandy czworga” – twórców koncepcji wzorców projektowych. Do powyższej literatury będę odwoływał się w treści niniejszego kursu. 4 Etap projektowania Celem projektowania jest opracowanie szczegółowego opisu implementacji systemu, który po modyfikacjach na etapie implementacji systemu staje się również głównym elementem dokumentacji technicznej. Określenie wymagań Faza strategiczna Projektowanie Implementacja Analiza Testowanie Konserwacja Instalacja Dokumentacja W odróżnieniu od etapu analizy, projektowanie przeprowadzane jest w kontekście środowiska implementacji oraz środowiska pracy systemu. Projektanci muszą więc posiadać dobrą znajomość języków, bibliotek, i narzędzi stosowanych w trakcie implementacji oraz systemu operacyjnego i platformy sprzętowej na jakiej będzie działał system. Projektowanie systemów informatycznych, wykład 1 5 Jak podano w [3] odkąd opracowano pierwsze metodyki kaskadowe, inżynierowie oprogramowania rozróżniali modelowanie (analizę) i projektowanie. Analiza zajmuje się tym, co system musi robić, a projektowanie tym, jak te wymagania będą zrealizowane. Przeprowadzając analizę, zwykle przyjmujemy założenie, że dostępny jest „doskonały" sposób realizacji. Podczas projektowania zakładamy zazwyczaj świadomie lub nieświadomie, że dany system będzie realizowany na platformie sprzętowej x, w systemie operacyjnym y i w języku programowania z. Zasadniczą sprawą jest traktowanie projektowania i analizy jako odrębnych czynności. Mogą się one nakładać; oczywiście w typowym projekcie mogą być wykonywane jednocześnie. Ciągle jednak istnieje zasadnicza różnica między „co" i ,jak", rozpoznawana przez większość inżynierów oprogramowania. Niepostrzeżenie tej różnicy stwarza niebezpieczeństwo, że analityk lub użytkownik włączy do zestawu wymagań zbyt wiele założeń i ograniczeń dotyczących sposobu realizacji. Projektowanie systemów informatycznych jest konieczne ponieważ model budowany w fazie analizy abstrahuje od szczegółów środowiska implementacji, jest on zbyt ogólny, aby być bezpośrednią podstawą implementacji. Projektowanie wymaga więc uszczegółowienia wyników analizy. Rysunek zaprezentowany na slajdzie pokazuje umiejscowienie etapu projektowania w cyklu życia systemu. Rysunek ten sugeruje, że projektowanie, szczególnie na jego wczesnych etapach może być realizowane równolegle z analizą. Ponadto rysunek pokazuje, że projektowanie ma znaczący wkład do dokumentacji. Jednak pragnę podkreślić fakt, że większość metodologii tworzenia systemów informatycznych traktuje analizę i projektowanie jako dwa oddzielne etapy. 5 Podstawowe założenia inżynierii oprogramowania ¾ Struktura oprogramowania odzwierciedla model stworzony na etapie modelowania. ¾ Zachowanie przez system naturalnej struktury dziedziny problemu. ¾ Niewielkie zmiany w dziedzinie problemu powinny prowadzić do niewielkich, tanich zmian w oprogramowaniu. ¾ Projekt powinien być wynikiem transformacji konstrukcji występujących w modelu do odpowiadających im konstrukcji środowiska implementacji. ¾ Wykorzystanie idei programowania strukturalnego i obiektowego. Projektowanie systemów informatycznych, wykład 1 6 Jednym z podstawowych założeń inżynierii oprogramowania jest dążenie do tego, aby struktura tworzonego oprogramowania jak najbardziej zachowywała ogólną strukturę modelu stworzonego w poprzedniej fazie. Celem jest uzyskanie systemu, którego struktura odzwierciedlałaby naturalne zależności w danej dziedzinie problemu. Współczesne metody inżynierii oprogramowania są więc rozwinięciem znanej już od lat sześćdziesiątych idei programowania strukturalnego. Zachowanie przez system naturalnej struktury dziedziny problemu ma przede wszystkim podnieść jego zrozumiałość oraz ułatwić modyfikowanie systemu. Niewielkie zmiany w dziedzinie problemu powinny prowadzić do niewielkich zmian w oprogramowaniu. Ich wprowadzenie nie powinno być więc zbyt kosztowne i długotrwałe. Niekorzystna jest sytuacja, w której klient żądający niewielkiej jego zdaniem zmiany, dowiaduje się, że będzie ona wymagała istotnych zmian w systemie, podważa to bowiem zaufanie klienta do producenta oprogramowania. Z drugiej strony klient łatwiej zaakceptuje konieczność dokonania istotnych zmian w systemie, jeżeli żądana przez niego modyfikacja jest poważna również z jego punktu widzenia. 6 Czynności realizowane na etapie projektowania 1. Uszczegółowienie modelu składowej dziedziny problemu 2. Projektowanie elementów systemu nie związanych z dziedziną problemu 1. 2. 3. 4. 5. Interfejs użytkownika Zarządzanie danymi Zarządzanie pamięcią Zarządzanie zadaniami Optymalizacja systemu 3. Dostosowanie do ograniczeń i możliwości systemu 4. Określenie fizycznej struktury systemu Projektowanie systemów informatycznych, wykład 1 7 Oprogramowanie składa się z kilku składowych. Jedną z nich jest składowa dziedziny problemu odpowiedzialna za wykonywanie podstawowych funkcji systemu oraz przechowywanie podstawowych dla systemu danych. Jest to składowa, która powstaje poprzez uszczegółowienie modelu zbudowanego w fazie analizy. Uszczegółowienie wyników analizy polega między innymi na wyborze sposobu implementacji pewnych konstrukcji pojawiających się w modelu, które mogą być zrealizowane na jeden z kilku sposobów. Firma programistyczna może jednak przyjąć pewne standardy, które jednoznacznie definiują sposób implementacji tego typu konstrukcji. Pozwala to w istotnym stopniu zredukować nakład pracy w fazie projektowania. W fazie projektowania należy opracować także inne składowe oprogramowania, tj.: składową kontaktu z użytkownikiem odpowiedzialną za współpracę systemu z użytkownikiem (użytkownikami), składową zarządzania danymi odpowiedzialną za przechowywanie oraz dostęp do trwałych danych, składową zarządzania pamięcią oraz składową zarządzania zadaniami. W fazie analizy pewne funkcje i struktury danych mogą zostać zamodelowane w sposób mało efektywny. W fazie projektowania dokonywana jest więc również optymalizacja systemu. Środowisko implementacji może zarówno narzucać pewne ograniczenia, to jest nie pozwalać na bezpośrednie zaimplementowanie pewnych konstrukcji pojawiających się w modelu, jak i oferować dodatkowe możliwości ułatwiające implementację. Projektowanie polega więc także na dostosowaniu systemu do ograniczeń i możliwości środowiska implementacji. 7 Różne podejścia do projektowania ¾ Metody strukturalne – wykorzystanie różnych pojęć oraz notacji graficznych na etapie analizy oraz projektowania. ¾ Metody obiektowe – w fazie analizy, projektowania i implementacji wykorzystuje się te same pojęcia i notacje graficzne. Projektowanie systemów informatycznych, wykład 1 8 W przypadku metod strukturalnych w fazie projektowania i implementacji wykorzystywane są wyraźnie odmienne pojęcia niż te stosowane w fazie modelowania. W związku z tym w metodach tych pojawiają się także notacje graficzne odmienne od stosowanych w fazie modelowania. W przypadku metod obiektowych w fazach modelowania, projektowania i implementacji wykorzystywane są te same pojęcia. We wszystkich fazach operuje się pojęciami klas, pól i metod. W związku z tym w projektowaniu obiektowym wykorzystywane są w zasadzie te same notacje graficzne co w fazie analizy; choć pojawiają się w nich pewne rozszerzenia stosowane tylko w fazie projektowania. Ponieważ metody obiektowe wypierają metody strukturalne, które coraz rzadziej są wykorzystywane to zdecydowałem, że nie będę prezentował na tym kursie metod strukturalnych. Ponadto projektowanie strukturalne wymagałoby dodatkowo wyjaśnienia podstaw modelowania strukturalnego, co przekracza zakres niniejszego kursu a wcześniejszy kurs dotyczący modelowania nie prezentował metod strukturalnych. 8 UML a projektowanie systemów Trzy perspektywy UML Perspektywa pojęciowa – Reprezentuje diagramy reprezentujące koncepcje na poziomie studiowania dziedziny problemu. Nie zawiera żadnych pojęć specyficznych dla implementacji oprogramowania. Realizacja niniejszej perspektywy ma prowadzić do odpowiedzi na pytanie „Co jest problemem” lub inaczej co powinien realizować system. Perspektywa specyfikacyjna (interfejsu) – używa diagramów perspektywy pojęciowej rozbudowując je o elementy wskazujące jak rozwiązać problem na poziomie niezależnym od platformy implementacyjnej. Obejmuje specyfikację elementów, komponentów i interfejsów programu. Perspektywa implementacyjna – rozwinięcie diagramów specyfikacyjnej dla konkretnej platformy programistycznej Projektowanie systemów informatycznych, wykład 1 perspektywy 9 Otwarty format UML (ang. Unified Modeling Language, czyli Ujednolicony Język Modelowania), to język formalny służący do opisu świata obiektów w modelowaniu obiektowym, projektowaniu obiektowym i programowaniu obiektowym. Służy do modelowania dziedziny problemu (opisywania-modelowania fragmentu istniejącej rzeczywistości na przykład modelowanie tego, czym zajmuje się jakiś dział w firmie) ─ w przypadku stosowania go do analizy, oraz do modelowania rzeczywistości, która ma dopiero powstać - tworzy się w nim głównie modele systemów informatycznych. UML jest głównie używany wraz z jego reprezentacją graficzną ─ jego elementom przypisane są symbole, które wiązane są ze sobą na diagramach. Podstawy UML były prezentowane na wykładzie „Modelowanie Systemów Informatycznych” w poprzednim semestrze. Znacząca część niniejszego kursu dotyczy wykorzystania UML w projektowaniu systemów. Jak podano w [2], przy rozpatrywaniu graficznych języków modelowania, zwykle myśli się o nich w kontekście procesu kaskadowego. W procesie kaskadowym zazwyczaj tworzy się dokumenty, które służą do przekazywania prac miedzy fazami projektowania i kodowania. Modele graficzne mogą stanowić większą część tych dokumentacji. Niezależnie od tego czy stosujemy model kaskadowy czy nie i tak wykonujemy czynności modelowania, projektowania, kodowania i testowania. Można np. uruchomić projekt iteracyjny z 1-tygodniowymi iteracjami, z których każda jest małym procesem kaskadowym. Ponieważ UML może być wykorzystany zarówno na etapie modelowania czy projektowania wyróżnia się trzy perspektywy odpowiadające etapom tworzenia systemów informatycznych. Każda z perspektyw odpowiada innemu spojrzeniu na system odpowiadającemu aktualnemu etapowi realizacji. Zrozumienie pojęcia perspektyw jest kluczowe dla poprawnego rysowania i czytania diagramów UML. Diagram UML powinien być przygotowywany z punktu widzenia jednej perspektywy. Kiedy diagram UML jest czytany, czytelnik powinien wiedzieć w jakiej perspektywie diagram został przygotowany. Ta wiedza jest nieodzowna aby zinterpretować diagram poprawnie. Niestety granice pomiędzy perspektywami nie są ostre. Najbardziej zatarto granice pomiędzy perspektywą specyfikacyjną a implementacyjną przygotowując najczęściej po diagramach pojęciowych od razu diagramy implementacyjne. Stąd pierwsze zadanie Państwa będzie polegało na modyfikacji diagramów perspektywy pojęciowej na diagramy perspektywy implementacyjnej oraz zbudowanie diagramów specyficznych dla perspektywy interfejsu i perspektywy implementacyjnej. Zadania te pojawią się po umieszczeniu wykładu 2 i 3. 9 Perspektywa pojęciowa a implementacyjna Poniższy rysunek pokazuje dwie perspektywy tego samego fragmentu diagramu UML. Na rysunku widać podstawowe różnice pomiędzy perspektywą pojęciową a implementacyjną. Źródło: http://www.informit.com/articles/article.aspx?p=360440&seqNum=6&rl=1 Dice Dice Projektowanie systemów informatycznych, wykład 1 10 Na następnym wykładzie różnice między perspektywą pojęciową a implementacyjną diagramów klas i obiektów zostaną zaprezentowane dokładniej. 10 Diagramy UML na etapie projektowania Zwykle na etapie projektowania tworzone są następujące diagramy w perspektywie implementacyjnej: ¾ Diagramy klas z perspektywy oprogramowania — przedstawiają klasy programu i relacje zachodzące między nimi. ¾ Diagramy sekwencji dla częstych scenariuszy — wartościowym podejściem jest wybranie najważniejszych i najbardziej interesujących scenariuszy spośród przypadków użycia systemu i użycie kart CRC lub diagramów sekwencji do określenia, co się w trakcie tych scenariuszy dzieje w programie. ¾ Diagramy pakietów, które ukazują w ogólnym świetle sposób organizacji oprogramowania. ¾ Diagramy stanów dla klas ze skomplikowanymi cyklami działania. ¾ Diagramy wdrożenia pokazujące fizyczny układ oprogramowania. Projektowanie systemów informatycznych, wykład 1 11 11