350 likes | 530 Views
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”
E N D
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” • “Eco-FlowTM is the first software tool that couples visual editing of network structures with real-time mathematical optimization”
What is EcoFlow?The Business Context • EcoFlow is primarily a methodology of analysis developed by OSU’s Center for Resilience • A standard way of modeling industrial ecology problems • A standard way of engaging multiple industry partners to do the analysis • Initially a Spreadsheet was used to implement the modeling and analysis
What is EcoFlow?The New Software • EcoFlow Workbench
3: The Architecture Presented By: Joe Bolinger 12/3/09
Today’s Outline • Architecture • For the Design Process • Conceptual Modeling & Multiple Views • As an Output of Design • Software Frameworks & Patterns • Our Goals • Demonstrate an Architectural Process • Example Artifacts • Watch for “patterns” again
ArchitectureFor the Design Process • 2 Important Conceptual Views of an Architecture • The Clients’ Conceptual View • The Developers’ Conceptual View • As we go try to see how… • Analysis of the Clients’ View lead to the design of the Developers’ View • Analysis of the Developers’ View lead to the selection of technology and implementation patterns • The Process influenced the artifacts
ArchitectureFor the Design Process Graphical Interface Database Network Structure Optimization Solver Output:Costs, Flows, Emissions • The Clients’ Conceptual View
ArchitectureFor the Design Process Graphical Interface Database Network Structure Optimization Solver Output:Costs, Flows, Emissions • 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
ArchitectureAn Output of Design • The Developers’ Conceptual View
ArchitectureDesigning for Modifiability: Extensibility • Why? • Decouple Visualize Model Analyze workflow 1 2 3
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
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
Architecture“Pareto’s Principle” Eclipse RCP & GEF Framework provide ~80% of what is needed for EcoFlow’sGeneric Graphical Editor Framework Extending Eclipse’s framework to use our 2 Part Model completes the Generic Framework
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…
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)
Next Time • Design Patterns & Implementation
4: The Software Presented By: Joe Bolinger 12/3/09
Today’s Outline • Implementation • Design Patterns • A look inside EcoFlow • Code examples • Our Goals • Demonstrate Software Design Techniques • Watch for “patterns” again
Design PatternsThe Pattern Approach • Patterns are reusable ‘idioms’ of design • Useful 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
Software Design PatternsBackground • Patterns are documented ways of solving common problems • Not like code or specifications! • Do not be fooled! • Describe when to use • “Forces” • Explain the consequences of use • Often appear in groups in a standardized format • Pattern “languages” • May be domain or industry specific
Software Design PatternsClassical Examples • Some “classical” families of patterns • Creational • Ex. Factory, Pool, Singleton • Behavioral • Ex. Adapter, Decorator, Proxy • Structural • Ex. Command, Mediator, Memento, Null/Default Object • Now a real example…
EcoFlow ExampleAdapter Pattern • Adapter is one of the simplest patterns • You’ve probably already used it, now you can talk about it • Name: 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
EcoFlow ExampleAdapter Pattern • Typical Structure of an Adapter • Client • Adaptor • Adaptee Image Source: Wikipedia
EclipseWhy an Adapter? • Important “Forces” • Eclipse & GEF Frameworks • Plug-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…
EclipseAdapter #1 • Eclipse’s IAdaptable interface • The Adapter is merged with the Adaptee • Inside EcoFlow’s “Network Editor”
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 things • So that anything can be adapted to an image but doesn’t need to know it can • An important change in the “forces” • Why?
EclipseAdapter #2 • Need a “run-time” adapter for this • One Way to do this is… • Provide an “Singleton” Adaptor “Factory” that anyone can use to adapt things. • Register your image adaptor with that factory that is responsible for converting things to images. • Looks like…
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?
Design PatternsRecap • Common language for design • Look for patterns everywhere • Design Books • API 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
ConclusionA Pattern Approach • We’ve used a pattern approach in this series • Why? • Can you find a connection?
ConclusionA Pattern Approach • We’ve used a pattern approach in this series • Why? • 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…
The End Thank You!