<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>René Stein - Analytické drobky</title>
    <link>http://blog.renestein.net/</link>
    <description>Názory vzešlé z mesaliance humanitní skepse a technologického optimismu</description>
    <image>
      <url>http://blog.renestein.net/themes/discreetBlogBlue/SpotImages/sfinga_rss.jpg</url>
      <title>René Stein - Analytické drobky</title>
      <link>http://blog.renestein.net/</link>
    </image>
    <language>cs-CZ</language>
    <copyright>René Stein</copyright>
    <lastBuildDate>Wed, 26 Sep 2012 11:53:24 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.7174.0</generator>
    <managingEditor>rene@renestein.net</managingEditor>
    <webMaster>rene@renestein.net</webMaster>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=dac3a930-3326-4521-a8b1-7e84ae709519</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,dac3a930-3326-4521-a8b1-7e84ae709519.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,dac3a930-3326-4521-a8b1-7e84ae709519.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=dac3a930-3326-4521-a8b1-7e84ae709519</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
          <font color="#ff0000">Aktualizace 4. 12. 2012 – kurz Objektovými principy a návrhovými
vzory řízený design a vývoj kvalitních aplikací 1 je zcela obsazen.</font>
        </p>
        <p>
Opět bych vás rád pozval mé kurzy. Jak jste si asi všimli, tento rok “podzimní” termíny
kurzů vyhlašuju kvůli různým peripetiím o něco později, takže místo podzimu se s některými
z vás uvidím netradičně až v zimě. Snad to nevadí. 
</p>
        <p>
Také již tradičně připomenu, že je možné si objednat inhouse (ve vaší firmě uskutečněnou)
variantu těchto kurzů i se domluvit na zcela jiné osnově vystavěné z <a href="http://renestein.net/Nabidka.aspx#konzultace" target="_blank">témat,
o kterých něco vím a jejichž výběr naleznete na mých stránkách</a>. Všechny dotazy
k veřejným i inhouse kurzům rádi zodpovíme na emailu <a href="mailto:rene@renestein.net">rene@renestein.net</a> (můj
email) nebo na emailu <a href="mailto:petra@renestein.net">petra@renestein.net</a> (Petra
Steinová, která rychleji a lépe než já odpoví na dotazy týkající se organizace veřejných
i inhouse kurzů). 
</p>
        <p>
          <b>Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 1</b>
          <font color="#ff0000"> <font style=""><font style="">- <font style="">kurz
je obsazen</font></font></font></font>
        </p>
        <p>
Datum konání kurzu: <strong>10. - 12. 12. 2012</strong></p>
        <p>
Místo konání<strong>:</strong></p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.tutor.cz%2f">Školící
středisko Tutor</a>
        </p>
        <p>
U Půjčovny 2<br />
110 00 Praha 1 
</p>
        <p>
          <em>Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.</em>
        </p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fblog.renestein.net%2fct.ashx%3fid%3dd6fd9894-f5cd-4d7d-9e78-53974f98d52d%26url%3dhttp%253a%252f%252fwww.renestein.net%252fNabidka.aspx%2523skoleni">Podrobné
informace o kurzu a možnost přihlásit se na kurz</a>
        </p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fblog.renestein.net%2fct.ashx%3fid%3dd6fd9894-f5cd-4d7d-9e78-53974f98d52d%26url%3dhttp%253a%252f%252fwww.renestein.net%252fSkoleni-UML-OOP-Navrhove-vzory-1.aspx">Program
kurzu</a>
          <br />
        </p>
        <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.renestein.net%2fOhlasy-Ucastniku-Na-Kurzy.aspx">Výběr
z ohlasů na kurzy</a>
        <br />
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2frenestein.net%2fCasto-Kladene-Dotazy-Kurzy-FAQ.aspx">FAQ
- často kladené dotazy ke kurzům</a>
          <hr />
        </p>
        <p>
          <b>Veřejný kurz Základy objektově orientovaného návrhu a vývoje (UML 0)</b>
        </p>
        <p>
Datum konání kurzu: <b>14. - 16. 1. 2013</b></p>
        <p>
Místo konání<strong>:</strong></p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.tutor.cz%2f">Školící
středisko Tutor</a>
        </p>
        <p>
U Půjčovny 2<br />
110 00 Praha 1 
</p>
        <p>
          <em>Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.</em>
        </p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2frenestein.net%2fNabidka.aspx%23skoleniOOP0">Podrobné
informace o kurzu a možnost přihlásit se na kurz</a>
        </p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2frenestein.net%2fSkoleni-Zaklady-Objektove-Orientovaneho-Navrhu-UML-0.aspx">Program
kurzu</a>
          <br />
        </p>
        <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.renestein.net%2fOhlasy-Ucastniku-Na-Kurzy.aspx">Výběr
z ohlasů na kurzy</a>
        <br />
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2frenestein.net%2fCasto-Kladene-Dotazy-Kurzy-FAQ.aspx">FAQ 
- často kladené dotazy ke kurzům</a>
        </p>
        <p>
 
</p>
        <p>
          <hr />
        </p>
        <p>
          <b>Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 2</b>
        </p>
        <p>
Datum konání kurzu:  <strong>21. - 23. 1. 2013</strong></p>
        <p>
Místo konání<strong>:</strong></p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.tutor.cz%2f">Školící
středisko Tutor</a>
        </p>
        <p>
U Půjčovny 2<br />
110 00 Praha 1 
</p>
        <p>
          <em>Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.</em>
        </p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.renestein.net%2fNabidka.aspx%23SkoleniOOP2">Podrobné
informace o kurzu a možnost přihlásit se na kurz</a>
        </p>
        <p>
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.renestein.net%2fSkoleni-Navrhove-vzory-2.aspx">Program
kurzu</a>
          <br />
          <br />
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2fwww.renestein.net%2fOhlasy-Ucastniku-Na-Kurzy.aspx">Výběr
z ohlasů na kurzy</a>
          <br />
          <br />
          <a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;url=http%3a%2f%2frenestein.net%2fCasto-Kladene-Dotazy-Kurzy-FAQ.aspx">FAQ
- často kladené dotazy ke kurzům</a>
        </p>
        <p>
Těším se na shledání na kurzu.
</p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=dac3a930-3326-4521-a8b1-7e84ae709519" />
      </body>
      <title>Pozv&amp;aacute;nka na m&amp;eacute; kurzy v prosinci 2012 a lednu 2013 (Update 4. 12. 2012)</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,dac3a930-3326-4521-a8b1-7e84ae709519.aspx</guid>
      <link>http://blog.renestein.net/Pozvaacutenka+Na+Meacute+Kurzy+V+Prosinci+2012+A+Lednu+2013+Update+4+12+2012.aspx</link>
      <pubDate>Wed, 26 Sep 2012 11:53:24 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#ff0000"&gt;Aktualizace 4. 12. 2012 – kurz Objektovými principy a návrhovými
vzory řízený design a vývoj kvalitních aplikací 1 je zcela obsazen.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Opět bych vás rád pozval mé kurzy. Jak jste si asi všimli, tento rok “podzimní” termíny
kurzů vyhlašuju kvůli různým peripetiím o něco později, takže místo podzimu se s některými
z vás uvidím netradičně až v zimě. Snad to nevadí. 
&lt;/p&gt;
&lt;p&gt;
Také již tradičně připomenu, že je možné si objednat inhouse (ve vaší firmě uskutečněnou)
variantu těchto kurzů i se domluvit na zcela jiné osnově vystavěné z &lt;a href="http://renestein.net/Nabidka.aspx#konzultace" target="_blank"&gt;témat,
o kterých něco vím a jejichž výběr naleznete na mých stránkách&lt;/a&gt;. Všechny dotazy
k veřejným i inhouse kurzům rádi zodpovíme na emailu &lt;a href="mailto:rene@renestein.net"&gt;rene@renestein.net&lt;/a&gt; (můj
email) nebo na emailu &lt;a href="mailto:petra@renestein.net"&gt;petra@renestein.net&lt;/a&gt; (Petra
Steinová, která rychleji a lépe než já odpoví na dotazy týkající se organizace veřejných
i inhouse kurzů). 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 1&lt;/b&gt;&lt;font color="#ff0000"&gt;&amp;nbsp;&lt;font style=""&gt; &lt;font style=""&gt;- &lt;font style=""&gt;kurz
je obsazen&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;p&gt;
Datum konání kurzu: &lt;strong&gt;10. - 12. 12. 2012&lt;/strong&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;:&lt;/strong&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.tutor.cz%2f"&gt;Školící
středisko Tutor&lt;/a&gt; 
&lt;p&gt;
U Půjčovny 2&lt;br&gt;
110 00 Praha 1 
&lt;p&gt;
&lt;em&gt;Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.&lt;/em&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fblog.renestein.net%2fct.ashx%3fid%3dd6fd9894-f5cd-4d7d-9e78-53974f98d52d%26url%3dhttp%253a%252f%252fwww.renestein.net%252fNabidka.aspx%2523skoleni"&gt;Podrobné
informace o kurzu a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fblog.renestein.net%2fct.ashx%3fid%3dd6fd9894-f5cd-4d7d-9e78-53974f98d52d%26url%3dhttp%253a%252f%252fwww.renestein.net%252fSkoleni-UML-OOP-Navrhove-vzory-1.aspx"&gt;Program
kurzu&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.renestein.net%2fOhlasy-Ucastniku-Na-Kurzy.aspx"&gt;Výběr
z ohlasů na kurzy&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2frenestein.net%2fCasto-Kladene-Dotazy-Kurzy-FAQ.aspx"&gt;FAQ
- často kladené dotazy ke kurzům&lt;/a&gt; 
&lt;hr&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Základy objektově orientovaného návrhu a vývoje (UML 0)&lt;/b&gt; 
&lt;p&gt;
Datum konání kurzu: &lt;b&gt;14. - 16. 1. 2013&lt;/b&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;:&lt;/strong&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.tutor.cz%2f"&gt;Školící
středisko Tutor&lt;/a&gt; 
&lt;p&gt;
U Půjčovny 2&lt;br&gt;
110 00 Praha 1 
&lt;p&gt;
&lt;em&gt;Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.&lt;/em&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2frenestein.net%2fNabidka.aspx%23skoleniOOP0"&gt;Podrobné
informace o kurzu a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2frenestein.net%2fSkoleni-Zaklady-Objektove-Orientovaneho-Navrhu-UML-0.aspx"&gt;Program
kurzu&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.renestein.net%2fOhlasy-Ucastniku-Na-Kurzy.aspx"&gt;Výběr
z ohlasů na kurzy&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2frenestein.net%2fCasto-Kladene-Dotazy-Kurzy-FAQ.aspx"&gt;FAQ&amp;nbsp;
- často kladené dotazy ke kurzům&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 2&lt;/b&gt; 
&lt;p&gt;
Datum konání kurzu:&amp;nbsp; &lt;strong&gt;21. - 23. 1. 2013&lt;/strong&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;:&lt;/strong&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.tutor.cz%2f"&gt;Školící
středisko Tutor&lt;/a&gt; 
&lt;p&gt;
U Půjčovny 2&lt;br&gt;
110 00 Praha 1 
&lt;p&gt;
&lt;em&gt;Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.&lt;/em&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.renestein.net%2fNabidka.aspx%23SkoleniOOP2"&gt;Podrobné
informace o kurzu a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.renestein.net%2fSkoleni-Navrhove-vzory-2.aspx"&gt;Program
kurzu&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2fwww.renestein.net%2fOhlasy-Ucastniku-Na-Kurzy.aspx"&gt;Výběr
z ohlasů na kurzy&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a&amp;amp;url=http%3a%2f%2frenestein.net%2fCasto-Kladene-Dotazy-Kurzy-FAQ.aspx"&gt;FAQ
- často kladené dotazy ke kurzům&lt;/a&gt; 
&lt;p&gt;
Těším se na shledání na kurzu.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=dac3a930-3326-4521-a8b1-7e84ae709519" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,dac3a930-3326-4521-a8b1-7e84ae709519.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>Ostatní</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=c5624a7e-98ca-44a7-94c9-8f5824a19f85</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,c5624a7e-98ca-44a7-94c9-8f5824a19f85.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,c5624a7e-98ca-44a7-94c9-8f5824a19f85.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=c5624a7e-98ca-44a7-94c9-8f5824a19f85</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blog.renestein.net/Pozvaacutenka+Na+Kurzy+Objektovyacutech+Princip%C5%AF+A+Naacutevrhovyacutech+Vzor%C5%AF+Ndash+Podzim+2011.aspx">Pozvánka
na mé kurzy</a> na blogu trochu zapadla, a protože tento týden dvě firmy zvolily raději
inhouse variantu kurzu, a tím se uvolnila místa na veřejných kurzech, i když předtím
jsme museli na začátku srpna některé zájemce o veřejné kurzy OOP 0 a OOP 1 odmítat,
dávám i pro další zájemce znovu <a href="http://blog.renestein.net/Pozvaacutenka+Na+Kurzy+Objektovyacutech+Princip%C5%AF+A+Naacutevrhovyacutech+Vzor%C5%AF+Ndash+Podzim+2011.aspx">odkaz
na pozvánku</a>.
</p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=c5624a7e-98ca-44a7-94c9-8f5824a19f85" />
      </body>
      <title>Připomenut&amp;iacute;: Kurzy &amp;ndash; podzim 2011</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,c5624a7e-98ca-44a7-94c9-8f5824a19f85.aspx</guid>
      <link>http://blog.renestein.net/P%c5%99ipomenutiacute+Kurzy+Ndash+Podzim+2011.aspx</link>
      <pubDate>Tue, 30 Aug 2011 10:48:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blog.renestein.net/Pozvaacutenka+Na+Kurzy+Objektovyacutech+Princip%C5%AF+A+Naacutevrhovyacutech+Vzor%C5%AF+Ndash+Podzim+2011.aspx"&gt;Pozvánka
na mé kurzy&lt;/a&gt; na blogu trochu zapadla, a protože tento týden dvě firmy zvolily raději
inhouse variantu kurzu, a tím se uvolnila místa na veřejných kurzech, i když předtím
jsme museli na začátku srpna některé zájemce o veřejné kurzy OOP 0 a OOP 1 odmítat,
dávám i pro další zájemce znovu &lt;a href="http://blog.renestein.net/Pozvaacutenka+Na+Kurzy+Objektovyacutech+Princip%C5%AF+A+Naacutevrhovyacutech+Vzor%C5%AF+Ndash+Podzim+2011.aspx"&gt;odkaz
na pozvánku&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=c5624a7e-98ca-44a7-94c9-8f5824a19f85" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,c5624a7e-98ca-44a7-94c9-8f5824a19f85.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=59132463-8265-453d-b94a-d44bc3a07878</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,59132463-8265-453d-b94a-d44bc3a07878.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,59132463-8265-453d-b94a-d44bc3a07878.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=59132463-8265-453d-b94a-d44bc3a07878</wfw:commentRss>
      <slash:comments>19</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <p>
