Dizajn baze

poruka: 20
|
čitano: 4.707
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Dizajn baze

već sam razgovarao o ovome s nekoliko ljudi i nitko mi ne može neki dati konkretan odgovor. dakle iman sljedeci problem.

radim knjigovodstveni program za vođenje trgovine, restorana itd., i ne znam da li da odvojim Poslovnicu i Skladište u dvije odvojene tablice ili da ih spojim u jednu i samo ih označavam po tipu(skl, posl).

po meni je logičnije da su odvojeni, ali ne znan hoće li mi to poslije raditi probleme prilikom knjiženja različitih dokumenata, zaduženja itd....

 

molio bih bilo kakvo mišljenje u vezi ovoga i unaprijed se zahvaljujen!

Checked-out since 1983
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Dizajn baze

Jednostavno u dvije tablice.Tako bi bar ja napravio.Jer skladište koristi više poslovnica pretpostavljam.Čak je tako po meni i sigurnije knjiženje.
Najmanje dvije tablice.

Private
17 godina
protjeran
offline
Dizajn baze

Da su to iste stvari isto bi se i zvale :) Dakle, logično je napraviti dvije tablice. Ako je riječ o nekom master-detail odnosu onda svakako treba pribjegavati što većoj normalizaciji baze. Kasnije se među-tabelom može čak napraviti odnos "više prema više". Time ćeš međuostalim moći u svakom trenutku znati koja poslovnica koristi koja skladišta, dok i koje skladište poslužuje koje poslovnice.

Relacija više na više Relacija više na više
Poruka je uređivana zadnji put pon 14.12.2009 14:54 (Tracer).
Moj PC  
3 0 hvala 0
17 godina
neaktivan
offline
Dizajn baze

pa u biti baza je od pocetka zamisljena kao 'master-detail' i da bude normalizirana do razine 2.

sto se tice odnosa poslovnica-skladište logično je da su odvojeni, u biti tako san ih i napravia, al ne be tija da kasnije u razvoju naletin na neki problem koji će dovest do toga da je bilo bolje da san strpa sve u jednu tablicu.

Checked-out since 1983
 
0 0 hvala 0
17 godina
protjeran
offline
Dizajn baze

Teško da ćeš na takav problem naletiti Namigiva Zapravo, ne znam da li takav problem uopće mogu i zamisliti. Ovako su podaci baš organizirani onako kako trebaju biti.

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Dizajn baze

Data warehouse :-D?

Jedini primjer u cijeloj mojoj 'karijeri' gdje sam vidio da netko denormalizira schemu.

Svi mi svakodnevno putujemo kroz vrijeme i to brzinom od jedne sekunde u sekundi. -hrx
 
0 0 hvala 0
17 godina
protjeran
offline
Dizajn baze

Ima svakakvih ljudi. Bio sam na jednom seminaru za SQL server gdje čovjek otvoreno kaže "normalizacija je za kukavice" Smijeh. Došlo mi da se smijem. A neki su ga i pošteno "popljuvali". Smijeh

Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Dizajn baze

u firmi u kojoj radim, dizajn baze za financijski sustav na kojem radimo je blago rećeno očajan. od početka nije napravljen kako triba, ljudi koji su to započeli su otišli, a ovo koji su ostali samo krpaju sta mogu. svaka promjena u programu zahtjeva poprilično posla. UŽAS!

sad kad god poćinjen novi program prvo se uvatin dizajna baze. normalizacija obavezna! Smijeh

 

Checked-out since 1983
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Dizajn baze
st.srki kaže...

u firmi u kojoj radim, dizajn baze za financijski sustav na kojem radimo je blago rećeno očajan. od početka nije napravljen kako triba, ljudi koji su to započeli su otišli, a ovo koji su ostali samo krpaju sta mogu. svaka promjena u programu zahtjeva poprilično posla. UŽAS!

sad kad god poćinjen novi program prvo se uvatin dizajna baze. normalizacija obavezna! Smijeh

 

Ako moze savjet.

 

Pogresan pristup.

