<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>msc-studij &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/msc-studij/</link>
	<description>Feed of posts on WordPress.com tagged "msc-studij"</description>
	<pubDate>Tue, 29 Dec 2009 14:57:22 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Objektno oblikovanje – što je sad pak to ?]]></title>
<link>http://cppbilder.wordpress.com/2008/07/06/objektno-oblikovanje-%e2%80%93-sto-je-sad-pak-to/</link>
<pubDate>Sun, 06 Jul 2008 14:16:24 +0000</pubDate>
<dc:creator>Zvonimir Vanjak</dc:creator>
<guid>http://cppbilder.wordpress.com/2008/07/06/objektno-oblikovanje-%e2%80%93-sto-je-sad-pak-to/</guid>
<description><![CDATA[Ako ste zbunjeni sintagmom „objektno oblikovanje“ te ste pomislili da se radi o nekoj novoj formi ap]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p class="MsoNormal">Ako ste zbunjeni sintagmom „objektno oblikovanje“ te ste pomislili da se radi o nekoj novoj formi apstraktne umjetnost – <em>relax</em> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Nema tu nikakve „umjetnosti“ već se radi o hrvatskoj inačici svakom developeru dobro poznatog termina <em>object design</em>.</p>
<p class="MsoNormal">
<p class="MsoNormal">O objektnom dizajnu će se na ovom blogu još puno pričati, a za ovaj post je bitno da je to (i) <strong>naziv predmeta koji ću predavati u prvom semestru diplomskog (M.Sc.) dijela studija koji na FERu starta u mjesecu rujnu</strong>. Kako su mi se počeli javljati studenti s upitima „o čemu se tu radi“, a službena verzija opisa predmeta koja je nastala prije jedno tri godine kad se slagao <em>curriculum</em> za FER-2 studij (po Bolonji) je pomalo <em>outdated</em> (preciznije, u međuvremeno je značajno dorađena), mislim da nije zgorega malo detaljnije opisati teme koje će se obrađivati na predavanjima, kako će organizacijski sve to izgledati, a i što će se očekivati od studenata koji upišu predmet <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p class="MsoNormal">
<p class="MsoNormal">Pa, za početak o organizaciji.</p>
<p class="MsoNormal">
<p class="MsoNormal">Predmet nosi za izborne predmete standardnih 5 ECTS bodova, ima opterećenje od 45 sati predavanja (ie. 3 sata predavanja tjedno) i „klasičnu bolonjsku“ organizaciju, što se najbolje vidi i po načinu, odnosno kompoziciji bodovanja za završnu ocjenu:</p>
<p class="MsoListParagraph" style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span class="label1"><span><span>-<span style="font-family:&#34;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span></span><!--[endif]--><span class="label1"><span>blicevi 10 %</span></span></p>
<p class="MsoListParagraph" style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span class="label1"><span><span>-<span style="font-family:&#34;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span></span><!--[endif]-->d<span class="label1"><span>omaće zadaće 15% bodova</span></span></p>
<p class="MsoListParagraph" style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span class="label1"><span><span>-<span style="font-family:&#34;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span></span><!--[endif]--><span class="label1"><span>međuispit 20% </span></span></p>
<p class="MsoListParagraph" style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span class="label1"><span><span>-<span style="font-family:&#34;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span></span><!--[endif]--><span class="label1"><span>završni ispit: 35% </span></span></p>
<p class="MsoListParagraph" style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="color:black;"><span>-<span style="font-family:&#34;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><!--[endif]--><span class="label1"><span>izrada seminarskog rada: 20%.</span></span><span style="color:black;"></span></p>
<p class="MsoNormal">
<p class="MsoNormal">Ili, kako se to službeno po FERu kaže: „Kontinuirana provjera znanja“ <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Naravno, to će i dalje nažalost/vjerojatno značiti pet šest (7-8!?) „kampanjskih sprinteva“ za studente, gdje će neki trajati dan-dva, a neki i cijeli tjedan, ali to valjda tako mora biti <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p class="MsoNormal">
<p class="MsoNormal">A što će se na predmetu raditi/učiti ?</p>
<p class="MsoNormal">
<p class="MsoNormal">U jednu rečenicu – <strong>kako primjeniti/iskoristiti tehnike objektno (orijentiranog) dizajna s ciljem što efikasnijeg razvoja informacijskih sustava</strong>!</p>
<p class="MsoNormal">
<p class="MsoNormal">Naravno, ovakav opis je vrlo širok i potrebno ga je malo suziti i preciznije definirati jerbo na FERu <span> </span>već ima predmeta, čak bih rekao i podosta <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , koji su posvećeni „tehnikama za efikasniji razvoj informacijskih sustava“.</p>
<p class="MsoNormal">
<p class="MsoNormal">A specifičnost ovog predmeta, odnosno ono po čemu ga planiram napraviti ponešto različitim od postojećih, je sadržana u samom nazivu – <strong>OBJEKTNO oblikovanje</strong>.<span> </span>Ukratko bi se moglo reći &#8211; <em>objects to the core</em>.</p>
<p class="MsoNormal">
<p class="MsoNormal">Jer, ako ćemo pričati o načinima za savladavanje sve veće složenosti modernih softverskih sustava, što je u stvari vječiti izazov <em>software developmenta</em>, iz mog, sad već 20-godišnjeg iskustva s programiranjem proizlazi jedan nedvosmisleni zaključak – <strong>objektno-orijentirana paradigma<em> is your best friend</em></strong>!</p>
<p class="MsoNormal">
<p class="MsoNormal">Apstrakcija i enkapsulacija u borbi sa složenošću softvera predstavljaju najjače (a često i jedine!) vojnike, i iako su u računarskoj znanosti oba principa otkrivena/identificirana poprilično davno (Parnasov princip „<a href="http://en.wikipedia.org/wiki/Information_hiding">Information hidinga</a>“ još tamo iz 70-tih!), tek je objektno-orijentirana paradigma apstrakciju i enkapsulaciju postavila kao „kamen temeljac“ razvoja softverskih sustava!</p>
<p class="MsoNormal">
<p class="MsoNormal">„Ma sve je to lipo Zvone, ali čuj, danas ti SVI programiraju po OOPu!?“</p>
<p class="MsoNormal">
<p class="MsoNormal">Da, ali ipak ne <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p class="MsoNormal">
<p class="MsoNormal">Jer, prepakiravanje proceduralnog programskog kôda u nekoliko klasa sa članskim varijablama i funkcijama NIJE OOP! Ili, da budem precizniji, takvim pristupom OOPu se neće dohvatiti puni potencijal koji objektno-orijentirani način razvoja softvera pruža!</p>
<p class="MsoNormal">
<p class="MsoNormal">Kako identificirati objekte (u stvari klase iz kojih se instanciraju), kako ih softverski modelirati i prilagodili „virtualnom svijetu“ objektnog modela, kako i na koji način ustanoviti kolaboraciju među tim objektim, kako ih uklopiti u arhitekturu cjelokupnog sustava &#8230; sve su to vrlo važna (da ne kažem krucijalna) pitanja koja daleko nadilaze „tehničke aspekte“ OOP-a (što je članska funkcija, što je članska varijabla, što je private/public, što je nasljeđivanje i slično &#8230;).</p>
<p class="MsoNormal">
<p class="MsoNormal">I to je područje objektnog dizajna kojim ćemo se baviti na ovom predmetu.</p>
<p class="MsoNormal">
<p class="MsoNormal">S obzirom da sâm objektni dizajn nije zatvorena (<em>self-contained</em>) tehnička disciplina, odnosno da egizstira primarno kao dio procesa razvoja softvera, na predavanjima će se određeno vrijeme posvetiti i stavljanju OO dizajna u kontekst tog procesa, s posebnim naglaskom na moderne tehnike agilnog razvoja softvera.</p>
<p class="MsoNormal">
<p class="MsoNormal">Početi ćemo s uvodnim predavanjem, <span> </span>s (radnim) nazivom „<em>Software development is hard“, </em>na kojem ćemo„urakljiti“ problem, odnosno identificirati faktore koji razvoj softvera čine teškim te raspraviti razloge koje OO paradigmu čine privlačnom.</p>
<p class="MsoNormal">
<p class="MsoNormal">Nakon toga ćemo u „pripremnom“ dijelu odraditi kratki (i ubrzani!) tehnički uvod u osnove OO programiranja, te vidjeti kako organizirati proces prikupljanja i analize zahtjeva (<em>requirementsa</em>) a da se taj proces prirodno uklopi u tehnike OO dizajna (<em>use case is the keyword here!</em>)</p>
<p class="MsoNormal">
<p class="MsoNormal">A po odrađivanju tog pripremnog dijela, ulećemo u bît predmeta – primjenu <strong><a href="http://en.wikipedia.org/wiki/Domain-driven_design">Domain-driven design</a> </strong>tehnika za razvoj softvera. Da li je to tehnika, ili možda metodologija, ili „samo“ vještina je tema za detaljnu razradu, ali ono što je ključno je da je pri primjeni DDD-a fokus na što vjernijem preslikavanju domene problema (= ono što bi softver trebao riješiti) u objektni model koji će biti osnova za softversku realizaciju.</p>
<p class="MsoNormal">
<p class="MsoNormal">Ukoliko ćete primjetiti da tehnika „<em>find the nouns</em>“ za identificiranje objekata uz pripadno vjerno preslikavanje objekata (entiteta) iz realnog svijeta u svijet virtualnih objekata <strong>i nije baš pripametna<em> </em></strong> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , ja ću se potpuno složiti s vama i reći da su stvari ipak značajno kompliciranije.</p>
<p class="MsoNormal">
<p class="MsoNormal">Kako definirati i u softveru realizirati model domene koji će što vjernije reprezentirati <em>problem space </em>(s primarnim ciljem olakšavanja komunikacije stakeholder – developer), <strong>a da taj model bude u skladu sa zahtjevima postavljenim na softver</strong> (odnosno da je u svojoj realizaciji primarno posvećen zadovoljavanju zahtjeva korisnika, a ne „vjernosti preslikavanja“ realni-&#62;virtualni svijet) je THE problem kojem ćemo se posvetiti na ovom predmetu.</p>
<p class="MsoNormal">
<p class="MsoNormal">Da ne bi sve bilo ovako apstraktno, kroz cijeli semestar ćemo u skladu s naučenim konceptima razvijati jedan <em>case study</em> (a sličnog formata će biti i seminarski rad koji će studenti trebati odraditi), a kao dodati bonus (iako to nije nikakav „bonus“ već <em>conditio sine qua non</em> –o čemu imam već DVA parcijalna posta <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) ćemo se pozabaviti i tehnikama <a href="http://en.wikipedia.org/wiki/Test-driven_development">Test Driven Developmenta</a> koje se prirodno slažu s DDD-om.</p>
<p class="MsoNormal">
<p class="MsoNormal">U tu priču će se lijepo uklopiti i Model-View-Controller (MVC) pattern koji je prirodni (čak i nužni!) suputnik i DDD-a i TDD-a, a reći ćemo ponešto i o Objektno-Relacijskom Mapiranju (triba negdje i spremit te podatke, jel&#8217; tako <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) – ukratko: <strong>forget ADO.NET, (N)Hibernate rulez</strong> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  !</p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal">„Lipo, Zvone, lipo, a reci ti nama ima li kakvih preduvjeta za uspješno savladavanje svih tih tema?“ – sad će se sigurno kogod javiti.</p>
<p class="MsoNormal">
<p class="MsoNormal">Ima, jasno da ima – i <strong>osnovni</strong> <strong>preduvjet je određeno iskustvo programiranja</strong>! Ako niste do sada odradili projekt s bar par tisuća linija programskog kôda (u bilo kojem programskom jeziku) i ako niste „na svojoj koži“ osjetili ubode složenosti softvera, onda će ova priča biti uvelika apstraktna. Ako ćeš se penjati na Mount Everest, onda je logično bar malo vježbati na onoj penjačkoj stijeni, prije nego se uputiš u Nepal <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p class="MsoNormal">
<p class="MsoNormal">Dakle, nije sve izgubljeno, ali ukoliko ste u takvoj situaciji, morate biti spremni na „dodatni angažman“ <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p class="MsoNormal">
<p class="MsoNormal">Pa vi vidite ima li tu za vas što zanimljivo, a naravno, svi komentari i pitanja su dobrodošli.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