Dnes na twitteru <a href="http://twitter.com/#!/DavidGrudl/status/77398502971424768">David
Grudl odkázal</a> na debatu, která se <a href="http://php.vrana.cz/prace-s-vlastnostmi-pomoci-metod.php#d-11965">týká
vlastností v PHP</a>. O vlastnostech v PHP mluvit nechci, ale v tomto  příspěvku
se chci dotknout některých “dogmat”, které se ozývají stále častěji a které byly použity
jako univerzální kladivo na oponenty  i v odkazované diskuzi.
</p>
        <p>
Jedno zvláštní dogma se týká principu jedné odpovědnosti třídy (Single responsibility
principle). Tento princip říká, že třída by měla mít jednu přesně vymezenou odpovědnost,
která je v souladu s jejím názvem. I když na první přečtění se tento princip zdá neproblematický,
dá se zneužít jako univerzální kladivo. <strong>Dogmatici mi říkali, že jedna odpovědnost
si vynucuje, aby třída vždy měla právě jednu metodu, která tuto odpovědnost realizuje. </strong>Není
nad přehledný svět objektových dogmatiků, kde objekt je jen stupidní kontajner na
jednu (de facto globální?) funkci.<img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blog.renestein.net/content/binary/Windows-Live-Writer/Opakovn-zklad_119C2/wlEmoticon-smile_2.png" /></p>
        <p>
Dogmatiky tohoto zvláštního ražení  zanedbejme jako ztracené případy a SRP obohaťme
o další vysvětlení, které říká, že třída by měla mít jen jeden důvod ke změně. Tento
princip je užitečný v tom, se snaží z aplikací odstranit všemocné božské (God) objekty,
které mnohdy už svým názvem signalizují, že řeší spoustu věcí. UniversalOrderAndInvoiceProcessor
oznamuje, že se bude měnit nejen, když se změní zpracování objednávek, ale také když
se změní zpracování faktur. Jednoduché, což? Proč o tomhle jednoduchém principu vůbec
dále mluvit?
</p>
        <p>
V diskuzi se o SRP <a href="http://php.vrana.cz/prace-s-vlastnostmi-pomoci-metod.php#d-11965">mluví
(viz i příspěvky níže</a>), ale diskutující tam ve  své argumentaci používají
něco, čemu na kurzech u SRP říkám falešné alternativy.
</p>
        <p>
Mějme stejně jako v diskusi svou třídu Image, která nese informace o obrázku. Obrázek
chceme uložit.
</p>
        <p>
Varianta 1, kdy obrázek nese informace a současně nabízí metodu Save, ve které uloží
data do souboru.
</p>
        <script src="https://gist.github.com/1009256.js">
        </script>
        <p>
Co je v diskuzi vyčítáno této třídě? Porušuje princip jedné odpovědnosti, protože
podle některých (Jiří Knesl, Ondřej Mirteš)  řeší dvě věci najednou – <strong>nese
data o obrázku a současně data ukládá. </strong>Souhlasím, že jde o porušení SRP,
ale hlavním důvodem je to, že metoda Save je napsána tak,  že třídu Image ukládáme <strong>vždy </strong>do
souboru. Co když budeme chtít třídu Image uložit do nějakého “response” streamu na
webovém serveru, nebo uložit přímo do databáze? Tuto třídu skutečně budeme měnit ze
dvou důvodů – jednou, když přidáme nebo odebereme informace o obrázku a také, když
budeme chtít ukládat obrázek do databáze, musíme rozšířit stávající metodu Save, což
povede k tomu, že metoda bude mít v sobě nějaký podivný switch a  bude trpět
smíšenou odpovědností, protože bude dělat několik věcí najednou,  nebo můžeme
přidat novou samostatnou metodu SaveToDb. 
</p>
        <p>
Jedinou (!?) alternativou v diskuzi k tomuto postupu je vyvedení odpovědnosti za ukládání
do různých úložišť do samostatných objektů, které mohou být  skryty za jednotným
rozhraním.
</p>
        <script src="https://gist.github.com/1009269.js">
        </script>
        <p>
Toto řešení důsledně separuje odpovědnosti, navíc je velmi snadné přidat další implementaci
rozhraní IImagePersistor, např. DbPersistor, který data uloží do databáze. Už v diskuzi
Jakub Vrána ale upozorňuje na to, že se mu nelíbí, jak se řešení komplikuje pro uživatele-vývojáře,
který s třídami bude pracovat, protože tento vývojář musí vědět, že existuje nějaký
IImagePersistor/FilePersistor odpovědný za uložení dat. Třída Image nestačí k tomu,
abyste dokázali vygenerovat data obrázku a uložit je, což může být ve vaší knihovně
častý scénář. Také bych rád poprvé v tomto článku připomněl princip OOP, ke kterému
se za chvíli vrátím, že <strong>objekt představuje jednotu svého stavu a chování,
které je pro tento stav definováno. </strong></p>
        <p>
          <strong>Psal jsem o falešných alternativách, můžeme najít i jiná řešení. Co ponechat
metodu Save ve třídě Image, ale z třídy Image udělat tzv kompozitor - objekt, který
skládá své chování tak, že využívá další pomocné objekty, na kterých závisí, a nabízí
intuitivní rozhraní pro klienty. </strong>
        </p>
        <script src="https://gist.github.com/1009274.js">
        </script>
        <p>
Odpovědnosti jsou stále separovány a dokonce třída Image, náš kompozitor, dodržuje
pravidlo, které říká, že kompozitor by měl být jednodušší než suma funkcí jeho pomocných
objektů.  Klient třídy Image nemusí pracovat přímo s třídou FilePersistor, a
přitom nemáme kód pro ukládání do souboru přímo ve třídě Image. Problém je, že metoda
Save třídy Image vždy vytváří FilePersistor. Klient třídy Image si nemůže vyžádat
to námi dříve zmiňované ukládání obrázku do databáze, a navíc třída Image závisí na
jedné konkrétní třídě FilePersistor, u níž přímo volá konstruktor. <strong>V třídě
Image mixujeme vytváření grafu spolupracujících objektů se samotným použitím pomocných
objektů. Opět jde o dvě odpovědnosti, které bychom měli oddělit – SRP, nezapomeňme.</strong></p>
        <p>
Nejprve ale zkusme vyřešit problém s tím, že klient nemůže ukládat data do databáze,
protože třída Image ukládá data vždy do souboru.
</p>
        <script src="https://gist.github.com/1009285.js">
        </script>
        <p>
Jednoduše přidáme další variantu metody, která přijímá odkaz na IImagePersistor, v
našem případě třeba na DbPersistor. Původní metoda Save bez argumentů řeší ukládání
do souboru. Ukládání do souboru je nejčastější scénář, který je zvolen jako výchozí.
Stále ale tady máme problém s tím, že v metodě Save konstruujeme "natvrdo" FilePersistor.
A navíc naše API klientům trochu lže. V podtextu klientovi sděluje, že výchozí metoda
Save nemá žádné další závislosti, i když z implementace, !a jen z implementace!, 
je zřejmé, že jsme závislí na přítomnosti třídy FilePersistor. <em>Poznámka: V C#
4 můžeme použít volitelné argumenty u jedné metody, ale na principu této varianty
řešení se moc nemění.</em></p>
        <p>
Zkusme naše prozatím ulhané API vylepšit a dodržet SRP.  Oddělme nyní konstrukci
pomocných objektů, na kterých závisíme, od jejich použití v metodě Save. 
</p>
        <script src="https://gist.github.com/1009297.js">
        </script>
        <p>
Objekt Image si nyní v konstruktoru vynucuje předání IIMagePersitoru. Když klient
IImagePersistor nepředá, objekt nezvznikne – sám konstruktor garantuje, že buď objekt
Image má vyplněny všechny závislosti, nebo vůbec nevznikne. Vytvořili jsme konstruktor,
který může použít a automaticky naplnit DI kontajner, nebo různé abstraktní továrny
registrované v DI kontajneru  apod. <strong>DI kontajner je přesně tím objektem,
který by měl být v aplikaci odpovědný za konstrukci grafu objektů,</strong> v metodě
Save objektu Image injektovaný IImagePersistor jen používáme. SRP v praxi.
</p>
        <p>
Možný že ale v tomto případě je injektování závislostí přes konstruktor moc striktní.
Co když nám skutečně vyhovuje, že můžeme bez DI kontajneru vytvořit objekt Image,
který bude data ukládat do souboru. Pak můžeme využít injektování přes vlastnosti,
kdy příslušnou vlastnost po vzniku objektu vyplníme rozumnou výchozí hodnotou – v
našem případě instancí FilePersistoru. Poté ale platí, že třídu Image stále částečně
zatěžujete konstrukcí objektů…<br />
U většiny DI kontajnerů je preferováno injektování závislostí přes konstruktory, všechny,
které znám,  si ale poradí ale i s injektováním závislostí přes vlastností a
u <a href="http://www.google.cz/search?hl=cs&amp;source=hp&amp;q=MEF+MSDN&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=">MEF</a>u
bych řekl, že injektování závislostí pomocí vlastností hrají prim.
</p>
        <script src="https://gist.github.com/1009315.js">
        </script>
        <p>
Všechny tyto varianty mají své výhody a nevýhody a asi nemusím zdůrazňovat, že ani
jedna není univerzálním kladivem. Varianty s injektováním závislostí (konstruktor,
metoda, vlastnost) jsou samozřejmě mnohem lépe testovatelné.
</p>
        <p>
Dokážu přidat i další příklady, ale chtěl jsem,  abyste viděli, že SRP není ani
nesmysl, ale ani princip, který by, podobně jako to zaznělo v diskuzi, sděloval –
existují jen dvě alternativy, jak rozdělovat odpovědnosti, a ZROVNA TA TVOJE JE ŠPATNĚ.
</p>
        <p>
A poslední  poznámka:
</p>
        <p>
Jiřé Knesl také v diskuzi uvedl: “ objekt buďto data reprezentuje (pak má settery/gettery),
nebo vykonává činnost (pak dostane data parametry)”. Tohle je podle mě  postoj
blízký hlavně některým Javistům, o čemž svědčí i podle mého soudu schematický a nevěrohodný <a href="http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html">článek,
který se zabývá vlastnostmi v Javě</a> a na který se J. Knesl odkazuje. Znovu připomínám,
že <strong>objekt představuje jednotu svého stavu a chování, které je pro tento stav
definováno.  </strong>Objekt, který má jen gettery a settery, je ”krabičkou na
data”, pouhou strukturou známou i z neobjektových jazyků, a když má objekt jen metody,
tak jde o (v mnoha případech skutečně globální) funkce/procedury, které prefixujeme
názvem proměnné/třídy. V diskuzi to myslím nezaznělo, ale když někdo razí tuto drastickou
separaci chování od samotných dat, často dodává, že takto je to přece definováno Evansem,
tedy autoritou,  v kanonické knize o <a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215">Domain
Driven Designu</a>. Když se ptám, kde o tom Evans mluví, dozvím se, že Evans má objekty,
které mají svůj stav (vlastnosti)  a s objekty pracují speciální business-doménové
služby (chování). I když mám vůči DDD spoustu výhrad, zde Evanse špatně interpretují
– Evans by model, kde objekty mají jen stav a nemají žádné chování, nazval <a href="http://martinfowler.com/bliki/AnemicDomainModel.html">anemickým
modelem</a> – izolovaná data podepřená berličkami nesouvisejících globálních funkcí.
Business služby jsou, zjednodušeně řečeno, určeny pro zapsání složitější business
logiky, na které spolupracuje více objektů a žádný participující objekt není sám o
sobě přirozeným kandidátem, do kterého by bylo vhodné logiku situovat.
</p>
        <p>
Zde bych mohl pokračovat dále k rozdělení objektů v DDD, ke skutečnému významu vlastností
u objektu, co říká princip “tell, don't ask”, ale už teď mi původně krátký komentář
k SRP a DDD až moc nabobtnal. Když budete mít zájem o další naznačená témata, napište
prosím komentář k článku.
</p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=59132463-8265-453d-b94a-d44bc3a07878" />
      </body>
      <title>O &amp;scaron;patně ch&amp;aacute;pan&amp;eacute;m principu jedn&amp;eacute; odpovědnosti tř&amp;iacute;dy (SRP) a o zneuž&amp;iacute;v&amp;aacute;n&amp;iacute; my&amp;scaron;lenek Domain driven designu (DDD)</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,59132463-8265-453d-b94a-d44bc3a07878.aspx</guid>
      <link>http://blog.renestein.net/O+Scaronpatn%c4%9b+Chaacutepaneacutem+Principu+Jedneacute+Odpov%c4%9bdnosti+T%c5%99iacutedy+SRP+A+O+Zneu%c5%beiacutevaacuteniacute+Myscaronlenek+Domain+Driven+Designu+DDD.aspx</link>
      <pubDate>Sun, 05 Jun 2011 20:13:04 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Dnes na twitteru &lt;a href="http://twitter.com/#!/DavidGrudl/status/77398502971424768"&gt;David
