Ten dokument dotyczył laboratorium prowadzonego w latach poprzednich.
Na obecnym laboratorium ( 2002) użycie programu LACATRE w fazie projektowanie nie jest wymagane. Jednakże można posłużyć się tym narzędziem do automatycznej generacji kodu VxWorks.
Celem projektu jest zastosowanie Inżynierii Oprogramowania w cyklu budowy niewielkiej aplikacji czasu rzeczywistego dla systemu operacyjnego VxWorks.
Docelowa aplikacja uruchamiana będzie w środowisku VxSim - symulatora systemu VxWorks dla systemu UNIX. Jako język programowania użyty zostanie język C.
Skala aplikacji (bliska skali małych systemów wbudowanych) i typ środowiska pozwoli na zapoznanie z zasadami programowania na poziomie bliskim jądra systemów operacyjnych czasu rzeczywistego.
Jako język projektowania użyty zostanie graficzny język LACATRE. Przejście pomiędzy projektem systemu a implementacją będzie wspomagane przez generator kodu C LA4VXW.
Przewidziane są nastepujace eatpy realizacji:
· Analiza wymagań (metoda SART WM)
· Projektowanie (LACATRE)
· Implementacja (środowisko VxSim, jezyk C)
Celem tego etapu jest:
· Określenie wejść i wyjść aplikacji.
· Wstępny podział aplikacji na moduły, ustalenie jej architektury.
· Wydzielenie modułów realizujących programową symulację otoczenia fizycznego.
· Dekompozycja modułów.
Podstawową metodą analizy wymagań powinna być metoda SART Warda-Mellora. Przy specyfikacji wymagań dotyczących interfejsu modułów można użyć MSC (message sequence chart) lub pochodne.
Brak propozycji )
1. Opis wymagań systemu wraz z interfejsem
2. Opis architektury systemu (podział na moduły i ich powiązania)
3. Opis modułów (dekompozycja na podprocesy, definicje danych)
4. Opcjonalnie: Opis zewnętrznego interfejsu modułów (zachowanie z użyciem MSC, definicje danych)
Uwagi
Należy narysować odpowiednie diagramy. Objętość: max ok. 4 stron
Celem tego etapu jest dokonanie odwzorowania jednostek (procesów, danych) występujących w analizie wymagań w elementy występujące w języku projektowania oraz stworzenie odpowiedniej dokumentacji.
Proponowana metodologią projektowania jest graficzny język LACATRE.
Program LACATRE dla środowiska MS Windows
1. Opis projektu modułów w postaci diagramów LACATRE
2. Opis interfejsu modułów
3. Opis sposobu odwzorowania jednostek analizy wymagań w elementy projektu
4. Definicje wymienianych danych w języku C
Uwagi
Należy narysować odpowiednie diagramy. Objętość: ok. 2-4 stron
Celem tego etapu jest:
· automatyczna translacja modułów LACATRE do kodu C [w przypadku pominięcia etapu projektowania konieczna będzie implementacja manualna]
· uzupełnienie kodu modułów o deklaracje struktur
· kompilacja i uruchomienie aplikacji
· prezentacja działającej aplikacji
Translator LA4VXW (MS DOS).
Uwaga translator ma drobny błąd, akceptuje pliki o rozszerzeniach pisanych małymi literami!.
1. Kod źródłowy w postaci pliku
2. makefile [W Tornado zbędne]
3. Opis sposobu uruchamiania
4. Opis sposobu testowania
Uwagi
Objętość: ok. 2-4 strony.
Proszę zamieścić także
opis ewentualnych błędów translatora LA4VXW.
|
Element SART |
Obiekt lub
mechanizm komunikacji LACATRE |
|
Proces działający w sposób ciagły
|
Zadanie
|
|
Proces uruchamiany sygnałem Trigger
|
Zadanie lub procedura
W przypadku zadania przepływ sterowania powinien być zrealizowany z użyciem dodatkowego obiektu (semaphore lub mailbox) |
|
Proces uruchamiany cyklicznie
|
Alarm
|
|
Proces sterujący
|
Zadanie lub procedura. |
|
Magazyn zwykły
|
Zasób (resource). Najczęściej skonfigurowany jako pamięć dzielona.
W przypadku magazynu dzielonego przez procedury można użyć zmiennej prostej. |
|
Magazyn sterowania
|
Mailbox, kolejka komunikatów
Semafor
(dla jednorodnych sygnałów sterujacych) |
|
Symbol terminalny wejsciowy
|
Procedura symulująca wejście systemu,
w systemie rzeczywistym procedura przerwania Interrrupt
|
|
Symbol terminalny wyjściowy
|
zasób lub procedura |
|
Przepływ danych miedzy procesem a magazynem
|
1. ACCESS (dla magazynu jako zasób zasobu) 2. SEND_TO_MBX, WAIT_ON_MBX (dla kolejki) 3. SEND_TO_SEM, WAIT_ON_SEM (dla semafora) |
|
Przepływ danych miedzy procesami
|
Kilka mozliwości: · należy dodać obiekt pośredniczący mailbox (kolejkę)i użyć SEND_TO_MBX, WAIT_ON_MBX · należy dodać obiekt pośredniczący resource (zasób)i użyć ACCESS_WRITE, ACCESS_READ
· CALL (procedure) |
|
Sygnał sterujący
|
Kilka mozliwości: · należy dodać obiekt pośredniczący mailbox i użyć SEND_TO_MBX, WAIT_ON_MBX
· należy dodać obiekt pośredniczący semaphore i użyć SEND_TO_SEM, WAIT_ON_SEM
· CALL (procedure) · Użyć SUSPEND lub RESUME dla sygnałów <D> i <E> |
Program graficzny LACATRE powstał niemal 10 lat temu i jest już mocno przestarzały. Wiele elementów interfejsu jest niewygodnych i kłopotliwych w obsłudze. LACATRE nie obsługuje struktury wielomodułowej aplikacji, pozwala na umieszczenie jednego modułu w jednym pliku.
Opis programu LACATRE w pliku LA4RM.DOC
Na rysunku
1 przedstawiono cykl życia aplikacji LACATRE.
1. Za pomocą narzędzia graficznego użytkownik edytuje poszczególne moduły. Moduły są zapisywane w plikach o rozszerzeniu LA4. Równocześnie w trakcie edycji generowany jest pseudokod LACATRE, który zapisywany jest w pliku o rozszerzeniu T.
2.
W drugim etapie następuje konwersja pseudokodu LACATRE do kodu języka C
dla systemu VxWorks. Możliwa jest konwersja pojedynczego pliku lub kilku modułów.
Wynikiem jest pojedynczy plik C.
3.
Programista manualnie uzupełnia kod wynikowy, głównie dodając
deklaracje pól struktur dla zasobów (dzielona pamięć) i przesyłanych
komunikatów. Translator zaznacza miejsca uzupełnień dyrektywą #error
.

