34
Previously on EcoFlow… Presented By: Joe Bolinger 12/3/09

Previously on EcoFlow …

  • Upload
    nibaw

  • View
    70

  • Download
    0

Embed Size (px)

DESCRIPTION

Previously on EcoFlow …. Presented By: Joe Bolinger 12/3/09. What is EcoFlow ? The Concept. “An innovative decision support tool that helps maximize the financial and societal benefits of industrial ecology – converting waste to profit” - PowerPoint PPT Presentation

Citation preview

Page 1: Previously on  EcoFlow …

Previously on EcoFlow…

Presented By: Joe Bolinger

12/3/09

Page 2: Previously on  EcoFlow …

What is EcoFlow?The Concept

“An innovative decision support tool that helps maximize the financial and societal benefits of industrial ecology – converting waste to profit”

“Eco-FlowTM is the first software tool that couples visual editing of network structures with real-time mathematical optimization”

Page 3: Previously on  EcoFlow …

What is EcoFlow?The Business Context

EcoFlow is primarily a methodology of analysis developed by OSU’s Center for ResilienceA standard way of modeling industrial ecology

problemsA standard way of engaging multiple industry

partners to do the analysis

Initially a Spreadsheet was used to implement the modeling and analysis

Page 4: Previously on  EcoFlow …

What is EcoFlow?The New Software

EcoFlow Workbench

Page 5: Previously on  EcoFlow …

3: The Architecture

Presented By: Joe Bolinger

12/3/09

Page 6: Previously on  EcoFlow …

Today’s Outline

ArchitectureFor the Design ProcessConceptual Modeling & Multiple Views

As an Output of Design Software Frameworks & Patterns

Our GoalsDemonstrate an Architectural Process Example ArtifactsWatch for “patterns” again

Page 7: Previously on  EcoFlow …

ArchitectureFor the Design Process

2 Important Conceptual Views of an ArchitectureThe Clients’ Conceptual ViewThe Developers’ Conceptual View

As we go try to see how…Analysis of the Clients’ View lead to the design of the

Developers’ ViewAnalysis of the Developers’ View lead to the selection

of technology and implementation patternsThe Process influenced the artifacts

Page 8: Previously on  EcoFlow …

ArchitectureFor the Design Process

The Clients’ Conceptual View

Network Structure

Output:Costs, Flows,

Emissions

Optimization Solver

Database

Graphical

Interface

Page 9: Previously on  EcoFlow …

ArchitectureFor the Design Process

What does this tell us? Important Visualize Model Analyze workflow

This was always emphasized during requirements discussions Network Structure (i.e. data model) very critical

Highly volatile during discussion too

Only Conceptual To date there is no database But there is persistence What’s the difference?

Think of some use cases…. Searching a Network Model for something Searching a set of Network Models for something

Network Structure

Output:Costs, Flows,

Emissions

Optimization Solver

Database

Graphical

Interface

Page 10: Previously on  EcoFlow …

ArchitectureAn Output of Design

The Developers’ Conceptual View

Page 11: Previously on  EcoFlow …

ArchitectureDesigning for Modifiability: Extensibility

Why?

Decouple Visualize Model Analyze workflow

1 2 3

Page 12: Previously on  EcoFlow …

ArchitectureModifiability: Variability & Maintainability

Break network model into 2 parts Same data used in multiple

ways Easier to extend data for

future modeling or analysis needs

Reuse of editor

Page 13: Previously on  EcoFlow …

ArchitectureMultiple Views

Page 14: Previously on  EcoFlow …

ArchitectureLeading to an Implementation

“Generics & Specifics”EcoFlow’s design includes a few Generic Software

Frameworks Such as the 2 Part Model And the Graphical Editor High skill, reuse potential

And lots of Specifics built on the frameworks Such as the actual data model that’s used to define EcoFlow

Models And the behavior of the Graphical Editor & Diagramming tools Lower skill, little reuse

Page 15: Previously on  EcoFlow …

Architecture“Pareto’s Principle”

Eclipse RCP & GEF Framework provide ~80% of what is needed for EcoFlow’s Generic Graphical Editor Framework

Extending Eclipse’s framework to use our 2 Part Model completes the Generic Framework

Page 16: Previously on  EcoFlow …

ArchitectureLeading to an Implementation

In EcoFlow around 20% of the implementation is for building out critical frameworks These are the pieces that lead to the most customer value The *-ilities that are most critical to control

And most of these are minor extensions of other major reusable components Like GEF & the 2 Part Model Pareto Principle again!

The rest of the implementation effort just follows these general patterns Much less skill involved at this point Perfect for rapid prototyping!

Little harder to do when building out the Generics More next time…

Page 17: Previously on  EcoFlow …

ArchitectureRecap