Grudl odkázal&lt;/a&gt; na debatu, která se &lt;a href="http://php.vrana.cz/prace-s-vlastnostmi-pomoci-metod.php#d-11965"&gt;týká
vlastností v PHP&lt;/a&gt;. O vlastnostech v PHP mluvit nechci, ale v tomto&amp;nbsp; příspěvku
se chci dotknout některých “dogmat”, které se ozývají stále častěji a které byly použity
jako univerzální kladivo na oponenty&amp;nbsp; i v odkazované diskuzi.
&lt;/p&gt;
&lt;p&gt;
Jedno zvláštní dogma se týká principu jedné odpovědnosti třídy (Single responsibility
principle). Tento princip říká, že třída by měla mít jednu přesně vymezenou odpovědnost,
která je v souladu s jejím názvem. I když na první přečtění se tento princip zdá neproblematický,
dá se zneužít jako univerzální kladivo. &lt;strong&gt;Dogmatici mi říkali, že jedna odpovědnost
si vynucuje, aby třída vždy měla právě jednu metodu, která tuto odpovědnost realizuje. &lt;/strong&gt;Není
nad přehledný svět objektových dogmatiků, kde objekt je jen stupidní kontajner na
jednu (de facto globální?) funkci.&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blog.renestein.net/content/binary/Windows-Live-Writer/Opakovn-zklad_119C2/wlEmoticon-smile_2.png"&gt;
&lt;/p&gt;
&lt;p&gt;
Dogmatiky tohoto zvláštního ražení&amp;nbsp; zanedbejme jako ztracené případy a SRP obohaťme
o další vysvětlení, které říká, že třída by měla mít jen jeden důvod ke změně. Tento
princip je užitečný v tom, se snaží z aplikací odstranit všemocné božské (God) objekty,
které mnohdy už svým názvem signalizují, že řeší spoustu věcí. UniversalOrderAndInvoiceProcessor
oznamuje, že se bude měnit nejen, když se změní zpracování objednávek, ale také když
se změní zpracování faktur. Jednoduché, což? Proč o tomhle jednoduchém principu vůbec
dále mluvit?
&lt;/p&gt;
&lt;p&gt;
V diskuzi se o SRP &lt;a href="http://php.vrana.cz/prace-s-vlastnostmi-pomoci-metod.php#d-11965"&gt;mluví
(viz i příspěvky níže&lt;/a&gt;), ale diskutující tam ve&amp;nbsp; své argumentaci používají
něco, čemu na kurzech u SRP říkám falešné alternativy.
&lt;/p&gt;
&lt;p&gt;
Mějme stejně jako v diskusi svou třídu Image, která nese informace o obrázku. Obrázek
chceme uložit.
&lt;/p&gt;
&lt;p&gt;
Varianta 1, kdy obrázek nese informace a současně nabízí metodu Save, ve které uloží
data do souboru.
&lt;/p&gt;
&lt;script src="https://gist.github.com/1009256.js"&gt; &lt;/script&gt;
&lt;p&gt;
Co je v diskuzi vyčítáno této třídě? Porušuje princip jedné odpovědnosti, protože
podle některých (Jiří Knesl, Ondřej Mirteš)&amp;nbsp; řeší dvě věci najednou – &lt;strong&gt;nese
data o obrázku a současně data ukládá. &lt;/strong&gt;Souhlasím, že jde o porušení SRP,
ale hlavním důvodem je to, že metoda Save je napsána tak,&amp;nbsp; že třídu Image ukládáme &lt;strong&gt;vždy &lt;/strong&gt;do
souboru. Co když budeme chtít třídu Image uložit do nějakého “response” streamu na
webovém serveru, nebo uložit přímo do databáze? Tuto třídu skutečně budeme měnit ze
dvou důvodů – jednou, když přidáme nebo odebereme informace o obrázku a také, když
budeme chtít ukládat obrázek do databáze, musíme rozšířit stávající metodu Save, což
povede k tomu, že metoda bude mít v sobě nějaký podivný switch a&amp;nbsp; bude trpět
smíšenou odpovědností, protože bude dělat několik věcí najednou,&amp;nbsp; nebo můžeme
přidat novou samostatnou metodu SaveToDb. 
&lt;/p&gt;
&lt;p&gt;
Jedinou (!?) alternativou v diskuzi k tomuto postupu je vyvedení odpovědnosti za ukládání
do různých úložišť do samostatných objektů, které mohou být&amp;nbsp; skryty za jednotným
rozhraním.
&lt;/p&gt;
&lt;script src="https://gist.github.com/1009269.js"&gt; &lt;/script&gt;
&lt;p&gt;
Toto řešení důsledně separuje odpovědnosti, navíc je velmi snadné přidat další implementaci
rozhraní IImagePersistor, např. DbPersistor, který data uloží do databáze. Už v diskuzi
Jakub Vrána ale upozorňuje na to, že se mu nelíbí, jak se řešení komplikuje pro uživatele-vývojáře,
který s třídami bude pracovat, protože tento vývojář musí vědět, že existuje nějaký
IImagePersistor/FilePersistor odpovědný za uložení dat. Třída Image nestačí k tomu,
abyste dokázali vygenerovat data obrázku a uložit je, což může být ve vaší knihovně
častý scénář. Také bych rád poprvé v tomto článku připomněl princip OOP, ke kterému
se za chvíli vrátím, že &lt;strong&gt;objekt představuje jednotu svého stavu a chování,
které je pro tento stav definováno. &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Psal jsem o falešných alternativách, můžeme najít i jiná řešení. Co ponechat
metodu Save ve třídě Image, ale z třídy Image udělat tzv kompozitor - objekt, který
skládá své chování tak, že využívá další pomocné objekty, na kterých závisí, a nabízí
intuitivní rozhraní pro klienty. &lt;/strong&gt;
&lt;/p&gt;
&lt;script src="https://gist.github.com/1009274.js"&gt; &lt;/script&gt;
&lt;p&gt;
Odpovědnosti jsou stále separovány a dokonce třída Image, náš kompozitor, dodržuje
pravidlo, které říká, že kompozitor by měl být jednodušší než suma funkcí jeho pomocných
objektů.&amp;nbsp; Klient třídy Image nemusí pracovat přímo s třídou FilePersistor, a
přitom nemáme kód pro ukládání do souboru přímo ve třídě Image. Problém je, že metoda
Save třídy Image vždy vytváří FilePersistor. Klient třídy Image si nemůže vyžádat
to námi dříve zmiňované ukládání obrázku do databáze, a navíc třída Image závisí na
jedné konkrétní třídě FilePersistor, u níž přímo volá konstruktor. &lt;strong&gt;V třídě
Image mixujeme vytváření grafu spolupracujících objektů se samotným použitím pomocných
objektů. Opět jde o dvě odpovědnosti, které bychom měli oddělit – SRP, nezapomeňme.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Nejprve ale zkusme vyřešit problém s tím, že klient nemůže ukládat data do databáze,
protože třída Image ukládá data vždy do souboru.
&lt;/p&gt;
&lt;script src="https://gist.github.com/1009285.js"&gt; &lt;/script&gt;
&lt;p&gt;
Jednoduše přidáme další variantu metody, která přijímá odkaz na IImagePersistor, v
našem případě třeba na DbPersistor. Původní metoda Save bez argumentů řeší ukládání
do souboru. Ukládání do souboru je nejčastější scénář, který je zvolen jako výchozí.
Stále ale tady máme problém s tím, že v metodě Save konstruujeme "natvrdo" FilePersistor.
A navíc naše API klientům trochu lže. V podtextu klientovi sděluje, že výchozí metoda
Save nemá žádné další závislosti, i když z implementace, !a jen z implementace!,&amp;nbsp;
je zřejmé, že jsme závislí na přítomnosti třídy FilePersistor. &lt;em&gt;Poznámka: V C#
4 můžeme použít volitelné argumenty u jedné metody, ale na principu této varianty
řešení se moc nemění.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Zkusme naše prozatím ulhané API vylepšit a dodržet SRP.&amp;nbsp; Oddělme nyní konstrukci
pomocných objektů, na kterých závisíme, od jejich použití v metodě Save. 
&lt;/p&gt;
&lt;script src="https://gist.github.com/1009297.js"&gt; &lt;/script&gt;
&lt;p&gt;
Objekt Image si nyní v konstruktoru vynucuje předání IIMagePersitoru. Když klient
IImagePersistor nepředá, objekt nezvznikne – sám konstruktor garantuje, že buď objekt
Image má vyplněny všechny závislosti, nebo vůbec nevznikne. Vytvořili jsme konstruktor,
který může použít a automaticky naplnit DI kontajner, nebo různé abstraktní továrny
registrované v DI kontajneru&amp;nbsp; apod. &lt;strong&gt;DI kontajner je přesně tím objektem,
který by měl být v aplikaci odpovědný za konstrukci grafu objektů,&lt;/strong&gt; v metodě
Save objektu Image injektovaný IImagePersistor jen používáme. SRP v praxi.
&lt;/p&gt;
&lt;p&gt;
Možný že ale v tomto případě je injektování závislostí přes konstruktor moc striktní.
Co když nám skutečně vyhovuje, že můžeme bez DI kontajneru vytvořit objekt Image,
který bude data ukládat do souboru. Pak můžeme využít injektování přes vlastnosti,
kdy příslušnou vlastnost po vzniku objektu vyplníme rozumnou výchozí hodnotou – v
našem případě instancí FilePersistoru. Poté ale platí, že třídu Image stále částečně
zatěžujete konstrukcí objektů…&lt;br&gt;
U většiny DI kontajnerů je preferováno injektování závislostí přes konstruktory, všechny,
které znám,&amp;nbsp; si ale poradí ale i s injektováním závislostí přes vlastností a
u &lt;a href="http://www.google.cz/search?hl=cs&amp;amp;source=hp&amp;amp;q=MEF+MSDN&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq="&gt;MEF&lt;/a&gt;u
bych řekl, že injektování závislostí pomocí vlastností hrají prim.
&lt;/p&gt;
&lt;script src="https://gist.github.com/1009315.js"&gt; &lt;/script&gt;
&lt;p&gt;
Všechny tyto varianty mají své výhody a nevýhody a asi nemusím zdůrazňovat, že ani
jedna není univerzálním kladivem. Varianty s injektováním závislostí (konstruktor,
metoda, vlastnost) jsou samozřejmě mnohem lépe testovatelné.
&lt;/p&gt;
&lt;p&gt;
Dokážu přidat i další příklady, ale chtěl jsem,&amp;nbsp; abyste viděli, že SRP není ani
nesmysl, ale ani princip, který by, podobně jako to zaznělo v diskuzi, sděloval –
existují jen dvě alternativy, jak rozdělovat odpovědnosti, a ZROVNA TA TVOJE JE ŠPATNĚ.
&lt;/p&gt;
&lt;p&gt;
A poslední&amp;nbsp; poznámka:
&lt;/p&gt;
&lt;p&gt;
Jiřé Knesl také v diskuzi uvedl: “ objekt buďto data reprezentuje (pak má settery/gettery),
nebo vykonává činnost (pak dostane data parametry)”. Tohle je podle mě&amp;nbsp; postoj
blízký hlavně některým Javistům, o čemž svědčí i podle mého soudu schematický a nevěrohodný &lt;a href="http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html"&gt;článek,
který se zabývá vlastnostmi v Javě&lt;/a&gt; a na který se J. Knesl odkazuje. Znovu připomínám,
že &lt;strong&gt;objekt představuje jednotu svého stavu a chování, které je pro tento stav
definováno.&amp;nbsp; &lt;/strong&gt;Objekt, který má jen gettery a settery, je ”krabičkou na
data”, pouhou strukturou známou i z neobjektových jazyků, a když má objekt jen metody,
tak jde o (v mnoha případech skutečně globální) funkce/procedury, které prefixujeme
názvem proměnné/třídy. V diskuzi to myslím nezaznělo, ale když někdo razí tuto drastickou
separaci chování od samotných dat, často dodává, že takto je to přece definováno Evansem,
tedy autoritou,&amp;nbsp; v kanonické knize o &lt;a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215"&gt;Domain
Driven Designu&lt;/a&gt;. Když se ptám, kde o tom Evans mluví, dozvím se, že Evans má objekty,
které mají svůj stav (vlastnosti)&amp;nbsp; a s objekty pracují speciální business-doménové
služby (chování). I když mám vůči DDD spoustu výhrad, zde Evanse špatně interpretují
– Evans by model, kde objekty mají jen stav a nemají žádné chování, nazval &lt;a href="http://martinfowler.com/bliki/AnemicDomainModel.html"&gt;anemickým
modelem&lt;/a&gt; – izolovaná data podepřená berličkami nesouvisejících globálních funkcí.
Business služby jsou, zjednodušeně řečeno, určeny pro zapsání složitější business
logiky, na které spolupracuje více objektů a žádný participující objekt není sám o
sobě přirozeným kandidátem, do kterého by bylo vhodné logiku situovat.
&lt;/p&gt;
&lt;p&gt;
Zde bych mohl pokračovat dále k rozdělení objektů v DDD, ke skutečnému významu vlastností
u objektu, co říká princip “tell, don't ask”, ale už teď mi původně krátký komentář
k SRP a DDD až moc nabobtnal. Když budete mít zájem o další naznačená témata, napište
prosím komentář k článku.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=59132463-8265-453d-b94a-d44bc3a07878" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,59132463-8265-453d-b94a-d44bc3a07878.aspx</comments>
      <category>Analytické drobky</category>
      <category>C#</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=d106e718-5c10-4f2a-8de5-70979fbdd7bc</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,d106e718-5c10-4f2a-8de5-70979fbdd7bc.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,d106e718-5c10-4f2a-8de5-70979fbdd7bc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d106e718-5c10-4f2a-8de5-70979fbdd7bc</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dostal jsme dotaz, jak si poradit s odstraňováním chyb u starší a rozsáhlé aplikace.
Když jsem odepisoval, uvědomil jsem si, že sepisuju jakési “triviální  desatero
vývoje”", které se snažím už dlouhou dobu svému okolí vtloukat dohlavy. I když jde
o triviální zásady, budu příště odkazovat raději na tento příspěvek, než abych vše
opakoval pokaždé znovu. Jméno firmy je v textu nahrazenou souslovím “anonymní firma”.
</p>
        <p>
          <em>“Zdravím,<br />
to je na hodně dlouhý příspěvek.<br />
Alespoň tedy:</em>
        </p>
        <p>
          <em>1) Je nutné zrušit umělou hranici mezi vývojáři a testery. Žádná výměna informací
přes šéfy oddělení nebo pověřené osoby.</em>
        </p>
        <p>
          <em>2) Na každou objevenou chybu musí být napsán automatický test, který zajistí,
že chyba neprobublá do dalších releasů. Bez toho žádné organizační opatření nefunguje.
Bez napsaného testu se chyba nepovažuje za odstraněnou, ale jen za náhodou se nyní
neprojevující.</em>
        </p>
        <p>
          <em>3) Vytvořit malé sebeorganizující týmy odpovědné za určitou část projektu (nastálo,
nebo do dalšího releasu). V čele team leader, který garantuje kvalitu. Team leader
je k dispozici i testerům a řeší nesrovnalosti v analýze a systémovém designu. S dalšími
team leadery řeší problémy integrace různých částí projektu. <strong>Team leader ale
stále většinu času kóduje, není to embryo vychovávané pro střední management</strong>.</em>
        </p>
        <p>
          <em>4) Je potřeba postupně napsat velké množství automatických testů (unit, integrační,
akceptační) tak, aby se testeři věnovali hlavně novým záležitostem v releasu a aby
vývojáři ani testeři nebyli obětí "ručně prováděných" regresních testů, které mají
formu nikdy nekončícího debugování. <strong>Tím se i zkrátí doba, kterou "anonymní
firma" nutně musí trávit opakovaným debugováním a "ručním" nalézáním příčin chyb.</strong> Automatizované
testy představují práci, která se na projektech vyplatí, a navíc jde i o mnohem levnější
řešení problému, než nabírání dalších a dalších testerů.</em>
        </p>
        <p>
          <em>5) Nedávat žádné fixní odhady na odstranění chyb ani nikoho exkluzivně nealokovat