Zvuci smijesno, ali ova lekcija dolazi iz onoga sto uce RAD alati i odlicno funkcionira - prva stvar koje se moras uhvatiti je GUI. U principu kad nesto kreces razvijati nikad ne znas sto ti tocno treba, pa ljudi cesto ili ne naprave sve sto treba, ili naprave previse pa imas funkcionalnost koja je nepotrebna, koja je dodatni izvor bugova i otezava citanje programa.

Kad napravis GUI, znat ces ugrubo sto ti tocno treba, pa se onda uputi prema arhitekturi poslovnog modela. Nastoji uopce ne razmisljati o bazi nego sve podatke drzi u malim data-objektima koje mozes shiftati okolo po bussines layeru i u principu, aplikacija ti _mora_ raditi bez problema dokle god mozes nekako iskontruirati te data objekte. Odlicno za testiranje, jer mozes podatke inicijalizirati prilikom startupa ili jednostavno citati iz nekog XML serijaliziranog filea. Sta god.

 

Kad si siguran da ti aplikacija radi, dodaj ili zamijeni zadnji sloj sa radom na bazu i optimiziraj po potrebi. Ako si slijedio OOP prakse ovo ce biti vrlo jednostavno, a ako si se drzao principa da ti data-objekti budu lightweight, mapping ce biti vrlo jednostavan.

 

Iako vecina dbadmina pokusava desetljecima tvrditi suprotno, baza je u srzi vrlo efikasan storage system, to joj je primarna namjera i to bi joj primarna namjera trebala ostati.

Svi mi svakodnevno putujemo kroz vrijeme i to brzinom od jedne sekunde u sekundi. -hrx
17 godina
protjeran
offline
RE: Dizajn baze
Deus ex machina kaže...

Iako vecina dbadmina pokusava desetljecima tvrditi suprotno, baza je u srzi vrlo efikasan storage system, to joj je primarna namjera i to bi joj primarna namjera trebala ostati.

90% DB aplikacija koje sam napravio (a ima ih nekoliko stotina) su klijentski orjentirane, i to sasvim dobro funkcionira čak i u višeklijentskom okruženju. Međutim, ono "idealno" po meni bi bio serverski orjentirani pristup gdje baza osim storage funkcije ima i funkcionalnost same obrade podataka. Znači, klijent bi trebao biti tek školjka koja poziva stored procedure. One će se na serveru izvršiti puno brže, te su mnogo prikladnije u slučaju izmjene funkcionalnosti. Tada se ne mijenja klijent već samo procedura na serveru jer je lakše izmjeniti nju nego npr. 20ak klijenata, a kamoli stotine ili tisuće.

 

Također, rekao bih da je model (dizajn) baze zapravo najvažnija stvar jer to predstavlja nekih barem 70% posla. Kada se ispravno definira tok podataka (u čemu je najveći broj grešaka) onda se radi model baze. Znači, imaš nekakvu priču pred sobom: "Štef iz skladišta S1 nosi materijal poslovnici P1, dok poslovnica P1 taj materijal prosljeđuje skladištu S2 i S3 itd itd..". I tu je već jasno kakva je veza među podacima, kakav treba biti referencijalni integritet itd.. A kako ćeš ti to rješiti na klijentskoj strani (ako uopće takav pristup želiš) je sasvim druga stvar. Možeš radi testiranja to raditi i lokalno (npr. xml) pa kasnije replikacijom prebaciti na server. Tu je već tehnika na milijune, no niti jedna neće dati zadovoljavajuće rezultate ako baza nije dobro postavljena od samog početka jer u krajnjoj liniji i GUI tek radi s podacima.

 

 

17 godina
neaktivan
offline
Dizajn baze

slažem se da je baza tu da služi za spremanje podataka, ali je u biti i jezgra onoga na čemu se radi. ako ne dizajniraš bazu kako triba, barem onaj osnovni dio odakle poćinješ, ni najbolja napisana aplikacija ti neće imat smisla. planiranje, planiranje i samo planiranje a tek onda posao!

Checked-out since 1983
 
0 0 hvala 0
16 godina
neaktivan
offline
Dizajn baze

Slazem se da je dobra stvar u bazu postaviti stored procedure za komplicirani visestruki insert, ali dodavati logiku u bazu je cisto overloadanje odgovornosti. To je posao za application server.

