<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >
<channel>
<title>پویا بلاگ</title>
<link>http://pooyablog.blogfa.com</link>
<description>من ،نرم افزار و زندگی </description>
<language>fa</language>
<generator>blogfa.com</generator>
<lastBuildDate>Fri, 04 May 2012 12:31:00 GMT</lastBuildDate>
<item>
<title>کتابروش کاربردی  تحلیل نیازمندی های نرم افزاری در نمایشگاه 1391</title>
<link>http://pooyablog.blogfa.com/post-54.aspx</link>
<description>
&lt;div style=&quot;text-align: justify;&quot;&gt;امسال نیز کتاب روش کاربردی تحلیل نیازمندی های نرم افزار به نمایشگاه کتاب آمده است، غرفه اصلی کتاب ، غرفه انتشارات آن یعنی &lt;strong&gt;انتشارات رسم&lt;/strong&gt;  در &lt;strong&gt;شبستان جنوبی راهرو 18 و غرفه 3&lt;/strong&gt; است همچنين نشر الیاس و کوشا نیز آن را در نمایشگاه ارائه خواهند کرد.&lt;/div&gt;&lt;p&gt;

&lt;/p&gt;
</description>
<pubDate>Fri, 04 May 2012 12:31:00 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-54.aspx</guid>
</item>
<item>
<title>این روزهای من</title>
<link>http://pooyablog.blogfa.com/post-53.aspx</link>
<description>&lt;div style=&quot;text-align: justify;&quot;&gt;نزدیک به سه هفته است همچو موتور ساعت در حال کارم، دقيقه ای استراحت ندارم و الان که این مطلب را می نویسم ظهر جمعه است و من سر کارم، روزهای بسیار پر مشغله ای را می گذرانم و هنوز فرصتی دست نداده که مطالب مرتبط  با معماری را پیگیری کنم، در حال راه اندازی پروژه بزرگی هستیم که پوستمان را کنده است، اما بی شک خلف وعده نخواهم کرد و ادامه مطالب معماری  را نیز با اولویت در لیست کارها خواهم گذاشت، اما با کمی تاخیر&lt;/div&gt;&lt;p&gt;

&lt;/p&gt;</description>
<pubDate>Fri, 04 May 2012 12:28:07 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-53.aspx</guid>
</item>
<item>
<title> الگوهای طراحی و معماری-2</title>
<link>http://pooyablog.blogfa.com/post-52.aspx</link>
<description>
 &lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;strong&gt;&lt;span dir=&quot;ltr&quot;&gt;Domain Logic&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Model&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; &lt;span lang=&quot;FA&quot;&gt;– بخش اول :&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;منظور از اين مدل، &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot; dir=&quot;ltr&quot;&gt;object model&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;ي &lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;از دامنه مساله است که هر &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;کلاس آن شامل &lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;رفتار و
ساختار موجوديتي(&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot; dir=&quot;ltr&quot;&gt;Entity&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;)
از موجوديتهاي &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;آن &lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;دامنه است، براي مثال،
&quot;سند حسابداري&quot;، که از مجموعه اي از آرتيکلها، تاريخ، شماره عنوان و &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;و&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;ضعيت ساخته مي شود، از سويي مي تواند متد يا رفتاري با نام &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;BALANCE&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;را در خود داشته باشد که
تراز بودن آن را مشخص مي کند، &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;يادآوري مي کنم در روشي مانند &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Transaction
Script&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; 
&lt;/span&gt;متدي در يک کلاس که تراکنش ثبت سند را انجام مي دهد وجود دارد که تراز بودن
سند را بررسي مي کند در حالي که در الگوي حاضر اين متد درون خود کلاس سند قرار مي
گيرد&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: rgb(51, 51, 51);&quot;&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;نمودار &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain Model&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;
، شبيه به نمودار &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Database Model &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; &lt;/span&gt;است،با اين تفاوت&lt;span&gt;  &lt;/span&gt;که در آن موجوديتها علاوه بر ساختار، داراي
رفتار و پروسس بوده و در مدل، شبکه اي پيچيده از ارتباطات (&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Association&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;)بين اشيا و رابطه ارث بري (&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Inheritance&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;) بين آنها وجود دارد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;خلاصه اينکه &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain Model&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;
متشکل از شبکه اي از اشيا به هم مرتبط از موجوديتهاي دامنه مساله است، هر موجوديت
در دامنه مساله فارغ از سايز و اندازه اش و پيچيدگيش، داراي معناي خاص و واضحي است
براي مثال &quot;شرکت&quot; موجوديتي بزرگ و &quot;سفارش خريد&quot;&lt;span&gt;  &lt;/span&gt;موجوديتي کوچک در دامنه مساله سيستم &quot;پيگيري
سفارشات&quot; است که هر دو در مدل، کلاسهايي نظير براي خود دارند. بديهي است &lt;span&gt; &lt;/span&gt;استفاده از &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain Model &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; &lt;/span&gt;در يک&lt;span&gt; 
&lt;/span&gt;برنامه به معناي قرار دادن تمام شبکه اشياء ساخته شده براي مساله در آن
دامنه است، پس بهتر است از همين ابتدا ذکر کنم که خيال کندن بخشي از يک مدل&lt;span&gt;  &lt;/span&gt;و قرار دادن آن د برنامه اي ديگر را از ذهنتان
بيرون کنيد، اين کار در ادامه پروژه تان به فاجعه منجر خواهد شد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; &lt;/span&gt;در مدل مورد بحث، ميتوان
اشياء را به دو دسته تقسيم کرد، اشيايي که داراي ساختاري معادل با موجوديت هاي
مساله هستند و اشيايي که تنها قوانين و&lt;span&gt; 
&lt;/span&gt;آلگوريتمهاي محاسباتي مختلف را در خود دارند و به اقتضاي نيازهاي غير عملکردي
در سيستم بوجود آمده اند، براي مثال&lt;span&gt;  &lt;/span&gt;مي
توان به شي کارمند و احکام حقوقي او در سيستم حقوق دستمزد و شي محاسبه کننده
کسورات بر اساس نوع بيمه کارمند اشاره کرد، دو شي اولي داراي ساختاري از اطلاعات
دامنه مساله و دومي در برگيرنده آلگوريتمهاي محاسبه&lt;span&gt;  &lt;/span&gt;کسورات بر حسب نوع بيمه و قرارداد کارمند است. لازم
به ذکر است که در الگوي &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain model&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;
&lt;span lang=&quot;FA&quot;&gt;اولويت با ترکيب الگوريتمها در کلاس نماينده موجوديتهاست و تنها
بايد بر حسب ضرورتهاي طراحي و بر اساس الگوهاي طراحي نسبت به استخراج آلگوريتمها و
محاسبات و قرار دادن آنها در کلاسهاي جداگانه اقدام کرد.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;مدلهاي حاصل از اين الگو را مي توان به دو دسته ساده و
پيچيده تقسيم کرد، در &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain Model &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;هاي ساده به ازاي هر جدول در بانک
اطلاعاتي يک کلاس در مدل وجود دارد؛ در مدلهاي پيچيده الازمي براي تطابق ساختار مدل
با ساختار بانک اطلاعاتي وجود نداشته و درآن از ارث بري و الگوهاي طراحي به منظور
خوانايي و انعطاف بيشتر استفاده مي شود. نگاشت مدلهاي ساده به بانک اطلاعاتي به
سادگي و با استفاده از الگويي مانند &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Active Record&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; انجام مي شود در حالي که نگاشت مدلهاي پيچيده مشکل تر بوده و
نيازمند استفاده از &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Data Mapper&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;
ها ست .(در اين باب در پستهاي بعدي به تفصيل سخن خواهم گفت)&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;از آنجا که قوانين حاکم بر دامنه کسب و کار مرتبط با برنامه
هاي ايجاده شده عموما در حال تغيير و تحول هستند لازم است براي جلوگيري از نشر و
تاثير اين تغييرات در لايه هاي ديگر برنامه، حداقل وابستگي ممکن بين &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain
Model&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; و ساير لايه هاي برنامه&lt;span&gt;  &lt;/span&gt;وجود داشته باشد تا بتوان علاوه بر کنترل باز
نشر تغييرات در ساير لايه ها، امکان &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Build&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; و &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Test&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;جداگانه &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain Model&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;
&lt;span lang=&quot;FA&quot;&gt;را نيز فراهم کرد.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;مزايا:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;زماني که از اين الگو براي ايجاد لايه&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain Logic&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;
&lt;span lang=&quot;FA&quot;&gt;استفاده مي کنيد، زبان مشترکي بين اعضاي تيم توليد وحتي مشتري،
در&lt;span&gt;  &lt;/span&gt;حوزه مساله ايجاد مي شود که تعامل بين
اين افراد را در پروژه ساده تر&lt;span&gt;  &lt;/span&gt;مي نمايد،&lt;span&gt;  &lt;/span&gt;با توجه به تطبيق فضاي راه حل با مساله- به علت
وجود موجوديتهاي معادل دامنه در راه حل و برنامه- درک و فهم سيستم براي سايرين
ساده تر شده، همپنين تقسيم وظايف لازم براي انجام يک کار بين اشيا به راحتي انجام
مي گيريد. از سويي وجود&lt;span&gt;  &lt;/span&gt;اين خصوصيات خود
موجب کاهش هزينه نگهداري سيستم در دراز مدت شده و با تغيير و پيچيده تر شدن مساله
در طول زمان نگهداري&lt;span&gt;  &lt;/span&gt;و اعمال تغيير راحت
تر از حالات ديگر خواهد بود.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;معايب:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;اين شيوه نياز به دانش بيشتري در حوزه طراحي و اصول و
مفاهيم شي گرايي نسبت به ساير روشها داشته و نيازمند&lt;span&gt;  &lt;/span&gt;بکارگيري نيروهاي حرفه اي تر و متعاقبا گرانتري
در انجام پروژه است، از سويي وجود لايه ها و کامپوننت هاي متعدد براي نگاشت موجوديتها
به جداول بانک اطلاعاتي (&lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Data Mappper&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;)
و &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;DTO&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; ها در صورت لزوم موجب افزايش زمان
محاسبات&lt;span&gt;  &lt;/span&gt;، استفاده از منابع بيشتر &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;RAM&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; و &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;CPU&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; 
&lt;/span&gt;مي شود.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;چه زماني از اين روش استفاده کنيد:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;زماني بايد ازالگوي &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;Domain Model &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; &lt;/span&gt;استفاده نمود که با مساله
اي پيچيده مواجه هستيد، مساله اي که در آن تعداد زيادي آلگوريتم محاسباتي&lt;span&gt;  &lt;/span&gt;براي شرايط مختلف، الگوهاي متفاوت براي صحت سنجي
اطلاعات و مجموعه اي از قوانين دائما در حال تغيير وجود دارد .&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;; color: red;&quot;&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;

