بسمه‌تعالي فصل سيزدهم الگوهاي طراحي.

Slides:



Advertisements
Similar presentations
Queue theory.
Advertisements

در جامعه، افرادي که موقعيت و مسؤليت خود را مي‌دانند از راحتي و امنيت بيشتري برخوردارند هر کلاس از جامعه، مجموعه‌اي از امکانات و تواناييهاي مجاز برخوردار.
Artificial Intelligent Systems Laboratory 1 تيم‌هاي نرم افزاري فصل 21 درس مهندسي نرم‌افزار 2 دكتر احمد عبداله زاده بارفروش تهيه كننده : پويا جافريان.
طراحي و ساخت سيستم‌هاي تجارت الکترونيک چارچوب و الگوي سازمان‌هاي تجاري.
مديريت پروژه‌هاي فناوري اطلاعات سيستم‌هاي و استانداردهاي مديريت پروژه.
1 آزمايشگاه سيستم های هوشمند ( Domain-specific Architecture.
Computer Programming برنامه سازی کامپيوتر1 مدل های رياضی مهندسی يعنی کاربرد علوم مختلف (رياضی، فيزيک) در حل مسائل کاربردی مدل های رياضی برای پيش بينی رفتار.
برنامه‌ريزي استراتژيک
برنامه‌ريزي استراتژيک پيشرفته چارچوب کلي تجزيه و تحليل راهبردي (استراتژيک) سيستم‌ها.
طراحي و مدل کردن مؤلفه ها فصل 7 معماري نرم افزار هاي بزرگ دانيال مؤذن استاد : دکتر عبدالله زاده.
برنامه‌ريزي استراتژيک پيشرفته مدل و فرآيند کلان برنامه‌ريزي راهبردي سيستم های تجارت الکترونيک.
مهندسی نرم افزار مبتنی بر عامل
ارائه روشي براي شناسايي کاراکترهاي دستنويس، برپايه شبکه LVQ.
برنامه‌ريزي استراتژيک
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي تخصيص منابع.
Amirkabir University of Technology Department of Computer engineering & IT Software Engineering II Unified modeling Language (UML) April 2006 In the Name.
ارائه درس روباتيکز Extended Kalman Filter فريد ملازم استاد مربوطه دکتر شيري دانشگاه امير کبير – دانشکده کامپيوتر و فناوري اطلاعات.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه ارتباط بين component ها.
طراحي و ساخت سيستم‌هاي تجارت الکترونيک ساخت سيستم‌هاي تجارت الکترونيک ECSE.
1 فصل 8 - طراحي زيرسيستم ها برگرفته از کتاب Large-Scale Software Architecture – Jeff Garland, Richard Anthony فرنوش گلشن آزمايشگاه سيستم هاي هوشمند بهار.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه Process and Deployment Design.
1 تدوين راهبرد برای يک برنامه جلب حمايت همه جانبه Mohsen Shams, MD. PhD Candidate in Health Education, School of Public Health, Tehran University of Medical.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
طراحي و ساخت سيستم‌هاي تجارت الکترونيک سيستم‌هاي تجارت الکترونيک (ECS)
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
1 فصل 9 - طراحي ساختار داده و تراکنش ها برگرفته از کتاب Large-Scale Software Architecture – Jeff Garland, Richard Anthony فرنوش گلشن آزمايشگاه سيستم هاي.
1 آزمايشگاه سيستم های هوشمند ( ارزيابي معماري نرم افزار.
مديريت پروژه‌هاي فناوري اطلاعات
فصل 5 - مرور سريع UML برگرفته از کتاب
1 فصل 5 - مرور سريع UML برگرفته از کتاب Large-Scale Software Architecture – Jeff Garland, Richard Anthony افشين لامعی بهار 87.
Artificial Intelligent Systems Laboratory 1 مديريت پروژه فصل 21 درس مهندسي نرم‌افزار 2 دكتر احمد عبداله زاده بارفروش تهيه كننده : پويا جافريان.
ارائه کننده: آلاء شريعتی
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي تخصيص منابع.
اصول و مفاهيم جلب حمايت همه جانبه Mohsen Shams, MD. PhD Candidate in Health Education, School of Public Health, Tehran University of Medical Sciences.
مراحل مختلف اجرای يک برنامه
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي تعيين تقدم و تاخر انجام فعاليت‌هاي پروژه.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
مديريت پروژه‌هاي فناوري اطلاعات فرآيند مديريت پروژه-مرحله برنامه‌ريزي.
Artificial Intelligent Systems Laboratory 1 الگو‌هاي فرايند (Process Patterns) فصل 2 درس مهندسي نرم‌افزار 2 دكتر احمد عبداله زاده بارفروش تهيه كننده :
مديريت پروژه‌هاي فناوري اطلاعات راه‌حل‌هاي مبتني بر فناوري اطلاعات.
سيستم خبره مرکب ( ترکيب پيشرو و پسرو ) زماني که يک فرضيه احتمالي براي جواب داشته باشيم، روش backward مي تواند خيلي کاراتر و مناسبتر باشد. اگر هيچ احتمال.
1 فصل سوم سينماتيك مستقيم. 2 محتواي فصل   تعريف مجموعه فازي   تابع عضويت   نمايش مجموعه هاي فازي   برش آلفا   متغيرهاي زباني   ساخت مجموعه.
Frameworks And Patterns
مديريت پروژه هاي فناوري اطلاعات نويسنده : Jack T. Marchewka ترجمه پاورپوينت فصل سه مترجم : محمد صادق كسلخه ايميل :
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
دوره کارشناسي فناوري اطلاعات و مديريت نيمسال اول
فلوتاسيون (جلسه پنجم) مهدي نصيري سروي.
آشنايي با برنامه نويسي به زبان C++
پردازنده هاي چند هسته اي
تکنیک دیماتل DEMATEL: decision making trial and evaluation laboratory.
تبدیل فوریه (Fourier Transform)
نمايش اعداد در کامپيوتر چهار عمل اصلي
Similarity transformation
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
كارگاه آموزشي معماري نرم‌افزار
سيستمهاي اطلاعات مديريت
مدلسازي تجربي – تخمين پارامتر
هیدرولیک جریان در کانالهای باز
فيلتر كالمن معرفي : فيلتر كالمن تخمين بهينه حالت‌ها است كه براي سيستم‌هاي ديناميكي با اختلال تصادفي در سال 1960 بزاي سيستم‌هاي گسسته و در سال 1961 براي.
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
Ontology and Ontology Generation
مقدمه اي بر مهندسي نيازمنديها
به نام خدا اين فايل راهنما جهت آشنايی کاربران گرامی با پايگاه اطلاعاتی Sciencedirect و نحوه جستجوی اطلاعات در آن تهيه شده است لطفاً اسلايدهای بعد را مشاهده.
آشنايي با نرم افزار.
نرم افزار عملي دوره كارداني كامپيوتر دانشگاه کردستان دانشكده فني
مثال : فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد
روش‌هاي شناسائي و يافتن كلاس‌ها
آزمايشگاه مهندسي نرم افزار
Presentation transcript:

بسمه‌تعالي فصل سيزدهم الگوهاي طراحي

اهداف جلسه بررسی مفاهيم الگوهاي طراحي شناخت کاربردهاي الگوهاي طراحي آشنايی با چند الگوي طراحي آشنايي با ضدالگوها (AntiPattern) معرفي ضدالگوهاي متداول

فهرست مطالب عوامل ايجاد الگوي طراحي ساختارهاي طراحي تکرارشونده مفهوم الگوي طراحي تاريخچه الگوهاي طراحي ساختار الگوي طراحي معرفي چند الگو طراحي ضدالگوها

عوامل ايجاد الگوهاي طراحي روش‌هاي تحليل و طراحي شي‌گرا تاکيد بسياري بر استفاده از نمادها در طراحي دارند براي مستندسازي و ذکر خصوصيات مناسب هستند اما تحليل و طراحي شي‌گرا تنها رسم نمودار نيست نقاشي خوب دليل بر طراحي خوبي نيست! طراحي شي‌گراي خوب نياز به سال‌ها تجربه دارد طراحي به اندازه دانستن گرامر زبان اهميت دارد بيشترين استفاده مجدد در هنگام طراحي اتفاق مي‌افتد مشکلات با تجربه طراحي رفع مي‌شوند

ساختارهاي طراحي تکرار شونده ساختارهاي تکرارشونده سيستم‌هاي شي‌گرا سبب ارتقاي تجريد (Abstraction) انعطاف‌پذيري (Flexibility) واحدبندي (Modularity) ظرافت (Elegance) که حاوي اطلاعات ارزشمند طراحي هستند اما نمي‌توان از اين ساختارها به صورت مستقيم استفاده نمود مسئله اصلي: شنـاسايي، دسته‌بندي و استفـاده از آنهاست

الگوي طراحي تجريدي از ساختار طراحي تکرارشونده است شامل کلاس و/يا اشياء وابستگي‌ها (Dependencies) ساختارها (Structures) تعاملات (Interactions) قراردادها (Conventions) نام‌‌ها و ساختار طراحي را به‌صورت صريح تعيين مي‌کند چکيده‌اي از تجربيات طراحي است

الگوي طراحي (ادامه) مجموعه‌اي از بهترين تجربيات است راه‌حلي نمونه براي مسئله‌اي در زمينه خاص است راهي براي تسهيل ارتباطات بين ذينفعان الگوها پيدا شده‌اند و ابداع نشده‌اند

تاريخچه الگوهاي طراحي 1964- Christopher Alexander کتاب معماري و طراحي شهري بيان نکاتي در مورد ترکيب شکل‌ها زبان الگو راهي براي ساختن سريع

تاريخچه الگوهاي طراحي (ادامه) 1987- Ward Cunningham & Kent Beck تصميم به استفاده از ايده‌هاي الکساندر توسعه پنج الگو براي برنامه‌نويسان مبتدي Smalltalk ارائه مقاله‌اي در اين زمينه در کنفرانس OOPSLA'87

تاريخچه الگوهاي طراحي (ادامه) 1995- Erich Gamma، Richard Helm، Ralph Johnson و John Vlissides طراحي نرم‌افزار ارائه کتاب الگوهاي طراحي

نمونه الگوي طراحي

ساختار الگوي طراحي ساختارهاي متعددي براي بيان الگوهاي طراحي پيشنهاد شده است چهار بخش اصلي هر الگوي طراحي نام الگو مسئله (شامل اجبارهاي مسئله) راه‌حل نتايج و کاربردها

ساختار الگوي طراحي (ادامه) ساختار پيشنهاديAlexander نام زمينه مسئله (اجبارها) راه‌حل (پيکربندي و چگونگي راه‌حل) بيان ارتباط بين زمينه، مسئله و راه‌حل

ساختار الگوي طراحي (ادامه) ساختار پيشنهاديPolti نام عناصر توصيف نمونه‌ها موارد استفاده‌ جزئيات

ساختار الگوي طراحي (ادامه) ساختار پيشنهاديGoF نام طبقه‌بندي منظور اسامي مشابه انگيزه کاربرد ساختار شرکاء همکاري نتايج پياده‌سازي/نمونه کد موارد استفاده الگوهاي مرتبط

ساختار الگوي طراحي (ادامه) نام (Name) بطور خلاصه و موجز کاربرد الگو را نشان مي‌دهد طبقه‌بندي (Classification) طبقه‌بندي براساس کاري که الگو انجام مي‌دهد Creational: بر روي فرآيند ايجاد اشيا و کلاس‌ها تمرکز دارند Structural : بر روي ترکيب کلاس‌ها و اشيا تمرکز دارند Behavioral: بر روي رفتار کلاس‌ها و اشيا و توزيع وظيفه تمرکز دارند حوزه کاربرد الگوها شامل اشياء و کلاس‌ها هستند

ساختار الگوي طراحي (ادامه) Purpose  Patterns Classification Behavioral Structural Creational Interpreter Template Method Adapter Factory Method Class Scope Chain of Responsibility Command Iterator Mediator Memento Flyweight Observer State Strategy Visitor Adapter Bridge Composite Decorator Facade Proxy Abstract Factory Builder Prototype Singleton Object

ساختار الگوي طراحي (ادامه) منظور جمله کوتاهي که جواب به سوالات زير است الگو چه کاري انجام مي‌دهد؟ علت وجودي الگو چيست؟ چه مشکل يا مسئله خاصي را حل مي‌کند؟ نام‌هاي مشابه در صورتي‌که الگو داراي اسامي شناخته شده ديگري است، قيد مي‌شود

ساختار الگوي طراحي (ادامه) انگيزه (Motivation) سناريويي که مشکل طراحي و اينکه چگونه کلاس‌ها و اشياي موجود در الگو مشکل را حل مي‌کنند را نشان مي‌دهد سناريو کمک مي‌کند تا درک بهتري از توصيفاتي مربوط به الگو داشته باشيد کاربردپذيري (Applicability) وضعيتي که الگو مي‌تواند به کار برده شود و نحوة شناسايي اين وضعيت

ساختار الگوي طراحي (ادامه) ساختار (Structure) نمايشي گرافيکي از کلاس‌ها در الگو با استفاده از نمادگذاري OMT (Object Modeling Technique) براي نمايش تعاملات مي‌توانيد از نمودار ترتيبي يا نمودار همکاري استفاده نمائيد شرکاء (Participants) کلاس‌ها و/يا اشيايي که در الگوي طراحي و انجام وظايفش مشارکت مي‌کنند

ساختار الگوي طراحي (ادامه) همکاري (Collaborations) نحوة همکاري شرکاء در انجام وظايف الگوي طراحي نتايج (Consequences) در اين بخش به سوالات ذيل پاسخ گفته مي‌شود چگونه الگو، اهداف مورد نظر خود را برآورده مي‌سازد؟ چه توازن‌ها و نتايجي با به کار بردن الگو بدست مي‌آيد؟ چه جنبه‌هايي از ساختار سيستم مي‌توانند متفاوت باشند؟

ساختار الگوي طراحي (ادامه) پياده‌سازي نکات فني، نقاط ضعف و ديگر نکاتي که بايد در استفاده از الگو مد نظر قرار داد نمونه کد بخش‌هاي از کد الگو به زبان C++ يا Smalltalk استفاده‌هاي شناخته شده نمونه‌هاي از الگو در سيستم‌هاي واقعي الگوهاي مرتبط الگوهاي که ارتباط نزديکي با الگوي طراحي مورد نظر دارند

الگوهاي طراحي - Abstract Factory منظور رابطي براي ايجاد خانواده‌اي از اشياي مرتبط يا وابسته بدون مشخص‌کردن کلاس‌هاي آنها فراهم مي‌کند کاربردپذيري وقتي نمي‌توان ساختار ارتباطي بين گروهي از کلاس‌هاي مرتبط را پيش‌بيني نمود

الگوهاي طراحي - Abstract Factory ساختار

الگوهاي طراحي - Abstract Factory

الگوهاي طراحي - Abstract Factory نتايج  انعطاف‌پذيري  تجريد  توسعه آن دشوار است پياده‌سازي استفاده از پارامترها راهي براي کنترل اندازه رابط است اين الگو در واقع مجموعه‌اي از الگوي Factory Method است

الگوهاي طراحي - Bridge منظور کاربردپذيري براي جداسازي رابط مجرد(منطقي) از پياده‌سازي‌اش (فيزيکي) مورد استفاده قرار مي‌گيرد کاربردپذيري وقتي رابط و پياده‌سازي‌اش بايد با يکديگر متفاوت باشند وقتي نياز به يک رابط واحد براي تعامل با ديگر کلاس‌ها باشد

الگوهاي طراحي - Bridge ساختار Structure

الگوهاي طراحي - Bridge نتايج پياده‌سازي  رابط مجرد و پياده‌سازي از يکديگر مجزا مي‌شوند  پياده‌سازي مي‌تواند مجزا و متغير باشد  رابط بايد به‌گونه‌اي عمومي باشد که همه رابط‌هايي که پياده‌سازي مي‌شوند را حمايت کند پياده‌سازي تنها يک پياده‌ساز بايد وجود داشته باشد ايجاد پياده‌ساز صحيح دشوار است اشتراک پياده‌سازها بايد مد نظر قرار گيرد

الگوهاي طراحي - Composite منظور ترکيب اشيا در ساختاري درختي براي نمايش سلسله مراتب Part-Whole کاربردپذيري وقتي اشيا نياز به ترکيب به‌صورت بازگشتي (Recursive) دارند و تفاوتي بين اشياي ترکيبي و ساده وجود ندارند و اشيا در ساختار مي‌توانند واحد در نظر گرفته شوند

الگوهاي طراحي - Composite ساختار

الگوهاي طراحي - Composite کلاس Graphic شامل مجموعه‌اي از کلاس‌هاي ديگر است که تفاوتي با کلاس اصلي ندارند

الگوهاي طراحي - Composite گره برگ گره ترکيبي CORBA Naming Service

الگوهاي طراحي - Composite نتايج  همساني: بدون در نظر گرفتن پيچيدگي همه اشيا يکسانند  قابليت توسعه: مولفه‌هاي جديد براحتي مي‌توانند افزوده شوند  سربار: سربار تعداد اشياي جديد را کاهش مي‌دهد پياده‌سازي روشي براي شناسايي والدين و فرزندان بايد استفاده شود براي والدين و فرزندان از يک رابط استفاده مي‌شود حذف يک فرزند مسئوليت دارد! (اين فرزند مي‌تواند فرزنداني داشته باشد و سبب ايجاد اشياي يتيم (Orphan) شود)

الگوهاي طراحي - Decorator منظور افزودن وظيفه جديد به يک شي به صورت پويا کاربردپذيري وقتي نياز به افزودن وظيفه جديد به يک شي به صورت پويا، شفاف و بدون تاثير بر ديگر اشيا باشد حذف وظيفه خاصي از يک شي به‌صورت پويا وقتي توسعه کلاس به زيرکلاس‌ها غيرممکن باشد

الگوهاي طراحي - Decorator ساختار

الگوهاي طراحي - Decorator نتايج  وظايف مي‌توانند در زمان اجرا افزوده/حذف شوند  موجب کاهش رشد ساختار سلسله‌مراتبي مي‌شود  سبب انسداد رابط مي‌شود  ترکيب decorator ها بسيار دشوار است پياده‌سازي مطابقت رابط‌ decorator ها بايد در نظر گرفته شود براي decorator از کلاسي سبک و مجرد استفاده نمائيد در صورتي‌که نياز به افزودن يک وظيفه داريد، نياز به تعريف کلاس براي decorator نداريد

الگوهاي طراحي - Mediator منظور تعريف شيي که چگونگي تعامل بين اشياء ديگر را پنهان سازد کاربردپذيري وقتي تعدادي شي با يکديگر به‌صورت خوش‌تعريف تعامل دارند اما تعامل آنها پيچيده است وقتي استفاده مجدد يک شي به‌خاطر تعامل زياد آن با ديگر اشيا دشوار باشد وقتي رفتاري بين چند کلاس توزيع شده است و بايد بدون استفاده از زيرکلاس‌ها سفارشي شود

الگوهاي طراحي - Mediator ساختار

الگوهاي طراحي - Mediator

الگوهاي طراحي - Mediator نتايج  تعداد زيرکلاس‌ها را کاهش مي‌دهد  اتصال سست بين کلاس‌هاي مجاور را افزايش مي‌دهد  ارتباط چند به چند را به ارتباط يک به يک تبديل مي‌کند  يک کنترل‌کننده مرکزي ايجاد مي‌کند پياده‌سازي نيازي به تعريف کلاس مجرد Mediator نيست زيرا کلاس‌هاي همکار مي‌توانند با يک Mediator کار کنند

الگوهاي طراحي - Observer منظور تعريف يک رابطه يک به چند بين اشياء بصورتي‌که وقتي يک شي حالتش را تغيير مي‌دهد، بقيه اشيا مطلع شده و بروز شوند کاربردپذيري وقتي تجريدي داراي دو جنبه بوده و يکي به ديگري وابسته باشد وقتي تغيير در يک شي سبب تغيير ديگر اشيا مي‌شود و نمي‌دانيد چه تعداد شي ديگر نياز به تغيير دارند وقتي يک شي نياز به مطلع ساختن شي ديگر دارد و در مورد چگونگي آن شي اطلاعي ندارد

الگوهاي طراحي - Observer ساختار

الگوهاي طراحي - Observer مثال

الگوهاي طراحي - Observer نتايج  واحدبندي: Subject و Observerها مي‌توانند مستقل باشند  قابليت توسعه: مي‌توان هر تعداد Observer تعريف نمود  قابليت سفارشي شدن: Observerهاي متفاوت، ديدهاي مختلف را نمايش مي‌دهند  بروزرساني غيرمنتظره: Observerها اطلاعي از يکديگر ندارند  سربار بروزرساني: بروزرساني سربار زيادي ايجاد مي‌نمايد

الگوهاي طراحي - Observer پياده‌سازي نگاشت Subjectها به Observerهاي متناظرشان راهي ساده‌ براي در جريان بودن Subject از بروزرساني Observer است ارجاع معلق به Subjectهاي حذف شده بايد مورد توجه قرار گيرند از پروتکل‌هاي بروزرساني ويژه Observer (مدل‌هاي push and pull) اجتناب نمائيد

ضدالگوها (AntiPatterns) ايده ضدالگوها از آنجا ناشي شده است که اغلب کارهاي منتشر در مهندسي نرم‌افزار به راه‌حل‌هاي سازنده و موثر تمرکز دارد ضدالگوها بر راه‌حل‌هاي منفي و ناموفق تمرکز دارند ضدالگو مجموعه‌اي از راه‌حل‌هاي متداول که براي حل يک مسئله اتفاق مي‌افتند و بطورقطعي نتايج منفي يا ناموفق توليد نموده‌اند را توصيف مي‌نمايد

ضدالگوها (ادامه) همانطور که نياز به دانستن الگوها در زمينه خاص وجود دارد، دانستن وجود يا عدم وجود ضدالگو مي‌تواند به توسعه بهتر نرم‌افزار کمک کند بسياري از مهندسان نرم‌افزار مي‌خواهند بدانند «آيا راهي که مي‌روند به شکست منجر مي‌شود»

مثالي از ضدالگوها در سطح مديريت پروژه پنج پروژه از شش پروژه به شکست منجر شده‌اند! يک سوم پروژه‌هاي نرم‌افزاري رها شده‌اند! بودجه و زمان واقعي انجام پروژه بيش از دو برابر از آنچه تخمين زده مي‌شود، است!!!

مثالي از ضدالگوها (ادامه) بحث امروز فناوري مولفه‌ها اشيا توزيع‌شده معماري سرويس‌گرا استفاده مجدد از نرم‌افزار عامل‌هاي نرم‌افزار (Agents) رابط Web کار ديروز برنامه‌نويسي ساختاريافته طراحي بالا به پائين معماري Client/Server توليد کد از مدل

رابطه بين الگو و ضدالگو اغلب الگوهاي طراحي منجر به ضدالگو مي‌شوند برنامه‌نويسي رويه‌اي در دهه 60 و 70 يک الگوي طراحي بود، اما در حال حاضر ضدالگو است شي‌گرايي در حال حاضر يک الگو است، اما در حال تبديل به ضدالگو است

رابطه بين الگو و ضدالگو (ادامه) نشانه‌ها و نتايج راه‌حل ضدالگو راه‌حل جمع‌بندي شده زمينه و علل مزايا راه‌حل‌هاي مرتبط نتايج زمينه و اجبارها مشکل راه‌حل مزايا راه‌حل‌هاي مرتبط نتايج زمينه در زمان تغيير مي‌کند

نمونه ضدالگوها The Blob Continuous obsolescence Lava Flow Ambiguous viewpoint Functional decomposition Poltergeists Boat Anchor Golden Hammer Dead End Spaghetti Code Input Kludge Walking through a Minefield Cut-and-Paste Programming Mushroom Management

طبقه‌‌بندي ضدالگوها ضدالگوهاي توسعه ضدالگوهاي معماري ضدالگوهاي مديريتي

ضدالگوهاي توسعه - Lava Flow مشکل استفاده از کد قديمي و اطلاعات طراحي فراموش‌شده در طراحي دايم‌التغيير نمونه طراح ارشد استعفا نموده است طراح جديد روش بهتري ارائه نموده است، اما بدليل عدم آشنايي با کد نمي‌تواند آنها را حذف نمايد

ضدالگوهاي توسعه - Lava Flow علل توزيع کنترل‌نشده کدهاي اتمام نشده يا اصلاح نشده قسمت‌ها و مسيرهايي که براي تست در کد قرار داده شده بودند، حذف نشدند شکاف در معماري بخاطر استفاده از فناوري قديمي شکاف در معماري وقتي بوجود مي‌آيد که معماري اوليه پس از شروع توسعه دچار تغييرات شگرف شود فقدان معماري فقدان مديريت پيکربندي

ضدالگوهاي توسعه - Lava Flow راه‌حل استفاده از سيستم مديريت پيکربندي سبب مي‌شود که کدهاي کهنه شناسايي و حذف شوند تکميل‌نمودن طراحي (قديمي) استفاده از يک معماري سالم براي پيش‌بردن مراحل توسعه استفاده از رابط در سطح سيستم که خوش-تعريف، پايا و بدرستي مستند شده باشد

ضدالگوهاي توسعه - Blob مشکل استفاده از سبک طراحي رويه‌اي منجر به ايجاد كلاسي با مسئوليت بسيار زياد مي‌شود بقيه كلاس‌ها تنها داده نگهداري مي‌نمايند اين کلاس همان کلاسي است که قلب معماري خواهد بود اين کلاس پردازش و ديگر داده‌ها را انحصاري مي‌نمايد

ضدالگوهاي توسعه - Blob علل فقدان ديدگاه معماري شي‌گرايي عدم وجود التزام به معماري طراح رويه‌اي معمار ارشد است عدم تمايل توسعه‌دهندگان در طراحي کلاس‌هاي جديد و كارآمد در پروژه‌هاي تکراري افراد سعي مي‌کنند کار خود را افزايش ندهند و ترجيح مي‌دهند از کلاس‌هاي قديمي‌تر استفاده نمايند، بدون اينکه نياز به نوآوري داشته باشند

ضدالگوهاي توسعه - Blob راه‌حل توزيع مجدد وظيفه‌مندي جداسازي اثر تغييرات تعيين يا طبقه‌بندي خصوصيات و عمليات حذف «ارتباطات بسيار دور»، زائد يا غيرمستقيم حذف تمام ارتباطات موقت

پرسش و پاسخ