Ne zagovaram izradu rich-klijenata, vec pokusavam objasniti da poslovni model podataka != baza. Baza samo sluzi da se ti podaci spreme, odnosno, idealno bi samo tome trebala sluziti. Brzo spremanje, brzi update, i jos brza pretraga. Modificiranje podataka, kalkulacije, etc - aplikacijski server. Kako vidim jednako razmisljamo, samo sto ja ne zovem te relacije 'baza' nego 'poslovni model' - baza je za mene iskljucivo samo software koji podatke sprema i brzo pretrazuje.

 

Tracer, tvoja poanta sa bazom stoji ako negiras vrlo bitan argument koji sam ja dao, a to je cinjenica da u vecini slucajeva ne mozes ocekivati definirani model podataka i relacije unaprijed, a kamoli ocekivati da se to nece mijenjati. Odrzavati jedan kompleksan sistem kakav je baza je puno teze dok je aplikacija u razvoju, i taj dio se jednostavno treba ostaviti na kraj, ako zelis najbolje rezultate. U zadnjem dvogodisnjem projektu sam od pocetka do kraja primjenio tu filozofiju i baza se dodala u finalni produkt tek u zadnja 4 tjedna. U medjuvremenu smo koristili filesystem storage uz 'inteligentnu' refleksiju koja je automatski prepoznavala kako spremiti i updateriati objekte. Definitivno nije optimizirano, ali je za development dusu dalo, jer se ne trazi odrzavanje.

 

Zbog istog tog razloga 'planiranje planiranje planiranje' pada u vodu jer klijenta ne interesira planiranje, klijent hoce aplikaciju i moze se predomisliti svake sekunde.

 

Ostavit cu par linkova za kraj, pretpostavljam da su prva dva po redu obojici poznati:

http://en.wikipedia.org/wiki/Three-tier

http://en.wikipedia.org/wiki/Extreme_programming

 

Ostatak se vise odnosi na paradigme i moderne ideje, i ja stojim iza njih ko kamen jer su se za timove koje sam ja vodio pokazale kao pun pogodak.

http://en.wikipedia.org/wiki/Service-oriented_architecture

http://en.wikipedia.org/wiki/Business_model

http://en.wikipedia.org/wiki/Domain_specific_language

 

Svi mi svakodnevno putujemo kroz vrijeme i to brzinom od jedne sekunde u sekundi. -hrx
Poruka je uređivana zadnji put uto 15.12.2009 14:53 (Deus ex machina).
 
0 0 hvala 1
17 godina
neaktivan
offline
Dizajn baze

baza se jednostavno ne može ostaviti za kraj. u klijentskoj aplikaciji se bez baze moze samo simulirati rad sa bazom i to je sve. kad se počne raditi sa pravim podacima i kad sve uspori do toga da je rad nemoguć onde sve pada u vodu.

kažeš da si 2 godine radio na projektu na kojem je rađen samo dizajn i logika aplikacije. to možda u početku ima i smisla, da se klijentu "zamaže oči", al na kraju ćeš dobit program koji je pun bugova jer se nisu koristili pravi podaci. svako može otvoriti neki Designer i izdizajnirati par forma, al to nije to. ne može se baza napraviti u 4 tjedna za neki projekt od 2 godine. ako si to uspija(a da radi) svaka čast!

 

naravno da niko normalan neće planirat nešto godinu dana pa onda počet radit, al to se ipak mora napravit.

jedan moj bivši kolega je dobio zadatak da napravi jedan dosta veliki projekt za državnu firmu. naravno, odmah je počeo raditi na aplikaciji da bi imao šta pokazat klijentima. na kraju kad je skužija da program ne radi ono šta triba jer je više radija na dizajnu aplikacije nego na onome šta je važno (baza i podaci), otiša je iz firme. kad su to preuzeli drugi ljudi, nisu radili ništa dok nisu dobro definirali šta i kako da se radi. i na kraju rezultat nije izostao!

radio sam na puno vrsta programa, od game-enginea do multimedijalnih programa, kao i financijskih programa, i iz iskustva znam da ako se odmah počne programirat bez planiranja sve će biti puno teže...

