<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6682793027261417326</id><updated>2024-09-07T00:50:53.265+03:00</updated><category term="Software Architecture and  Design"/><category term="Object Oriented Programming"/><category term="SOA"/><category term="Software Quality"/><category term="Data Modelling"/><category term="Database"/><title type='text'>BT Güncem</title><subtitle type='html'>Bilgi teknolojileri hakkında edindiğim bilgi, tecrübe ve   aklıma düşen çağrışımları paylaşacağım, Türkçe kişisel güncem.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-7492311912966832129</id><published>2011-05-02T12:19:00.001+03:00</published><updated>2011-05-09T11:15:19.234+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><title type='text'>Şirketiniz İçin SOA</title><content type='html'>&lt;!--[if !mso]&gt; &lt;style&gt;
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
&lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves&gt;false&lt;/w:TrackMoves&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:EnableOpenTypeKerning/&gt;    &lt;w:DontFlipMirrorIndents/&gt;    &lt;w:OverrideTableStyleHps/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val=&quot;Cambria Math&quot;/&gt;    &lt;m:brkBin m:val=&quot;before&quot;/&gt;    &lt;m:brkBinSub m:val=&quot;&amp;#45;-&quot;/&gt;    &lt;m:smallFrac m:val=&quot;off&quot;/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val=&quot;0&quot;/&gt;    &lt;m:rMargin m:val=&quot;0&quot;/&gt;    &lt;m:defJc m:val=&quot;centerGroup&quot;/&gt;    &lt;m:wrapIndent m:val=&quot;1440&quot;/&gt;    &lt;m:intLim m:val=&quot;subSup&quot;/&gt;    &lt;m:naryLim m:val=&quot;undOvr&quot;/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState=&quot;false&quot; DefUnhideWhenUsed=&quot;true&quot;
  DefSemiHidden=&quot;true&quot; DefQFormat=&quot;false&quot; DefPriority=&quot;99&quot;
  LatentStyleCount=&quot;267&quot;&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;0&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Normal&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;heading 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 7&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 8&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;9&quot; QFormat=&quot;true&quot; Name=&quot;heading 9&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 7&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 8&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; Name=&quot;toc 9&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;35&quot; QFormat=&quot;true&quot; Name=&quot;caption&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;10&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Title&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; Name=&quot;Default Paragraph Font&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;11&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtitle&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;22&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Strong&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;20&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Emphasis&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;59&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Table Grid&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Placeholder Text&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;1&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;No Spacing&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; UnhideWhenUsed=&quot;false&quot; Name=&quot;Revision&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;34&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;List Paragraph&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;29&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Quote&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;30&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Quote&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 1&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 2&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 3&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 4&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 5&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;60&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Shading Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;61&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light List Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;62&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Light Grid Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;63&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 1 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;64&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Shading 2 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;65&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 1 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;66&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium List 2 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;67&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 1 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;68&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 2 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;69&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Medium Grid 3 Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;70&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Dark List Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;71&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Shading Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;72&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful List Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;73&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; Name=&quot;Colorful Grid Accent 6&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;19&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Emphasis&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;21&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Emphasis&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;31&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Subtle Reference&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;32&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Intense Reference&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;33&quot; SemiHidden=&quot;false&quot;
   UnhideWhenUsed=&quot;false&quot; QFormat=&quot;true&quot; Name=&quot;Book Title&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;37&quot; Name=&quot;Bibliography&quot;/&gt;   &lt;w:LsdException Locked=&quot;false&quot; Priority=&quot;39&quot; QFormat=&quot;true&quot; Name=&quot;TOC Heading&quot;/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:&quot;Table Normal&quot;;
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-parent:&quot;&quot;;
 mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
 mso-para-margin-top:0cm;
 mso-para-margin-right:0cm;
 mso-para-margin-bottom:10.0pt;
 mso-para-margin-left:0cm;
 line-height:115%;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;
 mso-bidi-font-family:&quot;Times New Roman&quot;;
 mso-bidi-theme-font:minor-bidi;
 mso-fareast-language:EN-US;}
&lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:shapedefaults v:ext=&quot;edit&quot; spidmax=&quot;2051&quot;/&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:shapelayout v:ext=&quot;edit&quot;&gt;   &lt;o:idmap v:ext=&quot;edit&quot; data=&quot;2&quot;/&gt;  &lt;/o:shapelayout&gt;&lt;/xml&gt;&lt;![endif]--&gt;  &lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Günümüz iş ortamı hiç olmadığı kadar rekabetçi. Yaratıcı iş modelleri, geleneksel ve yeni nesil rakipler, hizmet kanallarının çeşitliliği, sürekli artan kalite ihtiyacı,&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;yeni uyumluluk gereksinimleri &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;ve artan maliyet baskıları CEO’ların&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;gündemini sürekli olarak meşgul ediyor. Sürekli yeni fikirler üretebilen ve fikirlerini çok hızlı markete sunabilen,&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;esnek, çevik ve&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;tepkisel bir şirket olabilmek her CEO’nun hedefi. İçsel ya da dışsal dinamiklerden doğacak taleplerin hayata geçirilebilmesi için de zaman eskiye görece çok daha kısıtlı. Oysa, yeniliklerin zamanında pazara sunulamaması &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;çoğu kez pazar &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;kaybıyla eşdeğer. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Tüm bunlar, doğal olarak fikirleri hızlıca hayata geçmesini sağlayacak teknolojilere olan ihtiyacı ve bu teknolojileri sunmakla görevli IT birimleri üzerindeki yükü hiç olmadığı kadar arttırmaktadır. Doğru teknoloji kullanımının stratejik önemi&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;giderek artmakta ve dijital iş dünyası ile gerçek dünya arasındaki sınırlar giderek ortadan kalkmaktadır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Dolayısıyla, artık şirketler içerisindeki IT departmanları, İş departmanları ile çok daha uyumlu ve birebir çalışmak durumundadır.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;IT departmanlarının taleplerin sürekliliği ve artan yoğunluğu ile başa çıkabilen, gelen talepleri hızlıca ve kurum içerisinde en az etki ile hayata geçiren bir yapıya adapte olması için yeni yaklaşımlar gerekmektedir. Servis odaklılık yaklaşımının mimari yansıması olan Servis Odaklı Mimari (SOA: Service Oriented Architecture) işte bu değişen iş ortamının gereklerini karşılamak için ortaya çıkmış, bir kurumsal mimari modelidir. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Forrester ve Gartner gibi firmalarca yürütülen araştırmalar SOA’den vaad edilen sonuçları alabilen firmaların, SOA’i bir kurumsal mimari modeli ve stratejik dönüşüm yaklaşımı olarak ele alan firmaların etkin sonuçlar elde edebildiğini gösteriyor. SOA’nin ciddi bir dönüşüm gerektirdiği, ancak aynı zamanda küçük, dikkatli adımlarla giden ve artarak ilerleyen bir süreçle ele alınması gerektiği muhakkak. SOA’nın vaad ettiği faydaların, gerçekleştirim sürecinin giderek olgunlaşmasıyla artarak devam ettiği göz önüne alınırsa, SOA’i sadece bir teknoloji olarak algılayıp, stratejik bir vizyondan yoksun olarak yola çıkan firmaların, büyük resmi kaçırmaları ve beklenen faydaları görememeleri, doğal bir sonuç olarak algılanmalıdır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Bu yazıda servis odaklılık kavramları, iş dünyasına yansımaları ve stratejik SOA dönüşümlerinin nasıl ele alınması gerektiği üzerinde durulmuştur.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h1&gt;&lt;a href=&quot;&quot; name=&quot;_Servis_Nedir?&quot;&gt;&lt;/a&gt;Servis Nedir?&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Servis odaklı yaklaşımının temeli, doğal olarak servis kavramıdır. Bir servis, tutarlı bağlam çerçevesinde, birbirine uygun bir gurup tekrarlanabilir operasyondan oluşan, iyi tanımlanmış standard bir arabirime sahip, kavramsal bir bileşen olarak tanımlanabilir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Dijital servisler gerçek dünyadaki oluşumların iyi tariflenmiş birer yansıması gibidir. Hemen hemen herkesin elektirik, su veya iletişim sağlayan şirketler ile bir müşteri olma hikayesi olmuştur. Bu firmalara işlemleriniz için uğradığınızda sizi “Müşteri Hizmetleri Birimi”’ne yönlendirirler. “Müşteri Hizmetleri Birimi” müşteriler için olası tüm operasyonları tek noktadan sunarak genel işleyişte bir verimlilik hedefler. Bu birimi SOA’de bir digital servis olarak tarifleseydik, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;“Müşteri Servisi” yaratıp, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;bu servise bağlı olarak da &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;“Müşteri Bilgilerini Getir”, “Yeni Müşteri Yarat”, “Müşteri Bilgilerini Güncelle”, “Abonelik Sonlandır”&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;gibi uygun operasyonlar tanımlayabilirdik.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Daha teknik bir örnek olarak bir yazıcı ünitesinin işlevlerini servis olarak tanımlamayı kullanabiliriz. “Yazıcı Servisi” muhtemelen “Belgeyi Yazır”, “Duraklat”, “İptal Et”, “Kapan”,”Açıl”,”Uyku Moduna Geç” gibi &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;operasyonlar içerecektir. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Gerçek dünyada bulunan nesneleri bir servis olarak kavramlaştırmanın en kolay yolu, o şeyi bir kara kutu olarak düşünmek ve dışarıdan aldığı direktif ve bunlara cevaplarını birer operasyon olarak tanımlamaktır. Örneğin bir iş biriminine organizasyon yapısı, iş süreçleri ve benzeri karmaşık yapılarından sıyrılarak dışarıdan baktığımızda ne gibi işlevleri yerine getirdiğini kolayca servis olarak tanımlayabiliriz. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;SOA’nin ortaya çıkışına yol açan en büyük neden,&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;sık yaşanan değişimlerin etkilerini minimize etmek gayreti olarak tanımlanabilir. Bir başka deyişle, değişikliğe gittiğiniz bir nesnenin zincirleme değişiklikler reaksiyonuna yol açmasının önünü kesmek çabası olarak da nitelendirilebilir. Eğer bir bileşenin kendi görevlerini yerine getirmesi için bir diğer bileşenden faydalanması gerekiyor ise, bu ilişki bir bağlanım (coupling)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;olarak nitelendirilir. Satış departmanının bir satış işlemini tamamlaması için stok, lojistik ve muhasebe gibi departmanlara duyduğu ihtiyaç bir bağlanım örneğidir. Lojistik deparmanının mal teslimi için kabul formlarında yapacağı değişikliğin satış departmanı tarafından öğrenilmesi ve kendini buna göre adapte etmesi çalışması ise değişim etkisine (change impact) iyi bir örnektir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Bir başka bağlanım örneği olarak iş süreçlerinin içerisine dahil edilen bir tedarikçi firma düşünün. İş süreçlerinde bu tedarikçi firmaya ihtiyaç duyan her şirket içi iş birimi ile tedarikçi arasında bir eşleme oluşturacaktır. Şimdi bu eşleme ilişkisinde doğal olarak tedarikçi ile olan ilişkiler, tedarikçinin gereksinimleri temin etme şekli (formlar, sipariş alma, durum takibi vb) ve diğer faktörler önemli olacaktır. Markette alternatifler oluşması ile tedarikçi sayısının zamanla arttığını düşünün. Her tedarikçi yeni ilişkiler, formlar, iş süreçlerini beraberinde getirecektir. Bir tedarikçinin değiştirilmesi zorunluluğu doğduğu zaman,o tedarikçi ile uyumluluğunu pekiştirmiş tüm iş birimlerinden homurtular yükselecektir. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtDls5c7fq2b6PKsP7lGXicJAGy1T2fipZKnCgkquR2UHfN2FICek-7jixMf15P22aMcPbP6zDyHOD3pD1nTiZM3OXbbnkThMF7yaxmY94jc74UmgjRnX7zLeYgoNOWWVnzz4njep5I3nv/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtDls5c7fq2b6PKsP7lGXicJAGy1T2fipZKnCgkquR2UHfN2FICek-7jixMf15P22aMcPbP6zDyHOD3pD1nTiZM3OXbbnkThMF7yaxmY94jc74UmgjRnX7zLeYgoNOWWVnzz4njep5I3nv/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center; text-indent: 35.4pt;&quot;&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Klasik yaklaşımda mevcut tedarikçiler ile sıkı bir ilişki içerisinde bulunulduğundan, her entegrasyon noktasında her yeni tedarikçi ile bir adaptasyon süreci yaşamanız zorunluluğu vardır. Bu adaptasyon için harcayacağınız enerji değişim etkisine bir başka örnek teşkil eder Değişim etkilerinin yüksek olduğu bir şirkette alınan her karar, yapılacak her değişiklik büyük efor ve zaman gerektireceğinden, şirketin hareket kabiliyeti doğal olarak kısıtlanır. Böyle bir durumda şirketin esnekliğinden ve çevikliğinden söz edilemez. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;SOA, bu durumdan kurtulmak için bağlanım ilişkisinin&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;gerçekleştirimler yerine sözleşmeler üzerinden kurulması ilkesini getirir (gevşek bağlanım). &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Servisler amaçlarını, sundukları yetenekleri, servisin nasıl kullanılacağını, mesaj yapılarını ve diğer özelliklerini bir servis sözleşmesi ile olası istemcilere sunarlar. Servisi alan taraf yani istemci, hizmetin nasıl ve kim tarafından sunulduğu ile değil, sunulmuş olan standart sözleşme ile bağımlıdır. Sözleşme yerine getirildiği sürece sözleşmenin arka planında olup biten değişiklikler istemciye yansımaz. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL5i9mKdLUahZ5kc4s1Q4Zbueb14oMkPYhabwyNUUccGL3NR0xVNo_gQx2BE0gC5P7s-EUrvlqqghiX1WYvSmQmgd90yw3ix3BC7eyyq4qyXTC4_1EgUKpx5ebLLbe82juqKL_31WXvpMV/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;270&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL5i9mKdLUahZ5kc4s1Q4Zbueb14oMkPYhabwyNUUccGL3NR0xVNo_gQx2BE0gC5P7s-EUrvlqqghiX1WYvSmQmgd90yw3ix3BC7eyyq4qyXTC4_1EgUKpx5ebLLbe82juqKL_31WXvpMV/s400/2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center; text-indent: 35.4pt;&quot;&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Tedarikçiler örneği için şirketlerin genellikle izlediği yol bir satın alma departmanı kurup iş birimlerinin taleplerinin standard yollar ile toplamaktır. Yeni tedarikçi ekleme ya da tedarikçi değişikliği örneğini ele alacak olursak servis odaklı bir şirket tedarikçi değişikliğini hemen hemen hiç hissetmeden, sadece satın alma biriminde küçük adaptasyonlar ile yapabilecektir. İşte bu SOA’nin vaad ettiği esneklik ve çevikliğin en önemli örneklerinden birisidir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;IT içinden bir örnek verecek olursak, &quot;mainframe&quot; uygulamaları gibi geleneksel uygulamaların açık sistemlere taşınması sırasında oluşacak etkiyi ele alabiliriz. Gerçekten de bu örnek pek çok CIO’nun başını ağrıtan bir sorundur. Tüm uygulamalar baştan sona günün gereklerine göre yeniden yazılabilir. Ancak değişmeyen tek şey değişim olduğundan, bir süre sonra yeni teknolojilerin ortaya çıkması ile bu teknolojilere adaptasyon gerekeceği aşikardır. Bu durumda oyunu tekrar baştan kurup, yeni baştan her şeyi ele almak gerekecektir. SOA bize bu noktada kavramsal düzeyde stabil olanı tanımlamayı (Servis Sözleşmeleri) ve tüm bağımlılıkları değişmesi muhtemel bileşenler yerine, daha stabil kavramlara doğru yapmamız gerektiğini söylemektedir. Bir yazılımın arabiriminin (servis ve operasyon tanımları), arabiriminin nasıl gerçekleştiğinden &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;(operasyonların programlama dili ile kodlanması) daha stabil olduğundan biliyoruz.Bu sebeple, gerçekleştirimler yerine arabirimlere kurulacak &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;bağlanım ilişkileri, bağımlı olan taraftaki değişiklik etkisini azaltır. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Şu halde, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;SOA’e göre yapılacak şey aşikar olarak tüm bağımlılıkları iyi tanımlanmış servis arabirimleri üzerine çekerek arka plandaki değişiklikler için hareket kabiliyeti kazanmaktır. Bu sayede servislerinizin gerçekleştirimlerini bugün açık sistemler üzerine taşırken, yarın bulut sistemlere taşımanız ve arka plan kodlarınızı yenilemeniz hissedilmeyecek bir etki ile gerçekleşebilir. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;SOA oluşturma stratejisi olarak servis sanallaştırma (Service Virtualization) ve &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;servis otobüsü (Enterprise Servise Bus) &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;gibi taktikler kullanmanın kurumsal değişimlerde etki indirgemenin en önemli araçlarından olduğunu da konuya yakın olan okuyucular için bir not olarak düşelim.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h1&gt;Servis Odaklı Dizayn Prensipleri&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Service odaklılık, bir dizi dizayn prensibinin uygulanmasını birlikte getirir. Bu yazının amacı her ne kadar bu prensiplerin detaylarına girmek olmasa da konunun daha iyi anlaşılması açısından genel kabul görmüş bir dizi prensibe değinmekte fayda var.&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Servis Sözleşmeleri (Service Contracts) : Servisler amaçlarını, sundukları yetenekleri, servisin nasıl kullanılacağı, mesaj yapılarını ve diğer özelliklerini gösteren bir servis sözleşmesi ile sunarlar. Bir servisi kullanacak her türlü servis istemcisi bu sözleşmeye göre hareket eder. Servis sözleşmeleri istemciler tarafından kolayca yorumlanabilir ve standart şekilde olmalıdırlar. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Gevşek Bağlanım (Loose Coupling): Servis istemcilerinin servise olan bağımlılığı sadece servis sözleşmesinedir. Servisin iç işleyişinin nasıl olduğu, nasıl gerçekleştirildiği servis istemcilerini bağlamaz. Bu ilke gevşek bağlanım olarak adlandırılır. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Kavramsallaştırma (Abstraction – Conceptualization): Kavramların,&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;özelliklerinin ve davranışlarının tanımlanmasına biz kavramsallaştırma diyoruz. Bir başka deyişle kavramsallaştırma, bir servisin, servis olmasını sağlayan şeylerin tanımlanmasıdır diyebiliriz. Kavramsallaştırma yapılırken servis isimlendirmesinin ve servis içerisinde tanımlanan yeteneklerin birbirleriyle uyumu da (cohesion) son derece önemlidir. Bir servisin tanımlanması esnasında (encapsulation)&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;yine servis istemcilerini ilgilendirmeyen gereksiz ayrıntıların sözleşmeye konmaması (information hiding) dikkat edilmesi gereken bir başka husustur. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; text-align: justify; text-indent: 17.4pt;&quot;&gt;İyi tanımlanamamış servislerin ideal formlarına&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;kavuşuncaya kadar değişiklikler görmesi beklenen bir durumdur.Bu sebeple tanımlamalar dikkatlice ve ideal durumlarına göre yapılmalıdır.&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Yeniden Kullanım (Reuse): Çalışma mantığı servislere ve operasyonlara dağıtılarak yeniden kullanımlarının özendirilmesi.&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Keşfedilebilirlik (Discoveribility): Servis sözleşmeleri kullanımı beklenen hedef kitle tarafından kolayca erişilebilir olmalıdır. Bu nedenle, servis sözleşmeleri hedef kitle tarafından erişilebilen servis kayıt defterlerinde kayıt altına alınarak olası istemciler tarafından keşfedilebilmesi sağlanır. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Otonomi (Authonomy): Servisin yeteneklerini kesintisiz ve güvenilir bir şekilde sunabilmesi için kullandığı kaynaklar üzerinde tam otoritesi olmalıdır. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Birleştirebilirlik (Composibility): Servisler başka büyük problem çözümlerinde kullanılabilirler. Bileşimin boyu ve büyüklüğüne bakılmaksızın servisler aktif çözüm bileşenleri olarak tüketilebilirler. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;margin-left: 53.4pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;-&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Durumsuzluk (Statelesness): Durum servis operasyonlarının aynı istemci tarafından ardışıl kullanıldığı durumlarda iki operasyon kullanımı arasında istemci kullanımına özel verilerin saklanmasına verilen addır. Bu, servisin çalışırlığını ve genişleyebilirliği etkileyebileceğinden servislerin mümkün olduğu kadar durumsuz tasarlanması gereklidir. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj01ZL6vyJXe9ih2kXcMKkbd1NjsqsZMzz2K9NO0ZensJCO8oi8vlSVVHGglEL_v6b9cJDkONg5YdHi_TfBlCIHaMc4rLYuLjQY3NkI_DipYfS0E3WyR-T6ClExCAuUYfu2O08EOP5xfBOa/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;185&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj01ZL6vyJXe9ih2kXcMKkbd1NjsqsZMzz2K9NO0ZensJCO8oi8vlSVVHGglEL_v6b9cJDkONg5YdHi_TfBlCIHaMc4rLYuLjQY3NkI_DipYfS0E3WyR-T6ClExCAuUYfu2O08EOP5xfBOa/s400/3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-left: 35.4pt; text-align: center;&quot;&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;SOA prensipleri sadece teknoloji odaklı düşünülmemelidir. Yukarıda geçen tüm prensipler iş dünyası da dahil etkileşim içerisinde bulunan nesnelerin bulunduğu her ağ için uyarlanabilir ve kullanılabilir prensiplerdir. &lt;/div&gt;&lt;h1&gt;İş Yaşamında Servis Odaklılık &lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Yüksek düzeyde iş uzmanlığı gereksiniminin olduğu bir çağda yaşıyoruz. Şirketlerin&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;temel işlevlerine daha iyi odaklanabilmesi için, &quot;iş süreçleri içerisinde kendi alanları dışında kalan&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;pek çok görevde &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;bir iş ortağı ile hareket etmesi&quot; genel kabul gören bir eğilim. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Bu eğilim özellikle üretim sektöründe yıllardır çok ağırlıklı olarak kendini göstermektedir. Aynı yöntem hizmet sektörü tarafından da daha sonradan takip edilmeye başlamıştır. Taşımacılıktan tutun da insan kaynakları yönetimine kadar pek çok alanda iş ortaklarından alınan uzman taşeron ya da tedarik hizmetleri bugün şirketlerin iş süreçlerine çeşitli seviyelerde entegre olmuş&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;durumda. İş süreçleriniz içerisindeki görevleri, alanında uzman bir iş ortakları ekosistemine dağıtmak, şirketinizin enerjisini ve konsantrasyonunu asıl değer yaratan işlevlerine kaydırması için mükemmel bir yol olduğu gibi, maliyetlerin düşürülmesi ve verim artışı için de aynı ölçüde önemlidir. Yeni başlangıç şirketleri için de çevrelerindeki bu ekosistemden faydalanmak, kendi bünyelerinde ancak çok uzun yıllar içinde edinebilecekleri mükemmel hizmet seviyelerini, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;başka şirketlerden hizmet olarak hazır halde alabilmeleri demektir. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Şirketler kendi iş süreçlerini dış kaynaklardan hizmet alarak optimize ederken, aynı zamanda başka şirket ve/veya bireyler açısından da hizmet sağlayıcı rolüne bürünmektedirler.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Şirketlerin&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;iş ortakları, müşterileri, devlet gibi ortam düzenleyiciler ve diğer partiler ile olan ilişkileri hizmet alıp vermeye dayanan bir çeşit ağa&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;benzetilebilir. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUWBQAIIW034kSR4KTQopuTQn1GekX2KC0IWn1UbBsct8pHQNBY6fioJ_2VhuAc39WPa5p9Cydd1fbYNTr9C2OOQ8lDTxy3RF-tt76RrsFfvK4597lF1JzeCGjcpi4p01T2oo97Y2FMwNS/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;253&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUWBQAIIW034kSR4KTQopuTQn1GekX2KC0IWn1UbBsct8pHQNBY6fioJ_2VhuAc39WPa5p9Cydd1fbYNTr9C2OOQ8lDTxy3RF-tt76RrsFfvK4597lF1JzeCGjcpi4p01T2oo97Y2FMwNS/s400/4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center; text-indent: 35.4pt;&quot;&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Tek bir şirket perspektifinden bakıldığında çok daha karışık bir ağ modeli yine şirketlerin iç işleyişinde de karşımıza çıkar. Bir şirket kendisini oluşturan iş birimleri ve bu iş birimleri tarafından yerine getirilen hizmetlerin bir toplamı olarak görülebilir. Bu hizmetlerden kimileri direkt olarak müşterilere sunulurken, belki sayıca çok daha fazlası da bu hizmetlerin yerine getirilebilmesi için gerekli olan hizmetler şeklindedir. Bir otomotiv firmasını ele alacak olursak bu firmanın en temel hizmeti satış ağı üzerinden müşterilerine araç sağlamak iken, bu hizmetin yerine gelmesi için şirketin iç dünyasında satış, tedarik, üretim, muhasebe ve daha pek çok iş birimi, çok sayıda karmaşık işlevler yerine getirmektedirler.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTPo79_Z_5KtmftFRSCSrksBS2d2ta6VHF5wVZeu715Br-yLdY_K48nelAhUeK065vtpfFuOSfmvnBrm4opdG15XaXzj_Cfp6voucD1-Yu-9OCoOp7jlpIlsDO0t9p3zZnoM1zoXbTytea/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;224&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTPo79_Z_5KtmftFRSCSrksBS2d2ta6VHF5wVZeu715Br-yLdY_K48nelAhUeK065vtpfFuOSfmvnBrm4opdG15XaXzj_Cfp6voucD1-Yu-9OCoOp7jlpIlsDO0t9p3zZnoM1zoXbTytea/s320/5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Bu hizmet alıp verme ilişkisinde, hizmeti sunan (kurum ya da iş birimi) perspektifinden dışarıya sunulan her yetenek,&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;amaçları, standartları ve diğer özellikleri ile tanımlandığında iş servislerini oluşturur. İş yaşamında servis odaklılık şirket yeteneklerinin, nasıl gerçekleştirildiklerinden bağımsız bir düzeyde servisler olarak tanımlanması, yayımlanması ve tüm olası servis istemcilerine etkin bir şekilde sunulmasıdır. Bir iş birimi gibi belli bir perspektiften bakıldığında dış dünyaya sunulan yetenekler ve bu yeteneklerin yerine getirilmesi &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;için gerekli destek yetenekleri,&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;iş servislerinin kalbini oluşturur. Bu servislerin yazılımlar olarak tanımlanması da dijital iş servislerini oluşturmaktadır.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Şüphesiz ki, iş servislerini dijital dünyaya taşımak, bir şirketin yeni dünyaya adaptasyonu için şarttır. Servis odaklı bir dönüşüm, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;şirketlere servislerini sınırsız sayıda kanaldan, sınırsız iş ortağı ve müşterinin hizmetine &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;sunma kabiliyeti kazandıracaktır. &lt;/div&gt;&lt;h1&gt;Servis Tipleri&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Bir şirkette&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;var olan tüm servisler aynı seviyede değerlendirilemez. Dizayn prensiplerinden hatırlayacağınız üzere servisler başka servislerin oluşumunda katılımcı olarak yer almaktadırlar. Servisleri bu bileşim şekli açısından bir hiyerarşiye oturtacak olursak, en üst seviyede şirketin iş alanları ile bire bir eşlenmiş iş servisleri koyarken, daha alt seviyelere doğru ortak işlevsellikleri sunan servisleri, üst seviye servislerin oluşumu için teknik destek veren uygulama servislerini ve altyapı görevleri için altyapı servislerini konumlandırabiliriz.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig3_xzwubihS-1YqaJmfqvhkUvrY2fFCxbXHmZ_lKpkTvJVV5Po8H2IOhS30yLWXCZB954QTCP0AJgEPdRYd8kyUn8JMbTFI7_HaYmbheGgEAnSfVlWL-XRcIp34Ueeyj1VxXBHvyA6WtL/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;297&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig3_xzwubihS-1YqaJmfqvhkUvrY2fFCxbXHmZ_lKpkTvJVV5Po8H2IOhS30yLWXCZB954QTCP0AJgEPdRYd8kyUn8JMbTFI7_HaYmbheGgEAnSfVlWL-XRcIp34Ueeyj1VxXBHvyA6WtL/s320/6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 106.2pt; text-indent: 35.4pt;&quot;&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Servisler üst seviyeye doğru gidildikçe, alt seviye servislerinin bir kompozisyonu ile oluşurken, alt seviyelerde daha fazla atomik yani başka servise ihtiyaç duymadan çalışan bağımsız servisler göze çarpar. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;İş servisleri, bir şirketin yeteneklerinin (iç ve dış) dijital dünyaya birebir yansıması olarak algılanabileceğinden, SOA dünyasındaki en önemli servisleri oluştururlar. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;İşin aslı daha alt seviyedeki servisler hazırlanmadan iş servislerinin oluşturulabilmesi de zordur. Ancak iş departmanları ve IT’nin bir masa etrafında konuşacağı, servis seviyelerinin iş indikatörleri ile eşleşeceği servisler ağırlıklı olarak iş servisleri olacaktır.&lt;/div&gt;&lt;h1&gt;SOA Sadece Servisler Dünyasından mı&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;İbaret?&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Kurumsal SOA projelerinden bahsedilirken, SOA kavramlarının içerisine çoğunlukla başka mimari stiller, eğilimler ve teknolojilerin de dahil edildiğine şahit olabilirsiniz. Bunun sebebi &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;SOA’nin yeni nesil yaklaşımlar için bir temel teşkil etmesi, çoğu için katalizör olmasıdır. SOA şirket içerisindeki dağıtık yeteneklerin iyi tanımlanmış arabirimler olarak, standard yöntemler ile kullanıma sunulmasıdır. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Kuruma adapte edilecek her yeni yaklaşım bu yeteneklerden en efektif şekilde faydalanma yoluna gidecektir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Kurumsal çapta veya daha küçük çaptaki projelerde uygulanan katıksız tek bir yaklaşımdan bahsedilemez. Çoğunlukla çeşitli teknolojiler ve mimari stillerin uyumlu bir bileşimi bir arada uygulanır.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;SOA genellikle uygulanan yaklaşımların en öne çıkanı olmasından dolayı, bir şemsiye görevi gören ve anıldığında adı&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;bir kaç yaklaşımı daha bir arada düşündüren bir kavram. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Bu yaklaşımların en önemlilerinden biri olan ve genellikle SOA ile birlikte anılan &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;süreç yönelimli mimari &lt;/b&gt;(BPM: &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Business Process Management) bir sistemi süreçler, alt süreçler ve aktiviteler olarak görür. Servisleri bir sistemde bulunan yeteneklerin tanımlanması ve kullanımı için etkin bir yöntem olarak tanımlarsak, süreçler sistem içindeki bu servislerin ve iş gücünün orkestrasyonudur diyebiliriz. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Bir süreci oluşturan aktiviteler, sistem içerisinde bulunan servis operasyonları tarafından yerine getirilir. Bir sistemin içerisinde bulunan tüm yeteneklerin kataloglanmış servisler halinde bulunması, süreçlerin oluşturulmasını ve hayata geçirilmesini son derece kolaylaştırır. Bir kurumda süreçlerin hazır halde olması halinde ise (en azından kavramsal düzeyde), sistemde gereksinim duyulan servislerin &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;daha rahat &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;tespit edilebilmesini sağlar. Bu nedenle bu iki yaklaşımın hemen hemen her zaman bir arada kullanımı son derece doğal ve gereklidir. Çok beğendiğim bir analoji bu iki yaklaşımı fıstık ezmesi ve reçele örneği ile ele almaktaydı. Ayrı ayrı da tüketebilirsiniz ancak bir arada mükemmel olurlar.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Yazılımlar açısından bakıldığında süreç yönelimli mimari iş akışı mantığının gömülü kod parçalarından ve insanların zihinlerinden (ya da masalarına asılı post-it’lerden) sıyrılarak tanımlı ve kontrollü bir şekilde işletilmesidir. Yazılımların sadeleşmesini sağladığı gibi, yazılımları kullanan insan gücünün de etkin kontrolünü, takibini ve bilgilendirmesini sağlar.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Bir sistemdeki iş süreçleri, genellikle uzun süreli olup, süreç içindeki aktiviteleri ve insan teknoloji etkileşimlerini kontrol eder. Bir satış sürecini ele alacak olursak sipariş alma, ödeme alma, tedarik etme, muhasebeleştirme, lojistik gibi alt adımlar bazen aylara yayılmış bir zaman diliminde tamamlanabilir. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixE9eamuk7D6CL9AdRGdU1yMKc4GjM65Zw0dGK5MzTVSqQHR07pHYEec_QGZ1RderdTRWnN25iUZ9tQoXUci8vnyYEaTMaPs44ANMqXd3K7-W4fNYK6foBLU8j7_EIVRsfazd2k8XSCepV/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;147&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixE9eamuk7D6CL9AdRGdU1yMKc4GjM65Zw0dGK5MzTVSqQHR07pHYEec_QGZ1RderdTRWnN25iUZ9tQoXUci8vnyYEaTMaPs44ANMqXd3K7-W4fNYK6foBLU8j7_EIVRsfazd2k8XSCepV/s320/7.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SOA ile giderek daha fazla birlikte anılmaya başlanan Olay Yönelimli Mimari’nin (EDA: Event Driven Architecture),&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;eskiden beri pek çok uygulamada &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;kullanılan bir stil olduğu &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;halde, kurumsal mimari düzeyinde etkisinin artması daha yakın zamanlarda olmuştur.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;EDA ve SOA’nin bir arada bulunduğu stil kimi yazarlar tarafından SOA 2.0 olarak adlandırılmaya başlanmıştır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;Ancak başta da söylediğimiz gibi mimari stiller çoğu zaman bir arada uygulanabilirler ve bu açıdan bakıldığında kafa karıştırıcı numaralandırmalar yerine bir mimaride uygulanan yaklaşımları tek tek belirtmenin çok daha açıklayıcı olacağı söylenebilir. Bu tarz isimlendirmelerin teknik gerekçelerden çok pazarlama amaçlı türetildiğini düşünüyorum.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;EDA, sistem içindeki bileşenlerin , aldığı olay yada olaylar bildirilerine tepkisel olarak aksiyonlar işletebildiği bir mimari stildir. Sistem içerisinde oluşan olaylar, olay kaynakları tarafından yayınlanır ve olay gözlemcilerine ulaştırılır. Dinleyici konumundaki olay gözlemcileri oluşan olaylar kendilerine ulaştığı anda bir aksiyon alırlar.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Alınacak aksiyonun ne olacağı ve işletilecek mantık olay gözlemcisinin otoritesi altındadır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SOA bir sistemdeki yeteneklerin resmedilmesi ve kullanımının mükemmel bir yolu olarak görülebileceğinden, sistemde oluşacak olaylar sonucu alınacak aksiyonların hazırlanmasını son derece kolaylaştıracaktır. Bir mimaride EDA’nın da kullanımı sistemin daha proaktif, tepkisel ve çevik olmasını sağlayacaktır. Buzdolabınızda peynirinizin bittiğini farkedip, üzerinizi giyip marketten peynir almanız tembellik yapmak istediğiniz bir Pazar sabahında sizi sıkabilir. Buzdolabınızın peynirin bittiğini kendi kendine fark etmesi, en yakın marketten istediğiniz markayı sipariş vermesi &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;güzel olmaz mıydı?&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;SOA şemsiyesi altında anılan yeni nesil yaklaşımlar ve teknolojilerin incelenmesi uzun bir konu. En önemli iki yaklaşım olan BPM ve EDA’ı kısaca ele aldıktan sonra, diğer yaklaşımlardan bazılarına da kısaca değinmek gerekir ise: &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l1 level1 lfo3; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;·&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;BRM (İş Kuralları Yönetimi -&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Business Rule Management):&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Sistem içerisindeki sık değişen iş kurallarının (örneğin vergi oranları, kar oranı, hesaplama sabitleri vb) servis gerçekleştirimlerinin içerisinde gömülü olarak tutulması yerine, ayrı bir noktada tanımlanması, kural erişimlerinin ortak bir servis üzerinden sağlandığı, kural değişikliklerinin anında tüm sisteme değişiklik gereksimi olmadan yansıtılabildiği bir yaklaşım olarak nitelendirilebilir. Bir sistemde BRM kullanımı tüm servislerin stabilitesini arttıracaktır.&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l1 level1 lfo3; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;·&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;PDA (Politika Yönelimli Mimari – Policy Driven Architeture) &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-indent: 34.8pt;&quot;&gt;Sistem çalışma politikalarının yine gömülü kodlardan sıyrılarak dış bir ortamda tanımlanmasıdır. Sistem bileşenleri ve servislerin gerekli zamanlarda servisler üzerinden bu politikaları okuyarak davranışlarını düzenlemeleri hedeflenir. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l1 level1 lfo3; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;·&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;ESB (Kurumsal Servis Otobüsü)&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;İstemciler ile sunucular arasında bire bir bağlanım &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;yapmak yerine, ek bir ara katman üzerinden konuşulmasını sağlayarak servis alınan noktaların istemcilerden tamamen gizlenmesi yaklaşımıdır. Bu yaklaşım, yapılan toplam bağlanım sayısını indirgeyeceği gibi karmaşık entegrasyon sorunlarını da istemcilerden gizleyecektir. İstemciler standart yöntemler ile ESB ile konuşurken, ESB geri planda farklı protokol ve servis sağlayıcılar ile haberleşebilir. Aslında “&lt;a href=&quot;http://www.blogger.com/post-create.g?blogID=6682793027261417326#_Servis_Nedir?&quot;&gt;Servis Nedir?”&lt;/a&gt; bölümünde anlatılan iş birimleri ile tedarikçi ilişkilerinin bir satın alma departmanı standartlaştırılması bu yaklaşımın iş yaşamına uyarlanmasının güzel bir örneğidir. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l1 level1 lfo3; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;·&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Aspect Oriented Arhitecture (Cephe Yönelimli Mimari) &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;text-indent: 34.8pt;&quot;&gt;Çok&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;sayıda bileşen ya da servisi ilgilendiren ortak çalışma mantıklarının bu bileşen yada servisler içerisinde tek tek ele alınması yerine, tek bir noktada oluşturulması ve tüm ilgili noktalarda çalıştırılmak üzere&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;otomatik enjeksiyonudur. Bu, filtreleme yöntemleri ile uygulanabildiği gibi, otomatik kod oluşturma teknikleriyle de yerine getirilebilmektedir. Servis erişimlerinde tek tek erişimi yapan istemciler hakkında güvenlik kontrolü yapmak yerine, ortak bir katman üzerinde (örneğin ESB) bu kontrollerin tamamlanarak servislerin yüklerinin hafifletilmesi ve sadece güvenli isteklerin servislere erişiminin sağlanması bu yaklaşıma iyi bir örnektir. &lt;/div&gt;&lt;h1&gt;Stratejik Bir Yaklaşım Olarak SOA&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Servis odaklı dönüşüm stratejinizi nasıl oluşturacağınıza geçmeden önce hayal gücünüzü biraz daha canlandırmak için servis odaklılık dönüşümünü tamamlamış bir şirketin yaşamını kısaca tasvir etmek istiyorum. Varsayımsal şirketimizin adı “Çevik Servisler A.Ş.” olsun ve kısaca ÇS diye analım. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;ÇS şirketi, şirketin bütününü oluşturan tüm iş bileşenlerini (yeteneklerini) tanımlamış ve kategorize etmiş olduğundan, ÇS şirketi üst yönetimi stratejik kararlar alırken, şirket iş modeli haritasından faydalanarak hangi iş bileşenlerine ve iş süreçlerine etki edeceklerini rahatlıkla görebilmektedir. ÇS şirketinde bir iş bileşeni altında yatan süreçler, iş servisleri bunları destekleyen yazılımlar ve altyapılar bilindiğinden yeni stratejilerin getireceği değişiklikler bütün birimler tarafından hızlı bir biçimde algılanmakta ve gerekli değişiklikler çok hızlı projelendirilip yerine getirilebilmektedir. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;ÇS şirketi yöneticileri, iş servisleri ve iş süreçleri hakkında sürekli gözlem yapma ve performans indikatörlerini sürekli takip edebilme imkanına sahiptir. Örneğin geçen ay başında yapılan sipariş &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;alma sürecindeki iyileştirmenin, iş gücü üzerinde %10’luk bir tasarruf sağladığını görmek, şirket CEO’sunu oldukça neşelendirmiştir. İş süreçleri ve iş servislerinden toplanan bilgilerin, dengeli kurum karnesinde sürekli görünür hale gelmesi, personel performans takibini de son derece kolaylaştırdığından İnsan Kaynakları Müdürü&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;de çok memnundur ve katıldığı tüm platformlarda geldikleri noktayı göğsünü gere gere anlatmaktadır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;ÇS şirketinin müşterilerine ve iş ortaklarına sunduğu iş yetenekleri yazılım servisleri halinde kataloglandığından pek çok kurumsal müşterisi ve iş ortakları ÇS servislerini kendi sistemlerine entegre etmiş durumdadır. En büyük kurumsal müşterilerinin siparişlerini kendi sistemleri üzerinden açmaya başladığından beri satış departmanının yükü bir hayli hafiflemiştir. Bu müşteri hesabının yöneticisi sürekli yaşadığı telefon trafiği bittiği için çok mutludur, artık müşterisine sadece haftada bir kahve ziyareti için uğramaktadır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;ÇS iş servislerini self servis kanallarından müşterilerine aracısız sunmaktadır. Yeni hazırlanan cep telefonu yazılımlarını, sadece cep telefonu ara yüzlerinin tamamlanarak mevcut servisleriyle &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;bir ay gibi kısa bir sürede hayata geçmesi şirket CIO’sunu çok gururlandırmıştır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;CIO, tüm servislerin ESB üzeriden erişimine karar vererek&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;ne kadar isabetli bir iş yapmış oldukları&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;yeni muhasebe programının&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;entegrasyonu sırasında bir kez daha görmüştür. Yeni muhasebe yazılımının servislerini, hızlıca kendi muhasebe servislerine adapte etmişler ve diğer yazılımların da hiçbir şeye dokunmamışlardır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Stokların azalmasını takiben otomatik satın alma siparişlerinin açılır hale gelmesinden beri satın alma departmanı da, iş yükünü hafifletmiş, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Satın Alma Müdürü iki senedir ertelediği tatiline nihayet çıkabilmiştir. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Şirket CEO’su, geçen hafta akşam yemeğinde bir araya geldiği, aynı zamanda şirketin de VIP müşterileri arasında yer alan bir arkadaşının, şirketin Antalya şubesine girdiğinde kendisini karşılayan Özel Müşteri Temsilcisinin kendisi hakkında sahip olduğu bilgiler ve gösterdiği ihtimam karşısında nasıl şaşırdığını son yönetim kurulu toplantısında gururla anlatmıştır. CEO&#39;nun arkadaşı elbette yeni hayata geçirdikleri sistemde, VIP müşterilerinin şubeye girişlerinde özel müşteri temsilcilerinin otomatik olarak uyarıldığı ve bilgilendirildiğini bilmiyordur. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Bu örnek daha da uzatılabilir. Ancak&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;bu noktadan sonra &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;ÇS şirketini sizlerin hayal gücüne bırakırken, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;tüm bunların bir şirket yaşamında kazara oluşabilecek bir durumlar olmadığını vurgulamam gerekiyor. &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;Hatta, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;servis odaklı olmaya karar vermiş ve tüm yazımlarını modüler servisler olarak hazırlamaya karar vermiş bir şirketin bile, doğru strateji ile hareket etmemesi durumunda arzu edilen duruma ulaşamayabileceğinin altını çizmeliyiz. Böyle bir değişimi gerçekleştirmek, yüksek bütçeli IT yatırımları ve &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;“just do it” felsefesinden ziyade, doğru bir strateji çizmek &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;ve bu stratejiyi sabırla uygulamaya bağlıdır. Böyle bir stratejiyi oluşturmak için ise kabaca şu adımları önerilebilir:&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l2 level1 lfo2; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;1.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Hedefin, gidilmek istenen noktanın belirlenmesi&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Stratejik bir SOA programı oluşturmada ilk odaklanılacak yer teknoloji değil, iş modelidir. Şirket için idealize edilmiş bir iş modeli oluşturmak ilk adım olacaktır. Bunun için hali hazırda bulunabilecek endüstri modellerinden ve&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;uzman danışmanlardan faydalanılarak özelleştirilmiş modeller oluşturmak gerekecektir. İş modeli&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;şirketi oluşturan yeteneklerin iş bileşenleri şeklinde dekompozisyonu, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;süreçler ve bunlar arasındaki ilişkiyi gösterir şekilde olmalıdır. Şirket için hazırlanacak bu idealize iş modeli yazılım, bilgi ve altyapı mimarilerine de yol gösterici olacaktır.&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Bu idealize modeller için değer zinciri (value chain) analizleri şirketlerin en önemli süreçlerini, süreçleri oluşturan aktivitelerini (ve dolayısıyla iş servislerini) ortaya koymakta faydalı olacaktır. Ancak şirketlere daha bütünsel bakılmasına yardımcı olan ve tüm iş bileşenlerini (dışarıdan hizmet almak istencekler de dahil) ortaya koyacak,&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;değer ağı (value net) gibi daha yenilikçi &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;yöntemler SOA ve servislerin daha rahat tesbiti açısından daha faydalıdır. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Örneğin IBM tarafından geliştirilmiş bir değer ağı&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;yöntemi olan “Component Business Model” yaklaşımı, şirketi oluşturan iş bileşenlerini belirlemek ve kategorize etmekte yol gösterici olabilir. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCi-C0wibCVezB-__lr4clyQgRH0Ds1dgMzMURSmNRIgzhMXz8kgOv_Zk1xqyRtgMArrXHj8Rt3i-oAx_R5jBQbEmyiXwNQ8x-lwsOII3o82KiJBt0lvneHNzDEfrlx5C1zZnKfMyQuxwe/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCi-C0wibCVezB-__lr4clyQgRH0Ds1dgMzMURSmNRIgzhMXz8kgOv_Zk1xqyRtgMArrXHj8Rt3i-oAx_R5jBQbEmyiXwNQ8x-lwsOII3o82KiJBt0lvneHNzDEfrlx5C1zZnKfMyQuxwe/s400/8.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Şirket iş birimleri içerisindeki tüm yetenekler iş bileşenlerine ayrıştırılıp, bu yeteneklerin yerine getirilmesi için&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;servis, insan kaynağı, iş süreçleri, bilgi modeli, olay- sonuç ilişkileri, teknoloji ve sağlıklı izleme ve geri bildirimler için indikatörler belirlenmelidir. Tabii bu iş bileşenleri için birer yönetişim modelinin oluşturulması da bu aşamada daha sağlıklı bir şirket için zemin oluşturur.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7K-4TR5TC0EhV-21q3TpsPAeUPclJpvq3WzhtWwyEJrBmR4nd9WpQ3sY0HKU6ll9dVqPlwHo3TTzxGso8uImpy6Nr1ZTR3zkg_wjONrtuXQ5Q6RsuQKzG26IJib93KgJBkVCHUPLYxe9B/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;219&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7K-4TR5TC0EhV-21q3TpsPAeUPclJpvq3WzhtWwyEJrBmR4nd9WpQ3sY0HKU6ll9dVqPlwHo3TTzxGso8uImpy6Nr1ZTR3zkg_wjONrtuXQ5Q6RsuQKzG26IJib93KgJBkVCHUPLYxe9B/s320/9.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: center; text-indent: 34.8pt;&quot;&gt;&lt;span style=&quot;mso-fareast-language: TR; mso-no-proof: yes;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Tüm iş bileşenlerinde bahsettiğimiz detayda inilmesi elbette uzun bir zaman alabilir. Mükemmel form bir kerede yakalanamayabilinir. Dolayısıyla, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;ilk adım öncelikle şirket yeteneklerinin ayrıştırılması olup, iş bileşenlerinin ve iş bileşenleri arasındaki ilişkilerin belirlenmesidir. Bu temiz bir bakış açısı kazanmak ve yürünmesi &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;gereken yol için fikir sahibi olmak adına yeterli olacaktır.Detaylandırma çalışmaları diğer çalışmalar ile paralel bir şekilde , zamana yayılmış olarak yürütülebilir. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;SOA’de amaçlarımızdan birisi İş ve Teknoloji uyumluluğunu yakalamak olduğundan iş servislerinin, iş bileşenlerininin bir parçası olarak belirlenmesi bu yolda çok önemli bir adım olacaktır. &lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: center; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l2 level1 lfo2; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;2.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Mevcut Durumun, Bulunulan Noktanın&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Tesbiti&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 35.4pt; text-align: justify; text-indent: 35.4pt;&quot;&gt;Mevcut iş, yazılım, bilgi ve altyapı mimarilerinizin anlaşılması ileriye doğru atacağınız adımların planlanması için gereklidir. Bir çok şirket mükemmel organizasyona ulaşmak için yıllardır kalite çalışmalarını aralıksız sürdürmekte olduğundan, şirketlerde kolaylıkla dokümante edilmiş iş süreçleri, iş tanımları, görev tanımları ve organizasyon yapısına erişmek mümkündür.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;Benzer dokümantasyona veri modelleri, yazılımlar ve altyapı içinde rahatlıkla erişilebilir.&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;margin-left: 70.8pt; mso-add-space: auto; text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l2 level1 lfo2; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;3.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Yol Haritasının Çizilmesi&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Hedef iş modellerinde, iş bileşenleri arasındaki bağımlılıklar ortaya konmuş olacaktır. IT bu noktada sıkı bir çalışmayla iş servislerindeki ortak noktaların tespitini yaparak ve kurumsal politikaları da göz önüne alarak gereken ortak servisleri tespit etmeli, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;iş servislerinin oluşturulabilmesi için daha alt seviyedeki teknik servisler belirlemelidir. Alt seviyeli &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;servisler fazlaca abartmadan ilk geliştirilmesi düşünülen iş servislerini destekleyecek şekilde öncelikli olarak ele alınmalıdır. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;İş servisleri arasındaki bağımlılıklar bilineceğinden ve gerekli alt seviye servisler de ortaya konacağından alternatif gerçekleştirim yolları da yaklaşık olarak belirlenmiş olacaktır. Bağımlılıkların ortaya konması doğru yol haritalarının oluşturulabilmesi için şarttır.&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l2 level1 lfo2; text-align: justify; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;&quot;&gt;&lt;span style=&quot;mso-list: Ignore;&quot;&gt;4.&lt;span style=&quot;font: 7.0pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Planlama &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Gereksinimler ve bağımlılıklar ile ortaya konan alternatif yollardan en akıllıca olanlarının bir plana oturtulması SOA programını hazır hale getirecektir. Politik ortam gereği aksi gerekmedikçe, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;en bağımlı olunan servisler en öncelikli gerçekleştirilmelidir. Örneğin müşteri servisi ele alınmadan bir CRM uygulaması geliştirmeye çalışmak, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;muhtemelen CRM projesinde çalışanları son derece zorlayacak, CRM projesinin tekrar tekrar ele alınmasını gerektirecektir. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Yazılımların servisler haline dönüşmesi &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;bir kerede olacak bir iş değildir; küçük ve dikkatli adımlar ile ilerlemek gerekmektedir. Bu dönüşüm esnasında, yeni servisler idealize edilmiş hedef duruma mümkün mertebe yakın hazırlanmalıdır.&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Başlangıçta küçük ama etkili gerçekleştirimler seçerek, sistemlerinizi servisleriniz için seçeceğiniz protokoller ile uyumlulaştırarak başlamak hazırlanacak servislerden maksimum fayda görülmesini sağlıyacaktır. Mevcut sistemlerinizin ideal servislere adaptasyonu, muhtemelen sıfırdan yazılacak servislere göre&lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp; &lt;/span&gt;servis sayısını daha hızlı bir şekilde arttıracak ve SOA’den edinilecek faydaların da daha hızlı görünür olmasını sağlayacaktır. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Mevcut sistemlerin SOA dönüşümlerinde en sık yapılan hatalardan biri, mevcut sistemlerin ideal servislere adapte edilmeden, birebir servislere dönüştürülmesidir. İdeal durumuna ulaşmaya çalışan bir sistem üzerinde, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;servisler arabirimleri ile birlikte değişeceğinden, &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;SOA’den bir fayda beklenemez. Aksine böyle bir yaklaşımla, SOA geleneksel yazılım geliştirme yöntemlerinden çok daha külfetli bir hale gelecektir. SOA analiz ve tasarım çalışmalarınızda biraz daha özenli olmanızı bekler, bu sebeple projelerde bu safhalara ayıracağınız zamanı daha dikkatli planlamalıdır. &lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;text-align: justify; text-indent: 34.8pt;&quot;&gt;Yukarıda saydığımız faktörler SOA’nin değerini hızlı bir şekilde göstermesi için zorluklar yaratsa da tüm şirketteki tarafların farkındalıkları sürekli bilgilendirme ile arttırılarak SOA programları için gerekli destek sağlanabilir. SOA yolculuğu yokuş çıkan bir kamyona benzetilebilir. Zor zamanlardan sonra yolculuk çok hızlı gitmeye başlıyacaktır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h1&gt;Sonuç&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Yeni nesil kurumsal mimarilerin başını çeken SOA ve beraberinde BPM, EDA gibi mimari stillerin çok daha yoğun bir şekilde uygulandığını görmeye başlayacağız. Bu yeni yaklaşımlar şirket içerisinde IT’nin yerini &lt;span style=&quot;mso-spacerun: yes;&quot;&gt;&amp;nbsp;&lt;/span&gt;oldukça etkilemekle birlikte, IT’nin iş geliştirme yöntemleri üzerinde de oldukça dramatik etkilere yol açacaktır ve açmaya başlamıştır. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify; text-indent: 35.4pt;&quot;&gt;Özellikle ülkemizde, servis odaklılık, popülerlik toz bulutu altında çok da fazla anlaşılamamış olsa da, giderek artan bir şekilde ve evrimleşerek hayatlarımızı etkilemeye, köklü değişimler yaratmaya devam edecektir. Servis odaklı dönüşümlerini tamamlayan şirketler, gelenekçi şirketlere göre çok daha hızlı hareket etme kabiliyetine kavuşacaklarından, gelecekteki market liderlerinin servis odaklı şirketler olacağını öngörmek yanlış olmayacaktır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;mso-tab-count: 1;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Başarılı bir dönüşüm yolculuğu dileklerimle. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/7492311912966832129/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/05/sirketiniz-icin-soa.html#comment-form' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/7492311912966832129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/7492311912966832129'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/05/sirketiniz-icin-soa.html' title='Şirketiniz İçin SOA'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtDls5c7fq2b6PKsP7lGXicJAGy1T2fipZKnCgkquR2UHfN2FICek-7jixMf15P22aMcPbP6zDyHOD3pD1nTiZM3OXbbnkThMF7yaxmY94jc74UmgjRnX7zLeYgoNOWWVnzz4njep5I3nv/s72-c/1.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-5058801411948254447</id><published>2011-04-22T15:40:00.002+03:00</published><updated>2011-04-22T13:18:26.983+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><title type='text'>Nesne Yönelimli Yazılımda Dizayn Prensipleri</title><content type='html'>&lt;h1&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667156&quot;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Uzunca bir süre önce yazdığım bir yazıyı güncelliğini koruduğunu düşündüğüm için aynen yayınlıyorum. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Esen Kalın .&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;Sistem içerisinde&amp;nbsp; detaylara girildikçe olaylar gittikçe karmaşık bir hal almaya başlar ve kolaylıkla kontrolü kaybedilebilir. Walker Royce’un ”The Rational Edge”&#39;de yayınlanan bir&amp;nbsp; makalesinde yer alan şu istatistikler ilginçtir :&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Yazılım projelerinde geliştirme için harcanan      her bir dolarlık maliyete karşılık bakıma iki dolar harcanmaktadır&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Geliştirme eforunun sadece %15’i doğrudan      programlamaya harcanmaktadır&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu istatistikler bize bakıma , geliştirmenin iki katı süre harcadığımızı söylemektedir.Açıkça bakım maliyetlerini düşürmek için bir çözüme ihtiyaç vardır.Nesne yönelimli programlama bu maliyeti azaltsa da ne yazıkki sıfırlayamamaktadır.Şu örnek olayı daha iyi kavramamızı sağlıyacaktır :&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;i style=&quot;mso-bidi-font-style: normal;&quot;&gt;A ve B sınıfları tarafından yeniden kullanılan bir R sınıfı düşünelim.Eğer A sınıfı ; R sınıfının davranışlarında bir yenilik&amp;nbsp; yada değişiklik ihtiyacı duyarsa bu aynı zamanda B sınıfını da etkileyecektir.Bu durumdayken eğer B bu yeni davranışa ihtiyaç duymazsa ne olur ? Ya da değişiklik B için olumsuz bir durum yaratıyorsa ? Bu durum yeniden kullanımın olduğu ancak bakımın sorun olduğu bir örnek teşkil eder.&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nesne yönelimli programlamanın en önemli avantajı sağladığı yeniden kullanım olanaklarıdır.Ancak sırf bu amaç uğruna körü körüne başlanılan projeler bir süre sonra rahatlıkla kördüğüm halini alabilir.Yukarıda bahsedilen problemin çözümü için pek çok yol öne sürülebilir , ancak kuşkusuz en doğru yaklaşım bunun bir dizayn sorunu olduğunu kabul etmektir.Doğru prensipler doğrultusunda geliştirilen dizaynlar bu tip problemleri en aza indirirler.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667157&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911466&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569662&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569603&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569439&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976562&quot;&gt;&lt;/a&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Sınıf Dizayn Prensipleri&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Dizayn prensiplerinin İlk bölümünde sınıf dizaynı ile ilgili prensipler ele alınmıştır.Ancak bu prensipler modul gibi diğer bileşenlere de uygulanabilir prensipler olarak algılanmalıdır. &lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667158&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911467&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569663&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569604&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569440&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976563&quot;&gt;&lt;/a&gt;&lt;b&gt;&lt;span style=&quot;font-size: large; font-weight: normal;&quot;&gt;Açık Kapalıdır Prensibi (The Open Closed Principle - OCP) &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Bu prensip kısaca “bir modul genişlemeye açık ancak değişikliğe kapalı olmalıdır” şeklinde özetlenebilir.Belki de tüm prensiplerin en önemlisi olan bu prensip “Bertrand Meyer”’in çalışmalarına dayanmaktadır.Prensip kısaca kodlarımızı değişikliğe gerek kalmadan genişletebilmemiz gerektiğini söyler.Bir başka deyişle modulümüzün yeteneklerini var olan kodları değiştirmeden geliştirebilmeliyiz.Bu ilk başta biraz karışık görünse de bu prensibi yerine getirebilmek için çeşitli tekniklere sahibiz.Bu tekniklerin tümü de aslında nesne yönelimli programlamanın temel prensiplerinden soyutlama’ya (abstraction) dayanmaktadır.Örneğin elimizde bulunan modem sınıfımız “Hayes” ve “Ernie” tipi modemler için kodlanmış olsun ve methodlarına dışarıdan belirtilen modem tipine göre davransın.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxBbjEzQPmKDCXyZDFkzf_VyDsfezN0_lkg3bZSFbzpzh7rcf_ICh_Jd3x5E8Sux3ph3tjUHLHkPzsRnpX26Q3r8FGOy1iqx9yj3zxVUxf9Jx-KVzdhHltJKR8eChOefPfPQNLVPmLvEvl/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxBbjEzQPmKDCXyZDFkzf_VyDsfezN0_lkg3bZSFbzpzh7rcf_ICh_Jd3x5E8Sux3ph3tjUHLHkPzsRnpX26Q3r8FGOy1iqx9yj3zxVUxf9Jx-KVzdhHltJKR8eChOefPfPQNLVPmLvEvl/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Bu dizaynda sisteme eklenecek her yeni modem tipi var olan sınıfın değişikliğini gerektirecektir.Ancak modem sınıfını soyut hale getirerek bu sorunu kolaylıkla aşabiliriz.Bu durumda&amp;nbsp; sisteme eklenecek her yeni modem tipi , modem soyut sınıfını gerçekleştirecek ve sadece kendi kodunu içerecektir.Ancak bu durum mevcut sınıfların hiçbirine dokunulmadan yerine getirilebilecektir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Yej9IMmjaYH8r5eIclPyf-Lf5xjbro1qrVqvpvpkm1kG6ZPeZ5Ra_Rz8afWEEhMPdNbZeLXOwgQTy02yE3mionHe5vYeD_7xyZt3k2JClmQrdWh5uBAKlpkQbt2aSHpGJiXcNGBw7mxz/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;264&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Yej9IMmjaYH8r5eIclPyf-Lf5xjbro1qrVqvpvpkm1kG6ZPeZ5Ra_Rz8afWEEhMPdNbZeLXOwgQTy02yE3mionHe5vYeD_7xyZt3k2JClmQrdWh5uBAKlpkQbt2aSHpGJiXcNGBw7mxz/s320/2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;OCP prensibi mimari olarak bize değiştirmeden geliştirebileceğimiz moduller kurma olanağı sağlar.Bu erişilmesi oldukça güç bir hedeftir. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667159&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911468&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569664&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569605&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569441&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976564&quot;&gt;&lt;/a&gt;Liskov’un Yerine Koyma Prensibi(The Liskov Substitution Principle - LSP )&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu prensip Barbar Liskov tarafından ortaya konmuştur.Kısaca alt sınıfların üst sınıflara uygun olması gerektiğini söyler.İlk bakışta nesne yönelimli yazılımın bunu doğası gereği sağladığı düşünülse de durum biraz daha karmaşıktır.Bu prensip aynı zamanda temel sınıfın gösterdiği davranışların alt sınıflar tarafından da aynen yerine getirilmesi gerektiğini söyler.Durum bir örnekle daha kolay anlaşılabilecektir.Örnek olarak elips ve daire şekillerini ele alalım.Daire aslında elipsin bir cinsidir , tek farkı dairede ; elipsin iki merkezinin tek noktada buluşmasıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjabNDaeBEMP-Yv2u0gHLJsUREXU8X1uQh1rt99G0mXhDOBOct8uGHmGLqpJ15oPB_MDh6DBi65-c7d0zn9ztJbnUvnyVFBGhBxH2RDMwQVP5fMqnDEUGQR30ig51WPWRKLMqDGa2GDdNkx/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjabNDaeBEMP-Yv2u0gHLJsUREXU8X1uQh1rt99G0mXhDOBOct8uGHmGLqpJ15oPB_MDh6DBi65-c7d0zn9ztJbnUvnyVFBGhBxH2RDMwQVP5fMqnDEUGQR30ig51WPWRKLMqDGa2GDdNkx/s200/3.png&quot; width=&quot;159&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Durum sınıfların özellikleri ve davranışları devreye girdiğinde biraz daha karışık bir hal alacaktır.Ekli şeklide görüldüğü üzere elipsin üç niteliği vardır.İlk ikisi merkezleri , üçüncü nitelik ise eksenin boyunu&amp;nbsp; gösterir.Eğer daire elipsten türerse bu üç&amp;nbsp; niteliğe de sahip olmak zorundadır.Ancak daire sadece merkez noktası ve çapa ihtiyaç duyar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhN1wQD4Vo4K4ebqUrT9Zs1BSN3YB834UAfkKdhYjlsbB6Z91e8OtpSCFFULPaus0QWGsTDpdlh2WHx_1NqDbcleaArv6lnFAPYgfSn6HSHh31kti2jRub6eQZWF0l2naLdk3lqn0EJYwt/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhN1wQD4Vo4K4ebqUrT9Zs1BSN3YB834UAfkKdhYjlsbB6Z91e8OtpSCFFULPaus0QWGsTDpdlh2WHx_1NqDbcleaArv6lnFAPYgfSn6HSHh31kti2jRub6eQZWF0l2naLdk3lqn0EJYwt/s1600/4.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Elips’in merkezleri belirleyen setFoci metodu muhtemelen şu şekilde olacaktır :&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Public void setFoci(Point a , Point b) {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;focusA = a;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;focusB = b;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Daire ise tek merkeze sahip olağından bu methodu şu şekilde değiştirebilir :&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Public void setFoci(Point a , Point b) {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;focusA = a;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;focusB = a;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu durumda daire fazladan gereksiz bir niteliğe sahip olsa da her iki sınıfta görevlerini tam olarak yerine getirebilecektir.Sistem sorunsuz gibi görülebilir.Ancak bu durum sadece elips ve daireden oluşan bir sistem söz konusu olsa geçerli olurdu.Ne yazıkki bu sınıflar başka sınıflar ile bir arada çalışmak zorundadırlar ve sundukları her davranış ya da nitelik dış dünya ile bir kontrat niteliği taşır.Ve bu kontrat hiç bir şekilde bozulmamalıdır.Örneğin dışarıda şu şekilde bir method bulunduğunu var sayalım.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;void f(Ellipse e){&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Point a = new Point(1,0);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Point b = new Point(-1,0);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setFoci(a,b);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; e.setMajorAxis(3);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; assert (e.getFocusA() == a);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; assert (e.getFocusB() == b);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; assert (e.getMajorAxis() == 3);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Bu durumda method elipse ile çalıştığını varsayıyordur ve elips sınıfı kullanıldığı sürece bir hata üretmez.Ancak bu methoda elips yerine daire gönderildiğinde hataya yol açacaktır.Elips sınıfı setFoci() metoduyla açıkca bir kontrat imzalamıştır ve bu kontrat gönderilen belirtilen noktaların sınıfın iki noktası olarak belirleneceğini söyler.Ancak daire sınıfı bu kontratı açıkca ihlal etmektedir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Neyazıkki LSP ihlalleri sistem içerisinde oldukça geç farkedilir .Örneğin elips / daire örneğinde olduğu gibi ilgili&amp;nbsp; method daire ile deneninceye kadar bu durum ortaya çıkmaz.Durumun telaffisi eğer orjinal sınıfların değişikliği de zor bir durumda iken farkedilirse oldukça istenmeyen şekillerde çözülür.Sıklıkla rastlanılan bir şekilde if/else – switch/case gibi ifadelerle durum çözülmeye çalışılır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;void f(Ellipse e){&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; if(typeID(e) == typeID(Ellipse) ){&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point a = new Point(1,0);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point b = new Point(-1,0);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setFoci(a,b);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.setMajorAxis(3);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert (e.getFocusA() == a);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert (e.getFocusB() == b);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert (e.getMajorAxis() == 3);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; }else{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point a = new Point(1,0);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point b = new Point(-1,0);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setFoci(a,b);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.setMajorAxis(3);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert (e.getFocusA() == a);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert (e.getMajorAxis() == 3);&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Ancak bu gibi çözümler de OCP genellikle prensibini&amp;nbsp; ihlal ederler.Yukarıdaki durumda yeni bir elips sınıfı türetildiğinde f fonksiyonunun da doğruluğu kontrol edilmeli yada değişikliğe uğratılmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Bu gibi ihlallerin ortaya çıkmaması için özellikle temel sınıfların &lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l4 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Kontratları iyice kontrol edilip alt      sınıfların uyamıyacağı kontratları içermemesi sağlanmalı &lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;fullpost&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l4 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Alt sınıfların üst sınıf kontratlarına      harfiyen uyması sağlanmalı &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l4 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Sistemde bir başka temel sınıfın varlığının      gerekliliği iyice sorgulamalıdır.&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667160&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911469&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569665&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569606&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569442&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976565&quot;&gt;&lt;/a&gt;Bağımlılığın Çevrimi Prensibi ( The Dependency Inversion Principle - DIP )&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Soyut eşleme (abstract coupling) olarak da adlandırılan bu prensip kısaca bileşenler arası eşlemelerin (ya da bağımlılıkların) somut sınıflar üzerinden değil soyut sınıflar üzerinden yapılması gerektiğini söyler.Eğer OCP prensibini nesne yönelimli mimarinin hedefi sayıcak olursak DIP prensibini bunu sağlıyacak&amp;nbsp; temel mekanizma olarak adlandırabiliriz. COM,CORBA,EJB gibi bileşen teknolojileri gücünü bu prensipten alırlar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Procedürel dizaynlar bir parça bağımlılık yapısı gösterirler.Üst seviye moduller uygulamanın üst seviye politikalarına bağımlıdırlar.Bu politikalar uygulamanın alt seviye modulleri , onların implemantasyonu ile ilgilenmezler.Ancak procedürel yapılar bunun tam tersi yukarıdan aşağıya doğru bir bağımlılık gösterir.(Örneğin C dilinde hazırlanmış bir grafik kütüphanesi , alt seviyelerde grafik objeleri içeren detay kütüphaneler , sistem kütüphaneleri vb. bir yapı düşünün).&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoKpowko-97ezGRQbq3VgGqG4J788fEnVLy1h1PmWgkAenrk2dXsrpGwcV7Q7W7Yea0G-bkOZ_2olzergMbIA-RbaR1514D-NEUr0zW4MwyiNtIFlDz6-fUBsX6IHc6M6Bi8RyMg8eQfVG/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoKpowko-97ezGRQbq3VgGqG4J788fEnVLy1h1PmWgkAenrk2dXsrpGwcV7Q7W7Yea0G-bkOZ_2olzergMbIA-RbaR1514D-NEUr0zW4MwyiNtIFlDz6-fUBsX6IHc6M6Bi8RyMg8eQfVG/s1600/5.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Nesne yönelimli mimariler ise bambaşka bir bağımlılık yapısı gösterirler.Üst seviye moduller soyut sınıflar ile politikaları içerirken alt seviyelere gittikçe bu politikaların gerçekleştirimleri elde edilir.Bağımlılık tam tersine dönmüş gibidir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNbxRbCKRnKQy9IOu0cv486dLL6oGUdMeLvn0YkMivINIPrhqsxYvuuK-JqaSVtFD2Bw43USoVRc5LYLVThBbg05clg6pUs3059iLgwOst2lrT6a6DNQkgd6I_LHVWTrNbY6V_c7nlX68L/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNbxRbCKRnKQy9IOu0cv486dLL6oGUdMeLvn0YkMivINIPrhqsxYvuuK-JqaSVtFD2Bw43USoVRc5LYLVThBbg05clg6pUs3059iLgwOst2lrT6a6DNQkgd6I_LHVWTrNbY6V_c7nlX68L/s1600/6.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; DIP bize genişleyebilir ve esnek bir mimari kurma olanağı sağlar.Geliştirmenin ilk safhalarında gereksiz hatta külfet gibi görünen bu prensip ilerleyen yaşam evrelerinde hayat kurtarıcı olabilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Örneğin C dilinde yer alan string.h kütüphanesi somut fakat esnek olamayan bir yapı sergiler.ANSI standarlarında oldukça iyi çalışan kütüphane projenin örneğin UNICODE standardına dönmek istemesiyle oldukça baş belası bir durum oluşur.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; DIP presinbinin uygulanmasında karşımıza çıkacak en büyük sorun nesne oluşturulmasıdır.Yaratılan soyut sınıflar üzerinden nesneler yaratılamaz.Bu durumun en güzel çözümü GOF paternleri arasında yer alan “Abstract Factory” paterninin uygulanması ile aşılabilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667161&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911470&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569667&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569608&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569444&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976566&quot;&gt;&lt;/a&gt;Arabirimin Ayrılması Prensibi ( The Interface Segregation Principle – ISP&amp;nbsp; )&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Bu prensip bize genel içerikli büyük arayüzler yerine , istemcilere yönelik pek çok arayüzün tercih edilmesini tavsiye eder.Bu prensibin özü oldukça basittir.Eğer farklı farklı istemciler için genel bir arayüz tasarlarsanız bu istemcilerin herhangi biri için gereken değişiklik pek çok yeri etkileyecektir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEindX43i6KZP4e9nEalswuUZqx5GcbevSBUkwN69BbZ7km-u7P5add0SyfooPChQaj8k_FIgpAHkG4gdtyTadx1B6eOz9UEM5B1Z2ooyldnAUx-UOvbRma4nzM3a_X8-Q8E_l6IYRoqzaqu/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;151&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEindX43i6KZP4e9nEalswuUZqx5GcbevSBUkwN69BbZ7km-u7P5add0SyfooPChQaj8k_FIgpAHkG4gdtyTadx1B6eOz9UEM5B1Z2ooyldnAUx-UOvbRma4nzM3a_X8-Q8E_l6IYRoqzaqu/s320/7.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yukarıdaki örnekte servis üç istemci için methodlar barındırmaktadır.Örneğin istemci A methodları üzerinde yapılacak bir değişiklik , hiçbir ilgileri bulunmadığı halde diğer iki sınıfıda ilgilendirecek ; bu iki sınıfında yeniden gözden geçirilimesi gerekecektir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Servisin direk parçalanması söz konusu olabileceği gibi aşağıdaki şekilde olduğu gibi servisin farklı arayüzlere bölünmesi de kullanışlı bir tekniktir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpG_3VMxu1GNfWzvO8TV5OBfCWjreUVIDvAvxSDTnV7ssmuD0AHEZgAHsE-fWdW3KGGi86hXGswSh65m1gYQBk2fF_Mab7Gend3d6Av2Oe1oCvk1GjRg2I_5m9oy5gzjKHQhAly73wavwP/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpG_3VMxu1GNfWzvO8TV5OBfCWjreUVIDvAvxSDTnV7ssmuD0AHEZgAHsE-fWdW3KGGi86hXGswSh65m1gYQBk2fF_Mab7Gend3d6Av2Oe1oCvk1GjRg2I_5m9oy5gzjKHQhAly73wavwP/s1600/8.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; ISP her istemci için bir arabirim yapılmasını önermemektedir.Bu prensipten bu çıkarılmamalıdır.Aksine bu durum oldukça sağlıksız ve ağır bir sistem yaratır.Bunun yerine istemciler kategorilerine ayrılmalı ve arabirimler bu kategoriler doğrultusunda yaratılmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667162&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911471&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569668&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569609&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569445&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976567&quot;&gt;&lt;/a&gt;Birleşik Yeniden Kullanım Prensibi ( The Composite Reuse Principle - CRP )&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Bu prensip diğer prensiplere göre daha tartışmalı ve kesin olmayan bir prensiptir.Alt sınıf methodlarının gurplar halinde birbirine benzeştiği durumlar için uygun bir taktik sayılabilir.Bu prensibin temel fikri nesne yönelimli programlamada polimorfizm’e kalıtım&amp;nbsp; yerine birleştirme ile de gidilebileceğidir. Polimorfizm alt sınıfların ana sınıftan farklı özellikler gösterebileceğini belirten deyimdir.&lt;/span&gt;&lt;/div&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;abstract class Animal {&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; abstract void talk();&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Class Dog extends Animal {&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; public void talk() {&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Scooby dooby Doo&quot;);&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Class Cat extends Animal {&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; public void talk() {&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(&quot;Meow....&quot;);&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Örnek kodda “Animal “ ana sınıfının alt sınıfları “Dog” ve “Cat” ana sınıftan farklı konuşma davranışları sergilemektedir , başka bir deyişle polimorfik yapıdadırlar.Yine bu örnekte kalıtım özelliği ile kolayca polmorifzm’e ulaşılmıştır.Ancak pratikte bazı durumlarda bu özellik esnek olmıyan ve etkisiz yapılar kurulmasına yol açabilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Örneğin bir bordro sistemi tasarladığınızı varsayalım.Yılbaşına yakın bir zamanda göreviniz personelin ikramiyelerini hesaplıyacak bir sistem hazırlamak olsun.Şirketin üç tip personeli kalıcı ; geçici ve yarı-zamanlı olsun.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVnu3OlhFRBnZ9cE1CiZY_SRkPFG2uz7NKFj0qHNtRCD8vm0wwAFHhpGttHrLLVCIwWwY9HoRi03h1I8wGLubfNL418v_ZYgm03yXk4wz1MFdsu6CxssQubiVUt4mtPeK-4Br0iTugaQ37/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVnu3OlhFRBnZ9cE1CiZY_SRkPFG2uz7NKFj0qHNtRCD8vm0wwAFHhpGttHrLLVCIwWwY9HoRi03h1I8wGLubfNL418v_ZYgm03yXk4wz1MFdsu6CxssQubiVUt4mtPeK-4Br0iTugaQ37/s1600/9.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Muhtemelen ilk dizaynınız yukarıdaki gibi olacaktır.Belli bir zaman sonra müdür yarı zamanlı personelin prim hesaplamasını değiştirmek istesin.Bu durumda tek yapacağınız yarı zamanlı personel sınıfında primHesapla&amp;nbsp; methodunu basitçe üzerini ezerek değiştirmek olacaktır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Bir süre sonra müdür danışman olarak çalışanların prim hesaplama şeklini&amp;nbsp; yarı zamanlı personel gibi değiştirmek istesin.Bu durumda : &lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l5 level1 lfo3; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Yarı zamanlı personelin bir alt sınıfı olarak      danışman sınıfı yaratabilirsiniz.Ancak bu sınıf hiyerarşisinde bir sorun      olacaktır.Bu dizayn olmadığı halde danışmanların ; yarı zamanlı personel      olduğunu ilan eder.Örneğin ileride danışmanlara ; kalıcı personel oranında      prim verilmek istendiğinde sınıf hiyerarşisi bunu zorlaştırır.&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;fullpost&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l5 level1 lfo3; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Danışman sınıfını direk çalışan sınıfının alt      sınıfı olarak yaratabilir ve primHesapla metodunu yarı zamanlı personelden      kopyalabilirsiniz.Ancak bu yeniden kullanım hedefimizi zedeler ve aynı      kodun çift olarak yaratılmasına yol açar.&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Burada hata çalışan sınıfının tasarlanması sırasında ortaya çıkmıştır.Prim hesaplama metodunun sık değişmeyen ve herkeze uygun bir method olduğu düşünülmüştür.Ancak gerçekte bu method her çalışan tipine göre değişiklik gösterebilir ve oldukça sık değişebilir bir method’dur.Kalıtım&amp;nbsp; yalnızca alt sınıfların üst sınıfa tam olarak uygun olacağı durumlarda kullanışlı bir yöntemdir.Ana sınıfın methodlarının sürekli olarak üzerinin ezilmesi kalıtım ilişkisini anlamsız kılar.Bu durumda üst sınıfta ; alt sınıflar gibi özelleşmiş bir sınıf olmaktan öte gidemez.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Bu durum soyut bir prim hesaplama sınıfı yaratılarak zarif bir şekilde halledilebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0jrJNphGSozNFTfWBAWl7NR1BZlafdlZXz0yrNRmzFKrWjgbrM27z8c6YxSb8RwWGRBuccrbpYMyRtYtuCz325hGkv3STrbHmbHpZDD4IvnqLypacrzpyBvNPi7tXOaCimb4xmYxII5b/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf0jrJNphGSozNFTfWBAWl7NR1BZlafdlZXz0yrNRmzFKrWjgbrM27z8c6YxSb8RwWGRBuccrbpYMyRtYtuCz325hGkv3STrbHmbHpZDD4IvnqLypacrzpyBvNPi7tXOaCimb4xmYxII5b/s1600/10.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Bu çözümde PrimHesalayıcı tüm çalışan tipleri için birleştirilmiş (composite) bir yapı sunmaktadır ve bu yapı oldukça esnek bir polimorfik yapı sergilemektedir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Bu örnek CRP seçimi için oldukça uygun bir örnektir.Bu örnekte kalıtım sizi her alt sınıfta yeni bir geliştirme yapmaya zorlar. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667163&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911472&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569669&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569610&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569446&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976568&quot;&gt;&lt;/a&gt;En Az Bilgi Prensibi ( The Principle of Least Knowledge - PLK)&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Bu prensip bize kullandığımız bir nesnenin içinden direk olarak başka nesnelere ulaşmamamızı salık verir.Bunun yerine sadece bildiğimiz nesne bize tüm methodları sunmalı ; iç yapısındaki başka nesnelerle ilgilinememiz gereksiz kılınmalıdır. Aksi takdirde nesnenin karmaşık yapısına kendimizi bağlamış oluruz.Aynı zamanda nesne de bir başka nesneyi dışarıya sunduğu için bir sözleşme imzalamış olur . Ekli örnekte PLK prensibine uymayan bir method ve uygun hali görülmektedir :&lt;/span&gt;&lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 480;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 230.3pt;&quot; valign=&quot;top&quot; width=&quot;384&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Hatalı&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 230.3pt;&quot; valign=&quot;top&quot; width=&quot;384&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Doğru&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 230.3pt;&quot; valign=&quot;top&quot; width=&quot;384&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;public void test   (AClass o){&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; AnotherClass ao = o.get();&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; ao.doSomething();&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;}&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 230.3pt;&quot; valign=&quot;top&quot; width=&quot;384&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;public void test   (AClass o){&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; o.doSomething();&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;}&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; PLK’nın ana dezavantajı sınıflara pek çok ek metodun yüklenmesidir.Örnekte PLK prensibine uymak için sınıf başka bir sınıfın metodunu kendine almak zorunda kalmıştır.Bu açıkça çok yüklü ve hantal sınıfların doğmasına yol açabilir.Ancak bu durum sınıfın dışarıya somut sınıf referansları değil de arabirim referasları sunmasıyla halledilebilir.Yani kısaca bir sınıftan dışarıya verilen referaslar soyut sınıflar üzerinden olmalıdır diyebiliriz.Bu şekilde sınıfımızı bir başka somut sınıf ile eşlemeden DIP ve OCP prensiplerine de uygun olarak çözümler geliştirebiliriz.Java örneğine bakıldığında bu şekilde hazırlanmış onlarca sınıf görülebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667164&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911473&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569670&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569611&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569447&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976569&quot;&gt;&lt;/a&gt;Tek Sorumluluk Prensibi ( The Single Responsibilty Principle - SRP)&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&amp;nbsp; Bu prensip aynı zamanda uyumluluk (cohesion) prensibi olarak da tanınır.Bu prensibi kısaca “bir sınıfın değiştirilmesi için birden fazla sebep olmamalı “&amp;nbsp; şeklinde özetleyebiliriz.Bu aynı zamanda bir sınıf birden fazla sorumluluk taşımamalı şeklinde de özetlenebilir.Çünki her sorumluluk aynı zamanda değişimin ana sebebidir.İstekler değiştiğinde o isteği yerine getiren sınıflar değiştirilerek istek yerine getirilir.Eğer bir sınıf birden fazla sorumluluk taşıyorsa , o sınıfın değişmesi için birden fazla sebep var demektir.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXr-YbTyItP_1dzTiMGGLC5dHWJIuljJdHXQ2LXg6rotCVvMGU89aSUZqPizrDRqL8w0u1GnMF2bCmXmhHWcqIBeZ_OIyqNWr7rzY3e5QOp6rVWVkj2mkNIo8YHnFole7LXoM6RjsikisI/s1600/11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXr-YbTyItP_1dzTiMGGLC5dHWJIuljJdHXQ2LXg6rotCVvMGU89aSUZqPizrDRqL8w0u1GnMF2bCmXmhHWcqIBeZ_OIyqNWr7rzY3e5QOp6rVWVkj2mkNIo8YHnFole7LXoM6RjsikisI/s1600/11.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; Örneğin alan hesaplama ve çizim methodlarını içeren bir dikdörtgen sınıfını ele alalım.Grafik ve geometri hesap uygulaması olmak üzere İki değişik uygulama bu sınıfı kullansın.Bu durumda dikdörtgen sınıfı iki sorumluluk yüklenmiş olur .Birincisi alan hesabı yapmak , ikincisi ise dikdörtgenin grafik çizimini yapmak.Halbuki bu uygulamayı kullanan uygulamalar bu fonksiyonalitenin sadece birine ihtiyaç duymaktadırlar.Bu durum iki soruna yol açmaktadır : &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; mso-list: l0 level1 lfo4; tab-stops: list 36.0pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;Geometri      hesap uygulaması hiç ihtiyacı olmadığı halde çalışma sırasında grafik      paketine ihtiyaç duyacaktır.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;fullpost&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; mso-list: l0 level1 lfo4; tab-stops: list 36.0pt; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;İkincisi      grafik uygulaması yüzünden dikdörtgen sınıfında olabilecek herhangi bir      değişiklik geometri hesap uygulamasınında yeniden derlenmesi , sınanması      vb. gereksiz yükler getirecektir.&lt;/span&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&amp;nbsp; Nesne yönelimli dizayn içinde pek çok şekilde bu sorumluluklar birbirinden ayrılabilir.Ekli şekilde bir çözüm örneği sunulmuştur.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJdYT2eBr7QtVuCX-dML-i0z1bnibPpwPrXK_zk17X6n6_kouepjsDzA80IGNtkEejqTNhJZe6IGI2LJtaANvcWjqP2ZgBQH-Q_X6q8qh-D-5laMVNl6rZortz8SH7L1_wZ5A7e5pbk59G/s1600/12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJdYT2eBr7QtVuCX-dML-i0z1bnibPpwPrXK_zk17X6n6_kouepjsDzA80IGNtkEejqTNhJZe6IGI2LJtaANvcWjqP2ZgBQH-Q_X6q8qh-D-5laMVNl6rZortz8SH7L1_wZ5A7e5pbk59G/s1600/12.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-autospace: none;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;GillSans-Bold&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667165&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911474&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569671&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569612&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569448&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976570&quot;&gt;&lt;/a&gt;Paket Dizayn Prensipleri &lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Paket dizayn prensipleri sistemin yapılandırılmasında sistem mimarının göz önünde bulundurması gereken temel prensipleridir.Sınıf bazında izlenecek prensipler algılandıktan sonra bunların nasıl organize edileceği , nasıl kategorize edileceği vb. sorunlar bu prensipler yardımıyla çözülürler. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667166&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911475&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569672&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569613&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569449&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976571&quot;&gt;&lt;/a&gt;Paket Uyumluluk Prensipleri ( Package Cohesion Principles )&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Bu prenipler sistem üzerinde yapılacak değişikliklerin en az etkiyi göstermesi için tasarlanmıştır.REP ve CRP prensipleri paketlere bağımlı olan kullanıcıların hayatını kolylaştırırken CCP prensibi daha çok değişiklik yapan geliştiricilerin hayatını kolaylaştırır.Bunu yanı sıra CCP paket içeriğini daha çok büyütürken CRP tam tersi bir işlev görür.Mimarinin ilk başlarında daha çok CCP uygulandığı görülürken ilerleyen safhalarda REP ve CRP prensipleri devreye girer.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667167&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911476&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569673&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569614&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569450&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976572&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sürümün Yeniden Kullanım Eşitliği Prensibi ( The Release Reuse Equivalence Principle&amp;nbsp; - REP)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt; &amp;nbsp;&amp;nbsp; Bu prensip bize yeniden kullanım için tasarlanan sınıfların her sürümde geriye doğru uyumlu olması gerektiğini söyler. Bir sınıf eğer yeniden kullanım için tasarlanmış ise doğal olarak pek çok kullananı vardır .Yeniden kullanım için tasarlanan sınıfların üzerinde yapılacak değişiklikler ; bağımlılıklardan dolayı pek çok başka sınıfı etkileyecektir.Dolayısıyla yeniden kullanılabilir olarak tasarlanan sınıflar doğru bir sürüm stratejisiyle geriye doğru uyum göstererek değişebilirler.Sık değişiklik gösteren sınıfların müşterileri bakım maliyetini karşılayamıyacaklarından kullanımdan vazgeçebilirler.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sistem de tasarlanan sınıflar her biri bir pakete ait olmak zorundadır.Yeniden kullanım için tasarlanan sınıflarda bu kurala uymak zorundadır.Eğer bir sınıfa bağımlılık var ise aynı zamanda pakete de bağımlılık vardır.Dolayısıyla yeniden kullanılabilir olarak tasarlanan sınıfın bulunduğu paket ve paketin diğer içeriği de buna uygun tasarlanmalıdır.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667168&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911477&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569674&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569615&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569451&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976573&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Genel Toplanma Prensibi ( The Common Closure Principle - CCP)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Beraber değişen sınıflar aynı pakete konulmalıdır.Aksi takdirde paket bağımlılığından dolayı ilerleyen sürümlerde gereksiz sınama ,&amp;nbsp; derleme vb. yükler&amp;nbsp; ortaya çıkar.Bu prensip aynı zamanda paketlerin bağımsız sınıflardan daha çok yeniden kullanım parçası olduğu fikrine dayanır.Eğer daha fazla paket değişiklik gösterirse yazılımın daha büyük parçaları bu değişiklikten etkilenecektir.Bu etkiyi minimal tutmak için en iyi çare beraber değişen sınıfların aynı pakette toplanmasıdır.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667169&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911478&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569675&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569616&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569452&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976574&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Genel Yeniden Kullanım Prensibi ( The Common Reuse Principle - CRP)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Beraber değişmeyen sınıflar aynı pakete konmamalıdır.Bir paket içinde bulunan sınıflar beraber kullanılıyorlar demektir.Bu her değişiklik ve yeni sürümde gereksiz olduğu halde değişmeyen sınıflarında yeniden gözden geçirilmesi , sınanması ve derlenmesi demektir.Bunun değişmeyen sınıflara bağımlı paketler üzerinde de aynı işlemlerin yapılması demek olduğu düşünülürse artan yük açıkça görülür.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Örneğin bu kurala uymayan işletim sistemlerinde ki değişiklikler sık sık başımızı ağrıtır.İşletim sisteminin yeni bir sürümü çıktığında biz değişikliğin tamamını istesek de istemesek de getirdiği yükü karşılamak zorunda kalırız.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667170&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911479&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569676&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569617&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569453&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976575&quot;&gt;&lt;/a&gt;Paket Eşleme Prensipleri (Package Coupling Principles )&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Sonraki üç prensip paket eşleme prensipleri&amp;nbsp; olarak anılırlar ve paketler arasındaki ilişkilerin nasıl kurulması gerektiği üzerinde dururlar.&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667171&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911480&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569677&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569618&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569454&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976576&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Doğrusal Bağımlılık Prensibi ( The Acyclic Dependency Principle - ADP)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt; tab-stops: 35.4pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;Bu prensipte, paketler arasındaki ilişki yapısında çevrimlerin bulunmamasıdır. Bir başka deyişle paketler arası ilişkiler tek yönlü ve doğrusal olmalıdır.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;Code&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;Code&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdOokAQ44ar27ZfT5n4GiQnPsIhUCoKMS89uaGThjObPrLvIqTaF2ZPVWVQ_W22GyOr5Osrxq-wESNMd-TwRKdj9nyyvPK0x5w5AP4YRU_jobIFO3uUjxA5VYHknWh1Y_9lFy74QBI_mpA/s1600/13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdOokAQ44ar27ZfT5n4GiQnPsIhUCoKMS89uaGThjObPrLvIqTaF2ZPVWVQ_W22GyOr5Osrxq-wESNMd-TwRKdj9nyyvPK0x5w5AP4YRU_jobIFO3uUjxA5VYHknWh1Y_9lFy74QBI_mpA/s1600/13.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;Şekildeki&amp;nbsp; yapı oldukça modüler ve kendi içinde uyumlu olan bir mimaridir. Paketler arasındaki tüm ilişkiler tek yönlüdür.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Yukarıdaki şekilde görülen ”Comm Error” paketinde bir değişiklik yapıldığını varsayalım. Bu durumda “Protocol” “Comm” ve “GUI” paketleri dışında sistemin geri kalan kısmı bu değişiklikten etkilenmemiş olur. Ancak bir süre sonra uygulama da “Comm Error” paketinde çıkan hataların bir pencerede kullanıcıya gösterilmek istendiğini var sayalım.Bu değişiklik sonucu “Comm Error” paketinden sınıflar “GUI” paketinden ilgili sınıfları kullanarak bir pencere açıp hata mesajı versin.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVceEshcFdF1wsUvYjVoJuaZTHEVz1Ey8jdLWtjmkn0s_vd6GKHbVPDymftpZnc0fL_Bcir8lp4eqmKfluSq8nf-8r6s0-74lR80ohwHI0DiDbFmgK3HKMRed_rux41YR7JHv0ZCVZRDgl/s1600/14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVceEshcFdF1wsUvYjVoJuaZTHEVz1Ey8jdLWtjmkn0s_vd6GKHbVPDymftpZnc0fL_Bcir8lp4eqmKfluSq8nf-8r6s0-74lR80ohwHI0DiDbFmgK3HKMRed_rux41YR7JHv0ZCVZRDgl/s1600/14.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Şekilde de görüldüğü gibi bu mimaride bir tasarım sorunu bulunmaktadır. Buna göre örneğin “Protokol” paketinde yapılacak bir değişiklik bağımlılıklardan dolayı “GUI”,”Comm”,”Modem Control” ve “Comm Error” paketlerini de etkileyecektir. Bu bir döngüdür ve istenmeyen bir durum oluşturur. Bu durum hem değişikliklerden masum paketlerin de etkilenmesine yol açacak hem de değişikliğin daha yavaş olmasına yol açacaktır.(Örneğin derleme performansı düşecektir , test süresi uzayacaktır vb) &lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;b&gt;Döngünün kırılması :&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Bu şekilde oluşan döngüleri kırmak için 2 yol vardır:&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt; mso-list: l2 level1 lfo5; tab-stops: list 18.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;1.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Yeni bir paketin yaratılması. Bu durumda hem “GUI” paketinde bulunan “Comm Error” paketi için gerekli olan sınıflar ayrı bir pakete taşınmalıdır. Bu çözümün bir dezavantajı sistemde çok fazla paketin oluşabileceğidir.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGGAKh1mr6uELiGGC339yy1YNN_cyfIHrT51Q0gvQhRwkOEQtjBEEwAn0fD9rc0D5bYysCpor7uJ4GmB-ZpdY5GKUrEXRJ1wkbt3IogBfa18ztpoNZyf1BhI0rKRbRyvQU2B3naCKlMjnF/s1600/15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGGAKh1mr6uELiGGC339yy1YNN_cyfIHrT51Q0gvQhRwkOEQtjBEEwAn0fD9rc0D5bYysCpor7uJ4GmB-ZpdY5GKUrEXRJ1wkbt3IogBfa18ztpoNZyf1BhI0rKRbRyvQU2B3naCKlMjnF/s1600/15.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEindX43i6KZP4e9nEalswuUZqx5GcbevSBUkwN69BbZ7km-u7P5add0SyfooPChQaj8k_FIgpAHkG4gdtyTadx1B6eOz9UEM5B1Z2ooyldnAUx-UOvbRma4nzM3a_X8-Q8E_l6IYRoqzaqu/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt; mso-list: l2 level1 lfo5; tab-stops: list 18.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;2.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Bağımlılığın çevrimi prensibini (DIP) uygulayarak da döngüler kırılabilir. Aşağıdaki şekilde ilk durum iki paket arasında oluşan bir döngüyü ve bu döngüye yol açan sınıfları göstermektedir. Kısaca Y sınıfı üzerinden B sınıfına olan bağımlılık kaldırılmış , bunun yerine B sınıfının Y sınıfı için gerekli parçaları bir “BY” arabirimine konarak , Y sınıfının bağımlılığı bu ara birime kaydırılmıştır. B sınıfı ise bu arabirimi geliştirmek zorunda olduğundan bağımlılık tersine dönmüştür.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYUomoLfdSr7DZZFTmrW2TtXE7T3QPeBeV6JlGJgURkTDLp49meRVT72Mx1F9W1Q_lUfKe4Wz2WMQvgXw3XEMPI7oWUKqGIzTRiFPXN05Z3a6mD-STGQmqKha3a4DBJjV2rfGM93QOhd22/s1600/16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYUomoLfdSr7DZZFTmrW2TtXE7T3QPeBeV6JlGJgURkTDLp49meRVT72Mx1F9W1Q_lUfKe4Wz2WMQvgXw3XEMPI7oWUKqGIzTRiFPXN05Z3a6mD-STGQmqKha3a4DBJjV2rfGM93QOhd22/s1600/16.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667172&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911482&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569679&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569620&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569456&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976577&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Durağan Bağımlılıklar Prensibi ( The Stable Dependencies Principle - SDP)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Durağanlık yazılımda , değişiklik sıklığı ile ilgili bir kavramdır.Bir paket ne kadar az değişiklik görüyorsa o kadar durağandır demektir.Bu durağanlığı sağlıyan unsurlar içeriğin karmaşıklığı , büyüklüğü , sağlam yapılmış olması vb. sebepler olabilir .Ancak nesne yönelimli dizayn içerisinde paketin durağan olmasını gerektiren en önemli unsur pakete olan bağımlılık sayısıdır.Bir başka deyişle pakete ne kadar bağımlılık var ise paket o kadar durağan olmalıdır.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOtlyL6T9_I0Qn95GzqODT0dd_syJ61E8J1yhSwWPHulvUml9BbAHdnGa8VqxggRlnepE0bI1B3qPkrGb6xQ0ZkzyhBSrZyYThLQZiiBHHk07LSouqFo4N4rM_m3PpAVVmql6ILFBpazJw/s1600/17.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOtlyL6T9_I0Qn95GzqODT0dd_syJ61E8J1yhSwWPHulvUml9BbAHdnGa8VqxggRlnepE0bI1B3qPkrGb6xQ0ZkzyhBSrZyYThLQZiiBHHk07LSouqFo4N4rM_m3PpAVVmql6ILFBpazJw/s1600/17.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yukarıdaki örnekte görülen X paketine diğer üç paketten bağımlılık vardır.X paketinde yapılacak her değişiklik diğer paketleri de etkileyecektir.Bu yüzden X paketi durağan olmak zorundadır.Bu bağımlılıklardan dolayı X paketi diğer paketlerden &lt;b&gt;sorumlu&lt;/b&gt; olarak da anılır.Aynı zamanda X paketinin başka bir yere bağımlılığı olmadığı ve başka yerlerden etkilenmiyeceği için &lt;b&gt;bağımsız &lt;/b&gt;olarak da adlandırılır.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTsscNLGtio1nUrGT80EEARGvKP-aRD_gjaXY9NJx13Im_J-SX8OHjz3JguOCCx1GfElAe-PKWGgd1RYEOyFMfo-dcTeRUnGhMS2dbstOxoVTjlPamXv5I94odt0xVZXI3I5Ipkc0X6I7t/s1600/18.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTsscNLGtio1nUrGT80EEARGvKP-aRD_gjaXY9NJx13Im_J-SX8OHjz3JguOCCx1GfElAe-PKWGgd1RYEOyFMfo-dcTeRUnGhMS2dbstOxoVTjlPamXv5I94odt0xVZXI3I5Ipkc0X6I7t/s1600/18.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Üstteki şekilde yer alan Y paketi bir önceki örneğin aksine durağan olmıyan bir görüntü sergilemektedir.Bu durumda Y paketi diğer paketlerden &lt;b&gt;sorumlu olmıyan &lt;/b&gt;ve &lt;b&gt;bağımlı&lt;/b&gt; olarak adlandırılır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; SDP prensibi bize tüm yazılımın durağan olması gerektiğini söylememektedir.Aksine nesne yönelimli dizayn oldukça esnek ve değişikliklere açık olmalıdır.Ancak bu prensipten anlamamız gereken sistem içinde bağımlılığın fazla olduğu paketleri durağan ilan etmemiz ve öyle olması içinde gayret sarfetmemiz gerektiğidir.Bu durum dizayn sırasında durağan paketlerin dikkatli seçilmesi ve iyi dizayn edilmesini gerektirir.Aynı zamanda geliştirme esnasında da bu paketlere öncelik verilmesi ve bağımlı paketlerin öncesinde geliştirmenin de değişiklik gerektirmiyecek şekilde tamamlanması gerekir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667173&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911484&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569681&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569622&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569458&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976578&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Durağan Soyutluk Prensibi ( Stable Abstractions Principle - SAP)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu prensip bir önceki SDP prensibi ile yakın ilişkilidir.Kısaca durağan paketlerin soyut yapıda olmasını söyler.Bu prensibi OCP ve DIP prensiplerinin paket boyutunda uygulanması olarak adlandırabiliriz.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinmqfSmxhkY1Wey-miif6IE8zvkgKYzckutg8hSwt3W9DBKTrojxTu3m5Bhw5lNquyQaAgb0ma9E-rpZ5fwAfYbrODFNlV9IJBNrOnyM66IAucQeIffVPiWZgFyiMnuU8RIbGIJFqbFqqP/s1600/19.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinmqfSmxhkY1Wey-miif6IE8zvkgKYzckutg8hSwt3W9DBKTrojxTu3m5Bhw5lNquyQaAgb0ma9E-rpZ5fwAfYbrODFNlV9IJBNrOnyM66IAucQeIffVPiWZgFyiMnuU8RIbGIJFqbFqqP/s1600/19.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; Yukarıdaki örnekte durağan&amp;nbsp; bir paketin içeriğinin soyut yapılarak prensibin uygulanışı gösterilmiştir.Durağan paketin gerçekleştirimi bir başka pakette&amp;nbsp; yapılarak dizayn esnek bir hale getirilmiştir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667174&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911488&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569687&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569628&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569464&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976579&quot;&gt;&lt;/a&gt;Diğer Dizayn Prensipleri&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667175&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911489&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569688&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569629&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569465&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976580&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kapsülleme Prensibi ( The Encapsulation Principle &lt;/span&gt;- EP )&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Nesne yönelimli yazılımda kapsulleme prensibi sınıfların dışarıya gereği kadar bilgi sunmasını , iç yapılarını dışarıya yansıtmamalarını söyler.Bu prensibin paketlere yansıtılmış hali bir paketin içindeki detayların dışa kapalı kalmasıdır. Buna göre bir paketin içindeki sınıflar ne kadar dışarıya kapalı ise kapsulleme o kadar fazladır.Bu prensibe göre paketin iç yapısının dışında dış kullanımda gerekli olmıyacak sınıflar dışarıya kapalı tutulmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;Code&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667176&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911491&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569690&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569631&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48569467&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc47976581&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sınırlı Boyut Prensibi ( The&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Limited&lt;/span&gt; Size &lt;span lang=&quot;EN-US&quot;&gt;Principle&lt;/span&gt; - LSP)&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Bu prensibe göre bir paketin içindeki alt paket ve üst seviye sınıf sayısı belli bir boyutu aşmamalıdır. Üst seviye sınıf kavramı yazılım içinde mimari açıdan önemli sayılan sınıfları ifade eder.Bir sınıfa uygulama içinden bağımlılık ne kadar fazla ise o sınıfın önem derecesi o kadar artacaktır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Paketlerin boyunun gereğinden fazla tutulması paketin sorumluluğunun artmasına ve bakımının gittikçe zorlaşmasına yol açacaktır.Paket üzerinde yapılan değişiklikler de buna paralel daha çok yeri etkileyecektir.İyi projelerde paket içeriğindeki alt paket ya da üst seviye sınıf sayısının 10-15 ‘i aşmamasına özen göstermek gerekir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;h1&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc49667203&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5058801411948254447&quot; name=&quot;_Toc48911518&quot;&gt;&lt;/a&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kaynakça&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-size: 10pt;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l3 level1 lfo6; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;Booch, G., &lt;i&gt;Object      Oriented Design with Applications&lt;/i&gt;, Redwood City, CA:      Benjamin/Cummings, 1991.&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;fullpost&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l3 level1 lfo6; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Robert C. Martin      ,”Design Principles and Design Patterns” , Object Mentor Inc.&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l3 level1 lfo6; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Samudra Gupta , “Fine Tuning Abstraction” , &lt;a href=&quot;http://javaboutique.internet.com/&quot;&gt;http://javaboutique.internet.com&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l3 level1 lfo6; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;James Rumbaugh , “Object Oriented Modelling and Design “ , Prentice      Hall-1991 &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l3 level1 lfo6; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Chidamber, S. R. &amp;amp; Kemerer, C. F., “A Metrics Suite for      Object Oriented Design”,&lt;i&gt; IEEE Transactions on Software Engineering&lt;/i&gt;,      Vol. 20, #6, June 1994.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l3 level1 lfo6; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Martin Fowler , “Refactoring :Improving the design of existing      code” , 1999&lt;/span&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/5058801411948254447/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/nesne-yonelimli-yazlmda-dizayn.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/5058801411948254447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/5058801411948254447'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/nesne-yonelimli-yazlmda-dizayn.html' title='Nesne Yönelimli Yazılımda Dizayn Prensipleri'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxBbjEzQPmKDCXyZDFkzf_VyDsfezN0_lkg3bZSFbzpzh7rcf_ICh_Jd3x5E8Sux3ph3tjUHLHkPzsRnpX26Q3r8FGOy1iqx9yj3zxVUxf9Jx-KVzdhHltJKR8eChOefPfPQNLVPmLvEvl/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-8291713662398258254</id><published>2011-04-22T15:37:00.000+03:00</published><updated>2011-04-22T13:03:33.075+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><title type='text'>Yazılım Mimarisi (Software Arhitecture)</title><content type='html'>&lt;h1&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc49667151&quot;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Yazılım geliştirme sürecinin ilk adımlarında problem analizi yapılarak&amp;nbsp; sistemde nelerin yapılması gerektiği ortaya konur. İhtiyaçların nasıl karşılanacağı , nasıl çözümler geliştirileceği ise &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;dizayn&lt;/b&gt; disiplinin konusudur. Dizayn geliştirme boyunca çözümler için alınan kararlar öncelikle üst seviyede alınır ve giderek detaylandırılır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Yazılım mimarisi ; dizayn disiplininin ilk aşamalarında ortaya çıkar.Yazılım Mimarisi deneyimli yazılımcılar tarafından kolaylıkla anlaşılabilse de , tarifi oldukça zor bir kavramdır.Yazılım dizaynı ile yazılım mimarisi sıklıkla birbirine karıştırılmaktadır.Dizayn sistemin tüm ayrıntılarını içerdiği halde mimari bize sistemin ne olduğunu hakkında bilgi verir.Başka bir deyişle mimari ; dizaynın belli özellikleri öne çıkarılmış bir alt kümesidir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Ancak bu tanımdan mimarinin , dizayndan sonra hazırlandığı gibi bir sonuca ulaşılmamalıdır.Aksine mimari öncelikle hazırlanan bir kavramdır.Dizayn daha sonra mimaride belirtilen parçaların detaylandırılmasını kapsar.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; &lt;span lang=&quot;EN-US&quot;&gt;Yazılım Mimarisi “ sistemi tanımlayan en üst seviye kavramlar”&amp;nbsp; olarak nitelendirilebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılım mimarisi şunları içerir : &lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sistemin organizasyonu hakkında önemli kararlar &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sistemin önemli yapısal elementleri ve bunların arayüzleri ile      birbirleri arasındaki etkileşim &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sistemin önemli yapısal ve davranışal elemanlarının      altsistem’lere dağılımı&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;  Yazılım mimarisi yapı ve davranışların yanı sıra kullanılabilirlik , fonksiyonalite , performans , esnekllik , yeniden kullanım , anlaşılırlık , ekonomik ve teknolojik kısıtlar gibi özellikleri de yansıtır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Tüm bu özellikleri ile “Yazılım Mimarisi” sistemin anayasasıdır.Tüm yazılım geliştirme sürecinin merkezinde durur ve her türlü faliyete kılavuzluk eder. &lt;/div&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;span lang=&quot;EN-US&quot;&gt;Yazılım mimarisi pek çok sebepten dolayı önemlidir : &lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sistemin karmaşıklığını yönetmek ve bütünlüğünü korumak için ,      kontrol edilebilir bir yapı sunar&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Karmaşık sistemler kendini oluşturan parçaların bütününden daha fazla şey ifade ederler.Böyle sistemler kendini oluşturan parçaların nasıl bir araya geldiğini ve çalıştıklarını düzenledikleri gibi ,&amp;nbsp; gerektiğinde sistemin nasıl büyüyeceğini de tariflemelidir.Mimarisi tarif edilmemiş sistemde yapılacak her türlü değişiklik tam bir kaos olacaktır.Mimari ortak bir referans ve sözlük sunarak sistemin anlaşılırlığını ve iletişimi iyileştirir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Bundan başka mimari tüm ana parçaları belirlediğinden bundan sonraki tüm çalışmalar için bir adresleme sağlar.Hangi parçanın nerede ele alınacağı , hangi kavramın nereye oturtulacağı mimari ile belirlenir.Tüm parçaların görevleri ve kapsamı belirlendiğinden kaos ortadan kalkar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yeniden kullanımı arttıran kullanışlı bir yapı sunar &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Sistem bileşenlerinin&amp;nbsp; ve bunların arabirimlerinin mimaride tariflenmesi ; bileşenlerin&amp;nbsp;&amp;nbsp; hem sistem içinde hem de başka sistemler içerisinde yeniden kullanımını önemli ölçüde arttırır.Sistem içinde ortak bileşenlerin adresleri belirlendiğinden kullanımları artar .Örneğin aynı çözümün sistem içerisinde birden fazla geliştirilmesi gibi problemlerin önüne geçilmiş olur.Dış sistemler de (örneğin geliştirilen diğer projeler ) ise kendi çözümleri içerisinde bu bileşenleri kullanabilirler.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Daha geniş ölçekte&amp;nbsp; mimarinin kendisi de&amp;nbsp; farklı çözümlerde yeniden kullanım olanağı bulabilecektir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Proje yönetimi için temel teşkil eder&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Projenin planlama ve kaynak yönetimi organizasyonu ana bileşenler etrafında oluşturulurlar.Temel yapısal kararlar mimari takımı tarafından bütünlük içerisinde yaratılırlar.Geliştirme aktiviteleri küçük takımlar halinde bileşenler etrafında yapılırlar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  Yazılım geliştirme süreci oldukça karmaşık ve&amp;nbsp; zor bir süreçtir.Bu süreçte dağılmamanızı sağlıyacak şey , sürecin merkezinde duran şey yazılımınızın mimarisi olmalıdır..&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc49667152&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc48502831&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Altsistemler (Subsystems)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bileşen&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot;&gt; sistem içerisinde bulunan , iyi tanımlanmış arabirim ve davranışlarıyla içeriği hakkında güçlü bir kapsulleme sunan , aynı zamanda değiştirilebilir , kaynak ya da çalışabilir durumda ki bir gurup koda verilen isimdir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sistem dizaynının ilk adımı sistemin ana bileşenlerinin tariflenmesidir.Bu ana bileşenler aynı zamanda &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;altsistem&lt;/b&gt; olarak da adlandırılırlar.Altsistemler bir sınıf ya da fonksiyon değildirler.Altsistemler sınıflar , ilişkiler , operasyonlar , olaylar , kurallar gibi birbiriyle ilişkili pek çok kavramı barındıran paketlerdir.Altsistemler genellikle sundukları &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;servis&lt;/b&gt; ile tanımlanırlar.Servis ortak bir amaca hizmet eden bir gurup fonksiyon olarak tanımlanabilir.Örneğin işletim sistemleri bünyelerinde&amp;nbsp; bellek yönetimi , dosya yönetimi gibi alt sistemler bulundururlar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Her altsistem ; sistemin geri kalanı için bir arabirim sunar.Arabirim ; altsistemin tüm fonksiyonalitesini dışarıya sunar ve altsistemin fonksiyonalitesini belirler.Ancak işlemlerin altsistem içersinde nasıl gerçekleştiğini göstermez.Altsistemler sistemin geri kalanını etkilemeden bağımsız olarak dizayn edilebilirler.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bir sistem sınırlı sayıda alt sisteme sahip olmalıdır.Örneğin 20 muhtemelen çok sayıda altsistemi işaret etmektedir.Altsistemler de kendi içlerinde altsistemlere ayrılabilirler. Altsistemlerin diğer altsistemlere olan bağımlılıkları mümkün olduğunca kısıtlı tutulmalıdır.Bağımlılıklar tercihan aynı seviyedeki altsistemler yerine barındırdığı altsistemler ile arasıda kurulmalıdır.En alt seviyedeki alt sistemlere &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;modül&lt;/b&gt; adı verilmektedir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-indent: 9.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;İki altsistem arasında kurulacak ilişkiler iki şekilde sınıflandırılmaktadır:&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;İstemci – Destekçi      (client-supplier)&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot;&gt; : Bu tür ilişkide istemci ,      destekçi’nin arabirimini bilmek zorundadır.Bu arabirim üzerinden istediği      servisleri alır.Ancak bu tür bir ilişkide destekçi ; istemci hakkında bir      bilgiye sahip olmak zorunda değildir.Tek taraflı bir bağımlılık söz      konusudur.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Eşdüzeyli      (peer-to-peer)&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot;&gt; : Bu tür bir ilişkide altsistemler      birbirlerini kullanırlar.Bu tür ilişkiler daha karmaşıktır.Her iki      altsistem de birbirinin arabirimini bilmek zorundadır.İletişimin dizaynı      oldukça karmaşık ve hataya açıktır.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Altsistemler arasında ilişkiler kurulurken mümkün mertebe istemci-destekçi tarzı ilişkiler kurulmaya çalışılmalıdır. Sistemin altsistemlere açılımı yatay olarak katmanlar , dikey olarak bölümler olarak organize edilebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc49667153&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc48502832&quot;&gt;&lt;/a&gt;Katmanlar (Layers)&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Katmanlar , sistem içersinde birbiri ardına gelen sanal dünyalar olarak nitelendirilebilir.En üst seviye katmanlar uygulamaya has fonksiyonalite sunarken , alt seviyeler daha çok çalışma ortamına özel bileşenleri içerirler.Genel amaçlı servisler ve iş mantığı servisleri ise genellikle orta seviyeler yer alır. Katmanlar içerisinde birbiriyle benzeşen nesneler olabilir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Katmanlar arasında bilgi tek yönlüdür.Her katman daha alt seviyede ki&amp;nbsp; katmanlar hakkında bilgi sahibi olabilir ancak üst seviyeler hakkında bir bilgisi yoktur.Alt katmanlar ile üst katmanlar arasında istemci-destekçi tarzı ilişki söz konusudur.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Katmanlanmış Mimariler’de açık ve kapalı olmak üzere iki form söz konusu olabilir.&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Kapalı mimaride&lt;/b&gt; katmanlar sadece takip eden katmanla iletişim kurabilir.Bu katmanlar arasında bağımlılıkları azaltır ve değişiklikler için daha esnek bir sistem sağlar.Çünki katman’ın arabirimleri üzerinde yapılacak değişiklik sadece bir katmanı etkiler.&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Açık mimaride&lt;/b&gt; katman ; alt seviyelerin tümüne erişebilir .Bu operasyonların her seviyede yeniden tanımlanma gereksinimini ortadan kaldırır ve daha verimli ; küçük kodlar sağlar.Ancak değişiklikler pek çok seviyeyi etkileyebilir.Bu yüzden açık mimari , kapalı mimariye göre daha az güvenli bir yapı sunar.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggLuv_epVxA29msw2pQl3QtQqk6D8cRT_7ekvsHSXK6_MFKS1BpKW21LIVT-XxIRa-HmO8wxUftFz03ePDLx58nXMHhbqPmQh5ycA6q2IAUOAdx-MBKhCwabwG1bUbiPK5eGRvwKA41p3T/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggLuv_epVxA29msw2pQl3QtQqk6D8cRT_7ekvsHSXK6_MFKS1BpKW21LIVT-XxIRa-HmO8wxUftFz03ePDLx58nXMHhbqPmQh5ycA6q2IAUOAdx-MBKhCwabwG1bUbiPK5eGRvwKA41p3T/s400/1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Katmanların yalnızca en alt ve en üst seviyeleri problem durumuna göre belirlenir.En üst seviye talep edilen seviyedir , en alt seviye ise kaynakları (database , donanım , işletim sistemi vb) yönetir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Katmanların sayısı ve komposizyonu hem problemin hem çözümün karmaşıklığına bağlı olarak değişebilir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc49667154&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc48502833&quot;&gt;&lt;/a&gt;Bölümler (Partititons)&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Bölümler sistemi dikey olarak bölen , her biri bir çeşit servis sunan ,&amp;nbsp; bağımsız ya da zayıf eşlemeli alt sistemlerdir.Örneğin bir işletim sisteminde dosyalama sistemi , sanal bellek kontrolü , aygıt kontrolü gibi bölümler bulunur.Bölümler birbirleri hakkında büyük bağımlılıklar yaratmayacak kadar bilgi sahibi olabilirler.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Bir sistem çeşitli kombinasyonlarda hem katmanlara hem de bölümlere parçalanabilir.Katmanlar bölümlere ayrılabilir ya da bölümler katmanlara ayrılabilir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc49667155&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=8291713662398258254&quot; name=&quot;_Toc48502834&quot;&gt;&lt;/a&gt;Bileşenler (Components)&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Bileşenler sistem içerisinde modul , paket ya da altsistem gibi kesin sınırları olan ve sorumluluğu belirlenmiş elemanlar olarak da tanımlanabilir.Bileşenler sisteme entegre olabilir ve değiştirebilir yapılardır.Bu aynı zamanda&amp;nbsp; bileşenlerin başka sistemler içerisine de entegre edilebilir ve yeniden kullanılabilir olduğunu anlatır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Moduler bir mimaride bileşenleri bağımsız olarak tanımlar , izole eder , dizayn eder ve geliştirebilirsiniz edebilirsiniz.Daha sonra bileşenler&amp;nbsp; yine bağımsız olarak test edilip sisteme entegre edilebilirler. Bu bileşenlerden bir kısmı genel çözümler sundukları tesbit edilirse daha geniş alanlarda kullanılabilirler.Bu yeniden kullanılabilir bileşenler organizasyonun genel yazılım verimliliğini ve kalitesini arttırmanın bir yoludur.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Corba , Active X , Java Bean gibi bileşen altyapıları tüm endüstriye yeniden kullanılabilir bileşenler geliştirmenin yolunu açmıştır.Bu sayede çözümünü beğendiğimiz bileşenleri alıp sistemlerimize entegre edebilmekteyiz.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjByXEhcan4q_xdGUY4iU-D3P3Itqw5lQ-UkBzE6dtQVyJlIG5qn1wD7EBA3tsAzW1sJTCAFIB9rti12ikCtlemowwFdtULVFY1WF_9lVY9G778NelXdA5aXvLyubv8PZD1cpTvZqhHGZu2/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjByXEhcan4q_xdGUY4iU-D3P3Itqw5lQ-UkBzE6dtQVyJlIG5qn1wD7EBA3tsAzW1sJTCAFIB9rti12ikCtlemowwFdtULVFY1WF_9lVY9G778NelXdA5aXvLyubv8PZD1cpTvZqhHGZu2/s400/2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; letter-spacing: -0.1pt;&quot;&gt;&lt;br clear=&quot;all&quot; style=&quot;page-break-before: always;&quot; /&gt; &lt;/span&gt;  &lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;Heading1CharChar&quot;&gt;&lt;span style=&quot;font-size: 16pt;&quot;&gt;Çalışma Alanı (Domain) Kavramı&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Sistemimizi yapısal olarak katmanlara ve bölümlere ayırabiliyoruz.Bir üçüncü boyut olarak gelen &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;çalışma alanı (domain )&lt;/b&gt; aslında sistem içerisinde adreslenen çözümlerin genelden özele doğru yeniden kullanılabilir parçalar halinde düzenlenmesidir diyebiliriz.Örneğin muhasebe alt sisteminin genel&amp;nbsp; , hazırlanan alana özgü (sigorta , bankacılık vb)&amp;nbsp; ve şirkete özgü parçaları.Çalışma alanlarından&amp;nbsp; katmanlar ve bölümler gibi yapısal bir parçalanma değil mantıksal bir parçalanma olarak söz edebiliriz.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcMje9W-1325fUTMPLR1R1d93Jq4DSsU5xjg1Yy95-60w4MxkZOMC5EHDgUcI0RMfvzihcz4GGJtCzYfYcOU2lGMF-DGX42MpqYsq8hUILBnCmSkzxu-TUrgdktTv2j4-EXTYgRzpOK_27/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;199&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcMje9W-1325fUTMPLR1R1d93Jq4DSsU5xjg1Yy95-60w4MxkZOMC5EHDgUcI0RMfvzihcz4GGJtCzYfYcOU2lGMF-DGX42MpqYsq8hUILBnCmSkzxu-TUrgdktTv2j4-EXTYgRzpOK_27/s320/3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Örnek şekil bir uygulama parçalarının nasıl ele alındığını ve içindeki çalışma alanlarının nasıl tesbit edildiğini göstermektedir.Buna göre uygulama içerisindeki iş mantığı içermeyen yeniden kullanılabilir kodlar framework içerisinde toplanmış , işe özel ancak o iş içinde yeniden kullanılabilir kodlar bir başka parçya ayrıldıktan sonra geriye kalan kodlar uygulamaya özel olarak belirlenmiştir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Çalışma alanlarının tesbiti sistemdeki genellemelerin ve farklılıkların tesbitini gerektirir.Sistemin daha genel kullanım bulabilecek fonsiyonaliteleri genelden özele doğru parçalara ayrılmalıdır.Bunun en iyi etkisi yeni sistemlerin dizaynı sırasında , üzerinde özelleştirmelerin yapılabileceği sistemlerin hazır halde oluşmuş olmasıdır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Çalışma alanı tesbitine problem analizi sırasında başlanmalıdır ve problem bağlamında önceden hazırlanmış çözümler değerlendirilmelidir.Aksi takdirde hazır yapıların değerlendirilememesi ve gereksiz iş gücü kaybının yanı sıra hazırlanacak çözümlerinde yeniden kullanılamaması gibi sakıncalar oluşacaktır.Alttaki şekil uygulama süreçleri ile çalışma alanlarının oluşturulma süreçleri arasındaki ilişkiyi göstermektedir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXIppjCbAJEE9VBzdB1Ff4rVstbOS8pFgDqr8S4XBiGoXvsvgz5UhNPB4b705DZXkbEoeH1u4S_Eved9pLp-ZEq9uzOrJxtXI9RhqPljOq5n9TtcGyTAayfW-ZvYhIrYEcmxGmiZ0u9_2F/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXIppjCbAJEE9VBzdB1Ff4rVstbOS8pFgDqr8S4XBiGoXvsvgz5UhNPB4b705DZXkbEoeH1u4S_Eved9pLp-ZEq9uzOrJxtXI9RhqPljOq5n9TtcGyTAayfW-ZvYhIrYEcmxGmiZ0u9_2F/s400/4.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yazılım mühendisliğini istekler&amp;nbsp; doğrultusunda geliştirilen , tek sisteme yönelik bir çalışma olduğunu varsayarsak , çalışma alanı mühendisliği pek çok sisteme uyabilecek yeniden kullanılabilir çözümler sunan bir çalışmadır denilebilir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Çalışmalar yapılırken hazırlanan çözümlerin daha geniş alanlara uygulanabilip uygulanamıyacağı sorgulanmalı ve ilerideki projeler için yeniden kullanılabilir çözümler hazırlanmalıdır.Bu işlem bizi yavaşlatır görünse de tüm süreçler içindeki avantajı ve sağlıyacağı katkılar inanılmaz boyutlarda olabilir.&amp;nbsp;&amp;nbsp; Alan çalışmaları sonucu elimizde yeniden kullanılabilir kod parçalarının yanı sıra çözüm tasarımları da&amp;nbsp; oluşacaktır.Bu tasarımlar farklı dillerde ve ortamlarda yeniden uyarlanabilir olduğu göz önüne alınırsa , kurumsal bir yapı oluşturulmuş ve farklı çözümler geliştiren firmalara olabilecek katkısı daha iyi anlaşılır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alan çalışmalarına sürecin en başından başlanamasa bile hazır sistemler üzerinde çalışma alanı analizleri yapılarak yeniden kullanılabilir parçaların tesbiti mümkündür.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/8291713662398258254/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/yazlm-mimarisi-software-arhitecture.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/8291713662398258254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/8291713662398258254'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/yazlm-mimarisi-software-arhitecture.html' title='Yazılım Mimarisi (Software Arhitecture)'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggLuv_epVxA29msw2pQl3QtQqk6D8cRT_7ekvsHSXK6_MFKS1BpKW21LIVT-XxIRa-HmO8wxUftFz03ePDLx58nXMHhbqPmQh5ycA6q2IAUOAdx-MBKhCwabwG1bUbiPK5eGRvwKA41p3T/s72-c/1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-6645917602678442589</id><published>2011-04-22T11:41:00.009+03:00</published><updated>2011-04-22T12:37:46.460+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Data Modelling"/><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><title type='text'>İlişkisel Veri Tabanı Dizaynı</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Çalıştığım kurumlarda işe alım görüşmelerinde çoğu kez değerlendirme kurullarında yer aldım. Yeni mezun adayları değerlendirmek için başvurduğum yöntemlerden biri  yazılım sürecini  nasıl algıladıklarını değerlendirmektir. Konu kurumsal yazılımlar&amp;nbsp; olunca, yazılım yaşam döngünüzde en önemli faktörlerden biri,doğal olarak veri modelinizi nasıl oluşturduğunuzdur. Sonuçta kurumsal yazılımınızın hayatı sona erdiğinde ve emekliye ayrılması gündeme geldiğinde dahi ortada kalacak tek şey oluşmuş verilerdir. Hal böyleyken katıldığım görüşmelerde bana veri modelini oluştururken nelere dikkat ettiğini anlatabilen aday sayısı dramatik bir şekilde az. Bunu kendimce çeşitli sebeplere bağlamakla beraber, durumun piyasa olan etkisinden de biraz bahsetmek isterim. Özellikle danışmanlığa başladığım günden&amp;nbsp; beri farklı veri modelleri ile karşılaştım.&amp;nbsp; Yüzlerce kolondan oluşan, normalizasyondan son derece uzak, OLTP için hazırlanmış veri modelleri beni ilk başlarda korkuttuysa da, durumun son derece yaygın olduğunu sonradan anladım. Nacizhane bir tavsiye olarak özellikle IT yöneticilerine, OLTP sistemlerinde&amp;nbsp; için kavrayamadıkları veri tabanı modelleri,&amp;nbsp; kolonlarının sonunu göremedikleri&amp;nbsp; tablolar&amp;nbsp; ile karşılaşıyorlar ise acil tedbirlere başvurmalarını öneririm.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Aşağıdaki yazıyı Internet üzerinden erişilebilir kaynaklara bir yenisini daha eklemek ve belki de bu yolla bir kişiye olsun faydasının dokunmasını umarak  burada yayınlıyorum. Bu yazının konusu özellikle veri tabanı dizaynı sırasında &lt;b&gt;kavramsal ve mantıksal&lt;/b&gt; modelin hazırlanmasıdır. Diğer bazı&amp;nbsp; konulara&amp;nbsp; bilgi vermek ve konunun bütünlüğü açısından , kısaca değinilmiştir.&lt;br /&gt;
&lt;br /&gt;
Esen Kalın&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;VERİ TABANI SİSTEMLERİNİN ORTAYA ÇIKIŞI&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Veri tabanı yönetim sistemlerin ortaya çıkışından önce kullanılan klasik dosya sistemlerinde , veri kümeleri fiziksel olarak ayrı ayrı dosyalara saklanmaktaydı.Kavramsal düzeyde bu dosyalar arasında bir ilişki kurulabilmesine rağmen , bu ilişkilerin kontrolünün veri dosyalarını&amp;nbsp; kullanacak her programa ayrı ayrı&amp;nbsp; uygulanması gerekliydi.Bu da dosyaları kullanacak her programın veri bütünlüğünü ve doğruluğunu bozmaması gerektiği anlamına gelmekteydi.&lt;br /&gt;
&lt;br /&gt;
Benzer şekilde&amp;nbsp; aynı anda birden çok dosyayla çalışan programların dosyaları yönetiş biçimi olduça güçtü.Sözgelimi programınızın başında kullanıcağınız bütün dosyaları açmak , sonunda da doğru bir şekilde kapamak zorundaydınız.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJh1zY_MicHVsSHgF-LSkmmtI6_a3SFLPz59LR3kry3dVrsIoaucv2neyOJK721C4JwDpOCxCsMZr80Sti02nFiBIe96mXAluIvpb1V9vTlyJQDs1oBIRHWWKVBjT6ThR0cyP6Rv6RNKl/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;289&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJh1zY_MicHVsSHgF-LSkmmtI6_a3SFLPz59LR3kry3dVrsIoaucv2neyOJK721C4JwDpOCxCsMZr80Sti02nFiBIe96mXAluIvpb1V9vTlyJQDs1oBIRHWWKVBjT6ThR0cyP6Rv6RNKl/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bütün bunlar  programların yazımını oldukça güç kılıyor ve sıklıkla hatalar yaşanabiliyordu.Yaşanan bu ve bunun gibi sıkıntılar yüzünden programlar ile veri arasındaki bu sıkı ilişkiyi biraz soyutlamak gereği ortaya çıktı.Bu sıkıntıları çözmek içinde veri tabanı sistemleri doğdu.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyF4i3bVMxVV1mZPorsOMBOk_4hfTnVWMoZXmg_ejkzoEDnmjrgm_pX2E9BSgzBkNxWT5kxkbM-IWtR2bjQwYSSZgtbK4Z6CPVzzl0dWSGBQiFzg_Edu_iUK4jLU5qzmCnUyeOpBLdTorE/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyF4i3bVMxVV1mZPorsOMBOk_4hfTnVWMoZXmg_ejkzoEDnmjrgm_pX2E9BSgzBkNxWT5kxkbM-IWtR2bjQwYSSZgtbK4Z6CPVzzl0dWSGBQiFzg_Edu_iUK4jLU5qzmCnUyeOpBLdTorE/s400/2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Veri tabanları ayrı ayrı bulunan dosyaları kendi havuzu içersinde toplandı.Programlar tek tek dosyalar yerine artık veri tabanına bağlanıp isteklerini veri tabanı üzerinden karşıladılar.Programlarla veri tabanının konuşması için özel bir dil geliştirildi.(SQL) &lt;br /&gt;
&lt;br /&gt;
Veri tabanı,  kısaca tanımını yapmak gerekirse, uygulama sistemlerince kullanılmak üzere belirli ortamlara saklanmış birbirleriyle ilişkili veriler topluluğudur.Tabi veri tabanının üzerinde havuzdaki verilerin yönetimiyle sorumlu bir veri tabanı yönetim sistemi bulunur.(Database management system) .Bu iki kavram sıklıkla beraber anılırlar.&lt;br /&gt;
&lt;br /&gt;
Veri tabanı yönetim sisteminin temel görevlerine gözatıcak olursak :&lt;br /&gt;
• Security (Güvenlik) &lt;br /&gt;
Kullanıcı yönetimi , veri tabanına bağlanmak isteyen kullanıcının tanımlanmış haklarına uygun şekilde davranmasını sağlamak vs&lt;br /&gt;
• Integrity (Bütünlük /Doğruluk) &lt;br /&gt;
Verilerin beklenmeyen durumlarda bozulması  , yanlış veri girişinin önlenmesi , beklenmeyen durumlarda verinin tamiri , kaynak paylaşımının düzenlenmesi (veri üzerinde aynı anda birden fazla değişiklik yapılmasını önlemek)  gibi&lt;br /&gt;
• Time Sharing (Zaman paylaşımı) &lt;br /&gt;
Veri tabanını üzerinden yapılan  işlemlere belli zaman aralıklarıyla cevap verilmesi , kullanıcılara işlemci zamanının paylaştırılması vs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;VERİ TABANI SİSTEMLERİNİN SINIFLANDIRILMASI&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Veri tabanı konusunda genel bir bilgilendirmeden sonra veri tabanları üzerinde verinin nasıl saklandığına gelmek gerekir.Veri tabanları veriyi saklama biçimlerine göre çeşitli katagorilere ayrılırlar. Bunlardan bazıları: &lt;br /&gt;
&lt;br /&gt;
1- Hierarchical  (Hiyerarşik ) &lt;br /&gt;
2-Multidimensional (Çokboyutlu )&lt;br /&gt;
3-Relational (İlişkisel)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Hierarchical  (Hiyerarşik ) &lt;/span&gt;&lt;br /&gt;
Bu modelde veriler ağaç yapısında dururlar.Bir parent-chield iişkisi vardır.Aşağıda yayımcı – yazar – kitap ilişkisinin hiyerarşik modelde nasıl gösterildiği örneklenmiştir.&lt;br /&gt;
Hiyerarşik modelde ebeveyn’in girişi yapılmadan çocukların girişi yapılamaz.Eğer bir ebeveyn silinmek zorunda kalınırsa ilgili tüm çocuklar da silinir.&lt;br /&gt;
Ağ modeli (network model) hiyerarşik modelin geliştirilmiş halidir. 1960’ların sonunda hiyerarşik modelde bazı iyileştirmeler öngörülerek hazırlanmıştır.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7oMyH_qFzggKnLyyZYzBdF2obp_E0MZBj1NFqksEnK9vH7ByUDdTs9jyxlUWFPLlwIxkhE1MUTX0XSiCGoOI6pcqO-I7w_ExbPiTWvCCn3dv4Fm4fjsEoVhyPDGOjRcU8UgWyu_AcOmsY/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7oMyH_qFzggKnLyyZYzBdF2obp_E0MZBj1NFqksEnK9vH7ByUDdTs9jyxlUWFPLlwIxkhE1MUTX0XSiCGoOI6pcqO-I7w_ExbPiTWvCCn3dv4Fm4fjsEoVhyPDGOjRcU8UgWyu_AcOmsY/s320/3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Multidimensional (Çokboyutlu )&lt;/span&gt;&lt;br /&gt;
Datawarehouse ve OLAP gibi uygulamalar multidimensional modeli populer hale getirmiştir.Multidimensional modelde temel veri yapısı array (dizin)’dir.Genelliklede data iki boyutlu arrayler (matrix) halinde durur.Temel gaye analiz için gerekli veriye hızlı ve kolay bir şekilde erişmektir.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqFfGRpxk3bz5T7Hm9JcAEBrL-kK2SDiziJonUoherwKAL1dL58W55Vw-a9h6PAxNS-RvqknYT2YJSZxED2zgft754Fy_YIpZteN9uWSUgB0WFtNJQP_-hwicOy6k740bCrAQJThkIKgwG/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;233&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqFfGRpxk3bz5T7Hm9JcAEBrL-kK2SDiziJonUoherwKAL1dL58W55Vw-a9h6PAxNS-RvqknYT2YJSZxED2zgft754Fy_YIpZteN9uWSUgB0WFtNJQP_-hwicOy6k740bCrAQJThkIKgwG/s320/4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Multidimensional modelde iki boyut’dan daha fazla boyut’da olabilir.Bu modelde veri sorgulanmak için pek çok kolaylık sunmasına rağmen , verinin kaydı oldukça zordur.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Relational (İlişkisel)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Relational model (ilişkisel model) 1970’lerin başında E. F. Codd tarafından önerilmiştir.İlişkisel data modeli ticari veri tabanı yönetim sistemlerinin temel taşı durumundadır.Bu modelde veriler tablolar halinde durur.Her tablo kolonlar ve satırlardan oluşur.Kolonlar tablonun tanımlanması sırasında belirlenirler , satırlar ise tablo içersine girişi yapılan verileri belirtir.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPYhhY_6QUMrYGICKP_HcgDR4HOcaVHxk4ig4HJOUMNDIYyADqA5fuGt0KU44rccHVmW80aETm5L8ZD9P1ZkB8twdjL_2OTxzdsim1JSSe0a17xQYTBk3ykuTNKzOqUIH-WguWM1rzp0Yq/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPYhhY_6QUMrYGICKP_HcgDR4HOcaVHxk4ig4HJOUMNDIYyADqA5fuGt0KU44rccHVmW80aETm5L8ZD9P1ZkB8twdjL_2OTxzdsim1JSSe0a17xQYTBk3ykuTNKzOqUIH-WguWM1rzp0Yq/s1600/5.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
İlişkisel model bundan sonra da  bu yazı da üzerinde durulacak modeldir.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;VERİ TABANI DİZAYNI &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Bir veri tabanının inşası sırasında en önemli adım veri modelinin hazırlanmasıdır.Gerekli veri tabanı yönetim sisteminin seçilmesi , kurulması , fiziksel kaynaların atanması gibi işlemler işin en kolay yanıdır.Çok para verip Oracle veri tabanı yönetim sistemi almanız mükemmel bir veri tabanına sahip olduğunuz anlamına gelmez. Veri tabanınızda verilerin nasıl duracağını , veriler arasındaki ilişkileri , özeliklleri vs. belirlemek oldukça kapsamlı bir iştir.Veri tabanının oluşturulması için gerekli adımları sıralıyacak olursak :&lt;br /&gt;
&lt;br /&gt;
1. İhtiyaç Analizi &lt;br /&gt;
2. Kavramsal modelinin hazırlanması &lt;br /&gt;
3. Mantıksal modelin hazırlanması &lt;br /&gt;
4. Fiziksel modelin hazırlanması &lt;br /&gt;
5. Modelin uyarlanması&lt;br /&gt;
&lt;br /&gt;
şeklinde sayabiliriz.&lt;br /&gt;
&lt;br /&gt;
Bu yazının konusu kavramsal ve mantıksal modelin hazırlanmasıdır.Diğer konulara sadece bilgi vermek açısından , kısaca değinilecektir.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;İhtiyaç Analizi &lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; İş ihtiyaçlarının belirlenmesi ve neyin hazırlanacağının belirlenmesidir diyebiliriz.Tüm gereksinimler iyice anlaşılmadan ve üzerinde iyice tartışılmadan hazırlanan bir veri tabanı , eğer çok basit değilse mutlaka pek çok eksik içerecektir.&lt;br /&gt;
&lt;br /&gt;
İhtiyaçların sağlıklı bir şekilde ortaya dökülmesi için kabaca şu adımlardan geçilir:&lt;br /&gt;
&lt;br /&gt;
1. Gerekli kaynaklardan bilginin toplanması&lt;br /&gt;
2. İstenen sistemin uygun bir modelleme tekniği ile modellenmesi&lt;br /&gt;
3. Model üzerinde tarafların uzlaşma sağlanması &lt;br /&gt;
&lt;br /&gt;
İyi hazırlanmış bir model  ile tam olarak ne yapıldığını ve ne yapılmak istendiğini gösterebilir ve anlayabilirsiniz. İhtiyaç analizi sayesinde sistemde oluşacak tüm fonksiyonları, sistemde yer alan nesneleri ve ilişkilerini görebilirsiniz.&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;KAVRAMSAL MODELİN HAZIRLANMASI&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Kavramsal model aslında nesne-ilişki gösteriminin  (entity-relationship diagram ) hazırlanmasıdır diyebiliriz.Bu model genel database modelinden bağımsızdır.Örneğin bu modelde primary key , foreign key , index gibi şeyler bulunmaz.Ve ilerde bahsedilecek olan normalizasyon henüz bu modelde yapılmamıştır. Bu noktada bazı terimleri vermek yerinde olucaktır.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nesne (Entity)&lt;/b&gt; : Var olan ve birbirinden ayrılabilen herşeye nesne denir.Örneğin ağaç , kuş , uçak , müşteri , çalışan vs. Nesne genel bir kavram olup aslında bir kümeyi belirler.Örneğin Uçak bir nesne tanımı THY’nin 1001 nolu Boeign tipi yolcu uçağı ise o kümenin içindeki bir üyedir (instance) .&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nitelik (Attribute)&lt;/b&gt;  : Var olan her nesne diğerinden nitelikleriyle ayrılabilir.Örneğin bir müşteri nesnesini ele alıcak olursak adı , müşteri numarası gibi bilgiler nesnenin niteliklerini oluşturur.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Anahtar (Key)&lt;/b&gt; : Anahtar bir nesne içinde bir üyeyi diğerinden ayırmaya yarayan bir ya da birden fazla niteliğin adlandırılmasıdır.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;İlişki (Relation)&lt;/b&gt; : İlişki bir nesne ile diğeri arasındaki bağlantının , etkileşim ya da ortaklığın tanımlanmasıdır.Örneğin “personeller belli departmanlara bağlı olarak çalışırlar” kuralı personel nesnesi ile departman nesnesi arasında bir ilişkidir.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nesne-ilişki diyagramı (Entity Relationship diagram)&lt;/b&gt; : Kısaca nesneler ve ilişkilerini gösteren grafiksel bir sunum şeklidir.Kısaca ERD diye de anılır.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Nesne ve Niteliklerinin Tanımlanması&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Kavramsal modelin hazırlanmasının ilk aşaması nesnelerin tanımlanmasıdır.Nesne bir kişi , yer , düşünce , aktivite veya işi ilgilendiren olaylar olabilir.Nesneler tanımlanırken önceden hazırlanan sistem modelinden , görüşmelerden veya  raporlardan yararlanılabilir.Nesneler elde edildikten sonra nitelikleri tanımlanır.Bir nitelik şu değerleri alabilir &lt;br /&gt;
&lt;br /&gt;
-Serbest bir değer &lt;br /&gt;
-Null değer (hiçbirşey) &lt;br /&gt;
-Bir değer gurubu  içinden bir değer &lt;br /&gt;
-Türetilmiş değer &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Null değerin iki anlamı vardır.Ya o nesne örneği için alacağı değer bilinmiyordur ya da o örnek o nitelik için herhangi bir değere sahip değildir.Örneğin müşteri bilgilerinde tutulan kızlık soyadı erkek müşteriler için hiçbir anlam ifade etmez , yoktur.Erken müşteriler için bu nitelik NULL değerini alır.&lt;br /&gt;
Bazen tanımlanan iş kuralları ya da doğal kurallar sonucu nitelikler belli bir değer gurubu içinde kalmak durumunda kalırlar.Örneğin cinsiyet niteliği sadece erkek ya da kadın olarak seçilebilir ya da il kodu türkiye için sadece 1 ile 81 arasındaki tamsayılar olabilir gibi.Bu gibi doğal ya da sanal değer gurupları belli bir &lt;b&gt;nitelik alanı (attribute domain)&lt;/b&gt; oluştururlar.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Türetilmiş değer diğer niteliklerin işlenmesiyle oluşan bir değerdir.( ortalama değer ya da toplam gibi.)&lt;br /&gt;
Kavramsal modelde bu noktadan sonraki adım anahtarların belirlenmesi olucaktır.&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Anahtarların Belirlenmesi  &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Anahtar bir nesne içinde üyelerin diğerinden ayrılmasını ve o üyenin tanımlanması sağlayan nitelik ya da niteliklerdir.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Elimizde bir müşteri nesnesi olduğunu düşünelim ve isim , telefon numarası , adres niteliklerine sahip olduğunu varsayalım.Eğer her müşteri ayrı bir telefon numarasına sahipse telefon numarası key olabilir ya da her müşterinin adı diğerinden değişikse müşteri adı da anahtar olabilir.&lt;br /&gt;
&lt;br /&gt;
Mantıksal düzeyde sadece potensiyel ana anahtarların (primary key ) belirlenmesi yeterlidir.Bunlar &lt;b&gt;aday anahtar (candidate keys)&lt;/b&gt; olarak adlandırılırlar.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Belirlenen aday anahtarları oluşturan nitelikler mutlaka bir değer taşımak zorundadır.Başka bir deyişle NULL değer alamazlar.Bunun dışında aday anahtarlar nesne üyeleri arasında her üye için farklı bir değer almak zorunda , yani bir anahtar yalnız bir üyeyi tanımlamaladır.Örneğin aynı telefona sahip iki müşteri varsa telefon numarası bir anahtar olarak tanımlanamaz .&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bazen bir nitelik ile bir anahtar elde edilemeyen durumlarda birden fazla nitelik bir araya gelerek bir anahtar da oluşturabilir.Buna &lt;b&gt;bileşik anahtar (composite key) &lt;/b&gt;denir.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Bazen hiçbir niteliğin üyeleri ayırdetmeye yaramadığı durumlarda &lt;b&gt;yapay anahtar (artifical key)&lt;/b&gt; ‘e ihtiyaç duyabilirsiniz.Örneğin örneğini verdiğimiz müşteri nesnesi için müşteri numarası diye yapay bir nitelik oluşturup anahtar olarak tanımlayabilirsiniz.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Nesne ve Niteliklerin Gösterimi&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Nesne ve niteliklerin grafiksel gösterimi bu aşamadan itibaren dizayn çalışmalarında oldukça yardımcı olucağından diyagram oluşturmaya başlamakta büyük fayda vardır.Aşağıdaki şekilde üç nesnenin yer aldığı bir diyagram gösterilmiştir.Altı çizili nitelikler anahtar alanlardır.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizjy5FyBkicY6GqE9AItyBZGOAMHabnlAbr00W_7ImJVubs9ozRfsEeJ4LqVnHaeRhu0orWctALMx83jpvoaQghBnOp0z8b8hyIC617DmGydm7zkspGvOGja2xuScRhEjAr98UjMpquiSC/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizjy5FyBkicY6GqE9AItyBZGOAMHabnlAbr00W_7ImJVubs9ozRfsEeJ4LqVnHaeRhu0orWctALMx83jpvoaQghBnOp0z8b8hyIC617DmGydm7zkspGvOGja2xuScRhEjAr98UjMpquiSC/s1600/6.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;İş Kurallarının Gösterilmesi&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Veri tabanları aslında  sadece verinin saklanması değil aynı zamanda bir takım iş kurallarının saklanması ve uygulanması görevini de sürdürürler.Bu yüzden veri modeli çıkartılırken bir takım iş kuralları da modelde yer alır.&lt;br /&gt;
İş kuralları kavramsal modelde çeşitli şekillerde yer alırlar.&lt;br /&gt;
Nitelikler üstünde nitelik aralıkları  (ranges) bir niteliğin alabileceği değer alanını belirler . Yine nitelikler üzerinde  kısıtlamalar (constraints ) yani diğer bir niteliğe göre durumunu tanılayabilirsiniz.Bitiş tarihinin , başlangıç tarihinden büyük olması gibi.&lt;br /&gt;
Derlenmiş veriler (Derived Dat) üzerinde zaten doğal olarak bir takım iş kuralları yer almaktadır.Derlenmiş veriler diğer niteliklerin verilerinin işlenmesiyle oluşur.Örneğin toplam yada ortalama değerler gibi.&lt;br /&gt;
İlişkiler (Relationships) de iş kurallarının modele yansıtılmasının bir diğer yoludur.İlişkiler adı üzerinde nesneler arasındaki ilişkileri tanımlar.Bu sayede örneğin kitap nesnesinde tanımlanmamış bir kitabın , kitap satış listesinde yer almaması gibi bir kuralı tanımlayabilirsiniz.Bundan sonraki bölüm bu konu üzerinde duracaktır.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Nesneler Arası İlişkiler (Relationships between entities)&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
İlişkişkiler bize nesnelerin diğerleriyle nasıl çalıştığını gösterir.Nesneler arasında çok çeşitli ilişki tipleri olarbilir.Anlamak için  örneklendirecek olursak:&lt;br /&gt;
&lt;br /&gt;
• &lt;b&gt;Bağımlılık(Dependence) &lt;/b&gt;Bir nesnenin varolması bir diğerinin varolmasına bağlıdır ve kendi başına tam bir anlam ifade etmez.Örneğin müşteri telefonu nesnesi müşteri tanımlanmamışsa bir anlam ifade etmez.&lt;br /&gt;
•&lt;b&gt; Düzenleme(Composition) &lt;/b&gt;Bir nesne diğerini düzenler.Örneğin araç nesnesi şasi , motor  ,gövde nesneleri ile düzenlenir.&lt;br /&gt;
• &lt;b&gt;Ürün(Production) &lt;/b&gt;Bir nesne diğerini üretir yaratır yada üretir.Örneğin kitap nesnesinin olabilmesi için onu üretecek bir yazar nesnesine ihtiyaç vardır.&lt;br /&gt;
• &lt;b&gt;Üyelik(Membership) &lt;/b&gt;Bir nesne kendinden daha büyük bir sınıfın üyesidir.Örneğin çalışan nesnesi departman nesnesinin bir üyesidir.&lt;br /&gt;
• &lt;b&gt;Kullanma(Use) &lt;/b&gt;Bazen bir nesne diğer bir nesne yi kullanır yada onun özelliklerine ihtiyaç duyar.Örneğin proje nesnesi , çalışan nesnesini kullanır.&lt;br /&gt;
&lt;br /&gt;
Peki ilişkilerin mantıksal model içindeki özellikleri nelerdir.Bunu tanımlamak için bir örnek üzerinden gidelim.Örneğin personel  ve departman nesnelerini ele alalım.Bu iki nesne arasındaki ilişki “personel bir departmana bağlı olarak çalışır “ şeklindedir.Bu ilişkinin özelliğini belirlemek için iki soru gereklidir :&lt;br /&gt;
&lt;br /&gt;
“Bir departmanın kaç çalışanı olabilir ? “&lt;br /&gt;
“Bir personel kaç departmanda çalışabilir ?”&lt;br /&gt;
&lt;br /&gt;
• Eğer her iki soruya da bir cevabı verilmişse bu birebir (1-1) bir ilişkiyi tanımlar.Örneğin bir departmanın bir personeli olabilir ve bir çalışan bir deparmanda çalışabilir&lt;br /&gt;
• Eğer iki sorundan birine bir diğerine birden fazla bir değer söylenmişse bu bire –çoklu ilişkiyi gösterir (1-m).Örneğin bir departmanda birden fazla personel çalışır fakat bir personel  yalnız bir departmanda çalışabilir.&lt;br /&gt;
• Eğer her iki soruyada birden büyük bir değerle cevap verilmişse bu çoklu-çoklu (m-m) ilişkiyi gösterir.Örneğin bir departmanda birden fazla personel çalışabilir ve bir personel birden fazla departmanda çalışabilir durumu&lt;br /&gt;
&lt;br /&gt;
İlişkinin iki tarafına bakıcak olursak her bir nesne için ilişki sadece iki durum alabilir.Birli ya da çoklu .İlişki tanımlanırken , tüm seçenekler sadece yukardaki kadar değildir.Örneğin bir personel departmana bağlı olarak ya da bağımsız olarak çalışabilir gibi bir durum da söz konusu olabilir.İlişkinin nesne açısından birli yada çoklu olmasına göre seçenekleri de şöyle sıralayabiliriz.&lt;br /&gt;
&lt;br /&gt;
• Kesinlikle bir (Exactly one) Birli ilişkide ilişkinin mutlaka kurulması durumudur.(personel kesinlikle bir departmana bağlı olmalıdır)&lt;br /&gt;
• En çok bir (At most one) Birli ilişkide mutlaka bir bağımlılık aranmaması durumudur.(Bir personel bir departmana bağlı yada bağımsız olarak çalışabilir) &lt;br /&gt;
• En az bir (At least one) Çoklu ilişkide mutlaka bir ilişki kurulması durumudur.(Bir departman kurulması için mutlaka en az bir personel gereklidir.)&lt;br /&gt;
• Herhangi bir sayıda (Any Number) Çoklu ilişkide mutlaka ilişkinin aranmaması durumudur.(Bir departman kurulması için mutlaka yer alıcak eleman gerekmez) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
İlişki türleri ve seçeneklerini açıkladığımıza göre bunların nesne ilişki diyagramında (ERD) nasıl gösterildiğine geçebiliriz.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmBPQC-8_R4DHj6knXfztzplzrmTYXZ_QiuKTlsyFoE_UQYy8H4wPf8iID4BBUsiBqp82inBnAXtlr8jI_FArtp0P8HhbWeyE3jFxInMcJv3iLykeXUPkTbdJQ-EMDRUWJ832mzPWyqM1v/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmBPQC-8_R4DHj6knXfztzplzrmTYXZ_QiuKTlsyFoE_UQYy8H4wPf8iID4BBUsiBqp82inBnAXtlr8jI_FArtp0P8HhbWeyE3jFxInMcJv3iLykeXUPkTbdJQ-EMDRUWJ832mzPWyqM1v/s1600/7.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Bu noktada kullanacağınız araç ve modelleme tipine göre modelleme elemanları arasında küçük farklılıklar olabileceğini belirtmeliyiz. Yukarıdaki listede seçeneklerle beraber ilişkilerin gösterimi yer almaktadır.Konuyu ele alırken kullandığımız örnek ise aşağıdaki gibi gösterilir.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSl7Qq8xfMGRKsD_PXgSPaqAUsJQ9w2vDWtPXYFD6KVGo9NKcM78ViTK3mYs0v2cXLP8Cm9WEjgNZC2_y1kwu4JQ96xCtorP_gbQaSInr5DYwex3hTVmDnEGP8w27EAmL9JrjWl1v1DHUo/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSl7Qq8xfMGRKsD_PXgSPaqAUsJQ9w2vDWtPXYFD6KVGo9NKcM78ViTK3mYs0v2cXLP8Cm9WEjgNZC2_y1kwu4JQ96xCtorP_gbQaSInr5DYwex3hTVmDnEGP8w27EAmL9JrjWl1v1DHUo/s1600/8.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Örneği okuyacak olursak diyagramdan “Personel en çok bir departmanda çalışabilir ve departmanların birden fazla çalışanı olabilir” ve “Personeller departman bağlı olarak çalışmak zorundadır.Departmanlar ise mutlaka bir personele sahip olmak zorunda değildir” anlamları çıkar.&lt;br /&gt;
Yukarda verilen basit ilişki örneğinin yanı sıra daha karmaşık ilişki örnekleri de bulunmaktadır.Bunları şöyle sınıflandırabiliriz:&lt;br /&gt;
&lt;br /&gt;
• Yinelemeli ilişkiler (Recursive relationships)&lt;br /&gt;
• Supertip-Alttip ilişkileri (Supertype-subtype relationships)&lt;br /&gt;
• Bağımlılık ilişkileri (Dependent relationships)&lt;br /&gt;
• Kompleks ilişkiler (complex relationships)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Yinelemeli ilişkiler&lt;/b&gt; bir nesnenin kendiyle olan ilişkisidir.Örneğin personel’ler aynı zaman da bir yöneticiye bağlı olarak çalışmaktadır.Fakat yönetici kendisi de bir personeldir.Bu ilişki şu şekilde gösterebilir:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2TgKpdHFWZ_T0so41YG8zvMMHg_JDT-U8JeRJLMg4i2mS61zP96hHfgaYDoqeudFRp6PLU-gsCvBk-zgoY5NNVVyjKqYjSgM7SYKGKKUrEF_OhXISiWy7t0We0WtFlTLcub9sT79XJzf2/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2TgKpdHFWZ_T0so41YG8zvMMHg_JDT-U8JeRJLMg4i2mS61zP96hHfgaYDoqeudFRp6PLU-gsCvBk-zgoY5NNVVyjKqYjSgM7SYKGKKUrEF_OhXISiWy7t0We0WtFlTLcub9sT79XJzf2/s1600/9.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Şekilde “personel bir başka personele bağlı olabilir (opsiyonel) ve bir personele bağlı birden fazla personel olabilir (opsiyonel NULL dahil) “ ilişkisi gösterilmiştir.&lt;br /&gt;
Daha iyi anlaşılması açısından bir örnek daha verebiliriz.Vatandaş nesnesinde evlilik ilişkisini ele alalım.Bu ilişki her iki taraf açısından da opsiyonel (en çok bir ) durumdur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3JR1dfiYJMCMjbPXms3M7PSMOqtmUxwEmIOCtDqcKC76pKwxVPILi4XIs4Z5jscAautYpSTl941H_4ldu98_Fa3McBf7LV8YuLpA5y8mlkqnR_LttLdbCZQnb_yI6tP6yU8-Rnq4XHNkL/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3JR1dfiYJMCMjbPXms3M7PSMOqtmUxwEmIOCtDqcKC76pKwxVPILi4XIs4Z5jscAautYpSTl941H_4ldu98_Fa3McBf7LV8YuLpA5y8mlkqnR_LttLdbCZQnb_yI6tP6yU8-Rnq4XHNkL/s1600/10.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Nesne ilişki diyagramında kolaylık ve gösterim açısından bazen bir nesnenin eşini (synonym)  yaratarak da kullanabilirsiniz.İstenirse yinelemeli ilişkiler de aynı şekilde çalışılarak daha rahat gösterilebilir.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIkpe_cV5KeMGKE4Y8DcFv4LF_cNgPN4e5asKxr1gBdSFL1bMdh82_9frx40c_L27a7gCUPi-wdVEeBh2K63VfTtsojFUZD6y7-lhkuVHwktk0gp9BcqoOa-qNcohcxt-w9g3_CPdEMYOv/s1600/11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIkpe_cV5KeMGKE4Y8DcFv4LF_cNgPN4e5asKxr1gBdSFL1bMdh82_9frx40c_L27a7gCUPi-wdVEeBh2K63VfTtsojFUZD6y7-lhkuVHwktk0gp9BcqoOa-qNcohcxt-w9g3_CPdEMYOv/s1600/11.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Supertip-Alttip İlişkileri (yada miras (inheritance) ilişkileri )&lt;/b&gt; bir nesnenin bağlı olduğu nesnenin alt gurubu olması ya da ondan türemesi örneğinde geçerlidir.&lt;br /&gt;
Örneğin satış personeli , personel nesnesinin bir alt gurubunu oluşturur.Genel olarak personel niteliklerine sahip ve onun bir alt kolu olmasına rağmen bazı kendine özgü nitelikleri de vardır.(Satış tutarı gibi) &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFK4WeOZsoSePS_70c1llLplpSkHItQKorSdP1WLCxUFeWA35xPZoDjt-RYhGPF9C6w3CCwbALNpacWPD6zQ-VfJaIFpftxoQq3V1WWQYirudj0zT5Sbvblis423iaA0-I305UDykl0skN/s1600/12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFK4WeOZsoSePS_70c1llLplpSkHItQKorSdP1WLCxUFeWA35xPZoDjt-RYhGPF9C6w3CCwbALNpacWPD6zQ-VfJaIFpftxoQq3V1WWQYirudj0zT5Sbvblis423iaA0-I305UDykl0skN/s1600/12.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miras ilişkisinin gösterimi yukarıda örneklenmiştir.Yukarıdaki örnek “satış personeli de bir çeşit personeldir “ şeklinde okunabilir. (Bu yüzden supertype –subtype olarak adlandırılmıştır.)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miras ilişkisi aslında bire bir ilişkidir.Miras ilişkisi tanımlanırken çocuk nesne , ana nesnenin tüm özelliklerini ya da tanımlayıcı niteliğini miras alabilir.Burada ipucu olarak belirtmek gerekirse supertip’ten bağımsız bir alttip yaratmak istiyorsanız tüm nitelikleri miras almanız , eğer bir bağımlık yaratmak istiyorsanız sadece tanımlayıcı (anahtar) niteliği referans almanız gerekir.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu ilişki türünde birden fazla alttip yaratılabilir.Supertip’in üyelerinin eğer sadece bir alt tip de yer alması isteniyorsa ortaklığa kapalı (mutually exclusive) alttipler yaratılabilir.Bunu diagramdaki küçük çarpı işaretiyle gösterebilirsiniz.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqRX5ouly4Inm-n4MNP1xAlTGtn0fRUcBZs-yDX3Af5ejbA262KnaMRmKbChGrsMb1Yao8yxT1yWsuWouc8z_OiGtALyVWJMQ4UsR_lCRwh14wqD7CyP0SodrUdT_ocgdINSW2QOn7qE-r/s1600/13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqRX5ouly4Inm-n4MNP1xAlTGtn0fRUcBZs-yDX3Af5ejbA262KnaMRmKbChGrsMb1Yao8yxT1yWsuWouc8z_OiGtALyVWJMQ4UsR_lCRwh14wqD7CyP0SodrUdT_ocgdINSW2QOn7qE-r/s1600/13.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Bağımlılık İlişkileri&lt;/b&gt; bir nesnenin diğerine bağımlı olarak yaratıldığı bir ilişki türüdür.Ana nesne aynı zamanda alt nesneyi de kısmen tanımlar.Ebeveyn olmadan çocuk tek başına var olamaz.Örneğin müşteri hesabı ve müşteri nesnelerini ele alalım.Bir müşteri hesabının müşteri olmadan olması imkansızdır.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUZizJlhECS7_sAYccXOlLBAZZQ6TOUqdlIv9slMkosbYiOX12ssv6ZVy3XhDwJtV3JhvBeI7pk8RMx_3pEMH6dkzr3e6zyntCCHjdfRs0WbFLj2439dKQ28liugYlOvygUxkh7PfcOe63/s1600/14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUZizJlhECS7_sAYccXOlLBAZZQ6TOUqdlIv9slMkosbYiOX12ssv6ZVy3XhDwJtV3JhvBeI7pk8RMx_3pEMH6dkzr3e6zyntCCHjdfRs0WbFLj2439dKQ28liugYlOvygUxkh7PfcOe63/s1600/14.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Kompleks ilişkiler&lt;/b&gt; üç ya da daha fazla nesne arasında olan ilişkilerdir.Ve her ilişki çokludur.&lt;br /&gt;
Bir şirket düşünelim.Bu şirketin çalışanları çeşitli rollere sahip olsunlar .Fakat her role sahip olabilmek için de rolle ilişkili kurslara katılmak gereksin.Aynı zamanda bir rol için de birden fazla kurs gerekebilsin.Bu durumun gösterimi şu şekilde olacaktır.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPO_u8OAuLwl38dp5Gd8VkcdKyy9-Nbj0cPkeoBgHKorks5e4xurQUMFs-e7rfCdpfGLnfzPaey9_7FXnvQym2Lu-d715c1lfUw9z2-O984IE1roF2yOfa8lz2gKMKuV_WoVf39zwXCx7X/s1600/15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;183&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPO_u8OAuLwl38dp5Gd8VkcdKyy9-Nbj0cPkeoBgHKorks5e4xurQUMFs-e7rfCdpfGLnfzPaey9_7FXnvQym2Lu-d715c1lfUw9z2-O984IE1roF2yOfa8lz2gKMKuV_WoVf39zwXCx7X/s320/15.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fakat bu gösterim bazı hatalara yol açabilir.Örneğin personel ile kurs arasındaki tek ilişki personelin kurslara katılması değildir.Aynı zamanda kursunda verilmesi için personele de ihtiyacı vardır.&lt;br /&gt;
Bu durumda kursu veren mühendis ile , kurs almaya gelen mühendis birbirinden ayrılamaz.Bu durumu çözmek için ara bir nesne yaratılır.(Bir rol için kurs alan personel).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0rOJhFugu3yD3wQXBCosUEBQF-hlQhL7XfBab14aosikCCqfPFdgL2Nn4-XzH3zknUA8LRp7vEUh9UbDDPoCG6XDH3D4KHu2z5w33Rc_Foh2QbqpbQJWnCDbR3PrzcCH71qzpFsQRheMx/s1600/17.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUBwDFRPUbsnFIIN2lOdeAU9xX3l1dhyN6zDVTDblhEzBh-8ELhWI7lUbYJ2NmQg7bA1koTrZQkuTkfOjw5uJ_rjx5Dkj1Mi2ijMFyQ4SEF0Y7HOBuZ3Vcf0y1NVVMHm4KEtItCFUwEsfK/s1600/16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUBwDFRPUbsnFIIN2lOdeAU9xX3l1dhyN6zDVTDblhEzBh-8ELhWI7lUbYJ2NmQg7bA1koTrZQkuTkfOjw5uJ_rjx5Dkj1Mi2ijMFyQ4SEF0Y7HOBuZ3Vcf0y1NVVMHm4KEtItCFUwEsfK/s1600/16.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Kompleks ilişkiler için bir başka gösterim şekli de ilişkinin üzerinde nitelik tanımlamaktır.Başka bir deyişle iki nesne arasındaki ilişki nitelikle belirlenir.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0rOJhFugu3yD3wQXBCosUEBQF-hlQhL7XfBab14aosikCCqfPFdgL2Nn4-XzH3zknUA8LRp7vEUh9UbDDPoCG6XDH3D4KHu2z5w33Rc_Foh2QbqpbQJWnCDbR3PrzcCH71qzpFsQRheMx/s1600/17.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0rOJhFugu3yD3wQXBCosUEBQF-hlQhL7XfBab14aosikCCqfPFdgL2Nn4-XzH3zknUA8LRp7vEUh9UbDDPoCG6XDH3D4KHu2z5w33Rc_Foh2QbqpbQJWnCDbR3PrzcCH71qzpFsQRheMx/s320/17.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Fakat bu method pekçok modelleme aracı tarafından desteklenmez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Kavramsal Modelin Tamamlanması &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Kavramsal modelin tamamlanması için modelin standard kontrolü ve gerçeğe uygunluğunun tescili gereklidir.Modelin gerçeğe uygunluğu sistem kabulü için tarafların bir araya gelimesi ve model üzerinde anlaşılması ile olur.&lt;br /&gt;
Fakat bu adımdan önce modelin doğruluğunun sınanması ve standarda uygunluğunun kontrol edilmesi gerekir.Kavramsal modelin kurallara uygunluğu şu şekilde sınanabilir.&lt;br /&gt;
&lt;br /&gt;
• İki nesne arasında birden fazla ilişki tanımlanmamış olmalıdır&lt;br /&gt;
• Dairesel bağımlılıklar ve iki nesne arasında aynı bağımlılıklar olmamalıdır&lt;br /&gt;
• Dengelenmiş 1:1 ilişkiler kaldırılmış olmalıdır&lt;br /&gt;
• Hiçbir nesne bir diğer nesnenin aday anahtarını içermemelidir&lt;br /&gt;
• Yinelemeli ilişki içeren bir nesnenin başka bir nesneyle mutlaka ilişkisi olmalıdır&lt;br /&gt;
&lt;br /&gt;
Bu kontrollerden  sonra modelde direk olmayan ilişkiler ve bileşik nitelikler olup olmadığına dikkat edilmeli ve bu durumlardan kaçınılmalıdır.Kontrollere biraz açıklık getirmek ve örneklemek yerinde olucaktır.&lt;br /&gt;
&lt;br /&gt;
Öncelikle aynı iki nesne arasında birden fazla ilişkinin bulunması kavramsal modelin esaslarıyla bağdaşmaz.Eğer kavramsal model doğru şekilde hazırlandıysa fazla ilişkiler olmamalıdır.Eğer böyle bir gereksinim varsa , tanımlanması unutulmuş nesne ( yada alttip) var olabilir.Bu durum kontrol edilip düzeltilmelidir.&lt;br /&gt;
&lt;br /&gt;
İkinci kural olarak iki nesne arasında aynı bağımlılık olamaz.Bir nesne eğer var olmak için diğerinin üyesine ihtiyaç duyuyorsa , diğer nesne de varolmak için öbürüne ihtiyaç duyamaz.Örneğin bir departmanın kurulması için illa bir personele ve bir personelin alınması için illa bir departmana ihtiyaç duyulamaz.Çünkü açıkça bu durumda her ikisi de olamaz.&lt;br /&gt;
&lt;br /&gt;
Benzer bir şekilde ikiden fazla nesne arasında da dairesel bağımlılık yaratılmamalıdır.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy1veduRbrgeHkmdbCKizuMLm3WktZxy2cterpub6xajXWlz0oqc4AqCbW5SKae9MOHWNq5YS8V12aFtAzNx5myXUcWZ1WVFlx7g40gBVgBZyF7mTfvv_uw6vzX0UCvUL_icbBkAh86QiL/s1600/18.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy1veduRbrgeHkmdbCKizuMLm3WktZxy2cterpub6xajXWlz0oqc4AqCbW5SKae9MOHWNq5YS8V12aFtAzNx5myXUcWZ1WVFlx7g40gBVgBZyF7mTfvv_uw6vzX0UCvUL_icbBkAh86QiL/s1600/18.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yukarıdaki örnekte olduğu gibi bir ilişki aynı şekilde hiçbir nesnenin olamaması sonucunu doğurur.Yukarıdaki daire de en az bir nesne bağımlı olmamalıdır ki diğer nesneler de var olabilsin.&lt;br /&gt;
&lt;br /&gt;
Dengelenmiş 1:1 ilişkiden kasıt 1:1 ilişkilerde her iki nesne içinde ilişkinin aynı şeçenekle yaratılmış olmasıdır.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxL7kKzbcemThWhrarFZZeKl_x5_5ZiqphTDJ2fJWfi4-TRkP9KUGX7PsBlLkheEwM19M06FuaJY6vqT-9XK6kHEREXhmmnM3nPT1GIPyGNDwg2iSdJ0BbiI82qbTEePGekS3MULflslJl/s1600/19.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxL7kKzbcemThWhrarFZZeKl_x5_5ZiqphTDJ2fJWfi4-TRkP9KUGX7PsBlLkheEwM19M06FuaJY6vqT-9XK6kHEREXhmmnM3nPT1GIPyGNDwg2iSdJ0BbiI82qbTEePGekS3MULflslJl/s1600/19.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eğer ilişki iki taraf içinde kesinlikle bir şeklinde tanımlanmışsa her iki nesne de var olamaz.Bu durum genellikle bir nesnenin yanlışlıkla iki parçaya ayrılmış olmasından kaynaklanır.(Ya da iş tarifi hatalıdır) &lt;br /&gt;
&lt;br /&gt;
Eğer iki taraf için de en fazla bir durumu var ise bu durum aslında bir nesnenin diğerinin alt tipi olduğunu bir göstergesidir ya da modelde henüz gösterilmemiş bir süper tip vardır ve her iki nesne de birer alttip ‘dir.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nesnelerin diğer nesnelerin aday anahtarlarını içermemeleri konusuna gelince ilişki bağımlılık veya supertip-alttip şeklikde değilse muhtemelen yanlış tanımlanmış nitelikler sözkonusudur.Kavramsal modelde dış anahtar (foreign key) tanımı yoktur.Ve ilişkiler de kavramsaldır.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Direk olmayan ilişkiler ise gereksizdir.Bu tip ilişkiler zaten sağlanmış olan birşeyin tekrarıdır.Örneğin departmanların altında çalışma gurupları ve guruplara bağlı çalışan personellerin olduğunu düşünelim.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLBpUGspeJquiDbwumyspkJqKH4uaOXAzp8BJNhwG50B6v5gbM74hxp27MKZ7xZCkS4Ltw3P7kySHIZNPVpcultVzpOdkAilLXe_BLc7myN2C7RU1bbAiGmFaiCWPaq1dwhbSNblhKVV_M/s1600/20.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLBpUGspeJquiDbwumyspkJqKH4uaOXAzp8BJNhwG50B6v5gbM74hxp27MKZ7xZCkS4Ltw3P7kySHIZNPVpcultVzpOdkAilLXe_BLc7myN2C7RU1bbAiGmFaiCWPaq1dwhbSNblhKVV_M/s1600/20.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu durumda yukarıdaki gösterimde personel ile departman arasındaki ilişki kesinlikle gereksizdir.Bunun yerine aşağıdaki model daha doğrudur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgETE97R3c41keSDE35XepYhWCR2ctB6I3N5ljw59D9-a0jpLJyzAz8nc4afIS8C7LCgpdqTIznjz6Il4t1IM3sN3JabOdUY5Eps0pud2KnPGsyLaVQUpCIHrWRByZNMrSAGGewvIb5H9TW/s1600/21.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgETE97R3c41keSDE35XepYhWCR2ctB6I3N5ljw59D9-a0jpLJyzAz8nc4afIS8C7LCgpdqTIznjz6Il4t1IM3sN3JabOdUY5Eps0pud2KnPGsyLaVQUpCIHrWRByZNMrSAGGewvIb5H9TW/s1600/21.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bileşik niteliklerdense mümkün olduğunca kaçınmak gereklidir.Bileşik nitelikden (composite attributes) kasıt birden fazla niteliğin , tek bir nitelik altında toplanmasıdır.Örneğin adres bilgisi sokak adresi , şehir , posta kodu gibi niteliklerin birleşmesinden oluşsun.Bu durum daha sonra hem kuralların tanımlanması , hemde verinin işlenmesinde çok çeşitli sorunlara yol açıcaktır.Örneğin 5 numerik karakter’den oluşan posta kodunun gerçektende böyle yazılabilmesi için çok fazla efor sarf etmeniz gerekecektir.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tüm bu kontroller ve incelemelerden sonra oluşturulan nitelik alanları (attribute domain) ve nitelik tanımları dikkatlice gözden geçirilmeli , ilerde değişiklik gösterebilecek nitelikler buna uygun olarak tanımlanmalıdır.Örneğin fiyat alanları enflasyon sonucu bir sene sonra yetersiz hale gelmemelidir. &lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;MANTIKSAL MODELİN HAZIRLANMASI&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Mantıksal model , kavramsal modelin fiziksel modele uyarlanmaya hazır hale getirilmiş halidir.Fiziksel model için kavramsal modeldeki nesne kavramları tablolar haline getirilir , tablolara anahtarlar atanır ve bunlar üzerinden ilişkiler yabancı anahlar şekline çevrilir.Normalizasyon adımlarından geçilerek mantıksal model tamamlanır.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Nesnelerin Tablolar Haline Çevrilmesi &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Mantıksal model içinde , kavramsal modelde hazırlanmış olan nesneler artık tablolar halinde düşünülür.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXy9RM2m79_AidxT1yTjNGWvvObPUmXLtPRrUyMT8T4vVQUdoq9y2hgU9zu2tkukU9LPppZfmrIQCVKKpPju5mWcjGY-YQxKxaghqQfvDBL_3OBMGy3-2BcML8qR3POZ5JyUpVP86VALAT/s1600/22.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXy9RM2m79_AidxT1yTjNGWvvObPUmXLtPRrUyMT8T4vVQUdoq9y2hgU9zu2tkukU9LPppZfmrIQCVKKpPju5mWcjGY-YQxKxaghqQfvDBL_3OBMGy3-2BcML8qR3POZ5JyUpVP86VALAT/s1600/22.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yukarıdaki ERD’de yeralan nesnelerin tablolara dönüştürülmüş hali şöyledir.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;YAYINCI &lt;/div&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid navy .75pt; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 175;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;background: none repeat scroll 0% 0% navy; border: 1pt solid navy; color: white; padding: 0cm 5.4pt; width: 77.1pt;&quot; valign=&quot;top&quot; width=&quot;129&quot;&gt;&lt;h4&gt;&lt;span lang=&quot;EN-AU&quot;&gt;Yayinci No&lt;/span&gt;&lt;/h4&gt;&lt;/td&gt;   &lt;td style=&quot;-moz-border-bottom-colors: none; -moz-border-image: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; background: none repeat scroll 0% 0% navy; border-color: navy navy navy -moz-use-text-color; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; color: white; padding: 0cm 5.4pt; width: 106.5pt;&quot; valign=&quot;top&quot; width=&quot;178&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;Adi&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;-moz-border-bottom-colors: none; -moz-border-image: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; background: none repeat scroll 0% 0% navy; border-color: navy navy navy -moz-use-text-color; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; color: white; padding: 0cm 5.4pt; width: 106.5pt;&quot; valign=&quot;top&quot; width=&quot;178&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;Telefonu&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;-moz-border-bottom-colors: none; -moz-border-image: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; background: none repeat scroll 0% 0% navy; border-color: navy navy navy -moz-use-text-color; border-style: solid solid solid none; border-width: 1pt 1pt 1pt medium; color: white; padding: 0cm 5.4pt; width: 133.5pt;&quot; valign=&quot;top&quot; width=&quot;223&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;Adresi&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 77.1pt;&quot; valign=&quot;top&quot; width=&quot;129&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;4680&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 106.5pt;&quot; valign=&quot;top&quot; width=&quot;178&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;Adam   Yayınları&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 106.5pt;&quot; valign=&quot;top&quot; width=&quot;178&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;212-4456824&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 133.5pt;&quot; valign=&quot;top&quot; width=&quot;223&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;Yeniyol   sk 5 Besiktas&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 77.1pt;&quot; valign=&quot;top&quot; width=&quot;129&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;32110&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 106.5pt;&quot; valign=&quot;top&quot; width=&quot;178&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;Can   Yayınları&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 106.5pt;&quot; valign=&quot;top&quot; width=&quot;178&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;216-5534668&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 133.5pt;&quot; valign=&quot;top&quot; width=&quot;223&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-AU&quot; style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt;&quot;&gt;Duru   sk 12/3 Acıbadem&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tablo başlık ve vücut olmak üzere iki kısımdan oluşur.Başlık tablo adı ve kolonlardan , vücut kısmı ise satırlardan oluşur.Bir tablo vücut kısmında aynı iki satır olamaz.Benze şekilde başlık kısmında da aynı iki kolon adı bulunamaz.Bu tablonun herhangi bir satırının , herhangi bir kolonu yalnız bir değer alabilir.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bir nesne bu kurallara uyduğunda ilişkisel modelle de tanışmış sayılır.Satırlar özel bir dizilişte değildirler , bu nedenle de tablo içindeki sıra numarasına göre tanımlanamazlar.Sonuç olarak ana anahtar (primary key) satır üzerinde işlem yapabilmek için tek güvenli yoldur.Ana anahtar tablonun her satırını tanımlayabilen kolon yada kolonlardan oluşur.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;1. Normal Form&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Normalizasyon beş adımda modele uygulanan bir süreçtir.Daha geniş tanımı daha sonraki konularda ele alınacaktır. &lt;br /&gt;
Eğer tablonun her bir satırının , her bir kolonu yani eğer tek bir değer taşıyorsa birinci normal form oluşmuş demektir.Diğer bir deyişle bir hücre iki niteliği bir arada barındırmamalıdır.Yani ad ve telefon gibi iki ayrı nitelik aynı hücrede yer almaz. Bu özellik aynı zamanda atomik olarak adlandırılır.Çünkü daha küçük hücreler yaratılamaz.&lt;br /&gt;
Genellikle üç çeşit nitelik 1. Normal forma geçerken sorun çıkarır:&lt;br /&gt;
1. Bileşik nitelikler (composite attributes) &lt;br /&gt;
Birden fazla alanın birleşmesinden oluşmuş bu tip kolonlar atomik hale çevrilmelidir.Örneğin konteyner numarası niteliği firma numarası ve ürün numarası gibi alanlardan oluşuyorsa bu alanlar ayrılar ayrı kolonlar oluşturulmalıdır.&lt;br /&gt;
2. Çoğul nitelikler (plural attributes)&lt;br /&gt;
Bazen bir nitelik birden fazla değer alabilir.Örneğin telefon numarası niteliği bir müşterinin birden fazla telefonu olabilmesinden dolayı çoğul bir nitelik oluşturur.Bu durumda ya birden fazla kolon yaratılarak (telefon 1 , telefon 2 …) sorun giderilir , ya da telefon numaraları için ayrı bir nesne yaratılarak (müşteriye bağımlı) çözüm üretilir.Bu durumda ikinci bir tablo da oluşturulur.&lt;br /&gt;
3. Kompleks veri tipindeki nitelikler&lt;br /&gt;
Video klip , vektor grafikleri gibi veriler karmaşık veri tiplerindedirler.Bunlar üzerinde atomik olup olmamaları üzerine tartışma yürütülebilir.Örneğin eğer bir video klibin tek tek sahnelerine ihtiyaç duyulmuyorsa klip atomik sayılabilir , aksi halde sahne sahne parçalanarak atomik hale getirilmelidir.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ana Anahtar (Primary Key) Atanması &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Bu aşamada aşağıdaki kriterlere uyan aday anahtarlardan biri ana anahtar olarak seçilir.&lt;br /&gt;
1. Tanımlanabilir bir değere sahip olmalıdır(Null içermemelidir)&lt;br /&gt;
2. Sürekli olmalıdır (Değeri değişmemelidir)&lt;br /&gt;
3. Minimal olmalıdır (Mümkün olduğu kadar az veri içermelidir)&lt;br /&gt;
4. Şifrelenmiş değer içermemelidir &lt;br /&gt;
5. Bütün database kullanıcıları tarafından erişilebilir olmalıdır&lt;br /&gt;
&lt;br /&gt;
Eğer bu kurallara uygun bir anahtar bulunamıyorsa o zaman yapay bir anahtar oluşturulabilir.Bunun dışında eğer bulunan anahtarlar çok büyük veri içeriyorsa yada içerdikleri veri eğer hassas ve gizli tutulması gereken birşeyse o zaman da yapay anahtar oluşturulabilir.&lt;br /&gt;
Bunlar dışında kavramsal model oluşturulurken değinilen anahtar oluşturma kriterleri unutulmamalıdır.En önemli kriter anahtarın tablo boyunca kendini tekrar etmemesidir.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Yabancı Anahtar (Foreign Key) &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ana anahtar nesne üyelerinin , mantıksal modelde tablo satırlarının tanımlanmasında kullanıldığına göre , kavramsal modelde tanımlanan ilişkilerin , mantıksal modelde bu anahtarlar üzerinden tanımlanması gerekir.&lt;br /&gt;
Bir nesnenin diğer bir nesneyle ilişki kurması ancak ana anahtar üzerinden olabileceğinden , tablonun ilişkide bulunduğu diğer tablo yada tabloların anahtarını da içermesi gerekir.Bir tablonun ilişkiyi tanımlamak üzere içerdiği diğer tablo anahtarına yabancı anahtar (foreign key) denir.Yabancı anahtar aynı zamanda tablolar arası ilişki de tanımlar.&lt;br /&gt;
Yabancı anahtarın aldığı değerler mutlaka referans alınan tablo içinde bulunurlar.Aksi taktirde veri tabanı yöneticisi böyle bir veri girişine izin vermez.Bu durumun tek istisnası yabancı anahtar için tanımlanan kolonların NULL değer alabileceğini belirtmektir.Bu durum 1:1 ilşkide en çok bir  ve M:1 ilişkide herhangi bir sayıda seçeneklerinin aktarılmasında kullanılır.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOlace9Eab105bZ69-5t9DghILWLDEpPZpS4GlDy5VQJoGG0RJXLQ4QnqiZ624FW-F3EBUEGN7OWcg7X-zI562SmejHpHy3rG1V-IEt3bBByYxmAvZ35y7FsWHmwTXwKsrqXB4frdW1ggq/s1600/23.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOlace9Eab105bZ69-5t9DghILWLDEpPZpS4GlDy5VQJoGG0RJXLQ4QnqiZ624FW-F3EBUEGN7OWcg7X-zI562SmejHpHy3rG1V-IEt3bBByYxmAvZ35y7FsWHmwTXwKsrqXB4frdW1ggq/s1600/23.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhco55snO2-cgS-hp237XLUY13ENhyphenhyphenLV4jXwfsLuks5PNEV4kPFCCWZEAhuhUDkcAXJRL70iq6UcWd9zd9LGNUw8iTDpaOeyWMudaj6SL3CfdP0fiz6hWePSRutAzzKm0yiAgpP3LEgfm2c/s1600/24.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;97&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhco55snO2-cgS-hp237XLUY13ENhyphenhyphenLV4jXwfsLuks5PNEV4kPFCCWZEAhuhUDkcAXJRL70iq6UcWd9zd9LGNUw8iTDpaOeyWMudaj6SL3CfdP0fiz6hWePSRutAzzKm0yiAgpP3LEgfm2c/s400/24.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yukarıda görüleceği üzere yazar tablosu yayinci tablosunun ana anahtarını kendi kolonları arasına almıştır.Yayinci_no yazar tablosundaki yabancı anahtardır. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Supertip-alttip ilişkisinin mantıksal modele taşınması sırasında yapılacak şey alttip’in süper tip ile aynı ana anahtara sahip olması ve ana anahtarın aynı zamanda yabancı anahtar da olmasıdır.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOnwvC4INCp4QokhlHe3Kiy1ywjmajAjBKknZ6KvS0ikQZ2vlsGgRZo9kjVbFVE5DBKqLk9aIXRwSyW1ZDxeCmRE_BjdHMK3ctWtiEjA185Uaw8l-a2BcAq_fztYyOT4ovmXn-9PpyZfGb/s1600/25.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOnwvC4INCp4QokhlHe3Kiy1ywjmajAjBKknZ6KvS0ikQZ2vlsGgRZo9kjVbFVE5DBKqLk9aIXRwSyW1ZDxeCmRE_BjdHMK3ctWtiEjA185Uaw8l-a2BcAq_fztYyOT4ovmXn-9PpyZfGb/s1600/25.png&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO-1ZFR1oqqhtVcX81UY_eoiTeuJIDXtuSvNFYuUSIheEdTsXmwm7OTtkSzbkPRg4Ax5Xxg3AgsM48CwJpUxtx6M7jNHL-2A_9ckKJpCPtIDACElGnDyZP5-WMaB6_vn-S-oSEVqk8mHWV/s1600/26.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO-1ZFR1oqqhtVcX81UY_eoiTeuJIDXtuSvNFYuUSIheEdTsXmwm7OTtkSzbkPRg4Ax5Xxg3AgsM48CwJpUxtx6M7jNHL-2A_9ckKJpCPtIDACElGnDyZP5-WMaB6_vn-S-oSEVqk8mHWV/s1600/26.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kavramsal modeldeki bağımlılıkların taşınması sırasında ise bağımlı olunan nesnenin ana anahtarının bağımlı nesnenin ana anahtarında yer alması ve bileşik anahtar oluşturulması şeklinde bir yol izlenir.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghC7wiXrV4YYNvYMxQbbqtdMrPRFiX1u1wVwSUbMcj_2WiYQ_wUX9BUemDCQZsz9TEvgIfaaaQHppUlquUkYdQKqC5z8-pUYGTuKwBCn3dyPXYY_w6MgM3mw2MU2Ba5EjFih78dspRv7tz/s1600/27.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghC7wiXrV4YYNvYMxQbbqtdMrPRFiX1u1wVwSUbMcj_2WiYQ_wUX9BUemDCQZsz9TEvgIfaaaQHppUlquUkYdQKqC5z8-pUYGTuKwBCn3dyPXYY_w6MgM3mw2MU2Ba5EjFih78dspRv7tz/s1600/27.png&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo5hcMj8slUC19XYsFIxrl5uvw2S7aHmmYvpHyIY9FdIEIdd_kbGoXzIV3UQsGvKIuXfor7nZHyIcUJmJ3vx8-J5ux94dmVScaLkIzjNL5x1N5Ri_KfRQJc3otYFiYQrbLPTX1YHMf3Sff/s1600/28.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;67&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo5hcMj8slUC19XYsFIxrl5uvw2S7aHmmYvpHyIY9FdIEIdd_kbGoXzIV3UQsGvKIuXfor7nZHyIcUJmJ3vx8-J5ux94dmVScaLkIzjNL5x1N5Ri_KfRQJc3otYFiYQrbLPTX1YHMf3Sff/s320/28.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Çoklu : Çoklu İlişkilerin Taşınması &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Çoklu:Çoklu ilişkiler mantıksal modele olduğu gibi taşınamazlar.Tablonun bir satırında diğer tabloyla ilgili yalnızca bir tane  anahtar bulunabileceğinden bunun çözümü ancak ara tablolar yaratılmasıyla mümkün olur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCKgkKab65OyR2120nR3SNj7A8vZsivWJDIlaNMW0W7s3QLbArD5_pUq7bV1iI6XVqrNJdttuiaOgjEpzB5VBXJyD11TDbFOeCN_WHQiMjRPf2cu7G3e_fo2MA3T91Psb1VxcENoBnhM7U/s1600/29.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCKgkKab65OyR2120nR3SNj7A8vZsivWJDIlaNMW0W7s3QLbArD5_pUq7bV1iI6XVqrNJdttuiaOgjEpzB5VBXJyD11TDbFOeCN_WHQiMjRPf2cu7G3e_fo2MA3T91Psb1VxcENoBnhM7U/s1600/29.png&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9v5f27pQZsZoLBrj20A6NXhmteU6W0uuxfJXADXH_HKiUHC4qKzTBVws0LCKAv2iR7XXFpaYcn9CV3S4y80sswDyzhmg_5u2OSmx08Fj3C-0paY7wMf3NeMEftrvcW4gHGe7fZ8QVmpRP/s1600/30.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9v5f27pQZsZoLBrj20A6NXhmteU6W0uuxfJXADXH_HKiUHC4qKzTBVws0LCKAv2iR7XXFpaYcn9CV3S4y80sswDyzhmg_5u2OSmx08Fj3C-0paY7wMf3NeMEftrvcW4gHGe7fZ8QVmpRP/s320/30.png&quot; width=&quot;124&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Yaratılan ara tabloda her iki tablonunda primary key’I referans alınarak bu sorun çözümlenir.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Diğer İlişki Tipleri &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Kompleks ilişki tipleri daha evvelden kavramsal model içinde çoklu:çoklu ilişkiyi çözmüş olduğundan , ara nesne için yaratılan tabloda referans tabloların anahtarları foreign key ve bileşik ana anahtar olarak tanımlanarak taşınır.&lt;br /&gt;
Yinelemeli ilişkilerin taşınmasında ise tablonun ana anahtarının  başka bir kolon adıyla yaratılarak yabancı anahtar oluşturulması gerekir.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;NORMALİZASYON &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Daha evvelde bahsettiğimiz gibi normalizasyon beş adımdan oluşan bir süreçtir.Bu adımlar aslında kolonların doğru yerde yer alıp almadığını , ek tablolar gerekip gerekmediğini tespit eden , kısaca modeli en efektif hale getirmemizi sağlayan bir yoldur.Adımları kısaca tarif edecek olursak &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1NF&lt;/b&gt; Eğer tablonun her kolonunun , her satırı tek bir tip veri tutuyorsa 1. Normal formdadır.Her hücre atomik olmalıdır.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2NF&lt;/b&gt; Eğer tablonun her kolonu ana anahtara fonksiyonel bağımlıysa ikinci normal formdadır.Örneğin aşağıdaki örneği ikinci normal forma getirebilmek için Resmin tutulacağı ikinci bir tabloya ihtiyaç vardır.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1VThWXZUEKZe8tX9xMw0zbFZGFbTKop6yudjdPvAvMohKBp8dS0qCYtJ8Cm7aGYUePtaaup95BW5-QnFjysTO0vZed4az14E4yhDwxNC6mxbt76v34vTNhFCPRiWGKnS0-mws8w_xXiP/s1600/31.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;157&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW1VThWXZUEKZe8tX9xMw0zbFZGFbTKop6yudjdPvAvMohKBp8dS0qCYtJ8Cm7aGYUePtaaup95BW5-QnFjysTO0vZed4az14E4yhDwxNC6mxbt76v34vTNhFCPRiWGKnS0-mws8w_xXiP/s400/31.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Başka bir örnek de bileşik anahtar dan verilebilir.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRtXld1nJbXbKK7sw083NBliynOYKJFvSvKjkFH7d6RE3R1H5p_96MV5ILTdOFJc_qjr0HuWtFPwaWZmTCWnX5QmsCdh1Dzhi3DGXYygoh2xdeoPg2Gmwni-QVvOqWz89_OSJvp3WbAmCq/s1600/32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;87&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRtXld1nJbXbKK7sw083NBliynOYKJFvSvKjkFH7d6RE3R1H5p_96MV5ILTdOFJc_qjr0HuWtFPwaWZmTCWnX5QmsCdh1Dzhi3DGXYygoh2xdeoPg2Gmwni-QVvOqWz89_OSJvp3WbAmCq/s400/32.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bu tablonun 2NF uyması için yine iki tabloya ayrılması gerekmektedir.Başka bir deyişle bağımlılık ana anahtara göre olmak zorunda olduğundan , tablo buna uygun olarak bölünür.&lt;br /&gt;
2NF’un temel amacı farklı fonksiyonlar için erişilecek veri sayısını en aza indirmektir.Örneğin yukardaki örnekte 2NF ‘a uyulmaması halinde Eyalet adına erişmek için gereksiz pekçok veri okunacakdı.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3NF &lt;/b&gt;üçüncü normal form için tablonun anahtarı ile kolonları arasında geçişli bağımlılık kalmamalıdır.Tüm kolonlar direk olarak anahtara bağlı olmalıdır.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi209kk_1dKKliRoNS6iI74E1cB5Excjlc18p2E5SdvNhOkEgh_BMy9d6omXMO6bhhPpMsqRoiF9VBDPbfi6QGZ_Ux2Cx6yUxl1v6mQ1szllX-5HW9jyETQUt8J4OKdupT6JcCjKS08-mNs/s1600/33.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi209kk_1dKKliRoNS6iI74E1cB5Excjlc18p2E5SdvNhOkEgh_BMy9d6omXMO6bhhPpMsqRoiF9VBDPbfi6QGZ_Ux2Cx6yUxl1v6mQ1szllX-5HW9jyETQUt8J4OKdupT6JcCjKS08-mNs/s1600/33.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi88wouwYiWVMJsLax4Bnp7UQOyW45lH0kImLW75Zw20einYxnS0IKZ2CwPy5zBDLEkLtSJkvIQAiqr4xTr9dzS_5UcuwFmLJbNheY3JrgestWI1ZjbpFUCBDo_wl0v45XJ3k9163i6JUYA/s1600/34.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Örnekte katalog tablonun anahtarı olduğu halde renk aslında ürün koduna bağımlıdır. Katalog ile renk arasında ürün üzerinden geçişli bağımlılık vardır.Bir ürünün rengini bulabilmek burada son derece gereksiz veri  okumaya yol açıcaktır.Bu durumdan kurtulmak için tablo bölünerek 3NF’a uygunluk sağlanır.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi88wouwYiWVMJsLax4Bnp7UQOyW45lH0kImLW75Zw20einYxnS0IKZ2CwPy5zBDLEkLtSJkvIQAiqr4xTr9dzS_5UcuwFmLJbNheY3JrgestWI1ZjbpFUCBDo_wl0v45XJ3k9163i6JUYA/s1600/34.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi88wouwYiWVMJsLax4Bnp7UQOyW45lH0kImLW75Zw20einYxnS0IKZ2CwPy5zBDLEkLtSJkvIQAiqr4xTr9dzS_5UcuwFmLJbNheY3JrgestWI1ZjbpFUCBDo_wl0v45XJ3k9163i6JUYA/s1600/34.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Boyce/Codd Normal Form&lt;/b&gt; 3NF’in içinde bir adım sayılmasına rağmen yukardaki işlemler sonucu henüz model BCNF’e dönüşmüş değildir.3NF içinde aslında tüm geçişli bağımlıklarda kaldırılmasına rağmen , tablo henüz yeterince normalize olmuş değildir.Carlo Zaniolo 3NF’u şu şekilde tanımlar .&lt;br /&gt;
&lt;i&gt;R bir tablo olsun.Bu tablo içinde X bir gurup nitelik ve A da sadece tek bir niteliği temsil etsin.Eğer A’nın X’e fonksiyonel bağımlılığı var ise (X =&amp;gt; A) , R tablosu 3NF’a uymak için aşağıdaki şartlardan en az birine uymalıdır:&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;• X kümesi A’yı kapsamalıdır&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;• X kümesi R’nin en az bir aday anahtarını içermelidir&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;• A tablonun bir aday anahtarı tarafından kapsanmalıdır&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BCNF ile 3NF’in farkı BCNF’in üçüncü maddeye izin vermemesidir.&lt;br /&gt;
Başka bir deyişle birden fazla bileşik aday anahtar içeren tablolarda , eğer aday anahtarların içerdiği ortak bir nitelik var ise , bu iki aday anahtarın niteliklerinden herhangi biri diğer aday anahtarlardan birine fonksiyonel olarak bağımlı olamaz.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKywx30nEr0c5-_lgSm2M2vgY9MPxVsEbXzsDvxgtomps2dJz4yYW935SDeunM3aG5Wz0PzRC-OBfbmD7g9-uZv70pqqNFkD3gx84bxh3zijTyOtsn-UQRYpyM4OjNg5vWcwLHXjbYV1kq/s1600/35.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKywx30nEr0c5-_lgSm2M2vgY9MPxVsEbXzsDvxgtomps2dJz4yYW935SDeunM3aG5Wz0PzRC-OBfbmD7g9-uZv70pqqNFkD3gx84bxh3zijTyOtsn-UQRYpyM4OjNg5vWcwLHXjbYV1kq/s1600/35.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Şekilde A + B bileşik aday anahtar ve B + C bileşik aday anahtar göstermekte A =&amp;gt; C bağımlılığı bulunmaktadır.Bu durum 3NF ‘e uygun olabileceği halde BCNF’e uygun değildir.&lt;br /&gt;
Bunu bir örnekle gösterelim.&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-align: left; text-indent: 0cm;&quot;&gt;KOMİTE&lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid navy .75pt; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 63;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;background: navy; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Komite Adı&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Element&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Atom No &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Yıllık Toplantı&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ticaret&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Altın&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;79&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;6&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Madencilik&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Bakır&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;29&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;2&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Enerji&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Uranyum&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;92&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;4&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Finans&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Altın&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;79&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;5&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Tablonun aday anahtarları şu şekilde olsun :&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIErHpEoXLBuoJkpzwerO6lApfJ39kZ69Inw-MlNeJPmZv0wEzXp7nns5nDl6XInDgEUuX3qv5XHmKKQQU2G9KYIFp9aI9kQc_7E4gCK2jW3z4S5AH00-UryVp6B8RfgcX7dkecx4bbKwr/s1600/36.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIErHpEoXLBuoJkpzwerO6lApfJ39kZ69Inw-MlNeJPmZv0wEzXp7nns5nDl6XInDgEUuX3qv5XHmKKQQU2G9KYIFp9aI9kQc_7E4gCK2jW3z4S5AH00-UryVp6B8RfgcX7dkecx4bbKwr/s1600/36.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Tablo bu haliyle 3NF’a uygundur.Tablo üzerindeki bağımlılıkları şu şekilde listeleyebiliriz:&lt;br /&gt;
&lt;br /&gt;
Element + Komite adı =&amp;gt; Yıllık Toplantı&lt;br /&gt;
&lt;br /&gt;
Atom No + Komite adı =&amp;gt; Yıllık Toplantı&lt;br /&gt;
&lt;br /&gt;
Element &amp;lt;= =&amp;gt; Atom No &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Burada BCNF’e uymayan son bağımlılıktır.Ve  tablo yeterince normalize edilmemiştir.Bunun zararlarına şu şekilde örnek gösterebiliriz:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Eğer 79 ‘nolu elementin adı değişirse bütün tablo aranacak ve pek çok kayıt okunduktan sonra adı değişecektir.Ya da eğer madencilik komitesini silerseniz 29 nolu elementi de kaybedersiniz.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Çözüm için bağımlılığın olduğu kayıtların başka bir tabloya çıkarılması yeterlidir.Bu durumda aşağıdaki şekilde iki tablo oluşacaktır.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;KOMİTE &lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid navy .75pt; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 63;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;background: navy; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Komite Adı&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Atom No &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Yıllık Toplantı&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ticaret&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;79&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;6&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Madencilik&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;29&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;2&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Enerji&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;92&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;4&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Finans&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;79&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 94.95pt;&quot; valign=&quot;top&quot; width=&quot;158&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;5&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;ELEMENT&lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid navy .75pt; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 63;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;background: navy; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Atom No &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Element&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;79&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Altın&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;29&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Bakır&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;92&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Uranyum&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;79&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 63.75pt;&quot; valign=&quot;top&quot; width=&quot;106&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Altın&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BCNF’den sonra aslında pek çok durum için normalizasyon tamamlanmış sayılır.Aşağıdaki durumlarda normalizasyon tamamlanmıştır &lt;br /&gt;
&lt;br /&gt;
• Eğer tablo 3 ya da daha az kolona sahipse &lt;br /&gt;
• Eğer tabloda hiç bileşik aday anahtar kalmamışsa &lt;br /&gt;
• Eğer tabloda en az bir aday anahtar bileşik değilse otomatikman 4NF tamamlanmıştır.Direk 5NF işlemlerine başlanabilir&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Genellikle yapay anahtar kullanımı 3NF’dan sonra 4NF’u da geçmenizi sağlar.Çünkü yapay anahtarlar bileşik değildirler.Özellikle şu tablolar 4NF ve 5NF’a ihtiyaç duyarlar:&lt;br /&gt;
&lt;br /&gt;
• Ana anahtarın bütün niteliklerin birleşmesiye oluşturulduğu tablolar&lt;br /&gt;
• Ortak çalışılan tablolar.Çoğul : çoğul  ve karmaşık ilişkilerin çözümünde yaratıldığı gibi.&lt;br /&gt;
• Çoğul nitelikler için yaratılan ek tablolar&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4NF &lt;/b&gt;‘de tablo üzerindeki çoğuldeğerli bağımlılıklar (multivalued dependencies) çözülür.Çok değerli bağımlılıklar direk bir fonksiyonel bağımlılık olmamasına rağmen bir fonksiyonel bağımlılık yaratırlar.Örneğin aşağıdaki müşteri dağılım tablosuna bakalım.&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid navy .75pt; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 63;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;mso-yfti-firstrow: yes; mso-yfti-irow: 0;&quot;&gt;   &lt;td style=&quot;background: navy; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Bölge&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Satış   Temsilcisi&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Müşteri&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 1;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ahmet&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Selçuk   Gıda Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 2;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ahmet&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Özkan Otel&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 3;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ahmet&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Gerçek   Tur. İşletme&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 4;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Cem&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Selçuk   Gıda Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 5;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Özhan&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Kocaman   Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 6;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Cem&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Güleli Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 7;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Cem&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Moralı   Tic.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 8;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara &lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Selim&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Çınar   Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-irow: 9; mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Selim&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Moralı   Tic.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Tabloda bir bölgede bulunan müşterilere hizmet veren satış temsilcileri gösterilmiştir.Aynı zamanda bir satış temsilcisi birden fazla bölgede de görev yapabilmektedir.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yukarıdaki tabloda hiçbir fonksiyonel bağımlılık olmaması rağmen aynı zamanda hatırı sayılı bir gereksizlik de vardır.Örneğin yeni bir müşteri tanımı için iki satır gerekebileceği gibi , satış temsilcisinin ismini değiştirmek için üçden fazla satır üzerinde değişiklik gerekebilir.&lt;br /&gt;
Yukarıdaki tabloda bir çift kolonun ve bir veri kümesi arasında bağımlılık vardır.Örneğin Ege bölgesi ve Ahmet isimli satış temsilcisi bir müşteri kümesini gösterirken Marmara bölgesi ve Moralı Tic bir gurup satış temsilcini göstermektedir.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Eğer her A ve B nitelik çifti için bir C niteliği kümesinden bahsediliyorsa ve aynı zamanda aşağıdaki şartlarda varsa A ile C arasında çoğul bağımlılık vardır :&lt;br /&gt;
&lt;br /&gt;
• A ve B nitelik çifti aynı olduğunda , her zaman aynı C kümesi alınabiliyorsa&lt;br /&gt;
• C’nin değeri A’nın değerine bağımlıysa &lt;br /&gt;
• C’nin değeri B’nin değerine bağımlı değilse&lt;br /&gt;
&lt;br /&gt;
Çoğuldeğerli bağımlılık çift okla gösterilir.&lt;br /&gt;
&lt;br /&gt;
Bölge =&amp;gt;&amp;gt; Müşteri &lt;br /&gt;
&lt;br /&gt;
Çoğuldeğerli bağımlılığın doğası gereği eğer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A =&amp;gt;&amp;gt; C şeklide bir bağımlılık varsa , aynı zamanda A =&amp;gt;&amp;gt; B şeklinde de bir bağımlılık vardır.&lt;br /&gt;
&lt;br /&gt;
Müşteri dağılım tablosu için bu şu şekilde gösterilebilir:&lt;br /&gt;
&lt;br /&gt;
Bölge &amp;gt; Satış Temsilcisi &lt;br /&gt;
&lt;br /&gt;
Bu yüzden genellikle çoğul bağımlılıklar şu şekilde gösterilir:&lt;br /&gt;
&lt;br /&gt;
Bölge =&amp;gt;&amp;gt; Satış Temsilcisi | Müşteri &lt;br /&gt;
&lt;br /&gt;
Tablo 4NF için bölünerek iki tablo ortaya çıkarılır.Bölünme için şu formül kullanılır:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;IF A =&amp;gt;&amp;gt; B | C THEN A =&amp;gt; B AND A =&amp;gt; C &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;  &lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid navy .75pt; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 63;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;background: navy; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Bölge&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Satış   Temsilcisi&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ahmet&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Cem&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Özhan&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Cem&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 80.0pt;&quot; valign=&quot;top&quot; width=&quot;133&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Selim&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot; style=&quot;border-collapse: collapse; border: none; mso-border-alt: solid navy .75pt; mso-border-insideh: .75pt solid navy; mso-border-insidev: .75pt solid navy; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 63;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;background: navy; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Bölge&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;background: navy; border-left: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-pattern: solid navy; mso-shading: white; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span style=&quot;color: white;&quot;&gt;Müşteri&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Özkan Otel&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Gerçek   Tur. İşletme&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Selçuk   Gıda Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Ege&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Kocaman   Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Güleli   Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Moralı   Tic.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr style=&quot;mso-yfti-lastrow: yes;&quot;&gt;   &lt;td style=&quot;border-top: none; border: solid navy 1.0pt; mso-border-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 79.3pt;&quot; valign=&quot;top&quot; width=&quot;132&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Marmara &lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;border-bottom: solid navy 1.0pt; border-left: none; border-right: solid navy 1.0pt; border-top: none; mso-border-alt: solid navy .75pt; mso-border-left-alt: solid navy .75pt; mso-border-top-alt: solid navy .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 129.6pt;&quot; valign=&quot;top&quot; width=&quot;216&quot;&gt;&lt;div class=&quot;MsoBodyTextIndent&quot; style=&quot;margin-left: 0cm; text-indent: 0cm;&quot;&gt;Çınar   Market&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Eğer ortaya çıkan tabloların satır sayıları ve üzerinde yapılacak işlemler denenirse 4NF’un faydaları kolayca ortaya çıkar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5NF &lt;/b&gt;ise birleşmiş bağımlılıkların (join dependency) ortadan kaldırılmasıdır.Şimdiye kadarki çözümlerde genellikle tablo ikiye bölünerek sorun giderildi.Fakat bazı durumlarda tablo ikiye bölündüğünde mevcut ilişkileri korunamazken üç ya da daha fazla tabloya ayrılarak ilişkiler korunabilir. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bozulmadan üç yada daha fazla tabloya bölünen tablolar birleşmiş bağımlılıklar üretir.Bu da aynı zamanda tablonun üç yada daha fazla nesne ile ilişkisinin olmasını gerektirir.Problem genellikle komplex ilişkilerde karşımıza çıkar.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Örneğin bir senfoni orkestrası düşünelim.Bu orkestra Beethoven eserlerini seslendirdikleri bir dizi konser veriyor olsunlar.Müzisyenler birden fazla enstruman çalabilsin.Senfonilerin seslendirilebilmesi için birden fazla enstruman gereksin.Müzisyenler konserlerde sadece uzmanı oldukları enstrumanları çalsınlar.Bu durumu şu ER diyagramı ile gösterelim.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcPyZJxoQ23PUJkLSTp-GacmzZ1LhLRqC7eAhOMEqzq5s4XgVxEIVwmha7WhdaGXQ7ahqGYmiHomvkSZtKBCK_bZ-sFUgssiWhQ9O7AoOy27tfwqb8y_D8Puhsn6OKYJW0fLceqYnEeISD/s1600/37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;282&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcPyZJxoQ23PUJkLSTp-GacmzZ1LhLRqC7eAhOMEqzq5s4XgVxEIVwmha7WhdaGXQ7ahqGYmiHomvkSZtKBCK_bZ-sFUgssiWhQ9O7AoOy27tfwqb8y_D8Puhsn6OKYJW0fLceqYnEeISD/s400/37.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Burada problem konserde müzisyenlerin her enstrumanı çalabilecekleri izleniminin yaratılması ve buna izin verilmesidir.Problem 5NF’a göre düzenlenerek problem giderilir.Bunun için tekrar kavramsal modele dönülüp aşağıdaki şekilde bir düzenleme yapılır.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA0fXxssfHIMiKOD-uTTdvJoSBQqoclh_6ZftbBPAABS7XDAGzdYo50yeV8mQHjMDClSXiPRf3DLU_shcVHXlCA8UWpSLxsWF2VgCIdTTOPdpt8hGl_HLPImlhyphenhyphenv-ZbRpwRDRz4atqabfW/s1600/38.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA0fXxssfHIMiKOD-uTTdvJoSBQqoclh_6ZftbBPAABS7XDAGzdYo50yeV8mQHjMDClSXiPRf3DLU_shcVHXlCA8UWpSLxsWF2VgCIdTTOPdpt8hGl_HLPImlhyphenhyphenv-ZbRpwRDRz4atqabfW/s400/38.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;NORMALİZASYONUN AVANTAJLARI&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Normalizasyon adımlarını tanımladıktan sonra , bu sürecin bize genel olarak sağladığı sonuçları listelersek :&lt;br /&gt;
&lt;br /&gt;
• Gereksizliklerin Azaltılması &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Normalizasyon  yapılmamış tablolar üzerinde sıkça veri tekrarı görülür.Normalizasyon verinin en az tekrarını ve gereksiz tekrarın ortadan kaldırılmasını garanti eder.&lt;br /&gt;
• NULL ihtiyacının en aza indirilmesi &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL genellikle numerik verilerin kullanımında sıkça problem yaratır.Örneğin toplam ya da ortalama almak gibi.NULL  aynı zamanda henüz belirlenememiş bir supertip’in belirtisidir.&lt;br /&gt;
• Çevrilebilirlik &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Normalizasyon da sıkça bir tabloyu bölmek zorunda kalırsınız.Tablolar yeniden düzenlendiğinde orjinal veri kaybolmaz ve sahte veri üretilmez.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;DİZAYNIN TAMAMLANMASI&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Dizaynın tamamlanması için mantıksal dizaynın hazırlanmasından sonra kalan iki süreç fiziksel dizaynın hazırlanması ve modelin uyarlanmasıdır yani hayata geçirilmesidir. Fiziksel dizayn veri tabanında kullanılacak saklama aygıtlarının tamamlanması , tabloların üzerinde performans için indexlerin yaratılması , tabloların aygıtlara atanması vb. süreçleri içerir.&amp;nbsp; Modelin uyarlanması ise artık herşeyiyle hazır olan modelden bir veri tabanı yaratılmasıdır diyebiliriz.Bu süreçler seçilen veri tabanı yönetim sistemi ile oldukça ilişkilidir.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu süreçler ele aldığımız konunun dışına taştığı için bu kadar bahsetmek yeterlidir.Bu aşamada en çok söz sahibi olan veri tabanı yöneticileridir.Bu süreçler veri tabanının yaşam döngüsü içersinde en çok dinamiklik gösteren , oldukça değişikliğe ve yeniliğe uğrayan süreçlerdir.&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/6645917602678442589/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/iliskisel-veri-taban-dizayn.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/6645917602678442589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/6645917602678442589'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/iliskisel-veri-taban-dizayn.html' title='İlişkisel Veri Tabanı Dizaynı'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyJh1zY_MicHVsSHgF-LSkmmtI6_a3SFLPz59LR3kry3dVrsIoaucv2neyOJK721C4JwDpOCxCsMZr80Sti02nFiBIe96mXAluIvpb1V9vTlyJQDs1oBIRHWWKVBjT6ThR0cyP6Rv6RNKl/s72-c/1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-2173548860403792495</id><published>2011-04-20T14:27:00.002+03:00</published><updated>2011-04-20T14:43:06.813+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SOA"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><title type='text'>Kurumsal SOA</title><content type='html'>Oracle Day 2009&#39;da yaptığım Kurumsal SOA hakkında bir sunum &lt;br /&gt;
&lt;div id=&quot;__ss_5053548&quot; style=&quot;width: 425px;&quot;&gt;&lt;b style=&quot;display: block; margin: 12px 0 4px;&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/serhatdirik/kurumsal-soa-dnm-5053548&quot; title=&quot;Kurumsal SOA Dönüşümü&quot;&gt;Kurumsal SOA &lt;/a&gt;&lt;/b&gt; &lt;iframe frameborder=&quot;0&quot; height=&quot;355&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://www.slideshare.net/slideshow/embed_code/5053548&quot; width=&quot;425&quot;&gt;&lt;/iframe&gt; &lt;br /&gt;
&lt;div style=&quot;padding: 5px 0 12px;&quot;&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/serhatdirik&quot;&gt;Serhat Dirik&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/2173548860403792495/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/oracle-day-2009da-yaptgm-kurumsal-soa.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/2173548860403792495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/2173548860403792495'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/oracle-day-2009da-yaptgm-kurumsal-soa.html' title='Kurumsal SOA'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-5096806789703521720</id><published>2011-04-19T11:15:00.010+03:00</published><updated>2011-05-05T14:17:18.142+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Quality"/><title type='text'>Yazılım Ölçümleme</title><content type='html'>&lt;h1&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667177&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911493&quot;&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Bir önceki yazımda nesne yönelimli yazılımda dizayn prensiplerini işlemiştim.Okurların bu yazıda bahsedilen metriklerin nereden kaynaklandığını daha iyi algılamaları açısından, &lt;a href=&quot;http://serhatdirik.blogspot.com/2011/04/nesne-yonelimli-yazlmda-dizayn.html&quot;&gt;dizayn prensiplerine&lt;/a&gt; göz atmalarını öneririm. &lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Yazılım ölçümlemede kullanılan metrikleri temel olarak iki kategoriye ayırabiliriz :&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l6 level1 lfo8; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Ürün Kalitesi ile ilgili metrikler&lt;/li&gt;
&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;circle&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l6 level2 lfo8; tab-stops: list 72.0pt right 432.0pt;&quot;&gt;Kalite , büyüklük , modulerlik vb&lt;/li&gt;
&lt;/ul&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l6 level1 lfo8; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Süreç maliyet/kaynak planlaması ile ilgili      metrikler&lt;/li&gt;
&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;circle&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l6 level2 lfo8; tab-stops: list 72.0pt right 432.0pt;&quot;&gt;Efor , zaman cetveli , kaynak gereksinimi&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Bu yazıda nesne yönelimli yazılımda kalite&amp;nbsp; ölçümlemede&amp;nbsp; kullanılabilecek metrikler üzerinde durulmuştur.Yazıda nesne yönelimli programlaya özel yöntemlerin yanı sıra geleneksel yöntemlerden ; nesne yönelimli programlamaya aktarılan yöntemler de ele alınmıştır. Nesne yönelimli yazılımlara her ne kadar bir kısım geleneksel ölçme yöntemleri kullanılabilse de genel olarak kullanılabilen metrikler geleneksel yöntemlerden oldukça farklıdır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Yapılan araştırmalarda yazılım süreçlerinde bakım maliyetlerinin , geliştirme maliyetlerinin neredeyse iki katı olduğu gözlenmiştir.Bu bize kaliteli yazılım üretmenin zorluğunu göstermektedir.&lt;/div&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yazılımın kalitesinin garanti altına alınması ve&amp;nbsp; iyileşme sağlanabilmesi , sürekli ölçümleme ve iyileştirme ile olabilir.Gerekli iyileştirmeler ölçümleme sonucu elde edilen bilgilere dayanılarak yapılabilir.Ölçümleme yapılmadan hazırlanan eylem planları kesinlikle gerekçesiz ve gelişigüzel olacaktır.&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; letter-spacing: -0.1pt;&quot;&gt; &lt;/span&gt;  &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667178&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911494&quot;&gt;&lt;/a&gt;Geleneksel Metrikler&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&amp;nbsp;&amp;nbsp; Bu bölümde ele alınan metrikler geleneksel metriklerden nesne yönelimli yazılıma uyarlanabilecek olanlardır.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667179&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911495&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN&quot;&gt;Kod&amp;nbsp; Büyüklüğü (Lines Of Code LOC)&lt;/span&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Geleneksel olarak yazılımın boyutu satır sayısı ile&amp;nbsp; ölçülür. Satır büyüklüğü çeşitli şekillerde ölçülür :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l4 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Satır Sayısı&amp;nbsp; ( Lines Of Code – &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;LOC&lt;/b&gt; ) ölçümü programın tüm satırlarının sayılmasıdır.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;fullpost&quot;&gt; &lt;span class=&quot;fullpost&quot;&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l4 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;Yorum ve boşluk içermeyen (Non-comment      Non-blank &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;NCNB&lt;/b&gt; veya Source      Lines Of Code &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;SLOC&lt;/b&gt; )&amp;nbsp; programın yorum satırları ve boş      satırlardan arındırılmış halidir.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l4 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Çalıştırılabilir yordam sayısı      (Executable Statements EXEC) program içinde yer alan yordam sayısıdır.&lt;/span&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Örneğin aşağıdaki kod :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;i&gt;&lt;span lang=&quot;EN&quot;&gt;IF X = 3&lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i style=&quot;mso-bidi-font-style: normal;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;// Comment Line&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;span lang=&quot;EN&quot;&gt;Then&lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span lang=&quot;EN&quot;&gt;Y = 10&lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;4 LOC , 3 NBC&amp;nbsp; ve 1 EXEC olarak sayılır&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Satır büyüklüğü pek çok dile uyarlanabildiği için oldukça kullanışlı ve ölçümü beklenen bir metriktir.Ancak satır büyüklüğü üzerine yorum yapmak için dilin karmaşıklığı , projenin karmaşıklığı gibi faktörler de göz önünde bulundurulmalıdır.Yazılım istatistiklerini biriktiren şirketler yeni projelerin faktörlerini göz önüne alarak , kestirimlerde bulunabilirler.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Satır büyüklüğünün küçük olması yazılım için hedef olmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667180&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911496&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN&quot;&gt;Yorum Oranı (&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Comment Percentage&lt;/span&gt;&lt;span lang=&quot;EN&quot;&gt; - CP)&lt;/span&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Yorum oranı (&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Comment Percentage&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;CP&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN&quot;&gt;) programın için hazırlanmış yorum satırlarının (kod ile birlikte ya da dışarıda) , toplam programın yorum ve boşluk içermeyen satır sayısına (SLOC) bölümü ile bulunur.Yüksek yorum oranı programların anlaşılabiliğini arttıran ve bakımını kolaylaştıran bir faktördür.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Yorum oranının %20 ila %30 arası olması tavsiye edilen bir durumdur.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667181&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911497&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN&quot;&gt;Döngüsel Karmaşıklık (Cyclomatic Complexity -CC)&lt;/span&gt;&lt;span lang=&quot;EN&quot;&gt; &lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Thomas J. McCABE&amp;nbsp; tarafından ortaya konan bu metrik bir methodun içindeki algoritmanın karmaşıklığını ölçmek için kullanılır.Aynı zamanda bir methodun test edilmesi için gerekli test durumu sayısını da verir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CC = yollar&amp;nbsp; – düğümler + 2&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;şeklinde hesaplanır.Örneğin bir IF cümlesi iki seçeneğe sahiptir.Eğer şart doğru ise birinci yol test edilmiş olur , hatalı ise ikinci yol test edilir.Aşağıdaki şekilde hesaplanış ile ilgili örnekler verilmiştir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDmn5MRvqYxbPWSL_yioyuCniWIFrNdoFouaFFkjOydegNW25-YOk-RgHY9vdnY5zX1dsdH9e9Fy1oZc-45a8WsK3OzdgswZrcZJjJX38DA-Fzu41KCo4WTBurBCuO6u3kj0XYuiAupQMv/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDmn5MRvqYxbPWSL_yioyuCniWIFrNdoFouaFFkjOydegNW25-YOk-RgHY9vdnY5zX1dsdH9e9Fy1oZc-45a8WsK3OzdgswZrcZJjJX38DA-Fzu41KCo4WTBurBCuO6u3kj0XYuiAupQMv/s400/1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: 35.4pt; text-align: center; text-indent: -36.0pt;&quot;&gt;&lt;span style=&quot;color: navy; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; letter-spacing: 0pt;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: navy; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; letter-spacing: 0pt;&quot;&gt; &lt;b&gt;&lt;br style=&quot;mso-special-character: line-break;&quot; /&gt; &lt;br style=&quot;mso-special-character: line-break;&quot; /&gt; &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Methodların düşük karmaşıklığa sahip olması tercih edilir.Bu kodun anlaşılırlığının ve test edilmesinin kolay olduğunu gösterir. Döngüsel karmaşıklık , nesne yönelimli yazılımda kalıtım ilişkisi yüzünden bir sınıfın karmaşıklığını ölçmek için kullanılamaz.Fakat methodların karmaşıklığının toplamı , sınıfın karmaşıklığı olarak kabul edilebilir.Bir method için karmaşıklığın 10’u aşmaması tercih edilmelidir.Ancak 20’ye kadar kabul edilebilir.Bunu aşan değerler anlaşılması oldukça güç kodları gösterir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; &lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt; letter-spacing: -0.1pt;&quot;&gt;&lt;br clear=&quot;all&quot; style=&quot;mso-special-character: line-break; page-break-before: always;&quot; /&gt; &lt;/span&gt;  &lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667182&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911498&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Nesne Yönelimli Metrikler&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667183&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911499&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sınıf Temelli Metrikler&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Nesne yönelimli programlamada temel birim sınıftır.Bu bölümde yer alan metrikler sınıf temelli metriklerdir.Sınıf ve onun temel elemanları üzerinden alınan metrikler ile tüm ürün kalitesi hakkında genel fikirler verir.&lt;/div&gt;&lt;h4&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667184&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911500&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN&quot;&gt;Sınıf Method Sayısı (Number Of Methods per Class -NOM)&lt;/span&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Sınıf başına düşen method sayısı sınıfın karmaşıklığı açısından bir göstergedir.Aynı zamanda fazla method sayısı arabirimin ayrılması prensibine ( the interface segregation principle ) aykırı durumların da habercisidir. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;( Ortalama method sayısı = Toplam Method Sayısı / Toplam sınıf sayısı&amp;nbsp; formulü ile&amp;nbsp; ortalam method sayısı elde edilir.) &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; NOM değerinin 20 ‘nin altında kalması tercih edilmelidir. 40’dan küçük değerler de kabul edilebilir sınırlar içindedir.Ancak bu değerler sınıfların constructor ,&amp;nbsp; destructor ve ayrıca mutator (getxxx , setxxx gibi) methodlarının dahil edilmiş hali olarak kabul edilmelidir.Bu tip methodlar ayıklanmış haldeyken sınıfın method sayısının 10’u geçmemesi tercih edilmelidir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8UaU0gEkDPUb-5lNGEgdDAQnPBpgsN5_ixie9XktETK3Duda3pdfi2srwMMCtwduNYnE0SBnlpcgYFDOWOjjf-tnAklfvGvUTK7_NKqcYj4Ud2YN9jouOcs50WdjLVWB9Gf4wL0wC6PAw/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8UaU0gEkDPUb-5lNGEgdDAQnPBpgsN5_ixie9XktETK3Duda3pdfi2srwMMCtwduNYnE0SBnlpcgYFDOWOjjf-tnAklfvGvUTK7_NKqcYj4Ud2YN9jouOcs50WdjLVWB9Gf4wL0wC6PAw/s400/2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Büyük NOM değerleri anlaşılması , yeniden kullanımı ve bakımı güç sınıflara işaret eder.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667185&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911501&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Chidamber ve&amp;nbsp; Kemerer Metrikleri&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h3&gt;&lt;h4 style=&quot;margin-left: 36.0pt; mso-list: l3 level1 lfo9; tab-stops: list 36.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667186&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911502&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;1.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sınıf Başına Ağırlıklı Method&amp;nbsp; (Weighted Methods per Class -WMC)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Döngüsel&amp;nbsp; karmaşıklık değerleri toplamının sınıf sayısına bölümü ile bulunur.WMC değerinin 100’ün altında olması tercih edilmelidir.WMC sınıf karmaşıklığı hakkında fikir veren en önemli donelerden biridir.Bu metriğin faydaları sınıf başına ortalama method sayısı gibi değerlendirilebilir.WMC değerinin 100’ün altında olması kabul edilebilir bir değerdir. WMC değeri NOM’dan farklı olarak sınıfın karmaşıklığı hakkında daha net bir fikir verir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Bu metrik üzerinden genel olarak elde edilebilecek fikirler şu şekilde sıralanabilir :&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;WMC sınıfın karmaşıklığı hakkında      fikir verir ve harcanacak geliştirme ve bakım eforları için gösterge      sayılabilir&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Büyük sayıda method içeren sınıfların      üzerinde yapılacak değişiklikler , sınıftan türiyen sınıflar üzerinde      potensiyel etkiye sahiptir&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Daha fazla method içeren sınıflar      daha uygulamaya özel ve yeniden kullanımı zor sınıflar olarak görülürler&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Ekli grafikte örnek bir WMC dağılımı verilmiştir.Bu grafik yardımıyla projenin toplam karmaşıklığı hakkında fikir edinilebilir.WMC değeri 100’ün üzerindeki sınıfların yeniden ele alınması faydalı olacağından bu sınıf sayıları tablodan kolaylıkla seçilmektedir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY_x3e0XuGJEwPuhpRMib0HbStT45KTO3ynXcMk6x1sOGCJ_Arjp_hWKmdtvTX5pQt3NJdHAKc4g0DVJnp3xsI9W11SBxZxANlI3zPt7uAtujBVCnshcJEkIPrdVJimXuIinRA9N62K-Ad/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgY_x3e0XuGJEwPuhpRMib0HbStT45KTO3ynXcMk6x1sOGCJ_Arjp_hWKmdtvTX5pQt3NJdHAKc4g0DVJnp3xsI9W11SBxZxANlI3zPt7uAtujBVCnshcJEkIPrdVJimXuIinRA9N62K-Ad/s400/3.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;br /&gt;
&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;span lang=&quot;EN&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: -36.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h4 style=&quot;margin-left: 36.0pt; mso-list: l3 level1 lfo9; tab-stops: list 36.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667187&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911503&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;2.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kalıtım Ağacının Derinliği (Depth of Inheritance Tree - DIT)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; DIT metriği sınıfın ebeveyn sınıflarının sayısını gösterir.Eğer çoklu kalıtım durumu söz konusu ise bu durumda hiyerarşideki en uzun yol kabul edilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVLAzTTs9ML10Dhji7ZHefd6-u_3gJZM5TN0C1_xDJThQnamFJ1A0Rd224z61nWKqKs1JAfg1HUJBD6Qv5ImWSwaJTjqJw1wKQgvP2U8IibqLSo0-bX3EG37VzxntRhszhyvHZrnKH5sjo/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVLAzTTs9ML10Dhji7ZHefd6-u_3gJZM5TN0C1_xDJThQnamFJ1A0Rd224z61nWKqKs1JAfg1HUJBD6Qv5ImWSwaJTjqJw1wKQgvP2U8IibqLSo0-bX3EG37VzxntRhszhyvHZrnKH5sjo/s320/4.png&quot; width=&quot;217&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp; Örneğin yukarıdaki şekilde yer alan D sınıfı için DIT değeri 2 olarak kabul edilir.DIT bize kısaca kaç tane ana sınıfın potensiyel olarak sınıfımızı etkileyebileceğini gösterir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l7 level1 lfo3; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sınıf hiyerarşisinin derinliği arttıkça daha fazla method      kalıtım alınır ve sınıfın davranışlarını öngörmek ; anlamak zorlaşır.&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l7 level1 lfo3; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;Derin hiyerarşiler daha      fazla method ve sınıf etkilendiğinden , dizaynı karmaşıklaştırır &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l7 level1 lfo3; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;Ancak hiyerarşi      derinleştikçe kalıtım alınan methodların yeniden kullanım potensiyeli      artar&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DIT metriğine destekleyici olarak sınıfın kalıtım aldığı method sayısı (number of methods inhertied NMI) da ölçülebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; DIT için önerilen rakam genellikle 5’in altında olmasıdır. 5’in üzerindeki derinlikler oldukça karmaşık yapılar doğurabilir.DIT’in 0 olması sınıfın kök&amp;nbsp; olduğunu gösterir.DIT’in ortalam 2-3 arası bir değerde olması yeniden kullanımın iyi seviyede olduğunu gösterir.2’den küçük derinlikler ise yeniden kullanımın zayıf olduğu alanları işaret eder.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Ekli grafikte örnek bir DIT dağılımı gösterilmiştir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAEbzzxVsCssMQJ5pRzcin3pKfk8JozihUXYDtElIS41Pr2HEb4QibwDPPv8RivbE1uhUur5OZcN6Kn_bAcaPYIkMn0pldHc6Zxa81tk5i9yx9CNW8jwVAZiKKoNL3zqm7LyLAE92GmKL/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;230&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAEbzzxVsCssMQJ5pRzcin3pKfk8JozihUXYDtElIS41Pr2HEb4QibwDPPv8RivbE1uhUur5OZcN6Kn_bAcaPYIkMn0pldHc6Zxa81tk5i9yx9CNW8jwVAZiKKoNL3zqm7LyLAE92GmKL/s400/5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; style=&quot;margin-left: -45.0pt; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;span lang=&quot;EN&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h4 style=&quot;margin-left: 36.0pt; mso-list: l3 level1 lfo9; tab-stops: list 36.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667188&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911504&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;3.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Alt Sınıf Sayısı ( Number of Children - NOC)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; NOC metriği sınıftan türemiş alt sınıflarının sayısını verir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l8 level1 lfo4; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Alt sınıf sayısı çoğaldıkça kalıtım özelliğine bağlı olarak yeniden kullanımın arttığı anlaşılır&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l8 level1 lfo4; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Alt sınıf sayısının çokluğu &amp;nbsp;sınıfın hatalı soyutlama yapıldığını , belki de hatalı bir hiyerarşi kurulduğunu gösterebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l8 level1 lfo4; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;NOC sınıfın nüfus alanı hakkında bir fikir verir.NOC metriği yüksek sınıflar gözden geçirme , test gibi süreçlerin daha dikkatli ve uzun tutulması gereken yerlerdir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;DIT ve NOC metriklerinin kendi içinde getiri ve götürüleri vardır.Yüksek DIT değerleri artan karmaşıklığı gösterirken aynı zamanda artan yeniden kullanıma da işaret eder.Aynı şekilde yüksek NOC değeri artan yeniden kullanıma işaret ederken daha fazla test eforu harcanması gerektiğini gösterir.Ekli şekilde DIT ve NOC metriklerinin bir arada dağılımları gösterilmiştir.Bu tablodan bazı garip durumlar saptanabilir.Örnek şekilde ağacın üçüncü seviyesinde ancak 40 alt sınıfa sahip bir sınıf göze çarpmaktadır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpiJENl50lYQLjZOVCgH1neZp5F_tG3OaDccjYJWs7b2I08Zn_lGEuBq1adJKyJVv7Tr7QMvBwsFOXkVjvG_thyAAww20XVSD7GozD_fNyFgnIZQ1H7f5hVXve0B44SDVDO0NK3aVJTz3a/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpiJENl50lYQLjZOVCgH1neZp5F_tG3OaDccjYJWs7b2I08Zn_lGEuBq1adJKyJVv7Tr7QMvBwsFOXkVjvG_thyAAww20XVSD7GozD_fNyFgnIZQ1H7f5hVXve0B44SDVDO0NK3aVJTz3a/s400/6.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; style=&quot;margin-left: -45.0pt; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h4 style=&quot;margin-left: 36.0pt; mso-list: l3 level1 lfo9; tab-stops: list 36.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667189&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911505&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;4.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Nesneler Arası Eşleme (Coupling Between Object Classes - CBO)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp; CBO değeri sınıfın kalıtım ilişkisi dışında diğer sınıflar ile kurduğu bağımlılık (eşleme) sayısını gösterir.Örneğin diğer bir sınıfın methodlarının kullanılması ya da diğer sınıfın bir nitelik olarak tanımlanması vb. CBO değeri eşleme yapılmış sınıf sayısını gösterir.Örneğin bir A sınıfı methodları içerisinde diğer B sınıfına dört şekilde mesaj gönderiyor olsun.Bu durumda A ile B sınıfı arasında yalnız bir eşleme vardır.Eşleme sayısı gönderilen mesaj sayısı ile ilgili değil kaç farklı sınıf ile haberleşildiği ile ilgilidir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l2 level1 lfo5; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sınıflar arası çok sayıda eşlemenin bulunması moduler dizaynı zedeler ve yeniden kullanımı engeller.Bağımsız sınıfların başka uygulamalar içinden yeniden kullanımı daha kolaydır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l2 level1 lfo5; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Modulariteyi ve kapsullemeyi düzenlemek için eşlemeler minimum düzeyde tutulmalıdır.Eşleme sayısının yüksek olması sınıfın değişikliklere karşı daha hassas ve bakımının daha zor olmasına yol açar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l2 level1 lfo5; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;CBO değeri dizaynın çeşitli kısımlarında uygulanacak testin ne kadar karmaşık olacağı hakkında bir fikir verir.Yüksek değerler daha zor testlerin yapılacağının göstergesidir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;CBO değeri sınıfın bağımsızlığının göstergesidir.CBO ve DIT değerleri 0 olan sınıflar tamamen bağımsız olarak çalıştırılabilir sınıflardır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;CBO değerinin 5’i aşmaması genellikle tavsiye edilmektedir.Ekli şekil örnek bir CBO grafiğini göstermektedir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5RWnr7GyH5sxhbcsFlDtBY59wUrMVYRtPv-xABaN-2vFd8hKDTGDK4ftTNuxEA-rPPGCavvj569YnhbHhyphenhyphenjPSE3RUj-3qgKBoSQ0zeT9yq4kw57EomlLA9e2H2mAxx8sVD9yI2SN8w9g9/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5RWnr7GyH5sxhbcsFlDtBY59wUrMVYRtPv-xABaN-2vFd8hKDTGDK4ftTNuxEA-rPPGCavvj569YnhbHhyphenhyphenjPSE3RUj-3qgKBoSQ0zeT9yq4kw57EomlLA9e2H2mAxx8sVD9yI2SN8w9g9/s400/7.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h4 style=&quot;margin-left: 36.0pt; mso-list: l3 level1 lfo9; tab-stops: list 36.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667190&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911506&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;5.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sınıf Yanıt Sayısı (Response for a Class - RFC)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RFC sınıfın içindeki method sayısı + methodlar tarafından çağırılan method sayısının&amp;nbsp; (her method sadece 1 kez sayılmak üzere) toplamıdır. Formulü :&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; RFC = |RS|&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; RS = &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;{ M }&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;È &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;all i { Ri }&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;( { Ri } = I methodu tarafından çağırılan unique method sayısı ve { M } = sınıfın methodları ) &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;şeklinde ifade edilebilir.RFC sınıf tarafından bir mesaja cevap için potensiyel olarak çalıştırılacak method sayısını verir.Buna sınıf hiyerarşisi içerisinde erişilebilecek tüm methodlar dahildir.Bu metrik sınıfın method sayısı ile diğer sınıflarla kurulan iletişim sayısının toplamı gibi görülebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;RFC metriğinin sınıf başına 100’den aşağı olaması kabul edilebilir bir durum olsa da 50’yi aşan bir sınıf genellikle pek görülmez.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l5 level1 lfo7; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;RFC değerinin yüksek olduğu sınıfların anlaşılması daha zor      olacağından&amp;nbsp; için test ve debug      eforları daha fazla olacaktır &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l5 level1 lfo7; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;RFC değeri yükseldikçe sınıfın karmaşıklığı artar&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l5 level1 lfo7; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;RFC değeri ayrılacak test zamanının hesaplanmasına yardımcı      olabilir&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Aşağıdaki grafikte sınıflara göre RFC dağılımını göstermektedir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZ8kdbw8R_nFS5-0Hej58RratP0gvkMPqlCguzse2JhoYDWDgDYaEDdk98nmjCYU__NF9ROf5CO_flg-gl_99ORnLisUnufXz79REdu-XXfZP1ue_6_TxDbHsV130aqnAqUDchtuR5Jgw/s1600/8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxZ8kdbw8R_nFS5-0Hej58RratP0gvkMPqlCguzse2JhoYDWDgDYaEDdk98nmjCYU__NF9ROf5CO_flg-gl_99ORnLisUnufXz79REdu-XXfZP1ue_6_TxDbHsV130aqnAqUDchtuR5Jgw/s400/8.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;RFC / NOM değerinin C++ için 5’i Java için 10’u aşmaması tavsiye edilmektedir.Ekli grafikte bu kurala uyan ve uymayan sınıflar gösterilmeye çalışılmıştır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;RFC &amp;gt; 5 x NOM&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVf9j8AjU2vl2CNqgqAMYRaoAytkxjtX4C4jxjpeA9pQ76AxLVU50oio_MtxUMXwzX-i6a174W7eAEx-Jg-5djKuT2Al4kg9suXZ8ZNohzD4fikAW2UsiLDAFWc9DITxGO5fcaoKmX9ODI/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVf9j8AjU2vl2CNqgqAMYRaoAytkxjtX4C4jxjpeA9pQ76AxLVU50oio_MtxUMXwzX-i6a174W7eAEx-Jg-5djKuT2Al4kg9suXZ8ZNohzD4fikAW2UsiLDAFWc9DITxGO5fcaoKmX9ODI/s400/9.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h4 style=&quot;margin-left: 36.0pt; mso-list: l3 level1 lfo9; tab-stops: list 36.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667191&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911507&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;6.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Uyumsuzluk (Lack of Cohesion - LCOM)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h4&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp; Uyumluluk nesne yönelimli programlamada oldukça önemli bir kavramdır.Bir sınıf elemanlarının birlikteliğinin derecesini gösterir.İyi bir dizayn yüksek uyumlulukta sınıflar sunmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Uyumluluk bir sınıfın birden fazla&amp;nbsp; soyutlama yapmamasını gerektirir.Aksi durumda sınıfın başka sınıflara bölünmesi gereklidir. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;&amp;nbsp;&amp;nbsp; Chidamber ve Kemerer’a göre sınıfın aynı değişkenlerine erişen birden fazla method varsa sınıfta bir uyumluluktan bahsedilebilir. LCOM bir sınıfın içindeki hiçbir ortak alanı paylaşmayan method toplamından , en az bir ortak alanı paylaşan method toplamının farkı ile bulunur.Bulunan değer 0’dan küçükse 0 kabul edilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;C1 sınıfının M1, M2..., Mn şeklinde n tane methodu olsun . {Ii}&amp;nbsp;&amp;nbsp; kümesinin Mi sınıfının&amp;nbsp; kullandığı sınıf değişkenleri olduğunu farzedelim .Bu şekilde her method için bir küme olduğunu fazedelim.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;P değeri&amp;nbsp;&amp;nbsp; kesişimleri boş olan kümelerin sayısı ( P = { (Ii,Ij) | Ii &lt;span style=&quot;font-family: Symbol;&quot;&gt;Ç &lt;/span&gt;Ij = &lt;span style=&quot;font-family: Symbol;&quot;&gt;Æ &lt;/span&gt;} )&amp;nbsp; ve&amp;nbsp; Q’yu kesişimleri boş olmıyan kümelerin sayısı ( Q = { (Ii,Ij) | Ii &lt;span style=&quot;font-family: Symbol;&quot;&gt;Ç &lt;/span&gt;Ij _ &lt;span style=&quot;font-family: Symbol;&quot;&gt;Æ &lt;/span&gt;}) olarak kabul edelim.Eğer tüm küme kesişimleri boş ise P değerini 0 kabul edelim.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Bu durumda LCOM = |P| - |Q| olarak kabul edilir.Eğer sonuç negatif ise LCOM = 0 olarak kabul edilir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Örneğin M1 , M2 ve M3 methodları bulunan bir sınıfı ele alalım. M1’in kullandığı sınıf değişkenleri kümesi {I1} =&amp;nbsp; &lt;/span&gt;{a,b,c,d,e} , M2 methodunun kümesi&amp;nbsp; {I2} = {a,b,e} ve M3 methodunun kümesi&amp;nbsp; {I3} = {x,y,z}olsun . Bu durumda {I1} &lt;span style=&quot;font-family: Symbol;&quot;&gt;Ç &lt;/span&gt;{I2} kesişimi boş olmıyan , ancak&amp;nbsp; {I1} &lt;span style=&quot;font-family: Symbol;&quot;&gt;Ç &lt;/span&gt;{I3} ve {I2} &lt;span style=&quot;font-family: Symbol;&quot;&gt;Ç &lt;/span&gt;{I3} boş kümeler verir.Bu durumda&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;P = 2&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Q = 1 &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;ve LCOM = P – Q&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1&amp;nbsp; olarak bulunur.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l0 level1 lfo6; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Methodların uyumsuzsuzluğu sınıfın iyi kapsulleme (encapsulation) sunamadığının göstergesidir&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l0 level1 lfo6; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&amp;nbsp;Uyumsuzluğu yüksek sınıfların iki ya da daha fazla alt sınıfa bölünmeleri gözden geçirilmelidir&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l0 level1 lfo6; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Methodlar arası farklılık , sınıf dizaylarındaki çatlakların bulunmasında yardımcı olur&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l0 level1 lfo6; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;·&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;Uyumsuzluk karmaşıklığı arttırır ve geliştirme sırasında hata yapılma ihtimalini arttırır&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;LCOM değeri sınıfın method sayısına bağlı olarak değişir.LCOM değerinin alabileceği sınır değer sınıfın method sayısıdır.Ekli grafikte sınıfların LCOM / NOM değerlerine göre dağılımı gösterilmiştir. &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxb82xhU1y6Ma6lxtk5NVy0o4fLLKlsGFafhhbXtwsx3jLub8fILzmrTmCO36KyhHQlmZFmO0_mkSqvQWqmdT40MPM5OCIGWaZGSB2RWbGJCEgwTo97KQSbN7Z3wPrvtAhyhZeqnyUqC7e/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;236&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxb82xhU1y6Ma6lxtk5NVy0o4fLLKlsGFafhhbXtwsx3jLub8fILzmrTmCO36KyhHQlmZFmO0_mkSqvQWqmdT40MPM5OCIGWaZGSB2RWbGJCEgwTo97KQSbN7Z3wPrvtAhyhZeqnyUqC7e/s400/10.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; style=&quot;margin-left: 36.0pt; text-align: center;&quot;&gt;&amp;nbsp; &lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667192&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911508&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661535&quot;&gt;&lt;/a&gt;Paket Temelli Metrikler&lt;/h2&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Nesne yönelimli programlamada bir başka temel birim de paket kavramıdır.Sınıflar boşlukta yaşan kavramlar değildir.Her sınıf belli bir pakete üye olmak zorundadır.Paket kavramı sayesinde sistemin temel yapı taşları belirlenebilir , sistem yapılandırılabilir.Sınıflar paketlere gelişi güzel atılamazlar.Paketlemede nesne yönelimli dizayn prensipler sıkı sıkıya uyulması gereklidir.Bu bölümde ele alınan metrikler paket dizaynının kalitesini ölçmeye yönelik olarak hazırlanan metriklerdir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667193&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911509&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661536&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48502887&quot;&gt;Kararsızlık (Instability)&lt;/a&gt;&lt;/h3&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&amp;nbsp;&amp;nbsp; Durağanlık yazılımda , değişiklik sıklığı ile ilgili bir kavramdır.Bir paket ne kadar az değişiklik görüyorsa o kadar durağandır demektir.Durağanlığı sağlıyan unsurlar içeriğin karmaşıklığı , büyüklüğü , sağlam yapılmış olması vb. sebepler olabilir .Ancak nesne yönelimli dizayn içerisinde paketin durağan olmasını gerektiren en önemli unsur pakete olan bağımlılık sayısıdır. Bir başka deyişle pakete ne kadar bağımlılık var ise paket o kadar durağan olmalıdır.&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Kararsızlık bir paketin ne kadar kararsız ya da durağan olduğunu gösteren metriktir.Şu şekilde formulize edilebilir :&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Ca = İç Eşleme ( Afferent Couplings &lt;/span&gt;)&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Ce = Dış Eşleme ( Efferent Couplings &lt;/span&gt;)&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;I Kararsızlık&amp;nbsp; (&lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Instability) .&amp;nbsp;&amp;nbsp;&amp;nbsp; I&amp;nbsp; =&amp;nbsp; Ce / (Ca + Ce)&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;İç Eşleme ( Afferent Couplings &lt;/span&gt;- Ca)&amp;nbsp; bir paket içindeki sınıflara bağlı olan paketin dışındaki sınıf sayısıdır.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzFuLUVQmI8Ki6n3v5Y45dQVNOx9a6XLN9ZJBcjn-jI0gc7HHcDdDQOXY3E9gkRX8DSdsZ0fUAPhF8BhLNrpHfRbiRbIe-X5Zg6da8uL2rADqCSX5F94y-LIRMNjGCQh-Dnjpo56axjKZX/s1600/11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzFuLUVQmI8Ki6n3v5Y45dQVNOx9a6XLN9ZJBcjn-jI0gc7HHcDdDQOXY3E9gkRX8DSdsZ0fUAPhF8BhLNrpHfRbiRbIe-X5Zg6da8uL2rADqCSX5F94y-LIRMNjGCQh-Dnjpo56axjKZX/s400/11.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-left: 36.0pt; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 36.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Dış Eşleme ( Efferent Couplings &lt;/span&gt;- Ce)&amp;nbsp; , bir paket dışındaki &lt;b&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Class&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; ’lara bağlı olan paketin içindeki &lt;b&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Class&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; sayısıdır.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_27t6_k7pSqhLb3BaC7arbqlvNhDpk2DUC78QvNqdIYZQczdromAvXIEOEDQ6S_Zjl8uYwnzxHJjG8eqqhQpa40V2nsUiQ2SXjZkODxbX4Fzq1IOWXogizdD3P14nF06Bnt-ePxiE-CTA/s1600/12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_27t6_k7pSqhLb3BaC7arbqlvNhDpk2DUC78QvNqdIYZQczdromAvXIEOEDQ6S_Zjl8uYwnzxHJjG8eqqhQpa40V2nsUiQ2SXjZkODxbX4Fzq1IOWXogizdD3P14nF06Bnt-ePxiE-CTA/s400/12.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;center&quot; class=&quot;MsoNormal&quot; style=&quot;margin-left: 36.0pt; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Karasızlık metriği 0 ile 1 arası bir değer alır. 0 tamamen durağan bir paketi (ya da sınıfın)&amp;nbsp; gösterirken değer 1’e doğru yaklaştıkça paketin kararsızlığı artıyor demektir.&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667194&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911510&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661537&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Soyutluk (Abstractness)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Bu metrik ölçümü yapılan paketin ne kadar soyut bir yapıda olduğunu gösterir. Durağan soyutluk prensibi ( Stable Abstractions Principle - SAP) ile yakından ilişkilidir. Bu prensip durağan olması gereken paketlerin soyut yapıda olmasını söyler.Şu şekilde formulüze edilebilir :&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Nc &lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Paket içindeki sınıf sayısı.(Soyut sınıflar da dahil)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Na &lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Paket içindeki soyut sınıf sayısı&amp;nbsp; (arayüzler , soyut sınıflar vb)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;A Soyutluk (&lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN-US&quot;&gt;Abstractness.) :&amp;nbsp;&amp;nbsp; A = Na / Nc &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Bu metrik de kararsızlık metriği gibi 0 ile 1 arası bir değer alır .0 tamamen somut bir paketi gösterirken 1’e doğru yaklaştıkça paketin soyutluğu artıyor demektir.&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kararsızlık – Soyutluk Grafiği&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Durağan Soyutluk Prensibine&amp;nbsp; ( Stable Abstractions Principle - SAP) göre bir paket ne kadar durağan ise o kadar soyut olmalıdır.Paketin kararsızlık ve soyutluk değerleri üzerinden bir grafik oluşturulduğunda bu prensip görsel bir şekilde anlaşılabilmektedir.SAP prensibine göre eğer bir paket durağan ise (karasızlık 0 durumu) soyutluk o kadar artmalıdır. (soyutluk 1 durumu) .&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguqtZIxfDjXgu5QnOQeMxFmIZrw4VZxz9LJonwp3BH5oJZVpx9m2LDAI_Ma2G6J0_rvMnGuB-kYyR151NMj0pUhvb8XMWKcPYMbCCACwviFMZe6Qy1nsodvcql1mSGLZQ-kDkYU6PUlJMg/s1600/13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;362&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguqtZIxfDjXgu5QnOQeMxFmIZrw4VZxz9LJonwp3BH5oJZVpx9m2LDAI_Ma2G6J0_rvMnGuB-kYyR151NMj0pUhvb8XMWKcPYMbCCACwviFMZe6Qy1nsodvcql1mSGLZQ-kDkYU6PUlJMg/s400/13.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Üstteki grafikte SAP prensibine göre olması gereken ana çizgi görülmektedir.Ana çizginin dışında kalan bölgede bulunan paketler sıkıntılara yol açacaktır.&lt;/span&gt;&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667195&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911511&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661538&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Uzaklık Metriği&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Bu metrik , kararsızlık-soyutluk grafiğinde bahsedilen ana çizgiye göre paketin&amp;nbsp; uzaklığı belirler.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;D’ Normalize Uzaklık (Normalized Distance)&amp;nbsp; D’ = | A+I –1| &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu metriğin 0 çıkması paketin direk ana çizgi üzerinde olduğunu gösterir.1 çizgiden mümkün olan en büyük uzaklıktır.Metriğin değeri 0-1 arasıdır. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;D Uzaklık&amp;nbsp; (Distance)&amp;nbsp;&amp;nbsp; D =&amp;nbsp; |A + I – 1| &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----------------&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: Symbol;&quot;&gt;Ö&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;2 &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Bu metrik 0 - ~0,707 arası bir değer üretir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667196&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911512&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661539&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Doğrusal Bağımlılık Prensibi Metriği (The Acyclic Dependency Principle Metric - ADP/ADPR)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Doğrusal bağımlılık prensibi &lt;/span&gt;paketler arasındaki ilişki yapısında çevrimlerin bulunmaması yani döngüsel bağımlılıklar olmamasını gerektiğini söyler.&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeFwg0DEg7FpeUOqMXBuf6gHMZ2knQcwHiXuR4GEl3Qw8JSuB2FRg_1uYiIVi-cB2Iln2EMhZ6i4Qk0Rc7fASti8yD8naN66ICTl509RVDSrAzY1FJfQrKVJNOG42u-wbeIaj4yDCnjO0y/s1600/14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeFwg0DEg7FpeUOqMXBuf6gHMZ2knQcwHiXuR4GEl3Qw8JSuB2FRg_1uYiIVi-cB2Iln2EMhZ6i4Qk0Rc7fASti8yD8naN66ICTl509RVDSrAzY1FJfQrKVJNOG42u-wbeIaj4yDCnjO0y/s400/14.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bu metrik genel olarak bakılan paket ve alt paketleri ile birlik ADP prensibine olan uyumu yüzde cinsinden gösterir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Ndp&amp;nbsp; Paketler arası toplam Bağımlılık Sayısı (alt paketler dahil)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Ndac Paketler arası toplam doğrusal bağımlılık sayısı (alt paketler dahil)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ADP = (Ndac / Ndp ) * 100&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ADP’ye tam uyumluluk önemlidir.Dolayısıyla bu metriğin %100 çıkması gereklidir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667197&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911513&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661540&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bağımlılığın Çevrimi Prensibi Metriği (The Dependency Inversion Principle Metric - DIP)&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Soyut eşleme (abstract coupling) olarak da adlandırılan bu prensip kısaca bileşenler arası eşlemelerin (ya da bağımlılıkların) somut sınıflar üzerinden değil soyut sınıflar üzerinden yapılması gerektiğini söyler.&amp;nbsp;&amp;nbsp; DIP bir sınıf dizayn prensibi olduğu halde paket yapısı ölçümlemelerinin içinde de bir metrik olarak kullanılabilir.Bu metrik % cinsinden alınır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Nddp&amp;nbsp;&amp;nbsp; Paket içindeki sınıflar arası toplam bağımlılık sayısı (alt paketler dahil)&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Nddac Paket içindeki somut sınıflardan soyut sınıflara toplam bağımlılık sayısı (alt paketler dahil)&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; DIP&amp;nbsp; = (Nddac / Nddp ) * 100 &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Normal şartlarda bu metriğin vereceği değerlerin yorumu , bakış açısına göre değişir.Ancak genel beklenti uygulama özel paketlerde değerin düşük çıkması daha altyapıya yönelik paketlerde ise değerin yüksek çıkmasıdır. Değerin %100 çıkması tüm bağımlılıkların soyut sınıflara doğru kurulduğunu gösterir. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667198&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911514&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661541&quot;&gt;&lt;/a&gt;Kapsulleme Prensibi Metriği ( The Encapsulation Principle Metric&amp;nbsp; - EP)&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; İyi kurulmuş moduler bir yapıda ve kapsulleme prensibine uygun yapılarda paket içeriğinin gerçekleştirme detayları dış dünyaya kapalıdır.Bu metriğin yorumu incelenen pakete bağlı olsa da paketin kalitesi hakkında bir fikir verebilir.Metriğin değeri paketin kapsullenme derecesinin yüzde cinsinden ifadesidir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Ncc Pakette Dışarıya kapalı sınıf sayısı &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Nc&amp;nbsp; Paketteki toplam sınıf sayısı &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;EP =&amp;nbsp; ( Ncc / Nc ) * 100 &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Bu metrik paket kalitesi hakkında yorum yapmak için kullanılabilir ancak olması gereken değeri üzerinde bir tavsiye verilemez.Paketin yapısına göre yorum yapılmalıdır.&lt;span style=&quot;font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667199&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911515&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48661542&quot;&gt;&lt;/a&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sınırlı Boyut Prensibi Metriği ( The Limited Size Principle Metric LSP )&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; LSP prensibine göre bir paketin içindeki alt paket ve üst seviye sınıf sayısı belli bir boyutu aşmamalıdır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Nmx Proje için belirlenmiş paket sınırı sayısı (genellikle 10-15 arası)&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Ncp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Paket içindeki alt paket ve üst seviye sınıf sayısı &lt;/div&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: 35.4pt; text-align: left;&quot;&gt;&lt;span style=&quot;color: black; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 9pt;&quot;&gt;LSP =&amp;nbsp; (&lt;/span&gt;Ncp&amp;nbsp;&amp;nbsp;&amp;nbsp; / Nmx )&amp;nbsp; *&amp;nbsp; 100 &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Bu metriğin değerinin % 100 çıkması sınır değerine ulaşıldığını gösterir.100’ün üzerindeki değerler paket için aşırı yüklemeyi ifade eder.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;h1&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc49667203&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=6682793027261417326&amp;amp;postID=5096806789703521720&quot; name=&quot;_Toc48911518&quot;&gt;&lt;/a&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kaynakça&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;/h1&gt;&lt;div align=&quot;left&quot; class=&quot;MsoNormal&quot; style=&quot;mso-layout-grid-align: none; tab-stops: 35.4pt; text-align: left; text-autospace: none;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;McCabe, T.J., &quot;A      Complexity Measure&quot;, &lt;i&gt;IEEE Transactions on Software Engineering&lt;/i&gt;,      vol. SE-2, pp. 308-320, 1976.&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;Booch, G., &lt;i&gt;Object      Oriented Design with Applications&lt;/i&gt;, Redwood City, CA:      Benjamin/Cummings, 1991.&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span style=&quot;font-size: 13.5pt;&quot;&gt;Karl      E. Wiegers&lt;/span&gt;&amp;nbsp; , “A Software Metrics      Primer”&amp;nbsp; &lt;i&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;;&quot;&gt;Software Development      Magazine &lt;/span&gt;&lt;/i&gt;&lt;span lang=&quot;EN-US&quot;&gt;, July 1999&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt; text-align: left;&quot;&gt;&lt;span lang=&quot;EN&quot;&gt;Dr.      Linda H. Rosenberg , “Applying and Interpreting Object Oriented Metrics “      , Software Assurance Technology Center (SATC) at NASA&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;color: black; mso-layout-grid-align: none; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: left; text-autospace: none;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: windowtext;&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;color: windowtext;&quot;&gt;Software      Quality Metrics for Object Oriented System Environments “ ,&lt;/span&gt;&lt;span lang=&quot;EN&quot; style=&quot;color: windowtext;&quot;&gt; Software Assurance      Technology Center (SATC) at NASA , &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: windowtext;&quot;&gt;SATC-TR-95-1001&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;San Diego State University&amp;nbsp;      “Metrics “&amp;nbsp; Lesson Notes&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Edward V. Berard&amp;nbsp; ,      “Metrics for Object-Oriented Software Engineering “ , The Object      Agency&amp;nbsp; Inc. Web Site&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Edwin Hautus&lt;/span&gt;&lt;span style=&quot;font-family: TimesNewRoman; font-size: 10pt; letter-spacing: 0pt;&quot;&gt; ,” &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Improving&amp;nbsp; Java Software Through &amp;nbsp;Package Structure Analysis “ , Compuware      Europe &lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;TimesNewRoman,Bold&amp;quot;; font-size: 10pt; letter-spacing: 0pt;&quot;&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/5096806789703521720/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/yazlm-olcumleme.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/5096806789703521720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/5096806789703521720'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/yazlm-olcumleme.html' title='Yazılım Ölçümleme'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDmn5MRvqYxbPWSL_yioyuCniWIFrNdoFouaFFkjOydegNW25-YOk-RgHY9vdnY5zX1dsdH9e9Fy1oZc-45a8WsK3OzdgswZrcZJjJX38DA-Fzu41KCo4WTBurBCuO6u3kj0XYuiAupQMv/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-1065376252601034244</id><published>2011-04-18T15:36:00.004+03:00</published><updated>2011-04-22T12:47:29.806+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Object Oriented Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><title type='text'>Nesne Yönelimli Yazılımda Temel Kavramlar</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;Selamlar,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; İlgilenenler&amp;nbsp; için faydalı olabileceği düşüncesiyle eski yazılarımdan bazı hazır içerikleri blog&#39;umda yayınlayacağım. Umarım ilginizi çeker.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Esen Kalın. &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nesne yönelimli programlama 80’li yıllarda C++ ile popüler olan bir kavramdır.Sunduğu yeniden kullanım , kolay anlaşılırlık , kolay adaptasyon vb. özelikleri ile dikkat çekmiştir.Günümüzde yazılım geliştiricilerin çoğu bu disiplin ile yazılım geliştirmektedir.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Nesne yönelimli programlamada&amp;nbsp; karşımıza çıkan en temel kavram &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;sınıf&lt;/b&gt; &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;(class)&lt;/b&gt; kavramıdır.Nesne yönelimli programlama&amp;nbsp; bize gerçek dünyaya daha yakın bir programlama imkanı sunar.Gerçek dünyada biz nasıl etrafımızdaki tüm nesneleri özellikleri ve davranışları ile tanımlıyorsak , nesne yönelimli programlamada da aynı şekilde tanımlamaktayız. Örneğin yazı yazdığımız kalemi cinsi , boyu , rengi gibi özellikleri ile tanımlarız.Bunun yanı sıra kalem kağıt üzerinde yazı yazma davranışı sergiler. &lt;/div&gt;&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Sınıf aynı özellik , nitelik , davranış ve anlamı taşıyan nesnelerin kalıbıdır&amp;nbsp; diyebiliriz.Sizin mavi renkli yazan dolmakaleminiz de , kurşun kaleminiz de sonuçta&amp;nbsp; kalem sınıfının birer örneğidir.Birbirlerinden farklı nitelikler taşısalar da ortak &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;özellik&lt;/b&gt; (&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;attributes&lt;/b&gt;)&amp;nbsp; ve &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;davranışlar (behaviours)&lt;/b&gt; ile tanımlanmaktadırlar.Kalem sınıfı şu şekilde tanımlanabilir :&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_9XKWT_Gp4-UmPqb9Ac8hvNGQKx_WWSDob6OglyRUIizoH7JZrfmYf_I48HHamMuHljFdg25hBksp5N0ddWL_mzSSvVdFrLYFEhFEEIQ39D1DrWQ5Nf1gwHqSuXC17ldqZLGe8BfPBEv-/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_9XKWT_Gp4-UmPqb9Ac8hvNGQKx_WWSDob6OglyRUIizoH7JZrfmYf_I48HHamMuHljFdg25hBksp5N0ddWL_mzSSvVdFrLYFEhFEEIQ39D1DrWQ5Nf1gwHqSuXC17ldqZLGe8BfPBEv-/s1600/1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Sınıfların özellikleri dilin doğal değişken tiplerinden oluşabileceği gibi başka sınıflardan da oluşabilir.Örneğin kalem kutusu diye bir sınıf tanımlansa muhtemelen özellikleri içerisine sahip olduğu kalemlerin de yani kalem sınıfının da konması gerekecektir.Bu durumda kalem kutusu sınıfı aynı zamanda kalem sınıfı ile&amp;nbsp; &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;ortaklık (&lt;/b&gt;&lt;/span&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;association&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot;&gt; kurmuş olarak adlandırılır.Bu ilişki “kalem kutusu&amp;nbsp; kalemlere sahiptir” şeklinde okunabilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbM2fQIElDtvTGbaHaJgwlD_YsDKlqfjbJbAlI2HTeq0rAIS9OAfyhtN71g8ZOY7lnWV772NBHqRXJRsgKJvZoqx7QbURvodA7e0QYgOSoUAlQVIjUJmZHQF-lpJ7wsaqVx1NvjTtF7o_F/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbM2fQIElDtvTGbaHaJgwlD_YsDKlqfjbJbAlI2HTeq0rAIS9OAfyhtN71g8ZOY7lnWV772NBHqRXJRsgKJvZoqx7QbURvodA7e0QYgOSoUAlQVIjUJmZHQF-lpJ7wsaqVx1NvjTtF7o_F/s1600/2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bu ilişkiye &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;sahiplik (has a)&lt;/b&gt; ilişkisi denir.Eğer bir nesnedeki&amp;nbsp; her zaman bir diğerini de etkiliyorsa ya da var olmak için diğerine ihtiyaç duyuyorsa o zaman burada bir &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;bağımlılık (dependency) &lt;/b&gt;ilişkisi vardır. Örneğin departman ile çalışanlar arasında ki ilişki gibi.Çalışanları olmıyan bir departman hiçbir zaman var olamaz.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJi2K26UOysJShAXrRI_8j3xF1hGogKfn0tJJmtovHd0CAWYTs-d0jxA6BE5CRblQo7ha5V8mshyphenhyphenCkkq1bKKnB9YHDqHZ_I1irLPoZbBxBQauwqZh0tLWTeCZDMkh11y3p7JVybq6c33uj/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJi2K26UOysJShAXrRI_8j3xF1hGogKfn0tJJmtovHd0CAWYTs-d0jxA6BE5CRblQo7ha5V8mshyphenhyphenCkkq1bKKnB9YHDqHZ_I1irLPoZbBxBQauwqZh0tLWTeCZDMkh11y3p7JVybq6c33uj/s1600/3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; Sınıfın&amp;nbsp; yaratılan bir&amp;nbsp; örneğine &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;(instance)&lt;/b&gt; ise nesne &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;(object)&lt;/b&gt; diyoruz.Bu durumda mavi renkli yazan dolmakaleminiz , kalem sınıfının bir &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;örneği (instance)&lt;/b&gt; olan bir &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;nesne (object)&lt;/b&gt; olur.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp; &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZACC1Uz2OKP3XLRDMJj2H2ROJ9yjHEez9k0M1DPaNsIj0nYBVpLzEaQbQVHq59YdGc-xywdo1w-MWH9jX0Mw2LcUin9x5FDQxXSOzs-1dDg7XSWaFc3zdri3NzY9FbmYX1Z7IgQOD0sfW/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;118&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZACC1Uz2OKP3XLRDMJj2H2ROJ9yjHEez9k0M1DPaNsIj0nYBVpLzEaQbQVHq59YdGc-xywdo1w-MWH9jX0Mw2LcUin9x5FDQxXSOzs-1dDg7XSWaFc3zdri3NzY9FbmYX1Z7IgQOD0sfW/s320/4.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Nesne yönelimli programlamada nesneler birbirlerinin fonksiyonlarını kullanmazlar.Bunun yerine birbirleriyle &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;mesajlar (messages)&lt;/b&gt;&amp;nbsp; aracılığıyla haberleşirler.Görünüşte fonksiyonel yapıyla benzeşse de kavramsal olarak tamamen farklıdır.Sınıflar bir fonksiyonlar topluluğu değildir.Sınıf belli bir kavramın bilgisayar dilinde somutlaştırılmış halidir.Nesnelerin birbirlerine mesaj göndermesi sundukları &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;methodlar (methods)&lt;/b&gt; üzerinden parametreler aracılığıyla (Örn. Kalem sınıfındaki yaz methodu) olur. Methodlar sınıfın dışarıya sunduğu arabirim oldukları gibi (her method dışa açık değildir) davranışlarında gerçekleştirildiği birimlerdir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Burada daha fazla ilerlemeden nesne yönelimli programlamanın dört temel ilkesi üzerinde durmak faydalı olacaktır.Bu ilkeler :&lt;/span&gt;&lt;/div&gt;&lt;ol start=&quot;1&quot; style=&quot;margin-top: 0cm;&quot; type=&quot;1&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Soyutlama (Abstraction)&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kapsulleme (Encapsulation)&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kalıtım (Inheritence) &lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l0 level1 lfo2; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Polimorfizm (Polymorphizm)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;olarak anılırlar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoHeader&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;Soyutlama (Abstraction)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Sınıfların belli kavramların bilgisayar dilinde somutlaştırılmış hali olduğundan bahsetmiştik. Kavramların özelliklerinin ve davranışlarının tanımlanmasına biz &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;soyutlama&lt;/b&gt; diyoruz.Bir başka deyişle soyutlama , bir sınıfın , sınıf olmasını sağlıyan şeylerin tanımlanmasıdır diyebiliriz.Örneğin araba ve gemi her ikisi de birer taşıttırlar .Ancak belli özellikleri ile birbirlerinden ayrılırlar. Örneğin araba sınıfını tekerlek sayısı , ağırlığı , hızı , motor gücü , kaç kapılı olduğu vb. özellikleri ile yürümesi , hızlanması , durması vb. davranışları ile&amp;nbsp; tanımlayabiliriz.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Sınıfın belli bir kavramı temsil etmesinin yanı sıra kavram karmaşası da yaratmaması gerekir.Her sınıf kavramsal olarak bir düşünceye isabet etmelidir.Örneğin bir yolcu uçağı ile bir savaş uçağı birbirlerine çok benzeştikleri halde ayrı sınıflardır ve bunu belirtecek şekilde tanımlanmalıdırlar.Kavramsal olarak bir düşünceyi temsil eden ve karmaşıklık yaratmayan sınıflar &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;uyumlu ( cohesive )&lt;/b&gt; sınıflar olarak anılırlar. Programlamanın belki de en önemli ilkesi düşüncenin basit tutulmasıdır.&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Uyumluluk (cohesion)&lt;/b&gt; bu ilkenin nesne yönelimli programlamada adlandırılmasıdır denilebilir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoHeader&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kapsulleme (Encapsulation) &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Niteliklerin ve davranışların sınıflarda bir arada bulunmasına kapsulleme denir.Bir başka deyişle kavram nitelikleri ve davranışları tanımlanarak – ya da soyutlanarak -&amp;nbsp; bir sınıf içerisinde kapsullenir. Kapsulleme aynı zamanda sınıfın hangi niteliklerinin ve davranışlarının dışarıya sunulup sunulmıyacağını da belirler.Sınıfın tüm nitelik ve methodları dış dünyaya açık olmak zorunda değildir.Yine basit olma ilkesinden hareketle , gereksiz method ve niteliklerin dışarıya açılması kafa karıştırıcı ve gereksiz bir eylem olacaktır.Örneğin bir insan sınıfı tanımlarken muhtemelen karaciğerinin büyüklüğü bizi hiç ilgilendirmemektedir.Ancak bu sınıfın böyle bir özelliği vardır ve sınıfın kendi iç çalışması için gereklidir.Bilgilerin bu şekilde gizlenmesine &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;bilgi saklama (information hiding)&lt;/b&gt; denir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Sınıfın nitelikleri ve methodları public , protected , private , package (friend) gibi terimlerle dışa olan açıklığı , görünürlüğü belirlenir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Public : Dışa açık ve herkez tarafından erişebilen elemanlardır&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Protected : Dış erişime kapalı sınıf içinde ve alt sınıflarda      da kullanılabilen elemanlardır&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Private : Sadece o sınıf içinde kullanılabilen , alt sınıflar      tarafından da kullanılamıyan elemanlardır&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Package (friend) : Ait olunan&amp;nbsp;      paket içindeki sınıflar tarafından kullanılabilen , paket dışı      erişime kapalı elemanlardır&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoHeader&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kalıtım (Inheritance) &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Nesne yönelimli programlamada sınıflar birbirlerinden türiyebilirler.&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Alt sınıflar (sub classes)&lt;/b&gt; türedikleri &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;üst sınıfın (super class)&lt;/b&gt; tüm özellik ve davranışları aynen alırlar.Bu özelliğe &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;kalıtım&lt;/b&gt; &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;(inheritance) &lt;/b&gt;özelliği denir.Bunun anlamı , alt sınıfların&amp;nbsp; üst sınıfların&amp;nbsp; nitelik ve methodlarını sanki kendi üzerlerinde kodlanmış gibi kullanabilmeleridir.Örneğin araba ve gemi her ikiside birer taşıttır.Taşıtların ortak özellikleri kapasitesi , gitmesi , durması ,&amp;nbsp; hızlanması vb. sayılabilir.Aslında hem gemi hem araba için bunlar aynıdır ve ortak bir üst sınıfta toplanabilirler.Kalıtım özelliği aynı kodun yeniden kullanımı için sunulan çok güzel bir yöntemdir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFCMStjLPgob0TKM4wipjXwfiJJLwEzSX1k2Q_c-X1E8qwifYPxpypGPCCDL6hkP6gqtZv8kiUac-tMABd7SIQlwx4X3o7ZBabAeSiBkoy7-3f0XPrKQDJyXhBo7U0QXpb01Zr_fC9tb3c/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFCMStjLPgob0TKM4wipjXwfiJJLwEzSX1k2Q_c-X1E8qwifYPxpypGPCCDL6hkP6gqtZv8kiUac-tMABd7SIQlwx4X3o7ZBabAeSiBkoy7-3f0XPrKQDJyXhBo7U0QXpb01Zr_fC9tb3c/s1600/5.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Bazı dillerde bir sınıf sadece bir başka sınıftan kalıtım alabilirken (türiyebilirken) bazı dillerde bu birden fazla sınıftan olabilir.Bu özelliğe &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;çoklu kalıtım (multi inheritence)&lt;/b&gt; denir.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEnHcNAm_dO-Sx0sHpTJkmkgKY2NNjSAsqm7lKbsgghT0hN8qY3Crzrz4lO5xVoxO6wvx-XkpapaM2zv2rR3zDuY9xF_W0ClHVLxOJJhrLWgSAoE-WpGlvdFMDqrGOwwhWA5d4DWInQLd8/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEnHcNAm_dO-Sx0sHpTJkmkgKY2NNjSAsqm7lKbsgghT0hN8qY3Crzrz4lO5xVoxO6wvx-XkpapaM2zv2rR3zDuY9xF_W0ClHVLxOJJhrLWgSAoE-WpGlvdFMDqrGOwwhWA5d4DWInQLd8/s1600/6.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Araba ve taşıt örneğindeki ilişki “araba bir taşıttır” (“&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;is a “ &lt;/b&gt;ilişkisi)&amp;nbsp; olarak okunur ve bu ilişkiye &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;genelleştirme de ( generalization )&lt;/b&gt;&amp;nbsp; denir.Alt sınıflar aynı zamanda üst sınıf özellikleri de taşıdıklarından yazılım içinde sanki üst sınıfmış gibi ya da onun yerine de kullanılabilirler.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Nesne yönelimli programlamada bazı üst sınıflar bazı methodlarını alt sınıflarda tamamlanmak üzere sadece tanımlayarak (sadece methodu belirterek ) bırakabilirler . Bu tip sınıflara &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;soyut (abstract)&lt;/b&gt; sınıf adı verilir.Tüm methodları sadece tanımlanmış ama kodlanmamış sınıflara &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;arabirim (interface)&lt;/b&gt; adı verilir. Tüm kodlaması tamamlanmış sınıflar ise &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;somut (concrete)&lt;/b&gt; sınıf olarak adlandırılır.Somut bir sınıfın soyut bir sınıftan türediği ilişki türüne &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;gerçekleştirme (realization)&lt;/b&gt; adı verilir.Bu tarz üst sınıflar alt sınıflara yeniden kullanılabilir davranışlar verilemediği ancak davranış kalıbının belirlenmek istediği durumlarda kullanışlıdır. &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Yeniden kullanılabilirliği arttırmak için sınıflar dizayn edilirken kavramlar genelden özele doğru kategorize edilmeli ve gerekli üst sınıflar ortaya çıkarılmalıdır.Bazı durumlarda kendi başına anlam ifade etmeyen hatta tamamen soyut üst sınıfların ortaya çıkması tamamen doğal birşey olarak algılanmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoHeader&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;Polimorfizm (Polymorphizm)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Alt sınıflar üst sınıflarda belirlenmiş davranışlara aynı tepkileri vermek zorunda değildir. Yine taşıt örneğinden yola çıkarsak gitmek davranışı araba ve gemi için farklı şekillerde olur.Biri yürüken diğeri yüzer ancak sonuçta her ikisi de gitme eylemini gerçekleştiriyordur.Alt sınıfların bu şekilde farklılıklar gösterebilmesi özelliğine&amp;nbsp; polimorfizm denir.Bu özellik pratikte üst sınıf tarafından sunulan &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;methodların üzerinin yazılması (method overriding)&lt;/b&gt; ile olur.Alt sınıf methodu kendine göre değiştirerek ezer.Ancak methoddan beklenen sonucun tipi değiştirilemez.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp; Alt sınıflar doğaları gereği üst sınıflara göre ek özelliklerle ve&amp;nbsp; veya davranışlar göstermek zorundadırlar.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Nesneler işlevlerini yerine getirmek için başka nesnelere ihtiyaç duyabilir. Nesneler arasında&amp;nbsp; ister diğer nesnenin bir nitelik olarak tanımlanması olsun , ister bir mesajlaşma şekilde olsun , kurulan ilişkiler (kalıtım ilişkisi dışında) &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;eşleme ( coupling )&lt;/b&gt; olarak adlandırılır.Bir nesneye&amp;nbsp; çalışmak için ihtiyaç duyduğu sınıf (nesne değil) sayısı kadar eşleme yapılmış olur.Eşleme kavramı sınıfın karmaşıklığı ile direk alakalıdır.Sonuçta nesne ile diğer sınıflar ile ne kadar çok eşleme yapılmış ise çalışma sisteminin çözülmesi o kadar karmaşık olacaktır.Bu kavram prensipleri ve metrikleri açıklarken oldukça sık karşımıza çıkacaktır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp; Nesneler dünyasında sıklıkla karşımıza çıkacak bir kavramda &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;durum (state)&lt;/b&gt; kavramıdır.Nesnenin niteliklerinin belli bir andaki durumu özellikle nesnenin yaşam döngüsünün tariflemesinde önemlidir.Bazı sınıfların yapısı ve anlaşılması son derece karmaşık olabilir.Nesneler çeşitli durumlarında farklı davranışlar da gösterebilirler.Nesnenin bir durumdan diğerine geçmesine &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;durum değişikliği (state change)&lt;/b&gt; denir.Bu durum değişikliğine ise &lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;olaylar (events)&lt;/b&gt; sebep olurlar.(Örneğin bazı tip mesajların gönderilmesi gibi) .Durumlar ,&amp;nbsp; olaylar ve durum geçişleri bize kavramsal olarak bir kolaylık sağlar.&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Olay yönelimli (event driven)&lt;/b&gt; programlama yapısıda bunun üzerine kurulmuş bir yapıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu5t-Rs5DRu0ZVmOh2Lp5MHb62ZCaqGTXyx6CGqppG4IaGoKow_-kmix4udCA-jvC2okDTN-KSlCDrTnNnvuwpZQPjPdeOdvKcVWB-_BPObnKu_Jl8zsHeoTaboqn7BOG9oa0XPEN2qXHK/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu5t-Rs5DRu0ZVmOh2Lp5MHb62ZCaqGTXyx6CGqppG4IaGoKow_-kmix4udCA-jvC2okDTN-KSlCDrTnNnvuwpZQPjPdeOdvKcVWB-_BPObnKu_Jl8zsHeoTaboqn7BOG9oa0XPEN2qXHK/s320/7.png&quot; width=&quot;264&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;span lang=&quot;EN-US&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/1065376252601034244/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/nesne-yonelimli-yazlmda-temel-kavramlar.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/1065376252601034244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/1065376252601034244'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/nesne-yonelimli-yazlmda-temel-kavramlar.html' title='Nesne Yönelimli Yazılımda Temel Kavramlar'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_9XKWT_Gp4-UmPqb9Ac8hvNGQKx_WWSDob6OglyRUIizoH7JZrfmYf_I48HHamMuHljFdg25hBksp5N0ddWL_mzSSvVdFrLYFEhFEEIQ39D1DrWQ5Nf1gwHqSuXC17ldqZLGe8BfPBEv-/s72-c/1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-5886984162751215049</id><published>2011-04-15T16:56:00.006+03:00</published><updated>2011-04-22T12:48:41.377+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Quality"/><title type='text'>Yazılımda Kalite Kavramı</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Yazılım geliştirme sektöründe verimlilik kavramı , kaliteden ödün vermeden hızlı yazılım geliştirebilmek olarak tanımlanmaktadır.”Kaliteli” , beklentileri yakalayan hatta aşan ürün ya da hizmetler kullanılan bir terimdir.Kaliteli bir yazılımdan beklentiler genel olarak şu şekilde özetlenebilir :&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Doğruluk      (Correctness) &lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Verilen görevlerin tam olarak yerine getirilmesi olarak açıklanabilir.Bir yazılıma başlamadan önce beklentilerin tam olarak belirlenmesi gerekir.Yazılım ortaya çıktıktan sonra beklenen özellikler tam olarak sağlanmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Dayanıklılık      (Robustness)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Beklenmedik nedenlerden dolayı programın çalışması kesilmemeli , yanlış işlemler yapılmamalıdır.Sistem&amp;nbsp; iyi yönde de olsa kendinden beklenmeyen işler yapmamalıdır.Sistemin programcı hataları yüzünden kesintiye uğramaması için gerekli önlemler alınmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Genişleyebilme      (Extendibility)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;İleri aşamalarda verilen görevlerin değiştirilmesi ya da yenilerinin eklenmesi kolay olmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Tekrar kullanım      (Reusability)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılımın ya da yazılımın parçalarının başka yazılımlar içerisinde kullanılabilmelidir .&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Uygunluk      (Compability)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Endüstride kabul görmüş standardların (veri yapıları , mesaj yapıları ,kullanıcı yüzü vb) yazılım içerisinde uygulanması.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Standardlaştırma      (Standardization)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Sistemin içerisinde kullanılacak standardların belirlenerek , tüm yazılımda buna uyulması.Standardlaştırma kaynak kodunda kullanılacak isimlendirmeden , kullanıcı ön yüzlerinin renklere kadar geniş bir kapsamda uygulanmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Etkin Kaynak      Kullanımı (Efficiency)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bir yazılım çalıştığı ortamdaki tüm ekipmanları en iyi şekilde kullanmalıdır.Kaynakları eksik kullanmamak , gereğinden fazla kullanmamak , ortamın çalışmasına en az şekilde etkilememek olarak sayılabilir.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Taşınabilirlik      (Portability)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bir yazılımın geliştirildiği ortamlardan farklı ortamlara da taşınarak çalışması olarak özetlenebilir.Yazılım iki şekilde taşınabilir :&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;1.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kaynak Taşımalı : Yazılımın kaynak kodunun farklı bir ortama taşınıp tekrar derlenerek çalıştırılabilmesi &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 54.0pt; mso-list: l0 level1 lfo2; tab-stops: list 54.0pt right 432.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;2.&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Hedef Taşımalı&amp;nbsp;&amp;nbsp; : Yazılımın icra edilebilir dosyalarının taşınarak tekrar çalıştırılabilmesi&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kontrol Edilebilirlik      (Verifiability) &lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;circle&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level2 lfo1; tab-stops: list 72.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bir yazılımın hatalı durumlar ile karşılaşması durumunda       kullanıcıya ve programcıya hata hakkında yeterli bilgi verebilmesi&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level2 lfo1; tab-stops: list 72.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılımın çalışma şekli&amp;nbsp;       hakkında bilgi verebilmesi (çalışma süreleri&amp;nbsp; , çalışma zamanları vb)&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level2 lfo1; tab-stops: list 72.0pt right 432.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılımın kod akışının gereğinde izlenebiliyor olması &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Bütünlük (Integrity)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;İstenmeyen erişimler ve değiştirmeler karşısında program , veri , doküman gibi elemanların korunması .Hata durumlarında tutarsızlıklar olmasına&amp;nbsp; izin verilmemesi.Örneğin programın bilgisi dışında bir dosyanın silinmesi halinde programın bunu anlayıp rapor etmesi.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Kolay Kullanım (Easy      of use)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılım ürününü kullanan kişinin ürünü kolayca öğrenmesi , sonuçlarını yorumlayabilmesi , hatalarını düzelterek işlerini fazla bir zahmete girmeden yapabilmesi.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Beraber Çalışma      (Interoperability)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılımın ihtiyaç duyduğu diğer yazılımları çağırabilmesi veya bir yazılım tarafından çağırılabilmesi özelliğidir.Bu durumda iki yazılım ardarda çalışma yanı sıra veri alışverişinde de bulunabilmelidirler.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Dokümantasyon      (Documentation)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılımı meydana getiren öğeler (standardlar , mimari , dizayn , algoritmalar vb) açık ve anlaşılır bir şekilde dokümante edilmiş olmalıdır.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Güvenilirlik      (Reliability)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt; text-indent: -18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hazırlanan &lt;/span&gt;uygulamaların yüksek erişilebilirlik oranlarına sahip olması gereklidir. Sistem örneğin 7X24 erişilebilir olmalıdır.Yazılım tamamen ya da kısmen çökse bile kısa zaman içerisinde ayağa kaldırılabilmelidir.&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;Ölçeklenebilirlik      (Scalability)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;Hazırlanan yazılımlar ileride olabilecek kapasite artışlarını (örneğin kullanıcı sayısının artışı) karşılayabilir ve çözümü adreslemiş olmalıdır.&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Hata Engelleme&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılım kullanıcıların hata yapmasını engellemelidir.Örneğin işlemler yerine getirilmeden kullanıcıdan doğrulama istenmesi , işlem sonucunun önceden bildirilmesi vb.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Son Kullanıcı Desteği      (End User Support)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılım son kullanıcıya kullanım hakkında yeterli yardımı sunabilmelidir.Ayrıca kolay kurulabilir olması ve yazılımın sürümü hakkında yeterli bilgi vermesi de gereklidir.&lt;/span&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0cm;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;mso-list: l1 level1 lfo1; tab-stops: list 36.0pt right 432.0pt;&quot;&gt;&lt;b style=&quot;mso-bidi-font-weight: normal;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Güvenlik (Security)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;Yazılım yetkili olmayan kullanıcıların işlem yapmasını ve verilere erişimini engellemeli , kritik verilerin şifreli şekilde saklamalıdır.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 18.0pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&amp;nbsp; Tüm bu özelliklerin sağlanabilmesi pek çok disiplinin yazılım süreçleri boyunca&amp;nbsp; uygulanması ile mümkün olabilir.Bu yazıda dizayn üzerinde ağırlıklı olarak durulmuşsa da bu tek başına kaliteli yazılım için yeterli değildir.Doğru dizaynın yanı sıra isteklerin toplanması , analizi , değişikliklerin ele alınması , risk kontrolünün yapılması&amp;nbsp; , sınamaların yapılması , dokümantasyonun yapılması vs gibi pek çok disiplin doğru şekilde uygulanmalıdır.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;Sağlıcakla Kalın.&amp;nbsp; &lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/5886984162751215049/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/yazlmda-kalite-kavram.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/5886984162751215049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/5886984162751215049'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/yazlmda-kalite-kavram.html' title='Yazılımda Kalite Kavramı'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6682793027261417326.post-72148070199376680</id><published>2011-04-15T16:53:00.004+03:00</published><updated>2011-04-20T14:45:37.143+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Architecture and  Design"/><title type='text'>Mimari Stillerin Birleştirilebilirliği Hakkında</title><content type='html'>&amp;nbsp; BT dünyası hakkında zihnimdeki serbest çağrışımları paylaşacağım güncenin ilk yazısına sebep olan şey bir meslektaşımda rastladığım zihin karışıklığı oldu. Benzer durumlarla daha önce de karşılaştığımdan ve futbol taraftarı gibi bir yazılım mimarisi taraftarı olmayı hiç de doğru bulmadığımdan bu yazıyı ele almaya karar verdim.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Genel bir prensip olarak,&amp;nbsp; yazılım mimari stilleri karşılıklı olarak birbirlerini dışlamıyorlar ise birleştirilebilirler (Zannediyorum&amp;nbsp; bu özellik bilgi teknolojileri dışındaki çeşitli alanlar için de geçerlidir). Bir başka deyişle hazırlanan bir sistem içerisinde farklı mimari stilleri aynı anda bir arada uygulanabilir. Üstelik bu sıklıkla arzu edilen de bir durumdur.&amp;nbsp; Örneğin bir uygulama ilişkisel veri mimarisi, nesne yönelimli mimari ve model yönelimli mimariyi bir arada rahatlıkla bulundurabilir. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Hal böyleyken sıklıkla karşılaştırma yapma ya da bir mimari stili öldürme meraklıklarına rastlıyorum. Bu yazıyı yazmamdaki sebep bu kişilere çatma isteğim değil elbette, özellikle IT dünyasına yeni adım atan kişilerin gereksiz&amp;nbsp; zihinsel karmaşalara kapılmalarını önlemeleri için küçük bir tavsiye vermek. Nesne yönelimli yazılımı öldürüp yerine servis odaklı mimari geçirmeye çalışanlar, ya da servis odaklı mimariyi işe yaramaz ilan edip yerine kaynak odaklı mimari geçirmeye çalışanlar sıklıkla herhangi bir yazılım departmanında karşınıza çıkabilir ve daha da kötüsü sizide saflarına çekebilirler.Benim durumumda iseniz de size gereksiz ikna seansları yaşatabilirler.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Bu tarz karşılaştırmalara dalmadan evvel size önerim karşılaştırılan stillerin gerçekten birbirini dışlayan ve birbirini ikame eden&amp;nbsp; stiller olup olmadığını iyice düşünmenizdir. Eğer böyle değil ise sadece birinin tarafı olmak yerine her iki stilin de en iyi yönlerinin birleştirilebilirliği konusunda kafa yormak daha iyi olacaktır. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; Aksine karşılaştırmalar görseniz de varsayımsal bir yazılım sisteminin şu stilleri bir arada taşıması pekala da mümkündür: Object Oriented, Aspect Oriented, Process Driven, Event Driven, Resource Oriented, Web Oriented, Service Oriented. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; Sağlıcakla Kalın</content><link rel='replies' type='application/atom+xml' href='http://serhatdirik.blogspot.com/feeds/72148070199376680/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/mimari-stillerin-birlestirilebilirligi.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/72148070199376680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6682793027261417326/posts/default/72148070199376680'/><link rel='alternate' type='text/html' href='http://serhatdirik.blogspot.com/2011/04/mimari-stillerin-birlestirilebilirligi.html' title='Mimari Stillerin Birleştirilebilirliği Hakkında'/><author><name>xyz</name><uri>http://www.blogger.com/profile/13009912706574556747</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>