Projektowanie aplikacji od zera

Projektowanie aplikacji od zera
Javaluke Scriptwalker
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Wlk. Brytania
  • Postów:105
0

Dzień dobry, przeglądałem internet, so, se, ale jedynie znalazłem takie hasła jak OOD/OODA i design patterns. Czy są w internecie jakieś opracowania lub książki do kupienia, które wytłumaczą jak zabrać się do tworzenia aplikacji od zera? Lub może jakieś konkretne przykłady. Czytałem o kilku patternach, ale z tego co zrozumiałem to one raczej służą do konkretnych przypadków, a nie całej aplikacji webowej.

Więc skąd taki szarak jak ja ma wiedzieć jak zaprojektować aplikację, rozumiem, że tym zajmuje się architekt w zespole, ale chciałbym poznać chociaż podstawy by samemu coś napisać.

Proszę o pomoc.

Fantazjatyk
można też rozpisać sobie wszystko w UML. Ja ostatnio zacząłem się tego uczyć z podobnego powodu.
Javaluke Scriptwalker
@Fantazjatyk chodzi ci o wszystkie klasy, tak? jak wygląda to na późniejszym etapie gdy chcesz coś dodać, nie musisz zmieniać połowy układu?
Fantazjatyk
Tak. Ciężko mi powiedzieć - dosłownie zaczynam z tym UML - ale wygląda na to, że są dostępne do tego języka specjalne narzędzia, które pewnie umożliwiają szybką refaktoryzację/poważniejszą modyfikację projektu.
Fantazjatyk
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 3 lata
  • Postów:133
2
Javaluke Scriptwalker napisał(a):

Dzień dobry, przeglądałem internet, so, se, ale jedynie znalazłem takie hasła jak OOD/OODA i design patterns. Czy są w internecie jakieś opracowania lub książki do kupienia, które wytłumaczą jak zabrać się do tworzenia aplikacji od zera? Lub może jakieś konkretne przykłady. Czytałem o kilku patternach, ale z tego co zrozumiałem to one raczej służą do konkretnych przypadków, a nie całej aplikacji webowej.

Więc skąd taki szarak jak ja ma wiedzieć jak zaprojektować aplikację, rozumiem, że tym zajmuje się architekt w zespole, ale chciałbym poznać chociaż podstawy by samemu coś napisać.

Proszę o pomoc.

Head First Object-Oriented Analysis and Design:
http://helion.pl/ksiazki/head-first-object-oriented-analysis-and-design-edycja-polska-rusz-glowa-brett-d-mclaughlin-gary-pollice-david-west,hfooad.htm#format/e

Head First Software Development. Edycja polska
http://helion.pl/ksiazki/head-first-software-development-edycja-polska-dan-pilone-russ-miles,hfsode.htm

Proszę.

edytowany 3x, ostatnio: Fantazjatyk
mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
0

Swoje aplikacje od 0... ale dokładnie od jakiego zera? Masz jakiś framework i opierasz o to aplikacje czy w ogóle bez frameworka i wszystko klepiesz od pierwszej najmniejszej linijki?


It's All About the Game.
Javaluke Scriptwalker
chciałbym ze springiem boot/mvc, ale jeszcze nie zacząłem czytać dokumentacji
JU
  • Rejestracja:około 22 lata
  • Ostatnio:około miesiąc
  • Postów:5042
2

Musisz klepnąć kilka aplikacji, popełnić sporo błędów, a w końcu będziesz wiedział, co w danym wypadku będzie złe, a co dobre. Innej możliwości raczej nie ma. Teorię możesz sobie wyczytać, na pewno nie zaszkodzi (zwłaszcza jeśli chodzi o ogarnięcie UML), ale w praktyce jest tak, jak Ci napisałem. Innymi słowy: nie bierz się za projektowanie drapacza chmur, jeśli nigdy nie zrobiłeś chociażby małej chatki w lesie.

edytowany 1x, ostatnio: Juhas
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
4

