SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
Software Patterns for Reusable Design




Robert S. Hanmer

June, 2009
About me

   MSCS, Northwestern University, 1987.
   Working at Northwestern University Med School & computer center
    benefited from shared software
   While on AT&T 4ESS™ Switch project– learned about reusing design ideas and the
    importance of architectural integrity
   In Bell Labs – shared my knowledge with projects
   Now in Alcatel-Lucent Operations – making sure we only use good 3rd party and free
    software (FOSS)


   Member of Alcatel-Lucent Technical Academy
   Senior member of ACM


   Writing patterns since 1994
   President of Hillside Group
   Author of Patterns for Fault Tolerant Software


2 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Agenda

1. Design, Reusable & Software Patterns

2. What is a Software Pattern?

3. Pattern Communities

4. Using Patterns

5. Writing and Collecting Patterns
6. Pattern Research

7. Patterns within your community

8. Wrapup
Design,
     Reusable
         & Software Patterns
Design
As a noun:

5 a: an underlying scheme that governs functioning, developing, or unfolding …
  b: a plan or protocol for carrying out or accomplishing something (as a
scientific experiment) ; also : the process of preparing this



As a verb:

1: to conceive or execute a plan
2: to draw, lay out, or prepare a design
                                                                             -- www.meriam-webster.com




5 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Reusable
Adjective: capable of being used again or repeatedly
                                                              -- www.merriam-webster.com



Some adjectives that apply to things that are reusable:
     flexible

     Modular

     understandable



 -- Other fields have handbooks to capture their reusable information.




6 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Reusable Design
Design and design elements that are

     Modular

     Flexible
     Usable more than once

     Can be communicated



Grady Booch: “Software development has been, is, and will likely remain
fundamentally hard.”




7 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Software Patterns
“The pattern is, in short, at the same time a thing, which happens in the world,
and the rule which tells us how to create that thing, and when we must create
it. It is both a process and a thing; both a description of a thing which is alive,
and a description of the process which will generate that thing.”
                       -- Christopher Alexander,
                          The Timeless Way of Building



A software pattern is a description of modular proven solution to a design
problem with enough information so that the reader can flexibly adapt it to their
unique situations.




8 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
9 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
What is a Software Pattern?




10 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Pattern: Leaky Bucket Counters

Context: A system that is intended to recognize and correct problems
 automatically. In this environment the system needs to know if a problem is
 something that comes and goes intermittently , or only happens once, i.e. is
 "transient" or is a repeating “permanent” fault that needs to be corrected. Signal
 crosstalk, static electric discharges, lightning strikes or intermittently broken
 keys on a keyboard cause transient errors, which should be treated differently
 than permanent faults.

Problem: How can you know if a fault is transient?

Forces: You want a module to exhibit a permanent error before taking drastic
 action. The component that reports the error might be an innocent victim. It
 shouldn’t be punished.

 In many cases you are willing to allow a certain number of errors if they aren’t
 too close together. If they come too close together you want the system to
 trigger some sort of error processing action.


 11 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Leaky Bucket Counters (2)

Solution: Each failure group that is to be watched has a counter
 (the leaky bucket counter) which is initialized to a
 predetermined value when the system is first initialized. The
 counter is incremented for each error or fault detected. The
 counter is decremented on a periodic timed basis, but will
 never be decremented beyond its initial value.

   A counter incrementing past a pre-determined threshold
 value indicates that the rate of error or fault events exceeds
 the allowable rate (as defined by the empty or leak rate, rate
 of errors and threshold value). This should be taken as an
 indication that the fault is not transient.




 12 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Leaky Bucket Counters (3)

Resulting Context: A system in which errors are isolated and handled (by taking
 devices out of service), but transient errors don't cause unnecessary loss of
 service.

Author: Robert Hanmer, incorporating several versions by Robert Gamoke, James
 Coplien and Gerard Meszaros. A revised version in a different format is in
 Patterns for Fault Tolerant Software.




 13 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
What is a Pattern?

A proven solution

     Rule of 3

More than an algorithm

     A pattern explains the context when its applicable

     A pattern explains the trade-offs and alternatives



“At the same time, a thing that happens in the world … and the rules to make
that thing …”




14 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Patterns Are:

A resolution of forces

A form of architectural and design documentation

Relationships that cuts across system parts

“Solution to a Problem in a Context”

A way of explaining non-traditional solutions

A family of solutions that abstractly address related problems in a specific
context
A literary form




15 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Patterns are useful for:

Learning from what has worked in the past

     Not re-inventing the wheel

     Not repeating past errors

Providing a vocabulary for architects/designers

Passing on architectural knowledge

Providing a window into the minds of the experts

Transferring proven solutions from one industry segment to another

To structure OO code




16 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Patterns Will Not:

… make you an instant expert

… provide a “turn the crank” approach to software

… eliminate the need for intelligence and taste

… make you rich and famous
         unless you become a snake oil salesman
… generate code
                                    – Paul S. R. Chisholm, AT&T 10/94




17 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Depth of Patterns

Some patterns are at a very low-level:

     An example solution: Use a shift to multiple or divide by a power of 2



Some are very general:

     For example: Model View Controller




18 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
The Quality Without A Name

“There is a central quality which is the root criterion of life and spirit in a man, a
town, a building, or a wilderness [or software]. This quality is objective and
precise, but it cannot be named.”
                            – Alexander, The Timeless Way of Building




   Who was Christopher Alexander?
   Building architect and theorist, Professor at UC Berkeley www.patternlanguage.com
   Many books on architecture and art:
              Patterns: A Pattern Language, The Timeless Way of Building, The Oregon Experiment, The
              Production of Houses
              Art: A Foreshadowing of 21st Century Art -- The Color and Geometry of Very Early Turkish
              Carpets
              Beyond patterns: The Nature of Order

19 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Patterns Handbook

Patterns build the handbook of software design and construction

     Patterns available in reference book easily accessible to designers

     No need to memorize all the details -- the reference book is available




20 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
The Pattern Almanac

Published 3/2000

Summarizes all the published,
widely available patterns
Indices based upon pattern
intent

Planned to be updated regularly
and to be available on the internet




21 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
What is a Pattern Language?

A collection of patterns that work together

A collection of patterns that build upon each other to build something bigger
than any of the individual patterns can build

“All acts of building are governed by a pattern language of some sort.”
                                    – TTWOB, p 193




22 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
An Example Pattern Language