&lt;/span&gt;&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; color: rgb(255, 0, 0); text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;در پست بعد اين الگو با دقت و موشکافي بيشتري
بررسي شده و در پست بعد از آن (شايد هم در هما همان پست)پياده سازي مساله اي کوچک
را به اين شيوه و با استفاده از تکنولوژي &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;.net&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; و &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;EF&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; ارائه خواهم داد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;

&lt;/p&gt;</description>
<pubDate>Tue, 10 Apr 2012 15:24:17 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-52.aspx</guid>
</item>
<item>
<title> الگوهای طراحی و معماری-1</title>
<link>http://pooyablog.blogfa.com/post-51.aspx</link>
<description>
 &lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;strong&gt;&lt;span dir=&quot;ltr&quot;&gt;Domain Logic&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;FA&quot;&gt;هر سند حسابداري بايد تراز باشد، هر چک بانکي تنها بايد توسط يک فرد حقيقي ظهر
نويسي شده باشد، فرآيند انتقال کالا از واحدي به واحد ديگر در سازمان شامل
درخواست، کالا، تاييد درخواست و انتقال کالا است.&lt;span&gt;  &lt;/span&gt;اينها همه قوانيني هستند که در صورت
وجود يا عدم وجود نرم افزار در انجام امور مربوطه شان در دامنه مسايل روزمره سازمان
حاکم هستند، اين قوانين و چگونگي انجامشان را &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Domain Logic &lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;&lt;span&gt; &lt;/span&gt;مي گوييم.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;FA&quot;&gt;در فرآيند توليد نرم افزار يکي از مهم ترين مسال اين است که اين قوانين را کجا
قرار دهيم، چگونه سامانشان دهيم، چگونه دسته بندي شان کنيم و ... . راه هايي که
براي اين کار وجود دارند را &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Domain Logic&lt;span&gt; 
&lt;/span&gt;Pattern&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; مي نامند.
منهاي الگوهاي&lt;span&gt;  &lt;/span&gt;من درآوردي که هر برنامه
نويسي در ابتداي کارش اختراع مي کند، سه الگو وجود دارند که حساب خود را در مسائل
مختلف پس داده اند و بهتر است با ايده گرفتن از آنها طراحي اين لايه را انجام داد،
اولين الگو براي سازماندهي قوانين دامنه کسب و کار &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction Script&lt;/span&gt;&lt;span&gt;
&lt;span lang=&quot;AR-SA&quot;&gt;است.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;strong&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction
Script&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang=&quot;AR-SA&quot;&gt;:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;AR-SA&quot;&gt;ايده اين الگو
سازمان دادن هر تراکنش و درخواست لايه &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;&lt;span&gt; &lt;/span&gt;Presentation&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot;&gt;- از
صفر تا صد- در يک رويه يا متد است، تراکنش &lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;مذکور &lt;/span&gt;&lt;span lang=&quot;AR-SA&quot;&gt;مي تواند کاری ساده، همچو بارگزاري
مجموعه اي از اطلاعات براي نمايش و يا کاری پيچيده، مانند محاسبه حقوق يک کارمند
در سيستم حقوق و دستمزد باشد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;FA&quot;&gt;بر&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot;&gt;اي مثال
به منظور رزور&lt;span&gt;  &lt;/span&gt;يک اتاق در هتل، گامهاي
بررسي موجود بودن اتاق خالی، محاسبه نرخ کرايه و بروز رساني بانک اطلاعاتي، در يک
رويه يا متد انجام مي شود. &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;AR-SA&quot;&gt;براي سازمان
دادن مجموعه &lt;/span&gt;&lt;a name=&quot;OLE_LINK1&quot;&gt;&lt;span&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction
Script&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;&lt;span lang=&quot;FA&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;ها مي توانيد آنها را بر حسب فاکتوری مانند موجوديتهاي
محوري کسب و کار سازمان دهي کنيد و در يک کلاس جاي دهيد، بديهي است که مي توانيد
فعاليتهاي مشترک را نيز در متدهايي جداگانه جاي دهيد تا هردفعه مجبور به تکرار
آنها&lt;span&gt;  &lt;/span&gt;نشويد. از سويي مي توانيد هر &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction
Script&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; را بصورت يک کلاس درآورده و با الگوي
&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Command&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; اجرا کنيد، مزيت اين روش قابليت
تغيير &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction
Script &lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;ها در زمان اجراست،-واقعيت&lt;span&gt; 
&lt;/span&gt;اين است که حتي خود آقاي &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Fow&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;l&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;er &lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;&lt;span&gt; &lt;/span&gt;هم به گفته خودش تا کنون به مساله اي بر نخورده
که نياز به اين کار باشد!- در حالتي نوستالژيک هم مي توانيد تمام &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction Script&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot;&gt; ها را در يک کلاس &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Static&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; همچون متدهاي &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Global&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; قرار دهيد و مانند دوران پيشا &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;OO&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; آنها را فراخواني کنيد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;FA&quot;&gt;روش دلخواه من همان اولي، يعني سازماندهي &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction Script&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot;&gt;ها حول محور يک
موجوديت&lt;span&gt;  &lt;/span&gt;يا فعاليت اصلي در کسب و کار&lt;span&gt;  &lt;/span&gt;است ، مثلا&lt;span&gt; 
&lt;/span&gt;در مساله رزور هتل ، می توان کلاسي براي مديريت امور رزرواسيون از رزرو
گرفته تا لغو و يا تغيير مشخصات رزرواسيون داشت، که هر ترکنش در آن يک متد خواهد
بود ، وجود چنين کلاسهايي علاوه بر دسته بندي منطقي به امکان استفاده از&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Threading&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; در صورت لزوم&lt;span&gt;  &lt;/span&gt;کمک شاياني مي کند بدون آنکه نگران دسترسی
همزمان &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Thread &lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;&lt;span&gt; &lt;/span&gt;های مختلف به داده ها و تکه کدهای مشترک باشيم.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot;&gt;دسترسي به &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span dir=&quot;ltr&quot;&gt;Database&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot;&gt;
:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;FA&quot;&gt;عموما دسترسي به بانک اطلاعاتي در اين روش به واسطه لايه کوچکي از کلاسهاي &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Helper&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; صورت مي گيرد که گاها تنها روکشي براي
تکنولوژي ها يي همچو &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;ADO.NET&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;
هستند. اگر لايه فيزيکی يا چارچوب عمومی ای برای دسترسي به داده&lt;span&gt;  &lt;/span&gt;جدا گانه اي نداريد پيشنهاد&lt;span&gt;  &lt;/span&gt;مي کنم حداقل يک کلاس به عنوان &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Helper&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; براي کار با بانک اطلاعاتی داشته
باشيد و اگر هم داشتن يک کلاس براي انجام کارهاي بانک اطلاعاي برايتان سخت است! حداقل
کار را به متدهاي جدا گانه اي که تخصصشان کار با بانک اطلاعاتي است منتقل نماييد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;FA&quot;&gt;دليل اين تاکيد بر جدا سازي هم چيزي جز افزايش خوانايي و کمي افزايش قابليت
نگهداري کد نيست، به عنوان يک &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Reviewer&lt;/span&gt;&lt;span&gt;
&lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Code&lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt; اصلا دوست ندارم وسط بررسي متد
محاسبه ارزش افزوده يک فاکتور با کدهايي که براي باز کردن يک اتصال به بانک
اطلاعاتي و اجراي يک دستور هستند مواجه شوم، ترجيح مي دهم متدي را ببينم که از
نامش پيداست به بانک اطلاعات ميرود و عددی را برای ادامه محاسبه&lt;span&gt;  &lt;/span&gt;مي آورد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot;&gt;مزايا:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;AR-SA&quot;&gt;مهمترين مزيت
روش&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; dir=&quot;ltr&quot;&gt; &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Transaction Script&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot;&gt; سادگي آن است، سيستمي که با اين روش نوشته شده&lt;span&gt;  &lt;/span&gt;باشد و قوانين مختصري در دامنه مساله اش داشته
باشد براي هر برنامه نويسي به راحتي قابل فهم است.اين روش از حيث &lt;/span&gt;&lt;span dir=&quot;ltr&quot;&gt;Performance&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot;&gt; نيز سر بار کمتري را به دنبال &lt;/span&gt;&lt;span lang=&quot;FA&quot;&gt;دارد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot;&gt;معايب:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;AR-SA&quot;&gt;هرگاه دامنه
کسب و کار و قوانين آن پيچيده و بزرگ شوند اين روش&lt;span&gt;  &lt;/span&gt;بسيار پيچيده می شود و منجر به ظهور کدهاي
تکراري مي گردد که کار نگهداري، توسعه و تغيير سيستم ها را، کاري طاقت فرسا و خطا
زا می سازد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;a name=&quot;OLE_LINK3&quot;&gt;&lt;span&gt;&lt;strong&gt;&lt;span lang=&quot;FA&quot;&gt;چه زماني از اين روش استفاده کنيد:&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;