Checked-out since 1983
 
1 0 hvala 0
17 godina
protjeran
offline
RE: Dizajn baze

@Deus ex machina

 

 

Ljudi koji niti sami ne znaju što žele uvijek će predstavljati veći trošak nego zaradu. Čak niti ja kao freelancer nikada ne radim za onoga koji mi ne dade točnu specifikaciju zahtjeva, a kamoli da bi to trebala neka ozbiljna firma. Bez specifikacije zahtjeva ti prije svega nemaš dokaza da si napravio ono što se od tebe tražilo, i on te može vući za nos godinama sa svojim premišljanjima, i na kraju ti opet može jednostavno reći "nisam tako to (za)mislio". Stoga, ono što se navede u specifikaciji je sveta riječ i bez toga posao se niti ne počinje. A ako on hoće s vremena na vrijeme mijenjati specifikacije onda mu se prvo naplati dosadašnje odrađen posao, pa onda neka on mijenja što hoće i koliko god puta hoće, jer ja tada znam da ništa ne radim badava. A ako firma na osnovu specifikacije zahtjeva nije u stanju napraviti fiksni model onda takva firma je neozbiljna i sama sebi stvara viška posla. Model mora biti strogo i unaprijed definiran. Validiran pravilima i provjeren nekim testnim podacima tj. da li na osnovu raspoloživih ulaza se u RAZUMNOM VREMENU dobije TOČAN i VALIDIRAN izlaz u ŽELJENOM OBLIKU. I to je cijela filozofija.

 

No opet, današnje vrijeme za neke firme je dosta teško pa prihvaćaju bilo kakve poslove. Ali zato imaju ljude koji su specijalizirani samo za ovakve stvari: Da unaprijed definiraju i provjere tok podataka i da za programere prirede model baze.

Poruka je uređivana zadnji put uto 15.12.2009 15:51 (Tracer).
17 godina
offline
Dizajn baze

Inače slažem se sa Deus-om što se tiče odvajanje poslovne logike i baze. Danas kad je skoro već cijeli svijet povezan update klijentske aplikacije na novu verziju je najmanji problem. Baza bi trebala biti samo "storage and browse" sistem. To što su Oracle (pa onda i kasnije drugi) gurali svoj nos u "razvoj na bazi" smatram dosta lošom politikom. Oni to naravno nisu radili zbog poboljšanja arhitekture, nego zbog povećanja ovisnosti o Oracle rješenjima, čim se povećava i prihod firme. Danas kad svatko na stolu ima "mrcinu" od računala, dosta "glupo" je poslovnu logiku stavljati na server i onda  koristiti ta računala samo za prikaz podataka.

TO je jedan razlog, drugi je "razvoj" koji se obavlja na bazama. Većina baza koristi Proceduralne jezike (PL ili neki njegovi portovi) za svoj razvoj, pa moje pitanje glasi : "Čemu se vraćati na nešto što smo već jednom prošli??". Jednostavno nema dosta dobar razlog za prebacivanje poslovne logike na server.

 

I naravno, puno lakše je dignuti samo čistu bazu (koja se koristi za spremanje i čitanje podataka), nego cijelu poslovnu logiku koja se nalazila na bazi, a puno puno lakše je raditi update strukture baze podataka, kad se na njoj ne nalazi poslovna logika (znam iz osobnog iskustva)

P.S. U poslovnu logiku ne smatram "data verify" koji se obavlja kod upisa pomoću procedura, ili "data format" koji se obavlja pomoću Cursora i funkcija. To potpuno podržavam da se nalazi u bazi.

 

Što se ne slažem s Deus-om, jest da se baza radi zadnja. Ovisi od aplikacije do aplikacije. Ako su podaci sa baze "srce" aplikacije,a ne samo usporedno spremanje podataka, tada se kreće uvijek od baze (definiranjem strukture, objekata itd), pa se na nju stavlja aplikacija (visualni dio i poslovna logika). Ako su podaci samo usporedno spremljeni u bazu, tada se može lagano prvo napraviti sva logika, a baza se napravi kasnije....

 

