<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Simon says... architecture! » Notki po polsku</title>
	
	<link>http://simon-says-architecture.com</link>
	<description>Szymon Pobiega about software engineering and architecture</description>
	<lastBuildDate>Tue, 29 May 2012 06:43:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex,follow" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/szymonpobiega_pl" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="szymonpobiega_pl" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>74. spotkanie KGD.NET</title>
		<link>http://simon-says-architecture.com/2012/05/29/74-spotkanie-kgd-net/</link>
		<comments>http://simon-says-architecture.com/2012/05/29/74-spotkanie-kgd-net/#comments</comments>
		<pubDate>Tue, 29 May 2012 06:43:36 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[KGD.NET]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=1005</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Zapraszam na 74. spotkanie KGD.NET już w najbliższą środę, 30 maja o godzinie 18.30. Będziemy mieli okazję posłuchać Sebastiana Bełczyka (CoffeeScript) oraz Mirka Jedynaka (continuous delivery). Zapraszam do zapoznania się ze szczegółami spotkania i rejestracji tutaj.
]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Zapraszam na 74. spotkanie KGD.NET już w najbliższą środę, <strong>30 maja o godzinie 18.30</strong>. Będziemy mieli okazję posłuchać Sebastiana Bełczyka (CoffeeScript) oraz Mirka Jedynaka (continuous delivery). Zapraszam do zapoznania się ze szczegółami spotkania i rejestracji <a href="http://www.kgdnet.pl/events/65827182/">tutaj</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=-8GgJIRJ7rQ:VirVelLD-XY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=-8GgJIRJ7rQ:VirVelLD-XY:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2012/05/29/74-spotkanie-kgd-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prezentacja Continuous Delivery</title>
		<link>http://simon-says-architecture.com/2012/03/30/prezentacja-continuous-delivery/</link>
		<comments>http://simon-says-architecture.com/2012/03/30/prezentacja-continuous-delivery/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 07:38:08 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[build automation]]></category>
		<category><![CDATA[continuous delivery]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=997</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Wszystkich zainteresowanych tematyką Continous Delivery zapraszam na moją prezentację podczas 73. spotkania KGD.NET. Osoby, które nie mogą dotrzeć do Krakowa mogą, dzięki uprzejmości portalu VirtualStudy.pl oglądać sesję na żywo on-line. Strona spotkania na VS znajduje się tutaj.
Sesja jest wprowadzeniem w tematykę Continuous Delivery. W kilku słowach można powiedzieć iż CD jest to podejście do tworzenia [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Wszystkich zainteresowanych tematyką Continous Delivery zapraszam na moją prezentację podczas <a href="http://www.kgdnet.pl/events/57084552/">73. spotkania KGD.NET</a>. Osoby, które nie mogą dotrzeć do Krakowa mogą, dzięki uprzejmości portalu <a href="http://virtualstudy.pl/">VirtualStudy.pl</a> oglądać sesję na żywo on-line. Strona spotkania na VS znajduje się <a href="http://virtualstudy.pl/pl/component/jevents/icalrepeat.detail/2012/04/03/385/-/transmisja-z-73-spotkania-kgdnet">tutaj</a>.</p>
<p>Sesja jest wprowadzeniem w tematykę Continuous Delivery. W kilku słowach można powiedzieć iż CD jest to podejście do tworzenia oprogramowania kładące nacisk na traktowanie każdego commita jako potencjalnie wdrażalnego na środowisko produkcyjne. Każdy commit jest budowany, poddawany wielorakim testom (jednostkowym, integracyjnym, akceptacyjnym etc.), a ostatecznie wdrażany produkcyjnie.</p>
<p>Continuous delivery kładzie ogromny nacisk na automatyzację wszelkich czynności związanych nie tylko z budowaniem i instalacją aplikacji, ale także z przygotowaniem odpowiedniego środowiska.</p>
<p>Podczas sesji zaprezentuję konkretną implementację idei continuous delivery, którą zbudowałem wraz z moim zespołem w ramach ostatniego projektu. Jest to implementacja niskokosztowa (zero płatnych narzędzi) stworzona głównie w oparciu o PowerShell.</p>
<p>Zapraszam także na drugą (a właściwie w kolejności chronologicznej &#8212; pierwszą) sesję 73-go spotkania: <em>Pogromcy mitów: Czy specjaliści od użyteczności i programiści mogą ze sobą zgodnie współpracować?</em> Marcina Czyżowskiego.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=E7qwFnnOfAM:RIzwMkCiQIA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=E7qwFnnOfAM:RIzwMkCiQIA:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2012/03/30/prezentacja-continuous-delivery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2011 in books</title>
		<link>http://simon-says-architecture.com/2011/12/20/2011-in-books/</link>
		<comments>http://simon-says-architecture.com/2011/12/20/2011-in-books/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 19:39:41 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=888</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>December is traditionally a time of retrospective posts. Forgive me please but I simply can&#8217;t resist following this trend. I&#8217;d like to share with you my thought about books I read this year. Hope you&#8217;ll find it useful when deciding what to read next.
REST in practice  
This was the first Kindle book I bought. [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>December is traditionally a time of retrospective posts. Forgive me please but I simply can&#8217;t resist following this trend. I&#8217;d like to share with you my thought about books I read this year. Hope you&#8217;ll find it useful when deciding what to read next.</p>
<h3>REST in practice <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </h3>
<p>This was the first Kindle book I bought. After reading it I could say I love both the book and the device. I learnt quite a lot about the principles of REST. The hardest part was understanding why these hypermedia are so important but then came the moment of enlightenment. I can for sure recommend reading it.</p>
<h3>CSS: The Missing Manual <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </h3>
<p>I must admit I had quite high expectations that I will learn how HTML layouts work and how to efficiently position elements. It turned out to be a book about CSS syntax and very basic stuff I already knew.</p>
<h3>Management 3.0 <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </h3>
<p>I wanted to learn a little bit about management for quite some time and suddenly this book came out. I simply love all the analogies (i.e. to bacteria) Jurgen uses in the book to explain how such complex systems as software developer teams work. Recommended to everybody, even if you don&#8217;t plan to become a manager.</p>
<h3>Event Processing in Action <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </h3>
<p>Another high expectation book and another disappointment. I expected a good book on event-driven architectures but actually EPiA is a book about taxonomy and nomenclature of event systems. Not much more than a bunch of definitions.</p>
<h3>Dependency Injection in .NET <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h3>
<p>I bought it via Manning early access program and it was for sure not a waste of money. Although because I had some experience with DI before and have been up-to-date with blogs and tweets of <a href="http://kozmic.pl/">Krzysztof Koźmic</a> and <a href="http://blog.ploeh.dk/">Mark Seeman</a>, there was not much new to me in the book. Still, I don&#8217;t regret the money and I can happily recommend the book, especially if you are new to DI.</p>
<h3>The Pragmatic Programmer <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> </h3>
<p>A friend of mine recommended this book to me so I though I can give it a try. I had mixed feelings after reading it. I can&#8217;t recall a single thing that altered my thinking or opened my eyes to some new insight. For sure it is a solid book and at the time of writing it contained some cutting-edge stuff but after a few years these ideas have become mainstream and their understanding is expected even from novice developers.</p>
<h3>JavaScript: The Good Parts <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> </h3>
<p>Another tentative one. I expected a lot more hardcore stuff in the book. It left me with a feeling that I know JavaScript (which is bullshit). If you happen to don&#8217;t know it at all (are there such people?) it may be a good book to start with.</p>
<h3>Streamlined Object Modeling <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </h3>
<p>After hearing so many good things about the book on Domain-Driven Design group I simply had to read it. To my surprise I dint&#8217;t like it. I could not get rid of a feeling that authors promote some catch-it-all model they developed and claim it solves all problems (even probably hunger in Africa). The only thing I really liked was the modeling heuristic that objects that are active in real world tend to work better if modeled as passive in the domain model and vice-versa.</p>
<h3>Working Effectively with Legacy Code <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </h3>
<p>I bought this one because we started to rewrite some legacy code in my current project. I wanted to learn from the expert how to deal with such code. It turned out to be a good, solid book. I don&#8217;t remember any particular moments of enlightenment but for sure I learnt a lot.</p>
<h3>Continuous Delivery <img src='http://simon-says-architecture.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </h3>
<p>This is the last one. I&#8217;ve been reading it since Saturday and already read about 70%. Continuous Delivery is probably the best book I&#8217;ve read this year. Together with REST in Practice and Management 3.0, it totally changed the way I see software development as a process. Thanks Jez and Dave!</p>
<h3>Looking into the new year&#8230;</h3>
<p>There are several themes that dominate my <a href="http://www.amazon.com/registry/wishlist/20XDZB8O3I21T/ref=cm_sw_r_tw_ws_ajo8ob1WF0QY8">Amazon wishlist</a> for the next year:</p>
<ul>
<li>C# (need to refresh my knowledge)</li>
<li>Lean (having heard a lot about Kanban I finally need to read some &#8216;classic&#8217; books)</li>
<li>Architecture (Pattern Oriented series in particular)</li>
</ul>
<p>I would also like to read some &#8216;true classics&#8217; like Extreme Programming Explained by Kent Beck. Life will show if this is doable&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=rub9W4JpXNM:RA3e0uo2jE8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=rub9W4JpXNM:RA3e0uo2jE8:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2011/12/20/2011-in-books/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>69. spotkanie KGD.NET</title>
		<link>http://simon-says-architecture.com/2011/11/22/69-spotkanie-kgd-net/</link>
		<comments>http://simon-says-architecture.com/2011/11/22/69-spotkanie-kgd-net/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:51:14 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[KGD.NET]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=865</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Chciałbym zaprosić wszystkich na 69. spotkanie Krakowskiej Grupy Developerów .NET. Spotkanie odbędzie się jak zwykle w siedzibie ABB, przy ulicy Starowiślnej 13. Będzie także dostępne on-line dzięki uprzejmości portalu VirtualStudy. Na spotkaniu, jak zwykle, dwie sesje. Tym razem będą to:
Kanban &#8211; Usprawnienia bez wysiłku, którą zaprezentuje Paweł Brodziński, oraz
Software as a Service &#8211; jedna baza danych, [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Chciałbym zaprosić wszystkich na <strong>69. spotkanie Krakowskiej Grupy Developerów .NET</strong>. Spotkanie odbędzie się jak zwykle w siedzibie ABB, przy ulicy Starowiślnej 13. Będzie także <a href="http://virtualstudy.pl/pl/component/jevents/icalrepeat.detail/2011/11/23/319/-/transmisja-z-69-spotkania-kgdnet-kanban-i-saas">dostępne on-line</a> dzięki uprzejmości portalu <a href="http://virtualstudy.pl/pl/component/jevents/icalrepeat.detail/2011/11/23/319/-/transmisja-z-69-spotkania-kgdnet-kanban-i-saas">VirtualStudy</a>. Na spotkaniu, jak zwykle, dwie sesje. Tym razem będą to:</p>
<p><strong>Kanban &#8211; Usprawnienia bez wysiłku</strong>, którą zaprezentuje <strong>Paweł Brodziński</strong>, oraz</p>
<p><strong>Software as a Service &#8211; jedna baza danych, wielu użytkowników</strong>, którą przedstawi <strong>Maksymilian Majer</strong></p>
<p>Po spotkaniu zapraszamy wszystkich na wspólne piwo. Będzie to okazja, aby podyskutować z prelegentami na temat ich prezentacji w bardziej nieformalnych warunkach. Pierwsze dwie kolejki tym razem (to nie reguła) stawiają prelegenci!</p>
<p>Zapraszam do rejestracji na spotkanie <a href="http://www.kgdnet.pl/events/40514682/">tutaj</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=M4jbby4BtZM:quZPEi56FIY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=M4jbby4BtZM:quZPEi56FIY:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2011/11/22/69-spotkanie-kgd-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>68 spotkanie KGD.NET</title>
		<link>http://simon-says-architecture.com/2011/10/24/68-spotkanie-kgd-net/</link>
		<comments>http://simon-says-architecture.com/2011/10/24/68-spotkanie-kgd-net/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 09:08:57 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[KGD.NET]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=850</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Już za dwa dni, w środę 26 października odbędzie się 68. spotkanie KGD.NET. Dlaczego o tym tu pisze? Ponieważ spotkanie będzie, dzięki uprzejmości portalu VirtualStudy.pl, strumieniowane na żywo oraz nagrywane. Informację o spotkaniu na witrynie VS można znaleźć tutaj. Mieszkańców Krakowa i okolic oczywiście zachęcam na przyjścia osobiście (godzina 18.30, siedziba ABB przy Starowiślnej 13). [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Już za dwa dni, w środę 26 października odbędzie się 68. spotkanie KGD.NET. Dlaczego o tym tu pisze? Ponieważ spotkanie będzie, dzięki uprzejmości portalu <a href="http://virtualstudy.pl">VirtualStudy.pl</a>, <strong>strumieniowane na żywo</strong> oraz nagrywane. Informację o spotkaniu na witrynie VS można znaleźć <a href="http://virtualstudy.pl/pl/component/jevents/icalrepeat.detail/2011/10/26/306/-/transmisja-z-68-spotkania-kgdnet-rubistom-i-lightswitch">tutaj</a>. Mieszkańców Krakowa i okolic oczywiście zachęcam na przyjścia osobiście (godzina 18.30, siedziba ABB przy Starowiślnej 13). Zarejestrować się można na <a href="http://www.kgdnet.pl/events/38072762/">stronie spotkania</a>. Osoby, które się zarejestrują i przyjdą będą uczestniczyć w losowaniu nagród, m.in. voucherów <a href="http://www.pluralsight-training.net/microsoft/">Pluralsight</a>, podręcznika .NET i innych.</p>
<p>Zapraszam serdecznie</p>
<p>PS. Po spotkaniu idziemy na piwo:)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=31G3VLaY53s:dwWbSZatPoM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=31G3VLaY53s:dwWbSZatPoM:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2011/10/24/68-spotkanie-kgd-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ABB Dev Day</title>
		<link>http://simon-says-architecture.com/2011/10/20/abb-dev-day201/</link>
		<comments>http://simon-says-architecture.com/2011/10/20/abb-dev-day201/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 03:45:36 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[ABBDevDay]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=848</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>W ubiegły piątek miałem przyjemność wystąpić na konferencji ABB Dev Day 2011 w Krakowie. Muszę przyznać, że była to jedna z najlepszych konferencji, na jakich byłem. Organizatorzy &#8212; Michał Śliwoń (@mihcall) i Rafał Legiędź (@rafek) &#8211; wykonali kawał świetnej roboty. Duże brawa dla nich.
Na tej konferencji pojawiłem się z prezentacją o (jakże by inaczej) CQRS. Więszość uczestników [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>W ubiegły piątek miałem przyjemność wystąpić na konferencji <a href="http://www.abb.pl/cawp/plabb045/b0e290849d57794bc1257902002ad411.aspx">ABB Dev Day</a> 2011 w Krakowie. Muszę przyznać, że była to jedna z najlepszych konferencji, na jakich byłem. Organizatorzy &#8212; Michał Śliwoń (<a href="http://twitter.com/#!/mihcall">@mihcall</a>) i Rafał Legiędź (<a href="http://twitter.com/#!/rafek">@rafek</a>) &#8211; wykonali kawał świetnej roboty. Duże brawa dla nich.</p>
<p>Na tej konferencji pojawiłem się z <a href="http://prezi.com/svfmvrx9dq_x/cqrs-and-rest/">prezentacją</a> o (jakże by inaczej) CQRS. Więszość uczestników pewnie pamięta, ale na wszelki wypadek przypominam: rzuciłem wtedy wyzwanie zaimplementowania prostej aplikacji w ramach eksperymentalnej architektury CQREST (połączenie CQRS i REST, jak się łatwo domyśleć):</p>
<ul>
<li>dwa tygodnie</li>
<li>prosty temat (koszyk z zakupami)</li>
<li>trzy technologie: <a href="https://github.com/joliver/EventStore">EventStore</a>, <a href="http://wcf.codeplex.com/">WCF Web APIs</a> oraz <a href="http://msdn.microsoft.com/en-us/library/bb412202.aspx">WCF Syndication APIs</a></li>
</ul>
<p>Nagrodą jest licencja na jeden z produktów JetBrains oraz oczywiście wieczna sława:) Jeśli ktoś się do tej pory wahał, czy warto, niech przestanie się wahać i weźmie się za kodowanie.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=y230FYz6igo:XlTWARogd5o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=y230FYz6igo:XlTWARogd5o:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2011/10/20/abb-dev-day201/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Z życia społeczności</title>
		<link>http://simon-says-architecture.com/2011/03/25/z-zycia-spolecznosci/</link>
		<comments>http://simon-says-architecture.com/2011/03/25/z-zycia-spolecznosci/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 13:22:12 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[community]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=772</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Zaczynając od przeszłości, w ostatnią środę, 23 marca, odbyło się 63. spotkanie Krakowskiej Grupy Developerów .NET. Na spotkanie przyszło rekordowo dużo (aż 57!) osób. Pierwszą z sesji prezentowałem ja, natomiast drugą &#8212; Tomek Wiśniewski.
W dniach 31 marca-1 kwietnia odbędzie się druga edycja konferencji Agile Central Europe (ACE). Są jeszcze wolne miejsca. Studenci mogą liczyć na [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Zaczynając od przeszłości, w ostatnią środę, 23 marca, odbyło się 63. spotkanie Krakowskiej Grupy Developerów .NET. Na spotkanie przyszło rekordowo dużo (aż 57!) osób. Pierwszą z sesji prezentowałem ja, natomiast drugą &#8212; <a href="http://tomaszwisniewski.com/">Tomek Wiśniewski</a>.</p>
<p>W dniach <strong>31 marca-1 kwietnia</strong> odbędzie się druga edycja konferencji <a href="http://agilece.com/">Agile Central Europe (ACE)</a>. Są jeszcze wolne miejsca. Studenci mogą liczyć na spore zniżki. Możecie także <a href="http://agilece.com/volunteers/">zgłosić się do pomocy</a> w organizacji konferencji otrzymując w zamian darmową wejściówkę.</p>
<p><strong>2 kwietnia</strong> odbędzie się <a href="http://coderetreat.sckrk.com/">Krakowski Code Retreat</a>. Niestety miejsc już nie ma, ale możecie się zapisać na listę rezerwową &#8212; może szczęście się do Was uśmiechnie.</p>
<p><strong>9 kwietnia</strong> o godzinie 19.00 planowane jest <a href="http://www.kgdnet.pl/events/16985567/">specjalne spotkanie KGD.NET</a> na którym prezentację poprowadzić <a href="http://codebetter.com/gregyoung/">Greg Young</a>. W dniach 11-13 kwietnia Greg organizuje <a href="http://polandcqrs-eorg.eventbrite.com/">szkolenie w Krakowie</a>. Koszt szkolenia to 2000 zł, co jest ceną dosyć atrakcyjną w porównaniu do 1500 funtów, które trzeba zapłacić za podobne szkolenie organizowane za pośrednictwem <a href="http://skillsmatter.com/expert/design-architecture/greg-young">SkillsMatter</a>.</p>
<p>Również <strong>9 kwietnia</strong> w Katowicach odbywa się <a href="http://scc.srgm.pl/">drugi śląski Code Camp</a>. Konferencja kończy się na tyle wcześnie, że swobodnie zdążycie wrócić do Krakowa na spotkanie z Gregiem. Rejestracja na SCC jest bezpłatna.</p>
<p><strong>12 kwietnia</strong> o godzinie 20.00 zapraszamy do <a href="http://www.facebook.com/reformacka?v=app_4949752878">Rogu Brackiej i Reformackiej</a> na kolejne spotkanie <a href="http://openbeer.pl/">OpenBeer</a>.</p>
<p>W dniach <strong>18-20 kwietnia</strong> <a href="http://geeksontour.pl">Piotrek Włodek będzie zwiedzał Polskę</a> (Poznań, Wrocław i Katowice) nauczając na temat Managed Extensibility Framework. Naprawdę warto zobaczyć Piotrka w akcji.</p>
<p>Wreszcie pod koniec miesiąca kwietnia (dokładny termin jeszcze nie jest znany) odbędzie się kolejne spotkanie KGD.NET.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=5NnDBt-KlD4:JzNpgrmziJI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=5NnDBt-KlD4:JzNpgrmziJI:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2011/03/25/z-zycia-spolecznosci/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Architektura trójwarstwowa</title>
		<link>http://simon-says-architecture.com/2010/09/07/architektura-trojwarstwowa/</link>
		<comments>http://simon-says-architecture.com/2010/09/07/architektura-trojwarstwowa/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 16:18:10 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=709</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Architektura trójwarstwowa jest chyba najlepiej znaną implementacją wzorca warstw w architekturze aplikacji. Z mojego doświadczenia wynika jednak, że znajomość ta zwykle jest bardzo powierzchowna i nie sięga wgłąb (warstw;-)). Porzućmy więc na chwilę CQRS, DDD i inne fajne akronimy i wróćmy &#8220;do korzeni&#8221;.  Co to jest architektura trójwarstwowa?
Definicja
Sama jej nazwa w języku polskim jest [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Architektura trójwarstwowa jest chyba najlepiej znaną implementacją wzorca warstw w architekturze aplikacji. Z mojego doświadczenia wynika jednak, że znajomość ta zwykle jest bardzo powierzchowna i nie sięga wgłąb (warstw;-)). Porzućmy więc na chwilę CQRS, DDD i inne fajne akronimy i wróćmy &#8220;do korzeni&#8221;.  Co to jest architektura trójwarstwowa?</p>
<h3>Definicja</h3>
<p>Sama jej nazwa w języku polskim jest problematyczna. Angielska terminologia rozróżnia dwa ich rodzaje: <em>tiers</em> to warstwy fizyczne, natomiast <em>layers</em> &#8211; logiczne. W czasach kiedy architektura trójwarstwowa stawała się popularna (zastępując dwuwarstwowy model klient-serwer z terminalem i mainframem) nie było niezbędne rozróżnianie warstw fizycznych i logicznych, ponieważ odpowiadały one sobie jeden-do-jeden. Dziś mamy zupełnie inną sytuację, której polska terminologia nie jest w stanie oddać.</p>
<h3>Warstwy fizyczne</h3>
<p>W ujęciu fizycznym większość aplikacji biznesowych wciąż składa się z trzech warstw: interfejsu użytkownika (przeglądarka internetowa, smart client), logiki biznesowej (serwer WWW) oraz bazy danych (serwer RDBMS). Rzadkim, aczkolwiek spotykanym, rozwiązaniem w przypadku aplikacji z interfejsem HTML jest rozdzielenie fizyczne serwera WWW oraz serwera aplikacyjnego.</p>
<h3>Warstwy logiczne</h3>
<p>W ujęciu logicznym termin &#8220;architektura trójwarstwowa&#8221; nieco się zdewaluował. Istnieje obecnie wiele wzorców architektonicznych, które wywodzą się historycznie z architektury trójwarstwowej, ale mają z nią już niewiele wspólnego. Przyjrzyjmy się na początek najczęściej spotykanemu (i opisywanemu przez podręczniki Microsoft).</p>
<h3>Przykład książkowy</h3>
<p>Pierwszą warstwę stanowi interfejs ASP.NET WebForms. Poniżej niego znajduje się warstwa logiki biznesowej. Tradycyjnie (przed epoką LINQ to SQL) oficjalne diagramy Microsoft umieszczały na dole warstwę dostępu do danych zbudowaną w oparciu o ADO.NET. W ten sposób mieliśmy trzy warstwy logiczne. Warto zauważyć, że wszystkie one umieszczone są w jednej (środkowej) warstwie fizycznej. Tak było jednak do niedawna. Odkąd deweloperzy Microsoft mają do dyspozycji narzędzia ORM, nie ma już potrzeby samodzielnego budowania warstwy dostępu do danych. Cóż więc pozostaje? Warstwa interfejsu WebForms oraz warstwa logiki zawierająca także klasy reprezentujące encje biznesowe. Nie zmienia to jednak faktu, że opisana powyżej koncepcja jest najczęściej nazywana architekturą trójwarstwową. Dziwne, prawda? W których przyszło nam programować architektura trójwarstwowa jest terminem <strong>głównie marketingowym</strong>.</p>
<h3>Przykład mniej książkowy &#8212; ActiveRecord</h3>
<p>Aby nie opierać wszystkiego na przykładach produkowanych przez Microsoft, przyjrzyjmy się jeszcze dwóm innym wersjom architektury trójwarstwowej. Na początek wariant z wzorcem ActiveRecord. W tym wypadku także mamy do czynienia z dwoma warstwami: interfejsem i logiką biznesową. Specyfika wzorca ActiveRecord sprawia, że kwestie związane z persystencją są umieszczone tuż obok logiki aplikacji. Notka na marginesie: stosując stos technologiczny Microsoft wzorzec ActiveRecord polega na umieszczaniu logiki z klasach <em>partial</em> dla odpowiednich encji LINQ to SQL lub LINQ to Entities.</p>
<h3>Przykład zupełnie nie książkowy &#8212; NHibernate</h3>
<p>Drugi z przykładów spoza kręgu wpływów giganta z Redmond to aplikacja wykorzystująca NHibernate do dostępu do danych. W tym wypadku mamy do czynienia ze szczątkową wersją warstwy dostępu do danych zawierającą jedynie mapowania ORM. Mam pewne opory przed nazywaniem tego pełnoprawną warstwą. Powiedziałbym, że taka aplikacja jest <strong>dwuipółwarstwowa</strong>.</p>
<h3>Architektura trójwarstwowa a MVC</h3>
<p>MVC to jeden z najlepiej (obok Singletonu) znanych wzorców. Często natrafiam na pytania związane z relacją między MVC, a architekturą trójwarstwową. Jakiś czas temu zwykłem odpisywać, że koncepcje te nie mają ze sobą nic wspólnego, ponieważ MVC to wzorzec projektowy, a AT &#8212; architektoniczny. Czy jednak na pewno?</p>
<p>W dużych systemach z logiką biznesową zorganizowaną w formie modelu domeny rozróżnienie to ma sens. Stosuję wtedy MVC w logicznej warstwie interfejsu użytkownika. Warstwa logiki biznesowej to mój model domeny. W tym wypadku bardzo ważne jest zdanie sobie sprawy, że model z MVC to nie model domeny. Model z MVC to obiekty DTO przekazywane między warstwami GUI i logiki biznesowej.</p>
<p>Większość systemów nie jest jednak tak skomplikowana. Prosta aplikacja webowa zbudowana w oparciu o jakiś framework MVC (np. ASP.NET MVC) jest świetnym przykładem implementacji architektury trójwarstwowej (czyli tak naprawdę 2 lub 2,5 warstwowej). Widoki są częścią warstwy prezentacji, kontrolery i model &#8212; logiki biznesowej. Dostępu do danych istnieje zwykle jako peseudowarstwa na bazie mapera obiektowo-r. Tak więc MVC, będąc przede wszystkim użytecznym wzorcem budowy interfejsu użytkownika, może w niektórych wypadkach być także implementacją wzorca architektonicznego aplikacji trójwarstwowej</p>
<h3>Podsumowanie</h3>
<p>Architektura trójwarstwowa jest prawdopodobnie najlepiej znanym wzorcem architektonicznym. Jest ona całkiem niezłą abstrakcją większości systemów. W końcu prawie każda aplikacja ma interfejs użytkownika, logikę biznesową i jakiś dostęp do danych. Niestety w dzisiejszych czasach termin ten przestał być użyteczny w komunikacji: jest on zbyt obszerny i rozmyty.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=7FwwNzJtCFo:PJvjFP5b9Oc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=7FwwNzJtCFo:PJvjFP5b9Oc:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2010/09/07/architektura-trojwarstwowa/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>NoSQL Summer</title>
		<link>http://simon-says-architecture.com/2010/08/02/nosql-summer/</link>
		<comments>http://simon-says-architecture.com/2010/08/02/nosql-summer/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 21:18:19 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[nosql]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=706</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Niedawno miałem przyjemność uczestniczyć w pierwszym spotkaniu Krakowskim spotkaniu inicjatywy NoSQL Summer. Zainteresowała mnie, przede wszystkim, forma spotkań &#8212; dyskusje dotyczące przeczytanych &#8220;lektur obowiązkowych&#8221;. Skojarzyło mi się bardziej z dyskusyjnym klubem filmowym, niż typową technologiczną juzergrupą. Postanowiłem się więc wybrać. Nie żałowałem.
Organizacji krakowskich spotkań podjął się Adam Pohorecki. Dzięki temu organizacyjnie wszystko było zapięte na [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Niedawno miałem przyjemność uczestniczyć w pierwszym spotkaniu Krakowskim spotkaniu inicjatywy <a href="http://nosqlsummer.org/">NoSQL Summer</a>. Zainteresowała mnie, przede wszystkim, forma spotkań &#8212; dyskusje dotyczące przeczytanych &#8220;lektur obowiązkowych&#8221;. Skojarzyło mi się bardziej z dyskusyjnym klubem filmowym, niż typową technologiczną juzergrupą. Postanowiłem się więc wybrać. Nie żałowałem.</p>
<p>Organizacji krakowskich spotkań podjął się <a href="http://adam.pohorecki.pl/">Adam Pohorecki</a>. Dzięki temu organizacyjnie wszystko było zapięte na ostatni guzik. Miłym dodatkiem było piwo sponsorowane przez <a href="http://lunarlogicpolska.com/">Lunar Logic</a>.</p>
<p>Spotkanie przybrało ostatecznie formę wymiany doświadczeń dotyczących różnych baz nierelacyjnych. Oto garść zebranych przeze mnie naprędce wniosków:</p>
<p>Mamy do czynienia z prawdziwym wysypem baz nierelacyjnych. Chyba każdy szanujący się programista za punkt honoru ma napisanie swojej (zupełnie jak niegdyś z kontenerami Dependency Injection).</p>
<ul>
<li>Poszczególne bazy nierelacyjne różnią się podejściem do replikacji/klastrowania.</li>
<li>Najbardziej znany w Krakowie jest <a href="http://couchdb.apache.org/">CouchDB</a>.</li>
<li>Temat NoSQL jest raczej obcy środowsiku .NET. Smutne.</li>
<li>Częstym problemem z bazami nierelacyjnymi jest duży apetyt na przestrzeń dyskową.</li>
<li>Bazy nierelacyjne są już od dawna wykorzystywane produkcyjnie, nawet w Krakowie.</li>
<li>Transakcje obejmujące modyfikacje kilku dokumentów to ZŁO.</li>
<li>API baz nierelacyjnych jest bardziej zbliżone do sposobu działania ich mechanizmów składowania danych</li>
<li>Bazy nierelacyjne wymagają większej świadomości i wiedzy od dewelopera, ale w zamian oferują większe możliwości wpływania na zachowanie mechanizmu składowania danych (np. rozwiązywanie konfliktów.</li>
</ul>
<p>Kolejne spotkanie z cyklu NoSQL Summer<strong> już w najbliższą środę</strong> w siedzibie Lunar Logic (Krasińskiego 17/5). Temat: map/reduce. Więcej informacji można uzyskać za pośrednictwem<a href="http://groups.google.com/group/nosql-summer-krakow"> grupy google Kraków NoSQL Summer</a>. W imieniu organizatorów, zapraszam.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=t_mznPlQEBs:LMWIypOiNaU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=t_mznPlQEBs:LMWIypOiNaU:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2010/08/02/nosql-summer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Domain Driven Design, czyli programowanie przez modelowanie</title>
		<link>http://simon-says-architecture.com/2010/06/28/programowanie-przez-modelowanie/</link>
		<comments>http://simon-says-architecture.com/2010/06/28/programowanie-przez-modelowanie/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 03:51:48 +0000</pubDate>
		<dc:creator>Szymon Pobiega</dc:creator>
				<category><![CDATA[Notki po polsku]]></category>
		<category><![CDATA[DDD]]></category>

		<guid isPermaLink="false">http://simon-says-architecture.com/?p=692</guid>
		<description><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/>Podczas 58. spotkania Krakowskiej Grupy Developerów .NET miałem przyjemność poprowadzić prezentację pt. &#8220;Domain Driven Design, czyli programowanie przez modelowanie&#8221;. Ponieważ zakładam, że nie wszyscy jesteście z Krakowa i uczestniczyliście w spotkaniu, pozwolę sobie opisać o czym mówiłem. Prezentację możecie obejrzeć lub ściągnąć (format pptx) stąd (via SlideShare), a przykłady w kodzie stąd.
Rozwiązywanie problemów
Na początku chciałbym [...]]]></description>
			<content:encoded><![CDATA[<img src="http://simon-says-architecture.com//wp-content/uploads/pl.png" width="17" height="17" alt="" title="Notki po polsku" /><br/><p>Podczas <a href="http://ms-groups.pl/kgd.net/58_spotkanie/default.aspx">58. spotkania</a> Krakowskiej Grupy Developerów .NET miałem przyjemność poprowadzić prezentację pt. &#8220;Domain Driven Design, czyli programowanie przez modelowanie&#8221;. Ponieważ zakładam, że nie wszyscy jesteście z Krakowa i uczestniczyliście w spotkaniu, pozwolę sobie opisać o czym mówiłem. Prezentację możecie obejrzeć lub ściągnąć (format pptx) <a href="http://www.slideshare.net/SzymonPobiega/domain-driven-design-czyli-progamowanie-przez-modelowanie">stąd</a> (via SlideShare), a przykłady w kodzie <a href="http://simon-says-architecture.com/wp-content/uploads/2010/06/DomainModelPatterns.zip">stąd</a>.</p>
<h3>Rozwiązywanie problemów</h3>
<p>Na początku chciałbym skontrastować &#8220;klasyczne&#8221; podejście do rozwiązywania problemów z podejściem wykorzystującym model. Można to zilustrować następująco:</p>
<table class="nostyle">
<tbody>
<tr>
<td>
<p><div id="attachment_693" class="wp-caption aligncenter" style="width: 278px"><a href="http://simon-says-architecture.com/wp-content/uploads/2010/06/problem-solving-without-model.png"><img class="size-full wp-image-693  " title="problem solving without model" src="http://simon-says-architecture.com/wp-content/uploads/2010/06/problem-solving-without-model.png" alt="" width="268" height="191" /></a><p class="wp-caption-text">Podejście klasyczne</p></div></td>
<td>
<p><div id="attachment_695" class="wp-caption aligncenter" style="width: 348px"><a href="http://simon-says-architecture.com/wp-content/uploads/2010/06/problem-solving-with-model.png"><img class="size-full wp-image-695    " title="problem solving with model" src="http://simon-says-architecture.com/wp-content/uploads/2010/06/problem-solving-with-model.png" alt="" width="338" height="173" /></a><p class="wp-caption-text">Podejście z wykorzystaniem modelu</p></div></td>
</tr>
</tbody>
</table>
<p>W wersji klasycznej programista implementuje bezpośrednio wymagania, tak jak zostały one spisane przez analityka (zwykle w formie 10/100/miliona linii &#8220;The system shall&#8230;&#8221;). Dobrze, jeśli w ten proces wpleciona jest pętla sprzężenia zwrotnego, która sprawia, że implementacja pierwszych wymagań ma wpływ na dalszy przebieg procesu analizy.</p>
<p>W podejściu &#8220;Domain-Driven&#8221; tak naprawdę nie istnieją role analityka i programisty. <strong>Istnieje tylko jedna rola &#8212; modelarz</strong>. Modelarz zajmuje się budową modelu rzeczywistości użytecznego w rozwiązaniu konkretnego problemu. Współpracuje on bardzo blisko z ekspertami dziedzinowymi, przetwarzając posiadaną przez nich wiedzę na spójny, niesprzeczny, a co najważniejsze, wykonywalny, model. Dopiero na bazie tego modelu tworzone jest ostateczne rozwiązanie. Możemy odnaleźć dwie pętle sprzężenia zwrotnego: pierwsza dotyczy samego modelu (im więcej modelarz stworzył, tym lepiej rozumie problem), a druga modelu w kontekście aplikacji (im więcej wiemy, co ma robić aplikacja, tym lepiej wiemy, które aspekty należy dokładniej modelować).</p>
<h3>Cechy modelu</h3>
<p>Skoro już wiemy, do czego przydaje się model, warto się zastanowić jakie cechy powinien posiadać dobry model. Oto moja osobista lista w kategorii &#8220;model powinien być&#8221;:</p>
<h4>Użyteczny</h4>
<p>Nie ma sensu budowa idealnego modelu rzeczywistości, ponieważ byłby on tak samo skomplikowany jak ta rzeczywistość. Z punktu widzenia złożoności obliczeniowej jest to niewykonalne. Znane powiedzenie mówi, że <strong>wszystkie modele są błędne, ale niektóre są użyteczne</strong>. Model, który budujemy na potrzeby naszego systemu powinien odzwierciedlać tylko ten fragment rzeczywistości, w ramach którego działa ten system i tylko pod kątem czynności bezpośrednio związanych z jego funkcjonowaniem.</p>
<h4>Hermetyczny</h4>
<p>Model jest kodyfikacją pewnych reguł rządzących modelowanym wycinkiem rzeczywistości. Reguły te nie powinny wyciekać z modelu, co oznacza, że jego klienci (użytkownicy) nie powinni musieć o nich wiedzieć. Przykładem może być reguła, że w modelu programu HR pracownik może mieć w danym momencie co najwyżej jednego pracodawcę. To model, a nie klient, powinien zadbać o to, aby przy zmianie pracy pracownik został odłączony od poprzedniego pracodawcy.</p>
<h4>Podatny na modyfikacje</h4>
<p>Jest to sprzeczne z zasadą Open-Closed Principle (<em>open for extensions, closed for modifications</em>), jednak w przypadku modeli sprawdza się bardzo dobrze. Aby model był nadążał za szybko zmieniającą się rzeczywistością, sam także musi się zmieniać. Nie chcemy przecież, aby skostniały model aplikacji był dla organizacji jej używającej hamulcem rozwoju, prawda?</p>
<h4>Zrozumiały</h4>
<p>O sukcesie modelu i całego projektu decyduje, czy wszyscy jego interesariusze rozumieją przestrzeń problemu. Model powinien stanowić podstawę porozumienia i bazę dla wszędobylskiego języka (<em>ubiquitous language</em>) służącego do komunikacji między wykonawcami systemu (ludźmi technicznymi), a ekspertami dziedzinowymi. W dzisiejszych czasach języki programowania takie, jak C#, są na tyle elastyczne, że pisanie kodu (modelu) tak, aby był zrozumiały dla nieprogramistów nie stanowi już większego problemu.</p>
<h4>Wydajnie implementowalny</h4>
<p>Mimo, iż model nie powinien być zależny od jakiejkolwiek konkretnej technologii, powinien jednak być (w jakiejś technologii) wydajnie implementowalny. Nie chcemy być zależni od NHibernate czy innego ORM-a, jednak akceptowanie faktu, że model będzie przechowywany trwale w <strong>jakiejś </strong>relacyjnej bazie danych za pośrednictwem <strong>jakiegoś</strong> ORM-a pozwala zoptymalizować wiele kwestii. Nie ma sensu udawać niezależności od wszystkich aspektów technologii.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=GfpO3mgtAhg:kCePlgQM260:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/szymonpobiega_pl?a=GfpO3mgtAhg:kCePlgQM260:0VBWazUhMmc"><img src="http://feeds.feedburner.com/~ff/szymonpobiega_pl?d=0VBWazUhMmc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://simon-says-architecture.com/2010/06/28/programowanie-przez-modelowanie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