&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;span lang=&quot;FA&quot;&gt;زماني که با مساله اي کوچک، داراي مجموعه قوانين کسب و کار مختصر طرف هستيد که
تغيير چنداني در دامنه مساله&lt;span&gt;  &lt;/span&gt;نداريد اين
روش بسيار کارا و مفيد است.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify; color: rgb(255, 0, 0);&quot;&gt;&lt;span lang=&quot;AR-SA&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 9pt; line-height: 115%;&quot;&gt;در دو پست بعدی به الگوی &lt;/span&gt;&lt;span dir=&quot;ltr&quot; style=&quot;font-size: 9pt; line-height: 115%;&quot;&gt;Domain Model&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 9pt; line-height: 115%;&quot;&gt; می پردازم و پياده سازی ای
برای مساله ­ای کوچک را برای آن در دات نت ارائه خواهم داد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;

&lt;/p&gt;
</description>
<pubDate>Mon, 02 Apr 2012 08:38:00 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-51.aspx</guid>
</item>
<item>
<title>الگوهای طراحی و معماری-0</title>
<link>http://pooyablog.blogfa.com/post-50.aspx</link>
<description>
 &lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;تصميم
گرفته ام از اين پس هر از چند گاهي مروري داشته باشم بر الگوهاي مختلف طراحي و
معماري. در اين پست مقدمه اي بيان خواهم کرد و در پستهاي آتي به اصل موضوع خواهم
پرداخت، منبع اصلي بحث کتاب &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;PoEAA&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;
از آقاي &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Fowler&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;
است اما در خلال مطلب، به ساير منابع&lt;span&gt; 
&lt;/span&gt;و تجربيات شخصي خويش نيز&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt; گريزي &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt; خواهم زد.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;در&lt;span&gt;  &lt;/span&gt;مقدمه نياز است تا برخي از تعاريف را با هم
همسان کنيم&lt;span&gt;  &lt;/span&gt;تا در ادامه به سوء تفاهم دجار
نشويم.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;در دنياي
امروز براي اکثر امور جاري عالم نرم افزاري مرتبط وجود دارد، که جايي از آن کار
سرو کله اش پيدا مي شود، از يک فروشگاه کتاب گرفته که براي جستجوي کتابهاي درون
قفسه اش نرم افزاري را اختيار کرده تا يخچال هوشمندتان(اگر جديدا يخچالي خريده باشيد)
که قابليت اتصال به اينترنت و هزار قرتي بازي ديگر را در خود دارد، سيستم کنترل
چراغهاي راهنمايي رانندگي و کنترل بمبها و موشکهاي هوشمند هم براي خود سلسله اي از
خانوادهاي نرم افزار ها هستند، واقعيتي که هر مهندس نرم افزاري بايد به آن آشنا
باشد عدم شباهت اين دسته نرم افزارها به همديگر است، که نتيجه مسلم آن عدم قابليت
استفاده نسخه هاي يپيچيده شده براي يکي در ديگري است، اگر مامور نوشتن برنامه
کنترل سامانه موشکي باشيد و براي ساخت نرم افزار کنترل آن سامانه، از الگوهاي
معماري که در محل کار قبليتان براي تهيه برنامه اتوماسيون اداري استفاده کرده ايد،
استفاده کنيد بي شک بزرگ ترين لطف را به دشمن کرده ايد(عجب مثال کميکي شد!)&lt;span&gt;  &lt;/span&gt;و بلعکس اگر از معماري سيستم نرم افزاري يخچال
و موشک هوشمند براي ساخت نرم افزار کتاب فروشي استفاده کنيد احتمالا با نرم افزاري
مواجه خواهيد بود که تنها در دنيايي خيالي کاربرد دارد. &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;واقعيت
آن است که دنياي نرم افزار دنياي &quot;اگر&quot; هاست، دنيايي که در آن پراگماتيسم
مطلق حاکم است، آنچه در مساله اي صحيح است ممکن است در مساله ديگر غلط مطلق باشد،
براي اجتناب از اين باتلاق معاني&lt;span&gt;  &lt;/span&gt;محدوده
بحث خود را به سيستمهايي که&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Enterprise
Application&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;&lt;span&gt;  &lt;/span&gt;ناميده ميشوند محدود مي
کنيم و هرچه اينجا گفته مي شود با فرض حضور در دنياي اين نرم افزار هاست نه در دنياي يخچالها و&lt;span&gt;  &lt;/span&gt;ماشين هاي لباسشويي هوشمنديا بازي هاي کامپيوتري.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;لذا&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;
اولاً: براي يافتن تعريفي دقيق از اين دسته از نرم افزارها به کتاب &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;PoEAA &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;&lt;span&gt; &lt;/span&gt;، بخش مقدمه و مبحث &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Enterprise
Applications&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;
مراجعه نماييد. همانطور که در آن کتاب خواهيد ديد&lt;span&gt; 
&lt;/span&gt;مجموعه اي از خصوصيات براي نرم افزارهايي که ما آن را &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Enterprise
Applications&lt;/span&gt;&lt;span lang=&quot;AR-SA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt; مي
ناميم ارائه شده است که شامل موارد ذيل مي باشند:&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Symbol;&quot;&gt;&lt;span&gt;&lt;font size=&quot;3&quot;&gt;·&lt;/font&gt;&lt;span&gt;&lt;font size=&quot;3&quot;&gt;   &lt;/font&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Data Persistence&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Symbol;&quot;&gt;&lt;span&gt;·&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Large Amount Of &lt;/span&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Data&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Symbol;&quot;&gt;&lt;span&gt;·&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Access Data Concurrently&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Symbol;&quot;&gt;&lt;span&gt;·&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;A&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt; &lt;span class=&quot;docemphstrong&quot;&gt;lot of user interface screens&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Symbol;&quot;&gt;&lt;span&gt;·&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Need
to &lt;span class=&quot;docemphstrong&quot;&gt;integrate with other enterprise applications&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%; font-family: Symbol;&quot;&gt;&lt;span&gt;·&lt;span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;docemphstrong&quot;&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Complex business logic&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;ثانياً:
اين الگوها مانند هر الگوي ديگري بايد متناسب با مساله اي که درگير حل آن هستيد و
با توجه به بايدها و نبايدهاي آن مساله و فضاي آن بکار گرفته شوند، بي شک الگوهايي
که براي ساخت سيستم اتوماسيون اداري يک سازمان کوچک با 20 کارمند بکار مي رود بسيار
متفاوت با سيستم اتوماسيون سازماني با 14000 کارمند و ده ها شعبه است. &lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;ثالثاً:
تجربه نشان داده براي کاربرد بهتر الگوهاي طراحي بهترين راه حل، فهميدن صورت
مساله آنهاست، بايد مساله اي را که الگو به عنوان راه حل براي آن ارائه شده است را
بدرستي بفهميد تا بدانيد کجا از کدام الگو استفاده کنيد. پس آنچه در اين وبلاگ و
ساير منابع و کتب طراحي گفته مي شود وحي منزل نبوده و بايد با توجه به فضاي مساله
مورد استفاده قرار گيرند.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify; color: rgb(255, 0, 0);&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;ادامه
دارد...&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify; color: rgb(255, 0, 0);&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;در
مطلب بعدی&lt;span&gt;  &lt;/span&gt;به بررسي &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Domain Logic Patterns&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt; و در ابتداي آن به بررسي الگوي &lt;/span&gt;&lt;span style=&quot;font-size: 10pt; line-height: 115%;&quot; dir=&quot;ltr&quot;&gt;Transaction Script &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;&lt;span&gt; &lt;/span&gt;خواهم پرداخت.&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;