Telecom IO

     A specialized set of patterns for defining the human-machine interface has
     come into use with the world of embedded telecommunications products.
     These patterns provide an essential interface between a system and its human
     masters.




23 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Telecom IO Pattern Intents
Alarm Grid                                   Group alarms into grids to help the workers identify problems.
Audible Alarms                               Sound audible alarms to alert office personnel of problems.
Beltline Terminal                            Allow workers to take their terminals with them.
Don't Let Them Forget                        Reassert alarms when necessary, purposely forgetting requests to retire the
                                             alarms.
Five Minutes of No Escalation                Don't confuse craft with too frequent messages.
Messages
George Washington is Still Dead              Issue state change messages only when the state changes, not to remind about
                                             the current state.
IO Gatekeeper                                Put one process in charge of IO for the system.
IO Triage                                    Add a priority tag to each output message and sort the output using them.
Mind Your Own Business                       Only send output to concerned terminal groups (logical channels).
MML                                          Use a standardized IO language.
Office Alarms                                Allow the alarm system to be customizable with site specific alarms.
Pseudo-IO                                    Provide for internal subsystems to add IO to the stream.
Raw I/O                                      Provide a way for recovery systems to bypass the IO Gatekeeper.
Shut Up And Listen                           Give human input/output messages a high priority.
String A Wire                                Provide a system to system emergency information channel.
The Bottom Line                              Issue messages to summarize a number of events rather than for each of
                                             many events.
Timestamp                                    Add a timestamp and/or a sequence number to each output message.
Who Asked? for Reusable Design | June 2009
24 | Software Patterns                       Return output only toAlcatel-Lucent 2009channel/terminal that requested it.
                                                     All Rights Reserved © the logical
Telecom IO




                                                                                                     PLoPD-4


25 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
What is a Software Pattern?

A description of a reusable proven design element

     with enough information to recreate the design, customized for the situation



An element of a pattern language

     A collection of patterns that work together to solve larger problems



The building block for a software handbook




26 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Pattern Communities




27 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Pattern Communities

The Hillside Group

     A worldwide organization to make the life of people touching software better
     and to sponsor pattern conferences. Hillside.net

Hillside Europe
     A European group centered around Germany that sponsors conferences and SE
     Radio. hillside.net/europlop/HillsideEurope, se-radio.net

HCI pattern community

     www.hcipatterns.org – Jan Borchers

     www.welie.com – Martijn van Welie




28 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Patterns Community

Pattern movement origins
     1989-1992
         Advanced C++ Programming Styles & Idioms by James Coplien
         OOPSLA
     Hillside Group
Pattern Conferences
     PLoP
         hillside.net/plop
     EuroPLoP
         hillside.net/europlop
     SugarLoaf PLoP
     VikingPLoP
     ChiliPLoP
     KoalaPLoP
     Using Patterns (UP)
29 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
“Culture”

 “5a: the integrated pattern of human knowledge, belief, and behavior that
depends upon man's capacity for learning and transmitting knowledge to
succeeding generations

“5b : the customary beliefs, social forms, and material traits of a religious, or
social group

“5c : the set of shared attitudes, values, goals, and practices that characterizes
a company or corporation”
                            – Merriam Webster Collegiate Dictionary on the web http://www.m-
                              w.com/dictionary.htm


Shared experiences
Shared rituals
     Writers’ Workshop
Shared values
30 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Writers’ Workshops

Good patterns are highly reviewed and refined.



Writers’ Workshop from the literature/poetry community are used to review
patterns.

     Structured discussion of the merits and suggestions for improvement.

     Author is present for note taking but does not participate except at very
     specific times.

     A strong moderator role to guide discussion.

Authors are expected to revise and improve their patterns.




31 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
After writing, workshopping and revising: publish

Patterns are meant to be read!

     Conference proceedings
         hillside.net/conferences points to proceedings of PLoP and EuroPLoP
         EuroPLoP, SugarLoaf PLoP and VikingPLoP publish hard copy proceedings
         PLoP and EuroPLoP publish proceedings in ACM Digital Library.
     Transactions on Pattern Languages of Programming
     (hillside.net/tplop)

     Books
         hillside.net/patterns/books/index.htm for a partial index




32 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Pattern Ethics

Buschmann’s rule: Never capture your own ideas in a pattern

   - Focus on broad, lasting, positive patterns

Intellectual currency paradox: Ideas are worth more if given away

   • The author should retain ownership and copyright

“Aggressive Disregard for Originality” (Brian Foote)

Let’s encourage people to be secure in telling their secrets

Let’s reward people who created these techniques or who first took the trouble
 to commit them to writing

Patterns are solutions that have withstood the test of time

Don’t Hype!

33 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Using Patterns




34 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
“Patterns Generate Architectures”

Johnson, OOPSLA ’92

“Documenting Frameworks using Patterns”

Documented a framework using patterns



Beck and Johnson ECOOP ’94

“Patterns Generate Architectures”

 Derived an architecture for a HotDraw
interactive graphics system using patterns




 35 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Documenting Architecture

Patterns are useful to document built systems.

     Allows maintenance engineers a snapshot of the designer’s thinking.

     Points out to the future maintainers/enhancers where the “load bearing walls”
     are.

     Parnas & Clements: “A Rational Design Process: How and Why to Fake It”.



Example:

     Architectural training for the 4ESS Switch project in Lucent Technologies
         4ESS Switch design begun early 1970’s. First office application January 1976.
         New enhancements are still being added.
         Training uses patterns document key principles.




36 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Assisting Design

If you were designing an alarm component for a system, the Telecom IO Alarm
patterns might be helpful.



     Alarm Grid

     Audible Alarm

     Office Alarms

     Don’t Let Them Forget




By examining these patterns you will see how to build such a component, and the
order in which you should think about using them.



37 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Designing with Relevant Patterns

When starting a project that patterns and pattern languages might be useful for:

Create a list of the relevant patterns from the handbook (i.e. all available resources)



    Example: to build a garden, Alexander suggests these patterns:

                              Half-Hidden Garden                      Building Edge
                              Terraced Slope                          Sunny Place
                              Fruit Trees                             Outdoor Room
                              Tree Places                             Six-Foot Balcony
                              Garden Growing Wild                     Connection to the Earth
                              Entrance Transition                     Greenhouse
                              Courtyards Which Live                   Garden Seat
                              Roof Garden                                                            TTWOB, p 310




38 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Using a Pattern language … “Never the same way twice.”

Applying a pattern language is not a “turn the crank” exercise.

