الگوريتم ژنتيك و حل مساله فروشنده دوره گرد
الگوريتم ژنتيك يك روش آماري براي بهينه سازي و جستجو است. الگوريتم ژنتيك جزئي از محاسبات تكاملي است كه خود جزئي از هوش مصنوعي مي باشد. ويژگيهاي خاص اين الگوريتم باعث مي شود كه نتوانيم آن را يك جستجوگر تصادفي ساده قلمداد كنيم. در واقع ايده اوليه اين روش از نظريه تكاملي داروين الهام گرفته شده است و كاركرد آن بر اساس ژنتيك طبيعي استوار مي باشد . ايدة محاسبات تكاملي اولين بار در سال 1960 توسط رچنبرگ كه در زمينه استراتژيهاي تكاملي تحقيق مي كرد بوجود آمد كه نظريه او بعدها توسط ديگر محققان توسعه داده شد. اصول اوليه الگوريتم ژنتيك توسط هالند و همكارانش در دانشگاه ميشيگان در سال 1962 ارائه شد. آنان در تحقيقات خود به فرايند سازگاري در سيستم هاي طبيعي توجه نمودند و براي مدل سازي آن در سيستم هاي مصنوعي كه بايد داراي توانايي هاي اصلي سيستم هاي طبيعي باشند، تلاش نمودند. نتيجه اين تلاشها، پيدايش الگوريتم ژنتيك بود.
سال 1975، مباني رياضي آن در كتابي توسط هالند با نام ”تطابق در سيستمهاي طبيعي و مصنوعي“منتشر شد. در سال 1992، جان كوزا الگوريتم ژنتيك را به منظور انجام وظايف خاصي در برنامه هايش بكار برد. او اين روش را برنامه ريزي تكاملي ناميد. در برنامه ريزي تكاملي، هدف پيدا كردن الگوريتمي است كه بتواند جواب هر صورت مساله اي را پيدا كند. در اين روش بايد براي الگوريتمها مطلوبيت تعريف كرد تا فهميده شود كه كدام الگوريتم بهتر است.
خاصيت مهم الگوريتم ژنتيك، مقاوم بودن آن است ، بطوريكه درآن يك تعادل انعطاف پذير بين كارايي و خصوصيات لازم براي بقا در محيطها و شرايط گوناگون وجود دارد. بطور كلي هر چه سيستم مصنوعي از نظر مقاومت دردرجه بالاتري باشد، هزينه طراحي مجدد آن كاهش يافته و حتي حذف مي گردد. در واقع چنانچه ميزان سازگاري سيستمي افزايش يابد، آن سيستم قادر خواهد بود كه به مدت طولاني تر و به نحو مطلوب تري به كار بپردازد. در سيستم هاي بيولوژيك ميزان انعطاف پذيري، مقاوت و كارايي به شكل شگفت انگيزي زياد است. سازگاري، بقا، خودترميمي، هدايت و توليد مثل از ديگر ويژگيهياي خاص سيستمهاي طبيعي و بيولوژيك مي باشد كه مهندسان در صددند تا در سيستمهاي مصنوعي از آنها تقليد كنند. اما بطور كلي جايي كه كاركرد مقاوم مورد نياز باشد، طبيعت بهتر عمل خواهد كرد.
از الگوريتم ژنتيك در كاربردهاي مختلفي مثل بهينه سازي توابع، شناسايي سيستم ها و پردازش تصوير استفاده شده است. در زير برخي از موارد استفاده از الگوريتم ژنتيك در علوم مختلف نشان داده شده است.
بيولوژي : شبيه سازي تكامل يك جمعيت از ارگانيسم هاي تك سلولي
علوم كامپيوتر : جستجو براي تكامل تابع ارزشيابي
مهندسي : شناسايي سيستمهاي ديناميكي
فيزيك : حل معادلات غير خطي براي انطباق سطوح پتانسيل ملكولي
تجارت : جستجو براي قوانين پيشگويي كننده سود شركتها
با توجه به گستردگی الگوریتم ژنتیک و کاربردهای وسیع آن، مقالات و نرم افزارهای زیر برای تحقیق بیشتر معرفی می شود:
كدنويسي الگوريتم ژنتيك
نرم افزار ويژوال حل TSP با GA
مقالات فارسي 1 2
December 26, 2007 1:07 PM |
لینک ثابت
|
نظرات (1)
|
لینک (0)
تحليل مساله كوتاهترين مسير در گراف جهت دار
... يك ايده برنامه نويسي پويا :
يك روش برنامه نويسي پويا سعي بر حل این مساله براي يافتن كوتاهترين مسير از s به t زمانيكه لبه با وزن منفي داشته باشيم اما سيكل ( دوره ) با طول منفي نداشته باشيم . زر مساله i مي تواند كوتاهترين مسير را تنها بوسيله استفاده از i گره اوليه پيدا كند . این ايده بلافاصله جواب نمي دهد بلكه با اعمال اندكي تغييرات جواب دلخواه را به ما ميدهد . الگوريتم Bellman-Ford algorithm اين الگوريتم را بوسيله برنامه نويسي پويا مطرح كرده و حل كرده اند .
اگر G دورهای منفی نداشته باشد؛ پس کوتاهترین مسیر ساده از S به t وجود دارد.(یعنی گره ها تکرار نمی شوند.) و از اینرو در نهایت n-1 یال دارد.
اثبات: تا زمانی که هر دور هیچ هزینه منفی نداشته باشد؛ کوتاهترین مسیر P از s به t با بیشترین تعداد از یالها هیچ راس v را مرور نمی کند. اگر P ؛ راس v را تکرار کند؛ ما می توانیم بخش مابین عبورهای متوالی از v را حذف کنیم. که این عمل هزینه کمینه و یال بیشینه را نتیجه می دهد.
اجازه دهید OPT(i,v) را برای تفکیک کمترین هزینه یک مسیر v-t با استفاده از بیشترین یال i مورد استفاده قرار دهیم. مطابق مساله (6.22) اصی ترین مشکل؛ محاسبه OPT(n-1.s) است.(ما می توانیم به جای ساخت الگوریتم؛ زیر مسائل مرتبط با کمینه هزینه مسیر s-v را با استفاده از بیشترین یالi جایگزین کنیم. این یک موازی طبیعی با الگوریتم دایجسترا شکل خواهد داد. اما در پروتوکل های مسیر یابی که بعدا شرح خواهیم داد؛ این یک روش طبیعی نخواهد بود.)
اکنون راه ساده ای را برای بیان OPT(i,v) با استفاده از زیرمسائل کوچکتر نیازداریم. ما دیداه طبیعی تری که نکات بسیاری حالات مختلف را در بر می گیرد را مرور خواهیم کرد؛ این مثال دیگری است از اصل "انتخابهای چند مسیره" که در الگوریتم مساله کوچکترین مربعات بخش شده خواهیم دید.
اجازه دهید؛ مسیر بهینه p OPT(i,v) را که در شکل 6.22 نمایش داده شده است را اثبات کنیم...
متن كامل فارسي
ترجمه: محمد رضا فرشچي، هادي خليل پور
December 24, 2007 5:45 PM |
لینک ثابت
|
نظرات (3)
|
لینک (0)
Date mining داده كاوي
کاوشهای ماشینی در دادهها یا دادهکاوی (Data mining) را باید یکی از سامانههای هوشمند (Intelligent systems) دانست. سامانههای هوشمند زیر شاخهایست بزرگ و پرکاربرد از یادگیری ماشینی که خود زمینهایست در هوش مصنوعی. زمینه علمی جدید و پهناور یادگیری ماشینی (که "کاوشهای ماشینی در دادهها" بخشی ست بزرگ از زیر شاخه سامانههای هوشمند آن ست)، به واقع همان امتداد و استمرار دانش کهن و همه جا گیر آمار است در جهت ماشینی کردن یادگیری، تعلّم، و سرانجام، دانش.
داده کاوی به عنوان مهمترين کاربرد Data Warehouse یاانباره های داده شناخته می شود . به وسيله داده کاوی داده های موجود مورد تحليل قرار می گيرند تا روندهای احتمالی، ارتباطهاي غير محسوس و الگو های مخفی داده ها از بين انبوه داده ها، شناسايی شوند .
در اين فرايند از الگوريتم های پيچيده رياضی و آماری استفاده می شود تا داده ها تبديل به دانش سازمان شوند.
امروزه با حجم عظيمي از داده ها روبرو هستيم. براي استفاده از آنها به ابزارهاي كشف دانش نياز داريم. داده كاوي به عنوان يك توانايي پيشرفته در تحليل داده و كشف دانش مورد استفاده قرار مي گيرد. داده كاوي در علوم (ستاره شناسي،...)در تجارت (تبليغات، مديريت ارتباط با مشتري،...) در وب (موتورهاي جستجو،...) در مسايل دولتي (فعاليتهاي ضد تروريستي،...) كاربرد دارد. عبارت داده كاوي شباهت به استخراج زغال سنگ و طلا دارد. داده كاوي نيز اطلاعات را كه در انبارهاي داده مدفون شده است، استخراج مي كند.
در واقع هـــــدف از داده كاوي ايجاد مدل هايي براي تصميم گيري است. اين مدلها رفتارهاي آينده را براساس تحليلهاي گذشته پيش بيني مي كنند. به كاربردن داده كاوي به عنوان اهرمي براي آماده سازي داده ها و تكميل قابليتهاي انباره داده (DATA WAREHOUSE) ، بهترين موقعيت را براي به دست آوردن برتريهاي رقابتي ايجاد مي كند.
سيستم هاي بانك داده (DATA BASE) ، نقشي كليدي در سيستم هاي مديريت و انبار داده، بازي مي كنند. يك سيستم بانك داده، شامل فايل هاي بانك داده و سيستم هاي مديريت بانك داده است.
اغلب تجارت ها به تصميم گيريهاي استراتژيك و يا اتخاذ خط مشي هاي جديد براي خدمت رساني بهتر به مشتريان نياز دارند. به عنوان مثال فروشگاهها آرايش مغازه خود را براي ايجاد ميل بيشتر به خريد مجدداً طراحي مي كنند و يا خطوط هواپيمايي تسهيلات خاصي را براي مشتريان جهت پروازهاي مكرر آنها در نظر مي گيرند. اين دو مثال به داده هايي در مورد رفتار مصرفي گذشته مشتريان براي تعيين الگوهايي به وسيله داده كاوي، نياز دارد. براساس اين الگوها تصميمـــات لازم اتخاذ مي شود. در واقع ابزار داده كــــاوي، داده را مي گيرد و يك تصوير از واقعيت به شكل مدل مي سازد، اين مدل روابط موجود در داده ها را شرح مي دهد.
از نظر فرايندي فعاليتهاي داده كاوي به سه طبقه بندي عمومي تقسيم مي شوند:
اكتشاف : فرايند جستجو در يك بانك داده براي يافتن الگوهاي پنهان، بدون داشتن يك فرضيه از پيش تعيين شده درباره اينكه اين الگو ممكن است چه باشد.
مانند تحليلهايي كه برحسب كالاهاي خريداري شده صورت مي گيرد، اينگونه تحليلهاي سبدي نشانگر موارديست كه مشتري تمايل به خريد آنها دارند. اين اطلاعات مي تواند به بهبود موجودي، استراتژي طراحي، آرايش فروشگاه و تبليغات منجر گردد.
مدل پيش بيني : فرايندي كه الگوهاي كشف شــده از بانك داده را مي گيرد و آنها را براي پيش بيني آينده به كار مي برد.
مانند پيش بيني فروش در خرده فروشي، الگوهاي كشف شده براي فروش به آنها كمك مي كند تا تصميماتي را در رابطه با موجودي اتخاذ كنند.
تحليلهاي دادگاهي : به فرايند به كارگيري الگوهاي استخراج شده براي يافتن عوامــل داده اي نامعقول و متناقض مربوط مي شود.
مانند شناسايي و تشخيص كلاهبرداري در موسسات مالي. كلاهبرداري به ميزان زيادي پرهزينه و زيان آور است، بانكها مي توانند با تحليل دادوستدهاي جعلي گذشته الگوهايي را براي تشخيص و كشف كلاهبرداري به دست آورند.
از نمایی دیگر، داده كاوي ، بعنوان روشي در استخراج دانش از متون، يكي از موضوعات مهم در گستره اي از اعمال مديريت اطلاعات است. در اين ميان آنچه از اهميت فوق العاده اي برخوردار است ارايه راهكارهايي براي مواجه با اين حجم عظيم اطلاعاتي و استفاده بهينه از اطلاعات در جهت خلق دانش، توليد سينرجي و در نهايت افزايش خرد جمعي است.
در سالهاي اخير اهميت متون به عنوان منابع با پتانسيل اطلاعاتي بسيار بالا به نحو گستردهاي مورد توجه قرار گرفته به طوري كه كشف دانش از متون به عنوان يكي از مهمترين فعاليتهاي محققين حوزه هوش مصنوعي و فناوري اطلاعات قرار گرفته است. تحقيقات بسياري صورت گرفته اما محدوده فعاليت بقدري گسترده است كه نيازمند توجه بيشتري ميباشد.
امروزه محققان به اين مسئله معترفند كه با وجود انجام تحقيقات بي وقفه در زمينه كاري خود، نميتوانند همزمان با پيشرفت دانش، معلومات خود را به روز نگاه دارند. بعنوان مثال بانك اطلاعاتي Medline در حال حاضر حاوي 10 ميليون چكيده مقاله است و هر هفته بين هفت تا هشت هزار چكيده مقاله به اين بانك اطلاعاتي افزوده ميشود. در اين بين شايد همه مقالات مربوط به يك دانش خاص نباشند، اما تعداد مقالات تخصصي كه در حوزه تحقيق يك دانش خاص قرار ميگيرد به اندازه اي است كه يك نفر نميتواند ادعا كند همه آنها را مطالعه كرده است بعلاوه نقش مطالعات عميق و گسترده و استخراج ايده ها و دانش جديد از مطالب مطالعه شده بر كسي پوشيده نيست.
در اين ميان اينترنت بعنوان بزرگترين منبع اطلاعاتي همگاني، تشكيل يافته از صد ها ميليون صفحه اطلاعات است كه به جهت همگاني بودن آن و نبود آيندهنگري كافي در زمان تشكيل و رشد آن ، متحمل نگاهداري اطلاعات نويسندگان، محققان ، انديشمندان و غيره به همان نحوي كه آنها مي نوشتند گرديد. نبود يك استاندارد همه جانبه و دقيق در تنظيم متون و قرار گيري اين مجموعه عظيم بصورتي غير ساختيافته و يا بعضاً نيمه ساختيافته، جامعه اطلاعاتي را دچار نوعي سردر گمي و مشكل در دستيابي به اطلاعات مورد نياز كرده بطوريكه براي يافتن مطالب مورد نظر خود متحمل هزينه هاي زماني بسياري ميگردند. محققان به ارايه راه كارهايي براي ساخت يافته كردن اطلاعات نمودند و با ارايه زبانهاي نشانه گذاري استاندارد نظير XML تا حد زيادي جلوي اين از هم پاشيدگي اطلاعاتي را گرفتند اما آنچه همچنان باقي است وجود بسياري از متون غير ساختيافته ميباشد؛ در همين راستا ارايه ابزاهايي كه با بررسي متون بتوانند تحليلي روي آنها انجام دهند منجر به شكل گيري زمينهاي جديد در هوش مصنوعي و فناوري اطلاعات گرديده كه به يادگيري متن معروف است.
اين حوزه تمام فعاليتهايي كه به نوعي به دنبال كسب دانش از متن هستند را شامل ميگردد. آناليز داده هاي متني توسط تكنيكهاي يادگيري ماشين، بازيابي اطلاعات هوشمند، پردازش زبان طبيعي يا روشهاي مرتبط ديگر همگي در زمره مقوله يادگيري متن قرار ميگيرند. يكي از روشهايي كه ذكر گرديد، استفاده از تكنيكهاي يادگيري ماشين در زمينه پردازش متن است، مسئله قابل تامل اين است كه اين تكنيكها در ابتدا در مورد داده هاي ساختيافته به كار گرفته شدند و علمي به نام داده كاوي را بوجود آوردند. داده هاي ساختيافته به داده هايي اطلاق ميگردد كه بطور كاملاً مستقل از همديگر ولي يكسان از لحاظ ساختاري در يك محل گردآوري شده اند. انواع بانكهاي اطلاعاتي را ميتوان نمونه هايي از اين دسته اطلاعات نام برد. در اينصورت مسئله داده كاوي عبارت از كسب اطلاعات و دانش از اين مجموعه ساخت يافته. اما در مورد متون كه عمدتاً غير ساخت يافته يا نيمه ساخت يافته هستند ابتدا بايد توسط روشهايي ، آنها را ساختارمند نمود و سپس از اين روشها براي استخراج اطلاعات و دانش از آنها استفاده كرد. به هر حال استفاده از داده كاوي در مورد متن خود شاخه اي ديگر را در علوم هوش مصنوعي بوجود آورد به نام متن كاوي . از جمله فعاليتهاي بسيار مهم در اين زمينه، طبقه بندي (دسته بندي) متن ميباشد.
طبقه بندي متن، يعني انتساب اسناد متني بر اساس محتوي به يك يا چند طبقه از قبل تعيين شده، يكي از مهمترين مسايل در متن كاوي است؛ مرتب كردن بلادرنگ نامه هاي الكترونيكي يا فايلها در سلسله مراتبي از پوشه ها، تشخيص موضوع متن، جستجوي ساختيافته و/ يا پيدا كردن اسنادي كه در راستاي علايق كاربر ميباشد، از جمله كاربردهاي مبحث طبقه بندي (دسته بندي-كلاسه بندي ) متن است. در بسياري از موارد ، افراد حرفه اي آموزش ديده، براي طبقه بندي متون جديد به كار گرفته ميشوند. اين فرآيند بسيار زمان بر و پر هزينه است و لذا كاربرد خود را محدود ميسازد، به همين منظور علاقه روزافزوني به توسعه فناوري هايي در دسته بندي خودكار متن ابراز ميشود.
در هر حال در جوامع اطلاعاتي امروزي آنچه از اهميت روزافزوني برخوردار است، اطلاعات و تبادل آن است و در اين راستا به توسعه فناوري هاي مرتبط پرداخته ميشود، اما يك مرحله كاملاٌ جديد تر و كاملاً مورد توجه جوامع فرا صنعتي، خلق دانش جديد از اطلاعات قبلي است كه اين جوامع آنرا كليد موفقيت خود در آينده دانسته و به سختي در اين زمينه فعاليت مينمايند. بر ما است تا ضمن ارتقاي فناوري اطلاعات در كشور و ايجاد زير ساختهاي لازمه در اسرع وقت، به اينگونه مسائل جديتر كه در زمره Information High Technology قرار ميگيرند، بپردازيم.
متن كامل
جمع آوري و تحقيق: هادي خليل پور
December 24, 2007 5:18 PM |
لینک ثابت
|
نظرات (1)
|
لینک (0)
CMM
Capability Maturity Model:CMM
مدل بلوغ قابلیت
مقدمه
توسعه نرم افزار فرایند پیچیده ای است. اطمینان از نرم افزار برای پوشش انتظارات مشتری و تحویل به موقع و با قیمت مناسب آن، می تواند منجر به چشم پوشی از کیفیت شده و باعث ارائه آن با ارجحیت های پایین تری شود.
علاوه بر آن توسعه دهنده گان خلاق و پویای نرم افزار نمی توانند براحتی در محیط های ساختارمند با یکدیگر کار کنند. جایی که کیفیت سختگیرانه ای فرایندهای کیفیت را تحت فشار قرار داده است. با این وجود شرکتهای نرم افزاری ، چون مایکروسافت و IBM ، که در آنها کیفیت نرم افزار و بهبود کیفیت آن حرف اول را می زند، کمپانی های نرم افزاری بسیار موفقی هستند.
مثالهای فراوانی برای پروژه های نرم افزاری ناموفق وجود دارد. این گونه مثالها ثابت می کند که هزینه های بالا با ضعف تضمین کیفیت و ضعف اجرای موثر فرآیندهای توسعه نرم افزار در ارتباط است. یک مثال روشن، شرکت Visteon ، سازنده قطعات بزرگ صنعت خودرو در دیربورن میشیگان است. این شرکت در سال 1999 یک سازمان داخلی برای بهبود کیفیت نرم افزاری محصولات خود ایجاد کرد تا ایرادات نرم افزاری شرکت را رفع کند. این امر دهها میلیون دلار هزینه به شرکت تحمیل کرد!
پروژه های نرم افزاری، عموما به خاطر فقدان فرآیندهای موثر توسعه نرم افزار با شکست مواجه می شوند و عموما عملکردهای تخصصی مشکل اصلی نیستند. دی مارکو تصریح کرده است:
« موفقیت یا شکست پروژه، به ندرت در جریان عملکردهای تخصصی و تکنیکال بروز می کند ... و این اتفاق عمدتا در مسائل غیر تخصصی و مشکلات ناشی از عملکرد انسانی بروز می کند. تیم دچار افت می شود و توسعه دهندگان به خاطر مصرف کنندگان مجبور به ارائه گزارش سود می شوند، به عبارت دیگر؛ مردم بصورت پایان ناپذیر با عملکردهای بی معنی روش شناختی مواجه می شوند!»
واتس هامفری، کارشناس پردازش نرم افزار در کتاب خود با عنوان «مقدمه ای بر فرآیند تیمی نرم افزار» می نویسد:«پارامترهای قابل اندازه گیری، ضروری ترین قسمت اجرای پایدار فعالیت با کیفیت بالا هستند»
فعالیت های هامفری در طول سال 1980، شالوده چهارچوب جدیدی را برای فرآیندهای نرم افزاری آماده کرد که مدل بلوغ قابلیت (CMM) نامیده می شود. پس از آن، در سال 1991، CMM به یک استاندارد عملی برای سازمانهایی تبدل شد که بر حسب فرآیندهای نرم افزاری سنجش می شدند. و آن موسسات ملزم به بهبود کیفیت محصولات خود شدند.
بطور کلی اجرای CMM تعهد مهمی است که به سرمایه گذاری و زمان قابل توجهی نیازمند است. یک سازمان قبل از قبول CMM ، نخست می بایست اهداف خود را تعیین کرده و ریسک ها، هزینه ها، و مزایای نامعلوم را مورد بررسی قرار دهد.
این مقاله تحقیقی بر شناخت CMM، مراحل رشد آن و فرآیند کلیدی ساخت زمینه های بهبود رشد خواهد پرداخت و سپس یک قالب حرفه ای برای قبول CMM در یک سازمان طرح ریزی می شود.
The Capability Maturity Model: Defined and Explained
تعریف و تشریح مدل بلوغ قابلیت
CMM بعنوان مدلی برای تشخیص بلوغ فرآیندهای نرم افزاری در سازمانها، به منظور تعیین شیوه های کلیدی که به افزایش رشد این فرایندها منجر می شود، توسعه یافته است.
در سال 1991، CMM در بنیاد مهندسی نرم ا افزار (SEI) در دانشگاه کارنگی ملون پیترزبورگ پنسیلوانیا توسعه یافت.
پژوهشی که سرانجام منجر به ساخت مدلی با پشتوانه مالی دولت آمریکا شد ، که این پژوهش راهی را جستجو می کرد تا مقاطعه کاران جزء توسعه دهنده نرم افزار را برای وزارت دفاع آمریکا ارزیابی و مقایسه کند.
دو شاخه از CMM توسط SEI گسترش یافت. توسعه دهنده گان نرم افزار، CMM را به عنوان یک نرم افزار(SW-CMM) پذیرفتند تا فرآیندهای نرم افزاری در سازمان را اندازه گیری کند. و رشد اینگونه فرآیند ها را بهبود بخشد.
از سوی دیگر سازمانهایی نرم افزاری را خریداری و استفاده کردند که می توانست مدل رشد یافتگی قابليتها براي سفارش نرمافزار (SA-CMM) را اتخاذ کند. در واقع (SA-CMM) برای ارزیابی و بهبود فرآیند سفارش نرم افزار ساخته شد. تمرکز قسمت اول این مقاله بر (SW-CMM) و طی مبحث جداگانه بعدی (SA-CMM) مورد بحث و ارزیابی قرار خواهد گرفت.
سازندگان CMM، آنرا بدین صورت تعریف کرده اند: « چهارچوبی که عناصر کلیدی یک فرآیند موثر نرم افزاری را شرح می دهد. CMM یک مسیر بهبود تکاملی را برای سازمانهای نرم افزاری توصیف می کند تا از یک فرآیند فاقد عمومیت و رشد نیافته، به یک پروسه رشد یافته و نظام مند تبدیل شوند. این مسیر پنچ مرحله بلوغ را در بر می گیرد.»
قبل از اینکه این مراحل رشد یافتگی و بلوغ را شرح دهیم، نخست با مقایسه خصوصیات سازمانهای بالغ و نابالغ، بلوغ را در سازمانهای نرم افزاری تعریف خواهیم کرد.
سازمانهای نرم افزاری نابالغ سازمانهای هستند که در آنها فرآیندهای نرم افزاری توسط توسعه دهندگان و مدیران اصلاح می شوند و موفقیت یا شکست پروژه به توانایی های تخصصی و تلاش آنها بستگی دارد.
نتایج این فرایند قابل پیش بینی نیستند. بطور نمونه در سازمانهای نرم افزاری نابالغ، امکان برآورد زمانبندی و هزینه ها ناممکن است و خطاهای نرم افزاری نمی توانند بطور موثر پیش بینی یا اداره شوند و اجزای نرم افزاری قابل استفاده مجدد نیستند.
مشتری با دریافت نرم افزاری با کیفیت پایین و عدم قابلیت نگهداری و با هزینه ای گرانتر از معمول و یا حتی با تاخیر در تحویل به مدت چند ماه یا چند سال دیرتر از برنامه زمانبندی، هزینه ای را برای این عدم بلوغ می پردازد.
یک سازمان نرم افزاری بالغ فاقد فرآیندهای معمول است که در طی آن، فرآیندها در میان پروژه ها به اشتراک گذاشته می شوند. و سرانجام اینکه این نوع از ساختار نرم افزار، زیان زیادی را در بازار رقابتی تحمل خواهد کرد.
یک سازمان نرم افزاری باغ دارای سیستم های کنترلی موردنیاز و فرآیند های بجایی است تا از مدیریت و سنجش موثر فرآیند توسعه نرم افزار اطمینان حاصل کند.
در جهت تصمیم گیری بهینه، هزینه ها، برنامه های زمانبندی و کیفیت، به دقت پیش بینی می شوند. فرآیندهای روزمره ، از همه پروژه هایی که در داخل سازمان، تغییرات را مرتفع می کنند، دنباله روی می کنند. به همین صورت، قبل از تحویل محصول به مشتری، یک فرآیند تست مستند شده، خطاها را به کمترین حد ممکن می رساند. در این حالت کدها قابل نگهداری و زمانهای تعمیر قابل پذیرش می شوند. به طور کلی کیفیت نرم افزار، استحکام آن در طول پروژه هاست و اینکه اجزاء آن قابل استفاده مجدد باشند. و بالاخره یک سازمان نرم افزاری بالغ بهتر می تواند رفت و آمد موثر ارتباطات را سازماندهی کند و در زمینه بازاریابی در مقایسه با سازمانهای نابالغ موفق تر خواهد بود.
پنچ مرحله رشد یافتگی
پنج مرحله تعریف شده رشد یافتگی در CMM عبارتند از:
1) Initial ابتدایی
2) Repeatable تکرارپذیر
3) Defined تعریف شده
4) Managed مدیریت شده
5) Optimized بهینه سازی
در این بخش مراحل فوق توضیح داده می شود. و ویژگی های حوزه های فرآیندهای کلیدی (KPA) آنها شرح داده می شود. حوزه های فرآیندهای کلیدی موضوعاتی را که در یک مرحله از بلوغ بیشترین آدرس دهی به آرشیو داشته اند را تعیین می کند.
سطح ابتدایی بعنوان اولین مرحله از رشدیافتگی بصورت زیر تعریف می شود:
«روال نرم افزار بصورت تک کاره علامتگذاری می شود و به همین روش گاهی بی نظمی ها رفع می شوند. آموده های کمی تعرف شده و موفقیت به تلاش شجاعانه شخصی بستگی دارد.»
در این سطح، شیوه های معمول به ندرت به چشم می خورند و موفقیت صرفا به مهارتها و تلاشهای کلیدی شخصی بستگی دارد و هیچ مکانیزم سازماندهی شده ای برای تضمین موقیت همه پروژه ها وجود ندارد. بیشتر سازمانهای نرم افزاری در این سطح قرار دارند. (SEI) انیستیتو مهندسی نرم افزار، 76 درصد از حوزه های تولید نرم افزار را در این سطح از رشد یافتگی ارزیابی کرده است!
این مرحله از رشد یافتگی با عرصه های حوزه های فرآیندهای کلیدی مرتبط نیست
تکرارپذیری به عنوان دومین سطح از رشد یافتگی بصورت زیر تعریف می شود:
«فرآیندهای اساسی مدیریت پروژه به محوریت قیمت، زمانبندی و عاملیت بنا شده است. برای تکرار موفقیت های سابق پروژه ها با ابزارهای کاربردی مشابه، انضباط لازم در اجرای فرآیند رعایت می شود.»
اساسا دومین مرحله از بلوغ، تکرار موفقیت های سابق در پروژه های نرم افزاری پیشین و تکار نکردن اشتباهات قبلی است.
حوزه های فرآیندهای کلیدی در مرحله دوم عبارتست از:
• مدیریت نیازمندی ها : ساخت فرآیند مشتری مدار به منظور تحقق پیش بینیها و ملزومات نرم افزار، که در قالب تغییرات آنها مدیریت و کنترل می شوند.
• برنامهريزي پروژه : طراحی اهداف و خطوط زمانی در دسترس برای فرآیند توسعه نرم افزار.
• پی گیری و نظارت پروژه : ایجاد مدیریت اشکال یابی به منظور اینکه پیشرفت پروژه به هنگام مواجهه با خطاها قابلیت نمایش و تنظیم داشته باشد.
• مديريت پيمانكاران فرعي نرم افزاری : ایجاد ملاکهای موثر برای انتخاب و مدیریت مقاطعه کاران فرعی نرم افزاری
• تضمین کیفیت نرم افزار : ایجاد فرآیندهای ارزیابی و ممیزی به منظور تضمین با کیفیت محصول نرم افزاری
• مدیریت پیکربندی نرم افزار: ایجاد فرآیندهایی به منظور تضمین نگهداری و مدیریت موثر محصول نرم افزاری در طول دوران زندگی آن.
سطح دوم از CMM نیازمند سازمانی است که روش مدیریت پروژه را اجرا کرده و در تمام مراحل اجرای پروژه ها از این مشی پیروی کند. SEI فقط 15 درصد از حوزه های تولید نرم افزار را در این سطح از رشدیافتگی ارزیابی کرده است.
تعریف شده به عنوان سومین سطح از CMM بصورت زیر توصیف می شود:
«برای سازمان، فعالیت های مهندسی و مدیریت فرآیند نرم افزار، در قالب یک فرآیند نرم افزاری، طبقه بندی، استاندارد سازی و یکپارچه سازی شده است. به منظور توسعه و نگهداری نرم افزار، همه پروژه ها از یک نسخه تایید شده و مناسب برای فرآیند استاندارد سازمانی استفاده می کنند.»
حوزه های فرآیندهای کلیدی در این سطح سازمانی، موضوعات و مباحث مطرح شده در سطح دوم را نیز شامل می شود. حوزه های فرآیندهای کلیدی در سطح سوم عبارتند از:
• تمرکز بر فعالیت های سازمان: ایجاد مسئولیت برای فعالیت های فرآیند به منظور بهبود همه قابلیت های فرآیند های نرم افزاری سازمان
• تعريف فرايندهاي سازمان : ساخت و نگهداری نرم افزار استاندارد فرآیند مهندسی و توسعه سازمان
• برنامه آموزش : ایجاد فرآیندی برای توسعه مهارتها و دانش همه افراد سازمان
• مدیریت نرم افزار یکپارچه : این حوزه فرآیند کلیدی بر روی حوزه های کلیدی فرآیند سطح دوم ساخته شده است تا پروژه نرم افزاری مطابق یک فرآیند نرم افزار استاندارد سازمانی طراحی و مدیریت شود.
• مهندسی محصول نرم افزاری : ایجاد یک فرآیند مهندسی نرم افزار برای تضمین استحکام و اصلاح شیوه های برنامه نویسی سازمان
• هماهنگی درون گروهی : ایجاد فرآیند ارتباطی به منظور بیشینه شدن کارآمدی در داخل سازمان و تضمین اینکه سیستم ها به هنگام یکپارچه شدن، به درستی با هم ارتباط داشته باشند.
• ارزیابی توسط متخصصین : ساخت یکی فرآیند ارزیابی، به منظور برطرف کردن هر چه سریعتر خطاها در چرخه توسعه و پرورش دادن ارتباط و فهم سازمانی.
این سطح از رشد یافتی برای سازمانهای مبتنی بر آرشیو، مشکل و دست نیافتنی است. SEI فقط هشت درصد از حوزه های تولید نرم افزار را در این سطح از رشد یافتگی ارزیابی کرده است. شرکت مایکروسافت در سطح سوم از سطوح CMM طبقه بندی می شود.
مدیریت شده ؛ به عنوان چهارمین سطح از رشد یافتی بصورت زیر تعریف می شود:
«جزئیات مراحل نرم افزار، فرآیند نرم افزاری و کیفیت کلی محصول و فرآیند نرم افزاری، بصورت کمیتی قابل فهم و کنترل باشد»
این سطح از رشدیافتگی برای ایجاد فرآیند توسعه نرم افزار، به حجم بالای اندازه گیری نیاز دارد.
حوزه های فرآیندهای کلیدی در سطح چهارم عبارتند از :
• مدیریت کمی فرآیند: سنجش و کنترل کمیتی نتایج فرآیند نم افزار به منظور شناسایی حوزه های با عملکرد ضعیف.
• مدیریت کیفیت نرم افزار : سنجش کمیتی و دستیابی به اهداف کیفیت تعیین شده در محصولات نرم افزاری
SEI کمتر از یک درصد از حوزه های تولید نرم افزار را دراین سطح از رشدیافتگی ارزیابی کرده است. IBM در این سطح از CMM واقع است.
بهینه سازی : به عنوان پنجمین سطح از CMM بدین صورت تعریف می شود:
«فرآیند پیوسته بهبود بوسیله بازخوردهای کمی از فرآیند و از طریق جهت دهی ایده ها و تکنولوژی های ابتکاری ممکن خواهد بود.»
این سطح از توسعه یافتگی بندرت قابل دستیابی است. بنا بر اعلام SEI در سرتاسر جهان تنها 42 سازمان به سطح 5 در مقیاس CMM دست یافته اند. جالبتر آنکه 25 سازمان از 42 سازمان مذکور در کشور هند مستقر هستند!
حوزه های فرآیندهای کلیدی در این سطح عبارتند از:
پیشگیری از خطاها : تعیین علل بروز خطاها و پیشگیری از رخداد دوباره آنها در آینده.
مدیریت تغییر فن آوری : وارد کردن تکنولوژی های نو در سازمان، به شکل منظم
مدیریت تغییرات فرآیند : فرآیندی برای بهبود دائمی فرآیندهای کلیدی که کیفیت، بهره وری و کارآمدی را تحت تاثیر قرار دهد.
مقاله انگلیسی مرجع
ترجمه: هادی خلیل پور
December 20, 2007 5:16 PM |
لینک ثابت
|
نظرات (0)
|
لینک (0)
مولد کامپایلر Lisa 2.2
Lisa یک کامپایلر – کامپایلر است.
سیستمی که بصورت خودکار از خصیصه های یک زبان مبتنی بر متن وصفی رسمی، مفسر/مترجم تولید می کند.ابزار LISA یک کد منبع موثر پیمایشگر / تجزیه گر / مفسر / مترجم در جاوا ارائه می دهد. قسمت های لغوی و نحوی خصیصه های زبان، از روشهای رسمی شناخته شده ای مانند: RE ها و BNF استفاده کرده است. بخش معنایی بیشتر با مشخصه گرامرها توضیح داده شده است.
شاخص ترین خصیصه های LISA عبارتند از:
• نظر به اینکه LISA با زبان جاوا نوشته شده است، یک پلتفرم مستقل شناخته می شود.
• توسعه دهندگان می توانند در محیط متنی یا ویژوال فعالیت کنند.
• محیط جامع توسعه (IDE) بخوبی توضیح داده شده است بطوریکه کاربران می توانند در جدیدترین زبان تعریف شده، برنامه های خودر را در حال پرواز! تعیین، تولید، کامپایل و اجرا کنند.
• تحلیل گرهای لغوی، نحوی و معنایی می توانند در تایپ های مختلفی بوده و بطور مستقل اجرا شوند. نسخه حاضر از نرم افزار LISA، تجزیه کننده های LL,SLR, LALR, LR و همچنین ارزیابی کننده های Tree – walk، موازی، L-attribute و Katayama را پشتیبانی می کند.
• LISA ارائه های ویژوال از ساختارهای مختلف را حمایت می کند.اعم از: ماشین های خودکار متناهی، BNF ، درخت نحو، گراف وابستگی و ... .
• انیمیشنهای متحرکی از تحلیل نحوی و معنایی نرم افرار را آماده کرده است.
• توسعه زبان افزایشی و مدولار
چند مشخه بودن توارث گرامر
الگوها
مشخصه گرامر نمودگرا
• Help بصورت آنلاین
مقاله فوق در قالب عناوین زیر ترجمه شده است:
مقدمه
مفاهیم
1.1 گرامرهای وصفی
1.2 ارث بری گرامر چندگانه وصفی
1.3 الگوها
زبان تشخیص
2.1 تحلیل لغوی
2.2 تحلیل نحوی
2.3 تحلیل معنایی
2.4 صفات
2.5 تعاریف نقطه قطع
2.6 اعلان
2.7 عملکردها در حوزه های معنایی
اجرا
Screenshots
• Compiling the language
• Automata visualizer
• BNF Viewer
• Syntax tree visualizer
• Evaluator tree visualizer
• DG viewer
• Language Knowledgeable Editor
• Syntax-directed Editors
• Dependency Graph Visitor
مرجع
متن کامل فارسی
متن انگلیسی
ترجمه: هادی خلیل پور
December 20, 2007 3:55 PM |
لینک ثابت
|
نظرات (2)
|
لینک (0)