Karol Bieńkowski
Bartłomiej Bóbski
Tomasz Zieliński
Warszawa, dn. 15 stycznia 2002 r.
aktualizacja: dn. 18 lutego 2002 r.

Projekt systemu wspomagania wyceny nieruchomości

Cel systemu

System wspomagania wyceny nieruchomości ma na celu usprawnienie procesu tworzenia operatu szacunkowego nieruchomości. Ten cel będzie realizowany dzięki dwóm cechom systemu:

Tworzone operaty szacunkowe, będą przechowywane tak by możliwe było ich modyfikowanie na potrzeby kolejnych wycen.

Główne założenia

Obsługa aplikacji będzie odbywała się w pełni poprzez przeglądarkę internetową.

System zostanie zrealizowany w oparciu o metodologie MVC (Model View Controler) z wykorzystaniem technologii J2EE i ogólnodostępnych, darmowych narzędzi (Postgress, Webmacro, Turbina).

Modelem będą informacje zgromadzone w bazie danych (wraz z klasami je pobierającymi), widokiem będą strony html wygenerowane przy pomocy szablonów Webmacoro, zaś kontrolerem akcje powiązane z przyciskami "submit" formularzy.

Taki podział pozwoli na swobodną modyfikację prezentowanych informacji i dostępnych funkcjonalności bez ingerencji w strukturę bazy danych, użycie szablonów umożliwi zaś wygodną pracę nad szatą graficzną środowiska.

Podstawowe pojęcia

Sceneraiusze

Administrator

Po zalogowaniu administrator ma dostęp do informacji o użytkownikach i zasobach (operatach, transakcjach itp.). Będzie on mógł dodawać, edytować i kasować użytkowników oraz nadawać im uprawnienia pozwalające na:

Aktuariusz

Po zalogowaniu do systemu, aktuariusz będzie miał możliwość dodanie informacji o nowej transakcji kupna/sprzedaży. Po wybraniu typu obiektu jakiego dotyczyła transakcja (grunt, lokal spółdzielczy) zostanie zaprezentowany aktuariuszowi ekran prezentujący formularz z atrybutami danego obiektu (adres, forma własności, metraż, cena itp.). Aktuariusz wprowadza wartości kolejnych atrubutów, oraz może dodawać dodatkowe atrybuty nie przypisane do danego typu obiektu (np. informacje o uciążliwym sąsiedztwie itp.). Po uzupełnieniu informacji następuje akceptacja transakcji i dane jej dotyczące stają się dostępne w systemie.

Aktuariusz może również edytować informacje o istniejących transakcjach. Po wyborze transakcji pojawia się ekran podobny do ekranu dodawania z uzupełnionymi danymi dotyczącymi zmienianej transakcji.

Rzeczoznawca

Rzeczoznawca po zalogowaniu może stworzyć nowy operat szacunkowy. Po podaniu informacji identyfikujących operat (cel, zamawiający itp.) będzie mógł określić typ obiektu którego dotyczy wycena. Następnie zostanie mu zaprezentowany ekran z atrybutami obiektu wybranego typu gdzie będzie on mógł je określić, oraz uzupełnić niestandardowymi informacjami. Po wprowadzeniu danych o przedmiocie wyceny rzeczoznawca będzie mógł wybrać rodzaj wyceny: podejście porównawcze lub kosztowe.

Po wybraniu podejścia porównawczego system wyszuka wśród informacji o transakcjach tych dotyczących obiektów najbardziej zbliżonych do przedmiotu wyceny. Po zaakceptowaniu przez rzeczoznawcę trzech propozycji zostanie zaprezentowany ekran z informacjami o atrybutach przedmiotu wyceny i porównywanych transakcji na którym możliwe będzie korygowanie informacji o różnicach pomiędzy ofertami (obliczonymi przez system). Następnie system obliczy cenę w oparciu o metodę porównywania parami.

W przypadku podejścia kosztowego pojawi się ekran na którym rzeczoznawca będzie wybierał kolejne rodzaje elementów scalonych obiektów (ściany nośne, ławy fundamentowe) oraz określał ich ilość (w m2, m3 itp.). Na tej podstawie zostaną wygenerowane informacje o kosztach odtworzenia w technice elementów scalonych wraz z przyjętymi kosztami jednostkowymi. Po wprowadzeniu ewentualnych korekt do kosztów zostanie obliczona wartość przedmiotu wyceny. Następnie zostanie zaprezentowany ekran umożliwiający określenie stopnia zużycia elementów. Po uwzględnieniu tych informacji zostanie wyliczony końcowa wartość nieruchomości.

Po zakończeniu wyceny/wycen możliwe będzie przygotowanie operatu, poprzez uzupełnienie informacji wygenerowanych na podstawie wycen i potrzebnych do tego danych o własne komentarze i dodatkowe obliczenia.

Postęp pracy nad operatem szacunkowym będzie śledzony przez system, tak że możliwe będzie tworzenie go w wielu sesjach, edytowanie lub tworzenie nowego na podstawie uprzednio przygotowanego.

Use cases

Podstawy implementacji

Architektura Turbiny

System zostanie stworzony w oparciu o narzędzie Turbine które wspomaga tworzenie aplikacji internetowych. Turbine jest servletem który wprowadza swój własny sposób obsługi żądań http w oparciu o metodologie MVC.

MVC

