[Rivet] software design of rivet?

Andy Buckley andy.buckley at ed.ac.uk
Thu Jul 14 11:02:48 BST 2011


Hi Peter,

Indeed, we have put quite a lot of OO design ideas into Rivet. However, 
I think that the most important aspects of Rivet's development have 
been, e.g. an emphasis on use cases and API usability, willingness to 
refactor our code in response to evolving requirements, and increasing 
emphasis on quality control. I find it interesting that many of the 
design features in Rivet which resemble the Gamma et al patterns were 
not implemented based on that book, but simply because they were the way 
to solve that *particular* case's requirements in a neat way!

Being rather an enthusiast for code design, I think that the workshop 
sounds quite interesting and I would be interested in giving a 
presentation on a few distinctive features of Rivet's design. However, I 
would prefer to emphasise the importance of understanding requirements 
and crafting individualised solutions for problems rather than throwing 
the patterns book at every problem... code written that way has its own 
set of distinctive problems!

If that sounds of interest, I would choose to focus on the way in which 
our plugin system (using polymorphism and other OO patterns) solves a 
certain set of our requirements, how and why we use a centralised 
projection register, how our multi-language approach has been key to 
usability, and some of the pitfalls that we encountered along the way -- 
including what I think is an excellent example of how *not* to apply 
patterns! While that maybe doesn't exactly fit your brief, I hope that 
it would be an interesting case study of a real-world system which has 
received a lot of design attention, by HEP standards. Does that sound 
like it would be appropriate?

One last point: are you able to provide any funding for travel and 
accommodation at the workshop?

Andy

PS. I've been rather presumptuous and assumed that the rest of the Rivet 
developers don't mind *me* offering my sw dev opinions! If anyone else 
wants to express their love (?) for C++ in public, speak up :)


On 14/07/11 10:09, Peter Steinbach wrote:
> Dear Rivet developers,
>
> just as last year, the institute of nuclear and particle physics ofthe
> TU Dresden is setting up a workshop on advanced software development
> within Germany's terascale alliance. The school tries to bring advanced
> concepts of object-oriented programming to PhD students and Post-Docs of
> LHC physics (theoretical and experimental) to make them better
> developers and to make our software better eventually.
> We hereby concentrate on discussing design patterns as documented in
> Gamma et al., Design Patterns: Elements of Reusable Object-Oriented
> Software or listed on this nice page: http://sourcemaking.com/.
>
> I've started to use rivet recently and had a look at your code. the
> framework is well written and suggests that a lot of experience in
> object-oriented programming was behind constructing it.
> I found the command pattern (functors in C++ speak) and strategy pattern
> (virtual inheritance of the Projections class and the polymorphic use of
> project() and compare() ) in your code.
>
> For this year's school, we are still looking for speakers that might
> give a lecture on assorted patterns and conduct exercises of their use.
>
> We'd be rather happy, if some of you could join the workshop at Dresden
> from September 26th to September 30th and present some core features of
> Rivet that represent Design Patterns.
> Please let me know, if you'd like to contribute.
>
> Cheers,
> Peter
>
>
> _______________________________________________
> Rivet mailing list
> Rivet at projects.hepforge.org
> http://www.hepforge.org/lists/listinfo/rivet


-- 
Dr Andy Buckley
SUPA Advanced Research Fellow
Particle Physics Experiment Group, University of Edinburgh

The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.



More information about the Rivet mailing list