Rys.
1
Cykl życia aplikacji LACATRE
Możliwość obsługi wielomodułowej aplikacji nie została z początku wbudowana i dlatego ma ona wiele ograniczeń.
Nieobsługiwane elementy
LACATRE był projektowany jako język dla wielu platform, dlatego występują w nim elementy nadmiarowe, które nie są obsługiwane przez translator LA4VXW:
1. Nie należy używać obiektu Message i MessagePool; jawne obiekty są specyficzne dla platformy IRMX. Message może pojawić się jedynie jako argument SEND_TO_MBX
2. Nie należy używać obiektu Event
3. Nie należy używać obiektów Export i Import
Deklaracje obiektów
Pseudokod LACATRE nie zawiera instrukcji deklaratywnych. Za deklaracje obiektu przyjmuje się:
· dla obiektu programowalnego - jego procedurę obsługi
· dla obiektu konfigurowalnego (nieprogramowalnego) - wywołanie funkcji CREATE_XXX
Powtórzone obiekty
Podobnie jak w DFD można umieszczać na diagramie drugą instancję obiektu konfigurowalnego.

Rys. 2 Powtórzony obiekt Mailbox
Zasady ustalania interfejsu modułów są bardzo proste:
1. można uzyskać dostęp do dowolnego obiektu konfigurowalnego z zewnętrznego modułu umieszczając go na schemacie, (ale nie tworząc go za pomocą CREATE_XXX).
2. można uzyskać dostęp do dowolnej procedury z zewnętrznego modułu umieszczając ją na schemacie i poprzedzając jej nazwę jej nazwę modyfikatorem „EXTERN:”.
Na ג przedstawiono aplikację złożona z dwóch modułów SENDER i RECEIVER. Moduł SENDER odwołuje się do zewnętrznej procedury receiver_init oraz zewnetrznego obiektu receiver_mbx (który zostanie zadeklarowany poprzez umieszczenie funkcji pierwotnej CREATE_MAILBOX.)
Uwaga: aby skopiować fragment diagramu do schowka w formacie WM należy kliknąć prawym klawiszem myszy, zaznaczyć region i użyć klawisza CTRL-INS.
|
Diagram SENDER
|
Pseudokod SENDER
PROCEDURE(init)
CALL(receiver_init);
CREATE_TASK(sender,120); PROCEDURE_END
TASK(sender)
FOREVER
SEND_TO_MBX(receiver_mbx,msg,,); TASK_END
|
|
Diagram RECEIVER
|
Pseudokod RECEIVER TASK(reciver)
FOREVER
WAIT_ON_MBX(receiver_mbx,); TASK_END
PROCEDURE(receiver_init)
CREATE_MAILBOX(receiver_mbx,50,F);
CREATE_TASK(reciver,100); PROCEDURE_END
|
Rys. 3 Aplikacja złożona z dwóch modułów
|
nazwa_pliku.t |
Plik nazwa_pliku.t zostanie poddany kompilacji i powstanie plik nazwa_pliku.c Rozszerzenie
musi być pisane małą literą |
|
nazwa_pliku.lvp |
Plik nazwa_pliku.lvp zostanie potraktowany jako plik projektu, kompilacji zostaną wpoddane wszystkie pliki źródłowe zdefiniowane w projekcie i stworzony plik docelowy o zdefiniowanej tam nazwie. |
Składnia pliku LVP
|
#
tekst komentarza |
komentarz do końca linii |
|
TARGET
vx_app.c |
nazwa pliku wynikowego |
|
FILES (
file_name_with_path1.t
file_name_with_path2.t
...
file_name_with_pathn.t ) |
Lista plików źródłowych po słowie kluczowym FILES w nawiasch okrągłycyh. Nazwy plików mogą być ujęte w cudzysłowy. Separatory dowolne |
|
BIN |
L.EXE |
program LACATRE MS Windows |
|
|
LA4VXW |
translator 16b DOS console |
|
|
LA4VXW32 |
translator Win32 console |
|
DOC |
la4rm.doc |
opis programu LACATRE |
|
|
la4proj.doc |
ten dokument |
|
|
rtproj97.doc |
tematy projektów |
|
SMAPLES\S-R |
sender.la4, receiver.la4, r-s.lvp |
przykładowy projekt Uwaga: brak tam procedur usuwających obiekty, które są wymagane w aplikacji! |
|
SMAPLES\ |
*.la4 |
inne przykłady jednomodułowe |