Ticket #23 (closed task: fixed)

Opened 6 years ago

Last modified 6 years ago

przygotować architekturę widoków DashWiki

Reported by: dozzie Owned by: dozzie
Priority: normal Milestone: architektura aplikacji
Component: Keywords:
Cc: Parent ID:

Description

Na zjazd 4 potrzebny będzie diagram architektury aplikacji. Większą część będzie stanowić opis funkcji, które Django nazywa widokami (views.py).

Na punkt startowy powinien się nadać kod prototypu aplikacji. Typy zachowań, które są bardziej uniwersalne (np. krok pośredni przy usuwaniu makra, polegający na zapytaniu o potwierdzenie i odebraniu potwierdzenia lub rezygnacji) powinny być oznaczone jako wydzielone (zostaną zrealizowane jako dekoratory w Pythonie).

Child Tickets

Attachments

propozycja.png (6.7 KB) - added by dozzie 6 years ago.
propozycja wycinka diagramu architektury DashWiki
Architektura.pdf (55.6 KB) - added by tdrag 6 years ago.
architektura_diagram.pdf (13.6 KB) - added by mbaczynska 6 years ago.
architektura.graphml (33.1 KB) - added by mbaczynska 6 years ago.

Change History

comment:1 Changed 6 years ago by dozzie

Nie jestem pewny, czy to będzie bardziej diagram komponentów, czy diagram pakietów. A może jeszcze inny.

Changed 6 years ago by dozzie

propozycja wycinka diagramu architektury DashWiki

comment:2 Changed 6 years ago by dozzie

Na dzisiejszym posiedzeniu chyba udało nam się wypracować sposób reprezentacji architektury, który będzie pasować do Django, czyli coś, co się przyda przy implementacji, a nie tylko będzie pustym dokumentem dla biurokracji.

Uzgodnionym typem diagramu jest diagram komponentów. Za UML 2.0. Almanach, komponent to

...wymienialny, wykonywalny fragment dużego [większego] systemu, którego szczegóły implementacyjne są ukryte. Funkcjonalność udostępniana przez komponent jest określana przez zestaw interfejsów dostarczanych realizowanych przez niego. Komponent może [...] także ich wymagać, aby móc funkcjonować. Są to tak zwane interfejsy wymagane.

U nas komponenty będą odpowiadać funkcjom wśród widoków (choć nie tylko funkcjom będącym djangowymi widokami). Funkcja-widok będzie dostarczać tylu interfejsów, w ilu rolach będzie używana (np. edycja strony będzie 1. wyświetlać formularz edycji i 2. odbierać dane z tego formularza; oba będą interfejsami dostarczanymi). Funkcja-widok będzie używać tylu interfejsów, do ilu innych stron (widoków) będzie prowadzić.

Druga kategoria funkcji to funkcje w tradycyjnym znaczeniu: podprocedury, do których zostały wydzielone powtarzające się operacje. Taka funkcja jest wołana z funkcji-widoku i zwraca do niej pewną wartość. Funkcja-podprocedura ma jedynie rolę służebną wobec funkcji-widoków, głównie będzie dostarczać interfejsy.

Trzecia kategoria to funkcje-dekoratory (np. funkcja sprawdzająca, czy przeglądający jest zalogowany (i wyświetlająca komunikat błędu, jeśli nie) -- strażnik formularzy dozwolonych jedynie zalogowanym). Taka funkcja-dekorator jedynie dostarcza interfejs.

Mamy zatem trzy sposoby używania/udostępniania interfejsu:

  • zwykłe wywołanie funkcji (argumenty + wartość zwracana) -- kategoria 2
  • udekorowanie (owinięcie, wrapper) funkcji -- kategoria 3
  • przeniesienie na stronę (URL) obsługiwaną przez inną funkcję-widok -- kategoria 1

W załączniku (propozycja.png) linia ciągła oznacza dostarczanie interfejsu, linia przerywana zakończona strzałką oznacza użycie (wymaganie) interfejsu. Sposoby użycia/udostępnienia interfejsu nie zostały na diagramie pokazane.

Changed 6 years ago by tdrag

Changed 6 years ago by mbaczynska

Changed 6 years ago by mbaczynska

comment:3 Changed 6 years ago by dozzie

  • Owner changed from tdrag to dozzie
  • Status changed from new to closed
  • Resolution set to fixed

Komentarz do załączników (dla historii).

W mijającym tygodniu udało nam się ustalić, czego konkretnie miała dotyczyć architektura: dużych komponentów (framework, serwer WWW, baza danych -- ten kaliber). Załączniki odpowiadają temu właśnie podejściu.

Załączniki wrzuciłem do repozytorium, choć będę musiał jeszcze odrobinę popracować nad eksportem do PDF-a (mój yEd źle osadza polskie litery).

Note: See TracTickets for help on using tickets.