• Nie Znaleziono Wyników

Proces tworzenia projektu systemu informatycznego

N/A
N/A
Protected

Academic year: 2021

Share "Proces tworzenia projektu systemu informatycznego"

Copied!
35
0
0

Pełen tekst

(1)

Proces tworzenia projektu

systemu informatycznego

(2)

Zagadnienia

Proces projektowania systemu

Metody tworzenia projektu

Strategie projektowania

Podejście obiektowe

Dekompozycja funkcjonalna

Cechy jakościowe projektu systemu

(3)

Projektowanie – co to jest?

(4)

Projektowanie – co to jest?

„... Proces polegający na zastosowaniu różnorodnych technik oraz wytycznych w celu zdefiniowania

systemu na takim poziomie szczegółowości aby możliwa była jego fizyczna realizacja ...”

Jako przykład...

Architekci (nie inżynierowie) budowlani odpowiadają za ogólny kształt budynku

Architektura i inżynieria uzupełniają się wzajemnie

Inżynier odgrywa kluczową rolę w procesie budowania domu; ale kierunek prac pochodzi od architekta

Jeśli chcemy zaprojektować dom radzimy się architekta a

nie inżyniera

(5)

Etapy tworzenia projektu

Zrozumienie problemu

Konieczne jest rozpatrzenie wielu różnych punktów widzenia aby zidentyfikować wymagania projektu

Identyfikacja możliwych rozwiązań

Ewaluacja zidentyfikowanych rozwiązań oraz wybór

najodpowiedniejszego; to ostatnie jest wynikiem doświadczenia projektanta oraz dostępnych zasobów

Opis rozwiązania

Opis komponentów projektu za pomocą jednej bądź wielu notacji:

graficznej, formalnej, ...

Proces ten powtarza się dla każdego zidentyfikowanego komponentu

Aż będzie możliwe stworzenie szczegółowej specyfikacji każdego komponentu

(6)

Proces projektowania

Każdy projekt można modelować za pomocą

skierowanego grafu – wierzchołkami są powiązane relacjami komponenty z atrybutami

System powinien posiadać opis na kilku różnych poziomach abstrakcji

Zwykle projektowanie odbywa się w postaci

częściowo pokrywających się faz (iteracji). Wynikiem

kolejnych faz są coraz bardziej szczegółowe opisy

systemu.

(7)

Proces formalizacji projektu

Koñcowa postaæ projeku Nieformalny

szkic projektu

Nieformalny projekt

Sformalizowany projekt

(8)

Fazy projektowania

Projekt architektury Identyfikacja podsystemów

Abstrakcyjna specyfikacja Specyfikacja podsystemów

Projekt interfejsów Opis interfejsów podsystemów

Projekt komponentów Podział podsystemów na komponenty

Projekt struktur danych Projekt struktur danych przechowujących informacje

Projekt algorytmów Dla poszczególnych funkcji

systemu

(9)

Produkty poszczególnych faz

Specyfikacja algorytmów Projekt algorytmów

Specyfkacja struktur danych

Projekt struktur danych

Specyfikacja komponentów Projekt komponentów

Specyfikacja interfejsów Projekt interfejsów

Specyfikacja systemu Abstrakcyjna specyfikacja

Architektura systemu Projekt architektury

Produkt wyjściowy

Faza

(10)

Hierarchiczna struktura projektu

System level

Sub-system level

(C) 1995 Ian Somerville

(11)

Projektowanie metodą top-down

W założeniu projektowanie rozpoczyna się od

najwyższych komponentów w hierarchii i podąża w

“dół” kolejnymi poziomami

W praktyce duże systemy nigdy nie są projektowane ściśle za pomocą metody top-down

Projektanci wykorzystują wielokrotnie doświadczenie jak i komponenty w trakcie procesu projektowania

W podejściu obiektowym często gotowe obiekty stanowią szkielet w oparciu o który powstaje projekt systemu. Nie występuje tu pojęcie pojedynczego „wierzchołka” od