Što se tiče definiranja dokumentacije za izradu neke aplikacije, se potpuno slažem sa Tracerom. Prvo sjedneš sa poslodavcem (ako si freelancer), napravi se neka početna dokumentacija i zahtjevi, nakon što se naprave zahtjevi, vrši se plaćanje tih zahtjeva od poslodavca, a tada se nastavlja dalje. Tako se prolazi kroz sve faze razvoja aplikacije, pa do punog proizvoda.

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
 
0 0 hvala 0
16 godina
neaktivan
offline
Dizajn baze

Kao sto sam vec napomenuo, ne koristim izraz 'baza' za relacijski podatkovni model. Jer 'baza' je obicno sinonim za software koji omogucava relativno jednostavnu izradu relacijskog podatkovnog modela. S obzirom da sam proveo odredjeno razdoblje zivota radeci u PL/SQL-u, definitivno se zalazem da se poslovna logika izradjuje u 1. Jeziku koji nije PL/SQL i 2. Van baze. To je argument na 'poslovna logika u bazi', koji je barem po mojem iskustvu pregazen sa jednim dobrim aplikacijskim serverom, thin klijentom i dobrom brzom bazom koja excelira na jednostavnom DML-u. Razvijati poslovni model u nekom modernijem razvijenijem jeziku, sa dobrim compilerom i odlicnim IDE-om je po meni mandatory, i poslove koji to ne dopustaju vise niti ne prihvacam, iz jednostavno razloga sto 'nizi' jezici koce produkciju i vise vremena se trosi na debugiranje i boilerplate, nego na proizvodnju onoga sto je bitno. Podcrtano, vise kosta. Hocu jezik koji omogucava dobru refleksiju i hocu IDE gdje mogu stisnuti Shift-F6 i napraviti rename refactoring po cijelom codebaseu, bez da se pitam da li je nesto ostalo nepromijenjeno.

Ljudi koji inace rade enterprise aplikacije u Javi su ove cinjenice malo 'svijesniji' od programera C# i drugih, nazalost. Nije stvar u Javi kao jeziku, nego u Javi kao platformi - za niti jedan drugi jezik ja nisam vidio toliko siroku paletu mocnih frameworka i librarya, za apsolutno sve domene razvoja. Od igara do ERP platformi. Sa C#om eksperimentiram zadnjih mjeseci, i otkrio sam da VisualStudio sa Resharperom tvori jedan solidan IDE u kojem se moze lijepo raditi - ali me Microsoftova filozofija pisanja librarya, koja veze nema sa OOP standardnima i patternima jednostavno ubija. A tu je i problem nedostatka velikog broja istestiranih, zrelih opensource librarya koji tvore jednu solidnu platformu na kojoj covjek moze mirno raditi i dostaviti software.

 

 

Sto se tice GUI-first filozofije, nikad mi se u zivotu nije dogodilo da klijent unaprijed zna sto zeli, ako nema izvrsno definiran poslovni proces ili ideju kako ga poboljsati. Klijenti se obicno pojavljuju s objasnjenjem toga sto zele, a ne objasnjenjem svojeg poslovnog procesa i idejom kako ga poboljsati. Krenuvsi putem da napravim tocno ono sto klijent zeli dovest ce do toga da sam mu dostavio aplikaciju koja mu je beskorisna, i to je vrlo popularna stvar na nasim prostorima - izmedju ostalog, jedan od razloga zbog cega dosta firmi vrti stari software pisan u Cobolu. Novi je deset puta gori.

 

Barem u mojim poslovnim vodama, od klijenta se zatrazi da posalje eksperta na teren (tj. u nasu firmu) ili da makar dostavi opis svojeg poslovnog procesa. Onda to prodje kroz ruke nasih eksperta koji traze repeticije i grind, koji se mogu softwareom automatizirati. Cak i kad je ovaj proces prosao savrseno (a jos nikad nije), nikad se nije dogodilo da je jedna strana iskomunicirala drugoj savrseno u detalje ono sto je potrebno. Uvijek su tu miskomunikacije, nerazumijevanje prioriteta, etc.

 

