Frameworks And Patterns

Slides:



Advertisements
Similar presentations
18-1 Verifying Object Behavior and Collaboration Role playing – the act of simulating object behavior and collaboration by acting out an object’s behaviors.
Advertisements

Design Patterns Copyright © Vyacheslav Mukhortov, Nikita Nyanchuk-Tatarskiy, Copyright © INTEKS LLC,
Plab – Tirgul 12 Design Patterns
2 Object-Oriented Analysis and Design with the Unified Process Objectives  Explain how statecharts can be used to describe system behaviors  Use statecharts.
Chapter 6: Using Design Patterns
IEG3080 Tutorial 7 Prepared by Ryan.
Design Patterns CS is not simply about programming
Lecturer: Dr. AJ Bieszczad Chapter 66-1 Object-Oriented analysis and design Special nature of OO development Use cases Design with UML OO system design.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Spring 2010CS 2251 Design Patterns. Spring 2010CS 2252 What is a Design Pattern? "a general reusable solution to a commonly occurring problem in software.
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
Reuse Activities Selecting Design Patterns and Components
Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Vrije Universiteit amsterdamPostacademische Cursus Informatie Technologie Idioms and Patterns polymorphism -- inheritance and delegation idioms -- realizing.
OO Frameworks Department of Computer Science Kent State University.
Singleton Christopher Chiaverini Software Design & Documentation September 18, 2003.
Design Patterns.
Design patterns. What is a design pattern? Christopher Alexander: «The pattern describes a problem which again and again occurs in the work, as well as.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 6: Using Design Patterns 1.
Abstract Factory Design Pattern making abstract things.
DaveAndAl.net Do Application Design Patterns Make Sense in ASP.NET? Alex Homer You may like to write these down now...
SOEN 6011 Software Engineering Processes Section SS Fall 2007 Dr Greg Butler
Patterns in programming 1. What are patterns? “A design pattern is a general, reusable solution to a commonly occurring problem in software. A design.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
Chapter 17 GRASP: Designing Objects with Responsibilities. 1CS6359 Fall 2011 John Cole.
18 April 2005CSci 210 Spring Design Patterns 1 CSci 210.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 6: Using Design Patterns.
Chapter 38 Persistence Framework with Patterns 1CS6359 Fall 2011 John Cole.
CSE 403 Lecture 14 Design Patterns. Today’s educational objective Understand the basics of design patterns Be able to distinguish them from design approaches.
Patterns COM379 University of Sunderland James Malone.
ECE450S – Software Engineering II
Patterns in programming1. 2 What are patterns? Answers to common design problems. A language used by developers –To discuss answers to design problems.
Introduction to Design Patterns Part 1. © Lethbridge/Laganière 2001 Chapter 6: Using design patterns2 Patterns - Architectural Architectural Patterns:
CS 4233 Review Feb February Review2 Outline  Previous Business – My.wpi.edu contains all grades to date for course – Review and contact.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 6: Using Design Patterns.
Design Patterns Software Engineering CS 561. Last Time Introduced design patterns Abstraction-Occurrence General Hierarchy Player-Role.
1 Chapter 5:Design Patterns. 2 What are design pattern?  Schematic description of design solution to recurring problems in software design and,  Reusable.
Elaboration Iteration 3 – Part 3 - Persistence Framework -
Proxy Pattern defined The Proxy Pattern provides a surrogate or placeholder for another object to control access to it by creating a representative object.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
Lecture 21: Component-Based Software Engineering
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Broker Design Patterns: Adapters and Proxy.
Software Design and Architecture Muhammad Nasir Structural Design Patterns
Patterns in programming
1/23/2018 Design Patterns David Talby.
GRASP – Designing Objects with Responsibilities
Design Patterns: MORE Examples
Software Design Refinement Using Design Patterns
Chapter 10 Design Patterns.
Chapter 5:Design Patterns
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Chapter 11 Object-Oriented Design
OO Methodology OO Architecture.
Object-Oriented Programming
Facade Pattern Jim Fawcett CSE776 – Design Patterns Summer 2010
Chapter 6: Using Design Patterns
Introduction to Design Patterns Part 1
Informatics 122 Software Design II
Object-Oriented Design
Software Design Lecture : 14.
Operating Systems : Overview
Prof. Leonardo Mostarda University of Camerino
Informatics 122 Software Design II
Chapter 8, Design Patterns Introduction
Chapter 6: Architectural Design
Presentation transcript:

Frameworks And Patterns آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

بالا بردن قابليت استفاده مجدد (Reuse) هدف اصلي مهندسي نرم افزار استفاده مجدد از طراحي و محصولات مرتبط است: چارچوب ها (Frameworks) الگوها (Patterns) آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) Framework چيست؟ يک Domain specific skeleton شامل: Plug-ins points or hooks: براي افزودن و يا اتصال برنامه و اجزاي مختلف توسط طراح. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