którego zaczyna się projekt

(12)

Metodyki projektowania

Metodyka projektowa

To zestaw technik, notacji, strategii oraz modeli

wspierających proces modelowania (odwzorowania świata rzeczywistego na model software’owy)

Określa systematyczny sposób „wywodzenia” projektu z danych wymagań

Metodyki można dzielić używając

Ogólnej klasyfikacji (strukturalna, OO, oparta o diagram stanów) określającej

podstawową zawartość dokumentów projektowych i wymagań

Podziału na specyficzne metodyki/notacje (OMT, Booch, Coad-Yourdon) określającego

poszczególne, wykorzystywane formy reprezentacji

(13)

Metodyki projektowania

Metodyki strukturalne to zestawy notacji służące do opisu projektu jak i wytyczne dot. tworzenia projektu

Przykład: Structured Design (Yourdon)

Są stosowane z powodzeniem ponieważ opierają się o standardową notację i wymuszają zgodność

projektu z określonym standardem

Wspierane przez narzędzia CASE

Często oferują one możliwość generacji kodu na podstawie

projektu

(14)

Metodyki komponentowe

Różne metodyki/notacje obrazują dany system z różnych perspektyw

Diagramy przepływu danych (data flow diagrams) demonstrują operacje na danych

Diagramy entity-relation opisują logiczne struktury danych

Diagramy strukturalne opisują komponenty systemu

oraz ich wzajemne interakcje

(15)

Niedoskonałości metodyk

Są to raczej ogólne wytyczne, nie ścisłe metody postępowania. Różni projektanci stworzą zupełnie różne projekty w oparciu o tą samą specyfikację i metodykę

W początkowej (twórczej) fazie projektu nie są zbyt pomocne. Oferują za to pomoc w strukturyzowaniu i dokumentowaniu projektu

file:///D:/Utils/ClipAr ts/INFLAT~1.JPG

file:///D:/Utils/ClipArts/PRESEN

~1.JPG

Wiedza, doświadczenie

(16)

Sposoby opisu projektu

Notacje graficzne. Wykorzystywane do prezentacji zależności pomiędzy komponentami

Języki opisu programu. (ang. Program Description Languages) Rodzaj pseudokodu na tyle elastycznego aby móc wyrażać w nim abstrakcyjne idee

Nieformalny tekst. Opis w języku naturalnym

Przy projektowaniu dużych i złożonych systemów

mogą być wykorzystywane wszystkie te notacje

(17)

Strategie projektowania

Podejście funkcjonalne

Projekt systemu powstaje w oparciu o

funkcjonalny punkt widzenia. Stan systemu jest scentralizowany i współdzielony przez wszystkie funkcje operujące w danym stanie

Podejście obiektowe

System jest prezentowany jako zbiór

oddziaływujących ze sobą obiektów. Stan systemu jest zdecentralizowany, każdy obiekt zarządza

swoim własnym stanem. Obiekty są to instancje

odpowiednich klas, komunikacja odbywa się

(18)

Przykład: kompilator, podejście funkcjonalne

Analyse Build

symbol table Scan

source

Generate code

Symbol table

Output errors Source

program Tokens Tokens Syntax

tree

Object code

Error indicator Symbols Symbols

Error messages

(19)

Source program

Token stream

Symbol table

Syntax

tree Gr ammar Err or

messages

Abstract code

Object code

Scan Add

Check

Get

Build Print

Generate

Przykład: kompilator, podejście

obiektowe

(20)

Strategia mieszana

Pomimo pojawiających się co jakiś czas sugestii że dane podejście projektowe jest najlepsze w praktyce oba podejścia: funkcjonalne i obiektowe uzupełniają się wzajemnie

Doświadczeni praktycy wybierają najodpowiedniejsze podejście dla każdego z osobna projektowanego

podsystemu

(21)

Jakość projektu