Every application of patterns or pattern languages must be customized for the
situation at hand.

     Every situation poses unique problems.

     Every situation requires a unique solution.

The pattern maps described earlier represent one way that the patterns can be
combined to create a solution.




39 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Where do you find the patterns that you need?

Pattern Almanac

     Lists all the patterns published up to mid-2000.

Web

     Many websites contain links to patterns exist now.
         hillside.net
         www.welie.com
PLOP proceedings, TPLoP and PLOPD books.

Special topic books.




Basically: be familiar with the Handbook.


40 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Writing and Collecting Patterns
Pattern mining

“… don’t count on being able to ‘mine’ a pattern language. A pattern language
comes together like a jigsaw puzzle from patterns that have been collected over
months, years or decades. At some point it becomes publishable, but its
evolution doesn’t cease at that same point.”
                                    – Coplien, C++ Report: Pattern Languages




42 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Digging deeper

What is required for this pattern to work?

What if absent would mean that this cannot work?

What’s missing?



“When every pattern has its principle components given by the smaller patterns
which lie immediately below it in the language, then the language is complete.”
                                    – TTWOB, p 322.




43 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Pattern Refactoring

   Real Time and Resource Overload is an example of pattern refactoring.
   It combines patterns from previous works into a language.

         Meszaros, “A Pattern Language for Improving the Capacity of Reactive
         Systems”, PLOPD-2, ch 35.
         Hanmer and Wu, “Traffic Congestion”, PLoP 1999 Proceedings.

         Real Time and Resource overload Workshopped at PLOP 2000 conference.

         Refactored again and included in Patterns for Fault Tolerant Software.




44 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Pattern Refactoring (2)

The pattern you are about to write to complete a language might already have
been written by someone else.

     Can you cite it and move on?

     Do you need to rephrase it (continuing to give the original authors credit of
     course) to fit in your language?




45 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Pattern Research
                                      Current Efforts

                                      The Open Problem




46 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Handbook of Software Architecture

Grady Booch is collecting The Handbook of Software Architecture.
http://www.handbookofsoftwarearchitecture.com




47 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
HCI Repository
Martijn van Welie has a repository of HCI patterns that many say is the
cornerstone of the HCI community. http://www.welie.com




48 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Open Problem

Finding appropriate patterns

     Many sources: books, web, articles

     Many patterns with the same name: Null object, Shed Load

     No centralized coordination



Some attempts to resolve

     Many student projects to build repositories

     Repository sites that wither and die
                                                                                                            ?
                                                                                                     2000   2010


49 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Patterns in your Community




50 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Bioinformatics Open Source Patterns

How can you make use of patterns to foster development of “better”
  bioinformatics software?



Does that heading make sense?

What are the patterns that you have already mined?

What do you do with patterns?

     Is there a repository?

     Is there a “keeper” of the repository?




51 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Wrapup
We’ve looked at

What pattern and pattern languages look like

Pattern communities

Some ways of using patterns

Some ideas about mining your patterns

The repository and indexing problem

Some thoughts about Bioinformatics patterns




53 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
Software Patterns for Reusable Design

A software pattern is a description of modular proven solution to a design
problem with enough information so that the reader can flexibly adapt it to their
unique situation.



A form of architectural documentation



An element of the pattern handbook

     Is it part of the Handbook of Bioinformatics Open Source Software?




                                                 Questions?
54 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
References
                                      Sources of more information




55 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
References (1)

  Alexander, C. et. al. A Pattern Language. New York: Oxford University Press. 1977.
  Alexander, C. The Timeless Way of Building. New York: Oxford University Press. 1979.
  Beck, K. and R. Johnson, “Patterns Generate Architectures,” Object-Oriented
      Programming 8th European Conference (ECOOP ’94), Springer-Verlag, 1994.
  Coplien, J. O. Software Patterns. New York: SIGS Publications. 1996.
  Gabriel, R. P. Patterns of Software. New York: Oxford University Press. 1996.
  Gamma, E., R. Helm, R. Johnson and J. Vlissides. Design Patterns: Elements of Re-usable
     object-Oriented Design. Addison-Wesley. 1994.

  Hanmer, R. S. and G. Stymfal, “An Input and Output Pattern Language: Lessons from
     Telecommunications”, in [14], pp 502-536.

  Hanmer, R. S. Patterns for Fault Tolerant Software, Chichester: John Wiley & Sons. 2007.

  Hanmer, R. S. “Using Patterns to Teach Software Architecture,” Proceedings of the 6th
     Biennial World Conference on Integrated Design and Process Technology, Pasadena,
     CA, June, 2002.


56 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
References (2)

 Harrison, N., B. Foote, H. Rohnert, eds. Pattern Languages of Program Design-4.
     Reading, MA: Addison-Wesley, 2000.
 PLOPD – PLOPD5: Pattern Languages of Program Design, volumes 1-5. Various editors.
    Reading, MA: Addison-Wesley, 1995-2006.
 PLoP Conference Proceedings: http://hillside.net/plop/
 POSA volumes: Pattern Oriented Software Architecture, volumes 1-5. Various authors.
    Chichester, John Wiley & Sons, 1996-2007.
 Rising, L. The Pattern Alamanac 2000. Reading, MA: Addison-Wesley, 2000.

 Rising, L. The Pattern Handbook. Cambridge: Cambridge University Press, 1998.


 For more books see: http://hillside.net/patterns/books/index.htm
 For pattern mailing lists see: http://hillside.net/patterns/mailing.htm




 57 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009
www.alcatel-lucent.com
                          www.alcatel-lucent.com




58 | Software Patterns for Reusable Design | June 2009   All Rights Reserved © Alcatel-Lucent 2009

Weitere ähnliche Inhalte

Andere mochten auch

European ICT Strategy: Software Tea Party
European ICT Strategy: Software Tea PartyEuropean ICT Strategy: Software Tea Party
European ICT Strategy: Software Tea PartyInnovanz
 
Welsh_BioHDF_BOSC2009
Welsh_BioHDF_BOSC2009Welsh_BioHDF_BOSC2009
Welsh_BioHDF_BOSC2009bosc
 
Murphy_PSLID_BOSC2009
Murphy_PSLID_BOSC2009Murphy_PSLID_BOSC2009
Murphy_PSLID_BOSC2009bosc
 
Test presentation
Test presentationTest presentation
Test presentationantipin
 
Software Patterns Panel Bosc2009
Software Patterns Panel Bosc2009Software Patterns Panel Bosc2009
Software Patterns Panel Bosc2009bosc
 
