🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.java
9 messages
9 total messages Started by Borneq Fri, 10 Jul 2015 08:53
Jak dobrze zaprojektować aplikację?
#152020
Author: Borneq
Date: Fri, 10 Jul 2015 08:53
4 lines
353 bytes
Chciałbym zapytać się osób mających doświadczenie w projektowaniu nowych
aplikacji. Jak myślę, aplikację należy projektować od góry, najpierw
podzielić funkcjonalnie na pakiety i klasy, potem wybrać metody tych
klas a następnie będzie można wypełniać już kodem te metody?
Tylko jak nie widząc jeszcze aplikacji ustalić te klasy?
Re: Jak dobrze zaprojektować aplikację?
#152021
Author: Piotr Rezmer
Date: Fri, 10 Jul 2015 09:04
21 lines
1100 bytes
W dniu 2015-07-10 o 08:53, Borneq pisze:
> Chciałbym zapytać się osób mających doświadczenie w projektowaniu nowych
> aplikacji. Jak myślę, aplikację należy projektować od góry, najpierw
> podzielić funkcjonalnie na pakiety i klasy, potem wybrać metody tych
> klas a następnie będzie można wypełniać już kodem te metody?
> Tylko jak nie widząc jeszcze aplikacji ustalić te klasy?

Zaczynasz od analizy opisu aplikacji. Rzeczowniki to kandydaci na klasy.
Najczęściej będą to klasy typu Entity czyli będące kontenerem danych. Na
podstawie opisów przypadków użycia ustalasz klasy kontrolerów które są
odpowiedzialne za logikę działania aplikacji. Dla punktów styku
aplikacji z użytkownikiem lub innymi systemami ustalasz klasy boundary
których rolą jest "dopasowanie" do konkretnego systemu. Np. jeśli Twoja
aplikacja wysyła powiadomienia mailowe, możesz zbudować klasę boundary
odpowiedzialną za komunikację z serwerem pocztowych.

Czasowniki w opisie tekstowym to kandydaci na metody/usługi kontrolera.

--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: Jak dobrze zaprojektować aplikację?
#152022
Author: Borneq
Date: Fri, 10 Jul 2015 09:19
9 lines
499 bytes
W dniu 2015-07-10 o 09:04, Piotr Rezmer pisze:
> Najczęściej będą to klasy typu Entity czyli będące kontenerem danych. Na
> podstawie opisów przypadków użycia ustalasz klasy kontrolerów które są
> odpowiedzialne za logikę działania aplikacji. Dla punktów styku
> aplikacji z użytkownikiem lub innymi systemami ustalasz klasy boundary

Muszę jeszcze doczytać o klasach entity i boundary. Na razie znalazłem
http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/OBPROG/io3.doc

Re: Jak dobrze zaprojektować aplikację?
#152023
Author: Borneq
Date: Fri, 10 Jul 2015 09:33
7 lines
279 bytes
W dniu 2015-07-10 o 09:19, Borneq pisze:
> Muszę jeszcze doczytać o klasach entity i boundary. Na razie znalazłem
> http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/OBPROG/io3.doc

A język UML? Słyszałem niepochlebne opinie, że wcale nie jest żadnym
językiem.

Re: Jak dobrze zaprojektować aplikację?
#152024
Author: Piotr Rezmer
Date: Fri, 10 Jul 2015 11:01
16 lines
415 bytes
W dniu 2015-07-10 o 09:33, Borneq pisze:

> A język UML? Słyszałem niepochlebne opinie, że wcale nie jest żadnym
> językiem.

UML na razie się nie przejmuj. To jest notacja której będziesz używać
jak potrzebujesz np. zrobić schemat systemu.

Natomiast tak się składa, że często skrót UML pojawia się w szkoleniach
dotyczących modelowania aplikacji.



--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: Jak dobrze zaprojektować aplikację?
#152025
Author: Piotr Rezmer
Date: Fri, 10 Jul 2015 11:15
52 lines
1600 bytes
W dniu 2015-07-10 o 09:19, Borneq pisze:

> Muszę jeszcze doczytać o klasach entity i boundary. Na razie znalazłem
> http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/OBPROG/io3.doc


Entity:
- jej rolą jest przechowywanie danych
- nie definiujemy w niej metod (pomijając gettery i settery)