Jakość projektu systemu jest pojęciem względnym - jest wypadkową specyficznych priorytetów dla danej organizacji

Pojęcie dobrego jakościowo projektu może oznaczać projekt systemu najtańszego, najwydajniejszego,

najbardziej niezawodnego, itp.

Omawiane dalej atrybuty jakości dotyczą pielęgnowalności projektu

Projekt powinien dać się “łatwo modyfikować i rozszerzać”

Omawiane atrybuty odnoszą się do projektów

tworzonych za pomocą różnych podejść

(22)

Spójność

Mówi o tym w jakim stopniu dany komponent tworzy logiczną całość

Dany komponent powinien implementować pojedynczą logiczną strukturę bądź funkcję

Spójność jest pożądaną cechą projektu gdyż w przypadku konieczności zmiany danej

funkcjonalności zmiana ta będzie umiejscowiona w jednym miejscu

Identyfikuje się 7 różnych poziomów spójności

(Constantine & Yourdon, 1979)

(23)

Poziomy spójności

Spójność przypadkowa (słaba)

Składowe danego komponentu zebrane razem bez żadnego kryterium

Powiązanie logiczne (słabe)

Składowe wykonujące podobne funkcje (zadania) są zgrupowane razem

Spójność czasowa (słaba)

Komponenty aktywowane w tym samym czasie są zgrupowane razem

Spójność proceduralna (słaba)

Elementy danego komponentu tworzą pojedynczą

(24)

Poziomy spójności (c.d.)

Spójność komunikacyjna (średnia)

Wszystkie składowe komponentu operują na tych samych danych wejściowych bądź produkują te same dane

wyjściowe

Spójność sekwencyjna (średnia)

Dane wyjściowe składowej komponentu są danymi wejściowymi innej składowej

Spójność funkcjonalna (silna)

Do wykonania pojedynczej funkcji potrzebna jest każda ze

składowych komponentu

(25)

Poziomy spójności (c.d.)

W odniesieniu do systemów OO można zdefiniować jeszcze jedną klasę spójności

Spójność obiektowa (silna)

Każda operacja dostarcza funkcjonalność która umożliwa modyfikowanie bądź odczytywanie atrybutów obiektu

W przypadku występowania dziedziczenia spójność obiektu ulega obniżeniu

Nie można postrzegać obiektu klasy jako odrębnej jednostki izolowanej od otoczenia

Do pełnego zrozumienia funkcjonalności danej klasy konieczne jest zapoznanie się z wszystkimi nadklasami

Szczególnie złożone w przypadku występowania

Bazowa

Pochodna 1

Pochodna 2

Spójność

(26)

Miara tego jak mocno połączone są ze sobą poszczególne komponenty systemu

Luźne powiązanie (ang. loose coupling) oznacza że zmiany wprowadzone w danym komponencie nie mają wpływu na pozostałe

Luźne powiązanie można osiągnąć poprzez decentralizację stanu systemu (jak w podejściu OO) oraz zaprojektowanie komunikacji pomiędzy komponentami w postaci

przekazywania komunikatów bądź parametrów

Powiązanie

Zmienne dzielone bądź wymiana informacji

sterujących prowadzi do mocnego powiązania

(ang. tight coupling)

(27)

Mocne powiązanie

(28)

Luźne powiązanie

(29)

Systemy OO są luźno powiązane ze swojej natury ponieważ nie występują stany dzielone oraz obiekty komunikują się między sobą używając mechanizmu przekazywania komunikatów

Z drugiej strony klasa danego obiektu jest ściśle

powiązana ze swoją nadklasą. Zmiany wprowadzone w danej nadklasie propagują się do wszyskich jej

podklas. Tego typu zmiany powinny być szczególnie uważnie weryfikowane!

Powiązanie a dziedziczenie

(30)

Powiązana z innymi cechami projektu

Spójność. Czy komponent może być zrozumiany w izolacji?

Nazewnictwo. Czy używane nazwy są znaczące?

Dokumentacja. Czy projekt jest dobrze udokumentowany?

Złożoność. Czy wykorzystywane są złożone algorytmy?

Bardziej nieformalnie przez złożoność rozumie się wiele powiązań pomiędzy różnymi częściami

projektu. Przez to projekt staje się trudny do zrozumienia

Większość metryk powiązanych z projektami to miary złożoności

Zrozumiałość

(31)

Projekt jest adaptowalny jeśli:

Jego komponenty są luźno ze sobą powiązane

Jest dobrze udokumentowany oraz dokumentacja jest aktualna (!)

Występuje czytelna relacja pomiędzy poziomami projektu o różnym stopniu szczegółowości (czytelność projektu)

Każdy z komponentów jest izolowanym obiektem (spójność)

Przy adaptacji projektu musi istnieć możliwość śledzenia powiązań pomiędzy poszczególnymi komponentami projektu tak aby można było

przeanalizować konsekwencje wprowadzenia danej

Adaptowalność

(32)

Możliwość śledzenia zmian w projekcie (ang. traceability)

P O R

D A

B

F C

D

Poziom interakcji obiektów

Poziom dekompozycji obiektów

(33)

Dziedziczenie znacząco ulepsza adaptowalność projektu. Poszczególne komponenty mogą być

adaptowane poprzez utworzenie podklasy oraz jej modyfikację

W miarę rozrastania się hierarchii klas staje się ona coraz bardziej złożona, w krańcowych przypadkach – nieczytelna oraz duplikująca poszczególne

funkcjonalności.

Taka hierarchia powinna być okresowo przeglądana i restrukturyzowana

Adaptowalność a dziedziczenie

(34)

Projektowanie jest procesem twórczym

Główne aktywności projektowe to: projekt architektury, specyfikacja systemu, projekt

komponentów, projekt struktur danych oraz projekt algorytmów

Stosując dekompozycję funkcjonalną rozpatruje się system jako zbiór jednostek funkcjonalnych

Stosując dekompozycję obiektową rozpatruje się system jako zbiór obiektów

Projektowanie funkcjonalne oraz obiektowe są nawzajem uzupełniającymi się technikami. Na różnych poziomach abstrakcji projektu zwykle wykorzystuje się różne techniki

Podsumowanie (1/2)

(35)

Spójność mówi nam jak silnie są z sobą powiązane składowe danego komponentu. Powiązanie informuje o tym jak silnie są ze sobą połączone różne

komponenty. Przy tworzeniu projektu należy dążyć do silnej spójności i powstania luźnych powiązań.

Podsumowanie (2/2)

Cytaty

Powiązane dokumenty

Passio Sanctorum Martyrum Fructuosi Episcopi, Auguri et Eulogi Diaconum, w:

Under this, most tariffs are abolished, but, as Canada is not in the single market, customs checks are still needed to apply rules of origin, while the free trade in services

Akcja jest wyzwalana przy próbie modyfikacji atrybutu cenaSieci. W wyniku powinna zostać uniemożliwiona każda próba obniżenia ceny sieci prezesa studia. Wiersz

testu zadanio- wego (uczestnicy eksperymentu realizują określone zadania mające na celu zna- lezienie potrzebnych informacji) oraz listy kontrolnej (szerzej opisanych m.in.

Sesyjne komponenty fasadowe typu „Control” (każdy komponent jako odrębna usługa biznesowa), hermetyzujące obiekty danych typu „Entity” z warstwy biznesowej są

Na pierwszej stronie sprawozdania MUSZĄ być podane następujące informacje: imię, nazwisko i numer indeksu autora (lub autorów) oraz przynależność do

Projekt mechanizmów bezpieczeństwa na poziomie bazy danych .... Projekt aplikacji

Program produkcyjny wyrobów - na podstawie przyjętych zamówień, wskaźników dyrektywnych i analiz rynku, które w myśl przyjętej zasady sterowania produkcją przez