No crash allowed - Fault tolerance patterns
No crash allowed - Fault tolerance patternsNo crash allowed - Fault tolerance patterns
No crash allowed - Fault tolerance patternsUwe Friedrichsen
 

Andere mochten auch (7)

European ICT Strategy: Software Tea Party
European ICT Strategy: Software Tea PartyEuropean ICT Strategy: Software Tea Party
European ICT Strategy: Software Tea Party
 
Welsh_BioHDF_BOSC2009
Welsh_BioHDF_BOSC2009Welsh_BioHDF_BOSC2009
Welsh_BioHDF_BOSC2009
 
Murphy_PSLID_BOSC2009
Murphy_PSLID_BOSC2009Murphy_PSLID_BOSC2009
Murphy_PSLID_BOSC2009
 
MamíFeros
MamíFerosMamíFeros
MamíFeros
 
Test presentation
Test presentationTest presentation
Test presentation
 
Software Patterns Panel Bosc2009
Software Patterns Panel Bosc2009Software Patterns Panel Bosc2009
Software Patterns Panel Bosc2009
 
No crash allowed - Fault tolerance patterns
No crash allowed - Fault tolerance patternsNo crash allowed - Fault tolerance patterns
No crash allowed - Fault tolerance patterns
 

Ähnlich wie Hanmer Software Patterns Bosc2009

[I3 d]04 interactivity
[I3 d]04 interactivity[I3 d]04 interactivity
[I3 d]04 interactivityjylee_kgit
 
Software Patterns
Software PatternsSoftware Patterns
Software Patternskim.mens
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsUwe Friedrichsen
 
Using the Crowd to Understand and Adapt User Interfaces
Using the Crowd to Understand and Adapt User InterfacesUsing the Crowd to Understand and Adapt User Interfaces
Using the Crowd to Understand and Adapt User InterfacesJeffrey Nichols
 
[I3 d]03 interactivity
[I3 d]03 interactivity[I3 d]03 interactivity
[I3 d]03 interactivityjylee6977
 
Leveraging Open Standards to Build Highly Extensible Autonomous Systems
Leveraging Open Standards to Build Highly Extensible Autonomous SystemsLeveraging Open Standards to Build Highly Extensible Autonomous Systems
Leveraging Open Standards to Build Highly Extensible Autonomous SystemsICS
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsNishu Rastogi
 
Lean Model-Driven Development through Model-Interpretation: the CPAL design ...
Lean Model-Driven Development through  Model-Interpretation: the CPAL design ...Lean Model-Driven Development through  Model-Interpretation: the CPAL design ...
Lean Model-Driven Development through Model-Interpretation: the CPAL design ...Nicolas Navet
 
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for Worse
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for WorseADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for Worse
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for WorseTechWell
 
Breathe Life Into Your IDE
Breathe Life Into Your IDEBreathe Life Into Your IDE
Breathe Life Into Your IDEBenoit Combemale
 
Online TechTalk  "Patterns in Embedded SW Design"
Online TechTalk  "Patterns in Embedded SW Design"Online TechTalk  "Patterns in Embedded SW Design"
Online TechTalk  "Patterns in Embedded SW Design"GlobalLogic Ukraine
 
Architecture In An Agile World
Architecture In An Agile WorldArchitecture In An Agile World
Architecture In An Agile WorldJames Cooper
 
The Case For Uml
The Case For UmlThe Case For Uml
The Case For Umlpomlover
 
User interface software tools past present and future
User interface software tools past present and futureUser interface software tools past present and future
User interface software tools past present and futureAlison HONG
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureKelly Goetsch
 
Designing Structure: Interaction Design
Designing Structure: Interaction DesignDesigning Structure: Interaction Design
Designing Structure: Interaction DesignChristina Wodtke
 
Industry-Academia Communication In Empirical Software Engineering
Industry-Academia Communication In Empirical Software EngineeringIndustry-Academia Communication In Empirical Software Engineering
Industry-Academia Communication In Empirical Software EngineeringPer Runeson
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
 

Ähnlich wie Hanmer Software Patterns Bosc2009 (20)

[I3 d]04 interactivity
[I3 d]04 interactivity[I3 d]04 interactivity
[I3 d]04 interactivity
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
 
L23 Summary and Conclusions
L23 Summary and ConclusionsL23 Summary and Conclusions
L23 Summary and Conclusions
 
Using the Crowd to Understand and Adapt User Interfaces
Using the Crowd to Understand and Adapt User InterfacesUsing the Crowd to Understand and Adapt User Interfaces
Using the Crowd to Understand and Adapt User Interfaces
 
[I3 d]03 interactivity
[I3 d]03 interactivity[I3 d]03 interactivity
[I3 d]03 interactivity
 
Leveraging Open Standards to Build Highly Extensible Autonomous Systems
Leveraging Open Standards to Build Highly Extensible Autonomous SystemsLeveraging Open Standards to Build Highly Extensible Autonomous Systems
Leveraging Open Standards to Build Highly Extensible Autonomous Systems
 
Software Engineering- Crisis and Process Models
Software Engineering- Crisis and Process ModelsSoftware Engineering- Crisis and Process Models
Software Engineering- Crisis and Process Models
 
Lean Model-Driven Development through Model-Interpretation: the CPAL design ...
Lean Model-Driven Development through  Model-Interpretation: the CPAL design ...Lean Model-Driven Development through  Model-Interpretation: the CPAL design ...
Lean Model-Driven Development through Model-Interpretation: the CPAL design ...
 
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for Worse
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for WorseADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for Worse
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for Worse
 
Breathe Life Into Your IDE
Breathe Life Into Your IDEBreathe Life Into Your IDE
Breathe Life Into Your IDE
 
Online TechTalk  "Patterns in Embedded SW Design"
Online TechTalk  "Patterns in Embedded SW Design"Online TechTalk  "Patterns in Embedded SW Design"
Online TechTalk  "Patterns in Embedded SW Design"
 
Architecture In An Agile World
Architecture In An Agile WorldArchitecture In An Agile World
Architecture In An Agile World
 
HCI
HCIHCI
HCI
 
The Case For Uml
The Case For UmlThe Case For Uml
The Case For Uml
 
User interface software tools past present and future
User interface software tools past present and futureUser interface software tools past present and future
User interface software tools past present and future
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright Future
 
Designing Structure: Interaction Design
Designing Structure: Interaction DesignDesigning Structure: Interaction Design
Designing Structure: Interaction Design
 