I apsolutno nam je sve to "DZABE" ako ne pokazemo klijentu kako to izgleda, iz jednostavnog razloga jer klijenta ne interesira relacijski podatkovni model. Njega interesira GUI, interesira ga da se aplikacija ne krsi, interesira ga da ne mora investirati u novi hardware i interesira ga da mu grafovi pokazu poboljsanja u produktivnosti.

Da bi se ti njegovi zahtjevi ispunili, aplikaciju je potrebno shiftati lijevo-desno nebrojeno puta, izmedju nas i njegovih poslovnih experata, i potrebno je obavezno imati ispoliran GUI. Jer ako mi imamo neki sasvim dobar feature koji od krajnjeg korisnika trazi da na ruke uredjuje XML - onda ne treba cekati dugo da klijent kaze "To nije ono sto smo trazili, hvala i dovidjenja".

Po mojem iskustvu, ako vasi klijenti unaprijed imaju dobro definiran poslovni proces i model, i od vas uopce ne traze poboljsanje vec samo novu aplikaciju koja je u principu novi skin koji radi na windowsima, ja vas smatram sretnicima. Nasi klijenti definitivno nemaju pojma sto zele, osim cinjenice da imaju novac koji zele spiskati na nas proizvod. Komunikacija je kljucna, kao i sto brze promjene.

 

Sto se tice osobnog rada, dakle na nivou jedne osobe, kad dobijes za task implementirati neki feature - recimo, klijent mora biti sposoban preko jedne forme isprintati svoje reporte ili ih prikazati na ekranu - najbolje sto mozes je krenuti od GUI-a. Svaka cast ako ti je reporting engine super-mocan, ali to nikoga ne briga ako ti je gui katastrofa. Zato lijepo krenes i kalkuliras da ti gui bude sto jednostavniji, sto manje klikova, sto manje kontrola, sto vise pameti. Klijent uz sto manje citanja i sto manje klikova mora dobiti tocno ono sto zeli.

Tek kad si to napravio, ONDA mozes znati kakav tocno linking-layer izmedju modela u guiu (mislim na MVC design pattern) i poslovne logike moras sastaviti. Gdje ces ubaciti auto-completition. Gdje ces popraviti datum automatski. Gdje ces biti pametan za korisnika tako da on ne mora biti. I tek kad si to ispolirao kako treba, onda mozes razmisljati o slanju HTTP requesta na application server da bi dobio kalkulacije reporta natrag.

 

 

Sve novotarije u poslovnom programiranju postoje iskljucivo zato da bi se cim brze inkorporirale promjene u aplikaciju, a bez da se codebase zasmrdi toliko da ga se vise ne moze odrzavati. Dovoljno je pogledati Domain Model Architecturing, Service Oriented Programming, Code generation i ostalu gomilu trendi-rijeci i trendi-siteova da bi se vidjelo da vode nisu uzburkane oko toga jer manageri vole nove rijeci, nego zato jer programeri i arhitekti trebaju nove i snaznije alate i paradigme da bi u istim rokovima izgurali sve kompleksniji software

 

 

Cisto na kraju, jos jedan mali bottoms-ground argument - Hibernate i NetHibernate ORM framework, najpopularniji ORM library trenutno na trzistu.

Da se aplikacije razvijaju iskljucivo od baze pa nagore, taj vrlo popularni framework ne bi razvio svoj DML jezik nazvan HQL, i ne bi dopustao jednostavan retargeting persistence layera (trenutno je izbor Oracle, MySQL, Postgres i HypersonicSQL) uz jedan parametar.

Nikoga ne bi bilo briga za tu opciju.

 

Cheers!

Svi mi svakodnevno putujemo kroz vrijeme i to brzinom od jedne sekunde u sekundi. -hrx
Poruka je uređivana zadnji put sri 16.12.2009 13:53 (Deus ex machina).
 
0 0 hvala 1
17 godina
protjeran
offline
RE: Dizajn baze