jen na odstraňování chyb. Vývojář není a přes různé manažerské poučky ani nebude anonymní
zdroj, který sebereme z jiného projektu, posadíme k aplikaci, kterou nezná, ale u
které dostane befelem, že za jednu normohodinu musí odstranit 20 bugů. Tato kouzla
fungují jenom v Excelu. V reálném světě vývojář těch 20 bugů neodstraní, ani když
ho posadíte do open space, který  je oblepen motivačním majstrštykem vytisknutým
z PowerPointu nejlepším absolventem MBA.<br /><br />
Pokud se objeví chyba, chopí se jí člověk, který za danou oblast odpovídá (konflikty
přinejhorším vyřeší team leadeři). Vývojář neustále čte a refaktorizuje kód, pokud
možno ihned také odstraňuje chyby . A jsme opět u testů - dokud ty automatizované
testy mít nebudete, vývojáři do kódu raději nezasahují, protože nevědí, kde všude
se změna projeví a raději neriskují další možnou příčinu pádu aplikace po nasazení
u zákazníka. A psát použitelné, ne jen formální-švejkovské testy, kdy se hodnotí "jen
code coverage", se musí všichni vývojáři naučit a nějakou dobu to zabere.</em>
        </p>
        <p>
          <em>Mám zkušenost s 12 let starou aplikací psanou původně pro VB, poté čátečně přepsanou
na .Net Framework,  která byla po 9 letech <strong>postupně </strong>obalena
testy, a ani dnes sice nejde o žádnou vývojářskou lahůdku, ale pracuje se na ní beze
strachu, co při každé změně v aplikaci zničíme. Nic jiného než to, co píšu výše, se
mi neosvědčilo.</em>
        </p>
        <p>
          <em>A pak další záležitosti jako (nutné) bonbonky:<br /></em>
        </p>
        <ul>
          <li>
            <em>Neztrácet čas “mergováním” změn v něčem tak zastaralém a nepohodlném jako je Subversion.
V Mercurialu (GITu) je propagace změn z vývojové větve do hlavní (a zpět) otázka chvíle.
V Subversion ani TFS jsem po pár zkušenostech raději moc "branchů" nedělal.<br /></em>
          </li>
          <li>
            <em>Automatické buildy spojené s již napsanými testy.<br /></em>
          </li>
          <li>
            <em>Automatické nasazení nové verze aplikace, aby testeři nemuseli pátrat, kde seženou
novou verzi a také, aby nasazení do produkčního prostředí neznamenalo 3denní práci
party lidí, kteří se metodou pokus-omyl snaží dostat aplikaci do použitelného stavu
u zákazníka.<br /></em>
          </li>
          <li>
            <em>Alespoň u nováčků code review, abyste rychle odstranili jejich špatné návyky.<br /></em>
          </li>
          <li>
            <em>Statická analýza kódu.</em>
          </li>
        </ul>
        <p>
          <em>A dovolím si jednu soukromou poznámku k "anonymní firmě" - pokud možno zredukovat/vyhodit
všechny těžkotonážní, neskutečně drahé a pro vývojáře zabijácké nápady se zavedením
nejhorší možné formy vodopádu  - analýza-&gt;samostatný systémový design-&gt;vývoj-&gt;testy,
v jehož bludném pádu se bude produkovat množství dokumentů, navíc rychlokvašenými
analytiky/designery, v mizerné kvalitě a bez vazby na skutečné potřeby projektu. Analýza
a systémový design jsou fáze projektu, které pomáhají jen do doby, než se jich chytí
nějaký exot, který nikdy žádnou aplikaci nevyvíjel a který si myslí, že analytická
práce spočívá ve štosování nahodilých myšlenek zákazníka do příslušné šablony pro
use case. Což je dle mých zkušeností většina “čistých”, míněno vývojem nedotčených,
analytiků na pracovním trhu.</em>
        </p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=d106e718-5c10-4f2a-8de5-70979fbdd7bc" />
      </body>
      <title>P&amp;aacute;r trivi&amp;aacute;ln&amp;iacute;ch pozn&amp;aacute;mek k v&amp;yacute;voji aplikac&amp;iacute;</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,d106e718-5c10-4f2a-8de5-70979fbdd7bc.aspx</guid>
      <link>http://blog.renestein.net/Paacuter+Triviaacutelniacutech+Poznaacutemek+K+Vyacutevoji+Aplikaciacute.aspx</link>
      <pubDate>Mon, 30 May 2011 08:31:24 GMT</pubDate>
      <description>&lt;p&gt;
Dostal jsme dotaz, jak si poradit s odstraňováním chyb u starší a rozsáhlé aplikace.
Když jsem odepisoval, uvědomil jsem si, že sepisuju jakési “triviální&amp;nbsp; desatero
vývoje”", které se snažím už dlouhou dobu svému okolí vtloukat dohlavy. I když jde
o triviální zásady, budu příště odkazovat raději na tento příspěvek, než abych vše
opakoval pokaždé znovu. Jméno firmy je v textu nahrazenou souslovím “anonymní firma”.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;“Zdravím,&lt;br&gt;
to je na hodně dlouhý příspěvek.&lt;br&gt;
Alespoň tedy:&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;1) Je nutné zrušit umělou hranici mezi vývojáři a testery. Žádná výměna informací
přes šéfy oddělení nebo pověřené osoby.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;2) Na každou objevenou chybu musí být napsán automatický test, který zajistí,
že chyba neprobublá do dalších releasů. Bez toho žádné organizační opatření nefunguje.
Bez napsaného testu se chyba nepovažuje za odstraněnou, ale jen za náhodou se nyní
neprojevující.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;3) Vytvořit malé sebeorganizující týmy odpovědné za určitou část projektu (nastálo,
nebo do dalšího releasu). V čele team leader, který garantuje kvalitu. Team leader
je k dispozici i testerům a řeší nesrovnalosti v analýze a systémovém designu. S dalšími
team leadery řeší problémy integrace různých částí projektu. &lt;strong&gt;Team leader ale
stále většinu času kóduje, není to embryo vychovávané pro střední management&lt;/strong&gt;.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;4) Je potřeba postupně napsat velké množství automatických testů (unit, integrační,
akceptační) tak, aby se testeři věnovali hlavně novým záležitostem v releasu a aby
vývojáři ani testeři nebyli obětí "ručně prováděných" regresních testů, které mají
formu nikdy nekončícího debugování. &lt;strong&gt;Tím se i zkrátí doba, kterou "anonymní
firma" nutně musí trávit opakovaným debugováním a "ručním" nalézáním příčin chyb.&lt;/strong&gt; Automatizované
testy představují práci, která se na projektech vyplatí, a navíc jde i o mnohem levnější
řešení problému, než nabírání dalších a dalších testerů.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;5) Nedávat žádné fixní odhady na odstranění chyb ani nikoho exkluzivně nealokovat
jen na odstraňování chyb. Vývojář není a přes různé manažerské poučky ani nebude anonymní
zdroj, který sebereme z jiného projektu, posadíme k aplikaci, kterou nezná, ale u
které dostane befelem, že za jednu normohodinu musí odstranit 20 bugů. Tato kouzla
fungují jenom v Excelu. V reálném světě vývojář těch 20 bugů neodstraní, ani když
ho posadíte do open space, který&amp;nbsp; je oblepen motivačním majstrštykem vytisknutým
z PowerPointu nejlepším absolventem MBA.&lt;br&gt;
&lt;br&gt;
Pokud se objeví chyba, chopí se jí člověk, který za danou oblast odpovídá (konflikty
přinejhorším vyřeší team leadeři). Vývojář neustále čte a refaktorizuje kód, pokud
možno ihned také odstraňuje chyby . A jsme opět u testů - dokud ty automatizované
testy mít nebudete, vývojáři do kódu raději nezasahují, protože nevědí, kde všude
se změna projeví a raději neriskují další možnou příčinu pádu aplikace po nasazení
u zákazníka. A psát použitelné, ne jen formální-švejkovské testy, kdy se hodnotí "jen
code coverage", se musí všichni vývojáři naučit a nějakou dobu to zabere.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Mám zkušenost s 12 let starou aplikací psanou původně pro VB, poté čátečně přepsanou
na .Net Framework,&amp;nbsp; která byla po 9 letech &lt;strong&gt;postupně &lt;/strong&gt;obalena
testy, a ani dnes sice nejde o žádnou vývojářskou lahůdku, ale pracuje se na ní beze
strachu, co při každé změně v aplikaci zničíme. Nic jiného než to, co píšu výše, se
mi neosvědčilo.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;A pak další záležitosti jako (nutné) bonbonky:&lt;br&gt;
&lt;/p&gt;
&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Neztrácet čas “mergováním” změn v něčem tak zastaralém a nepohodlném jako je Subversion.
V Mercurialu (GITu) je propagace změn z vývojové větve do hlavní (a zpět) otázka chvíle.
V Subversion ani TFS jsem po pár zkušenostech raději moc "branchů" nedělal.&lt;br&gt;
&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Automatické buildy spojené s již napsanými testy.&lt;br&gt;
&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Automatické nasazení nové verze aplikace, aby testeři nemuseli pátrat, kde seženou
novou verzi a také, aby nasazení do produkčního prostředí neznamenalo 3denní práci
party lidí, kteří se metodou pokus-omyl snaží dostat aplikaci do použitelného stavu
u zákazníka.&lt;br&gt;
&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Alespoň u nováčků code review, abyste rychle odstranili jejich špatné návyky.&lt;br&gt;
&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Statická analýza kódu.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;em&gt;A dovolím si jednu soukromou poznámku k "anonymní firmě" - pokud možno zredukovat/vyhodit
všechny těžkotonážní, neskutečně drahé a pro vývojáře zabijácké nápady se zavedením
nejhorší možné formy vodopádu&amp;nbsp; - analýza-&amp;gt;samostatný systémový design-&amp;gt;vývoj-&amp;gt;testy,
v jehož bludném pádu se bude produkovat množství dokumentů, navíc rychlokvašenými
analytiky/designery, v mizerné kvalitě a bez vazby na skutečné potřeby projektu. Analýza
a systémový design jsou fáze projektu, které pomáhají jen do doby, než se jich chytí
nějaký exot, který nikdy žádnou aplikaci nevyvíjel a který si myslí, že analytická
práce spočívá ve štosování nahodilých myšlenek zákazníka do příslušné šablony pro
use case. Což je dle mých zkušeností většina “čistých”, míněno vývojem nedotčených,
analytiků na pracovním trhu.&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=d106e718-5c10-4f2a-8de5-70979fbdd7bc" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,d106e718-5c10-4f2a-8de5-70979fbdd7bc.aspx</comments>
      <category>Analytické drobky</category>
      <category>Návrhové vzory</category>
      <category>Ostatní</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=f901aabc-0275-44ef-9865-19317ab5422a</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,f901aabc-0275-44ef-9865-19317ab5422a.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=f901aabc-0275-44ef-9865-19317ab5422a</wfw:commentRss>
      <title>Pozv&amp;aacute;nka na kurzy objektov&amp;yacute;ch principů a n&amp;aacute;vrhov&amp;yacute;ch vzorů &amp;ndash; podzim 2011</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,f901aabc-0275-44ef-9865-19317ab5422a.aspx</guid>
      <link>http://blog.renestein.net/Pozvaacutenka+Na+Kurzy+Objektovyacutech+Princip%c5%af+A+Naacutevrhovyacutech+Vzor%c5%af+Ndash+Podzim+2011.aspx</link>
      <pubDate>Mon, 16 May 2011 10:15:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;p&gt;
Opět vás všechny zvu na pravidelný podzimní běh kurzů &lt;strong&gt;Objektovými principy
a návrhovými vzory řízený design a vývoj kvalitních aplikací 1 &lt;/strong&gt;a &lt;strong&gt;Pokročilé
návrhové vzory a objektové principy 2. &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Novinkou v tomto roce je &lt;em&gt;kurz pro začátečníky&lt;/em&gt; nazvaný Základy objektově
orientovaného návrhu a vývoje. Někteří z vás ho mohli během posledních dvou let absolvovat
ve formě inhouse kurzu pod interním názvem UML 0. Kurz UML 0 vznikl velmi spontánně
jako reakce na požadavky některých firem, které nechtěly rovnou absolvovat stávající
kurzy. &lt;/strong&gt;Nyní je vycizelované UML 0 dostupné i jako veřejný kurz, protože v
emailech se opakovaly žádosti o jeho veřejnou formu od lidí, kteří kurz absolvovali
a nyní na něj chtěli poslat své kolegy.&lt;br&gt;
&lt;br&gt;
O tomto novém kurzu naleznete podrobné informace níže v této pozvánce. &lt;strong&gt;Znovu
opakuji, že se jedná o &lt;em&gt;kurz pro začátečníky&lt;/em&gt;, který dříve v nabídce nebyl,
protože kurzy &lt;strong&gt;Objektovými principy a návrhovými vzory řízený design a vývoj
kvalitních aplikací 1 &lt;/strong&gt;a &lt;strong&gt;Pokročilé návrhové vzory a objektové principy
2 byly a stále jsou určeny pro lidi, kteří základy znají&lt;/strong&gt;. Nenechte se ale
zmást “kódovým” názvem nového kurzu (UML 0), účastníci bývají překvapeni, že s UML
na kurzu zacházíme zcela pragmaticky a bez posvátné úcty, ale i bez módních předsudků
a rychlých odsudků. UML bereme jako nástroj, a ne jako samoúčelný cíl našeho snažení
na kurzu.&lt;/strong&gt; 
&lt;p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Základy objektově orientovaného návrhu a vývoje (UML 0)&lt;/b&gt; 
&lt;p&gt;
Datum konání kurzu: &lt;strong&gt;19. 9. – 21. 9. 2011&lt;/strong&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;: &lt;/strong&gt; 
&lt;p&gt;
&lt;a href="http://www.tutor.cz/"&gt;Školící středisko Tutor&lt;/a&gt; 
&lt;p&gt;
U Půjčovny 2&lt;br&gt;
110 00 Praha 1 
&lt;p&gt;
&lt;em&gt;Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.&lt;/em&gt; 
&lt;p&gt;
&lt;a href="http://renestein.net/Nabidka.aspx#skoleniOOP0"&gt;Podrobné informace o kurzu
a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://renestein.net/Skoleni-Zaklady-Objektove-Orientovaneho-Navrhu-UML-0.aspx"&gt;Program
kurzu&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://renestein.net/Casto-Kladene-Dotazy-Kurzy-FAQ.aspx"&gt;FAQ - často kladené
dotazy ke kurzům&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 1&lt;/b&gt; 
&lt;p&gt;
Datum konání kurzu: &lt;strong&gt;10. 10. – 12. 10. 2011&lt;/strong&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;: &lt;/strong&gt; 
&lt;p&gt;
&lt;a href="http://www.tutor.cz/"&gt;Školící středisko Tutor&lt;/a&gt; 
&lt;p&gt;
U Půjčovny 2&lt;br&gt;
110 00 Praha 1 
&lt;p&gt;
&lt;em&gt;Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.&lt;/em&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=d6fd9894-f5cd-4d7d-9e78-53974f98d52d&amp;url=http%3a%2f%2fwww.renestein.net%2fNabidka.aspx%23skoleni"&gt;Podrobné
informace o kurzu a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=d6fd9894-f5cd-4d7d-9e78-53974f98d52d&amp;url=http%3a%2f%2fwww.renestein.net%2fSkoleni-UML-OOP-Navrhove-vzory-1.aspx"&gt;Program
kurzu&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blog.renestein.net/ct.ashx?id=d6fd9894-f5cd-4d7d-9e78-53974f98d52d&amp;url=http%3a%2f%2fwww.renestein.net%2fOhlasy-Ucastniku-Na-Kurzy.aspx"&gt;Výběr
z ohlasů na kurz&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://renestein.net/Casto-Kladene-Dotazy-Kurzy-FAQ.aspx"&gt;FAQ - často kladené
dotazy ke kurzům&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 2&lt;/b&gt; 
&lt;p&gt;
Datum konání kurzu: &lt;strong&gt;24. 10. – 26. 10. 2011&lt;/strong&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;: &lt;/strong&gt; 
&lt;p&gt;
&lt;a href="http://www.tutor.cz/"&gt;Školící středisko Tutor&lt;/a&gt; 
&lt;p&gt;
U Půjčovny 2&lt;br&gt;
110 00 Praha 1 
&lt;p&gt;
&lt;em&gt;Po celý den máme k dispozici wifi připojení a samozřejmě také teplé a studené
nápoje. V ceně kurzu jsou obědy v hotelu.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.renestein.net/Nabidka.aspx#SkoleniOOP2"&gt;Podrobné informace o kurzu
a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://www.renestein.net/Skoleni-Navrhove-vzory-2.aspx"&gt;Program kurzu&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.renestein.net/Ohlasy-Ucastniku-Na-Kurzy.aspx"&gt;Výběr z ohlasů na
kurzy&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://renestein.net/Casto-Kladene-Dotazy-Kurzy-FAQ.aspx"&gt;FAQ - často kladené
dotazy ke kurzům&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;b&gt;Program nového kurzu Základy objektově orientovaného návrhu a vývoje (UML 0)&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Předpokládané znalosti účastníků&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Základní přehled o etapách vývoje projektu. 
&lt;br&gt;
&lt;li&gt;
Vhodné je mít nějaké vlastní zkušenosti z analýzy a vývoje projektů, abychom mohli
porovnat různé postupy a doporučení a jejich použitelnost v praxi. 
&lt;br&gt;
&lt;li&gt;
Chuť se učit.;) Schopnost pohlédnout na některá domněle známá témata bez předsudků. 
&lt;br&gt;
&lt;li&gt;
Částečná znalost UML je vhodná, ale u tohoto kurzu není vyžadována. Vhodná je hlavně
pro konfrontaci vlastních zkušeností s tím, co zazní o použitelnosti různých částí
UML na kurzu. 
&lt;br&gt;
&lt;li&gt;
Nenávist ke kariéře zručného "bušiče", nikým nerespektovaného projektového vedoucího
(tzv. sekretářky 2.0) a neschopného analytika / vývojáře. 
&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;Obecné informace ke kurzu&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Pro vývojáře se u konstrukcí a prvků jazyka UML, které jsou považovány za analytické,
dělají časté odbočky do kódu, aby vývojáři pochopili, že UML ani principy OOP nejsou
nějaké nesmyslné abstrakce, ale užitečné konstrukce, které sami v programovacích jazycích
používají denně. U role analytika stále zdůrazňuji, jaké znalosti z oblasti vývoje
aplikací musí analytik mít, aby byl pro projekt užitečný a nevytvářel jen dokumentaci
pro dokumentaci, kterou vývojáři nevyužijí a (až příliš často oprávněně) ji považují
za nesmyslnou, drahou a hlavně vyvíjenému projektu nic nepřinášející. Kurz je určen
pro vývojáře, systémové designery, analytiky a projektové manažery, kteří se chtějí
seznámit se základními principy objektového programování a s modelováním v jazyce
UML. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Program školení &lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Proč má dnes UML v některých kruzích špatnou pověst? Musíte být těžkotonážní rytíři
cválající na drahých CASE nástrojích a neživotných formálních projektových metodikách,
nebo si vystačíte s nástroji a postupy, které zachytí vaše myšlenky, ale nenutí vás
přizpůsobovat se "Jen Tomu Jedinému Pravému Stylu Návrhu A Vývoje"?&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Dostali jste poptávku, máte za pár dní dodat nabídku a v seznamu svých dovedností
nenalézáte jasnovidectví ani nemáte po ruce čarovnou skleněnou kouli, abyste zákazníkovi
do nabídky vyvěštili konečnou cenu i datum dokončení projektu? Co dělat v počáteční
fázi projektu, kdy ještě ani nevíte, jestli budete projekt vyvíjet? 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Požadavky na systém. Jak je to s případy užití? Má vlastní zrychlená funkční specifikace
bez zbytečných formalit. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Rozsáhlé ukázky fukčních specifikací z projektů. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Diagram tříd v UML. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Rozdíl mezi analytickým diagramem tříd a diagramem tříd vytvářeným ve fázi systémového
designu - existuje takový rozdíl, nebo jde jen o další hloupý mýtus? 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Třída - základní principy OOP, operace, atributy, viditelnost členů třídy. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Vztahy mezi elementy diagramu (asociace, agregace, generalizace, závislost, realizace)
– vše vykládáno na konkrétních příkladech z praxe + ukázky nejčastějších chyb, se
kterými jsem se setkal. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Dobře zapamatovatelné principy návrhu známé pod zkratkou SOLID v příkladech. Unit
testy, integrační testy, akceptační testy - skutečně si stále myslíte, že se bez nich
na projektech obejdete? 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Nejen SOLIDní principy stojí v pozadí návrhu aplikací... 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Nenásilný přechod k jednoduchým návrhovým vzorům. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Příklady složitých diagramů tříd. Jak je udržovat v souladu s napsaným kódem? A musíme
je udržovat? Co se na projektech vyplatí dělat a co projekt spolehlivě zabije? 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Objektový diagram + příklady. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Diagramy a diagramy interakce. Příklady. Typy projektů, pro které se tyto diagramy
hodí. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Vysvětlení stavových diagramů + výhody aplikací řízených přesně definovanými stavovými
automaty. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Diagram aktivit - modelování složitých business procesů v organizaci. Hrajete si s
diagramem aktivit rádi, ale ocení to Váš zákazník? 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Vrstvy a moduly v aplikaci – architektura aplikace. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Relační a objektový svět? Stále jediné možné partnerství z rozumu? 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Nasazení aplikace – výklad Component &amp; Deployment diagramů. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
OOP a jeho vztah UML. Vztah UML a OOP k projektové praxi a realitě. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Výhody a nevýhody UML – vyzdvižení nejvíce používaných postupů, odhození nepotřebné
veteše z jazyka UML. 
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Odpovědi na dotazy frekventantů kurzu. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
Těším se s Vámi na setkání na kurzu!
&lt;/p&gt;
&lt;p&gt;
René Stein 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=f901aabc-0275-44ef-9865-19317ab5422a" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,f901aabc-0275-44ef-9865-19317ab5422a.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=eb87dd26-6375-4362-abfc-2fd0b13fca84</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,eb87dd26-6375-4362-abfc-2fd0b13fca84.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,eb87dd26-6375-4362-abfc-2fd0b13fca84.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=eb87dd26-6375-4362-abfc-2fd0b13fca84</wfw:commentRss>
      <title>Pozv&amp;aacute;nka na m&amp;eacute; kurzy OOP, UML a n&amp;aacute;vrhov&amp;yacute;ch vzorů a odpovědi na někter&amp;eacute; dotazy zaslan&amp;eacute; emailem - podzim 2010</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,eb87dd26-6375-4362-abfc-2fd0b13fca84.aspx</guid>
      <link>http://blog.renestein.net/Pozvaacutenka+Na+Meacute+Kurzy+OOP+UML+A+Naacutevrhovyacutech+Vzor%c5%af+A+Odpov%c4%9bdi+Na+N%c4%9bktereacute+Dotazy+Zaslaneacute+Emailem+Podzim+2010.aspx</link>
      <pubDate>Sat, 18 Sep 2010 09:17:31 GMT</pubDate>
      <description>Opět bych Vás všechny rád  pozval na pravidelný podzimní běh kurzů Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací 1 a Pokročilé návrhové vzory a objektové principy 2. Níže také naleznete odpovědi na pravidelně se opakující dotazy v emailech. 
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=eb87dd26-6375-4362-abfc-2fd0b13fca84"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,eb87dd26-6375-4362-abfc-2fd0b13fca84.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=cd84ce22-c766-49cc-ace9-f003bdb104e2</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,cd84ce22-c766-49cc-ace9-f003bdb104e2.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,cd84ce22-c766-49cc-ace9-f003bdb104e2.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=cd84ce22-c766-49cc-ace9-f003bdb104e2</wfw:commentRss>
      <title>Pozv&amp;aacute;nka na kurz Objektov&amp;yacute;mi principy a n&amp;aacute;vrhov&amp;yacute;mi vzory ř&amp;iacute;zen&amp;yacute; design a v&amp;yacute;voj kvalitn&amp;iacute;ch aplikac&amp;iacute; 1 &amp;ndash; jaro 2010</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,cd84ce22-c766-49cc-ace9-f003bdb104e2.aspx</guid>
      <link>http://blog.renestein.net/Pozvaacutenka+Na+Kurz+Objektovyacutemi+Principy+A+Naacutevrhovyacutemi+Vzory+%c5%98iacutezenyacute+Design+A+Vyacutevoj+Kvalitniacutech+Aplikaciacute+1+Ndash+Jaro+2010.aspx</link>
      <pubDate>Wed, 07 Apr 2010 11:48:36 GMT</pubDate>
      <description>Rád bych Vás pozval na další běh kurzu Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací 1. Pokud se někdo z Vás (oprávněně) diví, proč tak pozdě a proč Vás nezvu i na kurz OOP 2, níže v tomto spotu nalezne odpovědi. &lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=cd84ce22-c766-49cc-ace9-f003bdb104e2"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,cd84ce22-c766-49cc-ace9-f003bdb104e2.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=d28b9cd9-bf78-4e1f-8407-3a213baad863</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,d28b9cd9-bf78-4e1f-8407-3a213baad863.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,d28b9cd9-bf78-4e1f-8407-3a213baad863.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d28b9cd9-bf78-4e1f-8407-3a213baad863</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <title>V&amp;yacute;hody a nev&amp;yacute;hody softwarov&amp;yacute;ch tov&amp;aacute;ren</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,d28b9cd9-bf78-4e1f-8407-3a213baad863.aspx</guid>
      <link>http://blog.renestein.net/Vyacutehody+A+Nevyacutehody+Softwarovyacutech+Tovaacuteren.aspx</link>
      <pubDate>Sun, 21 Mar 2010 10:57:10 GMT</pubDate>
      <description>Emailem jsem dostal zajímavou otázku, jaký je můj názor na softwarové továrny a kde vidím výhody a nevýhody softwarových továren. Odpověď nakonec publikuji i zde – už jen proto, že jsem si při jejím psaní uvědomil, že na továrnu kladu stejné nároky jako na kteroukoli další knihovnu v systému a že výběr softwarové továrny se u mě moc neliší od výběru třeba ORM Frameworku. Nejde o taxativní výčet výhod a nevýhod, ale spíš o volně nahozená témata, která mě za 20 minut psaní příspěvku napadla. &lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=d28b9cd9-bf78-4e1f-8407-3a213baad863"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,d28b9cd9-bf78-4e1f-8407-3a213baad863.aspx</comments>
      <category>.NET Framework</category>
      <category>Analytické drobky</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=d6fd9894-f5cd-4d7d-9e78-53974f98d52d</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,d6fd9894-f5cd-4d7d-9e78-53974f98d52d.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d6fd9894-f5cd-4d7d-9e78-53974f98d52d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <font color="#ff0000">
          <p>
            <font color="#ff0000">
              <em>
                <strong>Aktualizace  10. 11. 2009-  I veřejný
kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací 2
je zcela obsazen včetně náhradníků. Další kurzy se budou konat na jaře 2009. Jestliže
máte předběžný zájem a chcete si rezervovat místo, pište prosím na adresu </strong>
                <a href="mailto:petra@renestein.net">
                  <strong>petra@renestein.net</strong>
                </a>
                <strong>.</strong>
              </em>
            </font>
          </p>
        </font>
        <p>
          <font color="#ff0000">Aktualizace 15.10.2009  - veřejný kurz <strong>Objektovými
principy a návrhovými vzory řízený design a vývoj kvalitních aplikací 1</strong> je
zcela obsazen včetně náhradníků. Je možné se již hlásit pouze na kurz </font>
          <font color="#ff0000">
            <strong>Pokročilé
návrhové vzory a objektové principy 2.</strong>
          </font>
        </p>
        <p>
Rád bych Vás pozval na podzimní kurzy OOP a UML a představil oficiálně InHouse kurz,
který postupně vykrystalizoval z požadavků zákazníků (<em>OOP 0 - Objektové programování
a UML prakticky - rychlý úvod do světa (nejen) objektového programování</em>). 
</p>
        <p>
          <b>Osnova InHouse kurzu OOP 0 – Objektové programování a UML prakticky – rychlý úvod
do světa (nejen) objektového programování:</b>
        </p>
        <p>
Školení má dvě varianty -  pro vývojáře i u konstrukcí a prvků jazyka UML, které
jsou považovány za analytické, se dělají časté odbočky do kódu, aby vývojáři pochopili,
že UML ani principy OOP nejsou nějaké nesmyslné abstrakce, ale užitečné konstrukce,
které sami v programovacích jazycích používají denně. 
</p>
        <p>
U varianty pro „čisté“ analytiky jsou digrese do kódu minimalizovány, i když v některých
místech stále zdůrazňuji, jaké znalosti z oblasti vývoje aplikací musí analytik mít,
aby byl pro projekt užitečný a nevytvářel jen dokumentaci pro dokumentaci, kterou
vývojáři nevyužijí a (mnohdy oprávněně) považují za nesmyslnou, drahou a projektu
nic nepřinášející. 
</p>
        <p>
V kurzu se naučíte modelovat jednoduché i složité aplikace s využitím jazyka UML tak,
aby následné kódování nebylo výletem do neznáma s nejistými výsledky, ale dobře čitelnou
cestou bez temných a záludných míst vedoucích k selhání projektu. 
</p>
        <p>
Kurz je vhodný zvláště pro ty, kteří již nejsou spokojeni s vývojem projektů naivním
"hurá" způsobem, kdy bez ohledu na složitost systému nevzniká žádný návrh a ihned
se přistupuje ke kódování se všemi špatnými důsledky jako jsou podcenění technické
a časové náročnosti implementace nebo vytváření drahých a nespravovatelných systémů. 
</p>
        <p>
Kurz je určen pro vývojáře, systémové designery, analytiky a projektové manažery,
kteří se chtějí se seznámit se základními principy objektového programování a s modelováním
v jazyce UML. 
</p>
        <p>
· Požadavky na systém a modelování pomocí případů užití (+ příklady). 
</p>
        <p>
· Zrychlená funkční specifikace bez zbytečných formalit – příklady. 
</p>
        <p>
· Diagram tříd v UML - vztahy mezi elementy diagramu (asociace. agregace, generalizace,
závislost, realizace) – vše vykládáno na konkrétních příkladech z praxe + ukázky nejčastějších
chyb, se kterými jsem se setkal. Třída, základní principy OOP, operace, atributy,
viditelnost členů třídy. Nenásilný přechod k jednoduchým návrhovým vzorům. 
</p>
        <p>
· Příklady složitých diagramů tříd. 
</p>
        <p>
· Objektový diagram + příklady. 
</p>
        <p>
· Sekvenční diagramy a diagramy interakce. 
</p>
        <p>
· Vysvětlení stavových diagramů + výhody aplikací řízených přesně definovanými stavovými
automaty. 
</p>
        <p>
· Diagram aktivit - modelování složitých business procesů v organizaci. 
</p>
        <p>
· Výhody a nevýhody UML - vyzdvižení nejvíce používaných postupů, odhození nepotřebné
veteše z jazyka UML. 
</p>
        <p>
 
</p>
        <p>
Pokud máte o kurz zájem nebo potřebujete další informace, napište prosím na adresu <a href="mailto:petra@renestein.net">petra@renestein.net</a>.
</p>
        <p>
          <hr align="center" size="2" width="100%" />
        </p>
        <p>
        </p>
        <p>
          <b>Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 1</b>
        </p>
        <p>
Datum konání kurzu:  <b>2. 11. – 4. 11. 2009</b></p>
        <p>
Místo konání<strong>: </strong><a href="http://blog.renestein.net/ct.ashx?id=a81cbfde-1636-450b-b63c-974e8fe1dae0&amp;url=http://www.hotel-villa.cz/">Hotel
VILLA Praha</a>  Okrajní 1, 100 00, Praha 10 
</p>
        <p>
U hotelu VILLA je  možné parkovat, po celý den máme k dispozici wifi připojení. 
</p>
        <p>
          <em>Na kurzu jsou samozřejmě po celý den teplé a studené nápoje a v ceně kurzu jsou
obědy v hotelu.</em>
        </p>
        <p>
          <a href="http://www.renestein.net/Nabidka.aspx#skoleni">Podrobné informace o kurzu
a možnost přihlásit se na kurz</a>
        </p>
        <p>
          <a href="http://www.renestein.net/Skoleni-UML-OOP-Navrhove-vzory-1.aspx">Program kurzu</a>
          <br />
          <a href="http://www.renestein.net/Ohlasy-Ucastniku-Na-Kurzy.aspx">Výběr z ohlasů na
kurz</a>
          <hr align="center" size="2" width="100%" />
        </p>
        <p>
          <b>Veřejný kurz Pokročilé návrhové vzory a objektové principy 2</b>
        </p>
        <p>
Datum konání kurzu:  <b>23. 11. – 25. 11. 2009</b></p>
        <p>
Místo konání<strong>: </strong><a href="http://blog.renestein.net/ct.ashx?id=a81cbfde-1636-450b-b63c-974e8fe1dae0&amp;url=http://www.hotel-villa.cz/">Hotel
VILLA Praha</a>  Okrajní 1, 100 00, Praha 10 
</p>
        <p>
U hotelu VILLA je  možné parkovat, po celý den máme k dispozici wifi připojení. 
</p>
        <p>
          <em>Na kurzu jsou samozřejmě po celý den teplé a studené nápoje a v ceně kurzu jsou
obědy v hotelu.</em>
        </p>
        <p>
          <a href="http://www.renestein.net/Nabidka.aspx#SkoleniOOP2">Podrobné informace o kurzu
a možnost přihlásit se na kurz</a>
        </p>
        <p>
          <a href="http://www.renestein.net/Skoleni-Navrhove-vzory-2.aspx">Program kurzu</a>
          <br />
          <a href="http://www.renestein.net/Ohlasy-Ucastniku-Na-Kurzy.aspx">Výběr z ohlasů na
kurzy</a>
        </p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=d6fd9894-f5cd-4d7d-9e78-53974f98d52d" />
      </body>
      <title>Pozv&amp;aacute;nka na podzimn&amp;iacute; kurzy (OOP, UML, z&amp;aacute;kladn&amp;iacute; a pokročil&amp;eacute; n&amp;aacute;vrhov&amp;eacute; vzory)</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,d6fd9894-f5cd-4d7d-9e78-53974f98d52d.aspx</guid>
      <link>http://blog.renestein.net/Pozvaacutenka+Na+Podzimniacute+Kurzy+OOP+UML+Zaacutekladniacute+A+Pokro%c4%8dileacute+Naacutevrhoveacute+Vzory.aspx</link>
      <pubDate>Sun, 20 Sep 2009 16:25:11 GMT</pubDate>
      <description>&lt;font color=#ff0000&gt; 
&lt;p&gt;
&lt;font color=#ff0000&gt;&lt;em&gt;&lt;strong&gt;Aktualizace&amp;nbsp; 10. 11. 2009-&amp;nbsp; I veřejný kurz
Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací&amp;nbsp;2
je zcela obsazen včetně náhradníků. Další kurzy se budou konat na jaře 2009. Jestliže
máte předběžný zájem a chcete si rezervovat místo, pište prosím na adresu &lt;/strong&gt;&lt;a href="mailto:petra@renestein.net"&gt;&lt;strong&gt;petra@renestein.net&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/font&gt; 
&lt;p&gt;
&lt;font color=#ff0000&gt;Aktualizace 15.10.2009&amp;nbsp; - veřejný kurz &lt;strong&gt;Objektovými
principy a návrhovými vzory řízený design a vývoj kvalitních aplikací 1&lt;/strong&gt; je
zcela obsazen včetně náhradníků. Je možné se již hlásit pouze na kurz &lt;/font&gt;&lt;font color=#ff0000&gt;&lt;strong&gt;Pokročilé
návrhové vzory a objektové principy 2.&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Rád bych Vás pozval na podzimní kurzy OOP a UML a představil oficiálně InHouse kurz,
který postupně vykrystalizoval z požadavků zákazníků (&lt;em&gt;OOP 0 - Objektové programování
a UML prakticky - rychlý úvod do světa (nejen) objektového programování&lt;/em&gt;). 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Osnova InHouse kurzu OOP 0 – Objektové programování a UML prakticky – rychlý úvod
do světa (nejen) objektového programování:&lt;/b&gt; 
&lt;p&gt;
Školení má dvě varianty -&amp;nbsp; pro vývojáře i u konstrukcí a prvků jazyka UML, které
jsou považovány za analytické, se dělají časté odbočky do kódu, aby vývojáři pochopili,
že UML ani principy OOP nejsou nějaké nesmyslné abstrakce, ale užitečné konstrukce,
které sami v programovacích jazycích používají denně. 
&lt;p&gt;
U varianty pro „čisté“ analytiky jsou digrese do kódu minimalizovány, i když v některých
místech stále zdůrazňuji, jaké znalosti z oblasti vývoje aplikací musí analytik mít,
aby byl pro projekt užitečný a nevytvářel jen dokumentaci pro dokumentaci, kterou
vývojáři nevyužijí a (mnohdy oprávněně) považují za nesmyslnou, drahou a projektu
nic nepřinášející. 
&lt;p&gt;
V kurzu se naučíte modelovat jednoduché i složité aplikace s využitím jazyka UML tak,
aby následné kódování nebylo výletem do neznáma s nejistými výsledky, ale dobře čitelnou
cestou bez temných a záludných míst vedoucích k selhání projektu. 
&lt;p&gt;
Kurz je vhodný zvláště pro ty, kteří již nejsou spokojeni s vývojem projektů naivním
"hurá" způsobem, kdy bez ohledu na složitost systému nevzniká žádný návrh a ihned
se přistupuje ke kódování se všemi špatnými důsledky jako jsou podcenění technické
a časové náročnosti implementace nebo vytváření drahých a nespravovatelných systémů. 
&lt;p&gt;
Kurz je určen pro vývojáře, systémové designery, analytiky a projektové manažery,
kteří se chtějí se seznámit se základními principy objektového programování a s modelováním
v jazyce UML. 
&lt;p&gt;
· Požadavky na systém a modelování pomocí případů užití (+ příklady). 
&lt;p&gt;
· Zrychlená funkční specifikace bez zbytečných formalit – příklady. 
&lt;p&gt;
· Diagram tříd v UML - vztahy mezi elementy diagramu (asociace. agregace, generalizace,
závislost, realizace) – vše vykládáno na konkrétních příkladech z praxe + ukázky nejčastějších
chyb, se kterými jsem se setkal. Třída, základní principy OOP, operace, atributy,
viditelnost členů třídy. Nenásilný přechod k jednoduchým návrhovým vzorům. 
&lt;p&gt;
· Příklady složitých diagramů tříd. 
&lt;p&gt;
· Objektový diagram + příklady. 
&lt;p&gt;
· Sekvenční diagramy a diagramy interakce. 
&lt;p&gt;
· Vysvětlení stavových diagramů + výhody aplikací řízených přesně definovanými stavovými
automaty. 
&lt;p&gt;
· Diagram aktivit - modelování složitých business procesů v organizaci. 
&lt;p&gt;
· Výhody a nevýhody UML - vyzdvižení nejvíce používaných postupů, odhození nepotřebné
veteše z jazyka UML. 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Pokud máte o kurz zájem nebo potřebujete další informace, napište prosím na adresu &lt;a href="mailto:petra@renestein.net"&gt;petra@renestein.net&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;hr align=center size=2 width="100%"&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních
aplikací 1&lt;/b&gt; 
&lt;p&gt;
Datum konání kurzu:&amp;nbsp; &lt;b&gt;2. 11. – 4. 11. 2009&lt;/b&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;: &lt;/strong&gt;&lt;a href="http://blog.renestein.net/ct.ashx?id=a81cbfde-1636-450b-b63c-974e8fe1dae0&amp;amp;url=http://www.hotel-villa.cz/"&gt;Hotel
VILLA Praha&lt;/a&gt;&amp;nbsp; Okrajní 1, 100 00, Praha 10 
&lt;p&gt;
U hotelu VILLA je&amp;nbsp; možné parkovat, po celý den máme k dispozici wifi připojení. 
&lt;p&gt;
&lt;em&gt;Na kurzu jsou samozřejmě po celý den teplé a studené nápoje a v ceně kurzu jsou
obědy v hotelu.&lt;/em&gt; 
&lt;p&gt;
&lt;a href="http://www.renestein.net/Nabidka.aspx#skoleni"&gt;Podrobné informace o kurzu
a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://www.renestein.net/Skoleni-UML-OOP-Navrhove-vzory-1.aspx"&gt;Program kurzu&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.renestein.net/Ohlasy-Ucastniku-Na-Kurzy.aspx"&gt;Výběr z ohlasů na
kurz&lt;/a&gt; 
&lt;hr align=center size=2 width="100%"&gt;
&lt;p&gt;
&lt;b&gt;Veřejný kurz Pokročilé návrhové vzory a objektové principy 2&lt;/b&gt; 
&lt;p&gt;
Datum konání kurzu:&amp;nbsp; &lt;b&gt;23. 11. – 25. 11. 2009&lt;/b&gt; 
&lt;p&gt;
Místo konání&lt;strong&gt;: &lt;/strong&gt;&lt;a href="http://blog.renestein.net/ct.ashx?id=a81cbfde-1636-450b-b63c-974e8fe1dae0&amp;amp;url=http://www.hotel-villa.cz/"&gt;Hotel
VILLA Praha&lt;/a&gt;&amp;nbsp; Okrajní 1, 100 00, Praha 10 
&lt;p&gt;
U hotelu VILLA je&amp;nbsp; možné parkovat, po celý den máme k dispozici wifi připojení. 
&lt;p&gt;
&lt;em&gt;Na kurzu jsou samozřejmě po celý den teplé a studené nápoje a v ceně kurzu jsou
obědy v hotelu.&lt;/em&gt; 
&lt;p&gt;
&lt;a href="http://www.renestein.net/Nabidka.aspx#SkoleniOOP2"&gt;Podrobné informace o kurzu
a možnost přihlásit se na kurz&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://www.renestein.net/Skoleni-Navrhove-vzory-2.aspx"&gt;Program kurzu&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://www.renestein.net/Ohlasy-Ucastniku-Na-Kurzy.aspx"&gt;Výběr z ohlasů na
kurzy&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=d6fd9894-f5cd-4d7d-9e78-53974f98d52d" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,d6fd9894-f5cd-4d7d-9e78-53974f98d52d.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=a81cbfde-1636-450b-b63c-974e8fe1dae0</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,a81cbfde-1636-450b-b63c-974e8fe1dae0.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=a81cbfde-1636-450b-b63c-974e8fe1dae0</wfw:commentRss>
      <title>Pozv&amp;aacute;nka na kurzy - nov&amp;yacute; kurz Pokročil&amp;eacute; n&amp;aacute;vrhov&amp;eacute; vzory a objektov&amp;eacute; principy 2</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,a81cbfde-1636-450b-b63c-974e8fe1dae0.aspx</guid>
      <link>http://blog.renestein.net/Pozvaacutenka+Na+Kurzy+Novyacute+Kurz+Pokro%c4%8dileacute+Naacutevrhoveacute+Vzory+A+Objektoveacute+Principy+2.aspx</link>
      <pubDate>Tue, 11 Nov 2008 15:38:10 GMT</pubDate>
      <description>Rád bych Vás pozval na další běh kurzu Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací 1 a hlavně Vás chci seznámit se zcela novým kurzem Pokročilé návrhové vzory a objektové principy 2.

Kurz Pokročilé návrhové vzory a objektové principy 2 je volným pokračováním kurzu Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací 1. Pojetím kurzu Pokročilé návrhové vzory a objektové principy 2 jsem se snažil vyhovět účastníkům předchozícho kurzu, kteří mi, volně parafrázováno, říkali: "Nejlepší jsou ty části, kde probíráme jeden příklad za druhým a kde říkáte  - takto to dělám já." Můj zákazník, můj pán (zvláště, jestliže se v záměrech zcela shodneme :-D) - nový kurz je prošpikován příklady, tipy, kódem, vzorovými aplikacemi. Budu se těšit na oponeturu mých postupů. ;-) ...
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=a81cbfde-1636-450b-b63c-974e8fe1dae0"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,a81cbfde-1636-450b-b63c-974e8fe1dae0.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=93ed37be-0d20-4625-92b3-3a85f3c568a1</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,93ed37be-0d20-4625-92b3-3a85f3c568a1.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,93ed37be-0d20-4625-92b3-3a85f3c568a1.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=93ed37be-0d20-4625-92b3-3a85f3c568a1</wfw:commentRss>
      <title>Prezentace o &amp;quot;netradičn&amp;iacute;ch&amp;quot; n&amp;aacute;vrhov&amp;yacute;ch vzorech pro CZ JUG ke stažen&amp;iacute;</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,93ed37be-0d20-4625-92b3-3a85f3c568a1.aspx</guid>
      <link>http://blog.renestein.net/Prezentace+O+Quotnetradi%c4%8dniacutechquot+Naacutevrhovyacutech+Vzorech+Pro+CZ+JUG+Ke+Sta%c5%beeniacute.aspx</link>
      <pubDate>Tue, 14 Oct 2008 18:18:42 GMT</pubDate>
      <description>Pro CZJUG jsem přednášel o "netradičních" vzorech - myšleno méně známých  vzorech a možná málo známých aspektech provařených vzorů...&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=93ed37be-0d20-4625-92b3-3a85f3c568a1"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,93ed37be-0d20-4625-92b3-3a85f3c568a1.aspx</comments>
      <category>Analytické drobky</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=3ffd8c92-81d4-4a4a-9877-8c9fc6fcc8ac</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,3ffd8c92-81d4-4a4a-9877-8c9fc6fcc8ac.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3ffd8c92-81d4-4a4a-9877-8c9fc6fcc8ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Několik zájemců o veřejný kurz OOP a návrhových vzorů raději zvolilo inhouse
variantu kurzu, proto bych vás rád upozornil,  že se můžete ještě nyní dodatečně
hlásit na kurz OOP a návrhových vzorů.
</p>
        <p>
          <a href="http://blog.renestein.net/Pozv%c3%a1nka+Na+%c5%98%c3%adjnov%c3%bd+Term%c3%adn+Kurzu+Objektov%c3%bdmi+Principy+A+N%c3%a1vrhov%c3%bdmi+Vzory+%c5%98%c3%adzen%c3%bd+Design+A+V%c3%bdvoj+Kvalitn%c3%adch+Aplikac%c3%ad.aspx">Pozvánka
s odkazy na podrobné informace o kurzu.</a>
        </p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=3ffd8c92-81d4-4a4a-9877-8c9fc6fcc8ac" />
      </body>
      <title>Poslední volná místa na kurzu OOP a návrhových vzorů</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,3ffd8c92-81d4-4a4a-9877-8c9fc6fcc8ac.aspx</guid>
      <link>http://blog.renestein.net/Posledn%c3%ad+Voln%c3%a1+M%c3%adsta+Na+Kurzu+OOP+A+N%c3%a1vrhov%c3%bdch+Vzor%c5%af.aspx</link>
      <pubDate>Mon, 08 Sep 2008 07:58:28 GMT</pubDate>
      <description>&lt;p&gt;
Několik zájemců o veřejný kurz OOP a návrhových vzorů raději zvolilo&amp;nbsp;inhouse
variantu kurzu, proto bych vás rád upozornil,&amp;nbsp; že se můžete ještě nyní dodatečně
hlásit na kurz OOP a návrhových vzorů.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.renestein.net/Pozv%c3%a1nka+Na+%c5%98%c3%adjnov%c3%bd+Term%c3%adn+Kurzu+Objektov%c3%bdmi+Principy+A+N%c3%a1vrhov%c3%bdmi+Vzory+%c5%98%c3%adzen%c3%bd+Design+A+V%c3%bdvoj+Kvalitn%c3%adch+Aplikac%c3%ad.aspx"&gt;Pozvánka
s odkazy na podrobné informace o kurzu.&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=3ffd8c92-81d4-4a4a-9877-8c9fc6fcc8ac" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,3ffd8c92-81d4-4a4a-9877-8c9fc6fcc8ac.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>Ostatní</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=5444316a-b000-49d6-991c-311e9abfce7d</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,5444316a-b000-49d6-991c-311e9abfce7d.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=5444316a-b000-49d6-991c-311e9abfce7d</wfw:commentRss>
      <title>Pozvánka na říjnový termín kurzu Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,5444316a-b000-49d6-991c-311e9abfce7d.aspx</guid>
      <link>http://blog.renestein.net/Pozv%c3%a1nka+Na+%c5%98%c3%adjnov%c3%bd+Term%c3%adn+Kurzu+Objektov%c3%bdmi+Principy+A+N%c3%a1vrhov%c3%bdmi+Vzory+%c5%98%c3%adzen%c3%bd+Design+A+V%c3%bdvoj+Kvalitn%c3%adch+Aplikac%c3%ad.aspx</link>
      <pubDate>Sun, 18 May 2008 11:11:09 GMT</pubDate>
      <description>Dovolte mi, abych Vás všechny pozval na podzimní termín kurzu Objektovými principy a návrhovými vzory řízený design a vývoj kvalitních aplikací.  Po vyhodnocení některých připomínek jsem se rozhodli změnit místo, kde se školení uskuteční.&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=5444316a-b000-49d6-991c-311e9abfce7d"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,5444316a-b000-49d6-991c-311e9abfce7d.aspx</comments>
      <category>Analytické drobky</category>
      <category>Kurzy UML a OOP</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=e45d4b65-894f-42cb-bf72-737601cb61c7</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,e45d4b65-894f-42cb-bf72-737601cb61c7.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,e45d4b65-894f-42cb-bf72-737601cb61c7.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e45d4b65-894f-42cb-bf72-737601cb61c7</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <title>Jak prosadit BizTalk (a SOA architekturu vůbec) u českých firem?</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,e45d4b65-894f-42cb-bf72-737601cb61c7.aspx</guid>
      <link>http://blog.renestein.net/Jak+Prosadit+BizTalk+A+SOA+Architekturu+V%c5%afbec+U+%c4%8cesk%c3%bdch+Firem.aspx</link>
      <pubDate>Mon, 11 Oct 2004 14:57:00 GMT</pubDate>
      <description>Pár námětů na zamyšlení pro produktové manažery v Microsoftu ohledně rozšiřování BizTalku 2004 a "evangelizaci" jeho schopností a hranic. Jedná se ...&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=e45d4b65-894f-42cb-bf72-737601cb61c7"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,e45d4b65-894f-42cb-bf72-737601cb61c7.aspx</comments>
      <category>Analytické drobky</category>
      <category>Biztalk</category>
      <category>Ostatní</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=5bf7770f-0359-417e-8f5a-bdb395583084</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,5bf7770f-0359-417e-8f5a-bdb395583084.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,5bf7770f-0359-417e-8f5a-bdb395583084.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=5bf7770f-0359-417e-8f5a-bdb395583084</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Je vzrušující pozorovat, jak na svém počátku amorfní a abstraktní vzor nabývá svébytného
a ostře ohraničeného tvaru pri svém dospívání, když je adoptován různými technologiemi.
Zasazením vzoru do jednoho vývojového prostředí a kontextu se může zdát, že je na
univerzálnost svého použití aspirující smysl vzoru zastřen a překryt dominantním zaměřením
a převládajícími výrazovými prostředky jedné technologie. Každý dobrý návrhový vzor
se ale svojí konkretizací v jedné nebo i více technologiích nevyčerpává, ale je připraven
vymanit se ze sevření každé technologie a při změně IT paradigmatu znovu nabídnout
svoji plnou formativní potenci pro nové postupy, pravidla a vazby ve vývoji. Když
se mění technologie, programovací jazyky nebo celé zažité programátorské návyky (strukturální
versus objektové programování), tak esence kvalitního návrhového vzoru není dotčena
a jeho abstraktní smysl začne být jen artikulován výrazovými prostředky žezlo přebírajícího
paradigmatu a z něj vyplývajícího znalostního a pojmového horizontu. Dobrý návrhový
vzor participuje na tvorbě struktur nového paradigmatu a současně je nově vznikajícími
strukturami přetavován ve svou jinou, parciální a dočasnou formu.
</p>
        <p>
Když nechcete, aby vaše znalosti beznadějně zastaraly za pár měsíců, nebazírujte na
zvládnutí programovacích jazyků, vývojových prostředí nebo frameworků, ale stavte
své znalosti na návrhových vzorech. .Net Framework nebo J2EE jsem se naučil tak, že
jsem se za jednotlivými knihovnami nesnažil vidět deprimující změť tříd a metod, ale
harmonii návrhových vzorů.
</p>
        <p>
Jak se projevují migrace a proměny vzorů? 
</p>
        <p>
Vezměme si za příklad vzor Asynchronous Completion Token (ACT) popsaný v knize Patterns
Oriented Software Architecture (autor Frank Buschmann a kolektiv). Tento vzor popisuje,
jak dosáhneme efektivního a na zdroje počítače nenáročného zpracování odpovědí z více
asynchronních požadavků. ACT je objekt (v obecném slova smyslu), který unikátně identifikuje
každý asynchronní požadavek a slouží k výběru správného zpracovatele odpovědí. Participanti
vzory jsou tři - iniciátor asynchronního požadavku, služba, která je volána a ACT
pro korelaci požadavků a odpovědí.
</p>
        <p>
V .NET je ACT vzor transformován do speciálního vzoru pro asynchronní volání, kdy
je zavedena formální konvence, že asynchronní metody jsou prefixovány slovy Begin
(začátek požadavku) a End (Konec požadavku), Každý delegát nabízí metody Begin a End,
jejichž posledním parametrem je zase dle konvence jakýkoli objekt, který pak v systému
hraje roli ACT. ACT neslouží ale k výběru primárního zpracovatele asynchronní odpovědi,
protože ten je na začátku asynchronního volání determinován předposledním parametrem,
jímž je delegát AsyncCallBack ukazující na metodu s kompatibilní signaturou. Předaný
ACT ale může být klíčem k dynamickému určení sekundárního zpracovatele a/nebo je objektem
pro přenos stavových informací. 
</p>
        <p>
.Net si tedy ACT vzor přizpůsobil k obrazu svému a vybral si jen některé jeho myšlenky.
</p>
        <p>
ACT se také uplatňuje v SOA - v architektuře založené na službách, které si mezi sebou
asynchronně vyměňují tisíce zpráv denně, potřebujeme prostředek pro korelaci zpráv-požadavků
a návazných zpráv-odpovědí. V SOA je uplatňován návrhový vzor s názvem Correlation
Identifier - v hlavičce zprávy je uložen jednoznačný identifikátor požadavku, který
je v hlavičce odpovědi zaslán zpět odesílateli. Jsme v SOA a stále pracujeme se starým
dobrým ACT vzorem, jen místo delegátů mluvíme o zprávách, dokumentech a hlavičkách
s ACT informací. 
</p>
        <p>
Vzor Correlation identifier (a ACT) je dále rozpracováván ve specifikacích pro jednotlivé
technologie. Když budeme mít SOA založenou na webových službách, setkáme se s normovaným
ACT ve standardu ws:addressing, kde je stanovena a přijata konvence, že ACT musí odesílatel
poslat v hlavičce nazvané MessageId a kdy je vyžadováno, aby hlavičku uvedl, a odesílatel
je povinen hodnotu z MessageId poslat v hlavičce odpovědi s názvem RelatesTo.
</p>
        <p>
Až skončí éra SOA, webových služeb, .Net Frameworku a přijde jiná, úžasnější, oslnivější
a zase skoro dokonalá technologie, na které se bude hlavně dobře vydělávat,;) nepřežijí
dílčí implementace ACT v těchto prostředích, ale můžeme si být skoro jisti, že vzor
ACT jako bájný Fénix vstane omlazený z popela, změní svůj vnější vzhled, aby byl "in",
ale jeho podstata zůstane beze změny, dokud budou existovat asynchronní volání.
</p>
        <p>
        </p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=5bf7770f-0359-417e-8f5a-bdb395583084" />
      </body>
      <title>Metamorfózy a migrace návrhových vzorů</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,5bf7770f-0359-417e-8f5a-bdb395583084.aspx</guid>
      <link>http://blog.renestein.net/Metamorf%c3%b3zy+A+Migrace+N%c3%a1vrhov%c3%bdch+Vzor%c5%af.aspx</link>
      <pubDate>Mon, 04 Oct 2004 19:54:00 GMT</pubDate>
      <description>
		&lt;p&gt;
Je vzrušující pozorovat, jak na svém počátku amorfní a abstraktní vzor nabývá svébytného
a ostře ohraničeného tvaru pri svém dospívání, když je adoptován různými technologiemi.
Zasazením vzoru do jednoho vývojového prostředí a kontextu se může zdát, že je na
univerzálnost svého použití aspirující smysl vzoru zastřen a překryt dominantním zaměřením
a převládajícími výrazovými prostředky jedné technologie. Každý dobrý návrhový vzor
se ale svojí konkretizací v jedné nebo i více technologiích nevyčerpává, ale je připraven
vymanit se ze sevření každé technologie a při změně IT paradigmatu znovu nabídnout
svoji plnou formativní potenci pro nové postupy, pravidla a vazby ve vývoji. Když
se mění technologie, programovací jazyky nebo celé zažité programátorské návyky (strukturální
versus objektové programování), tak esence kvalitního návrhového vzoru není dotčena
a jeho abstraktní smysl začne být jen artikulován výrazovými prostředky žezlo přebírajícího
paradigmatu a z něj vyplývajícího znalostního a pojmového horizontu. Dobrý návrhový
vzor participuje na tvorbě struktur nového paradigmatu a současně je nově vznikajícími
strukturami přetavován ve svou jinou, parciální a dočasnou formu.
&lt;/p&gt;
&lt;p&gt;
Když nechcete, aby vaše znalosti beznadějně zastaraly za pár měsíců, nebazírujte na
zvládnutí programovacích jazyků, vývojových prostředí nebo frameworků, ale stavte
své znalosti na návrhových vzorech. .Net Framework nebo J2EE jsem se naučil tak, že
jsem se za jednotlivými knihovnami nesnažil vidět deprimující změť tříd a metod, ale
harmonii návrhových vzorů.
&lt;/p&gt;
&lt;p&gt;
Jak se projevují migrace a proměny vzorů? 
&lt;/p&gt;
&lt;p&gt;
Vezměme si za příklad vzor Asynchronous Completion Token (ACT) popsaný v knize Patterns
Oriented Software Architecture (autor Frank Buschmann a kolektiv). Tento vzor popisuje,
jak dosáhneme efektivního a na zdroje počítače nenáročného zpracování odpovědí z více
asynchronních požadavků. ACT je objekt (v obecném slova smyslu), který unikátně identifikuje
každý asynchronní požadavek a slouží k výběru správného zpracovatele odpovědí. Participanti
vzory jsou tři - iniciátor asynchronního požadavku, služba, která je volána a ACT
pro korelaci požadavků a odpovědí.
&lt;/p&gt;
&lt;p&gt;
V .NET je ACT vzor transformován do speciálního vzoru pro asynchronní volání, kdy
je zavedena formální konvence, že asynchronní metody jsou prefixovány slovy Begin
(začátek požadavku) a End (Konec požadavku), Každý delegát nabízí metody Begin a End,
jejichž posledním parametrem je zase dle konvence jakýkoli objekt, který pak v systému
hraje roli ACT. ACT neslouží ale k výběru primárního zpracovatele asynchronní odpovědi,
protože ten je na začátku asynchronního volání determinován předposledním parametrem,
jímž je delegát AsyncCallBack ukazující na metodu s kompatibilní signaturou. Předaný
ACT ale může být klíčem k dynamickému určení sekundárního zpracovatele a/nebo je objektem
pro přenos stavových informací. 
&lt;/p&gt;
&lt;p&gt;
.Net si tedy ACT vzor přizpůsobil k obrazu svému a vybral si jen některé jeho myšlenky.
&lt;/p&gt;
&lt;p&gt;
ACT se také uplatňuje v SOA - v architektuře založené na službách, které si mezi sebou
asynchronně vyměňují tisíce zpráv denně, potřebujeme prostředek pro korelaci zpráv-požadavků
a návazných zpráv-odpovědí. V SOA je uplatňován návrhový vzor s názvem Correlation
Identifier - v hlavičce zprávy je uložen jednoznačný identifikátor požadavku, který
je v hlavičce odpovědi zaslán zpět odesílateli. Jsme v SOA a stále pracujeme se starým
dobrým ACT vzorem, jen místo delegátů mluvíme o zprávách, dokumentech a hlavičkách
s ACT informací. 
&lt;/p&gt;
&lt;p&gt;
Vzor Correlation identifier (a ACT) je dále rozpracováván ve specifikacích pro jednotlivé
technologie. Když budeme mít SOA založenou na webových službách, setkáme se s normovaným
ACT ve standardu ws:addressing, kde je stanovena a přijata konvence, že ACT musí odesílatel
poslat v hlavičce nazvané MessageId a kdy je vyžadováno, aby hlavičku uvedl, a odesílatel
je povinen hodnotu z MessageId poslat v hlavičce odpovědi s názvem RelatesTo.
&lt;/p&gt;
&lt;p&gt;
Až skončí éra SOA, webových služeb, .Net Frameworku a přijde jiná, úžasnější, oslnivější
a zase skoro dokonalá technologie, na které se bude hlavně dobře vydělávat,;) nepřežijí
dílčí implementace ACT v těchto prostředích, ale můžeme si být skoro jisti, že vzor
ACT jako bájný Fénix vstane omlazený z popela, změní svůj vnější vzhled, aby byl "in",
ale jeho podstata zůstane beze změny, dokud budou existovat asynchronní volání.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=5bf7770f-0359-417e-8f5a-bdb395583084" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,5bf7770f-0359-417e-8f5a-bdb395583084.aspx</comments>
      <category>Analytické drobky</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=44e606b8-25e6-4a28-a25b-8c0b13579155</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,44e606b8-25e6-4a28-a25b-8c0b13579155.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,44e606b8-25e6-4a28-a25b-8c0b13579155.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=44e606b8-25e6-4a28-a25b-8c0b13579155</wfw:commentRss>
      <slash:comments>10</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Již dlouhou dobu se mluví o tom, že business frameworky a komponenty se stanou standardem
při vývoji aplikací, již tradičně zlevní a zjednoduší jejich tvorbu (někteří cynici
si myslí, že se jedná jen o další etapu v procesu geneze nového druhu cvičené opice
z programátora ;)) a budou stejně populární jako vizuální komponenty v uživatelském
rozhraní. Zatím se tak nestalo, ale zajímalo by mě, o jaké komponenty byste měli zájem.
Všechny komponenty by byly samozřejmě doplněny o komplexní podporu v IDE (VS.NET,
Eclipse atd.), byly by dodávány s průvodci pro nejběžnější úlohy a kvalitní dokumentací
- jinými slovy, šlo by o komponenty s veškerým servisem, který znáte z UI komponent.
</p>
        <p>
Protože v .TEXTu neudělám anketu:(, odpovídejte prosím v komentářích.
</p>
        <p>
1) Komponenta pro generování kódu vrstvy pro přístup do databáze zvládající různé
způsoby mapování objektů a jejich vztahů (agregace , asociace, dědičnost...). Pozor,
nejedná se o netypový mapper, jakými měly být ve VS.NET Whidbey třeba Object Spaces,
ale o "inteligentní" generátor typových metod databázové vrstvy, metod pro nahrání
a uložení business objektů, storovaných procedur a DDL skriptů. 
</p>
        <p>
2) Komponenta pro kompletní evidenci historie business objektů. Logování změn všech
nebo vybraných atributů objektu, volba mezi mělkou nebo hlubokou historií objektů,
zapnutí podpory historie u třídy jedním konfiguračním klíčem i po nasazení projektu,
výběr mezi mnoha formáty pro ukládání historie.
</p>
        <p>
3) Komponenta pro vizuální definici jakéhokoli workflow nad objekty - generování kódu
pro přechody mezi stavy, vizuální definice podmínek přechodu, komunikace mezi různými
stavovými automaty, validace workflow, změna průběhu workflow by byla řešena za běhu
aplikace výměnou jednoho definičního souboru.
</p>
        <p>
4) Jiná komponenta. Napište prosím, jakou komponentu byste potřebovali.
</p>
        <p>
Díky za odpovědi.
</p>
        <img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=44e606b8-25e6-4a28-a25b-8c0b13579155" />
      </body>
      <title>Malá anketa o business komponentách</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,44e606b8-25e6-4a28-a25b-8c0b13579155.aspx</guid>
      <link>http://blog.renestein.net/Mal%c3%a1+Anketa+O+Business+Komponent%c3%a1ch.aspx</link>
      <pubDate>Fri, 01 Oct 2004 16:10:00 GMT</pubDate>
      <description>
		&lt;p&gt;
Již dlouhou dobu se mluví o tom, že business frameworky a komponenty se stanou standardem
při vývoji aplikací, již tradičně zlevní a zjednoduší jejich tvorbu (někteří cynici
si myslí, že se jedná jen o další etapu v procesu geneze nového druhu cvičené opice
z programátora ;)) a budou stejně populární jako vizuální komponenty v uživatelském
rozhraní. Zatím se tak nestalo, ale zajímalo by mě, o jaké komponenty byste měli zájem.
Všechny komponenty by byly samozřejmě doplněny o komplexní podporu v IDE (VS.NET,
Eclipse atd.), byly by dodávány s průvodci pro nejběžnější úlohy a kvalitní dokumentací
- jinými slovy, šlo by o komponenty s veškerým servisem, který znáte z UI komponent.
&lt;/p&gt;
&lt;p&gt;
Protože v .TEXTu neudělám anketu:(, odpovídejte prosím v komentářích.
&lt;/p&gt;
&lt;p&gt;
1) Komponenta pro generování kódu vrstvy pro přístup do databáze zvládající různé
způsoby mapování objektů a jejich vztahů (agregace , asociace, dědičnost...). Pozor,
nejedná se o netypový mapper, jakými měly být ve VS.NET Whidbey třeba Object Spaces,
ale o "inteligentní" generátor typových metod databázové vrstvy, metod pro nahrání
a uložení business objektů, storovaných procedur a DDL skriptů. 
&lt;/p&gt;
&lt;p&gt;
2) Komponenta pro kompletní evidenci historie business objektů. Logování změn všech
nebo vybraných atributů objektu, volba mezi mělkou nebo hlubokou historií objektů,
zapnutí podpory historie u třídy jedním konfiguračním klíčem i po nasazení projektu,
výběr mezi mnoha formáty pro ukládání historie.
&lt;/p&gt;
&lt;p&gt;
3) Komponenta pro vizuální definici jakéhokoli workflow nad objekty - generování kódu
pro přechody mezi stavy, vizuální definice podmínek přechodu, komunikace mezi různými
stavovými automaty, validace workflow, změna průběhu workflow by byla řešena za běhu
aplikace výměnou jednoho definičního souboru.
&lt;/p&gt;
&lt;p&gt;
4) Jiná komponenta. Napište prosím, jakou komponentu byste potřebovali.
&lt;/p&gt;
&lt;p&gt;
Díky za odpovědi.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=44e606b8-25e6-4a28-a25b-8c0b13579155" /&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,44e606b8-25e6-4a28-a25b-8c0b13579155.aspx</comments>
      <category>Analytické drobky</category>
      <category>Ostatní</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=658c5384-0579-435d-a937-ccabd72cbd8d</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,658c5384-0579-435d-a937-ccabd72cbd8d.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,658c5384-0579-435d-a937-ccabd72cbd8d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=658c5384-0579-435d-a937-ccabd72cbd8d</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>Synchronizace stavových automatů. Rozumíte návrhovému vzoru Mediator?</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,658c5384-0579-435d-a937-ccabd72cbd8d.aspx</guid>
      <link>http://blog.renestein.net/Synchronizace+Stavov%c3%bdch+Automat%c5%af+Rozum%c3%adte+N%c3%a1vrhov%c3%a9mu+Vzoru+Mediator.aspx</link>
      <pubDate>Sun, 06 Jun 2004 18:53:00 GMT</pubDate>
      <description>Návrhový vzor Mediator  zamezuje těsným vztahům mezi objekty zavedením  prostředníka (mediatora), který jejich interakci zapouzdří. Tak praví strohá, ale výstižná definice. Řečeno jinak, Mediator snižuje přímé i nepřímé zatížení třídy jinými třídami.
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=658c5384-0579-435d-a937-ccabd72cbd8d"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,658c5384-0579-435d-a937-ccabd72cbd8d.aspx</comments>
      <category>Analytické drobky</category>
      <category>Návrhové vzory</category>
      <category>UML</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=b7886234-8917-4dd6-a221-ab9435d1795f</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,b7886234-8917-4dd6-a221-ab9435d1795f.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,b7886234-8917-4dd6-a221-ab9435d1795f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=b7886234-8917-4dd6-a221-ab9435d1795f</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <title>O MDA iniciativě, nerozhodných tazích Microsoftu a klukách na pískovišti</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,b7886234-8917-4dd6-a221-ab9435d1795f.aspx</guid>
      <link>http://blog.renestein.net/O+MDA+Iniciativ%c4%9b+Nerozhodn%c3%bdch+Taz%c3%adch+Microsoftu+A+Kluk%c3%a1ch+Na+P%c3%adskovi%c5%a1ti.aspx</link>
      <pubDate>Thu, 27 May 2004 18:43:00 GMT</pubDate>
      <description>Dnes jsem se zúčastnil konference Vývoj celopodnikových aplikací v .NET pořádané Microsoftem a společností LBMS. Na konferenci jsem se přihlásil, protože v pozvánce byla zmínka o MDA (Model Driven Architecture) a já byl zvědavý, jestli na této přednášce bude upřesněn nebo vyjasněn z mého &lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=b7886234-8917-4dd6-a221-ab9435d1795f"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,b7886234-8917-4dd6-a221-ab9435d1795f.aspx</comments>
      <category>Analytické drobky</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=c14eb164-0f16-4c45-9909-136b6acc1ff6</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,c14eb164-0f16-4c45-9909-136b6acc1ff6.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,c14eb164-0f16-4c45-9909-136b6acc1ff6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=c14eb164-0f16-4c45-9909-136b6acc1ff6</wfw:commentRss>
      <slash:comments>10</slash:comments>
      <title>Analytikova zkušenost s Ariadninou nití</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,c14eb164-0f16-4c45-9909-136b6acc1ff6.aspx</guid>
      <link>http://blog.renestein.net/Analytikova+Zku%c5%a1enost+S+Ariadninou+Nit%c3%ad.aspx</link>
      <pubDate>Sun, 16 May 2004 13:10:00 GMT</pubDate>
      <description>Svět objektově orientovaného programování je plný různých doporučení, striktních zákazů, nemilosrdně vyžadovaných pravidel i dobře míněných zápisků s petrifikovanými zkušenostmi analytiků-doyenů.
&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=c14eb164-0f16-4c45-9909-136b6acc1ff6"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,c14eb164-0f16-4c45-9909-136b6acc1ff6.aspx</comments>
      <category>Analytické drobky</category>
    </item>
    <item>
      <trackback:ping>http://blog.renestein.net/Trackback.aspx?guid=ac3795c8-60e1-47b9-b9bb-d732f0bb1f6e</trackback:ping>
      <pingback:server>http://blog.renestein.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.renestein.net/PermaLink,guid,ac3795c8-60e1-47b9-b9bb-d732f0bb1f6e.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://blog.renestein.net/CommentView,guid,ac3795c8-60e1-47b9-b9bb-d732f0bb1f6e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.renestein.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ac3795c8-60e1-47b9-b9bb-d732f0bb1f6e</wfw:commentRss>
      <slash:comments>15</slash:comments>
      <title>Moderní architektura očima Microsoftu aneb rozpaky nad vizemi</title>
      <guid isPermaLink="false">http://blog.renestein.net/PermaLink,guid,ac3795c8-60e1-47b9-b9bb-d732f0bb1f6e.aspx</guid>
      <link>http://blog.renestein.net/Modern%c3%ad+Architektura+O%c4%8dima+Microsoftu+Aneb+Rozpaky+Nad+Vizemi.aspx</link>
      <pubDate>Wed, 05 May 2004 19:14:00 GMT</pubDate>
      <description>Na konferenci, jejíž název je v titulku spotu, jsem strávil dnešní den. Microsoft na ní po úvodní přednášce prezentoval hlavně BizTalk, takže jsem ji bral jako pokračování praktického semináře z minulého týdne. Úvodní přednášku měl Michael Juřek a vysvětloval v ní, jak Microsoft reaguje na požadavky ...&lt;img width="0" height="0" src="http://blog.renestein.net/aggbug.ashx?id=ac3795c8-60e1-47b9-b9bb-d732f0bb1f6e"/&gt;</description>
      <comments>http://blog.renestein.net/CommentView,guid,ac3795c8-60e1-47b9-b9bb-d732f0bb1f6e.aspx</comments>
      <category>Analytické drobky</category>
    </item>
  </channel>
</rss>