Industry-Academia Communication In Empirical Software Engineering
Industry-Academia Communication In Empirical Software EngineeringIndustry-Academia Communication In Empirical Software Engineering
Industry-Academia Communication In Empirical Software Engineering
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
 

Mehr von bosc

Swertz Molgenis Bosc2009
Swertz Molgenis Bosc2009Swertz Molgenis Bosc2009
Swertz Molgenis Bosc2009bosc
 
Bosc Intro 20090627
Bosc Intro 20090627Bosc Intro 20090627
Bosc Intro 20090627bosc
 
Kallio Chipster Bosc2009
Kallio Chipster Bosc2009Kallio Chipster Bosc2009
Kallio Chipster Bosc2009bosc
 
Welch Wordifier Bosc2009
Welch Wordifier Bosc2009Welch Wordifier Bosc2009
Welch Wordifier Bosc2009bosc
 
Rice Emboss Bosc2009
Rice Emboss Bosc2009Rice Emboss Bosc2009
Rice Emboss Bosc2009bosc
 
Prlic Bio Java Bosc2009
Prlic Bio Java Bosc2009Prlic Bio Java Bosc2009
Prlic Bio Java Bosc2009bosc
 
Senger Soaplab Bosc2009
Senger Soaplab Bosc2009Senger Soaplab Bosc2009
Senger Soaplab Bosc2009bosc
 
Cock Biopython Bosc2009
Cock Biopython Bosc2009Cock Biopython Bosc2009
Cock Biopython Bosc2009bosc
 
Snell Psoda Bosc2009
Snell Psoda Bosc2009Snell Psoda Bosc2009
Snell Psoda Bosc2009bosc
 
Procter Vamsas Bosc2009
Procter Vamsas Bosc2009Procter Vamsas Bosc2009
Procter Vamsas Bosc2009bosc
 
Drablos Composite Motifs Bosc2009
Drablos Composite Motifs Bosc2009Drablos Composite Motifs Bosc2009
Drablos Composite Motifs Bosc2009bosc
 
Fauteux Seeder Bosc2009
Fauteux Seeder Bosc2009Fauteux Seeder Bosc2009
Fauteux Seeder Bosc2009bosc
 
Moeller Debian Bosc2009
Moeller Debian Bosc2009Moeller Debian Bosc2009
Moeller Debian Bosc2009bosc
 
Prins Bio Lib Bosc 2009
Prins Bio Lib Bosc 2009Prins Bio Lib Bosc 2009
Prins Bio Lib Bosc 2009bosc
 
Wilczynski_BNFinder_BOSC2009
Wilczynski_BNFinder_BOSC2009Wilczynski_BNFinder_BOSC2009
Wilczynski_BNFinder_BOSC2009bosc
 
Varre_Biomanycores_BOSC2009
Varre_Biomanycores_BOSC2009Varre_Biomanycores_BOSC2009
Varre_Biomanycores_BOSC2009bosc
 
Trelles_QnormBOSC2009
Trelles_QnormBOSC2009Trelles_QnormBOSC2009
Trelles_QnormBOSC2009bosc
 
Rother_ModeRNA_BOSC2009
Rother_ModeRNA_BOSC2009Rother_ModeRNA_BOSC2009
Rother_ModeRNA_BOSC2009bosc
 
Piipari_iMotif_BOSC2009
Piipari_iMotif_BOSC2009Piipari_iMotif_BOSC2009
Piipari_iMotif_BOSC2009bosc
 
Moeller_GridQTL_BOSC2009
Moeller_GridQTL_BOSC2009Moeller_GridQTL_BOSC2009
Moeller_GridQTL_BOSC2009bosc
 

Mehr von bosc (20)

Swertz Molgenis Bosc2009
Swertz Molgenis Bosc2009Swertz Molgenis Bosc2009
Swertz Molgenis Bosc2009
 
Bosc Intro 20090627
Bosc Intro 20090627Bosc Intro 20090627
Bosc Intro 20090627
 
Kallio Chipster Bosc2009
Kallio Chipster Bosc2009Kallio Chipster Bosc2009
Kallio Chipster Bosc2009
 
Welch Wordifier Bosc2009
Welch Wordifier Bosc2009Welch Wordifier Bosc2009
Welch Wordifier Bosc2009
 
Rice Emboss Bosc2009
Rice Emboss Bosc2009Rice Emboss Bosc2009
Rice Emboss Bosc2009
 
Prlic Bio Java Bosc2009
Prlic Bio Java Bosc2009Prlic Bio Java Bosc2009
Prlic Bio Java Bosc2009
 
Senger Soaplab Bosc2009
Senger Soaplab Bosc2009Senger Soaplab Bosc2009
Senger Soaplab Bosc2009
 
Cock Biopython Bosc2009
Cock Biopython Bosc2009Cock Biopython Bosc2009
Cock Biopython Bosc2009
 
Snell Psoda Bosc2009
Snell Psoda Bosc2009Snell Psoda Bosc2009
Snell Psoda Bosc2009
 
Procter Vamsas Bosc2009
Procter Vamsas Bosc2009Procter Vamsas Bosc2009
Procter Vamsas Bosc2009
 
Drablos Composite Motifs Bosc2009
Drablos Composite Motifs Bosc2009Drablos Composite Motifs Bosc2009
Drablos Composite Motifs Bosc2009
 
Fauteux Seeder Bosc2009
Fauteux Seeder Bosc2009Fauteux Seeder Bosc2009
Fauteux Seeder Bosc2009
 
Moeller Debian Bosc2009
Moeller Debian Bosc2009Moeller Debian Bosc2009
Moeller Debian Bosc2009
 
Prins Bio Lib Bosc 2009
Prins Bio Lib Bosc 2009Prins Bio Lib Bosc 2009
Prins Bio Lib Bosc 2009
 
Wilczynski_BNFinder_BOSC2009
Wilczynski_BNFinder_BOSC2009Wilczynski_BNFinder_BOSC2009
Wilczynski_BNFinder_BOSC2009
 
Varre_Biomanycores_BOSC2009
Varre_Biomanycores_BOSC2009Varre_Biomanycores_BOSC2009
Varre_Biomanycores_BOSC2009
 
Trelles_QnormBOSC2009
Trelles_QnormBOSC2009Trelles_QnormBOSC2009
Trelles_QnormBOSC2009
 
Rother_ModeRNA_BOSC2009
Rother_ModeRNA_BOSC2009Rother_ModeRNA_BOSC2009
Rother_ModeRNA_BOSC2009
 