Ne znam s kakvim klijentima radite, no ja se još nisam susretao s onima kojima je GUI važniji od funkcionalnosti. Nerjetko bi bili presretni kada bi im poslao neku testnu verziju software-a kojemu su gumbi svugdje po formi i objekti tek toliko smješteni da su na prozoru, ali da to radi ono što njima treba. Pravo sastavljanje GUI-a je tek nešto što se po meni treba raditi u završnoj fazi izrade software-a. Tu treba ubaciti malo detalja glede šminke (za tu vrhu mogu poslužiti i na stotine 3rd party komponenata), te posvetiti pozornost user-friendly sučelju, a to je najmanji problem ako se slijede pravila ergonomije software-a. Npr.:

 

http://web.zpr.fer.hr/ergonomija/2001/marici/gui.pdf

 

Sve je to nešto što bi se reklo da je već unaprijed propisano i samo treba fizički odraditi. No, planiranje i dizajn baze nije nešto što je tako trivijalno i jednostavno jer ako se to ne napravi odmah kako spada onda se i dolazi do problema tipa da aplikacija nema mogućnost da nešto napravi, ili da to radi puno sporije. A da ne spominjem kasnije komplikacije ako je riječ o izmjenama nekih ključnih funkcionalnosti.

 

I opet kažem, zaista se počesto zna dogoditi da klijent ne zna što želi, ali za to baš i postoje ljudi koji će to utvrditi. Ljudi koji će otići u tu firmu, ispitati tijek poslovnih procesa, tok informacija, dokumenata, i koji će na osnovu toga za programere prirediti gotovi model baze. Tada programer to samo "nakuca" u nekom programskom jeziku i to je to. Zato ta osoba koja to sve ispitiva i priređuje za programera nerjetko ima i duplo veću plaću od njega.

16 godina
neaktivan
offline
RE: Dizajn baze
Tracer kaže...

Sve je to nešto što bi se reklo da je već unaprijed propisano i samo treba fizički odraditi. No, planiranje i dizajn baze nije nešto što je tako trivijalno i jednostavno jer ako se to ne napravi odmah kako spada onda se i dolazi do problema tipa da aplikacija nema mogućnost da nešto napravi, ili da to radi puno sporije. A da ne spominjem kasnije komplikacije ako je riječ o izmjenama nekih ključnih funkcionalnosti.

To se zove premature optimization in my language :-)

Nitko, ni bog ne zna sto je sporo ili sto nije modularno dok se aplikacija izradjuje. Ja konstruiram po prirodi vrlo modularne komponente, ali definitivno svako toliko uleti neka izmjena na koju nisam mislio. Zato svakodnevno zahvaljujem bogu na tome sto je izmislio OOP i interface.

A kasnije profiler odlicno posluzi da vidim sto trebam popraviti da bude brze.

 

Tracer kaže...

I opet kažem, zaista se počesto zna dogoditi da klijent ne zna što želi, ali za to baš i postoje ljudi koji će to utvrditi. Ljudi koji će otići u tu firmu, ispitati tijek poslovnih procesa, tok informacija, dokumenata, i koji će na osnovu toga za programere prirediti gotovi model baze. Tada programer to samo "nakuca" u nekom programskom jeziku i to je to. Zato ta osoba koja to sve ispitiva i priređuje za programera nerjetko ima i duplo veću plaću od njega.

To nisam vidio za 9 godina svojeg radnog iskustva, od toga zadnje dvije godine u produkciji video igara.

Mislio sam da taj odnos arhitekt/programer postoji jos samo u povijesnim knjigama, Hrvatskom Vodovodu, vojsci ili nekoj slicnoj monolitnoj organizaciji koja se nije maknula iz prapovijesti pisanja softwarea.

 

Onako zaozbiljno, programera koji zna samo 'nakucati' kod ni ne zaposljavam - za to mi sasvim dobro sluzi code generator koji taj posao obavlja puno bolje.

 

Povlacim se iz teme, cheers!

 

 

Edit:

zaboravio sam se zahvaliti za PDF o GUI-u, cini se dosta korisno stivo! Hvala :-)

Svi mi svakodnevno putujemo kroz vrijeme i to brzinom od jedne sekunde u sekundi. -hrx
Poruka je uređivana zadnji put sri 16.12.2009 15:23 (Deus ex machina).
17 godina
neaktivan
offline
Dizajn baze

 