Modelem są dane zgromadzone w bazie danych wraz z klasami pozwalającymi na dostęp do nich. Klasy te dziedziczą po klasach BasePeer i BaseObject pochodzących z pakietu Turbine. Pierwszy typ klas odpowiedzialny jest za pobieranie danych z odpowiedniej tabeli lub wykonywanie na niej operacji, jest to więc "obiektowa" reprezentacja istniejącej tabeli. Dlatego przy pomocy udostępnionych narzędzi dla każdej tabeli zostanie wygenerowana klasa NazwaTabeliPeer. Klasy dziedziczące po BaseObject są zaś "obiektową" reprezentacją wiersza tabeli i udostępniają metody pozwalające na ustalanie wartości ich atrybutów (na podstawie nazw kolumn tabeli) oraz metodę save zapisującą informację we właściwej tabeli.

Widokiem są wygenerowane strony html. Generowanie tych stron składa się z dwóch faz, pierwsza wykonywana jest przez klasą dziedziczącą po np.: WebmacroScreen której głównym zadaniem jest pobranie odpowiednich informacji z modelu, odpowiednie ich przetworzenie (łączenie, sortowanie, podział na strony itp.) oraz umieszczenie w kontekście. Dane umieszczone w kontekście są następnie prezentowane w postaci html przez szablon Webmacro.

Kontrolerem są akcje, czyli to co "znajduje się" pod przyciskami formularzy. Akcje są to klasy których metoda doPerform wołana jest zanim zostanie wyrenderowany odpowiedni widok, tak by mogły wpłynąć na zawartość bazy danych (np.: zapisując zmiany dokonane w formularzu opisującym odpowiedni obiekt) oraz zmienić ekran który ma się następnie pojawić.

Obsługa żądań

Żądanie użytkownika składa się z url'a którego dotyczy i ewentualnych parametrów pobranych z formularza. Dla uproszczenia tego opisu przyjmijmy, że parametry definiujące żądanie są dane jawne w wygenerownym linku.

np.: http://wycena.pl/template/edytujObiekt.wm/action/AktualizujCechy/obiekt_id/11a/operat_id/230

Celem tego żądania jest zachowanie zmian w cechach edytowanego obiektu (metraż itp.) oraz ponowne wyświetlenie informacji o nim. Ponieważ konieczne są modyfikacje i odczytanie zawartości bazy danych to przed przeczytaniem tego przykładu należy zapoznać się z opisem bazy.

Po przekazaniu Turbinie takiego żądania będą wykonywane następujące czynności:

Obsluga akcji AktualizujCechy

renderowanie screenu

Realizacja wyceny

Każdemu przedmiotowi wyceny zostaje przyznany identyfikator i typ. Dla każdego typu nieruchomości będą zdefiniowane wymagane atrybuty do wyceny (np. forma własności, metraż). Po wybraniu typu nieruchomości konieczne będzie zdefiniowanie wartości tych atrybutów. Na ich podstawie dokonywane jest wyszukiwanie podobnych nieruchomości jak i generowana jest metryczka operatu. Z przedmiotem wyceny mogą być związane dodatkowe atrybuty, nie są one jednak brane pod uwagę podczas wyszukiwania ani automatycznie uwzględniane podczas obliczeń.

Znajdowanie podobnych transakcji będzie poprzez znajdowanie najbliższych wektorów w przestrzeni n-wymiarowej. Każdy obiekt traktowany będzie jako wektor w przestrzeni zdefiniowanej przez jego typ (ilość atrybutów) i porównywanie obiektów sprowadzi się do obliczenia odległości pomiędzy nimi. Dodatkowo z atrybutami zostaną związane wagi tak by uwzględniać wpływ danego atrybuty na wartość obiektu, w myśl wzoru:

Po znalezieniu podobnych transakcji konieczne obliczenia wykonane zostaną zgodnie z metodą porównawczą i techniką porównywania parami.

W podejściu kosztowym z obiektem zostaną powiązane elementy składowe (wraz z ich ilością). Dzięki informacjom publikowanych przez Związek Rzeczoznawców zawierającym cenny elementów scalonych generowana wycena w podejściu kosztowym.

Opis bazy danych

Baza danych składać się będzie z następujących tabel:

Diagram encji

Zostaną również użyte tabele Turbiny konieczne do zapewnienia systemu bezpieczeństwa w środowisku.

Opis klas

Dla każdej tabeli w bazie danych zostanie stworzona klasa odpowiadająca za obiektową reprezentację zawartych danych (mapowanie kolumn tabel na atrybuty obiektów) dziedzicząca bo turbine.om.BaseObject oraz klasa odpowiedzialna za tworzenie tych obiektowych reprezentacji. Np.: klasa Atrybut opisująca jeden atrybut z metodami get/setNazwe, get/setOpis, getId, oraz klasa AtrybutPeer służąca do pobierania obiektów z wypełnionymi wartościami na podstawie bazy danych dziedzicząca po turbine.om.peer.BasePeer. Powstaną więc następujące klasy:

Poza tym dla każdej strony w przeglądarce zostanie stworzony odpowiedni ekran, czyli klasa odpowiedzialna za przesłanie do szablonu danych niezbędnych do wygenerowania strony html, będzie ona dziedziczyć po turbine.modules.screens.WebMacroSiteSecureScreen. Na pewno powstaną:

Kolejne klasy to akcje zmieniające stan systemu, a więc np. zapisujące zmiany w bazie, kasujące obiekty, tworzące nowe itp. Będą to rozszerzenia klasy turbine.modules.actions.WebMacroSiteAction.

Na tym etapie projektu nie przewiduje się tworzenia żadnych dodatkowych klas usługowych, ale nie można zapewnić, że nie będą potrzebne nowe klasy konieczne do realizacji ekranów i akcji.

Powiązania z przypadkami użycia

Administrator

Zarządzanie użytkownikami

Zarządzanie prawami

Aktuariusz

Nowa transakcja

Edycja transakcji

Rzeczoznawca

Nowy operat szacunkowy

Wyszukaj operat szacunkwoy

Wycena metodą porównawczą

Wycena metodą odtworzeniową