&lt;/p&gt;

</description>
<pubDate>Sat, 24 Mar 2012 15:05:00 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-50.aspx</guid>
</item>
<item>
<title>سرطان قابل پيشگيري است حتی در پروژه های نرم افزاری</title>
<link>http://pooyablog.blogfa.com/post-49.aspx</link>
<description>
 &lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;همانطور که در آن نمودار تپه رنگين کماني &lt;/span&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot; dir=&quot;ltr&quot;&gt;RUP &lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; &lt;/span&gt;هم ديده مي شود ديسيپلين تست در تمام فازها حضور
دارد، اين تست در فاز آغازين و براي استخراج نيازمندي ها و  تحليل سيستم مي تواند نجات بخش پروژه باشد،
مانند شانسي براي شناسايي زود هنگام سرطان.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt; &lt;/span&gt;بنابر ماهيت نقش سازمانيم
اخيرا در انتهاي پروژه اي براي بررسي کلي کار و قابليت ارائه آن به بازبيني کارهاي
انجام شده در پروژه -&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;مستندات و کدها و معماري سيستم&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;-پرداختم،   &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt;&lt;/span&gt;از قبل در جريان
معماري و طراحي و کدنويسي زير سيستمهاي حساس پروژه بودم اما در جزئيات، بويژه بخش
تحليلي ساير بخشها&lt;span&gt;  &lt;/span&gt;وارد نشده بودم، آن روز
که براي اولين بار مستندات کامل تمام پروژه را از ابتدا مطالعه مي کردم چيزي عجيب
به نظرم آمد، اثري از کنشگري با عنوان &quot;مدير يا پشتيبان سيستم&quot; در
مستندات نبود، و اين تعجب از آنجا بود که، اخيرا يکي از نيروهاي پشتيباني شرکت را
براي نگهداري&lt;span&gt;  &lt;/span&gt;اين سيستم به سازمان مشتري
فرستاده بوديم و قرار بود تا يکسال نيروي مقيم آنجا باشد و اين خود به معني نقشي
با عنوان مدير سيستم، نگهدارنده يا چيزي شبيه به اين بود که بايد نمودي از حضور و
وجود او در سيستم ديده مي شد، اما چيزي نبود، در سند چشم انداز، مدل مورد کاربرد و
مستند مرور مدل موردکاربرد هيچ اشاره اي به وجود چنين&lt;span&gt;  &lt;/span&gt;نقشي و فرد يا افرادي که اين نقش را بر عهده
دارند نشده بود، شک کردم که شايد اين نيروي پشتيباني براي نگهداري زيرساخت شبکه اي
و سخت افزاري سرورهاي پروژه به سازمان مشتري گسيل و مقيم شده است، تلفني وظايفش را
جويا شدم ، فهميدم بخشي از شرح کارش بنا بر قرار داد رفع برخي از ابهامات استفاده
کنندگان با تحليل برخي از داده هي سيستم است؛ اما با وضع موجود هيچ ابزاري براي
اين کار در اختيار او قرار نمي گرفت و اين يعني بخش از سيستم اصلا ديده نشده بود.
نقصي در سطح استخراج و تحليل نيازمندي ها!&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;پس از کند و کاو مشخص شد چند عامل باعث از قلم افتادن اين
کنشگر از ليست کنشگران سيستم شده است، مهم ترين عامل ذوق زدگي تيم تحليل بوده است،
هيجان از پروژه ناب و تازه اي که در دست داشته و بجاي نگاه به کليت سيستم&lt;span&gt;  &lt;/span&gt;تنها به مشتري مي نگريسته و کاربران مشتري را
مي ديده، و تيمي که قرار است از سيستم نگهداري کند و اتفاقا از افراد شرکت بوده
-چون در تيم مشتري نبوده- از قلم افتاده اند. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;اما تاثيرات کشف دير هنگام اين نقص:&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt;-&lt;span style=&quot;font: 7pt &quot;Times New Roman&quot;;&quot;&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;پروژه را نمي شد
تحويل داد!(تير خلاص)&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt;-&lt;span style=&quot;font: 7pt &quot;Times New Roman&quot;;&quot;&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;بايد زماني براي
تحليل و طراحي و برنامه نويسي سيستم گذاشته مي شد که بابت آن زماني به مشتري اعلام
نشده و از او نمي شد پولي گرفت! و نتيجتا رفع اين نقص همچو درمان سرطان دير شناخته
ای پرهزينه است.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt;-&lt;span style=&quot;font: 7pt &quot;Times New Roman&quot;;&quot;&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;بايد تمام
مستندات را اصلاح کرد و به مشتري داد و تاييد دوباره گرفت(البته خود مشتري اي هم
که مستندات را بدون خواندن تحويل مي گيرد کم مقصر نيست)&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;margin-right: 18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; اما نکات:&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;&lt;span&gt;-&lt;span style=&quot;font: 7pt &quot;Times New Roman&quot;;&quot;&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;اگر طبق اصول
نسبت به استخراج نيازمندی های سيستم اقدام می شد شايد اين نقص رخ نمی داد.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; &lt;span&gt;-&lt;span style=&quot;font: 7pt &quot;Times New Roman&quot;;&quot;&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;اگر تست از همان
ابتدا در دستور کار دستاندکاران پروژه قرار مي گرفت يعني از همان سطح استخراج و
تحليل نيازمندي ها اين نقص زود تر کشف مي شد.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; &lt;span&gt;-&lt;span style=&quot;font: 7pt &quot;Times New Roman&quot;;&quot;&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;کنشگران را نبايد
تنها از کاربران نهايي سيستم آن هم کاربراني که مستقيما درگير فرآيند کسب و کار
مشتري هستند استخراج نمود، بايد در ميان ذينفعاني که درگير کسب و کار سيستم نيستند
نيز به دنبال کنشگر گشت، حتي در شرکت توسعه دهنده سيستم!&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-indent: -18pt; direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; &lt;span&gt;-&lt;span style=&quot;font: 7pt &quot;Times New Roman&quot;;&quot;&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;بهتر است ناظر
پروژه، شخص يا تيمي خارج از تيم پروژه باشد که فضاي ذهني و روحي تيم توسعه و
هيجانات، استرس ها و فشارهاي آنها&lt;span&gt;  &lt;/span&gt;دقت او
را کاهش ندهد.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; پ.ن:&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;در کتاب&quot;روش کاربردي تحليل نيازمندي هاي نرم
افزار&quot; که سال پيش با همراهي دوست و استاد بزرگوارم جناب آقاي مهندس مهرداد
نوشتيم دو فصل مفصل در باب مورد کاربرد و کنشگر و شناسايي آنها صحبت کرده ايم،
بايد آن دو فصل را به عنوان تکليف نوروز به رفقاي تيم تحليل مان داد تا دو مرتبه
با&lt;span&gt;  &lt;/span&gt;مداد دو رنگ از روی آن بنويسند، شايد
بتوان از اين پس  از این دست سرطان ها پيشگيري نمود.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt; &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;