Dizajn softvera po DB-First modelu je loš i pogrešan. Ono što DeusExMachina tvrdi je da GUI i ono što moderno zovemo User Experience (UX) mora biti imperativ i u uskoj simbiozi s funkcionalnostima.

Arhitekt softvera, primarno ono čime se bavim, mora dizajnirati infrastrukturu softvera i elemente na principu da ide od UX-a i da na UX-u bazira sve, a sve ostalo je rješenje problema pri ostvarivanju tog cilja.

Sam model razvoja interne arhitekture aplikacije mora služiti bihevioralnom modelu te aplikacije i funkcionalnom rasterećenju održavanja nakon puštanja u produkciju.

 

Dakle, DB-first je loš. Prvo posloži što korisnik želi, pa presjek s onim što mu treba, pa presjek toga s onim što spada u finalnu studiju od ergonomiji sučelja i UX-a. Nakon toga prema definiranim funkcionalnostima generiraš arhitekturu koju trebaš da softver radi minimalno što treba i da bude što manje bugovit.

KISS i YAGNI ne znače nužno niti često da trebaš reducirati kompleksnost arhitekture, već da ta arhitektura mora biti što fleksibilnija i čišća da bi se granulacija softvera mogla razlikovati, a održavanje i naknadni razvoj i nadogradnje da budu maksimalno jednostavne i da prate convention over configuration.

Vjerovali ili ne, ali DB je danas samo dump; interno rješenje za spremište koje DAL koristi, a koje mora biti promjenjivo kao čarape i softver, tj. poslovna logika softvera, ni u kojem se slučaju ne smije mijenjati zbog baze ni zbog klijenta/sučelja, već mora biti perzistentna.

Sve što sam napisao nije mišljenje BUG d.o.o., nego je isključivo moje mišljenje na koje imam pravo po članku 38. Ustava Republike Hrvatske koji jamči slobodu mišljenja i izražavanja misli.
Poruka je uređivana zadnji put čet 1.7.2010 14:06 (naxeem).
Moj PC  
1 1 hvala 1
17 godina
protjeran
offline
RE: Dizajn baze
Deus ex machina kaže...

..To nisam vidio za 9 godina svojeg radnog iskustva, od toga zadnje dvije godine u produkciji video igara.

Mislio sam da taj odnos arhitekt/programer postoji jos samo u povijesnim knjigama, Hrvatskom Vodovodu, vojsci ili nekoj slicnoj monolitnoj organizaciji koja se nije maknula iz prapovijesti pisanja softwarea.

 

Onako zaozbiljno, programera koji zna samo 'nakucati' kod ni ne zaposljavam - za to mi sasvim dobro sluzi code generator koji taj posao obavlja puno bolje.

Onda moram priznati da prema svemu ovome što si napisao radiš u jako čudnoj firmi koja se prihvaća posla za kojeg niti ne zna što na kraju treba napraviti i koji rezultat treba ispasti jer u svakom trenutku dopušta klijentu da se samo tako premišlja, koja niti sebe ne osigura da može na kraju reći da je obavila posao i koja GUI stavlja ispred baze, jer baza predstavlja podatke a GUI je tek školjka koja radi s bazom. A što se tiče "arhitekta", sa mnom rade trenutno trojica kojima je isključivo to posao - a programeri su im do neba zahvalni jer bar znaju da njihov posao se temelji na dobro provjerenim informacijama o razmjeni podataka i potrebama pojedinih sektora poslovanja, a ne da još programeri moraju glumiti i marketinške stručnjake, ekonomiste i računovođe pa se misliti s kakvim oni podacima rade i što će im sve trebati ili ne.

 

A što se tiče "nakucati", tu mislim na onaj dio posla kada treba fizički napisati program, a to i nije neki problem kada jednom pred sobom imaš sve pripremljeno i poznato.

 

I isto tako, produkcija video igara se ne može uspoređivati s analizom nekom poslovanja, sastavljanjem i modeliranjem baze. Koliko god bio dobar u programiranju nikada ne možeš toliko kvalitetno unaprijed sastaviti bazu ukoliko nisi analizirao IO procese, a to nije posao programera.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice