====== 6. Model logiczny a model fizyczny systemu ======


**Model logiczny** określa, co system winien robić, by spełnić postawione wymagania.

**Model fizyczny** jest dalszym rozszerzeniem modelu logicznego, precyzując szczegóły implementacyjne, a więc określa jak system ma realizować zadania opisane w modelu logicznym. 

Utworzenie logicznego (podstawowego) modelu systemu poprzedza przekształcenie go w model fizyczny.

Przy budowie modelu logicznego wykorzystuje się gromadzoną wiedzę o istniejącym systemie, abstrahując jednak od szczegółów i technologii implementacji. Używane są notacje modelujące, opisujące funkcje systemu, przepływy i struktury danych oraz zachowanie z uwzględnieniem zależności czasowych. Podczas projektowania (model fizyczny) definiowany jest system docelowy z uwzględnieniem technologii i ograniczeń implementacji. Modelowana jest struktura systemu uwzględniająca powiązania między jego podstawowymi komponentami, a im samym nadawane są cechy fizycznej implementacji; uwzględniane są szczegóły zakładanych rozwiązań sprzętowych i
programowych; kładzie się nacisk na trzymanie się zasad dokumentowania i tworzenia
diagramów.

===== Określanie modelu logicznego i fizycznego. =====


Analiza rozpoczyna się od zdefiniowania modelu środowiska, który określa usytuowanie systemu z punktu widzenia jego zewnętrznego otoczenia. Obejmuje on wyraźne określenie granic systemu, opis zdarzeń zewnętrznych, na które system powinien reagować oraz powiązania ze współpracującymi z nim obiektami zewnętrznymi. 

Model środowiska jest zwykle reprezentowany przez diagram kontekstowy, listę zdarzeń zewnętrznych oraz diagram związków encji (dla anazlizy strukturalnej), czy  też  diagramy przypadków użycia, diagramy klas (dla analizy obiektowej) wyrażające związki pomiędzy podstawowymi obiektami. Kolejnym krokiem jest stworzenie modelu zachowania systemu, czyli opisu zachowania systemu na w odpowiedzi na poszczególne zdarzenia. Na tym etapie dokonuje się opisu transformacji, wykonywanych w odpowiedzi na wystąpienia zdarzeń oraz specyfikuje się wymagane informacje (przepływy, struktury danych). Model uzupełnia opis przepływu sterowania, określający dynamikę systemu. Do modelowania zachowania systemu wykorzystywane są diagramy przepływu danych, które obrazują jak dane wejściowe są przekształcane na dane wyjściowe poprzez kolejne przekształcenia funkcjonalne (diagramy stanów, czynności i sekwencji w przypadku technik obiektowych). 

W przypadku modelowania zachowania systemu czasowo zależnego używane są diagramy przejść stanów, opisujące stany systemu oraz zdarzenia powodujące ich zmiany. Zazwyczaj na etapie analizy rozważa się sytuacje wyidealizowane, uwzględniając ograniczenia implementacyjne dopiero na etapie projektowania, przy określaniu architektury sprzętu i oprogramowania. Wówczas dopiero podejmowane są decyzje związane z rozdziałem zadań na poszczególne procesory (moduły, jednostki przetwarzania), wykonujące planowane przetwarzanie, oraz specyfikowane są interfejsy pomiędzy nimi. W ten sposób określone zostają podzbiory funkcji wykonywane przez oprogramowanie poszczególnych komputerów systemu. W ramach danej jednostki programowej (modułu) projektowana jest struktura oprogramowania i odwzorowanie modelu logicznego w wyróżnione jej składniki. Przydzielone danemu modułowi przetwarzanie grupuje się w zadania (procesy), a także dobiera się dla nich środowisko programowe – system operacyjny, bazę danych, pakiety programów usługowych itp. – wiążąc je w jedną strukturę, której działanie zapewni realizację wymaganych funkcji. 

W ramach projektowania dokonywane jest również odwzorowanie logicznej reprezentacji danych w struktury implementacyjne (diagramy wdrożenie i komponentów w technikach obiektowych opartych o UML).
Prace analityczne pozwoliły na określenie modelu logicznego danych (model związków encji), ich pożądanej struktury (specyfikacja) oraz wiedzy o sposobie wykorzystania i wymaganiach dostępu do nich. Na tej podstawie możliwe jest bezpośrednie zdefiniowanie reprezentacji fizycznej – plików i rekordów lub tablic relacyjnej bazy danych, zależnie od przyjętych ustaleń. Proces ten wspiera wiele narzędzi CASE, automatycznie generując pliki definicyjne lub ciągi instrukcji języka SQL.



