واضح آرشیو وب فارسی:پی سی سیتی: كشورهاي ضعيف وقتي مي خواهند تكنولوژي ساخت يك محصول پيشرفته را به دست آورند ، از مجموعه روش هايي استفاده مي كنند كه تحت نام دانش مهندسي معكوس دسته بندي مي شوند. مثلا اگر بخواهند دانش ساخت و توليد يك مدل تلويزيون ديجيتالي جديد را پيدا كنند ، ابتدا با حسابگري و دقت بي نظير از تك تك اجزاي تلويزيون اطلاعات برداري مي كنند و به تدريج شروع به دمونتاژ يا باز كردن تك تك واحدها و نهايتا تك تك عناصر سازنده واحدها مي كنند و از اين مسير و با كمك آزمايشات متعدد سعي مي كنند مسير طي شده توسط سازنده اصلي براي رسيدن به اين محصول پيشرفته ( در مثال ما تلويزيون ديجيتالي) را كشف كنند.
http://cdtakcd.com/pic/konkoor/17965-2008-5-3-12-3-.jpg
http://up.iranblog.com/images/ihv16hljn756y81alf2t.gif
Reverse Engineering
بنا به تغییر یه سری سیستمها و نا اشنایی اکثر قشر تحصیل کرده بعضا فرهیخته با مقوله پیش پا افتاده مهندسی معکوس که در رفتار بهداشت و مدیریت هنجاراجنماعی هم کار امد هست عمومی کردن اطلاعاتی در این زمینه هر چند سطحی رو لازم دیده و در زیر خروجی اون رو میبینیم
مهندسی معکوس
فرایند اکتشاف فن آوریهای بکار رفته در یک دستگاه، شی و یا سیستم از طریق تحلیل ساختار، عملکرد و وظیفه آن میباشد. معمولاً از این فرایند برای دست یابی به (برای مثال یک دستگاه مکانیکی، قطعه الکترونیکی و یا برنامه نرمافزاری) و تحلیل جزییات نحوه عملکرد آن در نگهداری یا ساخت یک دستگاه یا برنامه مشابه استفاده میشود.
حاصل این فرایند مشابه کپی کردن یک چیز از روی اصل آن میباشد.
درک سیستم نرمافزاری بر هر نوع تغییر مقدم است. فرآیند درک، مقدار زیادی از کل زمان صرف شده را در اِعمال تغییر میگیرد. نگهدارندگان دلایلی از جمله مستندات ناصحیح یا قدیمی، نبود مستندات، پیچیدگی سیستم و عدم شناخت کافی از قلمرو را علت فقدان درک صحیح از سیستم میدانند. راه تسهیل این مسایل، خلاصه کردن اطلاعات مربوط به سیستم (مثل تبین مشخصات و طرح) از طریق کد منبع است، بهشکلی که درک آنرا بالا برد.مهندسی معکوس تکنیکی است که میتوان از آن برای این کار استفاده مهندسی معکوس به تنهایی منجر به تغییر در برنامه نمیشود، بلکه فقط راه را برای اجرای آسانتر تغییراتِ مطلوب هموار مینماید.
تغییرات با استفاده از فنونی چون مهندسی پیشرو، بازسازی، و مهندسی مجدد پیادهسازی میشوند.
هدف از مهندسی معکوس تسهیل در اِعمال تغییر از طریق فهمیدن سیستم نرمافزاری با توجه به ماهیت کار، چگونگی کار و نمایش معماری آن است. بهعنوان اهداف پیگیریِ این مقصود میتوان به ترمیم اطلاعات از دست رفته، تسهیل جابهجایی بین بسترها، بهبود و (یا) تهیهٔ مستندات جدید، استخراج عناصر قابل استفادهٔ مجدد، کاهش تلاش برای نگهداری، مقابله با پیچیدگی، کشف عوارض جانبی، کمک به انتقال به محیط CASE و ایجاد محصولات مشابه یا رقابتی اشاره کرد. از دیگر مزایای مهندسی معکوس کاهش هزینهها و سریع آماده شدن نرم افزار است.
گر سابقه صنعت و چگونگی رشد آن در کشورهای جنوب شرقی آسیا را مورد مطالعه قرار دهیم به این مطلب خواهیم رسید که در کمتر مواردی این کشورها دارای ابداعات فن آوری بوده اند و تقریبا در تمامی موارد کشورهای غربی (آمریکا و اروپا) پیشرو بوده اند. پس چه عاملی باعث این رشد شگفت آور و فنی در کشورهای خاور دور گردیده است ؟
در این نوشتار یه یکی از راهکارهای این کشورها در رسیدن به این سطح از دانش فنی می پردازیم .
در صورتی که به طور خاص کشور ژاپن را زیر نظر بگیریم، خواهیم دید که تقریبا تمامی مردم دنیا از نظر کیفیت محصولات آنها را تحسین می کنند ، ولی به آنها ایراد می گیرند که با کپی برداری از روی محصولات دیگران به این موفقیت دست یافته اند.
این بخش اگر هم که درست باشد و در صورتی که کپی برداری راهی مطمئن برای رسیدن به هدف باشد چه مانعی دارد که این کار انجام شود. این مورد ، به خصوص در باره کشورهای در حال توسعه و یا جهان سوم با توجه به شکاف عمیق فن آوری بین این کشورهای و کشورهای پیشرفته دنیا ، امری حیاتی به شمار می رود و این کشورها باید همان شیوه را پیش بگیرند ( البته در قالب مقتضیات زمان و مکان و سایر محدودیت ها ). به عنوان نمونه ، قسمتی از تاریخچه صنعت خودرو و آغاز تولید آن در ژاپن را مورد بررسی قرار می دهیم :
تولید انبوه خودرو در ژاپن قبل از جنگ جهانی دوم و در سال 1920 بوسیله کارخانه های " ایشی کاواجیما " آغاز شد که مدل ژاپنی فورد آمریکایی را کپی کرده و به شکل انبوه به بازار عرضه نمود .
همچنین شورلت ژاپنی AE جزو اولین خودروهای کپی شده آمریکایی توسط ژاپنی ها بود که به تعداد زیاد تولید می شد. سپس با تلاش فراوانی که انجام شد ( آنهم در شرایط بحرانی ژاپن در آن دوره ) مهم ترین کارخانه خودروسازی ژاپن یعنی "تویوتا" در سال 1932 فعالیت خود را با ساخت خودرویی با موتور " کرایسلر " آغاز نمودو در سال 1934 نوع دیگری از خودرو را با موتور " شورلت " ساخته و وارد بازار نموده و از سال 1936 ، اولین تلاشها برای ساخت خودرویی تمام ژاپنی آغاز شد.البته تا مدت ها ژاپنی ها مشغول کپی برداری از اتومبیل ها ی آمریکایی و اروپایی بودند.
آنها خودروی پاکارد و بیوک آمریکایی و رولزرویس ، مرسدس بنز و فیات اروپایی را نیز تولید کردند که همین تولیدها زمینه ساز گسترش فعالیت خودروسازی ژاپن شد و سرانجام در دهه 1960 پس از سعی و کوشش فراوان اولین اتومبیل تمام ژاپنی که دارای استاندارد جهانی هم بود ساخته و به بازار عرضه شد.
در تمامی مطالب فوق رد پای یک شگرد خاص و بسیار مفید به چشم می خورد که " مهندسی معکوس" ( Reverse engineering ) نام دارد. مهندسی معکوس روشی آگاهانه برای دستیابی به فن آوری حاضر و محصولات موجود است . در این روش متخصصین رشته های مختلف علوم پایه و کاربردی از قبیل مکانیک ، فیزیک و اپتیک ، مکاترونیک ، شیمی پلیمر، متالورژی، الکترونیک ، کامپیوتر و … جهت شناخت کامل نحوه عملکرد یک محصول که الگوی فن آوری مذکور می باشد، گروه های تخصصی را ایجاد می کنند و با تجهیزات پیشرفته و دستگاههای دقیق آزمایشگاهی به همراه سازماندهی مناسب تشکیلات تحقیقاتی و توسعه ( R&D ) سعی در بدست آوردن مدارک و نقشه ها ی طراحی محصول فوق دارند تا پس از مراحل نمونه سازی (Prototyping ) و در صورت لزوم ساخت نیمه صنعتی (Pilot plant ) تولید محصول را طبق استاندارد فنی محصول الگو آغاز کنند.
C0de enginnering
مهندسي معكوس به معني بدست آوردن سطح بالايي از نمايش برنامهها و سيستمهاي نرمافزاري است. معمولاً مهندسي نرمافزار بوسيلة يك نمايش سطح پايين از يك سيستم (مثل مقادير باينري، كدهاي ساده، و يا اجراهاي قدم به قدم ) شروع ميشود و سعي در بدست آوردن نمايش بهتر از موارد مطروحه را دارد. بعنوان مثال بدست آوردن سورس برنامه، نماهايي از معماري، يا use caseها و ترتيب اجراي آنها در يك سيستم نمونهاي از اين موارد است.
روشهاي مهندسي معكوس و تكنولوژي نقشي مهمي در بسياري از وظايف مهندسي نرمافزار ايفا ميكنند. ميتوان اداراك بهتر نرمافزاري، مهاجرت سيستمها رو به نسلهاي جديد و تكامل نرمافزار را نمونههايي از كاربردهاي مفيد مهندسي معكوس ناميد . در تعريفي ديگر مهندسي معكوس تفهيم يك سيستم از شناسايي اجزاء يا مصنوعات سيستم كه موجب يافتن روابط ميان آنها و ايجاد اجزاء انتزاعي از اطلاعات يك سيستم ميشود را گويند. البته بايد بخاطر داشته باشيم كه هدف مهندسي معكوس تغيير اهداف سيستم به سمتي ديگر نميباشد .
تعريفي ديگر از مهندسي معكوس داريم كه مهندسي معكوس عبارت است از توانايي گرفتن اطلاعات از كد منبع و ايجاد يا ارتقاء مدل سيستم در زبان برنامهنويسي مورد نظر تيم مهندسي معكوس؛ يكي از موانع موجود بر سر راه پروژههاي علم فناوري اطلاعات سازگار نگاه داشتن مدل آبجت با كد است. با تغيير نيازها، تغيير مستقيم كد ميتواند وسوسهانگيز باشد، تا اينكه مدل را تغيير داده شود و سپس كد تغيير يافته را از مدل سيستم توليد نمائيم. مهندسي معكوس به ما امكان ميدهد تا هميشه مدل سيستم را با كد، همسان نگاه داريم
البته تعاريفي كه در اينجا مطرح گرديد تعاريف مثبتي از مسئلة مهندسي معكوس نرمافزار را مطرح كردهاند. در اينجا ما نيز يكي ديگر از كاربردهاي مهندسي معكوس كه بوسيلة سارقان نرمافزار بكار برده ميشود را ارائه ميدهيم. سارقان نرمافزار با در دست داشتن سيستم نرمافزاري توليد شده و اجراي فرآيندهاي مهندسي معكوس بر روي آنها به كدهاي سيستم و تمامي اجزاء آن خواهند رسيد و به تغيير آنها ميپردازند.
از جملة اين تغييرات ميتوان به حذف قفلهاي نرمافزاري، تغيير عناوين و نشانهاي مالكين سيستم به عناوين سارقان نرمافزار، تغيير روند اجراي سيستم طبق خواستة سارقان و مواردي از اين قبيل اشاره نمود.
مهندسي معكوس سيستمهاي نرمافزاري بزرگ به علت حجم بزرگ و پيچيدگيهاي آنها مشكل است. هرچند كه اين امر پيشنيازي براي نگهداري، مهندسي مجدد، و تكامل نرمافزار ميباشد. چيكوفسكي مهندسي معكوس را چنين تعريف ميكند:« فرآيند تجزية يك سيستم براي شناسايي اجزاء سيستم و روابط ميان آنها و ايجاد نمايشهايي از سيستم در شكلي ديگر يا در يك سطح بالاتر از اجزاء انتزاعي آن است». نگهداري و توسعه دادن سيستمهاي نرمافزاري امروزي به چند دليل مشكل ميباشد. از جمله اين موارد بالا بردن سرعت تغيير و تحول كار توليدكنندگان� � افزايش اندازه و پيچيدگي سيستمهاي نرمافزاري، و تغيير احتياجات ثابت سيستمهاي نرمافزاري ميباشد.
بعنوان مثال سيستمهاي قديمي بزرگ، كامل و متشكل از سيستمهاي نرمافزاري پيچيدهاي هستند كه نتيجة يك سرمايهگذاري بلند مدت توسط يك شركت و بيشتر به همين دليل نگهداري و پشتيباني شدهاند پس ملزومات جديد ميبايست اتمام گشته و سرمايهگذاري شركت بايد بازگردد.
پارنِس تخمين زده است كه بيشتر سيستمهاي قديمي از مشكلات متنوعي مانند اينكه توليدكنندگان اصلي ممكن است تا مدت زيادي در دسترس نباشند، روشهاي پيشبرد منسوخ و يا زبانهاي قديمي، و يا مستندسازيها ي گمشده و يا غيركافي و منسوخ ميباشند است
دلايل جدا بودن از دشواريهاي تكنيكي و گران بودن نگهداري و تكامل بعضي از سيستمها بدين ترتيب است: سامرويل و دويس تخمين زده است كه هزينة حسابهاي نگهداري نرمافزار 50 تا 75 درصد از كل هزينة يك سيستم نرمافزاري است. بازنويسي اين سيستمها از روي چكنويس هميشه مسئلهدار بوده است زيرا اين قضيه حجم بزرگي از زمان، پول و منابع انساني را نياز دارد
از زماني كه سيستمهاي قديمي به سمت حجيم شدن توسط هزاران خط كد نويسي بدليل وجود مستندسازيها ي ناقص رفته است، نياز به راهنماييهاي خاصي كه در فهميدن و رفع نقص نرمافزار كمك كند احساس ميشود.
تمركز ما بر روي سيستمهاي شئگرا قديمي بوده كه اساساً بدليل وجود بسياري سيستم متفاوت كه با اين روش نوشته شدهاند و بدليل اينكه عمر مسبب تغيير قسمتي از يك سيستم نرمافزاري در سيستمهاي قديمي نميشود، اما سرعت در هر كدام توسعه و تغيير يافته است
Sourc: IsoMet.Org , knowClub.net , w3school.com
این صفحه را در گوگل محبوب کنید
[ارسال شده از: پی سی سیتی]
[تعداد بازديد از اين مطلب: 770]