Piipari_iMotif_BOSC2009
Piipari_iMotif_BOSC2009Piipari_iMotif_BOSC2009
Piipari_iMotif_BOSC2009
 
Moeller_GridQTL_BOSC2009
Moeller_GridQTL_BOSC2009Moeller_GridQTL_BOSC2009
Moeller_GridQTL_BOSC2009
 

Kürzlich hochgeladen

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 

Kürzlich hochgeladen (20)

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 

Hanmer Software Patterns Bosc2009

  • 1. Software Patterns for Reusable Design Robert S. Hanmer June, 2009
  • 2. About me MSCS, Northwestern University, 1987. Working at Northwestern University Med School & computer center benefited from shared software While on AT&T 4ESS™ Switch project– learned about reusing design ideas and the importance of architectural integrity In Bell Labs – shared my knowledge with projects Now in Alcatel-Lucent Operations – making sure we only use good 3rd party and free software (FOSS) Member of Alcatel-Lucent Technical Academy Senior member of ACM Writing patterns since 1994 President of Hillside Group Author of Patterns for Fault Tolerant Software 2 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 3. Agenda 1. Design, Reusable & Software Patterns 2. What is a Software Pattern? 3. Pattern Communities 4. Using Patterns 5. Writing and Collecting Patterns 6. Pattern Research 7. Patterns within your community 8. Wrapup
  • 4. Design, Reusable & Software Patterns
  • 5. Design As a noun: 5 a: an underlying scheme that governs functioning, developing, or unfolding … b: a plan or protocol for carrying out or accomplishing something (as a scientific experiment) ; also : the process of preparing this As a verb: 1: to conceive or execute a plan 2: to draw, lay out, or prepare a design -- www.meriam-webster.com 5 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 6. Reusable Adjective: capable of being used again or repeatedly -- www.merriam-webster.com Some adjectives that apply to things that are reusable: flexible Modular understandable -- Other fields have handbooks to capture their reusable information. 6 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 7. Reusable Design Design and design elements that are Modular Flexible Usable more than once Can be communicated Grady Booch: “Software development has been, is, and will likely remain fundamentally hard.” 7 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 8. Software Patterns “The pattern is, in short, at the same time a thing, which happens in the world, and the rule which tells us how to create that thing, and when we must create it. It is both a process and a thing; both a description of a thing which is alive, and a description of the process which will generate that thing.” -- Christopher Alexander, The Timeless Way of Building A software pattern is a description of modular proven solution to a design problem with enough information so that the reader can flexibly adapt it to their unique situations. 8 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 9. 9 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 10. What is a Software Pattern? 10 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 11. Pattern: Leaky Bucket Counters Context: A system that is intended to recognize and correct problems automatically. In this environment the system needs to know if a problem is something that comes and goes intermittently , or only happens once, i.e. is "transient" or is a repeating “permanent” fault that needs to be corrected. Signal crosstalk, static electric discharges, lightning strikes or intermittently broken keys on a keyboard cause transient errors, which should be treated differently than permanent faults. Problem: How can you know if a fault is transient? Forces: You want a module to exhibit a permanent error before taking drastic action. The component that reports the error might be an innocent victim. It shouldn’t be punished. In many cases you are willing to allow a certain number of errors if they aren’t too close together. If they come too close together you want the system to trigger some sort of error processing action. 11 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 12. Leaky Bucket Counters (2) Solution: Each failure group that is to be watched has a counter (the leaky bucket counter) which is initialized to a predetermined value when the system is first initialized. The counter is incremented for each error or fault detected. The counter is decremented on a periodic timed basis, but will never be decremented beyond its initial value. A counter incrementing past a pre-determined threshold value indicates that the rate of error or fault events exceeds the allowable rate (as defined by the empty or leak rate, rate of errors and threshold value). This should be taken as an indication that the fault is not transient. 12 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 13. Leaky Bucket Counters (3) Resulting Context: A system in which errors are isolated and handled (by taking devices out of service), but transient errors don't cause unnecessary loss of service. Author: Robert Hanmer, incorporating several versions by Robert Gamoke, James Coplien and Gerard Meszaros. A revised version in a different format is in Patterns for Fault Tolerant Software. 13 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 14. What is a Pattern? A proven solution Rule of 3 More than an algorithm A pattern explains the context when its applicable A pattern explains the trade-offs and alternatives “At the same time, a thing that happens in the world … and the rules to make that thing …” 14 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 15. Patterns Are: A resolution of forces A form of architectural and design documentation Relationships that cuts across system parts “Solution to a Problem in a Context” A way of explaining non-traditional solutions A family of solutions that abstractly address related problems in a specific context A literary form 15 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 16. Patterns are useful for: Learning from what has worked in the past Not re-inventing the wheel Not repeating past errors Providing a vocabulary for architects/designers Passing on architectural knowledge Providing a window into the minds of the experts Transferring proven solutions from one industry segment to another To structure OO code 16 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 17. Patterns Will Not: … make you an instant expert … provide a “turn the crank” approach to software … eliminate the need for intelligence and taste … make you rich and famous unless you become a snake oil salesman … generate code – Paul S. R. Chisholm, AT&T 10/94 17 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 18. Depth of Patterns Some patterns are at a very low-level: An example solution: Use a shift to multiple or divide by a power of 2 Some are very general: For example: Model View Controller 18 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 19. The Quality Without A Name “There is a central quality which is the root criterion of life and spirit in a man, a town, a building, or a wilderness [or software]. This quality is objective and precise, but it cannot be named.” – Alexander, The Timeless Way of Building Who was Christopher Alexander? Building architect and theorist, Professor at UC Berkeley www.patternlanguage.com Many books on architecture and art: Patterns: A Pattern Language, The Timeless Way of Building, The Oregon Experiment, The Production of Houses Art: A Foreshadowing of 21st Century Art -- The Color and Geometry of Very Early Turkish Carpets Beyond patterns: The Nature of Order 19 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 20. Patterns Handbook Patterns build the handbook of software design and construction Patterns available in reference book easily accessible to designers No need to memorize all the details -- the reference book is available 20 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 21. The Pattern Almanac Published 3/2000 Summarizes all the published, widely available patterns Indices based upon pattern intent Planned to be updated regularly and to be available on the internet 21 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 22. What is a Pattern Language? A collection of patterns that work together A collection of patterns that build upon each other to build something bigger than any of the individual patterns can build “All acts of building are governed by a pattern language of some sort.” – TTWOB, p 193 22 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 23. An Example Pattern Language Telecom IO A specialized set of patterns for defining the human-machine interface has come into use with the world of embedded telecommunications products. These patterns provide an essential interface between a system and its human masters. 23 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 24. Telecom IO Pattern Intents Alarm Grid Group alarms into grids to help the workers identify problems. Audible Alarms Sound audible alarms to alert office personnel of problems. Beltline Terminal Allow workers to take their terminals with them. Don't Let Them Forget Reassert alarms when necessary, purposely forgetting requests to retire the alarms. Five Minutes of No Escalation Don't confuse craft with too frequent messages. Messages George Washington is Still Dead Issue state change messages only when the state changes, not to remind about the current state. IO Gatekeeper Put one process in charge of IO for the system. IO Triage Add a priority tag to each output message and sort the output using them. Mind Your Own Business Only send output to concerned terminal groups (logical channels). MML Use a standardized IO language. Office Alarms Allow the alarm system to be customizable with site specific alarms. Pseudo-IO Provide for internal subsystems to add IO to the stream. Raw I/O Provide a way for recovery systems to bypass the IO Gatekeeper. Shut Up And Listen Give human input/output messages a high priority. String A Wire Provide a system to system emergency information channel. The Bottom Line Issue messages to summarize a number of events rather than for each of many events. Timestamp Add a timestamp and/or a sequence number to each output message. Who Asked? for Reusable Design | June 2009 24 | Software Patterns Return output only toAlcatel-Lucent 2009channel/terminal that requested it. All Rights Reserved © the logical
  • 25. Telecom IO PLoPD-4 25 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 26. What is a Software Pattern? A description of a reusable proven design element with enough information to recreate the design, customized for the situation An element of a pattern language A collection of patterns that work together to solve larger problems The building block for a software handbook 26 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 27. Pattern Communities 27 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 28. Pattern Communities The Hillside Group A worldwide organization to make the life of people touching software better and to sponsor pattern conferences. Hillside.net Hillside Europe A European group centered around Germany that sponsors conferences and SE Radio. hillside.net/europlop/HillsideEurope, se-radio.net HCI pattern community www.hcipatterns.org – Jan Borchers www.welie.com – Martijn van Welie 28 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 29. Patterns Community Pattern movement origins 1989-1992 Advanced C++ Programming Styles & Idioms by James Coplien OOPSLA Hillside Group Pattern Conferences PLoP hillside.net/plop EuroPLoP hillside.net/europlop SugarLoaf PLoP VikingPLoP ChiliPLoP KoalaPLoP Using Patterns (UP) 29 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 30. “Culture” “5a: the integrated pattern of human knowledge, belief, and behavior that depends upon man's capacity for learning and transmitting knowledge to succeeding generations “5b : the customary beliefs, social forms, and material traits of a religious, or social group “5c : the set of shared attitudes, values, goals, and practices that characterizes a company or corporation” – Merriam Webster Collegiate Dictionary on the web http://www.m- w.com/dictionary.htm Shared experiences Shared rituals Writers’ Workshop Shared values 30 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 31. Writers’ Workshops Good patterns are highly reviewed and refined. Writers’ Workshop from the literature/poetry community are used to review patterns. Structured discussion of the merits and suggestions for improvement. Author is present for note taking but does not participate except at very specific times. A strong moderator role to guide discussion. Authors are expected to revise and improve their patterns. 31 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 32. After writing, workshopping and revising: publish Patterns are meant to be read! Conference proceedings hillside.net/conferences points to proceedings of PLoP and EuroPLoP EuroPLoP, SugarLoaf PLoP and VikingPLoP publish hard copy proceedings PLoP and EuroPLoP publish proceedings in ACM Digital Library. Transactions on Pattern Languages of Programming (hillside.net/tplop) Books hillside.net/patterns/books/index.htm for a partial index 32 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 33. Pattern Ethics Buschmann’s rule: Never capture your own ideas in a pattern - Focus on broad, lasting, positive patterns Intellectual currency paradox: Ideas are worth more if given away • The author should retain ownership and copyright “Aggressive Disregard for Originality” (Brian Foote) Let’s encourage people to be secure in telling their secrets Let’s reward people who created these techniques or who first took the trouble to commit them to writing Patterns are solutions that have withstood the test of time Don’t Hype! 33 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 34. Using Patterns 34 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 35. “Patterns Generate Architectures” Johnson, OOPSLA ’92 “Documenting Frameworks using Patterns” Documented a framework using patterns Beck and Johnson ECOOP ’94 “Patterns Generate Architectures” Derived an architecture for a HotDraw interactive graphics system using patterns 35 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 36. Documenting Architecture Patterns are useful to document built systems. Allows maintenance engineers a snapshot of the designer’s thinking. Points out to the future maintainers/enhancers where the “load bearing walls” are. Parnas & Clements: “A Rational Design Process: How and Why to Fake It”. Example: Architectural training for the 4ESS Switch project in Lucent Technologies 4ESS Switch design begun early 1970’s. First office application January 1976. New enhancements are still being added. Training uses patterns document key principles. 36 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 37. Assisting Design If you were designing an alarm component for a system, the Telecom IO Alarm patterns might be helpful. Alarm Grid Audible Alarm Office Alarms Don’t Let Them Forget By examining these patterns you will see how to build such a component, and the order in which you should think about using them. 37 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 38. Designing with Relevant Patterns When starting a project that patterns and pattern languages might be useful for: Create a list of the relevant patterns from the handbook (i.e. all available resources) Example: to build a garden, Alexander suggests these patterns: Half-Hidden Garden Building Edge Terraced Slope Sunny Place Fruit Trees Outdoor Room Tree Places Six-Foot Balcony Garden Growing Wild Connection to the Earth Entrance Transition Greenhouse Courtyards Which Live Garden Seat Roof Garden TTWOB, p 310 38 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 39. Using a Pattern language … “Never the same way twice.” Applying a pattern language is not a “turn the crank” exercise. Every application of patterns or pattern languages must be customized for the situation at hand. Every situation poses unique problems. Every situation requires a unique solution. The pattern maps described earlier represent one way that the patterns can be combined to create a solution. 39 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 40. Where do you find the patterns that you need? Pattern Almanac Lists all the patterns published up to mid-2000. Web Many websites contain links to patterns exist now. hillside.net www.welie.com PLOP proceedings, TPLoP and PLOPD books. Special topic books. Basically: be familiar with the Handbook. 40 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 42. Pattern mining “… don’t count on being able to ‘mine’ a pattern language. A pattern language comes together like a jigsaw puzzle from patterns that have been collected over months, years or decades. At some point it becomes publishable, but its evolution doesn’t cease at that same point.” – Coplien, C++ Report: Pattern Languages 42 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 43. Digging deeper What is required for this pattern to work? What if absent would mean that this cannot work? What’s missing? “When every pattern has its principle components given by the smaller patterns which lie immediately below it in the language, then the language is complete.” – TTWOB, p 322. 43 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 44. Pattern Refactoring Real Time and Resource Overload is an example of pattern refactoring. It combines patterns from previous works into a language. Meszaros, “A Pattern Language for Improving the Capacity of Reactive Systems”, PLOPD-2, ch 35. Hanmer and Wu, “Traffic Congestion”, PLoP 1999 Proceedings. Real Time and Resource overload Workshopped at PLOP 2000 conference. Refactored again and included in Patterns for Fault Tolerant Software. 44 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 45. Pattern Refactoring (2) The pattern you are about to write to complete a language might already have been written by someone else. Can you cite it and move on? Do you need to rephrase it (continuing to give the original authors credit of course) to fit in your language? 45 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 46. Pattern Research Current Efforts The Open Problem 46 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 47. Handbook of Software Architecture Grady Booch is collecting The Handbook of Software Architecture. http://www.handbookofsoftwarearchitecture.com 47 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 48. HCI Repository Martijn van Welie has a repository of HCI patterns that many say is the cornerstone of the HCI community. http://www.welie.com 48 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 49. Open Problem Finding appropriate patterns Many sources: books, web, articles Many patterns with the same name: Null object, Shed Load No centralized coordination Some attempts to resolve Many student projects to build repositories Repository sites that wither and die ? 2000 2010 49 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 50. Patterns in your Community 50 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 51. Bioinformatics Open Source Patterns How can you make use of patterns to foster development of “better” bioinformatics software? Does that heading make sense? What are the patterns that you have already mined? What do you do with patterns? Is there a repository? Is there a “keeper” of the repository? 51 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 53. We’ve looked at What pattern and pattern languages look like Pattern communities Some ways of using patterns Some ideas about mining your patterns The repository and indexing problem Some thoughts about Bioinformatics patterns 53 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 54. Software Patterns for Reusable Design A software pattern is a description of modular proven solution to a design problem with enough information so that the reader can flexibly adapt it to their unique situation. A form of architectural documentation An element of the pattern handbook Is it part of the Handbook of Bioinformatics Open Source Software? Questions? 54 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 55. References Sources of more information 55 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 56. References (1) Alexander, C. et. al. A Pattern Language. New York: Oxford University Press. 1977. Alexander, C. The Timeless Way of Building. New York: Oxford University Press. 1979. Beck, K. and R. Johnson, “Patterns Generate Architectures,” Object-Oriented Programming 8th European Conference (ECOOP ’94), Springer-Verlag, 1994. Coplien, J. O. Software Patterns. New York: SIGS Publications. 1996. Gabriel, R. P. Patterns of Software. New York: Oxford University Press. 1996. Gamma, E., R. Helm, R. Johnson and J. Vlissides. Design Patterns: Elements of Re-usable object-Oriented Design. Addison-Wesley. 1994. Hanmer, R. S. and G. Stymfal, “An Input and Output Pattern Language: Lessons from Telecommunications”, in [14], pp 502-536. Hanmer, R. S. Patterns for Fault Tolerant Software, Chichester: John Wiley & Sons. 2007. Hanmer, R. S. “Using Patterns to Teach Software Architecture,” Proceedings of the 6th Biennial World Conference on Integrated Design and Process Technology, Pasadena, CA, June, 2002. 56 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 57. References (2) Harrison, N., B. Foote, H. Rohnert, eds. Pattern Languages of Program Design-4. Reading, MA: Addison-Wesley, 2000. PLOPD – PLOPD5: Pattern Languages of Program Design, volumes 1-5. Various editors. Reading, MA: Addison-Wesley, 1995-2006. PLoP Conference Proceedings: http://hillside.net/plop/ POSA volumes: Pattern Oriented Software Architecture, volumes 1-5. Various authors. Chichester, John Wiley & Sons, 1996-2007. Rising, L. The Pattern Alamanac 2000. Reading, MA: Addison-Wesley, 2000. Rising, L. The Pattern Handbook. Cambridge: Cambridge University Press, 1998. For more books see: http://hillside.net/patterns/books/index.htm For pattern mailing lists see: http://hillside.net/patterns/mailing.htm 57 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009
  • 58. www.alcatel-lucent.com www.alcatel-lucent.com 58 | Software Patterns for Reusable Design | June 2009 All Rights Reserved © Alcatel-Lucent 2009