Ja polecam - nie zaczynaj od modelowania w UML dziedziny - bo to przeważnie czysty nonsens i sztuka bezużytkowa. To dobrze wygląda na studiach i później ewentualnie w celu poniżania klientów.
(Nie kojarzę kiedy ostatnio widziałem diagram UML, który być chociaż trochę odpowiadał prawdzie... ( chyba, że to z reverse engineeringu był :-) ) Najważniejsze jest ustalenie wymagań. (przy okazji UseCase w UML to IMO kolejny nonsens- możesz olać ( Gdyby chociaż ludziki miały buzie to- można by im dorysowywać wąsy)).

Bo o ile to WEB to absolutnie najważniejszy jest Look and feel - UX.!
Jakie są strony, pociski, jak reagują itp.?. - i tu najlepiej "Pixel Genau" im dokładniej -> tym lepiej. Mało kto to robi (dobrze/w ogóle) - (bo to trudne !)- ludziki i strzałki rysuje się dużo łatwiej.

Pomocą do tego może być prześledzenie procesów i np. event storming (zależy czy to mała czy duża aplikacja).
Jak to zrobisz to reszta jest prosta.

To tyle jeśli chodzi o aplikację- jeśli jesteś architektem to musisz teraz zając się takimi rzeczami jak:

  • testowalność systemu,
  • budowanie zespołu,
  • build,
  • CI,
  • technologie,
  • narzędzia,
  • wymagania niefunkcjonalne,
  • security.
  • konfiguracja,
  • documentacja,
    -hardware

I jeszcze w cholerę ... zależy od wielkości aplikacji, zespołu, budżetu itp.

Model obiektowy, dziedzina , sequence diagramy itp. ... przydają się w małej skali - zresztą książki raczej Cię tego nie nauczą (chyba, że jesteś wyjątkiem).

Jak nie wiesz co robić - to zrób prototyp. Najlepiej w moim życiu wyszły te projekty, które miały jakiś prototyp, POC itp. Często po kilkutygodniowym obrabianiu prototypu okazywało się, że klient to w zasadzie chce czegoś zupełnie innego - zupełnie innego niż opisane w 500 stronicowym zamówieniu z załącznikami. O wiele lepiej pracuje się przy czymś co widać, że sprawia radość użytkownikom i jest przez nich rozumiane niż wymyśloną przez analitykow kobyłę, której nawet programiści nie mogą ogarnąć. A dodatkowo z prototypu nawet biednego, w którym mnóstwo rzeczy jest pofejkowane czasem rodzą się dobre pomysły na architekturę.

I jeszcze - architektura to nie jest statyczna rzecz - zmienia się wraz ze zmianami w wymaganiach, zdobywaniem wiedzy i doświadczenia przez zespół. Czyli nie staraj się zaprojektować wszystkiego od początku do końca - bo i tak się nie uda. Raczej przygotuj się na stałe zmiany. Dlatego testowalność ,CI itp. są tak ważne.

A good architecture maximizes the number of decisions NOT made

Po tym wstepie przydługim rada praktyczna:
ściągnij jakiś przykład i analizuj jak działa.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 6x, ostatnio: jarekr000000
JU
  • Rejestracja:około 22 lata
  • Ostatnio:około miesiąc
  • Postów:5042
1

A ja się nie zgadzam, jeśli chodzi o UML. W momencie, gdy zacząłem tworzyć aplikację od tworzenia zwykłego diagramu klas (innych jakoś nie ogarnąłem jeszcze), to stało się to dużo prostsze. Czasami od razu widać pewne problemy. Pewne części systemu można od razu w miarę dobrze zaprojektować. Jeśli chodzi o to, jak wygląda produkt końcowy, a jak diagram - zgoda - wyglądają trochę inaczej ;) Chyba, że w miarę robienia zmian w aplikacji, robisz zmiany w UML. Ale komu by się chciało. Grunt, żeby UML odzwierciedlał mniej więcej budowę systemu.

mr_jaro
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
1

Umla tykam tylko w problematycznych miejscach np skomplikowane przejścia statusów w innych wypadkach nie widziałem nie widzę i nie będę widział potrzeby jego stosowania.


It's All About the Game.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)