np.

Public class User {

	private String login;
	private String firstName;
	private String lastname;

public String GetLastName() {
	return lastName;
}
public String GetFirstName() {
	return firstName;
}
}

Boundary:
-rolą jest przyjęcie danych (np. formularze danych) lub wysłanie danych.

Oprócz tego jest jeszcze kilka prostych zasad dotyczących tworzenia
architektury aplikacji. W momencie gdy zdefiniujesz już nazwy i role
klas, umieszczasz je w odpowiednich warstwach, licząc od góry:

warstwa aplikacji - zawiera klasy specyficzne dla konkretnej aplikacji,
zakładasz że te klasy nie będą używane w innych aplikacjach
warstwa obiektów biznesowych - zawiera klasy związane np. z logiką
biznesową. Klasy z tej warstwy mogą się pojawić w przyszłości w innych
aplikacjach. W tej warstwie pojawią się najprawdopodobniej klasy typu
Entity.
warstwa usług - klasy które zapewniają np. odczyt/zapis pliku,
komunikację z innymi systemami. Te klasy nie realizują żadnej logiki,
Tutaj możemy umieścić np. część klas komunikacyjnych Boundary.

Klasy powinny być zaprojektowane tak by komunikowały się jedynie z
sąsiednimi warstwami. Zależności powinny być tylko w jednym kierunku (z
góry na dół).



--
pozdrawiam
Piotr
XLR250&bmw_f650_dakar
Re: Jak dobrze zaprojektować aplikację?
#152026
Author: Borneq
Date: Sat, 11 Jul 2015 07:32
14 lines
752 bytes
W dniu 2015-07-10 o 22:07, Arivald pisze:
> Na tej podstawie można zrobić zgrubny schemat aplikacji, zadecydować o
> technologiach i bibliotekach jakie mają być użyte. Ile i jakie warstwy
> będą używane, i w jakich kierunkach. Kierunkach w sensie że jak masz

Przykładowy projekt: edytor MIDI
To prostsze w porównaniu z jakimiś rozbudowanymi problemami, widzę na
razie dwie warstwy: obsługa midi i GUI.
Więc będę miał pakiety:
com.borneq.midedit.midi
com.borneq.midedit.gui
Ale z drugiej strony, dobrze było by mieć kod wielokrotnego użytku, a
więc może zrobić projekt-bibliotekę do midi dołączaną do programu. Wtedy
nazwy pakietów były by krótsze - z nazwy biblioteki wypadło by
'midedit', a z nazwy programu 'gui'
Re: Jak dobrze zaprojektować aplikację?
#152027
Author: Borneq
Date: Sat, 11 Jul 2015 07:34
6 lines
294 bytes
W dniu 2015-07-11 o 07:32, Borneq pisze:
> Ale z drugiej strony, dobrze było by mieć kod wielokrotnego użytku, a

Na przykład dla znacznie prostszego playerka MIDI, poza tym player ten
można szybciej wykonać i przetestować w nim obsługę czytania Midi zanim
weźmiemy się za edytor.
Re: Jak dobrze zaprojektować aplikację?
#152046
Author: =?UTF-8?B?U2ViYX
Date: Sun, 19 Jul 2015 20:28
20 lines
892 bytes
On 2015-07-10 08:53, Borneq wrote:
> Chciałbym zapytać się osób mających doświadczenie w projektowaniu nowych
> aplikacji.

Zacznij od dowolnej ksiązki z zakresu inżynierii oprogramowania. Każda
aplikacja wymaga podejścia indywidualnego do etapu projektowania. W
ektremalnym przypadku może w ogóle go nie być.

> Jak myślę, aplikację należy projektować od góry

Nie. Nalezy ją projektować tak jak jest w danym wypadku lepiej.
kryterium "lepiej" jest szerokie.

> Tylko jak nie widząc jeszcze aplikacji ustalić te klasy?

Jest specyfikacja 100% i implementujesz bo są ustalone, albo brak
specyfikacji i jakieś metody zwinne z okolic Agile. Przy takiej
rozciągłości potencjalnej specyfikacji nie ma jak wskazać palcem dobrej
metody ustalania "tych klas". W skrócie: pytanie jest na tyle ogolne że
każda odpowiedź, wliczając złośliwe, jest na miejscu.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads