<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Grp3se's Weblog</title>
	<atom:link href="http://grp3se.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://grp3se.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Mon, 27 Oct 2008 19:27:46 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='grp3se.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Grp3se's Weblog</title>
		<link>http://grp3se.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://grp3se.wordpress.com/osd.xml" title="Grp3se&#039;s Weblog" />
	<atom:link rel='hub' href='http://grp3se.wordpress.com/?pushpress=hub'/>
		<item>
		<title>لینک پست‌های مربوط به تمرین تحلیل و طراحی زیر سیستم تولید</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d9%84%db%8c%d9%86%da%a9-%d9%be%d8%b3%d8%aa%e2%80%8c%d9%87%d8%a7%db%8c-%d9%85%d8%b1%d8%a8%d9%88%d8%b7-%d8%a8%d9%87-%d8%aa%d9%85%d8%b1%db%8c%d9%86-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%d9%88-%d8%b7%d8%b1/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d9%84%db%8c%d9%86%da%a9-%d9%be%d8%b3%d8%aa%e2%80%8c%d9%87%d8%a7%db%8c-%d9%85%d8%b1%d8%a8%d9%88%d8%b7-%d8%a8%d9%87-%d8%aa%d9%85%d8%b1%db%8c%d9%86-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%d9%88-%d8%b7%d8%b1/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 18:22:23 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=129</guid>
		<description><![CDATA[شرح زیرسیستم   ERD زیرسیستم تولید DFD زیرسیستم تولید STD زیرسیستم تولید   دیاگرام افقی/عمودی زیرسیستم تولید<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=129&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a class="alignright" title="شر� زیرسیتم تولید" href="http://grp3se.wordpress.com/2008/09/06/%d8%b4%d8%b1%d8%ad-%d8%b2%db%8c%d8%b1%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%aa%d9%88%d9%84%db%8c%d8%af/" target="_blank">شرح زیرسیستم</a></p>
<p> </p>
<p><a title="ERD زیرسیستم تولید" href="http://grp3se.wordpress.com/2008/08/25/erd-%d8%b2%db%8c%d8%b1%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%aa%d9%88%d9%84%db%8c%d8%af/">ERD زیرسیستم تولید</a></p>
<p style="text-align:right;"><a class="alignright" title="DFD زیرسیستم تولید" href="http://grp3se.wordpress.com/2008/08/25/dfd-%d8%b2%db%8c%d8%b1%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%aa%d9%88%d9%84%db%8c%d8%af/" target="_blank">DFD زیرسیستم تولید</a></p>
<p><a class="alignright" title="STD زیرسیستم تولید" href="http://grp3se.wordpress.com/2008/08/25/std-%d8%b2%db%8c%d8%b1%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%aa%d9%88%d9%84%db%8c%d8%af/" target="_blank">STD زیرسیستم تولید</a></p>
<p> </p>
<p><a class="alignright" title="دیاگرام افقی/عمودی زیرسیستم تولید" href="http://grp3se.wordpress.com/2008/08/25/%d8%af%db%8c%d8%a7%da%af%d8%b1%d8%a7%d9%85-%d8%a7%d9%81%d9%82%db%8c%d8%b9%d9%85%d9%88%d8%af%db%8c-%d8%b2%db%8c%d8%b1%d8%b3%db%8c%d8%b3%d8%aa%d9%85-%d8%aa%d9%88%d9%84%db%8c%d8%af/" target="_blank">دیاگرام افقی/عمودی زیرسیستم تولید</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/129/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/129/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=129&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d9%84%db%8c%d9%86%da%a9-%d9%be%d8%b3%d8%aa%e2%80%8c%d9%87%d8%a7%db%8c-%d9%85%d8%b1%d8%a8%d9%88%d8%b7-%d8%a8%d9%87-%d8%aa%d9%85%d8%b1%db%8c%d9%86-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%d9%88-%d8%b7%d8%b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
		<item>
		<title>خلاصه جلسه 6 مهندسی نرم‌افزار تابستان 87</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-6-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-6-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 18:05:04 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=127</guid>
		<description><![CDATA[جلسه ششم : تست و خطا یابی تست: خروجی این گام مشخصه تست است. در پیاده شازی باید موارد زیر انجام شود تا تست راحت‌تر باشد: 1) کدها عملیاتی باشند 2) هیچ اجرایی آزمایش برنامه را قطع نکند 3)قابلیت مشاهده در هر فرآیند 4) حالت‌های مختلف سیستم قابل نمایش باشد 5) خطاهای داخلی را تشخیص [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=127&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" align="center"><strong><span lang="FA">جلسه ششم : تست و خطا یابی</span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">تست: </span></strong><span lang="FA">خروجی این گام مشخصه تست است. در پیاده شازی باید موارد زیر انجام شود تا تست راحت‌تر باشد:</span></p>
<p class="MsoNormal"><span lang="FA">1) کدها عملیاتی باشند</span></p>
<p class="MsoNormal"><span lang="FA">2) هیچ اجرایی آزمایش برنامه را قطع نکند</span></p>
<p class="MsoNormal"><span lang="FA">3)قابلیت مشاهده در هر فرآیند</span></p>
<p class="MsoNormal"><span lang="FA">4) حالت‌های مختلف سیستم قابل نمایش باشد</span></p>
<p class="MsoNormal"><span lang="FA">5) خطاهای داخلی را تشخیص دهد</span></p>
<p class="MsoNormal"><span lang="FA">6) نرم‌افزاری که مرتب نیازهای اولیه آن تغییر کند هزینه تست بیشتری خواهد داشت</span></p>
<p class="MsoNormal"><strong><span lang="FA">ویژگی‌های تست خوب </span></strong></p>
<p class="MsoNormal"><span lang="FA">1) هدف تست خوب یافتن خطاها و اشکالات بیشتر با حداقل هزینه و زمان است</span></p>
<p class="MsoNormal"><span lang="FA">2) تست بیش از حد انجام نشود.</span></p>
<p class="MsoNormal"><span lang="FA">3) آزمایش‌ها هوشمندانه باشد</span><span>.</span></p>
<p class="MsoNormal"><span lang="FA">4) تست نرم‌افزار به معنی کشف همه خطاها و ارائه یک نرم‌افزار بدون خطاست.</span></p>
<p class="MsoNormal"><strong><span lang="FA">انواع روش‌های تست:</span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">1) جعبه سفید: </span></strong><span lang="FA">رویه برنامه یعنی خط به خط کدها<span>  </span>را تست میکند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">2) جعبه سیاه:</span></strong><span lang="FA"> به داخل ماژول‌ها کار ندارد. ورودی می‌خواهد و خروجی درست می‌خواهد.</span></p>
<p class="MsoNormal"><strong><span lang="FA">استراتژی تست نرم‌افزار: </span></strong><span lang="FA">پیاده‌سازدر گام باید تست مربوط به آن گام را انجام دهد تا در کل, تست نرم‌افزار در انتها بهتر و راحت‌تر باشد. هر یک از گام‌های تولید نرم‌افزار تست خاص خود را دارد:</span></p>
<p class="MsoNormal"><span lang="FA">1) تست مولفه: از جعبه سفید استفاده می‌شود.</span></p>
<p class="MsoNormal"><span lang="FA">2) معماری: کمی از جعبه سیاه و کمی از جعبه سفید استفاده می‌شود.</span></p>
<p class="MsoNormal"><span lang="FA">3) تست اعتبارسنجی: با توجه به نیاز‌ها و محدودیت‌های تعین شده در گام تحلیل, هر یک را تست (از نوع جعبه سیاه) می‌کنیم.</span></p>
<p class="MsoNormal"><span lang="FA">4) تست سیستم: در سطح مهندسی, از جعبه سیاه استفاده می‌شود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست جعبه سفید:</span></strong></p>
<p class="MsoNormal"><span lang="FA">1) ساختمان‌داده محلی را بررسی می‌کنیم.</span></p>
<p class="MsoNormal"><span lang="FA">2) همه‌ی شرط‌های موجود در کدها بررسی می‌شوند.</span></p>
<p class="MsoNormal"><span lang="FA">3) حلقه‌ها بررسی می‌شوند ( تعداد تکرار حلقه‌ها )</span></p>
<p class="MsoNormal"><span lang="FA">4)<span>  </span>بررسی مسیرهای کنترل: همه‌ی مسیرهای مستقل که برنامه با طی آن اجرا می‌شود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">آزمایش شرط‌ها: </span></strong><span lang="FA">در تست جعبه سفید مسیرهای مبنا بررسی می‌شوند. در این مرحله طراحی رویه‌ها رادرنظر می‌گیرند و از روی آن گراف جریان را رسم می‌کنند. برای تعیین تعداد مسیرهای مبنا 4 روش مختلف ووددارد:</span></p>
<p class="MsoNormal"><span lang="FA">1) محاسبه پیچیدگی دورانی: تعداد ناحیه‌های گراف جریان را محاسبه می‌کنیم.</span></p>
<p class="MsoNormal"><span lang="FA">2) استفاده از گزاره‌های شرطی: شماره‌های گزاره‌های شرطی و جمع آن‌ها با 1 است.</span></p>
<p class="MsoNormal"><span lang="FA">3) استفاده از فرمول: </span><span>E</span><span lang="FA"> تعداد یال‌ها و </span><span>N</span><span lang="FA"> تعداد گره‌ها</span><span><span>                 </span></span><span lang="FA"><span>       </span></span><span><span>  </span></span><span><span> </span></span><span>E<span>  </span>- N<span>  </span>+ 2</span><span lang="FA"></span></p>
<p class="MsoNormal"><span lang="FA">4) ایجادماتریس گراف</span></p>
<p class="MsoNormal"><strong><span lang="FA">آزمایش ساختارهای کنترل: </span></strong><span lang="FA">در شرط موارد زیر را بررسی می‌کنیم:</span></p>
<p class="MsoNormal"><span lang="FA">پرانتز گزاره‌ها, عبارت محاسباتی, عملگرهای محاسباتی, اولویت‌های عملگرها, عملگرهای رابطه‌ای, نوع متغیرها در عملگرهای رابطه‌ای و نوع داده‌ها</span></p>
<p class="MsoNormal"><strong><span lang="FA">ازمایش جریان داده‌ها:</span></strong><span lang="FA"> </span><span>DU (Define Use)</span><span lang="FA"> تعیین می‌کند که یک متغیر خاص در چه شماره دستوری تعریف و در چه شماره دستوری استفاده شده و در این زمان متغیر باید زنده بماند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">آزمایش حلقه‌ها:</span></strong><span lang="FA"> حلقه‌ها را در شرایط بررسی می‌کنیم:</span></p>
<p class="MsoNormal"><span lang="FA">اجرا نشدن حلقه, فقط یک گذر در طول حلقه, دو گذر طول حلقه, </span><span>n-1</span><span lang="FA"> گذر, </span><span>n</span><span lang="FA"> گذر, </span><span>n/2</span><span lang="FA">گذر, </span><span>n-1</span><span lang="FA"> گذر, </span><span>n+1</span><span lang="FA"> گذر</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست جعبه<span>  </span>سیاه: </span></strong><span lang="FA">می‌تواند از روی </span><span>DFD</span><span lang="FA"> هم بررسی شود. در تست جعبه سیاه در این گام از بالا به پائین انجام می‌شود. اول </span><span>main </span><span lang="FA">را بررسی می‌کنیم و چون ما هنوز زیر سیستم‌های </span><span>main</span><span lang="FA"> را بررسی نکرده‌ایم و می‌خواهیم فقط </span><span>main</span><span lang="FA"> را بررسی کنیم از روش </span><span>stub </span><span lang="FA">استفاده می‌کنیم.</span></p>
<p class="MsoNormal"><span>Stub</span><span lang="FA"> : زیر برنامه‌ای است که چردازشی انجام نمی‌دهد و به جای زیر سیستم‌ها </span><span>stub</span><span lang="FA"> قرار می‌دهیم.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست آلفا:</span></strong><span lang="FA"> تست پیاده‌سازی با مشتری متفاوت است. از کاربر دعوت می‌شود و زیر نظر پیاده‌ساز با سیستم کار می‌کند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست بتا:</span></strong><span lang="FA"> سیستم در یک محیط کنترل نشده زیر نظر مشتری مورد استفاده قرار می‌گیرد. هر سه ماه یکبار خطاها شناسایی شده را ارائه می‌کند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست سیستم: </span></strong><span lang="FA">مهندس سیستم, سیستم را با سخت‌افزار و رویه‌های کاری </span><span>Join</span><span lang="FA"> می‌کند و بعد کل سیستم را بررسی می‌کند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست فشار: </span></strong><span lang="FA">تعداد ورودی‌هایی که برای سیستم در نظر گرفته شده را خیلی زیاد بالا می‌بریم تا ببینیم سیستم با این فشار چطور برخورد می‌کند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست احیا: </span></strong><span lang="FA">سعی در جهت شکست و پائین آوردن نرم‌افزار داریم تا مشخص شود چقدر طول می‌کشد دوباره سیستم بالا بیاید و به حالت عادی خود بازگردد.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست حفاظت: </span></strong><span lang="FA">امنیت بررسی می‌شود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تست کارایی:</span></strong><span lang="FA"> سیستم در زمان تعیین شده باید پاسخگو باشد.</span></p>
<p class="MsoNormal"><span lang="FA">تست رابط گرافیکی:<span>  </span>انواع حالت‌های رابط گرافیکی را چک می‌کنیم.</span></p>
<p class="MsoNormal"><strong><span lang="FA">خطایابی:</span></strong><span lang="FA"> تست فرآیند رفتاری, درک علامت‌های ظاهر شده در نرم‌افزار و دلیل ان. در تست فقط علائم شناسایی می‌شوند, اما روش‌های حل و اینکه به کجا ربط دارد بر عهده خطایاب است. روش‌های خطایابی عبارتند از:</span></p>
<p class="MsoNormal"><span lang="FA">1) تصادفی:<span>  </span>محتویات حافظه را چاپ می‌کنیم و از خود کامپیوتر با صرف هزینه و وقت زیاد استفاده می‌کنیم.</span></p>
<p class="MsoNormal"><span lang="FA">2) عقب‌گرد: حدس می‌زنیم خطا از کجا رخ داده به عقب می‌رویم تا بررسی کنیم در مسیر کار چطور انجام شده.</span></p>
<p class="MsoNormal"><span lang="FA">3) حذف علت: حدس می‌زنیم که دلایل این شکست چیست, هر یک را بررسی می‌کنیم (از روی تجربه)</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/127/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/127/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/127/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=127&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-6-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
		<item>
		<title>خلاصه جلسه 5 مهندسی نرم‌افزار تابستان 87</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-5-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-5-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 18:04:11 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=125</guid>
		<description><![CDATA[جلسه پنجم مفاهیم و اصول طراحی هدف از طراحی, اطمینان از کیفیت نرم‌افزار, کاهش ریسک قبل از پیاده‌سازی و کاهش میزان خطاهاست. در گام تحلیل محصولاتی تولید می‌شود و در گام طراحی از آن‌ها استفاده می‌شود. در گام طراحی 4 عمل اصلی و اساسی انجام می‌شود: 1)      طراحی داده براساس مدل ERD و DD. 2)      [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=125&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" align="center"><span lang="FA">جلسه پنجم</span></p>
<p class="MsoNormal"><span lang="FA">مفاهیم و اصول طراحی</span></p>
<p class="MsoNormal"><span lang="FA">هدف از طراحی, اطمینان از کیفیت نرم‌افزار, کاهش ریسک قبل از پیاده‌سازی و کاهش میزان خطاهاست. در گام تحلیل محصولاتی تولید می‌شود و در گام طراحی از آن‌ها استفاده می‌شود. در گام طراحی 4 عمل اصلی و اساسی انجام می‌شود:</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">طراحی داده براساس مدل </span><span>ERD</span><span lang="FA"> و </span><span>DD</span><span lang="FA">.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">طراحی معماری براساس مدل‌های </span><span>DFD </span><span lang="FA"><span> </span>و </span><span>CFD</span><span lang="FA">.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">طراحی واسطه‌ها براساس </span><span>SDT</span><span lang="FA">, </span><span>Pspec</span><span lang="FA"> و</span><span> Cspec </span><span lang="FA">.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>4)<span>      </span></span></span><span lang="FA">طراحی رویه‌ها براساس </span><span>Pspec</span><span lang="FA">, </span><span>Cspec</span><span lang="FA">.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">اصول طراحی: </span></strong><span lang="FA"></span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">براساس مدل تحلیل, طراحی صورت می‌گیرد و قابل پیگیری باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">در طراحی, چیز جدیدی تولید نشود و از روش جدیدی استفاده نشود. بلکه از روش‌ها و مدل‌های موجود استفاده کنیم.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">طراحی فاصله ادراکی میان تحلیل و پیاده‌سازی را تا حد امکان کم می‌کند. </span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>4)<span>      </span></span></span><span lang="FA">طراحی, کدنویسی نیست.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>5)<span>      </span></span></span><span lang="FA">اصل طراحی کیفیت است و باید توجه اصلی به آن باشد.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">کیفیت:</span></strong></p>
<p class="MsoNormal"><span lang="FA">خارجی: آنچه مشتری می‌بیند و ارزیابی می‌کند مثل عملکرد, ظاهر, کارایی و &#8230;</span></p>
<p class="MsoNormal"><span lang="FA">داخلی: خود مهندسین نرم‌افزار آن را می‌بینند و براساس مفاهیم دیگری کیفیت نرم‌افزار را می‌سنجند که به آن‌ها &#8220;مفاهیم طراحی&#8221; می‌گویند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">مفاهیم طراحی: </span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">انتزاع یا مجردسازی: در طراحی سطح انتزاع را گام به گام کاهش می‌دهیم تا رفته رفته به پیاده‌سازی نزدیک شویم.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">پالایش: درهرگام جزئیات بیشتری به مسئله اضافه می‌کنیم و دوباره انتزاع و پالایش می‌کنیم. انتزاع و پالایش هردو<span>  </span>مکمل یکدیگرند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">خاصیت پیمانه‌ای: هر طراحی خوب با صرفه‌نظر از روش, باید خاصیت پیمانه‌ای را در نظر بگیرد.پیچیدگی و هزینه لازم برای مسئله بزرگ از پیچیدگی و هزینه‌ی یک مسئله تقسیم شده بیشتر خواهد بود.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>4)<span>      </span></span></span><span lang="FA">معماری: هم‌بندی مولفه‌ها و ساختارکلی نرم‌افزار است. هم‌بندی ماژول‌ها و ارتباط آن‌ها معماری را می‌سازد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>5)<span>      </span></span></span><span lang="FA">سلسله مراتب کنترل: پیمانه‌های سطح بالا پیمانه‌های کنترلی هستند و پیمانه‌های سطوح زیرین کارهای اصلی و پردازش‌ها و ورودی و خروجی را انجام می‌دهند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>6)<span>      </span></span></span><span lang="FA">تقسیم‌بندی: شکستن سیستم به زیر سیستم‌ها. دو نوع دارد: افقی و عمودی.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>7)<span>      </span></span></span><span lang="FA">ساختمان داده‌ها: ساختمان داده‌ها رابطه منطقی میان عناصر داده‌ای را نشان می‌دهد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>8)<span>      </span></span></span><span lang="FA">رویه نرم‌افزار: در رویه جزئیات پردازشی و منطق هریک از پیمانه‌ها و ترتیب اجزای دستورات وشرط‌ها بیان می‌شود.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>9)<span>      </span></span></span><span lang="FA">پنهان‌سازی اطلاعات: یک طراحی خوب اطلاعات را پنهان می‌کند. منطق ماژول‌ها از چشم هم پنهان است, بلکه فقط به نتایج یکدیگر کار دارند.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">استقلال تابعی: </span></strong><span lang="FA">باید این خاصیت وجود داشته تا هر ماژول کار خود را به خوبی انجام دهد. در استقلال تابعی دو مفهوم مطرح است:</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">وحدت: کارهایی که در یک ماژول قرار می‌گیرد به گونه‌ای در کنار هم باشند که بتوان گفت در کل ماژول چه کاری انجام می‌دهد. انواع وحدت:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-1)<span>      </span></span></span><span lang="FA">وحدت تصادفی</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-2)<span>      </span></span></span><span lang="FA">وحدت زمانی</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-3)<span>      </span></span></span><span lang="FA">وحدت رویه‌ای</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-4)<span>      </span></span></span><span lang="FA">وحدت ارتباطی</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-5)<span>      </span></span></span><span lang="FA">وحدت منطقی</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>2)<span>      </span></span></span><span lang="FA">کوپل(ارتباط) : در کوپل به ارتباط میان ماژول‌ها کار داریم و زمانی کوپل خوب است که ارتباط پیمانه‌ها کم باشد. انواع :</span><span></span></p>
<p class="MsoNormal"><span lang="FA">2-1) کوپل داده‌ای ( مولفه – ساختمان داده – کنترل )</span></p>
<p class="MsoNormal"><span lang="FA">2-2) کوپل مشترک</span></p>
<p class="MsoNormal"><span lang="FA">2-3) کوپل خارجی</span></p>
<p class="MsoNormal"><span lang="FA">2-4) کوپل محتویات</span></p>
<p class="MsoNormal"><strong><span lang="FA">اعمال اصلی طراحی:</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><strong><span><span>1)<span>      </span></span></span></strong><strong><span lang="FA">طراحی داده: </span></strong><span lang="FA">ساختمان داده‌های سیستم را مشخص می‌کنیم.در سه سطح است:</span><strong><span></span></strong></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-1)<span>            </span></span></span><span lang="FA">سطح مولفه: تا انتهای گام طراحی عقب می‌اندازیم. مانند تعریف متغیرها و مقادیر اولیه به آن‌ها</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-2)<span>            </span></span></span><span lang="FA">در سطح کاربرد: پایگاه داده است که از روی مدل </span><span>ERD</span><span lang="FA"> جداول را می‌سازیم.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-3)<span>            </span></span></span><span lang="FA">در سطح تجاری: طراحی مخزن داده است.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><strong><span><span>2)<span>      </span></span></span></strong><strong><span lang="FA">طراحی معماری: </span></strong><span lang="FA">از چند الگوی مشخص استفاده می‌کنیم:</span><strong><span></span></strong></p>
<p class="MsoNormal"><span lang="FA">2-1) معماری بر پایه داده</span></p>
<p class="MsoNormal"><span lang="FA">2-2) معماری جریان داده</span></p>
<p class="MsoNormal"><span lang="FA">2-3) معماری لایه‌ای</span></p>
<p class="MsoNormal"><span lang="FA">2-4) معماری </span><span>Call Return</span></p>
<p class="MsoNormal"><span lang="FA">2-5) معماری شی‌گرا</span></p>
<p class="MsoNormal"><strong><span lang="FA">کیفیت طراحی معماری: </span></strong><span lang="FA">کمی و کیفی</span></p>
<p class="MsoNormal"><strong><span lang="FA">جریان فرآیند در </span></strong><strong><span>DFD</span></strong><strong><span lang="FA">:</span></strong><span lang="FA"> </span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">جریان تبدیل: در این جریان داده‌ها مرتب تغییر می‌کنند و فرآیند جلو می‌رود.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>   </span></span></span><span lang="FA"><span> </span>جریان تراکنش: قلم داده‌ای در یک ماژول وجود داردکه براساس شرایط آن قلم داده یکی از خروجی‌ها انتخاب می‌شود, به طوریکه انگار در منطق آن ماژول تصمیم‌گیری انجام می‌شود.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><strong><span><span>3)<span>      </span></span></span></strong><strong><span lang="FA">طراحی واسطه‌ها: </span></strong><span>Interface</span><span lang="FA"> تاثیر زیادی در مشتری دارد و به همین دلیل اهمیت بسیار زیادی در تولید نرم‌افزار خواهد داشت, زیرا بیشتر تعامل کاربر با </span><span>Interface</span><span lang="FA"> است.</span><strong><span></span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">اصول طراحی واسط: </span></strong></p>
<p class="MsoNormal"><span lang="FA">1) کنترل را به کاربر بدهید</span></p>
<p class="MsoNormal"><span lang="FA">2)بارفکری کاربر را کم کنیم</span></p>
<p class="MsoNormal"><span lang="FA">3) واسط را یکنواخت کنیم</span></p>
<p class="MsoListParagraph"><span><span>§<span>      </span></span></span><span lang="FA">در مرحله طراحی واسط </span><span>Help</span><span lang="FA"> نرم‌افزار تولید می‌شود و شامل دو نوع است:</span></p>
<p class="MsoNormal"><span lang="FA">1) مجتمع شده: در هنگام ساخت به سیستم اضافه می‌شود و همراه با سیستم جلو می‌رود و در هر وضعیت سیستم, </span><span>Help</span><span lang="FA"> مربوط به آن وضعیت را نشان می‌دهد.</span></p>
<p class="MsoNormal"><span lang="FA">2) اضافه شده: پس از تولید و تکمیل نرم‌افزار, </span><span>Help</span><span lang="FA"> آن تولید می‌شود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">4) طراحی رویه‌ها:</span></strong></p>
<p class="MsoNormal"><span lang="FA">در این گام داخل ماژول‌ها را پر می‌کنیم. بااستفاده از شبه کد, منطق هر ماژول را تعیین و ساختمان‌داده‌ها و نوع داده‌ها را مشخص می‌کنیم. شامل سه مدل زیر است:</span></p>
<p class="MsoNormal"><span lang="FA">4-1) نشان‌گذاری طراحی گرافیکی: برای نشان دادن منطق ماژول‌ها یا از روش نشانه‌گذاری گرافیکی یا از ابزار گرافیکی دیگری به‌نام نمودار جعبه‌ای استفاده می‌کنیم.</span></p>
<p class="MsoNormal"><span lang="FA">4-2) نشان‌گذاری جدولی طراحی: برای نرم‌افزارهایی که در آن‌ها شرط‌ها خیلی کاربرد دارد استفاده می‌شود. در این جدول تصمیم‌گیری همی شرط‌های ممکن و موجود در مسئله را به همراه اعمالی که در سیستم در نتیجه ترکیب آن‌ها جمع می‌شود را لیست می‌کنیم.</span></p>
<p class="MsoNormal"><span lang="FA">4-3) زبان طراحی برنامه: استفاده از زبا طراحی برنامه یا شبه کد است. این روش از این جهت مناسب‌تر از سایر روش‌هاست زیرا همه‌ی شرط‌ها را نشان می‌دهد و ویرایش آن راحت‌تر است و قابلیت خوانده‌شدن توسط ماشین از جمله توانایی‌های این روش است.</span></p>
<p class="MsoNormal"><strong><span lang="FA"> <span style="font-weight:normal;"> </span></span></strong></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/125/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/125/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=125&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-5-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
		<item>
		<title>خلاصه جلسه 4 مهندسی نرم‌افزار تابستان 87</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-4-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-4-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 18:01:30 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-4-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/</guid>
		<description><![CDATA[جلسه چهارم روش‌های متداول در مهندسی نرم‌افزار: این روش‌ها تعیین می‌کنند که در هریک از گام‌های تحلیل, طراحی, پیاده‌سازی و تست چه فعالیت‌هایی و چه کارهایی انجام دهیم. روش مورد استفاده, روش ساختیافته است که این گام‌ها را بهتر آموزش می‌دهد. تحلیل هرچند اولین گام در مهندسی نرم‌افزار است اما تحلیل ساختیافته  به دنبال طراحی [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=124&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" align="center"><span lang="FA">جلسه چهارم</span></p>
<p class="MsoNormal"><strong><span lang="FA">روش‌های متداول در مهندسی نرم‌افزار: </span></strong></p>
<p class="MsoNormal"><span lang="FA">این روش‌ها<strong> </strong>تعیین می‌کنند که در هریک از گام‌های تحلیل, طراحی, پیاده‌سازی و تست چه فعالیت‌هایی و چه کارهایی انجام دهیم. روش مورد استفاده, روش ساختیافته است که این گام‌ها را بهتر آموزش می‌دهد. تحلیل هرچند اولین گام در مهندسی نرم‌افزار است اما تحلیل ساختیافته<span>  </span>به دنبال طراحی ساختیافته ایجادشد چرا که گام طراحی مهم‌تر از تحلیلاست. در هر گام سطح انتزاع کمتر می‌شود و رفته رفته به واقعیت نزدیک‌تر می‌شویم. </span></p>
<p class="MsoNormal"><span lang="FA">قبل از گام تحلیل, مهندسی سیستم انجام می‌شود و مهندس سیستم, نقش نرم‌افزار را مشخص کرده است. مفاهیم سطح بالا تعیین می‌شوند و به نحوه و جزییات پیاده‌سازی کاری ندارد. پس از آن مدیر اطلاعات دریافتی را تخمین می‌زند و وارد جزییات نمی‌شود و تنها برای هر گام تعیین شده باید بازه زمانی و هزینه و تعداد افرادو .. رامشخص می‌کند و اعضای تیم‌ها درهرگام در آن بازه زمانی تعیین شده باید وظیفه خود را انجام دهند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">اصول و مفاهیم اولیه تحلیل: </span></strong></p>
<p class="MsoNormal"><span lang="FA">چرا تحلیل می‌کنیم؟ چرا به آن نیاز داریم؟ هر عملی نیاز به تفکر دارد, ما باید در مورد عملکرد و مراحل کارفکر کنیم. هرچقدر آشنایی ما کمتر باشد, تحلیل بیشتری انجام می‌شود.</span></p>
<p class="MsoNormal"><span lang="FA">کار تحلیل توسط مهندسین نرم‌افزار که در اینجا تحلیلگر هستند انجام می‌شود. محصول کار مشخصه تحلیل نرم‌افزار است.</span></p>
<p class="MsoNormal"><strong><span lang="FA">فعالیت‌های عمده تحلیل نیاز:</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><strong><span><span>1)<span>      </span></span></span></strong><strong><span lang="FA">شناسایی</span></strong><span lang="FA"> <strong>مسئله</strong>: تحلیلگر برای شناسایی مسئله باید اطلاعات مورد<span>  </span>نیاز را از راه‌های مختلف جمع‌آوری کند. تحلیلگر می‌تواند از راه‌های مختلف با مشتری در ارتباط باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-1)</span></span><span lang="FA">به افراد زیادی ارائه<span>  </span>می‌شود ولی افراد کمی نتایج را تحویل می‌دهند و جلوی جریان ایده‌ها و تفکر را می‌گیرد و نباید جواب معلوم باشد و یا جواب را به مخاطب تلقین کرد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-2)</span></span><span lang="FA">کارکردن و حضور در محیط: از نزدیک می‌توان مشکلات را لمس کرد و در جریان کار اپراتورها قرار گرفت.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-3)</span></span><span lang="FA">مصاحبه: از قبل باید تعییم وقت کرد و اطلاع می‌دهند از کدام فرد خاص و در چه زمینه‌ای سوال می‌پرسند و باید دارای زمانبندی باشد. مدیریت قوی داشته باشد. در اولین ملاقات تحلیلگر و مشتری تلاش می‌کنند اطلاعات زیادی از طرف مقابل کسب کنند. هزینه و زمان زیادی صرف می‌شود. این روش در کنار سایر تکنیک‌ها مناسب است.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-4)</span></span><span lang="FA">مشاهده, مرور مستندات و رویه‌های کاری: مشابه حضور در محیط است و سبب می‌شود از نحوه عملکرد سیستم قبلی و کارکرد و مشکلات آن مطلع شود.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-5)</span></span><span lang="FA">روش </span><span>Fast</span><span lang="FA"> : در این روش همه اعضا از همه بخش‌های مختلف کل سیستم و در کنار نماینده مشتری جلسه‌ای برگزار می‌کنند و پیش از جلسه مستنداتی در مورد محصول به افراد ارائه می‌شود و آن‌ها باید موجودیت‌های مسئله را شناسایی کنند, سپس در جلسه این موجودیت‌ها و محدودیت‌ها را کامل بررسی می‌کنند و سپس به گروه‌هایی تقسیم می‌شوند که جزئیات بیشتر این موجودیت‌ها را شناسایی می‌کنند و در آخر به کل اعضا اعلام می‌کنند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-6)</span></span><span lang="FA">روش </span><span>QFD</span><span lang="FA"> : هدف اصلی حداکثر کردن رضایت مشتری است و سعی می‌شود سه نوع نیاز تشخیص داده شود:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">معمولی: آنچه مشتری خودش تعیین می‌کند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">موردانتظار: آنچه که مشتری خودش تعیین نمی‌کند اما بدیهی است باید وجود داشته باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">غیرمنتظره: مشتری چنین انتظاری نداردو اگر باشد رضایت را بالا می‌برد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-7)</span></span><span lang="FA">نمونه‌سازی: روش مناسبی برای جمع‌آوری اطلاعات است و به طور کلی دو نمونه است:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">انتهای بسته: نمونه دورانداختنی؛ نمونه‌ای را فقط برای جمع‌آوری اطلاعات می‌سازند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">انمتهای باز: نمونه افزایشی-تکاملی؛ نمونه‌ای را برای جمع‌آوری اطلاعات می‌سازیم و در گام‌های بعدی آن را در جهت تکمیل پروژه اصلی به کار می‌بریم.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span><span>2)<span>      </span></span></span></strong><strong><span lang="FA">ارزیابی و سنتز راه حل: </span></strong><span lang="FA">در بعضی از روش‌های جمع‌آوریاطلاعات مثل </span><span>Fast</span><span lang="FA">, </span><span>QFD</span><span lang="FA"> و نمونه‌سازی راه‌حل هم ارائه می‌شود. در این مرحله حالا که مسئله و نیازها و خواسته‌ها روشن و مشخص شده, راه‌حل را باید تعیین کنیم.</span><strong><span></span></strong></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span><span>3)<span>      </span></span></span></strong><strong><span lang="FA">مدل‌سازی:</span></strong><span lang="FA"> راه‌حل تعیین شده را مدل می‌کنیم. یک فلوچارت یا شکل گرافیکی ساده به‌راحتی می‌تواند راه‌حل را نشان دهد و برای نشان دادن از زبان مدل‍سازی که زبان مشترک بین تحلیلگران و طراحان و مهندسین نرم‌افزار است استفاده می‌کنیم.</span><strong><span></span></strong></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span><span>4)<span>      </span></span></span></strong><strong><span lang="FA">تعیین و شناسایی مشخصات مسئله:</span></strong><span lang="FA"> حاصل‌جمع مدل‌های مختلف, مشخصه تحلیل را می‌سازد.</span><strong><span></span></strong></p>
<p class="MsoListParagraphCxSpLast"><strong><span><span>5)<span>      </span></span></span></strong><strong><span lang="FA">مرور:</span></strong><span lang="FA"> یک </span><span>FTR</span><span lang="FA"> به مشخصه تحلیل اضافه می‌کنیم و این مشخصه تحلیل به مخزن اضافه می‌شود.</span><strong><span></span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">اجزای مشخصه تحلیل:</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>§<span>         </span></span></span><span lang="FA">محدوده اطلاعات نرم‌افزار: مدل </span><span>ERD</span><span lang="FA">, مدل </span><span>DFD</span><span lang="FA">, مستند </span><span>Pspec</span><span lang="FA">, مدل </span><span>CFD</span><span lang="FA">, مستند </span><span>Cspec</span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">توابع یا عملکرد نرم‌افزار: مدل </span><span>DFD</span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">رفتار نرم‌افزار: مدل </span><span>STD</span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">کارایی</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">محدودیت‌ها</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span>DD</span><span> </span><span>(Data Dictionary)</span><span lang="FA">: هر شی تولید شده و به کار رفته در نرم‌افزار با توضیح کامل در </span><span>DD</span><span lang="FA"> قرار می‌گیرد. هرجا داده‌ای تولید شود اسم داده, نام مستعار, چه جایی استفاده شده و توضیحات اضافی.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span>Help</span><span lang="FA"> کاربری</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">معیارهای اعتبارسنجی: پروژه خوب باید چه معیارها و ویژگی‌هایی داشته باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA"> </span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">مدل‌سازی تحلیل نیازها:</span></strong></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span><span>1)<span>      </span></span></span></strong><strong><span lang="FA">مدل </span></strong><strong><span>ERD</span></strong><strong><span lang="FA"> :</span></strong><span lang="FA"> مراحل تولید این مدل:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-1)</span></span><span lang="FA">تشخیص انواع موجودیت‌ها در فضای مسئله</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-2)</span></span><span lang="FA">تشخیص ارتباط میان هر زوج موجودیت‌ و اینکه اصلا ارتبتباطی میان آن‌ها وجود دارد یا نه</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-3)</span></span><span lang="FA"> تشخیص انواع ارتباط میان هر زوج موجودیت</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-4)</span></span><span lang="FA">تشخیص درجه و الزام ارتباطات</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-5)</span></span><span lang="FA">تشخیص صفات موجودیت‌ها</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>1-6)</span></span><span lang="FA">مرور </span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">انواع ارتباط میان موجودیت‌ها:</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>§<span>         </span></span></span><span lang="FA">سلسله مراتبی: تمام خصوصیات سطح بالاتر را به ارث می‌برند و علاوه برآن دارای صفات دیگری هم هستند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">شرکت‌پذیری: هر یک از اجزای تشکیل دهنده سطح بالاتر هستندو مشخصات خاص خود را دارند.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><strong><span><span>2)<span>      </span></span></span></strong><strong><span lang="FA">مدل </span></strong><strong><span>DFD</span></strong><strong><span lang="FA"> : </span></strong><span lang="FA">هم محدوده اطلاعات را در نظر دارد و هم توابع عملکرد سیستم را.</span><strong><span></span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">رسم نمودار </span></strong><strong><span>DFD</span></strong><strong><span lang="FA">: </span></strong><span lang="FA">در ابتدا سیستم را به چند زیر سیستم تقسیم می‌کنیم<strong></strong></span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">ابتدا فرض بر این است که کل سیستم یک فرآیند است و فقط موجودیت‌ها و داده‌های ورودی و خروجی را مشخص می‌کنیم. به </span><span>DFD</span><span lang="FA"> سطح صفر, </span><span>Contex Diagram</span><span lang="FA"> می‌گویند. </span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">ارتباط زیر سیستم‌ها را مشخص کرده و نمایی کلی از سیستم را بدست می‌آوریم و تبدیلات را در حالت کلی نشان می‌دهیم. کاری به موجودیت‌ها نداریم و فقط داده‌های ورودی و خروجی را مشخص می‌کنیم.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>3)<span>      </span></span></span><span lang="FA">در گام بعدی برای تهیه و تولید </span><span>DFD</span><span lang="FA"> سطح دوم, یکی از زیرسیستم‌ها را انتخاب کرده و تجزیه می‌کنیم.</span><span></span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><strong><span lang="FA">3) مدل </span></strong><strong><span>CFD</span></strong><strong><span lang="FA">: </span></strong><span lang="FA">روش رسم آن است که نمودار </span><span>DFD</span><span lang="FA"> را رسم کنیم و سپس تمام خطوط داده را حذف کنیم و رویدادها را مشخص کنیم. یک رویداد که وارد می‌شود یک سری اطلاعات کنترلی برای فرآیند فراهم می‌کند. صرفا به عنوان یک داده و اطلاع روی آن فعالیت انجام می‌شود و موجب فعال‌سازی فرآیندی نمی‌شود. جدولی به نام </span><span>Pat</span><span lang="FA"> وجود دارد که شامل رویدادهای مختلف و فرآیند فعال شدنی در آن رویدادهاست.</span></p>
<p class="MsoNormal"><strong><span lang="FA">4) مدل </span></strong><strong><span>STD</span></strong><strong><span lang="FA">: </span></strong><span lang="FA">حالت‌های مختلف نرم‌افزار رانشان می‌دهد:</span></p>
<p class="MsoNormal"><span lang="FA">4-1) انتظار تا کسی کاری را انجام دهد.</span></p>
<p class="MsoNormal"><span lang="FA">4-2) دریافت ورودی</span></p>
<p class="MsoNormal"><span lang="FA">4-3) محاسبه خروجی</span></p>
<p class="MsoNormal"><span lang="FA">4-4) نمایش خروجی</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>ü<span>      </span></span></span><span>ERD</span><span lang="FA"> جداول پایگاه داده و </span><span>DFD</span><span lang="FA"> معماری را می‌دهد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>ü<span>      </span></span></span><span>Pspec</span><span lang="FA"> و </span><span>Cspec</span><span lang="FA"> طراحی مولفه‌های نرم‌افزار را در می‌آورند.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>ü<span>      </span></span></span><span>STD</span><span lang="FA"> و </span><span>CFD</span><span lang="FA"> برای طراحی واسط کاربری به کار می‌رود.</span><span></span></p>
<p class="MsoNormal"><strong><span> </span></strong></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/124/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/124/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=124&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-4-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
		<item>
		<title>خلاصه جلسه 3مهندسی نرم‌افزار تابستان 87</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-3%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-3%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 18:00:26 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=122</guid>
		<description><![CDATA[جلسه سوم مدیریت ریسک مفهوم ریسک: نمی‌دانیم چه مشکلی رخ می‌دهد اما می‌دانیم 80% احتمال بروز مشکل وجود دارد. هر ریسکس نتیجه‌اش یک فقدان است. اگر احتمال آن 100% باشد دیگر ریسک نیست بلکه یک محدودیت برای پروژه است. انواع ریسک‌ها: قابل پیش‌بینی: ریسک‌هایی که می‌توان آن‌ها را نام برد, تعیین می‌شوند. غیر قابل پیش‌بینی: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=122&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" align="center"><strong><span lang="FA">جلسه سوم</span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">مدیریت ریسک </span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">مفهوم ریسک: </span></strong><span lang="FA">نمی‌دانیم چه مشکلی رخ می‌دهد اما می‌دانیم 80% احتمال بروز مشکل وجود دارد. هر ریسکس نتیجه‌اش یک فقدان است. اگر احتمال آن 100% باشد دیگر ریسک نیست بلکه یک محدودیت برای پروژه است.</span></p>
<p class="MsoNormal"><strong><span lang="FA">انواع ریسک‌ها: </span></strong></p>
<p class="MsoNormal"><span lang="FA">قابل پیش‌بینی: ریسک‌هایی که می‌توان آن‌ها را نام برد, تعیین می‌شوند.</span></p>
<p class="MsoNormal"><span lang="FA">غیر قابل پیش‌بینی: بستگی به مدیر یا فردی که ریسک‌ها را تحلیل می‌کند دارد. آنچه که اصلا به آن فکر نکردیم.</span></p>
<p class="MsoNormal"><strong><span lang="FA">مراحل تحلیل ریسک:</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">شناسایی ریسک‌ها: ریسک‌های پروژه را در یک چک لیست می‌نویسیم.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">تعیین احتمال ریسک‌ها: به هر یک از ریسک‌ها یک احتمال بر حسب درصد می‌دهیم .</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">تعیین تاثیر ریسک‌ها در پروژه: میزان تاثیر ریسک‌ها را مشخص می‌کنیم. کم اهمیت, متوسط, بحرانی, فاجعه آمیز</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>4)<span>      </span></span></span><span lang="FA">مدیریت ریسک: برنامه‌ای برای مدیریت ریسک‌ها تهیه می‌کنیم. </span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>5)<span>      </span></span></span><span lang="FA">اولویت‌بندی ریسک‌ها: ریسک‌هایی که تاثیر زیاد و احتمال وقوع آن متوسط رو به بالاست را در اولویت قرار می‌دهیم.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">مولفه‌ها:</span></strong><span lang="FA"> برای تعیین تاثیر هر ریسک چهار مولفه را در نظر می‌گیریم و احتمال آن‌ها را تعیین می‌کنیم و میانگین احتمالات را محاسبه کرده و به عنوان احتمال ریسک در جدول ثبت می‌کنیم:</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">کارایی: اگر ریسک تعیین شده اتفاق افتد چقدر در عدم انطباق محصول با نیازهای تعیین شده تاثیر دارد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">هزینه: اگر ریسک تعیین شده اتفاق افتد چقدر احتمال دارد هزینه واقعی از هزینه برآورد شده بیشتر یا کمتر باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">حمایت: با وقوع این ریسک این محصول چقدر امکان پشتیبانی, تصحیح و تغییر دارد.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>4)<span>      </span></span></span><span lang="FA">زمانبندی: اگر ریسک تعیین شده اتفاق افتد چقدر احتمال دارد از زمانبندی عقب بیفتیم.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">برنامه </span></strong><strong><span>RMMM</span></strong><strong><span lang="FA"> :</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">کاهش ریسک: مدیر در این زمینه سعی می‌کند که مشکلات موجود را رفع کند و شرایطی را به وجود آورد که ریسک اتفاق نیفتد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">نظارت بر ریسک: در این مرحله اولین کار این است که در حین پروژه ریسک را بررسی کند. ببیند آیا ریسک اتفاق می‌افتد یا خیر و از این تجزیه‌ها و تخمین‌ها در پروژه‌های بعدی استفاده کند. بررسی کند که آیا کارهای کاهش پروژه به خوبی انجام می‌شود. دلیل وقوع ریسک‌ها را مشخص می‌کند.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>3)<span>      </span></span></span><span lang="FA">مدیریت ریسک: همه کارها برای کاهش و نظارت بر وقوع ریسک انجام شده ولی حالا ریسک اتفاق افتاده. چه کارهایی باید انجام دهیم و چه برنامه‌ریزی‌هایی برای آینده داریم.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">انواع ریسک‌های نرم‌افزاری:</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">ریسک‌های پروژه‌ای</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">ریسک‌های فنی</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">ریسک‌های تجاری</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>4)<span>      </span></span></span><span lang="FA">ریسک‌های بازاریابی</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>5)<span>      </span></span></span><span lang="FA">ریسک‌های استراتژیک</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>6)<span>      </span></span></span><span lang="FA">ریسک‌های حمایت مدیران ارشد</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>7)<span>      </span></span></span><span lang="FA">ریسک‌های تکنیکی </span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>8)<span>      </span></span></span><span lang="FA">ریسک‌های محیط توسعه نرم‌افزار</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">مدیریت پیکربندی</span></strong></p>
<p class="MsoNormal"><span lang="FA">مدیریت پیکربندی مجموعه‌ای از فعالیت‌های پیگیری و کنترل می‌باشد که در زمان شروع پروژه آغاز می‌شود و فقط زمانی خاتمه می‌یابد که نرم‌افزار از رده خارج شود.مدیریت پیکربندی در برگیرنده تغیرات است.</span></p>
<p class="MsoNormal"><strong><span lang="FA">فعالیت‌های مدیریت پیکربندی: </span></strong><span lang="FA"></span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">شناسایی اقلام پیکربندی: اولین گام شناسایی اقلام است.که هریک می‌تواند منفرد باشد یا ترکیبی.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">قلم پیکربندی: هرمحصول یا هرچیزی که در حین فرآیند تولید می‌شود. در مدیریت پیکربندی مخزنی وجود دارد که همه اقلام پیکربندی در آن قرار می‌گیرد.هر یک از این اقلام یک نام و توصیفی هستند که نشان می‌دهد این قلم مربوط به کدام یک از این گام‌هاست.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">پس از آنکه محصول تووسط تولید کننده تولید و به مدیریت ارائه شد, مرور تکنیک رسمیروی آن انجام می‌شود و پس از تایید به عنوان خط مبنا در مخزن ذخیره می‌شود. بعد از اینکه خط مبنا در مخزن اضافه شد, هر تغییری روی آن نیاز به درخواست تغییر اجازه مدیریت دارد.</span></p>
<p class="MsoListParagraphCxSpLast"><span><span>2)<span>      </span></span></span><span lang="FA">کنترل نسخه: در این مرحله گراغ تکامل مربوط به نسخه‌های مختلف هریک از اقلام پیکربندی رسم می‌شود. شماره‌گذاری نسخه‌ها همان فرآیند کنترل نسخه است که تعیین می‌کند کدام نسخه از روی چه نسخه‌ای ساخته شده است.</span><span></span></p>
<p class="MsoNormal"><span lang="FA">گراف نکامل نرم‌افزار: هرگاه نسخه‌ای از یک قلم پیکربندی تغییر می‌کند و نسخه‌ی جدیدی تولید می‌شود, نرم‌افزار هم تغییر می‌کند و نسخه‌ی جدیدی از نرم‌افزار تولید می‌شود.</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>3)<span>      </span></span></span><span lang="FA">کنترل تغییر: مدیر باید کنترل‌های زیر را انجام شود تا کنترل تغییر انجام شود:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">الف) کنترل دسترسی: قلم پیکربندی تایید شده و عنوان خط مبنا به مخزن اضافه می‌شود. کسی که درخواست تغییر می‌دهد باید کنترل شود او اجازه دسترسی و تغییر دارد یا خیر. ابزارهایی وجود دارند که این دسترسی‌ها را به افراد می‌دهند.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">ب) کنترل همزمانی: دونفر به طور همزمان نتوانند یک قلم پیکربندی را تغییر دهند, با دسترسی هر فرد قلم قفل شود.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">4)<span>  </span>برسی پیکربندی: بررسی وضعیت پیکربندی, بررسی می‌شود آنچه انجام شده از نظر تکنیکی درست بوده یا خیر. تغییرات<span>  </span>انجام شده مطابق با استانداردها انجام شده یا خیر.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">5)<span>  </span>گزارش وضعیت: هرگاه درخواست تغییری تصویب شود, رکوردی به این گزارش اضافه می‌شود که نشان می‌دهد چه<span>          </span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA"><span>    </span>زمانی, چه تغییری, توسط چه کسی انجام شده و نتیجه‌ی ان چه بوده است.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA"> </span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">اطمینان از کیفیت نرم‌افزار </span></strong><strong><span>(SQA)</span></strong><strong><span> <span lang="FA"></span></span></strong></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">قابلیت اطمینان : </span></strong><span lang="FA">با </span><span>Kloc</span><span lang="FA"> و </span><span>FP</span><strong><span> </span></strong><span lang="FA">نیز سنجیده می‌شود اما </span><span>MTBF</span><span lang="FA"> ( متوسط زمان بین خرابی‌ها) نهتر است زیرا به کاربر وابسته است.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span>MTBF</span><span lang="FA"> = </span><span>MTTF + MTTR</span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">قابلیت در دسترس بودن: </span></strong><span lang="FA">برای <span> </span>وظیفه تعیین شده کاربرد دارد یا خیر. هرچه<span>  </span></span><span>MTTR</span><span lang="FA"> کمتر باشد قابلیت در دسترس بودن بالاتر خواهد بود.</span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">قابلیت امنیت:</span></strong><span lang="FA"> سنجش امنیت مانند تحلیل ریسک برای امنیت جدول رسم می‌کنیم. گروه </span><span>SQA</span><span lang="FA"> احتمال و تاثیر هریک از بحران‌ها را بررسی می‌کنیم و در نهایت نتیجه‌گیری می‌کنیم برای رفع آن‌ها باید چه کاری انجام دهیم. نبود امنیت باعث شکست در پروژه و کنار گذاشتن نرم‌افزار می‌شود.</span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">تیم </span></strong><strong><span>FTR</span></strong><strong><span lang="FA"> :</span></strong><span lang="FA"> این تیم از 3 تا 5ر نفر مهندس نرم‌افزار تشکیل می‌شود. این تیم محصولات را از نظر مطابقت با استانداردها بررسی<span>  </span>می‌کند. سپس جلسه‌ای برای بررسی تشکیل می‌شود. حاضران این جلسه اعضای </span><span>FTR</span><span lang="FA"> و تولیدکنندگان هستند. در پایان جلسه یا نرم‌افزار مردود می‌شود و پس از اصلاح دوباره جلسه‌ای تشکیل می‌شود یا تایید می‌شود و به مخزن اضلفه می‌شود یا با وجود مشکلات کوچک, تایید می‌شود تا پس از اصلاح بدون تشکیل جلسه به مخزن سپرده شود.</span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">تیم </span></strong><strong><span>SQA</span></strong><strong><span lang="FA"> :</span></strong><span lang="FA"> از مهندسین نرم‌افزار تشکیل شده که کارهای تکنیکی را انجام می‌دهند. افراد </span><span>SQA</span><span lang="FA"> مرورها, آزمایش‌ها و تست‌ها را در می‌آورند. برنامه‌ریزی‌هایی برای مرورها, بازبینی‌های نرم‌افزار و ثبت اطلاعات امنیتی و آماری و تولید گزارشات را انجام می‌دهند.</span></p>
<p class="MsoListParagraphCxSpLast"><span> </span></p>
<p class="MsoNormal"><strong><span lang="FA">زمانبندی و پیگیری پروژه</span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">زمانبندی پروژه: </span></strong><span lang="FA">بی‌نظمی, رخداد ریسک‌های پیش بینی نشده, تغییرات خواسته‌های مشتری, ناهماهنگی تیم‌ها, ناتوانی مدیر پروژه در شناسایی وحل بحران و معقول نبودن زمان تعیین شده توسط مشتری همه از دلایلی است که سبب عقب ماندن پروژه‌ها از زمانبندی می‌شود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">اصول زمانبندی: </span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>§<span>         </span></span></span><span lang="FA">سیستم را به زیر سیستم‌ها تقسیم نموده و در مورد هریک از آن‌ها گام‌های مهندسی را تعیین کنیم.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">تخمین نفر ماه برا یانجام هر یک از فعالیت‌ها</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">به هریک از فعالیت‌های تعیین شده فردی را اختصاص دهیم</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">اعتبارسنجی فعالیت</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span lang="FA">برای هر بخش فعالیت‌ها, خروجی تعیین کنیم.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>§<span>         </span></span></span><span lang="FA">میزان فعالیت یعنی زمان شروعو پایان هر فعالیت را تعیین کنیم.</span><span></span></p>
<p class="MsoNormal"><span lang="FA">به طور کلی سه درجه دقت در انتخاب کارهای مهندسی وجود دارد:</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">معمولی: تمام کارهای مربوط به طور حداقل انجام شودو فعالیت‌های چتری به طور حداقل انجام می‌شود</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">ساختاریافته: </span><span>SQA</span><span lang="FA"> و مستندسازی هم انجام می‌شوند, تاحدی که کیفیت تضمین شود.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">اکید: دقیقا همه کارها با دقت تمام و شدت زیاد انجام می‌دهیم برای رسیدن به حداکثر کیفیت</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>4)<span>      </span></span></span><span lang="FA">تولید سریع: می‌خواهیم محصول به سرعت وارد بازار شود. حداقل کارها را انجام می‌دهیم. مستندسازی و مرورها را پس از تحویل انجام می‌دهیم.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">پیگیری پروژه: </span></strong><span lang="FA">مدیر<strong> </strong>مرورها, گزارشات مدیران تیم‌ها را بررسی می‌کند, جلسات رسمی یا غیر رسمی برای وضعیت پروژه برگزار می‌کند تا ببیند پروژه چطور پیش می‌رود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">بررسی آماری پیگیری پروژه: </span></strong><span lang="FA">مدیر<strong> </strong>تعیین می‌کند, هرنفرماه چقدر هزینه دارد و هزینه برنامه‌ریزی شده را تعیین می‌کند. مدیر زمان ثابتی مثل </span><span>t</span><span> <span lang="FA">را در نظر می‌گیرد, کل هزینه‌های زمانبندی شده برای پروژه تا زمان </span></span><span>t</span><span lang="FA"> را محاسبه کند و هزینه‌های واقعی صرف شده تا این زمان را نیز تعیین کند.</span></p>
<p class="MsoNormal"><span><span>                                                 </span></span><span lang="FA">هزینه زمانبندی شده</span><span><span>                                                 </span>CS = ∑ CS<sub>i</sub></span><span> <span lang="FA"></span></span></p>
<p class="MsoNormal"><span><span>  </span></span><span lang="FA"><span>                                              </span>هزینه واقعی زمانبندی شده</span><span><span>                                     </span>CP = ∑ CP<sub>i </sub></span></p>
<p class="MsoNormal" align="right"><span lang="FA"><span>                                                </span><span> </span>کارایی زمانبندی<span>   </span></span><span>Spl = CP / CS</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/122/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/122/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=122&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-3%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
		<item>
		<title>خلاصه جلسه 2 مهندسی نرم‌افزار تابستان 87</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-2-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-2-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 17:58:47 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=120</guid>
		<description><![CDATA[جلسه دوم : اصول و مفاهیم مدیریت پروژه های نرم افزاری یکی از فعالیت‌های چتری مدیریت پروژه است. پیش از آغازفرآیند تحلیل و طراحی و .. مدیرپروژه کار خود را آغاز می‌کند. طرح پروژه که شامل: برنامه‌ریزی, زمانبندی, ریسک‌ها, محدودیت‌ها, منابع مورد نیاز, مکانیزم‌های کنترل کیفیت و زمان آغاز و پایان و هزینه‌ها را تعیین [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=120&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" align="center"><strong><span lang="FA">جلسه دوم : اصول و مفاهیم مدیریت پروژه های نرم افزاری</span></strong></p>
<p class="MsoNormal"><span lang="FA">یکی از فعالیت‌های چتری مدیریت پروژه است. پیش از آغازفرآیند تحلیل و طراحی و .. مدیرپروژه کار خود را آغاز می‌کند. طرح پروژه که شامل: برنامه‌ریزی, زمانبندی, ریسک‌ها, محدودیت‌ها, منابع مورد نیاز, مکانیزم‌های کنترل کیفیت و زمان آغاز و پایان و هزینه‌ها را تعیین می‌کند.</span></p>
<p class="MsoNormal"><span lang="FA">مدیر پروژه برای مدیریت حوزه‌های زیر را باید پوشش دهد:</span></p>
<p class="MsoListParagraphCxSpFirst"><strong><span><span>1)<span>      </span></span></span></strong><strong><span lang="FA">افراد </span></strong><strong><span>(People)</span></strong><span lang="FA"> : مهم‌ترین جزء هر پروژه نرم‌افزاری است. 5 گروه از افراد درگیر پروژه هستند:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-1)<span>            </span></span></span><span lang="FA">مدیران ارشد: کارهای مدیریت سیستم را انجام می‌دهند. تصمیم‌های مهم و تاثیرگذار را می‌گیرند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-2)<span>            </span></span></span><span lang="FA">مدیرپروژه: رهگیری و سازماندهی و برنامه‌ریزی پروژه را انجام می‌دهد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-3)<span>            </span></span></span><span lang="FA">مهندسان: کارهای تحلیل و طراحی و پیاده‌ازی و تست و نگه‌داری را انجام می‌دهند (مجریان)</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1-4)<span>            </span></span></span><span lang="FA">مشتری: نیازها, مشخصه‌ها و خصوصیات نرم‌افزار را تعیین می‌کنند. (نرم‌افزار را سفارش می‌دهند)</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>1-5)<span>            </span></span></span><span lang="FA">کاربر: کسانی هستند که از نرم‌افزار استفاده می‌کنند.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل </span></strong><strong><span>MOI</span></strong><strong><span lang="FA"> رهبری:</span></strong></p>
<p class="MsoNormal"><span lang="FA">الف) انگیزه: رهبر باید بتواند افراد را فعال کند تا پروژه به ثمر برساند. رهبری قوی انگیزه افراد را تا آخر پروژه حفظ می‌کند.</span><span></span></p>
<p class="MsoListParagraphCxSpFirst"><span lang="FA"><span>ب‌)<span>    </span></span></span><span lang="FA">سازماندهی: افراد با مهارت‌های مختلف کنار هم باشند, وظیفه تعیین شده برای افراد متناسب با مهارت‌ها و ویژگی‌های افراد باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span lang="FA"><span>ج‌)<span>      </span></span></span><span lang="FA">خلاقیت: شکوفایی خلاقیت‌های افرلد.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA"> </span></strong></p>
<p class="MsoListParagraph"><strong><span><span>2)<span>      </span></span></span></strong><strong><span lang="FA">محصول </span></strong><strong><span>(Product)</span></strong><strong><span lang="FA"> : </span></strong><span lang="FA">مهم‌ترین وظیفه مدیر در این بخش, تعیین محدوده نرم‌افزار و تجزیه آن است. یعنی زمانی که مشخصه سیستم را دریافت می‌کند آنقدر آن را گسترش می‌دهیم تا عملکرد, کارایی, رفتار, داده‌ها و محدودیت و .. مشخص شود.</span><strong><span></span></strong></p>
<p class="MsoNormal"><span lang="FA">عملکرد: نرم‌افزار چه کارهایی انجام می‌دهد.</span></p>
<p class="MsoNormal"><span lang="FA">رفتار: رفتار و حالت‌های مختلف سیستم. اتفاقات مختلفی که در نرم‌افزار رخ می‌دهد.</span></p>
<p class="MsoNormal"><span lang="FA">داده‌ها: سیستم از چه داده و ساختمان داده‌ای استفاده می‌کند.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">محدودیت: چه موانع و نبایدهایی در سیستم وجود دارد.</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><strong><span><span>3)<span>      </span></span></span></strong><strong><span lang="FA">فرآیند </span></strong><strong><span>(Process)</span></strong><strong><span lang="FA"> : </span></strong><span lang="FA">متناسب با مهارت اعضای تیم, نیازها, خصوصیات محصول, میزان پیچیدگی نرم‌افزار و نوع سیستم فرآیند مناسب باید انتخاب شود. در این مرحله فرآیند هم تجزیه می‌شود. از محصول و فرآیند مدل سازی انجام می‌شود. برای هر محصول تعیین می‌کنیم در هر گام از تحلیل و طراحی و .. چه کارهایی باید انجام شود. برای هریک تخمین زده می‌شود و زمانبندی کل پروژه و هزینه آن تعیین می‌شود.</span><strong><span></span></strong></p>
<p class="MsoListParagraphCxSpLast"><strong><span><span>4)<span>      </span></span></span></strong><strong><span lang="FA">پروژه </span></strong><strong><span>(Project)</span></strong><strong><span lang="FA"> : </span></strong><span lang="FA">عواملی که باعث شکست پروژه می‌شوند:</span><strong><span></span></strong></p>
<p class="MsoNormal"><span lang="FA">عدم شناخت نیازهای مشتری, محدوده نرم‌افزار مشخص نشده, مدیریت ضعیف تغییرات, تغییر تکنولوژی, تغییر نیازهای مشتری, مشخص نبودن مهلت‌ها, مقاومت کاربران, از میان رفتن حمایت‌ حامیان, فقدان افراد ماهر, اجتناب از بکارگیری آموزش‌های دیده شده.</span></p>
<p class="MsoNormal"><strong><span lang="FA">اندازه‌گیری: </span></strong><span lang="FA">یکی دیگر از وظایف مدیر پروژهاندازه‌گیری است. اندازه‌گیری در کار مهندسی معنا پیدا می‌کند. برای آنکه نسبت پروژه, فرآیند و محصول فهم درستی بدست آوریم باید یک سری صفات رااندازه‌گیری کنیم.</span></p>
<p class="MsoNormal"><strong><span lang="FA">معیار:</span></strong><span lang="FA"> تخصیص اندازه به یک صفت کمی, یک معیار نامیده می‌شود. مانن هزینه, زمان, تعداد خطا</span></p>
<p class="MsoNormal"><strong><span lang="FA">شاخص – دیدگاه: </span></strong><span lang="FA">ترکیبی از معیارها که دیدگاهی را به ما می‌دهد. </span></p>
<p class="MsoNormal"><strong><span lang="FA">کاربرد معیارها:</span></strong><span lang="FA"></span></p>
<p class="MsoListParagraphCxSpFirst"><span lang="FA">1) خصوصی: برای فرآیندهای خاص کاربرد دارد.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span lang="FA">2) عمومی: در طول پروژه انجام می‌شود.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">نرمال‌سازی: </span></strong><span lang="FA">برای مقایسه معیارها و نتیجه‌گیری براساس آن‌ها, ابتدا آن‌ها را نرمال‌سازی می‌کنیم و بعد مقایسه.</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">نرمال‌سازی اندازه‌گرا: تعداد خطاها در هر هزار خط کد.</span><span>(Kloc) </span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">نرمال‌سازی عملگرا</span><span>(FP)<span>  </span></span><span lang="FA"><span> </span>:<span>  </span>براساس تعداد نقاط عملکرد. برای این کار ابتدا تعداد ورودی‌ها, خروجی‌ها, درخواست‌ها,فایل‌ها و رابط‌های خارجی را محاسبه و در میزان پیچیدگی هر یک ضرب می‌کنیم و از فرمول زیر بدست می‌آید:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle" align="right"><span>N = ∑ f<sub>i</sub></span></p>
<p class="MsoListParagraphCxSpMiddle" align="right"><span>C = ( 0.65 + 0.01 * N )</span></p>
<p class="MsoListParagraphCxSpMiddle" align="right"><span>FP = ∑ ( Count * Weight ) * C</span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span>Kloc</span><span lang="FA"> چون بستگی به برنامه‌نویس و زبان برنامه‌نویسی دارد مناسب نیست.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>§<span>         </span></span></span><span>FP</span><span> <span lang="FA">چون معلوم نیست چیست و کجاست و اینکه به عملکرد داخلی نرم‌افزار کاری ندارد مناسب نیست.</span></span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>§<span>         </span></span></span><span lang="FA">مقدار </span><span>Kloc</span><span lang="FA"> قابل تبدیل به </span><span>FP</span><span lang="FA"> است.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">کیفیت: </span></strong><span lang="FA">یکی دیگر از معیارهای نرم‌افزار, معیار اندازه‌گیری کیفیت است. کیفیت نرم‌افزاررا نمی‌توان مستقیما اندازه گرفت, بلکه از دو روش استفاده می‌کنیم:</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">مستقیم: به طور مستقیم کیفیت نرم‌افزار را تعیین کنیم. که روش چندان مناسبی در مهندسی نیست.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">غیر مستقیم: کیفیت را براساس معیارهای دیگری بررسی کرده و آن‌ها را اندازه‌گیری می‌کنیم. این معیارها:</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">2-1) قابلیت نگه‌داری: درجه‌ای که بعدا می‌توانیم برنامه را تغییر دهیم یا آن را بهبود ببخشیم. معیار آن </span><span>MTTC</span><span lang="FA"> است. </span><span>MTTC</span><span lang="FA"> میانگین زمان لازم برای تغییر نرم‌افزار, که هرچه کمتر باشد نرم‌افزار قوی‌تر است.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">2-2) امنیت: هرچه میزان یکپارچگی نرم‌افزار بیشتر باشد امنیت هم بیشتر است. منظور از یکپارچگی, درجه‌ای که نرم‌افزار در برابر تهدیدات خارجی مقاومت نشان می‌دهد.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA">2-3) قابلیت استفاده: میزان زمان مورد نیاز برای آموزش کاربران و کارکردن با نرم‌افزار, قابلیت سودندی, میزان فعالیت و مهارت لازم برای کار و استفاده از نرم‌افزار و میزان زمان لازم برای ورود.</span></p>
<p class="MsoListParagraphCxSpMiddle"><span lang="FA"> </span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">برنامه‌ریزی: </span></strong><span lang="FA">هدف از ایجاد طرح پروژه, ایجاد یک استراتژی عملی برای کنترل و پیگیری یک پروژه تکنیکی پیچیده است. با ایجاد طرح پروژه می‌توان نتیجه نهایی را در زمان تعیین شده و با کیفیت موردنظر تولید کرد واین یعنی برنامه‌ریزی.</span></p>
<p class="MsoListParagraphCxSpMiddle"><strong><span lang="FA">گام‌های برنامه‌ریزی: </span></strong><span lang="FA"></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>1)<span>      </span></span></span><span lang="FA">مسئله و کارهایی که باید انجام شود را بشناسیم. داده‌ها, رفتار, عملکرد و محدودیت‌ها مشخص باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">تخمین: تخمین میزان فعالیت و زمان موردنیاز</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">ریسک: چطور می‌توان از وقوع آن جلوگیری کرد. در مورد هرکدام برنامه‌ریزی می‌کنیم.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>4)<span>      </span></span></span><span lang="FA">زمانبندی: کارهای متفاوت در طول پروژه را زمانبندی می‌کنیم.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>5)<span>      </span></span></span><span lang="FA">کنترل استراتژی: استراتژی‌های کنترل کیفیت و کنترل تغییرات را کنترل کنیم.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">تخمین هزینه: </span></strong><span lang="FA"><span> </span>برای این کار باید محدوده پروژه به روشنی تعیین شده باشد, تجزیه کارها و وظایف به اندازه‌های کوچکتر بسیار مفید خواهد بود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">تخمین تکنیک‌ها: </span></strong><span lang="FA"></span></p>
<p class="MsoNormal"><span lang="FA">مشابه پروژه‌های قبلی این کار را انجام دهیم.</span></p>
<p class="MsoNormal"><span lang="FA">از روش‌های مرسوم تخمین استفاده کنیم.</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>·<span>         </span></span></span><span lang="FA">تفتیک وظایف و تخمین فعالیت‌ها</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>·<span>         </span></span></span><span lang="FA">تخمین اندازه </span><span></span></p>
<p class="MsoNormal"><span lang="FA">استفاده از ابزارهای این کار مانند </span><span>CheckPoint</span></p>
<p class="MsoNormal"><strong><span lang="FA">تصمیم برای خرید:</span></strong></p>
<p class="MsoNormal"><span lang="FA">پس از تخمین هزینه‌ها تصمیم می‌گیریم هریک از وظایف و اجزای پروژه را چگونه تهیه کنیم. برای این‌کار معیارهای موردنظر از جمله کارایی, زمان تحویل و .. را برای هریک از اجزای پروژه لیست می‌کنیم. سپس برای هریک از آن‌ها یک درخت تصمیم‌گیری می‌سازیم و هزینه مربوط به هریک ازراه‌حل‌ها از جمله ساخت سیستم, به‌کاربردن اجزای از قبل تولیدشده, خرید و یا بستن قرارداد برای تولید سفارش زیرسیستم را تعیین می‌کنیم. هزینه هریک از راه‌حل‌ها را در احتمالش ضرب می‌کنیمو در انتها میزان هزینه هریک را مقایسه می‌کنیم و هزینه عملکرد را انتخاب می‌نماییم.</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/120/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/120/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=120&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-2-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
		<item>
		<title>خلاصه جلسه 1 مهندسی نرم‌افزار تابستان 87</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-1-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-1-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 17:56:53 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=113</guid>
		<description><![CDATA[  خلاصه جلسه اول : اصول و مفاهیم مهندسی نرم افزار نرم‌افزار کامپیوتر به یک نیروی هدایت کننده‌ی تصمیم‌گیری تجاری تبدیل شده است. همچنین مبنایی است برای تحقیقات مدرن علمی و حل مسائل مهندسی فاکتوری کلیدی است که در محصولات وسرویس‌های مدرن را متمایز می‌سازد. در داخل سیستم‌هایی از هر نوع جاسازی می‌گردد: حمل و [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=113&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p> </p>
<p class="MsoNormal"><strong>خلاصه جلسه اول : اصول و مفاهیم مهندسی نرم افزار</strong></p>
<p class="MsoNormal"><span lang="FA">نرم‌افزار کامپیوتر به یک نیروی هدایت کننده‌ی تصمیم‌گیری تجاری تبدیل شده است. همچنین مبنایی است برای تحقیقات مدرن علمی و حل مسائل مهندسی فاکتوری کلیدی است که در محصولات وسرویس‌های مدرن را متمایز می‌سازد. در داخل سیستم‌هایی از هر نوع جاسازی می‌گردد: حمل و نقل، پزشکی، مخابرات، نظامی، فرآیندهای صنعتی، بازی‌هاو.. . نرم‌افزار اصولا در دنیای مدرن غیرقابل اجتناب است.</span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزارچیست:</span></strong></p>
<p class="MsoNormal"><span lang="FA">نرم‌افزارکامپیوتر محصولی است که مهندسین نرم‌افزارآن را طراحی و ایجاد می‌کنند. شامل برنامه‌هایی است که در کامچیوتری از هراندازه و با هر معماری اجرا می‌شوند. همچنین شامل مستنداتی است حاوی متن‌ها، فرم‌ها و داده‌هایی شامل ترکیبی از اعداد و اطلاعات تصویری، ویدئویی و صوتی.</span></p>
<p class="MsoNormal"><span lang="FA">امروزه نرم‌افزار نقشی 2 جانبه دارد.یک محصول است و در عین حال ابزاری برای تحویل محصول است.</span></p>
<p class="MsoNormal"><strong><span lang="FA">مشخصات نرم‌افزار:</span></strong></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">سخت افزار یک محصول فیزیکی است اما نرم‌افزار یک محصول منطقی است.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">نرم‌افزاردورانداختنی نیست اما سختافزار بعد از مدتی کارایی خودرا از دست می‌دهد. نرم‌افزارهیچ‌گاه فرسوده نمی‌شود تنها ممکم است دیگر نیازهای ماراطی گذشت زمان و تغییر نیازها و خواسته ها برآورده نکند.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">در مهندسی سخت افزارعلاوه بر هزینه مهندسی، هزینه سخت‌افزار هم وجود دارد ولی در مهندسی نرم‌افزار، اصل هزینه مربوط به مهندسی است یعنی کاری که انجام می‌شود.</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>4)<span>      </span></span></span><span lang="FA">به پروژه مهندسی نرم‌افزار </span><span>Development</span><span lang="FA"> می‌گویند اما محصول سایر مهندسی‌ها را </span><span>Production</span><span lang="FA"> می‌نامند.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>5)<span>      </span></span></span><span lang="FA">تفاوت دیگر، قابلیت استفاده مجدد است. در سخت افزار بعضی قطعاتپایه هستند یعنی از قبل ساخته شده‌اند و به دفعات در کاربردهای مختلف استفاده می‌شوند، اما در نرم‌افزار بخش‌های قابل استفاده مجدد چندانی وجود ندارد.</span><span></span></p>
<p class="MsoNormal"><strong><span lang="FA">انواع نرم‌افزار:</span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار</span></strong><span lang="FA"> <strong>سیستمی:</strong> مجموعه‌ای از برنامه‌هایی است که برای دادن سرویس به برنامه<span style="text-decoration:underline;">‌</span>های دیگر نوشته شده‌اند. شامل دو دسته هستند:</span></p>
<p class="MsoNormal"><span lang="FA"><span>            </span>سیستم‌عامل‌ها : داده‌های عظیم نامشخصی را پردازش می‌کنند.</span></p>
<p class="MsoNormal"><span lang="FA"><span>            </span>کامپایلرها و مفسرها: ساختارهای اطلاعاتی پیچیده ولی مشخصی را پردازش می‌کنند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار بلادرنگ: </span></strong><span lang="FA">نمایش تحلیل و کنترل وقایع دنیای واقعی را در هنگام وقوع بر عهده دارند. اطلاعات را از محیط می‌گیرند و بلافاصله تحلیل می‌کنند و واکنش نشان می‌دهند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار تجاری: </span></strong><span lang="FA">پردازش اطلاعات تجاری بزرگترین زمینه کاربرد نرم‌افزار<strong> </strong>می‌باشد مانند سیستم‌های حقوق، فهرست موجودی، فروشگاه و ..</span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار مهندسی و علمی: </span></strong><span lang="FA">با الگوریتم‌های کار بر روی اعداد مشخص می‌شودمانند ستاره شناسی، تحلیل فشار. در مهندسی های مختلف کاربرد دارد مانند عمران و .. </span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار جاسازی شده: </span></strong><span lang="FA">نرم‌افزار جاسازی شده در حافظه فقط خواندنی قرار دارد و برای کنترل محصولات و سیستم‌های صنعتی و مشتری استفاده می‌شود. مانند کنترل صفحه کلید مایکروویو</span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار کامپیوتر شخصی: </span></strong><span lang="FA">بازار نرم‌افزار کامپیوتر شخصی در دو دهه گذشته رشد سریعی داشته است. مانند پردازش کلمه، گرافیک کامپیوتری، چند رسانه‌ای، بازی و ..</span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار </span></strong><strong><span>Web</span></strong><strong><span lang="FA"> : </span></strong><span lang="FA">صفحات </span><span>Web</span><span lang="FA"> توسط مرورگرها بازیابی می‌شوند که شامل دستورات اجرایی و داده‌ها می‌شوند. این شبکه شامل تعداد زیادی کامپیوتر است که منابع نرم‌افزاری نامحدود را ارائه می‌نمایند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">نرم‌افزار هوش مصنوعی: </span></strong><span lang="FA">از الگوریتم‌های هوش مصنوعی برای حل مسائل پیچیده‌ای که با روش تحلیل و محاسبه‌ی متداول قابل حل نیستند استفاده می‌شود. برای تشخیص صدا، گفتار، چهره و شبکه‌های عصبی</span></p>
<p class="MsoNormal"><strong><span lang="FA">فرآیند یا فراروش یا متدولوژی: </span></strong><span lang="FA">چارچوبی از کارها که براساس آن‌ می‌توان یک پروژه نرم‌افزاری را انجام داد.</span></p>
<p class="MsoNormal"><span lang="FA">مهندسی نرم‌افزار پروژه ای با کیفیت را طراحی می‌کند و در این راه از فرآیندها استفاده می‌کند و در هر یک از فرآیندها از روش‌ها و ابزارهای خاصی استفاده می‌کند.</span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل فرآیند: </span></strong><span lang="FA">روش خاصی که کارهای مدنظر باید طبق آن انجام شود. تفاوت مدل‌های مختلف فرآیند در ترتیب و تاخر کارهاست زیرا در اصل کارها هیچ تفاوتی وجود ندارد.</span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل آبشاری یا </span></strong><strong><span>SSADM</span></strong><strong><span lang="FA">: </span></strong><span lang="FA">این مدل ساده‌ترین و قدیمی‌ترین مدل فرآیند است.</span></p>
<p class="MsoNormal"><span lang="FA">مزایا: مدیریت آسان و خوب</span></p>
<p class="MsoNormal"><span lang="FA">معایب: زمان‌بر است، به همین دلیل ممکن است با استقبال کاربر مواجه نباشد و مکانیزم بازگشت ندارد و برای =پروژه های بزرگ مناسب نیست و اینکه افراد بیکار می‌مانند و ارتباطی بین کاربر و تیم در حین پروژه وجود دارد.</span></p>
<p class="MsoNormal" align="center"><span> </span><span lang="FA"></span></p>
<p class="MsoNormal"><strong><span lang="FA"> <a href="http://grp3se.files.wordpress.com/2008/09/1_1.jpg"><img class="alignnone size-medium wp-image-114" title="1_1" src="http://grp3se.files.wordpress.com/2008/09/1_1.jpg?w=299&#038;h=78" alt="" width="299" height="78" /></a></span></strong></p>
<p class="MsoNormal"><strong><span lang="FA">مدل نمونه سازی: </span></strong><span lang="FA">در این روش با توجه به این نکته که مشتری به خوبی از نیازها آگاه نیست برای تحلیل مناسب ابتدا یک نمونه با ابزارهای موجود و به شکلی ساده ساخته می‌شود و با ارئه آن به مشتری نیازها مشخص می‌شود. این تحلیل بسیار دقیق است.</span></p>
<p class="MsoNormal"><span lang="FA">در این مدل توقعات کاربر بالاست به همین دلیل مدیریت مشکل است.</span></p>
<p class="MsoNormal"><a href="http://grp3se.files.wordpress.com/2008/09/1_2.jpg"><img class="alignnone size-full wp-image-115" title="1_2" src="http://grp3se.files.wordpress.com/2008/09/1_2.jpg?w=390" alt=""   /></a></p>
<p class="MsoNormal" align="center"><span> </span><span lang="FA"></span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل </span></strong><strong><span>RAD</span></strong><strong><span lang="FA"> (</span></strong><strong><span>Rapid Application Development </span></strong><strong><span lang="FA">): </span></strong><span lang="FA">توسعه سریع نرم‌افزار. در 60 تا 90 روزپروز] باید تهیه شود.پروژه باید به صورت ماژولار باشد یعنی به بخش‌های کوچک‌تر شکسته شود و به صورت مجزا و موازی با هم کار کنند. روش مورد استفاده در هر بخش روش آبشاری است.</span></p>
<p class="MsoNormal"><span lang="FA">میان مشتری و گروه پیاده‌ساز باید در مورد سریع بودن کار توافق باشد.</span></p>
<p class="MsoNormal"><a href="http://grp3se.files.wordpress.com/2008/09/1_3.jpg"><img class="alignnone size-full wp-image-116" title="1_3" src="http://grp3se.files.wordpress.com/2008/09/1_3.jpg?w=390" alt=""   /></a></p>
<p class="MsoNormal" align="center"><span> </span><span lang="FA"></span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل افزایشی: </span></strong><span lang="FA">در این روش یک طراحی اولیه انجام می‌دهیم و نسخه‌ای را وارد بازار<strong> </strong>می‌کنیم. نسخه اولیه حاوی کاربردهای اصلی سیستم است. سپس براساس نیاز بازار عملیات تحلیل و طراحی و .. دوباره انجام می‌شود تا نسخه بعدی وارد بازار شوند. در این روش همیشه با مشتری در ارتباط هستیم.</span></p>
<p class="MsoNormal"><a href="http://grp3se.files.wordpress.com/2008/09/1_4.jpg"><img class="alignnone size-medium wp-image-117" title="1_4" src="http://grp3se.files.wordpress.com/2008/09/1_4.jpg?w=300&#038;h=134" alt="" width="300" height="134" /></a></p>
<p class="MsoNormal" align="center"><span> </span><span lang="FA"></span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل مارپیچی: </span></strong><span lang="FA">از دیگر نمونه مدل تکاملی است. در این مدل تحلیلگر مدتی بیکار است تا نسخه وارد بازار شود سپس دوباره شروع به کار می‌کند ولی در روش گام به گام تحلیلگر و سایر کارکنان بیکار نیستند.</span></p>
<p class="MsoNormal"><a href="http://grp3se.files.wordpress.com/2008/09/1_5.jpg"><img class="alignnone size-medium wp-image-118" title="1_5" src="http://grp3se.files.wordpress.com/2008/09/1_5.jpg?w=300&#038;h=162" alt="" width="300" height="162" /></a></p>
<p class="MsoNormal" align="center"><span> </span><span lang="FA"></span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل </span></strong><strong><span>Component Based development</span></strong><strong><span lang="FA"> : </span></strong><span lang="FA">توسعه بر مبنای مولفه. این مدل برای پروژه های ماژولار مناسب است.در این مدل پس از تحلیل، مولفه‌ها شناسایی شده و اگر مولفه‌ای قبلا ساخته شده باشد باید یررسی شود آیا می‌توان آن را بدون تغییر استفاده کرد یا باید تغییر داد و اگر مولفه وجود ندارد باید ساخته شود و سپس نگه‌داری شود.</span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل تکنیک نسل چهارم </span></strong><strong><span>(4G)</span></strong><strong><span lang="FA">: </span></strong><span lang="FA">یک محیط نرم‌افزاریست که در آن مسخصات و نیازمندی‌های سیستم که در مراحل تحلیل و طرهحی و .. بدست آوردیم را به آن می‌دهیم و در نهایت خود نرم‌افزار کد را تولید می‌کند. برای پروژه هایی که منطق سنگین و پیچیده‌ای ندارند مناسب است.</span></p>
<p class="MsoNormal"><strong><span lang="FA">مدل روش‌های رسمی: </span></strong><span lang="FA">از دستورات ریاضی برای نوشتن منطق و تحلیل برنامه‌ها استفاده می‌شود. برای پروژه‌هایی که نیاز به دقت بالایی دارند و نرم‌افزار تولید شده باید دقیق و بی ابهام و بدون خطا باشد، کاربرد دارد</span></p>
<p class="MsoNormal"><strong><span lang="FA">ویژگی‌های نرم‌افزار خوب: </span></strong><span lang="FA">مواردی که موجب با کیفیت بودن نرم‌افزار می‌شوند:</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">قابلیت نگهداری</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>2)<span>      </span></span></span><span lang="FA">قابلیت استفاده</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>3)<span>      </span></span></span><span lang="FA">قابلیت انعطاف</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>4)<span>      </span></span></span><span lang="FA">قابلیت استفاده مجدد</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>5)<span>      </span></span></span><span lang="FA">امنیت</span><span></span></p>
<p class="MsoListParagraphCxSpMiddle"><span><span>6)<span>      </span></span></span><span lang="FA">قابلیت اطمینان</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>7)<span>      </span></span></span><span lang="FA">بهینه</span><span></span></p>
<p class="MsoNormal"><span lang="FA">به طور کلی نرم‌افزار به دو دسته تقسیم می‌شوند:</span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>1)<span>      </span></span></span><span lang="FA">عمومی: برای طیف وسیعی از کاربران ساخته می‌شود</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>2)<span>      </span></span></span><span lang="FA">سفارشی: برای کاربرد خاصی ساخته تولید می‌شودو هزینه بیشتری هم درپی دارد.</span><span></span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoListParagraphCxSpFirst"><span><span>v<span>      </span></span></span><span lang="FA">هدف از مهندسی نرم‌افزار آن است که هزینه‌های نگه‌داری آن کاهش یابد و تولید نرم‌افزار به صرفه باشد.</span><span></span></p>
<p class="MsoListParagraphCxSpLast"><span><span>v<span>      </span></span></span><span lang="FA">هزینه نگه‌داری از هزینه تولید نرم‌افزار بیشتر است.</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/113/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/113/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=113&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d8%ae%d9%84%d8%a7%d8%b5%d9%87-%d8%ac%d9%84%d8%b3%d9%87-1-%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%aa%d8%a7%d8%a8%d8%b3%d8%aa%d8%a7%d9%86-87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/1_1.jpg?w=299" medium="image">
			<media:title type="html">1_1</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/1_2.jpg" medium="image">
			<media:title type="html">1_2</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/1_3.jpg" medium="image">
			<media:title type="html">1_3</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/1_4.jpg?w=300" medium="image">
			<media:title type="html">1_4</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/1_5.jpg?w=300" medium="image">
			<media:title type="html">1_5</media:title>
		</media:content>
	</item>
		<item>
		<title>مناسب‌ترين روش براي توليد نرم‌افزارهاي كوچك XP،Scrum و RUP و PSP و TSP</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d9%85%d9%86%d8%a7%d8%b3%d8%a8%e2%80%8c%d8%aa%d8%b1%d9%8a%d9%86-%d8%b1%d9%88%d8%b4-%d8%a8%d8%b1%d8%a7%d9%8a-%d8%aa%d9%88%d9%84%d9%8a%d8%af-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d9%85%d9%86%d8%a7%d8%b3%d8%a8%e2%80%8c%d8%aa%d8%b1%d9%8a%d9%86-%d8%b1%d9%88%d8%b4-%d8%a8%d8%b1%d8%a7%d9%8a-%d8%aa%d9%88%d9%84%d9%8a%d8%af-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 13:56:16 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=102</guid>
		<description><![CDATA[  اشاره : در حقيقت ساختن يك نرم‌افزار فقط نوشتن كدهاي برنامه نيست. رويه ساخت نرم‌افزارها مراحل متعددي را دربرمي‌گيرد؛ از جمع آوري نيازهاي كاربران گرفته تا طراحي، نوشتن كد و در آخر امتحان نرم افزار. روش توليد نرم‌افزارهاي كوچك با نرم‌افزارهاي بزرگ متفاوت است و طبعاً رويه توليد نرم‌افزارهاي كوچك نيز متفاوت خواهد بود. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=102&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p> </p>
<p class="MsoNormal"><span lang="FA">اشاره : </span></p>
<p class="MsoNormal"><span lang="FA">در حقيقت ساختن يك نرم‌افزار فقط نوشتن كدهاي برنامه نيست. رويه ساخت نرم‌افزارها مراحل متعددي را دربرمي‌گيرد؛ از جمع آوري نيازهاي كاربران گرفته تا طراحي، نوشتن كد و در آخر امتحان نرم افزار. روش توليد نرم‌افزارهاي كوچك با نرم‌افزارهاي بزرگ متفاوت است و طبعاً رويه توليد نرم‌افزارهاي كوچك نيز متفاوت خواهد بود. البته اين رويه نبايد سنگين و حجيم باشد، بايد مستقيماً به تمامي فعاليت‌هاي لازم براي توليد نرم‌افزاري با كيفيت بالا نظارت داشته باشد و از تمامي رويه‌هاي آسان و متمركز استفاده كند. با استفاده از تكنيك‌هايي مفيد، از روش‌هايي مانند </span><span>XP</span><span lang="FA">،</span><span>Scrum</span><span lang="FA"> و </span><span>RUP</span><span lang="FA"> مي‌توان رويه‌اي مناسب براي توليد نرم‌افزارهاي كوچك به‌وجود آورد. همچنين مي‌توان از روش‌هاي</span><span>PSP</span><span lang="FA"> و </span><span>TSP</span><span lang="FA"> نيز كه براي توليد نرم‌افزارهاي كوچك مناسب هستند استفاده نمود و به‌وسيله اين روش‌ها كيفيت و قابليت‌هاي نرم‌افزارها را بالا برد و در حداقل زمان ممكن نرم‌افزار را تهيه نمود. اين مقاله با بررسي روش‌هاي جديد و متداول امروزي در توليد نرم‌افزار، بهترين و مناسب‌ترين روش توليد نرم‌افزارهاي كوچك را به شما نشان خواهد داد. گفتني است نوشتار حاضر نتايج تحقيقات من در گروه تحقيقاتي مهندسي نرم‌افزار دانشگاه ساندرلند انگلستان است و آمار و نتيجه‌گيري‌هاي آن براساس مصاحبه‌هاي انجام شده با چندين شركت كوچك و بزرگ توليد نرم‌افزار آن كشور است. </span></p>
<p class="MsoNormal"><span lang="FA">فرايند توليد نرم‌افزار</span></p>
<p class="MsoNormal"><span lang="FA">پيروي از يك رويه منظم توليد نرم‌افزار به توليدكنندگان نرم‌افزار كمك مي‌كند امور مربوط به‌توليد نرم‌افزار را منظم و پروژه را در حداقل زمان ممكن و با كارايي بالايي انجام دهند. در حقيقت يك رويه يا </span><span>Process</span><span lang="FA"> از مراحل مختلفي تشكيل شده است. اين مراحل فعاليت‌هاي مربوط به رويه را مشخص مي‌نمايند و تعيين مي‌كنند كه اين فعاليت‌ها بايد چگونه انجام شوند. پيروي از اين مراحل به اعضاي پروژه دريابند ياري مي‌رساند كه چه كاري را چه موقع و چگونه انجام دهند همچنين اين كار ميان اعضاي گروه نيز هماهنگي به وجود ميآورد. از آن جايي كه منابع موجود و نيازهاي كاربران هر نرم‌افزار با ديگري تفاوت دارد، فرايند توليد نرم‌افزارهاي گوناگون نيز متفاوت است. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">انجمن </span><span>IEEE</span><span lang="FA"> رويه يا فرايند توليد نرم‌افزار را اين گونه تعريف مي‌كند: رويه توليد نرم‌افزار در واقع شامل مراحلي مانند جمعآ‌وري نيازهاي كاربران ، طراحي سيستم با استفاده از تحليل اين نيازها و نوشتن كدهاي نرم‌افزار با استفاده از طرح نرم‌افزار است. همچنين بر اين‌باور است كه از آن جايي كه كيفيت و بهره‌وري نيروي كار با كيفيت روند توليد نرم‌افزار ارتباط مستقيم دارد، طراحي و مديريت رويه توليد نرم‌افزار از اهميت شاياني برخوردار است. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">براي طراحي يك رويه توليد نرم‌افزار مي توان از روش‌هاي متفاوتي استفاده نمود و از آن جايي كه هر پروژه نرم‌افزاري با ديگر پروژه‌ها متفاوت است، مي‌توان گفت كه رويه توليد آن پروژه نيز با ديگر پروژه‌ها تفاوت دارد. در واقع مي‌توان گفت: انتخاب اين روش‌ها رابطه مستقيمي با اندازه گروه در پروژه دارد و نرم‌افزارهاي بزرگ و كوچك نياز به رويه‌هاي توليد متفاوت دارند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">در ادامه اين مقاله روش‌هاي توليد نرم‌افزارها، به خصوص نرم‌افزارهاي نسبتاً كوچك كه از گروه‌هاي توليد نرم‌افزاري كوچك‌تري استفاده مي‌كنند، بررسي مي‌شوند و مورد ارزيابي قرار مي‌گيرند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش </span><span>SCRUM</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">در روش‌هاي قديمي و معمول ساخت نرم‌افزار، طراحان نرم‌افزار معمولاً ابتدا فرض مي‌كنند كه تمامي نيازهاي كاربران سيستم را درك كرده‌اند. اما هميشه نيازهاي كاربران سيستم در ابتدا مشخص نيست و كاربران ممكن است در همان مراحل ابتدايي، نيازهاي خود را تغيير دهند و اين چيزي است كه برنامه‌نويسان و طراحان سيستم هميشه از آن شكايت مي‌كنند و به دنبال راه‌حلي براي رفع اين موضوع مي‌گردند. به‌عنوان مثال مدل قديمي آبشاري (</span><span>waterfall</span><span lang="FA">) را در نظر بگيريد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">اين مدل حاوي مشكلات فراواني است كه به صورت مستقيم به غيرقابل ‌انعطاف‌بودن اين مدل ارتباط دارد. اين مدل مانند يك جاده يك طرفه مي‌باشد كه وقتي اتومبيل در آن حركت مي‌كند، نمي‌تواند مسير خود را تغيير دهد و در جهت ديگري حركت كند. در ابتداي كار كاربر سيستم ممكن است نظراتي در مورد سيستم داشته باشد ولي نمي‌تواند ببيند كه سيستم چگونه كار خواهد كرد و در نتيجه ممكن است وقتي كه سيستم آماده شد، از ساختار و كارايي آن راضي نباشد و تقاضاي تغيير در سيستم را بنمايد. در نتيجه اگر بتوانيم كاربر را از ابتدا در جريان ساخت نرم‌افزار قرار دهيم، ممكن است كه اين مشكل حل شود؛ زيرا مي‌تواند نظرات خود را در طول مدت ساخت و قبل از اتمام كار اعلام كنند و در نتيجه از نرم‌افزار تهيه شده راضي باشد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">امروزه يكي از روش‌هاي توليد نرم‌افزار كه به خصوص براي پروژه‌هاي نرم‌افزاري كوچك مورد استفاده قرار مي‌گيرد و توسط بسياري از اساتيد و صاحب‌نظران مورد تأييد قرار گرفته است، روش </span><span>SCRUM</span><span lang="FA"> است. با استفاده از اين روش كه روشي به اصطلاح (</span><span>iterative</span><span lang="FA"> تكراري يا چرخشي) مي‌باشد، مي‌توان نرم‌افزارهاي كوچك را با كيفيت بالا تهيه نمود. در اين روش كه به روش هوشمند يا </span><span>Agile</span><span lang="FA"> نيز مشهور است، مديريت قوي توليد نرم‌افزار وجود دارد كه به برنامه‌نويسان اجازه مي‌دهد با استفاده از آن در پروژه‌ها به سرعت نرم‌افزار موردنظر را تهيه نمايند. اسم </span><span>Scrum</span><span lang="FA"> در حقيقت از بازي راگبي گرفته شده است (در بازي راگبي </span><span>Scrum</span><span lang="FA"> تيمي متشكل از هشت نفر است كه با همكاري بسيار نزديك با يكديگر بازي مي‌كنند).</span></p>
<p class="MsoNormal"><span lang="FA"><span> </p>
<div id="attachment_103" class="wp-caption alignnone" style="width: 310px"><a href="http://grp3se.files.wordpress.com/2008/09/1.jpg"><img class="size-medium wp-image-103" title="1" src="http://grp3se.files.wordpress.com/2008/09/1.jpg?w=300&#038;h=169" alt="شکل 1" width="300" height="169" /></a><p class="wp-caption-text">شکل 1</p></div>
<p></span></span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">در اين روش هر عضو از گروه موظف به درك وظيفه خود در پروژه است و بايد يك هدف مشخص را در تمامي مراحل عملياتي يا فازهاي اجرايي دنبال كند. لازم به ذكر است كه در </span><span>Scrum</span><span lang="FA"> هر فاز عملياتي سيستم به </span><span>Sprint</span><span lang="FA"> مشهور است. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش </span><span>Scrum</span><span lang="FA"> همانند پروسه‌هاي داراي مرحله برنامه‌ريزي مقدماتي يا </span><span>Initial Planning</span><span lang="FA"> است. در اين فاز اعضاي تيم بايد يك نقشه مقدماتي و يك معماري سيستم قابل تغيير به وجود آورند. بعد از اين فاز يك سري از </span><span>Sprint</span><span lang="FA">ها به صورت مرتب و جزء جزء نرم‌افزار مورد نظر را به وجود مي‌آورند (شكل1). انجام دادن هر </span><span>Sprint</span><span lang="FA"> ممكن است از يك تا چهار هفته به طول بينجامد و مجموع اين </span><span>Sprint</span><span lang="FA">ها نرم‌افزار كاملي را به‌وجود ميآورند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">فهرست تكاليف در هر </span><span>Sprint</span><span lang="FA"> به </span><span>Backlog</span><span lang="FA"> مشهور است كه تكاليف تيم عملياتي در هر </span><span>Sprint</span><span lang="FA"> را مشخص مي‌كند. اين </span><span>Backlog</span><span lang="FA"> در هر </span><span>Sprint</span><span lang="FA"> بروز مي‌شود و هر تكليف براساس اهميتي كه دارد در فهرست تكاليف تعيين اولويت مي‌گردد. هر فرد در گروه يك كار يا تكليف خاص از اين فهرست را به عهده مي‌گيرد و موظف مي‌شود تا شروع </span><span>Sprint</span><span lang="FA"> بعدي آن را به اتمام برساند. وقتي كه يك </span><span>Sprint</span><span lang="FA"> شروع شد، ديگر انجام هيچ تغييري در تكاليف امكان ندارد و حتي درخواست‌كننده نرم‌افزار نيز حق تغيير يا درخواست نياز ديگري در نرم‌افزار را نخواهد داشت.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">البته درخواست‌كننده مي‌تواند از قسمتي از نرم‌افزار كه بايد در هر مرحله توليد شود بكاهد، اما نمي‌تواند تاريخ تحويل آن قسمت را تغييردهد. شايد بتوان گفت كه اين كار باعث ايجاد نظم در گروه مي‌شود و تاريخ تحويل نرم‌افزار به تعويق نخواهد افتاد. علاوه بر اين، در طول هر </span><span>Sprint</span><span lang="FA"> گروه موظف است روزانه جلساتي جهت بررسي روند پيشرفت و قابليت‌هاي نرم‌افزار داشته باشد كه اين نيز به هماهنگي بيشتر گروه كمك خواهد كرد. در اين جلسات كه معمولاً به صورت روزانه است، سه گروه مي‌توانند شركت كنند: گروه تهيه‌كننده نرم‌افزار، مديريت، و درخواست‌كنندگان نرم‌افزار. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">در طول اين جلسات مسئول جلسه كه اغلب مدير پروژه است، از تمامي اعضاي تيم سه سؤال مي پرسد:</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">1- مسئوليت شما (تكاليف) از جلسه قبلي تاكنون چه بوده است و آيا توانسته‌ايد اين تكاليف را به اتمام برسانيد؟ </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">2- در طول اين دوره به چه مشكلاتي برخورده‌ايد؟</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">3- بر طبق فهرست وظايف، مسئوليت شما از حالا تا جلسه بعدي چه خواهد بود؟ </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">مدير </span><span>Scrum</span><span lang="FA"> در حقيقت مسئوليت شناسايي تكاليف محوله به اعضا، بررسي روند تكميلي ساخت نرم‌افزار، بررسي قابليت‌هاي اعضاي گروه و فعاليت در راستاي كم كردن ريسك در پروژه را داراست. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">اما چه تفاوتي بين </span><span>Scrum</span><span lang="FA"> و ديگر روش‌هاي توليد نرم‌افزار وجود دارد؟ در جواب اين سؤال بايد يادآورشد كه در </span><span>Scrum</span><span lang="FA"> هر مرحله يا </span><span>Sprint</span><span lang="FA"> قسمتي از نرم‌افزار را آماده مي كند. در اين روش مي توان پيشرفت در توليد نرم‌افزار را در هر مرحله به خوبي احساس نمود. علاوه بر اين، گروه مي‌تواند پس از اتمام هر </span><span>Sprint</span><span lang="FA"> تصميم‌گيري‌كند كه آيا مي خواهد به كار روي پروژه ادامه دهد يا انجام پروژه مذكور غيرممكن است. روش </span><span>Scrum</span><span lang="FA"> وقتي مي‌تواند بيشتر مفيد باشد كه در ابتداي پروژه نيازهاي كاربران به صورت دقيق مشخص نباشد و يك گروه كوچك مسئول پروژه نرم افزاري باشد.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">نتايج تحقيقاتي كه اواخر سال 2005 روي چندين شركت توليدكننده نرم‌افزار در كشور انگلستان انجام دادم، نشان‌دهنده اين بود كه شركت‌هايي كه از </span><span>Scrum</span><span lang="FA"> استفاده كرده بودند با حدود چهارصددرصد افزايش در بهره‌وري كار مواجه بودند. البته اين رقم در گروه‌هاي نرم‌افزاري مختلف متفاوت بود و مي‌توان گفت عوامل انساني از جمله مدير پروژه نقش بسيار مهمي در افزايش يا كاهش راندمان پروژه ها دارند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">شايد اين سؤال در ذهن شما به وجود آيد كه چرا </span><span>Scrum</span><span lang="FA"> ممكن است براي توليد نرم‌افزارهاي كوچك راه حل خوبي باشد؟ در جواب مي‌توان گفت، از آن جايي كه در تيم‌هاي كوچك، اعضاي گروه بايد از تمامي مسائل پروژه آگاه باشند و در </span><span>Scrum</span><span lang="FA"> تمامي مراحل ساخت توسط تمامي اعضاي گروه قابل مشاهده است. لذا اين روش مي‌تواند روش مناسبي باشد.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">معايب روش </span><span>Scram</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">مزاياي استفاده از </span><span>Scrum</span><span lang="FA"> بسيار است، اما اين روش چند اشكال نيز دارد. از جمله: </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">1- </span><span>Scrum</span><span lang="FA"> روش جديدي است و با روش‌هاي مرسوم تفاوت‌هاي زيادي دارد.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">2- برخي از برنامه‌نويسان حرفه‌اي ممكن است از تكاليفي كه مدير </span><span>Scrum</span><span lang="FA"> به ايشان مي‌دهد راضي نباشند و بخواهند روش قديمي خود را اجرا نمايند و در صورت اجبار، در روند اجراي پروژه كارشكني كرده و مشكل‌آفريني كنند.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">3- از آنجا كه مدير </span><span>Scrum</span><span lang="FA"> هم از نظر كيفي و هم كمي بايد پروژه را مديريت كند، </span><span>Scrum</span><span lang="FA"> نياز به مديريت بسيار قدرتمند دارد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">4- </span><span>Scrum</span><span lang="FA"> را مي‌توان به عنوان روش توليد نرم‌افزار نام برد، اما اين روش بيشتر روش مديريت پروژه هوشمند خوبي است و نمي‌توان آن را به صورت منفرد استفاده نمود و مي‌توان گفت براي حصول اطمينان از موفقيت پروژه‌هاي نرم‌افزاري (به خصوص در سطح كوچك) بايد اين روش را با روش‌هاي ديگر ادغام نمود. </span><span>Scrum</span><span lang="FA"> را از آن جهت مي‌توان روش خوبي برشمرد كه روشي تحقيقي براساس تخمين، اولويت‌بندي، عملكرد گروه و بررسي نتايج است كه اگر به صورت صحيح مورد استفاده قرار گيرد و قبل از استفاده به صورت كامل آموزش داده شود، مي‌تواند راندمان پروژه‌هاي نرم‌افزاري، به خصوص توليد نرم‌افزارهاي كوچك را به صورت بسيار محسوسي بالا ببرد.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش </span><span>XP</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">اشتباه نكنيد! منظور از روش اكس‌پي، ويندوزاكس‌پي نيست. اكس‌پي مخفف </span><span>Extreme Programming</span><span lang="FA"> يا برنامه‌نويسي سريع مي‌باشد كه مانند </span><span>Scrum</span><span lang="FA"> روشي هوشمند در توليد نرم‌افزار است. در اكس‌پي دو برنامه‌نويس كار را انجام مي‌دهند و قبل از اتمام برنامه آن را چندين‌بار امتحان مي كنند. اكس‌پي در حقيقت روشي از توليد نرم‌افزار است كه براساس آساني، ارتباط، واكنش و تصميم‌گيري سريع استوار است. شكل 2 اصول روش اكس‌پي را نشان مي‌دهد. </span></p>
<p class="MsoNormal"><span lang="FA"><span> </p>
<div id="attachment_104" class="wp-caption alignnone" style="width: 310px"><a href="http://grp3se.files.wordpress.com/2008/09/2.jpg"><img class="size-medium wp-image-104" title="2" src="http://grp3se.files.wordpress.com/2008/09/2.jpg?w=300&#038;h=206" alt="شکل 2" width="300" height="206" /></a><p class="wp-caption-text">شکل 2</p></div>
<p></span></span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span lang="FA">در روش اكس‌پي اعضاي گروه (كه كاربر سيستم نيز عضوي از آن است) در ابتدا جلسه‌اي تشكيل مي‌دهند و اولويت‌هاي پروژه را مشخص مي‌كنند. اين گروه ممكن است از چند برنامه‌نويس، امتحان‌كننده نرم‌افزار يا </span><span>Tester</span><span lang="FA"> و تحليلگر سيستم تشكيل شود كه با هم از ابتدا تا انتهاي پروژه همكاري مي‌كنند. معمولاً در اكس‌پي برنامه‌نويسان در گروه‌هاي دوتايي قرار مي‌گيرند و وظيفه تكميل قسمتي از برنامه را برعهده مي‌گيرند و هر دوي اين برنامه نويسان در مورد هر كدام از نيازهاي كاربران با هم بحث مي كنند و قدم به قدم كلاس هاي برنامه را آماده مي‌كنند.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">بدين ترتيب كه در ابتدا كلاسي را به صورت ابتدايي و بدون هيچ طراحي اوليه به وجود مي‌آورند و اين كلاس را امتحان مي‌كنند. در صورتي كه اين كلاس فاقد هر گونه اشكال باشد، كد اصلي برنامه را بر آن اساس مي‌نويسند. وقتي يكي از برنامه‌نويسان مشغول نوشتن قسمتي از برنامه است، برنامه‌نويس ديگر وظيفه كنترل صحت اين كدها را عهده‌دار است و در صورت مشاهده هر گونه اشكال، نويسنده كد را مطلع مي‌كند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">مانند </span><span>Scrum</span><span lang="FA">، در اكس‌پي نيز اعضاي گروه مي‌توانند روند تكميلي توليد نرم‌افزار را مشاهده كنند و در جريان كار قرار گيرند.اكس‌پي روش مناسبي براي مديريت پروژه‌هاي كوچك مي‌باشد كه از دو تا ده برنامه‌نويس تشكيل شده است. اگر چه اصولاً اكس‌پي هيچ رويه خاص و مراحل پيوسته‌اي را مشخص نكرده اما مي توان گفت كه اكس‌پي داري چهار مرحله اصلي مي باشد: </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">الف: مرحله زمانبندي پروژه: در اين مرحله اعضاي گروه با توجه به اندازه نرم‌افزار و كارايي آن برنامه زمانبندي را با هم تنظيم مي كنند.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">ب: طراحي ابتدايي </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">ج: نوشتن كدهاي برنامه </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">د: امتحان‌كردن كدهاي نوشته شده </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">مطابق تحقيقاتي كه توسط نويسنده انجام شد، مشخص گرديد كه اكس‌پي در پروژه‌هاي بزرگ با تعداد اعضاي بالاي ده نفر اصلاً موفق نخواهد بود و تنها مي‌تواند براي پروژه‌هاي كوچك مفيد باشد. دليل آن را نيز مي توان در طبيعت اين روش دانست؛ زيرا مستندات چنداني براي نرم‌افزار وجود ندارد و فقط دو نفر يا حداكثر چهار نفر مي‌توانند در مورد قسمتي از نرم‌افزار اطلاعاتي داشته باشند. همچنين نرم‌افزار توليدشده توسط اين روش هيچ‌گونه طراحي سازمان يافته‌اي ندارد كه اين موضوع مي‌تواند براي مراحل پس از نصب يعني تعميرات و نگهداري سيستم باعث بروز مشكلاتي گردد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">از جمله مزاياي اكس‌پي مي‌توان به اين نكته اشاره نمود كه از آن جايي كه يك برنامه‌نويس به صورت مستقيم كدهاي برنامه را كنترل مي كند، مي‌توان گفت كه كيفيت نرم‌افزار توليدي بالا مي‌رود. همچنين مي‌توان گفت از آن جايي كه دو برنامه‌نويس با هم كار مي‌كنند، آموزش كمتري نياز است و در نتيجه هزينه توليد نرم‌افزار پايين خواهد آمد. اما اين روش مشكلات خاص خود را نيز دارد. مثلاً تصوركنيد اگر در يك گروه، يك برنامه‌نويس تمايلي براي كار با برنامه نويس ديگري را نداشته باشد يا در يك روز يكي از دو عضو گروه غايب باشد يا &#8230; در نتيجه چون نمي‌توان با يك برنامه‌نويس به ادامه كار پرداخت، اتمام پروژه با تأخير مواجه خواهد شد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">طبق نتايج تحقيقات به عمل آمده، وقتي يك برنامه‌نويس در كدهاي برنامه به دنبال اشكال مي گردد، حداكثر مي‌تواند ده تا پانزده‌درصد از اشكالات برنامه را پيدا كند. اما وقتي در روشي مثل اكس‌پي دو برنامه‌نويس با هم كار مي كنند و يكي از اين برنامه‌نويسان كدها را كنترل مي‌كند، بيست تا چهل‌درصد از اشكالات ساختاري برنامه خود را نشان مي‌دهد. اما با استفاده از روش‌هاي </span><span>PSP</span><span lang="FA"> و </span><span>TSP</span><span lang="FA"> كه در ادامه اين مقاله توضيح داده مي‌شوند حتي مي‌توان تا هشتاددرصد اشكالات برنامه (كه رقم بسيار خوبي است) را قبل نهايي‌شدن برنامه شناسايي و رفع كرد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش</span><span>Rational Unified Process) RUP</span><span lang="FA">)</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">در اين بخش يكي از معروف‌ترين رويه‌هاي توليد نرم‌افزار كه توسط شركت آي‌بي‌ام طراحي گرديده‌است را معرفي مي‌كنيم. اين روش با نام </span><span>Rational Unified Process) RUP</span><span lang="FA">) در بسياري از پروژه‌هاي نرم‌افزاري به كار گرفته مي‌شود. </span></p>
<p class="MsoNormal"><span lang="FA">در حقيقت هدف اصلي </span><span>RUP</span><span lang="FA"> مطمئن‌شدن از اين موضوع مهم است كه آيا نرم‌افزار توليدشده نيازهاي كاربرانش را به صورت كامل، با كيفيت بالا‌، در زمان معين و با بودجه مشخص برآورده كرده است يا خير. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">مطابق تحقيقات انجام شده، از آن جايي كه </span><span>RUP</span><span lang="FA"> به تمامي اعضاي تيم، اطلاعاتي مشترك مي‌دهد و تمامي اعضاي گروه با يك زبان مشترك با هم مرتبط هستند، بازده كاري گروه را بالا مي‌برد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span>RUP</span><span lang="FA"> داراي سه جزء اصلي است. جزء اول از مجموع راه‌حل‌هاي خوب كه در رويه مي‌تواند مورد استفاده قرار گيرد تشكيل شده است. جزء دوم همان مراحل تهيه نرم‌افزار است و جزء آخر قسمت‌هاي تشكيل‌دهنده اين رويه مي باشد. </span></p>
<p class="MsoNormal"><span lang="FA"><span>  </span></span><span>RUP</span><span lang="FA"> شش راه‌حل خوب كه مي‌تواند در مراحل مختلف اين رويه به ما كمك كند را معرفي كرده است. از آن جمله:</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">1- استفاده از </span><span>USE CASE</span><span lang="FA">ها كه مي‌توانند در جمعآوري نيازهاي كاربران مفيد باشند.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">2- استفاده از معماري نرم‌افزار قابل تغيير‌ ( </span><span>onent reuse</span><span lang="FA">)</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">3- استفاده از روش‌هاي تكميلي و </span><span>Iterative</span><span lang="FA"> براي كنترل بهتر و آسان پروژه نرم‌افزاري‌</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">4- استفاده از نمودارهاي </span><span>UML</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">5- كنترل تغييرات در نرم‌افزار </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">6- كنترل كيفيت نرم‌افزار با توجه به درخواست‌هاي اوليه كاربران </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">شكل 3 رويه </span><span>RUP</span><span lang="FA"> را نمايش مي‌دهد. همان‌طور كه در اين شكل مشخص شده است چرخه توليد نرم‌افزار به چهار قسمت اصلي تقسيم شده است:</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">الف: </span><span>Inception phase</span><span lang="FA"> يا مرحله آغازين: </span></p>
<p class="MsoNormal"><span lang="FA">در اين مرحله اهداف پروژه مشخص شده و درخواست‌هاي اوليه كاربران تعريف مي‌شود. از خروجي‌هاي اين مرحله مي‌توان به مدل اوليه </span><span>Use Case</span><span lang="FA">، آزمون ريسك در پروژه و برنامه زمانبندي پروژه اشاره كرد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">ب: </span><span>Elaboration phase</span><span lang="FA"> يا مرحله مقدماتي:</span></p>
<p class="MsoNormal"><span lang="FA">در اين مرحله نيازهاي كاربران تحليل و بررسي شده و راه‌حل كلي طراحي سيستم ترسيم مي‌شود. از خروجي‌هاي اين مرحله مي‌توان از مدل كامل شده </span><span>Use Case</span><span lang="FA">، فهرست نيازهاي كامل كاربران و طرح كلي سيستم نام برد.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">ج: </span><span>Construction phase</span><span lang="FA">:</span></p>
<p class="MsoNormal"><span lang="FA">يا مرحله ساخت و توسعه: در اين مرحله نرم‌افزار طراحي شده ساخته مي‌شود و به اصطلاح، كد برنامه نوشته شده و قسمت‌هاي مرتبط به هم ارتباط داده مي‌شوند. از خروجي اين مرحله مي‌توان از نرم‌افزار، راهنماي استفاده از نرم‌افزار و مستندات سيستم نام برد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">د: </span><span>Transition phase</span><span lang="FA"> يا مرحله تغييرات: </span></p>
<p class="MsoNormal"><span lang="FA">در اين مرحله اگر نرم‌افزار به وجود آمده در مرحله ساخت دچار مشكل شود، مشكل رفع خواهد شد.</span></p>
<p class="MsoNormal"><strong><span><!--[if gte vml 1]&gt;  &lt;![endif]--></span></strong><span lang="FA"></span></p>
<p class="MsoNormal"><span lang="FA"> </p>
<div id="attachment_105" class="wp-caption alignnone" style="width: 310px"><a href="http://grp3se.files.wordpress.com/2008/09/3.jpg"><img class="size-medium wp-image-105" title="3" src="http://grp3se.files.wordpress.com/2008/09/3.jpg?w=300&#038;h=167" alt="شکل 3" width="300" height="167" /></a><p class="wp-caption-text">شکل 3</p></div>
<p></span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span lang="FA">همانطور كه در شكل 3 مشاهده مي‌كنيد، تمامي مراحل توسط خطوط عمودي از همديگر جدا شده‌اند و هر مرحله با يك </span><span>milestone</span><span lang="FA"> يا نقطه مهم تمام مي‌شود. روش </span><span>RUP</span><span lang="FA"> با استفاده از مدل‌هاي مختلف همچنين مشخص مي‌كند چه كسي، چگونه و چه وقت چه كاري را انجام خواهد داد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">همان‌طور كه در اين قسمت ذكر شد، روش </span><span>RUP</span><span lang="FA"> روشي انعطاف پذير، قابل تغيير و پيشرفته است كه مي‌تواند در صورت استفاده صحيح، باعث افزايش كارايي و كيفيت نرم‌افزار توليدي گردد. اما آيا </span><span>RUP</span><span lang="FA"> مي‌تواند رويه خوبي براي توليد نرم‌افزارهاي كوچك باشد؟ در جواب بايد گفت كه </span><span>RUP</span><span lang="FA"> را طوري طراحي كرده‌اند كه بتواند براي انواع پروژه‌هاي نرم‌افزاري در هر اندازه مفيد باشد و از آن جايي كه از ابزارهاي خوبي مثل </span><span>UML</span><span lang="FA"> نيز استفاده مي‌كند، </span><span>UML</span><span lang="FA">) در گروه‌هاي كوچك كه نرم‌افزارهاي كوچك طراحي مي‌كنند ابزار مدلي خوبي است) مي‌تواند باعث همكاري و هماهنگي بيشتر گروه گردد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">اما همان‌طور كه در ادامه اين بحث خواهيد ديد، اگر بتوانيم رويه‌هاي ساده‌تر را با يكديگر ادغام كنيم، شايد بتوانيم راه حلي با كارايي بالاتري داشته باشيم. جهت مطالعه بيشتر در مورد </span><span>RUP</span><span lang="FA"> مي‌توانيد به نشاني </span><span>http://ref.web.cern.ch/ref/CERN/CNL/2002/001/SDTRUP</span><span lang="FA"> مراجعه كنيد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش هاي </span><span>PSP</span><span lang="FA"> و </span><span>TSP</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span>PSP</span><span lang="FA"> يا </span><span>Personal Software Process</span><span lang="FA"> در حقيقت روش توليد نرم‌افزار نيست بلكه روشي است نوين كه با ملزم نمودن اعضاي گروه پروژه‌هاي نرم‌افزاري به رعايت اصولي مشخص و استفاده از فرم‌ها و تكاليفي مشخص به آن‌ها كمك مي‌كند كارايي و بهره‌وري كاري خود را بالا ببرند. اين روش همچنين حاوي تكنيك‌هاي خوبي براي كنترل، ا‌ندازه‌گيري و تشخيص اشكالات مي‌باشد كه مي‌تواند به شخص (مثلاً برنامه‌نويس) كمك كند تا مثلاً با اندازه‌گيري نرم‌افزار، يادداشت ميزان فعاليت روزانه و ساعات هدر رفته، و اشكالات به وجود آمده، مشكلات را حل كند و در نتيجه بهره‌وري خود را بالاتر ببرد. </span><span>TSP</span><span lang="FA"> يا </span><span>Team Software Process</span><span lang="FA"> مانند </span><span>PSP</span><span lang="FA"> است، ولي براي يك تيم طراحي شده و با طرح روش‌هاي منظم جهت كنترل و جمع‌آوري اطلاعات روزانه به اعضاي تيم كمك مي‌كند تا كارايي خود را بالا ببرند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">راه‌حل‌هاي پيشنهادي </span></p>
<p class="MsoNormal"><span lang="FA">تا اين قسمت با برخي از روش‌هاي توليد نرم‌افزار آشنا شديم. اگر دقت كنيد تمامي اين روش‌ها و رويه‌ها مي‌توانستند براي توليد نرم‌افزارهاي كوچك مورداستفاده قرار گيرند، اما در ادامه مقاله با چند روش‌ جديد آشنا خواهيد شد كه در چندين گروه نرم‌افزاري كوچك مورد آزمايش قرار گرفته‌اند و در تمامي موارد بازدهي درخور داشته‌اند. در واقع نمي‌توان گفت تمامي روش‌هاي زير روش‌هاي جديدي هستند، بلكه برخي از آن‌ها از ادغام روش‌هاي بالا به وجود آمده‌اند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش </span><span>RUP Scrum</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">همان‌طور كه قبلاً اشاره شد، روش </span><span>Scrum</span><span lang="FA"> روشي آسان براي توليد نرم‌افزار است كه مديريت پروژه و نظم موجود در آن مي‌تواند بسيار كارگشا باشد. حال تجسم كنيد كه روش </span><span>RUP</span><span lang="FA"> را اجرا و قسمت‌هايي از </span><span>Scrum</span><span lang="FA"> را در آن ادغام كنيم. پس از اين كار متوجه خواهيد شد كه روش </span><span>RUP</span><span lang="FA"> مي‌تواند از مدل </span><span>Scrum</span><span lang="FA"> كمك بگيرد و با ادغام اين دو مي‌توان پروسه‌اي منظم براي توليد نرم‌افزارهاي كوچك سازماندهي كرد. اما همان‌طور كه مي‌دانيد نمي‌توان دو رويه ناهمگون را با هم تركيب نمود. آيا </span><span>RUP</span><span lang="FA"> و </span><span>Scrum</span><span lang="FA"> با هم شباهت‌هايي دارند؟ </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">همان‌طور كه قبلاً بيان شد، هر دو رويه ساخت نرم‌افزار روش حلقه‌اي تكراركننده يا </span><span>Iterative</span><span lang="FA"> را خط مشي خود قرار داده‌اند(البته در </span><span>RUP</span><span lang="FA"> تعريف بهتر و كامل‌تري از </span><span>Iterative</span><span lang="FA"> شده است). در </span><span>Scrum</span><span lang="FA"> تعريف نيازهاي كاربران توسط اعضاي تيم انجام مي‌پذيرد، اما در </span><span>RUP</span><span lang="FA"> تنها يك شخص</span><span>Requirement Engineer</span><span lang="FA">) يا مهندس مسئول نيازهاي كاربران) است كه اين مسئوليت را برعهده دارد. در زمينه مدل سيستم اگر چه </span><span>Scrum</span><span lang="FA"> مسئوليت انجام اين كار را به تمامي اعضاي گروه داده است، اما هر دو روش از مدل </span><span>UML</span><span lang="FA"> پشتيباني مي‌كنند و استفاده از آن را پيشنهاد مي‌دهند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">ضمناً هر دوي اين روش‌ها روش‌هاي هوشمند و </span><span>Iterative</span><span lang="FA"> هستند كه مديريت و اندازه گيري كيفيت نرم‌افزار در تمامي مراحل اين رويه‌ها به خوبي ديده مي‌شود. همچنين هر دوي اين روش‌ها انجام تغييرات را در طول پروژه مجاز مي‌دانند. البته همان‌طور كه در قسمت </span><span>Scrum</span><span lang="FA"> توضيح داده شد، اين روش تغييرات را در طول مراحل </span><span>Sprint</span><span lang="FA"> مجاز نمي‌داند، اما مدير </span><span>Scrum</span><span lang="FA"> مي‌تواند تغييرات درخواستي توسط كاربران را جمعآوري و در جلسه بعدي مطرح نمايد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">به تازگي </span><span>RUP</span><span lang="FA"> نيز ابزارهاي جديدي مانند </span><span>RUP Builder</span><span lang="FA"> و </span><span>RUP modeller</span><span lang="FA"> را عرضه كرده كه به مديران پروژه‌ها اجازه مي‌دهد تا برخي از اصول </span><span>Scrum</span><span lang="FA"> را در</span><span>RUP</span><span lang="FA"> اجرا كنند. در نتيجه اين دو پروسه توليد نرم‌افزار مي‌توانند به كمك بيايند و روشي مناسب براي توليد نرم‌افزارها به‌خصوص در اندازه كوچك باشند.</span></p>
<p class="MsoNormal" align="center"><strong><span><!--[if gte vml 1]&gt;  &lt;![endif]--></span></strong><span lang="FA"></span></p>
<p class="MsoNormal"><span lang="FA"><span> </p>
<div id="attachment_106" class="wp-caption alignnone" style="width: 306px"><a href="http://grp3se.files.wordpress.com/2008/09/4.jpg"><img class="size-full wp-image-106" title="4" src="http://grp3se.files.wordpress.com/2008/09/4.jpg?w=390" alt="شکل 4"   /></a><p class="wp-caption-text">شکل 4</p></div>
<p></span></span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش </span><span>RUP XP</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش دومي كه مورد آزمايش قرار گرفت، تلفيقي بود از اكس‌پي و </span><span>RUP</span><span lang="FA">. ولي مي‌توان گفت ادغام اين دو رويه بسيار متفاوت است.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span>RUP</span><span lang="FA"> رويه‌اي بسيار سنگين و اكس‌پي روشي بسيار سبك شكل 4است. مي‌دانيد كه </span><span>RUP</span><span lang="FA"> را مي‌توانيم تقريباً براي تمامي نرم‌افزارهاي كوچك و بزرگ به كار برد. اكس‌پي نيز همانند </span><span>RUP</span><span lang="FA"> براساس </span><span>Iteration</span><span lang="FA">ها يا مراحل پيوسته مانند تحليل، طراحي و امتحان نرم‌افزار استوار است.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">از آن جايي كه </span><span>RUP</span><span lang="FA"> و اكس‌پي از اساس با هم تفاوت‌هاي زيادي دارند و اكثراً تصور مي‌كنند كه </span><span>RUP</span><span lang="FA"> راه‌حلي براي توليد نرم‌افزارهاي بزرگ و اكس‌پي براي توليد نرم‌افزارهاي كوچك است، ممكن شما هم تصور كنيد كه استفاده همزمان از هر دوي اين روش‌ها كاردرستي نيست. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">اما مطابق تحقيقات انجام شده به نظر مي‌رسد كه براي توليد نرم‌افزارهاي كوچك روشي بين </span><span>RUP</span><span lang="FA"> و اكس‌پي نياز است.در نتيجه با اضافه‌كردن برخي از تكنيك‌هاي اكس‌پي به </span><span>RUP</span><span lang="FA"> مي‌توان به رويه‌اي مناسب‌تردست يافت. قبلاً نيز محققاني روي </span><span>RUP</span><span lang="FA"> كار كرده‌اند تا آن را براي پروژه‌هاي كوچك مناسب سازند. مثلاً در سال 2000 يك نسخه از </span><span>RUP</span><span lang="FA"> به نام </span><span>dX</span><span lang="FA"> معرفي گرديد كه </span><span>RUP</span><span lang="FA"> مختصر شده‌اي بود. براي نرم‌افزارهاي كوچك (كه اعضاي پروژه اغلب در يك محيط كار مي‌كنند) اكس‌پي مي‌تواند روشي بسيار خوب باشد، اما اگر اعضاي تيم پراكنده باشند و سيستم بخواهد توسعه يابد، اكس‌پي قادر به جوابگويي نيست و مي‌توان گفت كه با استفاده از قسمت‌هايي از روش قدرتمند </span><span>RUP</span><span lang="FA"> مي‌توان به اكس‌پي كمك نمود. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">براي تلفيق اين دو روش تصوركنيد كه پروژه‌اي شروع شده است. در مرحله </span><span>Inception</span><span lang="FA"> يا آغازين مي‌توان از تكنيك‌هاي اكس‌پي در زمينه برنامه‌ريزي زماني و جمع آوري نيازهاي سيستم استفاده نمود. البته نمي‌توان گفت كه هميشه اين دو روش با هم سازگار هستند. مثلاً در اكس‌پي مرحله‌اي به نام طراحي يا </span><span>Design Phase</span><span lang="FA"> وجود ندارد. در صورتي كه </span><span>RUP</span><span lang="FA"> يك مرحله مجزا براي اين قسمت دارد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">روش </span><span>Iterative Process</span><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">شايد به نظر برسد كه در پروژه‌هاي كوچك، اعضاي گروه نياز كمتري به ارتباط با يكديگر دارند. اما از آن جايي كه در اين گونه پروژه ها ارتباط بين اعضاي تيم و كاربر نزديك‌تر است و عوامل خارجي نيز نقش مهمي را در پروژه‌ بازي مي‌كنند، در اين پروژه‌ها نياز به ارتباط بين اعضاي تيم محسوس به نظر مي‌رسد. همچنين اگرچه پروژه‌هاي نرم‌افزاري كوچك طبيعتاً نياز به نوشتن كدهاي كمتري دارند و ممكن است به چند مدير نياز نداشته باشند اما مانند پروژه‌هاي بزرگ بايد نرم‌افزاري با كيفيت بالا ارائه دهند. در نتيجه مي‌توان گفت كه روشي براي توليد نرم‌افزار كوچك مناسب‌تر است كه تمامي موارد مذكور را در نظر بگيرد و اجرا كند.</span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">رويه </span><span>Iterative</span><span lang="FA"> يكي از اين روش‌ها است. با استفاده از اين رويه دو نوع محصول به نام‌هاي </span><span>Actual</span><span lang="FA"> و </span><span>by-product</span><span lang="FA"> توليد مي‌گردد. در واقع محصولاتي كه در موفقيت پروژه نقش اساسي بازي مي‌كنند، </span><span>Actulas</span><span lang="FA"> و آن دسته كه به وجود آمدن </span><span>Actuals</span><span lang="FA">ها كمك مي‌كنند را </span><span>By-Product</span><span lang="FA"> مي‌گويند (مثلاً طرح اوليه سيستم). در اين مدل هر عضو از گروه مسئول انجام‌دادن قسمتي از كار مي‌شود و اين مدل همان‌طور كه در شكل 5 مشاهده مي‌كنيد، شامل هشت مرحله يا فاز است. </span></p>
<p class="MsoNormal"><span lang="FA"><span> </p>
<div id="attachment_107" class="wp-caption alignnone" style="width: 310px"><a href="http://grp3se.files.wordpress.com/2008/09/5.jpg"><img class="size-medium wp-image-107" title="5" src="http://grp3se.files.wordpress.com/2008/09/5.jpg?w=300&#038;h=170" alt="شکل 5" width="300" height="170" /></a><p class="wp-caption-text">شکل 5</p></div>
<p></span></span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span lang="FA">اولين مرحله اين رويه جمعآوري اطلاعات از كاربر است. در مرحله بعدي سيستم به صورت جامع تحليل و آناليز مي‌گردد تا اعضاي تيم با مدل كلي سيستم آشنا گردند. سپس در مرحله تحليل، نرم‌افزار به صورت كلي مورد بررسي قرار مي‌گيرد و پس از آن كه مرحله معماري سيستم نام دارد، اجزاي تشكيل‌دهنده سيستم مشخص مي‌شوند و كارايي‌هاي سيستم مشخص مي‌گردند. در مرحله طراحي تمامي اجزاي سيستم طراحي مي‌شوند و در مرحله بعد كدهاي سيستم نوشته مي‌شود. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">وقتي اين مرحله تمام شد و كدهاي سيستم نوشته شد، اعضاي تيم در فاز جمع‌بندي كدهاي سيستم را با توجه به مراحل اول تا پنج مرور مي‌كنند. در مرحله آخر نيز اعضاي گروه را امتحان مي‌كنند تا اولاً نيازهاي كاربران را تأمين كرده باشد و ثانياً فاقد هرگونه اشكال باشد. اگر نرم‌افزار فاقد اشكال باشد، رويه توليد نرم‌افزار به آخر خواهد رسيد. در غير اين صورت، اعضاي گروه به دنبال منبع مشكل در مراحل قبلي مي‌گردند و مجدداً رويه را از آن جايي كه فكر مي‌كنند باعث بروز اشكال شده است، ادامه مي‌دهند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">نتيجه گيري </span></p>
<p class="MsoNormal"><span lang="FA">براي دستيابي به موفقيت در پروژه‌هاي نرم‌افزاري، اعضاي گروه بايد از يك رويه يا روش مشخص پيروي كنند. اما براي پروژه هاي كوچك (براي توليد نرم‌افزارهاي كوچك) اين رويه بايد ساده و آسان باشد. اضافه براين، براي دستيابي به موفقيت در پروژه‌ها تنها داشتن يك رويه آسان و كارا كافي نيست بلكه مديران پروژه‌هاي نرم‌افزاري بايد به اين نكته توجه كنند كه اعضاي گروه در موفقيت پروژه‌ها از اهميت شاياني برخوردار هستند و بايد در انتخاب اين افراد حداكثر دقت را مبذول نمود. در ضمن موقع انتخاب يك رويه مناسب بايد اندازه نرم‌افزار را معين نمود و براساس نيازهاي كاربران پروسه توليدي را طراحي كرد. براي تعيين رويه‌اي مناسب در توليد نرم‌افزارهاي كوچك بايد دقت داشت كه اين رويه بايد بسيار ساده باشد تا به اعضاي تيم كمك كند به‌راحتي مراحل تهيه نرم‌افزار را ادامه دهند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">از جمله اين رويه‌هاي ساده مي‌توان از </span><span>Scrum</span><span lang="FA"> نام برد. </span><span>Scrum</span><span lang="FA"> يك تكنيك مديريت پروژه است كه مي‌تواند به تيم‌هاي نرم‌افزاري كوچك كه روي پروژه‌هاي كوچك نرم‌افزاري كار مي‌كنند كمك كند راندمان و كارايي بالاتري در كار داشته باشند. اما اگر اين روش‌ها را با روش‌هاي مناسب ديگر ادغام كنيم، مي‌توانند بيشتر مفيد واقع گردند. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">پس از </span><span>Scrum</span><span lang="FA">، روش اكس‌پي توضيح داده شد و به عنوان بهترين راه براي توليد نرم‌افزارهاي كوچك از آن نام برده شد. اما اين روش به تنهايي كارايي چنداني نخواهد داشت. سپس </span><span>RUP</span><span lang="FA"> كه مي‌تواند در تمامي پروژه‌ها استفاده شود تشريح شد و در ادامه سه روش مناسب براي توليد نرم‌افزارهاي كوچك ارائه گرديد. اما همان‌طور كه بحث شد، داشتن يك روش مناسب به تنهايي نمي‌تواند ضامن موفقيت در پروژه باشد، بلكه انتخاب منابع انساني مناسب و با تجربه مي‌تواند راه را براي موفقيت پروژه‌هاي نرم‌افزاري هموارتر سازد. </span></p>
<p class="MsoNormal"><span lang="FA"> </span></p>
<p class="MsoNormal"><span lang="FA">منابع:</span></p>
<p class="MsoNormal"><span>http://xprogramming.com/xpmag/whatisxp.htm</span><span lang="FA"></span></p>
<p class="MsoNormal"><span>www-128.ibm.com/developerworks/rational/library/feb05/krebs</span><span lang="FA"></span></p>
<p class="MsoNormal"><span>www-106.ibm.com/developerworks/rational/library/409.html</span><span lang="FA"></span></p>
<p class="MsoNormal"><span lang="FA"></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/102/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/102/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=102&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d9%85%d9%86%d8%a7%d8%b3%d8%a8%e2%80%8c%d8%aa%d8%b1%d9%8a%d9%86-%d8%b1%d9%88%d8%b4-%d8%a8%d8%b1%d8%a7%d9%8a-%d8%aa%d9%88%d9%84%d9%8a%d8%af-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/1.jpg?w=300" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/2.jpg?w=300" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/3.jpg?w=300" medium="image">
			<media:title type="html">3</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/4.jpg" medium="image">
			<media:title type="html">4</media:title>
		</media:content>

		<media:content url="http://grp3se.files.wordpress.com/2008/09/5.jpg?w=300" medium="image">
			<media:title type="html">5</media:title>
		</media:content>
	</item>
		<item>
		<title>مهندسی نرم‌افزار در سیستم‌های متن‌باز</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%af%d8%b1-%d8%b3%db%8c%d8%b3%d8%aa%d9%85%e2%80%8c%d9%87%d8%a7%db%8c-%d9%85%d8%aa%d9%86%e2%80%8c%d8%a8/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%af%d8%b1-%d8%b3%db%8c%d8%b3%d8%aa%d9%85%e2%80%8c%d9%87%d8%a7%db%8c-%d9%85%d8%aa%d9%86%e2%80%8c%d8%a8/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 13:29:15 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=100</guid>
		<description><![CDATA[مقدمه  نرم‌افزارهای متن‌باز روز به روز گسترش بیشتری در جامعه‌ی کامپیوتری پیدا می‌کنند. این گسترش مانند هر گسترش دیگری در زمینه‌های مختلف، موافقان و مخالفان خاص خود را پیدا کرده است. موافقان عقیده دارند که متن‌باز بودن محصولات باعث رشد هرچه بیشتر برنامه‌های کاربردی خواهد شد و همچنین از بسیاری از دوباره‌کاریها پرهیز خواهد شد. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=100&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>مقدمه </strong></p>
<p>نرم‌افزارهای متن‌باز روز به روز گسترش بیشتری در جامعه‌ی کامپیوتری پیدا می‌کنند. این گسترش مانند هر گسترش دیگری در زمینه‌های مختلف، موافقان و مخالفان خاص خود را پیدا کرده است. موافقان عقیده دارند که متن‌باز بودن محصولات باعث رشد هرچه بیشتر برنامه‌های کاربردی خواهد شد و همچنین از بسیاری از دوباره‌کاریها پرهیز خواهد شد. گروه مخالف که اکثراً کسانی هستند که منافعشان با گسترش محصولات متن‌باز به خطر می‌افتد، بیشتر سعی دارند که محصولات متن‌باز را خطری در راه گسترش نر‌م‌افزار معرفی کنند و برای نابود کردن آن نیز از هیچ‌گونه تلاشی فروگذار نمی‌کنند. زمانی نرم‌افزار متن‌باز را سرطان می‌خوانند و زمان دیگر به گونه‌ای‌ دیگر بر آن می‌تازند. <br />
همان‌گونه که در مثبت بودن اثرات محصولات متن‌باز در رشد نرم‌افزارها توافق اکثریتی وجود دارد، دراین مطلب نیز که محصولات متن‌باز معایبی هم در فرایند تولید و هم در محصولات تولیدی دارا می‌باشند برای هیچ‌کس شکی وجود ندارد. در این مقاله سعی شده است که فرایند تولید و همچنین محصولات تولید شده مورد بررسی قرار بگیرد و ضعفها و قوتهای آن بدون هیچ‌گونه تعصب یا غرضی بررسی شود. <br />
در بخش اول مقاله ابتدا یک معرفی بر مهندسی نرم‌افزار صورت خواهدگرفت و سپس مفهوم فرایندهای مهندسی نرم‌افزار بررسی خواهد شد و فرایند معمول مهندسی نرم‌افزار بخش به بخش مورد مطالعه قرار خواهد گرفت. در ادامه این بخش سعی می‌شود برای مراحل ذکر شده در فرایند معمول مهندسی نرم‌افزار معادلی در فرایند تولید نرم‌افزار متن‌باز پیدا شود و در حقیقت مقایسه‌ای بین فرایند مهندسی نرم‌افزار و فرایند تولید نرم‌افزارهای متن‌باز صورت می‌گیرد. در این مقایسه بین نرم‌افزارهای متن‌باز بدون حمایت مالی و نرم‌افزارهای متن‌باز تجاری تفکیک قایل می‌شویم و به‌ گونه‌ای بین فرایند تولید این دو نوع محصولات متن‌باز نیز مقایسه‌ای صورت می‌دهیم. در تمام مقایسه‌ها سعی می‌شود که کارهایی که اکنون انجام می‌شود و کارهایی که باید انجام شود به دقت بررسی شود. <br />
در بخش دوم به تولید نرم‌افزارهای متن‌باز به طور دقیقتری نگاه می‌کنیم و فعالیتهای دیگری را که برای تولید نرم‌افزارهای متن‌باز انجام می‌گیرد و یا باید انجام بگیرد را مورد مطالعه و بحث قرار می‌دهیم. بخش سوم به نوعی نگاهی موشکافانه بر اساس بخشهای قبلی و به صورت موردی در مقوله‌های مختلف مهندسی نرم‌افزار محسوب می شود.در نهایت نیز با یک بررسی رسمی ریاضی روی یک پروژه شناخته شده متن‌باز بحث خاتمه داده می شود. <br />
<strong>2 فرایندهای مهندسی نرم‌افزار در نرم‌افزارهای متن‌باز </strong></p>
<p>نرم‌افزارهای متن‌باز نیز مانند تمام محصولات نرم متن‌افزاری دیگر باید مراحلی را طی کنند تا ساخته شده و مورد استفاده قرار گیرند. یکی از مهمترین بحثهایی که راجع به نرم‌افزارها وجود دارد بررسی اهمیت مهندسی‌ ‌نرم‌افزار در ساخت و تولید نرم‌افزارها می‌باشد. در ادامه این بخش ابتدا راجع به مفهوم مهندسی نرم‌افزار و فرایندهای آن صحبت شده و سپس تلاش می‌شود که مقایسه‌ای مابین فرایندهای تولید نرم‌افزارهای متن‌باز با فرایندهای متداول مهندسی نرم‌افزار صورت گیرد.</p>
<ul>
<li><strong>2.1 مهندسی نرم‌افزار و فرایندهای آن </strong>
<p>مهندسی نرم‌افزار یک زمینه بسیار گسترده است که بسیار وسیع‌تر از نوشتن یک برنامه می‌باشد. شاید یکی از بهترین تعاریفی که برای مهندسی نرم‌افزار وجود دارد این مطلب است که: <br />
مهندسی نرم‌افزار عبارت است از وضع اصول مهندسی بجا و مناسب و استفاده از آنها برای بدست آوردن یک نرم‌افزار مقرون به صرفه که قابل اطمینان بوده و روی ماشینهای واقعی به طرزی کارآمد عمل کند. <br />
مهندسی نرم‌افزار یک فرایند لایه‌ای است که پایه و اساس آن لایه فرایند می‌باشد. فرایند مهندسی نرم‌افزار در حقیقت چهارچوبی برای مجموعه‌ای از فعالیتها است که این فعالیتها بستری برای اعمال روشهای فنی‌، تولید محصولات کاری (مدلها، مستندات، داده‌ها، گزارشها، فرمها و &#8230;)، اطمینان از کیفیت و مدیریت تغییرات می‌باشند. عناصر تشکیل دهنده فرایندهای مهندسی نرم‌افزار به طور معمول عبارتند از: جمع‌آوری نیازمندیها، طراحی در سطح سیستم، طراحی‌جزییات، پیاده‌سازی، یکپارچه‌سازی، تست کردن و پشتیبانی و نگهداری. در ادامه در مورد این عناصر توضیح داده می‌شود.</p>
<ul>
<li><strong>2.1.1 جمع‌آوری نیازمندیها </strong>
<p>اولین قدم در فرایند مهندسی نرم‌افزار تولید یک مستند کاری است. در این مستند دلایلی که باعث شده است نیاز به این محصول حس شود و لیستی از قابلیتهای محصول که این نیازها را رفع می‌کند شرح داده شده است. کلیت مستند در حقیقت جواب به این سوال است که: چرا باید بسازیم و چه کسی از آن استفاده خواهد کرد؟. <br />
این قدم اول در حقیقت گام اساسی و پایه‌ای فرایندی می‌باشد که اگر درست نهاده نشود با احتمال بالایی منجر به تولید محصولی ناکارآمد و بدردنخور خواهد شد. <br />
<strong>2.1.2 طراحی در سطح سیستم </strong></p>
<p>این مرحله از فرایند مهندسی نرم‌افزار یک توضیح سطح بالا از محصول است که در قالب ماژولهایی که محصول را می‌سازند و ارتباط بین این ماژولها بیان می‌شود. هدف از این مستند ساخته شده، ابتدا بدست آوردن اطمینان از این موضوع است که محصول ساخته خواهد شد و کار نیز خواهد کرد و سپس ساختن پایه‌ای برای تخمین زدن نیرو و زمان مجموع لازم برای ساختن محصول می‌باشد. <br />
<strong>2.1.3 طراحی جزییات </strong></p>
<p>طراحی جزییات در واقع طراحی جزییات ماژولهایی است که در مرحله قبل مشخص شده‌اند. واسطهای این ماژولها و همچنین جزییات داده‌ساختارهایی که استفاده خواهند شد از جمله مطالبی است که در این مرحله تعیین خواهد شد. تخمین دقیقتر زمان و نیروی لازم برای ساخت ماژولهایی که در این بخش و بخش قبل مشخص شده‌اند و همچنین توالی ساخت آنها از جمله‌ دیگر کارهایی است که در این مرحله انجام می‌گیرد. <br />
<strong>2.1.4 پیاده سازی </strong></p>
<p>تمام ماژولهایی که جزییات آنها در مرحله قبل مشخص شده است، در این مرحله پیاده‌سازی خواهند شد. این ماژولها که در حقیقت قطعات محصول اصلی هستند، هرکدام به صورت جداگانه پیاده‌سازی خواهند شد. <br />
<strong>2.1.5 یکپارچه سازی </strong></p>
<p>در این مرحله تمام ماژولهای پیاده‌سازی شده در مرحله‌ قبل بر اساس منطق طراحی به یکدیگر متصل شده و در قالب یک برنامه‌ کامل در می‌آیند. این برنامه در حقیقت همان محصولی است که هدف از طی تمام این مراحل ساختن آن بود. <br />
<strong>2.1.6 آزمون </strong></p>
<p>محصول ساخته شده در مراحل قبل را می‌توان از جنبه‌های مختلفی از قبیل صحت، کارایی و &#8230; آزمایش کرد. آزمون صحت محصول معمولا به دو شکل صورت می‌گیرد که به شرح زیر است:</p>
<ul>
<li>1) با دانستن عملکرد خاصی که یک نرم‌افزار برای انجام آن طراحی شده است می‌توان آزمونهای طراحی کرد که نشان می‌دهند هر عملکرد به طور کامل درست است و در عین حال در هر عملکرد به دنبال یافتن خطاها هستند. <br />
2) با دانستن طرز کار داخلی محصول می‌توان آزمونهایی ترتیب داد که اطمینان دهند همه چیز مطابق میل است. یعنی عملیات داخلی طبق مشخصه اجرا می‌شوند و با همه‌ مولفه‌های داخل به طور مناسب تمرین شده است.</li>
</ul>
<p>روش اول روش آزمون جعبه‌سیاه و روش دوم روش آزمون جعبه‌ سفید نامیده می‌شود. <br />
<strong>2.1.7 پشتیبانی و نگهداری </strong></p>
<p>پس از اینکه محصول به مشتری داده شد، از این پس از جمله وظایف فروشنده و تولیدکننده این است که در صورت وجود اشکالی در محصول آن را رفع نماید. همچنین ممکن است در قرارداد مشخص شده باشد که در صورت خواست مشتری برای تغییرات در محصول، این تغییرات توسط تولیدکننده صورت بگیرد.</li>
</ul>
<p><strong>2.2 فرایند تولید نرم‌افزار متن‌باز </strong></p>
<p>نرم‌افزارهای متن‌باز از نظر مالی به دو دسته مختلف طبفه‌بندی می‌شوند. دسته اول نرم‌افزارهایی هستند که بدون هیچ‌گونه حمایت مالی تولید می‌شوند و دسته دوم نرم‌افزارهایی هستند که علاوه بر اینکه متن‌باز هستند دارای حمایت مالی نیز می‌باشند. فطعاً فرایند تولید این دو گروه نرم‌افزار دارای تفاوتهایی با یکدیگر می‌باشد. به همین دلیل فرایند تولید این دو گروه هر کدام به صورت جداگانه در ادامه بررسی خواهد شد.</p>
<ul>
<li><strong>2.2.1 فرایند تولید نرم‌افزار متن‌باز بدون حمایت مالی </strong>
<p>نرم‌افزارهای متن‌باز بدون حمایت مالی برای تولید و گسترش خود مراحلی را طی می‌کنند. این مراحل معادل مراحل فرایندهای مهندسی نرم‌افزار نمی‌باشد و کارهایی که در مراحل این فرایند طی می‌شوند بعضاً با کارهای معادل خود در فرایند مهندسی نرم‌افزار متفاوتند و بعضی مراحل نیز که در فرایند مهندسی نرم‌افزار وجود دارد در این فرایند موجود نمی‌باشد. در ادامه سعی می‌شود که معادل مراحل فرایند مهندسی نرم‌افزار را در فرایند تولید نرم‌افزار متن‌باز بدون حمایت مالی بررسی شود.</p>
<ul>
<li><strong>2.2.1.1 جمع‌آوری نیازمندیها </strong>
<p>نرم‌افزارهای متن‌باز معمولاً هنگامی نوشته می‌شوند که احتیاج به یک محصول از جانب فردی احساس می‌شود و یا اینکه علاقه به داشتن آن محصول وجود دارد. این موضوع غالباً در هنگام برخورد با مسایل روزانه برای شما پیش می‌آید و در نتیجه الزاماً افرادی که اقدام به تولید این محصولات می‌کنند مهندس نرم‌افزار نیستند. ممکن است مسولیت یک سیستم و یا کاری از این نوع را بر عهده داشته‌باشند. این محصول پس از اینکه ساخته شد به صورت متن‌باز در اختیار همگان قرار می‌گیرد. افراد مختلف نیز که این محصول را دریافت کرده و استفاده می‌کنند، می‌توانند در مورد آن نظر بدهند.گروهی ایرادات این محصول را که هنگام کار برایشان پیش آمده است را گزارش می‌دهند و یا خود این مشکلات را رفع می‌کنند. گروه دیگری قابلیتهایی را که به نظرشان می‌رسد که مناسب است به این محصول اضافه شود را اعلان می‌کنند و یا خود اقدام به اضافه‌کردن این قابلیت به محصول می‌کنند. همانگونه که مشاهده می‌کنید، فرایند تولید نرم‌افزار متن‌باز یک مرحله فوق‌العاده قوی جمع‌آوری نیازمندیها را دارا می‌باشد زیرا که برای استفاده‌کنندگان بسیار ساده است که نظرات خود را اعلان کنند و مرحله‌ جمع‌آوری نیازمندیها دارای افراد نظردهنده‌ای در سراسر جهان می‌باشد. محل اعلان این نیازمندیها نیز گروه‌های خبری و گروه‌های نامه‌نگاری می‌باشند. تنها مشکلی که در این بین وجود دارد این است که هنگام مطرح شدن این نیازمندیها که شاید بسیار زیاد نیز باشند به چه ترتیبی باید با آنها برخورد نمود و به چه ترتیبی باید به آنها اولویت داد. یک راه‌حل که به عنوان مثال نرم‌افزار Mozilla نیز از آن استفاده می‌کند، روش رای‌گیری برای تعیین اولویتهاست که بدین وسیله با استفاده از نظر اکثریت استفاده‌کنندگان قابلیت‌های جدید اضافه می‌شوند. البته لازم به ذکر است که این شیوه‌ جمع‌آوری نیازمندیها ممکن است به وسیله‌ تحلیلگر سیستم انجام شود که نظرات مختلف را که داده شده است را جمع می‌کند و آنها را بازبینی کرده و مشخص می‌کند که چه قابلیتی باید به سیستم اضافه شود و در حقیقت نظرات داده‌ شده افراد را تحلیل کرده و به‌صورت یک قابلیت لازمه‌ سیستم در‌می‌آورد. <br />
<strong>2.2.1.2 طراحی در سطح سیستم </strong></p>
<p>به طور معمول هیچ طراحی در سطح سیستمی برای یک محصول متن‌باز بدون حمایت مالی وجود ندارد. طراحی سیستمی در این نوع محصولات اغلب‌ به صورت ضمنی انجام می‌شود و معمولاً از نسخه دو یا سه به بعد از یک محصول در واقغ یک طراحی سطح سیستمی برای محصول وجود دارد، هرچند که در جایی نوشته نشده باشد و یا عملاً این مرحله به عنوان یک مرحله جداگانه انجام نشده باشد. <br />
در این مرحله است که این فرایند جداشدن خود را از روشهای معمول مهندسی نرم‌افزار نشان می‌دهد و تا حدی ضربه‌پذیر نشان می‌دهد. شما ممکن است بتوانید کمبود یک روش معمول جمع‌آوری نیازمندیها و یا تضمین کیفیت را با استفاده از برنامه‌نویسان بسیار خوبی که در اختیار دارید جبران کنید ولی هنگامی که یک طراحی سیستمی برای تولید محصول شما وجود نداشته باشد(حتی اگر این طراحی در ذهن تولید کنندگان وجود داشته باشد)، قطعاً کیفیت پروژه تحت تاثیر قرار خواهد گرفت. <br />
<strong>2.2.1.3 طراحی جزییات </strong></p>
<p>همانگونه که گفته شد در فرایندهای بدون حمایت مالی معمولاً افراد سعی می‌کنند کاری را انجام دهند که به نظرشان جالب می‌‌آید. برای انجام این کار نیز سعی می‌کنند فرایندی را طی کنند که برایشان جذاب باشد. در قسمت قبل گفته شد که معمولاً طراحی سیستمی برای این‌گونه فرایندها وجود ندارد که شاید یک دلیل عمده آن این باشد که برای تولید‌کنندگان این گونه از محصولات متن‌باز جذابیت لازمه را ندارد هرچند که یک مرحله کلیدی می‌باشد. <br />
مرحله طراحی جزییات برای بسیاری از تولیدکنندگان جذاب و سرگرم‌کننده است و معمولاً در این فرایندها، انجام می‌شود اگرچه این طراحی در واقع نقش یک اثر جانبی برای پیاده‌سازی را بازی می‌کند و مشابه طراحی جزییات فرایندهای مهندسی نرم‌افزار نیست. <br />
تنها کاری که در این مرحله انجام می‌شود مستندسازی واسطهای برنامه‌نویسی برنامه کاربردی در قالب یک خودآموز است که معمولا در قالب manualهای موجود در لینوکس می‌باشد. <br />
<strong>2.2.1.4 پیاده‌سازی </strong></p>
<p>این مرحله از فرایند برای برنامه‌نویسان جذابترین مرحله است و شاید امید به انجام این مرحله باشد که انگیزه لازم را برای برنامه‌نویس برای تولید محصول ایجاد کرده است. این مرحله هسته اساسی این فرایند است و در حقیقت علاوه بر پیاده‌سازی، طراحی را نیز در بطن خود به همراه دارد البته قطعاً منظور، طراحی کامل و دقیق فرایندهای مهندسی نرم‌افزار نیست. البته این موضوع که برنامه‌نویسی بدون توجه به مراحل دیگر این مرحله را انجام دهد، آزادی فوق‌العاده‌ای به برنامه‌نویس می‌دهد که قابل بیان نیست. این آزادی همانگونه که می‌تواند مفید باشد می‌تواند مضر نیز باشد و در واقع باعث شود برنامه‌نویس با تولید کردن کدهایی که به خاطر نداشتن ساختار مناسب، قابلیت توسعه و استفاده‌ مجدد را ندارند به مهمترین اهداف نرم‌افزارهای متن‌باز دست نیابد. <br />
مطلب بسیار خوبی که راجع به این مرحله وجود دارد این است که برنامه‌نویسان در این مرحله سعی می‌کنند قالبهای جدید کاری و همچنین کارهای تازه‌ برنامه‌نویسی آزمایش نشده خود را آزمایش کنند که این موضوع همواره باعث پیدایش قالبهای ظاهری جالبتر و همچنین شیوه‌های پویا و کاراتر در برنامه‌نویسی می‌شود. مثلاً یک برنامه‌نویس قالبهای ظاهری برنامه خود از قبیل شیوه‌ نام‌گذاری متغیرها و نحوه تورفتگی کد و &#8230; را تغییر می‌دهد و از شیوه‌ جدیدی که ممکن است برای اولین بار توسط این برنامه‌نویس انجام شود و پس از مدتی بسیار همه‌گیر و مورد استفاده واقع شود استفاده می‌کند. همچنین ممکن است یک فن بسیار بدیع و جالب را که تا به حال استفاده نشده است را در کد برنامه خود به کار می‌گیرد و در صورت جواب دادن قطعاً از این پس بسیار مورد استفاده همگان قرار می‌گیرد. تفاوت بین این فرایند و فرایند مهندسی نرم‌افزاری که برای پروژه‌های تجاری انجام می‌شود نیز در واقع همین است. برنامه‌نویس موجود در یک فرایند متن‌‌باز غیر تجاری برای علاقه خود برنامه ‌می‌نویسد و تحت فشار نیست پس به راحتی می‌تواند شیوه‌های بدیع و تازه‌ای را ازمایش کند بدون ترس از این مطلب که جواب نگیرد اما در یک فرایند تجاری همواره سعی می‌شود که بسیار محافظه‌کارانه عمل شده، روشهایی استفاده شوند که تاکنون جواب خوبی داده‌اند. از طرف دیگر کلاً نرم‌افزارهای متن‌باز چه تجاری و چه غیرتجاری این مزیت را نسبت به سایر نرم‌افزارها دارند که هرگونه نکته‌ بدیعی که در ساختار آنها وجود داشته‌باشد قابل مشاهده است و در حقیقت این نرم‌افزارها یک مجموعه فوق‌العاده آموزشی برای استفاده‌کنندگان می‌باشند اما نرم‌افزارهایی که کد آنها بیرون داده نمی‌شود حتی اگر ابتکاری نیز در آنها بکار رفته باشد معمولاً کسی از آنها مطلع نمی‌شود و در حقیقت ابتکارها نیز منحصر به مبدعشان هستند و سایر افراد نمی‌توانند از آنها استفاده کنند. <br />
نکته منفی که در مرحله پیاده‌سازی این فرایند وجود دارد این است که هیچ‌گونه بازبینی کد از جانب کسی، قبل از اینکه نرم‌افزار بیرون داده شود صورت نمی‌گیرد احتمال اشتباهات منطقی و یا ظاهری در کد هنگامی که در اختیار همگان قرار می‌گیرد بسیار زیاد است. به عنوان مثال ممکن است برنامه‌نویس از سه قالب ظاهری مختلف برنامه نویسی در برنامه استفاده کرده باشد بدون اینکه متوجه این موضوع شده باشد و یا اینکه اشتباهات منطقی بسیار واضحی در برنامه وجود داشته باشد که اگر کسی کد را بازبینی می‌کرد به سادگی متوجه آن می‌شد. البته کد بعد از بیرون داده شدن بازبینانی بسیار حرفه‌ای در سراسر جهان خواهد داشت که به سادگی متوجه این موضوعات شده و می‌‌توانند این مشکلات را رفع کنند و کد جدیدتر را بیرون دهند. <br />
<strong>2.2.1.5 آزمون </strong></p>
<p>نرم‌افزارهای متن‌باز بدون حمایت مالی از بهترین روش تست در صنعت دنیا استفاده می‌کنند البته اگر تست‌های ناسا را در مجموعه مقایسه خود در نظر نگیریم. دلیل این امر این است که کاربرانی که از این نرم‌افزار استفاده می‌کنند چون پولی پرداخت نکرده‌اند بسیار دوستانه‌تر برخورد می‌کنند و توسعه دهندگانی که از کد استفاده می‌کنند نیز سعی می‌کنند که کمک قابل توجهی در این امر باشند برای همین یافتن ایرادات، گزارش آنها و برطرف کردن آنها بسیار دوستانه و سریع و در سطح بسیار وسیعی انجام می‌گیرد. <br />
آزمون طی‌شده در فرایند مهندسی نرم‌افزار از کمبود یک مساله رنج می‌برد و آن قرار گرفتن نرم‌افزار در شرایط دنیای واقعی و کار کردن آن در شرایط غیرقابل پیش‌بینی می‌باشد. بسیاری از تلاشهایی که در زمینه آزمایش کردن صورت می‌گیرد همگی حاوی این موضوع هستند که شرایطی مشابه واقعیت فراهم شده و سپس نرم‌افزار آزمایش شود و این دقیقاً موضوعی است که به طور ذاتی در آزمایش نرم‌افزارهای متن‌باز بدون حمایت مالی وجود دارد: قرار گرفتن نرم‌افزار در دنیای واقعی و کارکردن آن در شرایط غیر قابل پیش‌بینی. <br />
ضعفی که در این زمینه در نرم‌افزارهای متن‌باز وجود دارد این است که بدلیل وجود داشتن کد برنامه ساده‌تر می‌توان به ایرادات برنامه پی برد و این خطر حضور افراد سودجو را بیشتر می‌کند. در صورت یافت‌شدن یک ایراد در برنامه ممکن است افرادی وجود داشته باشند که بخواهند از آن سوءاستفاده کنند. در واقع این افراد پس از پی بردن به یک ایراد موجود اقدام به خرابکاری با استفاده از این مشکل می‌کنند و هرچه مقدار استفاده از این نرم‌افزار در سطح وسیعتری انجام شود امکان گسترش بیشتر این خرابکاری نیز وجود دارد. البته همواره در مقابل افراد سودجو افراد سازنده‌ای نیز وجود دارند که پس از مشخص شدن این مشکل اقدام به رفع آن می‌نمایند. <br />
<strong>2.2.1.6 پشتیبانی و نگهداری </strong></p>
<p>“وای ببخشید‿ جمله‌ای است که هنگام گزارش یک ایراد از جانب کاربر شنیده می‌شود. “وای ببخشید و متشکرم‿ جمله‌ای است که اگر علاوه بر گزارش ایراد, اصلاح‌کننده ایراد نیز فرستاده شده باشد شنیده می‌شود. وجود نداشتن پشتیبانی و نگهداری باعث می‌شود که تعدادی از کاربران از استفاده از نرم‌افزارهای متن‌باز بدون حمایت مالی صرف نظر کنند. اما باز این امکان وجود دارد که گروهی پشتیبانی نرم‌افزار را بر عهده بگیرند و کاربر با مبلغی بتواند از پشتیبانی آنها استفاده کند و یا اینکه نسخه‌های تجاری یک نرم‌افزار متن‌باز بیرون داده شوند و کاربر از آنها استفاده کند.</li>
</ul>
<p><strong>2.2.2 فرایند تولید نرم‌افزار متن‌باز تجاری </strong></p>
<p>بسیاری از نکات مربوط به این فرایند در قسمت فرایند تولید نرم‌افزار متن‌باز بدون حمایت مالی گفته شد و بسیاری از مسایل این دو فرایند نیز مشترک می‌باشند. مطلبی که در این راستا قابل اهمیت است این می‌باشد که این فرایند به دلیل حمایت مالی می‌تواند از هر یک از فرایندهای مهندسی نرم‌افزار را در رأس کار خود قراردهد و در عین حال از سایر مزیت‌های فرایندی که شامل حال نرم‌افزارهای متن‌باز می‌شود نیز استفاده نماید. تنها مسأله‌ای که وجود دارد این است که در صورت وجود خطا در این نرم‌افزار، مشابه نرم‌افزارهای متن‌باز بدون حمایت مالی همه چیز به خوبی و خوشی تمام نمی‌شود و کاربران چون پرداخت مالی داشته‌اند کاملاً انتظار محصولات بدون ایراد و خطا را دارند و پشتیبانی و نگهداری نیز جزء بدیهیات این‌گونه نرم‌افزارها می‌باشد.</li>
</ul>
</li>
</ul>
<p><strong>3 نگاه عمیق‌تر به فرایند تولید نرم‌افزار متن‌باز </strong></p>
<ul>
<li><strong>3.1 نمونه‌سازی[1] </strong>
<p>فرآیند نمونه‌سازی در بسیاری از پروژه‌های متن‌باز دیده می‌شود. بسیاری از پروژه‌ها، معمولاً به صورت ناآگاهانه، از متدولوژی برنامه‌نویسی گروهی[2] استفاده می‌کنند. جملات مصطلح در تولید نرم‌افزار متن‌باز مانند &#8220;زود خروجی بده، همیشه خروجی بده&#8221; و &#8220;کدت را به من نشان بده&#8221; مثال‌های خوبی در این زمینه هستند. توسعه‌دهندگان به کار کردن با روشهای آزمایشی ترغیب می‌شوند و اگر تست‌کنندگان از بازخورد مثبتی ارایه کنند، کار آنها ممکن است با خط اصلی تولید نرم‌افزار یکپارچه شود. نمونه‌سازی سریع، احتمالاً یک از قوی‌ترین خصوصیات پروژه های متن‌باز است. [7] توضیح می‌دهد: </p>
<p><em>&#8220;ما هرگز از روش XP استفاده نمی‌کنیم. کلمه XP زمانی که ما پروژه را شروع کردیم، وجود نداشت. ما بعدها در پروژه‌مان از روش XP استفاده کردیم. XP روش خوبی برای پروژه های نرم‌افزار است اگر:</p>
<ul>
<li>· پروژه بزرگ نباشد. <br />
· یک یا چند عضو اساسی در تیم وجود داشته باشند. <br />
· چند همکار و کمک کننده در پروژه وجود داشته باشد. <br />
· پروژه برای سود نباشد. <br />
· پروژه برای مشتری خاصی نباشد.&#8221;</li>
</ul>
<p></em><br />
دیگران، مانند Linus Trovalds، نگاه ریشه‌ای به قضییه دارند؛ به این شکل که <em>&#8220;هیچ کس به اندازۀ من Linux را &#8220;طراحی&#8221; نکرد، و من شک دارم که بسیاری با من مخالف باشند. Linux رشد کرد؛ با بسیاری از تغییرات رشد کرد، و به خاطر اینکه تغییرات کمتر از اتفاقات بودند، تغییرات سریعتر و جهت‌دار تر از ذرات اولیه DNA بودند.&#8221;</em> <br />
Trovalds معتقد است که نرم‌افزارها طراحی نمی‌شوند، بلکه متکامل می‌شوند. او می‌گوید <em>&#8220;و حتی من جلوتر می‌روم و ادعا می‌کنم که هیچ نرم‌افزار بزرگی که در بازارهای عمومی موفق بوده بر پایه این چرخه عمر زیبا نوشته نشده است. آیا شما پروژه‌ای را می‌شناسید که واقعاً با فهمیدن اینکه چه کاری باید انجام بشود، فاز طراحی موشکافانه و فاز پیاده‌سازی به پایان رسیده باشد&#8230; <br />
نرم‌افزار متکامل می‌شود؛ طراحی نمی‌شود. تنها سؤال این است که شما چقدر دقیق تکامل پروژه را کنترل کنید و چقدر باز نسبت به تغییر کدهای خارجی رفتار می‌کنید. <br />
کنترل بیش از حد فرآیند تکامل، شما را می‌کشد. قطعاً و بدون تردید. همیشه: چه در زیست‌شناسی و چه در نرم‌افزار.&#8221; </em><br />
<strong>3.2 مدیریت نسخه‌ها </strong></p>
<p>مدیریت نسخه‌ها که مدیریت پیکربندی نیز گفته می‌شود تمامی تغییرات داده‌شده به داده‌های پروژه را ضبط می‌کند و البته این قابلیت را دارد که نرم‌افزار را در هر لحظه که اراده کنید به حالت پیشین خود بازگرداند. <br />
مدیریت نسخه‌ها در پروژه‌های نرم‌افزاری استفاده بسیار زیادی دارد که بعضی از آنها عبارتند از:</p>
<ul>
<li>۱) این توانایی به توسعه‌دهندگان داده می‌شود که کد برنامه را آزمایشی تغییر دهند، این تغییرات را اعمال کنند و هرگاه که به بن‌بست رسیدند به حالت پایدار قبلی خود بازگردند. <br />
۲) مدیریت نسخه‌ها به طور معمول پیشینه‌ تمامی نسخه‌ها را نگاه‌داری می‌کند و این قابلیت را در اختیار توسعه‌دهنده می‌گذارد که گزارش تغییرات داده شده را ذخیره کند. این گزارشات به عنوان یک مستند قابل اتکا برای فرایند توسعه می‌باشند و در اغلب اوقات صحیح‌ترین چیزی هستند که شرح حالت فعلی پروژه را بیان می‌کنند. <br />
۳) یکی‌سازی ده‌ها و شاید صدها تغییرات داده شده توسط افراد به صورت دستی تقریباً کار غیر ممکنی می‌باشد. سیستم‌های همزمان تجدید‌نظر نظیر CVS به توسعه‌دهندگان کمک می‌کنند که هماهنگ‌سازی و یکی‌کردن کارهای توزیع شده را ساده‌تر انجام دهند.</li>
</ul>
<p>مدیریت نسخه‌ها یکی از مهمترین فعالیت‌های توسعه‌دهندگان است و ابزارهای بسیاری وجود دارد که این کارها را به کمک آنها می‌توان انجام داد. مدیریت نسخه‌ها در حقیقت جزیی از محیط توسعه شده است و برروی همه بسترهای مختلف نیز وجود دارد. CVS ابزاری است که بیشترین استفاده را دارد ولی دارای محدودیتهایی برای پروژه‌های بزرگ می‌باشد و اکنون ابزارهایی با خصوصیات کاملتر نیز وجود دارد.</li>
</ul>
<div></div>
<ul>
<li>
<div id="post_message_16016"><strong>1.1 مدیریت بیرون دادن خروجی[1] </strong></p>
<p>پروژه‌های نرم‌افزاری متن‌باز بسیاری از نسخه‌های کاری خود را با توجه به اصل &#8220;زود خروجی بده، همیشه خروجی بده&#8221;[2] به عنوان خروجی بیرون می‌دهند. اگرچه به طور معمول ساده است که بین نسخه‌های مختلف با استفاده از شماره‌ نسخه تفکیک قایل شویم اما گاهی‌اوقات درک این موضوع که یک شماره‌ نسخه چه معنی می‌دهد بسیار مشکل است. به عنوان مثال یک بیرون دادن خروجی لینوکس اینگونه توصیف شده است که &#8220;نسخه 2.4.0-test1 که در واقع همان نسخه 2.3.99-pre10-pre3 است بیرون داده شد.&#8221;. با اینکه بعضی از پروژه‌ها از شیوه غریبی برای شماره‌گذاری نسخه‌هایشان استفاده می‌کنند اما به طور معمول چند نکته برجسته در این کار مشخص است:</p>
<ul>
<li><strong>· عددگذاری: </strong>
<p>اکثر پروژه‌ها از یک شیوه عدد گذاری برای شماره‌ نسخه‌هایشان استفاده می‌کنند. به عنوان مثال عدد 2.3.20 به این معنی است که شماره‌ اصلی ۲ و شاخه‌ی‌ توسعه ۳ و نقطه‌ بیرون دادن خروجی ۲۰. بسیاری از پروژه‌ها در یک زمان ممکن است دارای چند خط توسعه باشند که در آن صورت اعداد زوج در مکان دوم شماره‌ نسخه به معنی شاخه پایدار می‌باشند و اعداد فرد به مشخص‌کننده شاخه توسعه هستند. <br />
<strong>· شاخه‌های توسعه </strong></p>
<p>بسیاری از پروژه‌ها شاخه‌های متفاوتی از توسعه را دارا می‌باشند و شاخه‌هایشان را پایدار (برای استفاده از محصول) و آزمایشی (مخصوص توسعه‌دهنده‌ها) می‌نامند. بعضی از پروژه‌ها حتی از سه شاخه استفاده می‌کنند مانند پروژه Debian که دارای سه شاخه پایدار، در حال آزمایش و ناپایدار می‌باشد. <br />
<strong>· وضعیت کاری </strong></p>
<p>نرم‌افزارهای متن‌باز اغلب از واژه‌هایی برای مشخص کردن وضعیت کاری پروژه استفاده می‌کنند: آلفا (در حال توسعه)، بتا (در حال تکمیل قابلیت)، pre (نامزدهای ممکن بیرون‌داده شدن)، RC (نامزدهای بیرون‌داده شدن)، نهایی (خروجی بیرون‌داده شده رسمی). <br />
<strong>· نامهای به‌صورت کد </strong></p>
<p>بعضی از پروژه‌ها از نامهای به‌صورت کد برای بیرون دادنهای اصلیشان استفاده می‌کنند که به عنوان مثال potato به جای 2.2 نمونه‌ای از آن است. نامهای به‌صورت کد برای بسیاری از پروژه‌ها وسیله سرگرمی و یا بزرگ داشتن آن است و برای بدست آوردن این نامها تلاش زیادی صورت می‌گیرد. <br />
<strong>· تاریخهای بیرون دادن </strong></p>
<p>بعضی از پروژه‌ها از تاریخ بیرون دادن خود به عنوان شماره نسخه استفاده می‌کنند. <br />
<strong>· نسخه‌های دلخواه </strong></p>
<p>افراد اصلی دخیل در یک پروژه گاهی اوقات نسخه‌های مربوط به خود را در دسترس قرار می‌دهند و آنها را با نام ابتدایی خود مشخص می‌کنند. هدف از این کار این است که بتوان پروژه‌های جانبی را که ممکن است با خروجی رسمی یکپارچه نشوند را در بعضی از نقاط دنبال نمود</li>
</ul>
<p><strong>1.2 انتقال دادن </strong></p>
<p>انتقال دادن واژه‌ای است که بسته‌ای کردن نرم‌افزار، مدیریت وابستگیها، سیاست ارتقا و نصب را در برمی‌گیرد. بسیاری از پروژه‌های متن‌باز در این زمینه دارای ضعفهایی هستند که شاید دلیل آن این باشد که گرایش این پروژه‌ها بیشتر به سمت کاربران خبره است که از آنها انتظار می‌رود قادر باشند که با این موضوعات به راحتی کنار بیایند. انتقال ضعیف یک مانع بسیار بزرگ در سرراه ورود به محدوده نرم‌افزارهای متن‌باز است. پروژه‌هایی که تلاش اضافی صرف می‌کنند که کاربر به راحتی بتواند برنامه آنها را نصب کند به راحتی می‌توانند کاربران و توسعه‌گران بیشتری را جذب کنند. یک نگاه تاریخی نشان می‌دهد که پروژه‌های متن‌باز زیاد به این قضییه توجه نداشته‌اند و برایشان مهم نبوده است که تنها یک گروه خاصی از افراد از محصولاتشان استفاده کنند. این دسته از پروژه‌ها سعی داشتند که با استفاده از یک محصول دارای ساختار مناسب و کارا باعث گسترش محصول خود شوند تا اینکه سعی کنند با استفاده از یک انتقال مناسب این جذب را فراهم سازند. اکنون مشخص شده است که اگر پروژه‌های متن‌باز سعی کنند این دو امر را باهم همراه سازند قطعاً کاربران بسیار زیادتری را نسبت به سایر نرم‌افزارها فراهم می‌کنند. <br />
مدیریت وابستگیها بین بسته‌های نرم‌افزاری یک موضوع بسیار مهم در پروژه‌های متن‌باز می‌باشد. با توجه به خاصیت ذاتی پروژه‌های متن‌باز که استفاده مجدد از دیگر کدهاست، بسیاری از بسته‌ها به ده‌ها بسته‌ دیگر اعتماد می‌کنند و با فرض درست بودن آنها کار خود را انجام می‌دهند. راه‌حلهای مختلفی برای حل این مشکل توسعه داده شده است که یک نمونه آن APT است که Debian از آن استفاده می‌کند. APT قالبهای متعارفی تعریف می‌کند و با استفاده از آنها وابستگی بین بسته‌ها را تشخیص می‌دهد و قابلیت خودکار به‌روز شدن کامل سیستم را در اختیار می‌گذارد. <br />
<strong>1.3 مستندسازی </strong></p>
<p>مستندات جامع و با کیفیت یک پروژه رمز استفاده دیگران از آن پروژه می‌باشد. یک مستندسازی خوب می‌تواند وسیله مناسبی برای کسانی که می‌خواهند به یک پروژه وارد شوند، باشد تا اطلاعات کافی را در آن مورد خاص کسب کنند. مستندات به صورت ساختاری رشد می‌کنند که مبدأ آن رشد نیز معمولا کامنت‌های گذاشته شده در کدها و یا پاسخهایی است که به سوالات مطرح شده در یک گروه نامه‌نگاری داده شده است. بسیاری از پروژه‌ها مستندات بسیار ناکافی در اختیار دارند و یا اینکه سعی نکرده‌اند مستنداتی بسازند که واقعاً کارآمد ‌باشد. افراد غیر برنامه‌نویس انتظارات مختلفی از مستندسازی دارند:</p>
<ul>
<li><strong>· داخلی و برخط </strong>
<p>افراد غیر برنامه‌نویس عقیده دارند که کمک حساس به متن و برخط حتماً باید همراه با برنامه‌ کاربردی باشد. افراد غیربرنامه‌نویس به کمک برخط به عنوان یک مرجع سریع نگاه می‌کنند، برای همین اندیس‌گذاری کمک و توابع جستجو در کمک بسیار مهم هستند. اگر یک خودآموز برخط در برنامه کاربردی وجود داشته باشد، افراد غیربرنامه‌نویس حتماً به آن رجوع خواهندکرد. افراد غیربرنامه‌نویس به &#8220;Tips and Tricks&#8221;هایی که همراه با برنامه بیرون داده شده‌است رجوع می‌کنند. افراد غیربرنامه‌نویس به خودآموزهای چاپ‌شده‌ای که همراه با نرم‌افزار بیرون داده می‌شود رجوع خواهند کرد. افراد غیر‌برنامه‌نویس هیچ‌گاه یک کتاب راجع به یک برنامه کاربردی نمی‌خرند زیرا معتقدند که کتابهای فنی مختص برنامه‌نویسان است. <br />
<strong>· ساده </strong></p>
<p>افراد غیربرنامه‌نویس به هیچ‌وجه راجع به جزییات توضیح نمی‌خواهند. آنها به جوابهای ساده احتیاج دارند. این افراد از وارد شدن به جزییات بیزارند؛ دستورالعمل‌های کوتاه و باقاعده را دوست دارند؛ به اطلاعاتی علاقه دارند که جواب این سوال است: &#8220;چگونه من می‌توانم فلان کار را انجام دهم&#8221;(که فلان کار یک قابلیتی است که برنامه در اختیار شما قرار می‌دهد) و اینکه افراد غیربرنامه‌نویس نمی‌خواهند اطلاعاتی راجع به اینکه قابلیت‌های سیستم چگونه پیاده‌سازی شده‌اند مشاهده کنند. <br />
<strong>· کامل، درست و به‌روز </strong></p>
<p>فرض افراد غیربرنامه‌نویس این است که کمک برخط در هر نسخه جدید برنامه به‌روز می‌شود. اگر قسمتی از کمک برخط وجود نداشته باشد و یا کهنه و از کارافتاده باشد این افراد دیگر از آن استفاده نخواهند کرد. اگر این فرد نتواند جواب یک سوال را در کمک برخط پیدا کند یا با پشتیبان فنی تماس خواهد گرفت و یا از یک برنامه‌کاربردی دیگر استفاده خواهد کرد. <br />
نوشتن مستندات می‌تواند یک مدل برای تجارت باشد. بسیاری از پروژه‌های متن‌باز از طریق فروختن مستندات، خود را تامین مالی می‌کنند. این مساله شاید کمی ریاکارانه و متناقض به نظر برسد، فروختن چیزی که به محصولات متن‌باز وابسته است و شما با استفاده از آن می‌توانید محصولات متن‌باز دیگری تولید کنید، ولی به هرحال این کار انجام می‌شود. علاوه براین لیسانس‌های خاص دیگری نیز وجود دارند که سوراخ مابین استفاده اقتصادی و به طور مجانی در اختیار گذاشتن اطلاعات را پر می‌کنند.</li>
</ul>
</div>
</li>
</ul>
<div></div>
<div></div>
<p>منبع : <span style="color:blue;">FOSS_ir طرح ملی نرم‌افزارهای آزاد-متن‌باز ایران</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/100/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/100/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=100&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%d9%85%d9%87%d9%86%d8%af%d8%b3%db%8c-%d9%86%d8%b1%d9%85%e2%80%8c%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%af%d8%b1-%d8%b3%db%8c%d8%b3%d8%aa%d9%85%e2%80%8c%d9%87%d8%a7%db%8c-%d9%85%d8%aa%d9%86%e2%80%8c%d8%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
		<item>
		<title>کاهش ریسک پروژه ها با استخراج صحیح نیازمندیها بوسیله مثال &#8211; قسمت سوم و آخر</title>
		<link>http://grp3se.wordpress.com/2008/09/06/%da%a9%d8%a7%d9%87%d8%b4-%d8%b1%db%8c%d8%b3%da%a9-%d9%be%d8%b1%d9%88%da%98%d9%87-%d9%87%d8%a7-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa%d8%ae%d8%b1%d8%a7%d8%ac-%d8%b5%d8%ad%db%8c%d8%ad-%d9%86%db%8c%d8%a7%d8%b-2/</link>
		<comments>http://grp3se.wordpress.com/2008/09/06/%da%a9%d8%a7%d9%87%d8%b4-%d8%b1%db%8c%d8%b3%da%a9-%d9%be%d8%b1%d9%88%da%98%d9%87-%d9%87%d8%a7-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa%d8%ae%d8%b1%d8%a7%d8%ac-%d8%b5%d8%ad%db%8c%d8%ad-%d9%86%db%8c%d8%a7%d8%b-2/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 13:04:15 +0000</pubDate>
		<dc:creator>grp3se</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://grp3se.wordpress.com/?p=95</guid>
		<description><![CDATA[  در ادامه مطلب قسمت دوم با يكسري مثالها در خصوص كاهش ريسك پروژه هاي نرم افزاري از طريق دقت در استخراج نيازمنديها صحبت شده است. تشخيص ، تعريف ، تجزيه ، درستي و قابليت ارزيابي نيازمنديها يكي از بزرگترين مسائل پيش روي مهندسين نرم افزار مي باشد.در اكثر مستندات نيازمنديها ، نيازمنديهاي موجود مبهم [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=95&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="right"><span style="color:#551a8b;font-weight:bold;text-decoration:underline;"><br />
</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span lang="FA">در ادامه مطلب قسمت دوم با يكسري مثالها در خصوص كاهش ريسك پروژه هاي نرم افزاري از طريق دقت در استخراج نيازمنديها صحبت شده است.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">تشخيص ، تعريف ، تجزيه ، درستي و قابليت ارزيابي نيازمنديها يكي از بزرگترين مسائل پيش روي مهندسين نرم افزار مي باشد.در اكثر مستندات نيازمنديها ، نيازمنديهاي موجود مبهم و متناقض مي باشد در بعضي موارد نيازمنديها به صورت يكتا تعريف نشده و نهايتا منجر به اين مي گردد كه قابل پيگيري نبوده و تست آنها به سختي صورت پذيرد.در بسياري از حالات نيازمنديها بسيار سطحي و يا بسيار جزيي و در سطح تحليل سيستم بيان گرديده است(نه در سطح نيازمنديهاي نرم افزار)</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">اگر با استفاده از روشهايي بتوانيم بر اين مشكلات فائق آييم مي توانيم ريسك توسعه سيستمهاي نرم افزاري را (ريسك عدم پوشش نيازمنديها) تا حد زيادي كاهش دهيم.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">در اين مثالها سعي شده است روش برخورد با مسائلي كه افراد مرتبط در تعيين نيازمنديها با آن دست و پنجه نرم مي كنند عنوان <span> </span>گردد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">صورت كلي مثال : طبق برنامه ريزي مقرر گرديد تا نسبت به توسعه مجدد نرم افزارهاي قبلي اقدام گردد در اين راستا با توجه به محدوده سيستم ، چند تيم بصورت همزمان وظيفه مهندسي مجدد سيستمهاي موجود و تعريف نيازمنديها را عهده دار شدند و مشاوري جهت راهنمايي به تيمها در راستاي استخراج صحيح نيازمنديها بكار گرفته شده است.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> </span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">مثالهاي مرتبط :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">مثالهاي ذيل مرتبط با تعدادي از سيستمهاي موجود است كه قرار است در پروسه توسعه مجدد بازنويسي گردند. اينها تنها نشان دهنده فاز شناخت نيازمنديها بوده و ساير مراحل چرخه توسعه نرم افزار را شامل نمي شود در اين مثالها ابتدا نيازمندي استخراج شده توسط تيمها آورده شده ، سپس با توجه به موارد بحراني فوق ارزيابي هاي لازم صورت گرفته و نهايتا نيازمندي بازنويسي گرديده است.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> </span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">مثال 7 :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي اوليه : 3.2.7.1 سيستم نبايد مانع <span> </span>وارد نمودن سال از جانب كاربران كه قصد ورود اطلاعات پرداخت را دارند گردد اما مي بايد امكاني را فراهم نمايد كه آنها از درستي سال وارد شده مطمئن گردند.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">ايرادات : اين يك نيازمندي منفي مي باشد نيازمنديهاي منفي نمي بايد تعريف شوند(عدم نيازمندي) زيرا آنها قابل پياده سازي نيستند. در نيازمنديها مي بايست تمامي شرايطي كه بايد وجود داشته باشد بيان گردد. اگر شرايطي لازم نيست پياده سازي نيز نمي شوند. علاوه بر آن دوبار از بايد(يكبار مثبت ، يكبار منفي) در يك نيازمندي استفاده شده است.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي بازنويسي شده : 3.2.7.1 سيستم مي بايست :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>1.<span>       </span></span></span><span lang="FA">اجازه ورود سال پرداخت را به كاربر بدهد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>2.<span>       </span></span></span><span lang="FA">‎ٌ</span><span lang="FA">امكاني جهت اطمينان كاربر از صحت سال پرداخت وارد شده فراهم نمايد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><strong><span> </span></strong><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> </span><span></span></p>
<p class="MsoNormal"><span lang="FA">مثال 8 :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي اوليه : 3.2.7.3 بعد از اين كه سيستم يك فايل سالم را دريافت نمود، سيستم مي بايست:</span><span lang="AR-SA"></span></p>
<ul type="disc">
<li class="MsoNormal"><span lang="FA">اگاه      ساختن كاربر از پذيرش با عدم پذيرش فايل</span><span lang="AR-SA"></span></li>
<li class="MsoNormal"><span lang="FA">فايل      پذيرفته شده مي بايست شامل نام و كد پستي فرد ارسال كننده باشد.</span><span lang="AR-SA"></span></li>
<li class="MsoNormal"><span lang="FA">درخواست      پذيرفته نشده مي بايست شامل يك (كد علت عدم پذيرش) باشد.</span><span lang="AR-SA"></span></li>
</ul>
<p class="MsoNormal"><span lang="FA"> </span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">ايرادات : آيتم دوم و سوم در صورتي كه مستقل از آيتم اول خوانده شوند هيچ معنايي ندارند :</span><span lang="AR-SA"></span></p>
<ul type="disc">
<li class="MsoNormal"><span lang="FA">سيستم      مي بايست فايل پذيرفته شده مي بايست &#8230;.</span><span lang="AR-SA"></span></li>
<li class="MsoNormal"><span lang="FA">سيستم      مي بايست درخواست پذيرفته نشده مي بايست &#8230;.</span><span lang="AR-SA"></span></li>
</ul>
<p class="MsoNormal"><span lang="FA">از طرف ديگر استفاده از<span> </span></span><span>Bullets</span><span><span lang="FA"> </span></span><span lang="FA">در تعريف نيازمنديها نبايد استفاده شود زير امكان رديابي وجود ندارد بنابراين از شماره گذاري و يا حروف استفاده نماييد. در كل اين نيازمندي مبهم بوده و قابل پياده سازي و تست نمي باشد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي بازنويسي شده : 3.2.7.3 هنگامي كه سيستم يك فايل سالم را دريافت مي نمايد مي بايست :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>1.<span>       </span></span></span><span lang="FA">عدم پذيرش فايل در صورتي كه شامل مشخصات ذيل از شخص تاييد كننده نمي باشد:</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>a.<span>       </span></span></span><span lang="FA">نام</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>b.<span>       </span></span></span><span lang="FA">كد پستي</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>2.<span>       </span></span></span><span lang="FA">آگاه سازي شخص درباره پذيرش و يا عدم پذيرش با كد علت عدم پذيرش.مرجع كد علت ها جدول شماره 5.4.8 مي باشد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> </span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">مثال 9 :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي اوليه :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> 3.2.8.2 فرايند ثبت نام در انواع روشهاي ثبت نام بين 1 تا 10 روز بطول انجامد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">3.2.8.3 فرايند ثبت نام در موارد ذيل نبايد بيش از 3 روز بطول بينجامد.:</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>1.<span>       </span></span></span><span lang="FA">ثبت نام با استفاده از كارت اعتباري</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>2.<span>       </span></span></span><span lang="FA">ثبت نام بصورت درخواست كتبي</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">ايرادات : اين دو نيازمندي در تناقض با هم مي باشد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي بازنويسي شده : 3.2.8.2 فرايند ثبت نام مي بايست :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>1.<span>       </span></span></span><span lang="FA">براي روشهاي ثبت نام ذيل بين 1 تا 3 روز بطول بينجامد:</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>a.<span>       </span></span></span><span lang="FA">ثبت نام با استفاده از كارت اعتباري</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>b.<span>       </span></span></span><span lang="FA">ثبت نام بصورت درخواست كتبي</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span><span>2.<span>       </span></span></span><span lang="FA">براي ساير روشهاي ثبت نام بين 1 تا 10 روز بطول بينجامد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> </span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">مثال 10 :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي اوليه : 3.2.8.6 هنگامي كه نرم افزار محاسباتي را انجام مي دهد مي بايست نتايج صحيح توليد نمايد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> ايرادات : واقعا ؟ اين يك نيازمندي نيست. اين نوع از نيازها نبايد تعريف گردد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نيازمندي بازنويسي شده : حذف نيازمندي</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA"> </span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">نتيجه گيري :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">در صورتي كه زمان كافي و تلاش مناسبي براي ارزيابي نيازمنديها بر اساس معيارهاي بحراني در طول مدت تعريف و تشخيص نيازمنديها ، صورت پذيرد ريسك هاي مرتبط با نيازمنديها تا حد زيادي كاهش يافته و بطور قابل ملاحضه اي احتمال موفقيت پروژه افزايش مي يابد. اين يك حقيقت شناخته شده است كه اگر تشخيص نيازمنديها به خوبي صورت نپذيرد اثرات آن در مراحل پياده سازي ، يكپارچه سازي و تست و همچنين بهره برداري خود را نشان خواهد داد.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">مرجع :</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span>1.</span><span>      <span> </span></span><em><span> </span></em><em><span>Military Standard Specification Practices</span></em><span>. MIL-STD-490A.<span> </span>U.S.<span> </span>Department of Defense, 4 June 1985.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span lang="FA">منابع مفيد جهت مطالعه بيشتر :</span><span></span></p>
<p class="MsoNormal"><span>1.</span><span>      <span> </span></span><span>IEEE Std. 830-1998.<span> </span><em>IEEE Recommended Practices for Software Requirements Specifications</em>. IEEE Computer Society. 20 Oct. 1998.</span><span lang="AR-SA"></span></p>
<p class="MsoNormal"><span>2.</span><span>      <span> </span></span><span>Cook, David A., and Les Dupaix. &#8220;The Requirements for Good Requirements.&#8221; Software Technology Conference Proceedings. Mar. 2001.</span><span></span></p>
<p><!--EndFragment--></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/grp3se.wordpress.com/95/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/grp3se.wordpress.com/95/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grp3se.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grp3se.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grp3se.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grp3se.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grp3se.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grp3se.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grp3se.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grp3se.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grp3se.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grp3se.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grp3se.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grp3se.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grp3se.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grp3se.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grp3se.wordpress.com&amp;blog=4330119&amp;post=95&amp;subd=grp3se&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grp3se.wordpress.com/2008/09/06/%da%a9%d8%a7%d9%87%d8%b4-%d8%b1%db%8c%d8%b3%da%a9-%d9%be%d8%b1%d9%88%da%98%d9%87-%d9%87%d8%a7-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa%d8%ae%d8%b1%d8%a7%d8%ac-%d8%b5%d8%ad%db%8c%d8%ad-%d9%86%db%8c%d8%a7%d8%b-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5af0cccdea7a6f6b77a55457e60a385?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grp3se</media:title>
		</media:content>
	</item>
	</channel>
</rss>