Hinweis der Redaktion

  1. Agenda Pages This page allows for the listing of the sections within a presentation.
  2. Divider Section Break Pages Title block set 28/32pt Trebuchet white, flush left with text box positioned at, Horizontal 1.87” and Vertical 2.87” This slide is to be used to create Section Divider slides Please copy, paste and modify this slide to reflect your specific needs. It is not generated from a Master slide template
  3. Divider Section Break Pages Title block set 28/32pt Trebuchet white, flush left with text box positioned at, Horizontal 1.87” and Vertical 2.87” This slide is to be used to create Section Divider slides Please copy, paste and modify this slide to reflect your specific needs. It is not generated from a Master slide template
  4. Divider Section Break Pages Title block set 28/32pt Trebuchet white, flush left with text box positioned at, Horizontal 1.87” and Vertical 2.87” This slide is to be used to create Section Divider slides Please copy, paste and modify this slide to reflect your specific needs. It is not generated from a Master slide template
  5. Divider Section Break Pages Title block set 28/32pt Trebuchet white, flush left with text box positioned at, Horizontal 1.87” and Vertical 2.87” This slide is to be used to create Section Divider slides Please copy, paste and modify this slide to reflect your specific needs. It is not generated from a Master slide template
  6. Divider Section Break Pages Title block set 28/32pt Trebuchet white, flush left with text box positioned at, Horizontal 1.87” and Vertical 2.87” This slide is to be used to create Section Divider slides Please copy, paste and modify this slide to reflect your specific needs. It is not generated from a Master slide template
  7. Divider Section Break Pages Title block set 28/32pt Trebuchet white, flush left with text box positioned at, Horizontal 1.87” and Vertical 2.87” This slide is to be used to create Section Divider slides Please copy, paste and modify this slide to reflect your specific needs. It is not generated from a Master slide template