&lt;/div&gt;&lt;p style=&quot;text-align: justify;&quot;&gt;

&lt;/p&gt;</description>
<pubDate>Mon, 12 Mar 2012 18:06:22 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-49.aspx</guid>
</item>
<item>
<title>عدالت رانتی!</title>
<link>http://pooyablog.blogfa.com/post-48.aspx</link>
<description>
 &lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;براي
ارسال چند کارتن وسيله با اتوبوس به شهر پدري به ترمينال غرب رفته بودم، از آنجا
که بار کمي سنگين بود از يکي از افرادي که آنجا با چرخ دستي بارها را جابجا ميکرد
خواستم بارها را برايم تا درب انبار تعاوني مورد نظر ببرد، کارگر همچو ساير
همکارانش در پارکينگ ترمينال پيرمردي نزديک به 60 سال بود.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;بارهار
را بر چرخ گذاشتيم و به راه افتاديم، چند قدم جلوتر به کيوسکي رسيديم که پيرمرد
کارگر گفت: &quot;برو هزينه حمل را آنجا حساب کن و بيا&quot; رفتم و مبلغ 4000
تومان بنابر تعرفه به متصدي آن کيوسک دادم، او هم پيرمرد را صدا زد، 2000 تومان به
او داد و ما دوباره به راه افتاديم. برايم کسر اين هزينه از دستمزد پيرمرد جالب
بود، از او پرسيدم:&quot;چرا 2000 تومان از پولت کم کرد؟!&quot; پاسخ شنيدم:&quot;خب
اين آقا اينجا پيمانکار است و کار را او گرفته!&quot; پرسيدم &quot;مگر خدمات خاصي
به شما ميدهد؟ چرخ مال اوست؟بيمه تان مي کند؟!يا چيزي مثل اينها؟َ &quot; پيرمرد
گفت:&quot;نه، مثل قديم که اربابان از حاصل کار رعيت بخشي را مي بردند، اين هم مثل
همان است&quot;. انگشت به دهان ماندم.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;برايم
جالب بود که حتي در قاموس تفکر اقتصادی سرمايه­ داري، سرمايه­ داري يا &quot;سرمايه ­داري
توليد&quot; است يا &quot;سرمايه داري تجاري&quot; کسي ابزار توليد دارد يا پول
فراوان، ابزار يا پولش را به کار مي اندازد، نيروي کار کارگران را ارزان مي خرد و از فروش حاصل کار آنان سود مي­برد،
اما اين پيمانکار براي چه اينجا نقش سرمايدارانه ­اي&lt;span&gt;  &lt;/span&gt;گرفته؟! نه سرمايه ­اي به کار انداخته&lt;span&gt;  &lt;/span&gt;و نه توليدي مي­کند، به&lt;span&gt;  &lt;/span&gt;ظاهر تنها رانت است، سرمايه­ داري رانتي! در کيوسکش
نشسته، پيرمرد باربر زور مي­زند و بار را جابجا مي­کند، او هم پنجاه درصد از
دستمزدش را براي خود بر مي دارد؟ حتي اگر وظيفه سازماندهي کار را براي اين پيمانکار
متصور باشيم،(فارغ از اين که واقعا چنين کاري سازماندهي خاصي نمي خواهد، چند پيرمرد
در پارکينگ ترمينال به نوبت ايستاده اند و باري اگر باشد جابجا مي کنند)&lt;span&gt;  &lt;/span&gt;باز هم پنجاه درصد سهم از زحمت آن کارگران رسما
استثمار آنان به حساب مي­آيد،به گمانم سازمان دادن اين کار ميتوانست بر عهده خود
آن باربران باشد، خودشان سازمانکي کوچک براي کارشان تشکيل مي­دادند در همان کيوسک
يا حتی بدون آن&lt;span&gt;  &lt;/span&gt;و با سهمي به مراتب کمتر
از پنجاه درصد از مزدشان تشکلي ميداشتند که حافظ منافعشان باشد. به ظاهر اين به
همان عدالتی که اين ادعايش را داريم نزديکتر است تا وجود آن پيمانکار!&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot; &quot; dir=&quot;rtl&quot; style=&quot;direction: rtl; unicode-bidi: embed; text-align: justify;&quot;&gt;&lt;font size=&quot;2&quot; face=&quot;tahoma,verdana,arial,helvetica,sans-serif&quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-size: 10pt; line-height: 115%;&quot;&gt;روزهاست
ذهنم درگير آن پيرمرد و رئيس خود خوانده او و مناسبات آنان است.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;


</description>
<pubDate>Sat, 25 Feb 2012 09:00:00 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-48.aspx</guid>
</item>
<item>
<title>صبح دوستداشتنی</title>
<link>http://pooyablog.blogfa.com/post-47.aspx</link>
<description>&lt;div style=&quot;text-align: justify;&quot;&gt;
 &lt;p style=&quot;text-align: justify;&quot; dir=&quot;rtl&quot; class=&quot; &quot;&gt;&lt;span lang=&quot;FA&quot; style=&quot;font-family: &quot;Tahoma&quot;,&quot;sans-serif&quot;;&quot;&gt;ديروز صبح ساعت 8 در محلی در خیابان
اتقلاب جلسه ای کاری داشتم، جلسه&lt;span&gt;  &lt;/span&gt;یک ساعت و نیم طول داشت و جلسه بعدی ساعت 11:30
در خیابان ویلا بود،&lt;span&gt;  &lt;/span&gt;فاصله زمانی بین دو
جلسه چنان نبود که بتوانم به شرکت برگردم و بعد به جلسه بعدی بروم، این طور شد &lt;span&gt; &lt;/span&gt;که یکی از بهترین صبح های کاری من شکل گرفت،
جلسه اول که تمام شد، از درب پنجاه تومانی دانشگاه تا سر وصال را قدم زنان رفتم،
صبحانه را در شیرینی فرانسه قهوه و گاتا خوردم، روزنامه را همانجا ورقی زدم و بعد
به کتاب فروشی مولی رفتم نزدیک به یک ساعت بین قفسه های کتاب چرخیدم و دلی از عزا
درآوردم و شش، هفت کتاب بسیار خوب خریدم. خلوتی آن ساعت خیابان انقلاب، داغی قهوه
شیرنی فرانسه و طعم خوب گاتایش با مجموعه کتابهای دوستداشتنی ای که خریدم یکی از
بهترین صبح های کاری مرا ساخت، کاش هر از چندگاهی را میشد در ساعاتی غیر معمول برای
خودمان زندگی کنیم.&lt;/span&gt;&lt;/p&gt;

&lt;/div&gt;&lt;p&gt;

&lt;/p&gt;</description>
<pubDate>Thu, 23 Feb 2012 09:11:39 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-47.aspx</guid>
</item>
<item>
<title>سرکچل پروژه و یادگیری سلمونی تیم توسعه</title>
<link>http://pooyablog.blogfa.com/post-46.aspx</link>
<description>&lt;P dir=rtl&gt;سوال: چرا زير سيستم گزارشگيری رو توي همون وبسایتي که اصل سيستم بود  نذاشتين و براش يه Desktop Application  جدا نوشتين که این همه دردسر ایجاد کنه؟&lt;/P&gt;
&lt;P dir=rtl&gt;جواب: نياز سيستم بود.&lt;/P&gt;
&lt;P dir=rtl&gt;&lt;FONT color=#0000cc&gt;&quot;مستندات سيستم و بويژه چشم انداز ، نيازمنديهاي تکميلي و سند معماري را نگاه مي کنم&quot;&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=rtl&gt;سوال:هيچ جاي اين مستندات که همچين چيزي نيومده؟!&lt;/P&gt;
&lt;P dir=rtl&gt;جواب : خب احساس کرديم اينجور بهتره و سرعت و امنيتش بالاتره!&lt;/P&gt;
&lt;P dir=rtl&gt;سوال: چرا از WCF  براي ارائه اطلاعات به برنامه گزراشگيرتون استفاده کردين ؟&lt;/P&gt;
&lt;P dir=rtl&gt;جواب : جديدتر و بهتره!&lt;/P&gt;
&lt;P dir=rtl&gt;سوال: چرا Binding رو BasicHttp گرفتين، چرا براي دسترسي به سرويسي که روي اينترنت قرار گرفته و اطلاعات مهمي از سازمان رو بيرون ميده کنترل دسترسي مثلا با نام کاربري و کلمه رمز نذاشتين؟&lt;/P&gt;
&lt;P dir=rtl&gt;جواب: کي ميدونه اين سرويس اينجا  هست؟ که حالا بخواد بياد ازش داده بگيره ؟!&lt;/P&gt;
&lt;P dir=rtl&gt;جواب من : به علت اجبار در زمان تحويل سيستم به مشتري اي که در آستانه از دست رفتنه همه چيز را موقتا مي پذيرم ولي به عنوان اولین گام موقت بايد مکانيزم دسترسي با نام کاربري و کلمه رمز را حتما براي سرويس بگذاريد تا بعد يک فکر اساسي بکنيم.&lt;/P&gt;
&lt;P dir=rtl&gt;&lt;FONT color=#000099&gt;ساعاتي بعد:&lt;/FONT&gt;&lt;/P&gt;
&lt;P dir=rtl&gt;سوال: چي شد؟ کي کارتون تمومه؟&lt;/P&gt;
&lt;P dir=rtl&gt;جواب:سرعت اينترنت پايينه گوگل راحت باز نميشه که  ببينم چه جور نام کاربري و کلمه رمز براي سرويس بذارم و کنترلش کنم.&lt;/P&gt;
&lt;P dir=rtl&gt;سوال : چندمين برنامه ايه که با WCF مينويسيد؟&lt;/P&gt;
&lt;P dir=rtl&gt;جواب: اولي&lt;/P&gt;
&lt;P dir=rtl&gt;و جواب من : &lt;A name=OLE_LINK1&gt;خسته &lt;/A&gt;نباشيد و دست گلتون درد نکنه&lt;/P&gt;
&lt;P dir=rtl&gt;در اين سناريو من به براي حل مشکلات معماري سيستمی که به علت مشکلات فراوان مشتری آن را پس زده وارد تيم توسعه  شده بودم ، من مي پرسيدم و برنامه نويس اصلي آن سيستم پاسخ مي داد.&lt;/P&gt;
&lt;P dir=rtl&gt;چنین می شود که یک پروژه منفجر شده، مشتری از هرچه نرم افزار و نرم افزارچی است متنفر می شود، در این مرحله از کار نه از معمار کاری ساخته است نه از بخش مارکتینگ، باید فقط دعا کرد مشتری کمی وقت بدهد تا کارها را جمع و جور کرد. کاش می دانستیم نباید سلمانی رابا سر کچل پروژه های واقعی شرکتها یاد گرفت آن هم آخر سال که باید مشتری را خوشحال کرد تا پول قراردادهایش را بدهد تا شرکت بتواند حقوق و عیدهایش را به کارکنان پرداخت کند.&lt;/P&gt;</description>
<pubDate>Thu, 16 Feb 2012 14:20:00 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-46.aspx</guid>
</item>
<item>
<title>گزارش يک مهندسي معکوس براي توسعه يک سيستم</title>
<link>http://pooyablog.blogfa.com/post-45.aspx</link>
<description>
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;مهندسي معکوس، واژه اي که در بسياري از رشته هاي مهندسي جاي خود را به خوبي باز کرده و در هر رشته اي از فنون مهندسي پيشنيازها و مختصات خاص خود را دارد.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;در حوزه مهندسي نرم افزار نيز اين واژه کم شنيده نمي شود و يا حتي اگر نامي از آن برده نشود بسياري کسان هستند که روزانه ساعتها از زمان کاري خود را صرف انجام مهندسي معکوس در راستاي باز شناسي ، پيش برد يا توسعه نرم افزاري خاص مي­کنند، يا براي الگو گيري يا براي پيشبرد و توسعه سيستمي که به روشهاي معمول ديگر قابل نگهداري نيست.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;اين روزها به شدت درگير مهندسي معکوس و توسعه سيستمي در حوزه مالي هستم که روزهاي سخت و پيچيده کاري اي را برايم موجب شده، اما در مقابل تجربه گرانبهايي نيز به همراه داشته است، هدف از اين نوشتار انتقال پاره اي از اين تجارب  و گرفتن همفکري در اين حوزه است،  از اين رو در ادامه شرحي از سيستم و اهداف مهندسي معکوس و نتايجي که از اين پروژه عايدم شد را بيان خواهم کرد.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;براي حفظ امانت و حقوق کارفرمايم ، از اين پس نام سيستم را X و نام شرکت کارفرما را S مي نامم.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;سيستم X  سيستمي از  جنس سيستمهاي مالي-اداري  است که با تکنولوژي .NET1.1و بانک اطلاعاتي  SQL 2000پياده سازي شده و  همراه با مجموعه اي از مستندات منتخب RUP، شرکت مذکور آن را از تيم توسعه اي که اکنون کمتر کسي از آنان در ايران است خريداري کرده است، تيم مذکور مدت بسيار کوتاهي در توسعه سيستم به تيم شرکت کمک کرده و پس از آن پروژه متوقف شده است، اکنون تيم توسعه قبلي در دسترس نبوده و شرکت پروژه را بر حسب موقعيتهاي کسب و کاري که پيش رو دارد  دوباره شروع کرده است. بهتر است يادآور شوم اين سيستم در واقع براي يک سازمان خاص با ماهيت دولتي نوشته شده است که طبق قرارداد تيم توسعه حق فروش کد برنامه به غير را داشته اند و اکنون شرکت S صاحب کدهاي اين سيستم است.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;داستان آغاز دوباره پروژه از آنجا شروع شده است که مشتري اي در خواست سيستمي مشابه با سيستم X را به مدير عامل شر کت داده است و مدير نيز با توجه به آنچه از پيش به خاطر داشته است که سيستم X را با کد آن خريداري کرده پروژه را پذيرفته و زمان کوتاهي براي تحويل را اعلام مي کند و پروژه به من ارجاع مي شود تا راه نيمه رفته را پايان دهم.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;به عنوان مستندات، سند چشم انداز، مستند قواعد کسب و کار و چند مستند مشخصات مورد کاربرد به من ارائه شد، بعلاوه برگه اي که در خواستهاي مشتري جديد بر روي آن نوشته شده بود. پس از مطالعه مستندات  و بررسي کدهاي نرم افزار X در گزارشي اعلام کردم که دامنه تحت پوشش سيستم X بسيار فراتر از نياز مشتري است، بنحوي که مشتري براي دستيابي به هدف خود مجبور به پوشش پيشنيازهايي در سيستم مي شود که در عمل هيچ نيازي به آنها نداشته و در خروجي نهايي که قصد رسيدن به آن را دارد مستقيما تاثير گذار نيست. علي رغم گزارش مذکور تصميم مديريت شرکت بر ادامه راه پروژه نيمه کاره بود.(احتمالا به دلايل مديريتي و کسب و کار که در حوزه اين نوشتار نيست)&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;مجموعه کارها با تمرکز بر راه اندازي سيستم موجود 350 ساعت نفر اعلام شد، اما بر حسب شرايط کسب و کار قرار بر آن شد تا پروژه را در سه فاز به مشتري تحويل دهيم دو فاز 100ساعته و يک فاز 150 ساعته.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;کار با بررسي کد و تطبيق آنها با مستندات شروع شد، نتيجه نا اميد کننده بود. مستندات کمتر از 30 در صد با کد پياده سازي شده تطابق داشتند. لذا بيش ار پيش تمرکز بر اجراي برنامه بدون اشکال و خطاي برنامه نوسي قرار گرفت.(حرکتي کورمال کورمال در سيستم) براي راه اندازي هر فرم از برنامه کار از بررسي Exception هاي زمان اجراي سيستم شروع مي شد، کار تا آنجا پيش مي رفت که در آن عملکرد خاص ديگر خطايي مشاهده نشود(خطا هاي زمان اجراي برنامه). در اين ميان تغييرات تنها  در حوزه کد سيستم باقي نماد بکله به دامنه طراحي بانک اطلاعاتي  سيستم و حتي ارتباط با ساير سيستمهاي موجود در محيط برنامه هاي يکپارچه شرکت کشيده شد. در فاز اول پروژه،  هدف کار بر روي فرمهاي اطلاعات پايه و يکي از فرمهاي اصلي ورود اطلاعات براي دامنه کسب و کار سيستم بود، با به هم چسباندن چند تعطيلي و کار شبانه در يک هفته فاز اول به نقطه اي رسيد که قابل اجرا بوده و خطاهاي مهيب آن برطرف و محدود به اشکالات کوچک شده بود.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;اما تازه مشکل از اينجا شروع شد، همانطور که قبلا گفته شد دامنه مساله اي که سيستم X براي آن ساخته شده بود متفاوت با دامنه مساله مشتري ما بود، چنان که کنشگراني در سيستم X وجود داشتند که به هيچ وجه در راه حل ارائه شده براي مشتري نقشي نداشته و تنها پيچيدگي راه حل را موجب مي شدند. بخشي از اطلاعاتي نيز که مشتر قصد نگهداري و گزارشگيري بر اساس انها را داشت يا در سيستم پوشش داده نمي شد يا پوشش آن بسيار پيچيده بود. نتيجه اين داستان افزوده شدن کار تغييرات سيستم براي تطبيق آن با نياز مشتري به کار مهندسي معکوس و رفع اشکالات  و توسعه سيستم بود. عملي که هم افزايي حاصل از همزماني آن با فازهاي ديگر کار علاوه بر خستگي مفرط براي تيم توسعه به ايجاد خطاهاي پيجيده و بغرنج تري در سيستم انجاميده است....&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;نتيجه:&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;از آنجا که محصول نرم افزاري براي رسيدن به پايان خط توليد مسير پيچيده اي را از نيازمندي ها و شناسايي مساله و ارائه راه حل و حتي انتخاب تکنولوژي توليد طي مي کنند بايد پيش از آغاز به کار انجام مهندسي معکوس بر روي محصولات نرم افزاري هدف از اين فعاليت را دقيقا مشخص نمود.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;آيا هدف باز شناسي فرآيند نهفته در سيستم است؟&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;آيا قصد، شناسايي معماري سيستم و باز استفاده از آن است؟&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;آيا مي خواهيد به نحوي بين  سيستم مورد بررسي و سيستم توليدي خود ارتباط برقرار کنيد؟&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;آيا قصد توسعه سيستم را داريد؟ &lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;آيا همچون کارفرماي من به تکميل همان سيستم براي ارئه آن به مشتري مي انديشيد؟&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;واقعيت اين است که عمل مهندسي معکوس براي يک سيستم با هريک از اهداف بالا بسيار متفاوت و داراي هزينه ها و تاثيرات جانبي گوناگون است. براي مثال اگر قصد باز شناسي فرآيند و راه حل  نهفته در سيستم براي مساله را داريد، در تيم مهندسي معکوس نياز به حضور خبرگان دامنه آن مساله و تحليلگراني کارآزموده داريد که همراه با تيم کد نويس بتوانند زير و زبر سيستم را کاويده و راه حل را مستند کند.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt; اگر قصد شناسايي و استفاده از معماري سيستم را داريد بايد معمار، طراحان و کد نويسان را بيشتر زحمت بياندازيد، هرچند کماکان به تحليلگراني نياز داريد که ظرافتهاي مساله اي را که حل شده شناسايي کنند تا چرايي وجود طراحي ها و انتخاب معماري سيتسم مشخص شود.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;بي شک پر هزينه ترين کار راهي است که کار فرماي من انتخاب کرد، &quot;انجام مهندسي معکوس براي تکميل و پيش برد سيستمي  که براي يک دامنه خاص نوشته شده است و ارائه آن  به دامنه اي نسبتا مشابه &quot;. اين انتخاب زماني تبعات بحراني تري  در پي خواهد داشت که فقط به يک نگاشت حسي از دامنه دو مساله &quot;گاها با اتکا به اسمي که کاربر براي سيستم به کار مي برد و يکسان پنداشتن سيستمها&quot; اکتفا نمود و برنامه اي براي رفع تناقضات دو مساله از حيث دامنه و بايد ها و نبايدها نداشت. يقين دارم بخش عظيم دلايل اخذ تصميمي چنين پر ريسک، به عدم باور به مفاهيم &quot;مساله&quot; و &quot;راه حل&quot; و اهميت &quot;نياز&quot;  و &quot;نيازمندي ها&quot; در سيستم باز مي گردد.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;به ياد بياوريد زماني که سيستمي را از ابتدا طراحي مي کنيد اگر اصول را درست رعايت نکرده باشيد در انتها با  چالشهاي ناشي از آفت &quot;بله، اما&quot; در تحليل نيازمندي ها مواجه خواهيد شد که از ابتدايي ترين نتايجش از دست رفتن اطمينان مشتري است، چه رسد به زماني که سيستمي را بخواهيد با چکش کاري در قاب نيازهاي کاربر بگنجانيد.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt;هر چند معتقدم هدف اول مورد انتظار از اين پروژه چندان دلچسب بدست نخواهد آمد(رفع نيازهاي مشتري در حوزه نيازهايش  با اين ابزار)، اما در اين ميان در حوزه معماري و طراحي ارزش افزوده هاي فراواني براي کارفرمايم بدست آمد.&lt;/p&gt;
&lt;p align=&quot;justify&quot; dir=&quot;rtl&quot;&gt; &lt;/p&gt;

</description>
<pubDate>Thu, 22 Dec 2011 14:33:00 GMT</pubDate>
<dc:creator>pooyablog</dc:creator>
<guid>http://pooyablog.blogfa.com/post-45.aspx</guid>
</item>
</channel>
</rss>