Modeling & Multiple Views Communicate at Different Levels of Detail

Like between Customer & Architect Structural & Behavioral

Communicate Different Kinds of Concerns No examples here 1 person development team

Note use of context diagramming Less use of class, sequence, & other development diagramming

Use of Frameworks An application architecture has just a few major patterns or frameworks

Relative to their use Most application architectures only require a few novel pieces

Recall the trend to integrate (and expand) rather than build from scratch (or re-invent)

Page 18: Previously on  EcoFlow …

Next Time

Design Patterns & Implementation

Page 19: Previously on  EcoFlow …

4: The Software

Presented By: Joe Bolinger

12/3/09

Page 20: Previously on  EcoFlow …

Today’s Outline

ImplementationDesign PatternsA look inside EcoFlowCode examples

Our GoalsDemonstrate Software Design TechniquesWatch for “patterns” again

Page 21: Previously on  EcoFlow …

Design PatternsThe Pattern Approach

Patterns are reusable ‘idioms’ of designUseful at different scopes for various design processes Business/Enterprise Patterns

“Designing a business” Business Development Organizational Patterns

“Designing a team” Project Management Architecture Patterns

“Designing a product or service offering” Analysis & Software Design

Software Design Patterns “Building a piece of a product or service” Software Implementation

Page 22: Previously on  EcoFlow …

Software Design PatternsBackground

Patterns are documented ways of solving common problemsNot like code or specifications!Do not be fooled!

Describe when to use “Forces”

Explain the consequences of useOften appear in groups in a standardized formatPattern “languages”May be domain or industry specific

Page 23: Previously on  EcoFlow …

Software Design PatternsClassical Examples

Some “classical” families of patternsCreational Ex. Factory, Pool, Singleton

Behavioral Ex. Adapter, Decorator, Proxy

Structural Ex. Command, Mediator, Memento, Null/Default Object

Now a real example…

Page 24: Previously on  EcoFlow …

EcoFlow ExampleAdapter Pattern

Adapter is one of the simplest patternsYou’ve probably already used it, now you can talk

about itName: Adapter (Structural Pattern)An adapter is responsible for translating one interface into

another, typically so that incompatible interfaces can be made compatible without changes to the original interfaces.

Adapters are usually small and simple. Compare to a Mediator or Decorator which may add additional behavior.

See the typical structure of this pattern on Wikipedia

Page 25: Previously on  EcoFlow …

EcoFlow ExampleAdapter Pattern

Typical Structure of an AdapterClientAdaptorAdaptee

Image Source: Wikipedia

Page 26: Previously on  EcoFlow …

EclipseWhy an Adapter?

Important “Forces”Eclipse & GEF FrameworksPlug-in Architecture Lots of plug-ins that need to Interoperate Tons of reusable functionality

For example, Zooming, Panning, a Thumbnail View Everything needs a Thumbnail!

How to build an adapter?Use Interfaces? Sometimes…

Page 27: Previously on  EcoFlow …

EclipseAdapter #1

Eclipse’s IAdaptable interfaceThe Adapter is merged with the Adaptee Inside EcoFlow’s “Network Editor”

Page 28: Previously on  EcoFlow …

EclipseAdapter #1

Simple enough…But the editor has to “know” how to adapt itself Sub-classing or using a wrapper class has similar consequences

Okay here, but often a problem…

What if we want to add images to thingsSo that anything can be adapted to an image but

doesn’t need to know it canAn important change in the “forces”Why?

Page 29: Previously on  EcoFlow …

EclipseAdapter #2

Need a “run-time” adapter for thisOne Way to do this is…1. Provide an “Singleton” Adaptor “Factory” that

anyone can use to adapt things.2. Register your image adaptor with that factory that

is responsible for converting things to images.

Looks like…

Page 30: Previously on  EcoFlow …

EclipseAdapter #2

The Adaptor Factory Manager in Eclipse*

The Image Adapter

*Note adapters in Eclipse can be plugged-in and out dynamically. Why might this be important?

Page 31: Previously on  EcoFlow …

Design PatternsRecap

Common language for designLook for patterns everywhereDesign BooksAPI Documentation

Use them as way to document your design Favor reuse or invention unless you have a good reason

They are not solutions, only suggestions

Page 32: Previously on  EcoFlow …

ConclusionA Pattern Approach

We’ve used a pattern approach in this seriesWhy?Can you find a connection?

Page 33: Previously on  EcoFlow …

ConclusionA Pattern Approach

We’ve used a pattern approach in this seriesWhy?Can you find a connection?

How about “Generics & Specifics”?What kind of developers should build the core frameworks?How will using frameworks change your architecture?How might the design of a framework change the design of

a team or vice versa?Check out Conway’s Law…

Page 34: Previously on  EcoFlow …

The End

Thank You!