The 7 Sins of Software
   Engineers in HEP



Ioannis Baltopoulos
CERN Summer Student 2004



CSC Student Lectures (Vico E...
Outline

• The Context (HEP)
• The Sins!
  • Observation
  • Problem
  • Solution (definitely not exclusive)
• Conclusion
...
Establishing the Context

• Although these sins are applicable in many other
  situations, they are going to be addressed ...
Sin#1: Tool-coupled Productivity

Observation:
• We’ve used the same tools for the past 25 years
• Religious “wars” about ...
Sin#2: Code Infected

Observation:
• Software Engineers love writing code.
• Write it in small chunks; its easier to under...
Sin#3: Process Infected

Observation:
• Very detailed and specific processes
• Quality Assurance is postponed or flawed

P...
Sin#4: Reinventing The Wheel

Observation:
• Recurring problems get solved all over again
• Rewriting algorithms (sorting?...
Sin#5: Functional but not Usable

Observation:
• Overexposing interfaces
• Information packed applications/websites
• Inad...
Sin#6: Documentation Paralysis

Observation:
• Huge amount of documentation

Problem:
• Out of date
• Manually produced
• ...
Sin#7: Change Resistant

Observation:
• Pieces are only added, never taken away
• “This is how we do it here, try and adap...
Summary

Things to take home:
• Automate as much as you can.
• Over-design, under-engineer.
• Be lazy! Re-use code, Patter...
Thank You!



Ioannis Baltopoulos
CERN Summer Student 2004



CSC Student Lectures (Vico Equence)
Monday, 6th September, 2...
Tools of the Trade: Build tools

•   ANT (ant.apache.org)
•   Maven (maven.apache.org)
•   GNU Make (www.gnu.org/software/...
Tools of the Trade: IDEs

•   Eclipse (www.eclipse.org)
•   NetBeans (www.netbeans.org)
•   JCreator (www.jcreator.com)
• ...
Tools of the Trade: Testing

•   JUnit (www.junit.org)
•   Clover (www.cenqua.com/clover)
•   JCoverage (www.jcoverage.com...
Tools of the Trade: Quality Assurance

• Checkstyle (checkstyle.sourceforge.net)




                                     ...
Tools of the Trade: Auto Documentation

• JavaDoc (www.sun.com)
• Doxygen (www.doxygen.org)
• yDoc (www.yworks.com)




  ...
Tools of the Trade: Design Tools

•   ArgoUML
•   Poseidon for UML
•   Rational Rose
•   MagicDraw
•   Visio
•   Together
...
Tools of the Trade: Version Control

•   CVS (www.cvshome.org)
•   Subversion (subversion.tigris.org)
•   Visual SourceSaf...
Source Code Resources

•   Java Almanac
•   Java Forums (forums.java.sun.com)
•   Numerical Recipes in C
•   Stony Brook A...
Design Patterns Resources




                            21
Upcoming SlideShare
Loading in...5
×

The 7 Sins of Software Engineers in HEP

443

Published on

CERN School of Computing student presentation

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
443
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

The 7 Sins of Software Engineers in HEP

  1. 1. The 7 Sins of Software Engineers in HEP Ioannis Baltopoulos CERN Summer Student 2004 CSC Student Lectures (Vico Equence) Monday, 6th September, 2004
  2. 2. Outline • The Context (HEP) • The Sins! • Observation • Problem • Solution (definitely not exclusive) • Conclusion 2
  3. 3. Establishing the Context • Although these sins are applicable in many other situations, they are going to be addressed in the context of HEP. • Agree that HEP Software Engineering is a special case because of the: • Size of projects • Amount of money invested • Amount of people involved • High expectations from research 3
  4. 4. Sin#1: Tool-coupled Productivity Observation: • We’ve used the same tools for the past 25 years • Religious “wars” about the toolkit Problem: • Tools don’t scale. • They slow us down. Solution: • New free tools can do the “dirty” repetitive work for you. • Automate as much as you can! 4
  5. 5. Sin#2: Code Infected Observation: • Software Engineers love writing code. • Write it in small chunks; its easier to understand. Problem: • Easy to write code. • Easy to prototype a system. Solution: • Understand the problem & the solution before coding. • Design first, code later. 5
  6. 6. Sin#3: Process Infected Observation: • Very detailed and specific processes • Quality Assurance is postponed or flawed Problem: • Reduce productivity/creativity • Create unnecessary overhead Solution: • Process Reengineering from the SE themselves • Have bare minimum that will save us from chaos • Describe only the functional aspects of the work 6
  7. 7. Sin#4: Reinventing The Wheel Observation: • Recurring problems get solved all over again • Rewriting algorithms (sorting?) • Several projects that do almost the same thing Problem: • Duplicated effort, wasted man-power/months • Half completed projects (80% maybe?) Solution: • Use patterns/templates/existing code/catalogs • Ask for other peoples’ experiences 7
  8. 8. Sin#5: Functional but not Usable Observation: • Overexposing interfaces • Information packed applications/websites • Inadequate help system/updated documentation Problem: • User’s given too much choice and makes wrong one Solution: • Get feedback. Don’t think for your users, ask them! • Be consistent! Guide the users’ actions. • Spend that 10% of time to make the application shine! 8
  9. 9. Sin#6: Documentation Paralysis Observation: • Huge amount of documentation Problem: • Out of date • Manually produced • Not informational/relevant Solution: • Source code metadata documentation • Reverse engineer diagrams during implementation 9
  10. 10. Sin#7: Change Resistant Observation: • Pieces are only added, never taken away • “This is how we do it here, try and adapt.” Problem: • People like to stay in their zone of comfort Solution: • Be flexible! • “The reasonable man adapts himself to the environment; the unreasonable man persists in trying to adapt the environment to himself. If any progress has been achieved it was due to the unreasonable man.” 10
  11. 11. Summary Things to take home: • Automate as much as you can. • Over-design, under-engineer. • Be lazy! Re-use code, Patterns, Templates. • Looks matter! • Be unreasonable! Change how things are done. 11
  12. 12. Thank You! Ioannis Baltopoulos CERN Summer Student 2004 CSC Student Lectures (Vico Equence) Monday, 6th September, 2004
  13. 13. Tools of the Trade: Build tools • ANT (ant.apache.org) • Maven (maven.apache.org) • GNU Make (www.gnu.org/software/make) • NAnt (nant.sourceforge.net) 13
  14. 14. Tools of the Trade: IDEs • Eclipse (www.eclipse.org) • NetBeans (www.netbeans.org) • JCreator (www.jcreator.com) • IntelliJ IDEA (www.jetbrains.com) • Sun Java Studio Creator (www.sun.com/jscreator) • JDeveloper (otn.oracle.com/products/jdev) • Visual Studio (http://msdn.microsoft.com/vstudio/) 14
  15. 15. Tools of the Trade: Testing • JUnit (www.junit.org) • Clover (www.cenqua.com/clover) • JCoverage (www.jcoverage.com) • SQLUnit (sqlunit.sourceforge.net) • DBUnit (dbunit.sourceforge.net) • HTTPUnit (httpunit.sourceforge.net) 15
  16. 16. Tools of the Trade: Quality Assurance • Checkstyle (checkstyle.sourceforge.net) 16
  17. 17. Tools of the Trade: Auto Documentation • JavaDoc (www.sun.com) • Doxygen (www.doxygen.org) • yDoc (www.yworks.com) 17
  18. 18. Tools of the Trade: Design Tools • ArgoUML • Poseidon for UML • Rational Rose • MagicDraw • Visio • Together 18
  19. 19. Tools of the Trade: Version Control • CVS (www.cvshome.org) • Subversion (subversion.tigris.org) • Visual SourceSafe (msdn.microsoft.com/ssafe) • RCS 19
  20. 20. Source Code Resources • Java Almanac • Java Forums (forums.java.sun.com) • Numerical Recipes in C • Stony Brook Algorithm Repository 20
  21. 21. Design Patterns Resources 21
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×