تعريف framework از ديدگاه OO براساس Gang-of-Four يک framework عبارت است از مجموعه اي از class هايي که با ترکيب و کار در کنار هم، يک طراحي با قابليت استفاده مجدد براي يک کلاس خاص از نرم افزار ايجاد مي کنند. (set of cooperating classes that make up a reusable design for a specific class of software.) مثال: طراحي يک کامپايلر آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

مزاياي استفاده از frameworkها استفاده از application framework هزينه تشخيص و تعيين ساختار و روابط متقابل (interrelationship) ميان اجزاي آن را کاهش مي دهد. Framework ها براي طراحي هاي موجود امکان گسترش پذيري (Extensibility) را مهيا مي کنند. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

دسته بندي (Classification) framework ها زيرساختي (Infrastructure frameworks) با هدف ساده سازي فرايند توليد نرم افزار ميان افزاري (Middleware framework) با هدف يکپارچه سازي برنامه هاي کاربردي موجود. Enterprise application frameworks با هدف استفاده در کاربردهاي کسب و کار آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

يک الگو (pattern) چيست؟ يک abstraction قابل تشخيص است که در موقعيت ها و برنامه هاي کاربردي مختلف تکرار شده و متناوبا استفاده مي شود. اين موقعيت مي تواند مربوط به ساختار (Structure) و يا رفتار (behavior) نرم افزار باشد. برنامه هاي کاربردي که از الگو هاي استفاده مي کنند: Architecture of building, towns, road works, dams etc Manufacturing: metal and plastic die casting and moulding Drawings Textiles آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) تعريف الگوها يک طرح کلي (outline) از يک راه حل با قابليت استفاده مجدد براي يک مسئله کلي است. الگوي طراحي (design patterns): ايجاد templateهايي براي تسهيل و تسريع فرايند طراحي نرم افزار. OO: يک الگوي طراحي مجموعه اي از کلاس هايي است که با يکديگر تعامل (Interacting) دارند و با customize کردن آن مي توان يک طراحي مخصوص را ايجاد نمود. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

الگوهاي طراحي در مقايسه با Framework ها هر دو ابزاري براي استفاده مجدد (reuse) در فرايند هاي توليد نرم افزار RAD هستند. الگوهاي طراحي در مقايسه با frameworkها کلي تر و انتزاعي تر (abstract) هستند. يک framework داراي معماري بزرگتري است و ممکن است در معماري خود از چندين الگوي طراحي استفاده کند. Framework يک پياده سازي واقعي (virtual realization) از يک يا گروهي از الگوهاي طراحي است. در واقع framework داراي ويژگي هاي مخصوص بيشتري نسبت به الگوهاي طراحي است. (it is more specific than a pattern) Framework امکان استفاده مجدد از طراحي هاي مشخص (Concrete)، الگوريتم ها و پياده سازي ها در يک زبان برنامه نويسي معين يا محيط OS را فراهم مي آورد. الگوها روي طراحي هاي abstract و ترکيب پيشنهادي از کلاس ها تمرکز مي کند که مي تواند توسط تيم طراحي پياده شود. يک framework از الگوهاي طراحي براي کامل کردن طراحي و پياده سازي تکه هاي پياده سازي نشده خود استفاده مي کند. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

رابطه الگوهاي طراحي با framework آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) چرا الگوهاي طراحي مفيد هستند؟ راه حلي براي مسايلي که در گذشته به بهترين راه حل شده اند، ارائه مي دهد. الگوها ساختارها و روش (methodology) هاي کلي ايجاد مي کنند. با استفاده مجدد از طراحي ها، امکان طراحي نکردن يک راه حل را از ابتدا مهيا مي سازد. به راحتي امکان سازگاري (adaptable) با نيازمندي هاي مخصوص نرم افزار هاي مختلف را دارد. الگوها خلاصه اي از راه حل هايي که در گذشته به خوبي کار کرده اند، ارائه مي دهد. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

الگوهاي طراحي Design Patterns آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

چگونه از الگوهاي طراحي استفاده کنيم؟ تعريف مسئله شناسايي و بررسي زمينه، سابقه (context) و راه حل هاي مسئله. تعيين بهترين راه حل از بين راه حل هاي موجود. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) سطوح الگوها الگوهاي معماري (Architectural patterns) الگوهاي طراحي (Design patterns) الگوهاي زبان (Language related idioms) آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

الگوهاي معماري (Architectural patterns) يک ترکيب ساختاري (Structural Arrangement) براي سيستم نرم افزاري شامل: زيرسيستم ها و مشخصات هر يک. قوانين ارتباطي بين زير سيستم ها آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

الگوهاي طراحي (Design Patterns) ارائه شده پس از سطح معماري استفاده در طراحي زيرسيستم ها، بسته ها (packages) و اجزا (components). ارائه راه حل هايي براي مشکلات معمول و تکراري. مديريت حافظه مديرت اشاره گرها. synchronization and mutual exclusion جلوگيري از بن بست (deadlock avoidance) نمايش با استفاده از UML Objects، Classes Inheritance، Aggregation Uses، extends، relationship آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) Idioms پايين ترين سطح الگوها که مربوط به يک زبان برنامه نويسي خاص مي شود. يک Idiom چگونگي پياده سازي بخش خاصي را با استفاده از يک زبان توصيف مي کند. تخصيص حافظه (Memory allocation) De-allocation ناحيه هاي بحراني (Critical regions) ... آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

انواع الگوها و مثال هايي از هريک Behavioral Observer Player-role Immutable Read-Only Architectural Multi-Layer Client-Server Broker Pipe-and-Filter Model-View-Controller Creational Abstract-factory Singleton Abstraction-occurrence Structural General hierarchy Adaptor Façade Proxy Delegation آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

Creational: Abstract-Factory زمينه: واسطي (Interface) براي عملياتي که يک abstract product object ايجاد مي کند، مهيا مي سازد. راه حل: Concrete Factory subclass creates concrete objects آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

Creational: Singleton زمينه: اطمينان مي دهد که تنها يک موجوديت (Instance) از يک کلاس وجود دارد. راه حل: يک سازنده خصوصي (Private Constructor) وجود دارد که اطمينان مي دهد هيچ کلاس ديگري قادر به ايجاد مجدد (Recreate) يک موجوديت ديگر نيست. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

Creational: Abstraction-Occurrence زمينه: پروازهاي هوايي با يک شماره ولي در روزهاي متفاوت و با خدمه و مسافران متفاوت. راه حل: ايجاد يک کلاس abstract شامل اطلاعات مشترک. ايجاد يک کلاس occurrence. (ايجاد رابطه 1:n) آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

Structural: General-Hierarchy زمينه: ارتباط بين کارمندان و مديران راه حل: ايجاد يک abstract node class که نشان دهنده ويژگي هاي مشترک است. ايجاد حداقل دو subclass، SuperiorNode و Non-SuperiorNode. آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) Singleton Pattern وقتي مي خواهيد که از يک کلاس تنها يک instance در کل برنامه وجود داشته باشد. مثال: Print Spooler Accounting System براي يک شرکت. Library Loan policy Taxation Grades مزاياي استفاده از اين الگو: نيازي به استفاده از متغير هاي سراسري نيست. Single Access Point (Functional Cohesion) کنترل تعداد موجوديت هاي از يک کلاس. مجاز بودن ايجاد Sub-Class آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) Proxy pattern کاربردهاي الگوي Proxy: Remote proxy: يک نماينده محلي (Local Representative) براي remote Object ها تهيه مي کند. Virtual proxy: creates expensive objects whenever needed Document Editor downloading text and image from a disk Protection proxy: براي object هاي مهم (precious) حفاظت (protection) و کنترل دسترسي (access control) ايجاد مي کند. Database Tables Implementing smart pointer: جايگزيني براي conventional pointer است که عمليات اضافي را مي تواند انجام دهد مانند: شمارش تعداد reference ها به يک object واقعي. اين object مادامي که تعداد reference ها برابر صفر نشده باشد نمي تواند delete شود. کنترل lock شدن object براي update شدن.(Checking that the object is locked prior to update) آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab) Proxy Pattern Diagram آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

پنج لايه الگوهاي معماري (Architectural Pattern)... 1. Application Layer Package: مديريت کاربران و profile آنها. ايجاد فضاي کاري (Work Space) براي کاربران. کنترل شبکه OS Functions HW Functions توابع مديريتي (Administrative Functions) هشدارها و پيام ها. 2. User Interface Package: Workspace elements: Scroll bar، windows، progress bar و … نمايش فضاي کاري (Workspace Presentation) نمايش و پنجره ها. Logon/Logoff تعامل با کاربر آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)

...پنج لايه الگوهاي معماري (Architectural Pattern) 3. Communication Package: مديريت data link (مدارها و پروتکل ها) Name Server Access انتقال داده (Data Transport) Data Conversation 4. Abstract OS Package: Information Hiding Virtual API Manage Memory Manage Tasks and threads 5. Abstract HW Package: API for virtual devices (sensors, actuators) Device Deriver Bus Interface Virtual Processors آزمايشگاه سيستم های هوشمند (http://ce.aut.ac.ir/islab)