John D. McGregor C8 - Tactics

Slides:



Advertisements
Similar presentations
ARCHITECTURES FOR ARTIFICIAL INTELLIGENCE SYSTEMS
Advertisements

Ch 3 System Development Environment
Technical Architectures
CPSC 875 John D. McGregor C15 – Variation in architecture.
The Architecture Design Process
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Vakgroep Informatietechnologie – IBCN Software Architecture Prof.Dr.ir. F. Gielen Quality Attributes & Tactics (4) Modifiability.
System Architecture: Desing alternatives and methodologies.
Course Instructor: Aisha Azeem
Pattern Abstract Factory
What is Software Architecture?
The Design Discipline.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CPSC 872 John D. McGregor Session 16 Design operators.
1 CMPT 275 High Level Design Phase Architecture. Janice Regan, Objectives of Design  The design phase takes the results of the requirements analysis.
An Introduction to Software Architecture
CPSC 875 John D. McGregor C9 - Tactics. Everything is a plugin.
CPSC 875 John D. McGregor C9 - Tactics. Tactics A tactic is a transformation Given that the pre-condition of the tactic is true The tactic defines changes.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
TAL7011 – Lecture 4 UML for Architecture Modeling.
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
Chapter 2 Database System Concepts and Architecture Dr. Bernard Chen Ph.D. University of Central Arkansas.
Part VII: Design Continuous
John D. McGregor Class 4 – Initial decomposition
CPSC 871 John D. McGregor Module 3 Session 1 Architecture.
CPSC 875 John D. McGregor C9 - Tactics. Tactics A tactic is a transformation Given that the pre-condition of the tactic is true The tactic defines changes.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
Lecture 18: Object-Oriented Design
Slide 1 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > Using OSGi to Build Better Software Lessons from a Telemedicine.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
CPSC 875 John D. McGregor C15 – Variation in architecture.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
CPSC 875 John D. McGregor Design Concept. Functional decomposition.
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
Modifiability Modifiability is about change, and our interest in it centers on the cost and risk of making changes. How easy to change a component without.
CPSC 875 John D. McGregor C15 – Variation in architecture.
CPSC 872 John D. McGregor Session 31 This is it..
CPSC 875 John D. McGregor C8 - Tactics. Everything is a plugin.
Deployment Diagram.
Interface Concepts Modeling Core Team
Chapter 7: Modifiability
CompSci 280 S Introduction to Software Development
Architecture Brief Pepper
CompSci 280 S Introduction to Software Development
CS 325: Software Engineering
Deployment Diagram.
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Chapter 2 Database System Concepts and Architecture
Component-Level Design
MVC and other n-tier Architectures
Software Design and Architecture
Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Part 3 Design What does design mean in different fields?
Deployment Diagram.
Chapter 7: Designing the Architecture
SOFTWARE DESIGN AND ARCHITECTURE
Introduction to the Kernel and Device Drivers
John D. McGregor Quality attributes
What is an Architecture?
Component-Level Design
John D. McGregor C15.1 – Process/AUTOSAR
Design Tips.
Software Design Lecture : 8
An Introduction to Software Architecture
John D. McGregor Module 6 Session 1 More Design
What is an Architecture?
Software Analysis.
John D. McGregor C15 – Variation in architecture
Presentation transcript:

John D. McGregor C8 - Tactics CPSC 875 John D. McGregor C8 - Tactics

Everything is a plugin

Early dependency mechanisms between plugins Requires Extension points Menus Help system Views Perspectives Plugins -> CGI bundles

3.0

4.0

Objectives of 4.0 simplify the Eclipse programming model attract new committers and enable the platform to take advantage of new web-based technologies while providing an open architecture.

Requirements classification

Logical/Physical Design Logical design focuses on concepts. Separation of concerns divides into separate entities. Physical design focuses on “concrete” entities such as processes, threads, and subprograms.

Tactics A tactic is a transformation Given that the pre-condition of the tactic is true The tactic defines changes that should be made to the as-is architecture to get the will-be architecture The tactic description explains the corresponding changes to quality attributes

Modifiability tactics This and other diagrams from http://www.sei.cmu.edu/library/abstracts/reports/07tr002.cfm

Baldwin’s Modularity Operators Modularity reduces complexity and enhances maintainability Baldwin and Clark define 6 operators Any system Splitting Substitution Assumes a modular system Augmenting Excluding Inversion Porting

Splitting AKA decomposition A monolithic system or a module is divided into two or more modules Client/server is a split that enhances value by allowing multiple clients to access a single server – the assumption being that not all clients want to access the server at the same time

Splitting Reducing cost of modifying a single responsibility

Substitution AKA plug compatible One module is replaced by another with equivalent behavior but presumably a different implementation A desktop, laptop, and mobile device all have a bluetooth connection that obeys the bluetooth protocol but each has a different implementation; substituting will allow one system to be used on all three platforms but with a different driver for each platform

Augmenting An additional module is added to the system Perhaps a new type of communication connection such as USB is added to the system

Excluding A module is removed from the system. A low cost version of a product might remove several connectors such as HDMI or a DVD player A generic software system may be tailored for a specific installation. The standard stereo module is excluded and the system is augmented with a vehicle’s surround sound module

Inversion (refactoring) Two or more modules are modified The result is a third module that captures the commonality among the initial modules A stereo sound system module and a surround sound module are analyzed and their common behavior made into a sound system module which is then related to the reduced stereo and surround sound modules Enhances the maintainability and extensibility

Inversion Increases cohesion

Porting A module is divided into a module that is more tightly coupled to the system under design and a module that is free from the single system Making a system easily used by multiple OSs is a typical example. System calls are limited to the tightly coupled module Some new module may be needed in between the tightly coupled module and the free one

Encapsulation

Intermediary

Blackboard

Proxy

Reflection

Modifiability tactics

Layers via tactics

Layers - 2 Maintain Semantic Coherence. The goal of ensuring that a layer’s responsibilities all work together without excessive reliance on other layers is achieved by choosing responsibilities that have some sort of semantic coherence. Raise the Abstraction Level. Layers represent an abstract ladder of services.

Layers - 3 Abstract Common Services. Typically the responsibilities of a layer are grouped together into services. Use Encapsulation. There are two design considerations of the Layers pattern with respect to interfaces: (1) each layer may have its own interface and (2) particular layers may act as an interface (e.g., API, façade) for another layer.

Layers - 4 Restrict Communication Paths. Layers define an ordering and only allow a layer to use the services of its adjacent lower layer. Use an Intermediary. Particular layers may act as an interface (e.g., API, façade) for another layer.

Layers - 5 Relaxed layered system. A relaxed layered system is one in which layer N can invoke any layer below it rather than exclusively layer N-1, which is achieved by removing the Restrict Communication Paths tactic (i.e., removing an intermediary). Layering through inheritance. This variant refers to how the layers are packaged and, consequently, the binding time between them.

State Machines

Hierarchical

Concurrent

Design Structure Matrix

MVC model view controller x 1 Controller View Model

Reading Read this SEI tech report: http://www.sei.cmu.edu/library/abstracts/reports/07tr002.cfm http://www.sparxsystems.com/resources/uml2_tutorial/uml2_statediagram.html

Here is what you are going to do Use the design tactics to refine your design Identify places 2 tactics can be used Modify your design Go as deep as possible; at least the thread level if not the subprogram level Add a property set to your project. Submit the model and a description of the design changes Commit your model by 11:59pm Monday Feb 26th