Objects, Patterns, Idioms, and Architecture

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Unified Modeling Language
Object-Oriented Analysis and Design
Design Patterns for Object Oriented systems CSC 515 Ashwin Dandwate.
Chapter 1 Object-Oriented System Development
Introduction To System Analysis and Design
Object-Oriented Metrics. Characteristics of OO ● Localization ● Encapsulation ● Information hiding ● Inheritence ● Object abstraction.
Software Testing and Quality Assurance
Applying Architectural Styles and Patterns. Outline  Defining Architectural Patterns and Style The activation model Styles and Quality Attributes  Common.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Domain-Specific Software Engineering (DSSE). Software Engineering Concerns  There are many of them  “Classical” software architecture research has focused.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Domain-Specific Software Engineering Alex Adamec.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
System models Abstract descriptions of systems whose requirements are being analysed Abstract descriptions of systems whose requirements are being analysed.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Unified Modeling Language, Version 2.0
101 User Interface Patterns and its applications Tonya Groover Department of Computer Science.
Introduction To System Analysis and Design
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
Chapter 7 System models.
Software Architecture and Patterns
Modified by Juan M. Gomez Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
Sommerville 2004,Mejia-Alvarez 2009Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
Information Systems Engineering. Lecture Outline Information Systems Architecture Information System Architecture components Information Engineering Phases.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
Understanding and using patterns in software development EEL 6883 Software Engineering Vol. 1 Chapter 4 pp Presenter: Sorosh Olamaei.
Architectural Styles, Design Patterns, and Objects Joe Paulowskey.
程建群 博士 (Dr. Jason Cheng) 年 03 月 Software Engineering Part 08.
CS 4240: Rethinking Some OOP Ideas and Terms for OOA&D Readings: Chap. 8 in Shalloway and Trott (referred to as S&T in these slides) Wikipedia on information.
Software Architecture in the Future 1960s. Assembly languages, subroutines, semicolon as connectors 1970s. Structuring of programs to achieve qualities.
What’s Ahead for Embedded Software? (Wed) Gilsoo Kim
Lecture 21: Component-Based Software Engineering
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
 To explain why the context of a system should be modelled as part of the RE process  To describe behavioural modelling, data modelling and object modelling.
© 2000 Franz Kurfess System Design Methods 1 CSC 205: Software Engineering I Dr. Franz J. Kurfess Computer Science Department Cal Poly.
COP 4331 – OOD&P Lecture 7 Object Concepts. What is an Object Programming language definition: An instance of a class Design perspective is different.
Chapter 7 Lecture 1 Design and Implementation. Design and implementation Software design and implementation is the stage in the software engineering process.
Systems Architectures System Integration & Architecture.
Slide 1 Unified Modeling Language, Version 2.0 Object-Oriented SAD.
Engineering, 7th edition. Chapter 8 Slide 1 System models.
Design Patterns: MORE Examples
Parallel Patterns.
CompSci 280 S Introduction to Software Development
UNIT 1.
Business System Development
Chapter 5:Design Patterns
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Entity Relationship (E-R) Modeling
Introduction to Design Patterns
Objectives State the reasons for the complexity involved in the development of software Define the following terms Objects Classes Messages Methods Explain.
Component Based Software Engineering
Abstract descriptions of systems whose requirements are being analysed
OOP vs Structured Programming
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Object oriented analysis and design
Software Construction Lecture 2
Chapter 5 Architectural Design.
DESIGN PATTERNS : Introduction
Automated Analysis and Code Generation for Domain-Specific Models
Chapter 5 Architectural Design.
From Use Cases to Implementation
Presentation transcript:

Objects, Patterns, Idioms, and Architecture CSC 3380 Lecture 22

Sources “Why Explore Object Methods, Patterns, And Architectures?” by Stephen Mellor and Ralph Johnson “A Unified Object Topology” by William Tepfenhart and James Cusick “Idioms and Patterns as Architectural Literature” by James Coplien all from IEEE Software, v. 14, n. 1, pp. 27-42

What do the words Objects, Patterns, Idioms, and Architecture Mean? Little agreement, but some common concepts: domain analysis, modeling, processes, reuse, tools O-O methods: unify domain and design modeling based on conceptual models of application and solution domain entities O-O style is one of many architectural styles Architectural Style vocabulary, system structure, patterns of organization and interaction domain‑specific architectures and reference models basis for domain analysis and software specification

Meaning, continued Patterns: repeated named solution patterns; described as reference models in a literary form; uninterested in domains or implementation techniques often spurn classification systems and tools look at patterns in a larger scope; talk of social, organizational, process patterns Distinguish who is who by asking how they deal with generic and specific information O-O: both in objects; Architecture: generic in DSLs, specific in special‑purpose languages; Patterns - ignore specific information.

Unified Object Topology

Meaning of the topology Each region represents a design technique: Domain taxonomies: categorize applications within a family of related problems; Domain models: abstract models, especially reference models, incorporate domain specific information; Architectural styles: entire software architecture families with common operational characteristics; object‑oriented state‑machine based real‑time on‑line transaction processing data‑streaming decision support

Meaning of the topology continued Object design patterns: spans a large spectrum, from abstract frameworks through design patterns to idioms; Frameworks: sets of implementation‑specific infrastructure and control classes e.g. GUI development systems tend to be implementation images of architectural styles and high‑level patterns; Kits: implementation images of low‑level patterns and domain models. They often provide the application specific classes which are fit into a framework to produce a system. Application are built using all the others

Processes - paths in the topology Figure 3

How to use the topology Help in several tasks: Software system construction; Identification & development of reusable components; Organization and management of object repositories, using the topology as a basis of classification Frameworks are based on a specific architectural style, which is fleshed out with design patterns, and then implemented as a framework Kits are based on a specific domain model identified by domain taxonomy, then fleshed out with design patterns, then implemented as a kit System development path - little actual coding

The Patterns Subculture The Timeless Way of Building and A Pattern Language by Christopher Alexander are their foundational “scriptures” They see patterns as transcending tools, methods, and even architecture They fault O-O methods for concentrating too much on components, or modules, and not enough on relationships between objects and classes; we should use patterns to capture these relationships They believe “today’s problems are larger than one person”, so it is necessary to use abstraction in order to comprehend software applications

Object Systems and Idioms Improve the abstraction of functional design by introducing two hierarchies, inheritance and aggregation. Inheritance is a denser hierarchy because it bundles many functions together at a single level Through polymorphism, each of these functions may be only an abstraction of several different implementations in derived classes Early object‑oriented methods tended to focus on “finding the objects” instead of relationships Idioms focus on design rules which express patterns of relationships

O-O and Patterns Patterns don’t have to be object‑oriented Coplien is “mining” classical embedded systems patterns, to preserve their wisdom for the ages. None of these classical patterns is truly object‑oriented In that sense, patterns are microarchitectures In fact, patterns go beyond architecture, to look at skills, patterns of behavior, social organizations In the largest sense, patterns are seen as reintroducing humanism, creativity, and esthetics into software development