Outline. Sin#1: Tool-coupled Productivity. Establishing the Context. The 7 Sins of Software Engineers in HEP. The Context (HEP) The Sins!

Similar documents
The 7 Sins of Software Engineers in HEP

Why switch exist-db from Ant to Maven?

How to get started using the JSL

10 - Integrated Development Environments

12/7/09. How is a programming language processed? Picasso Design. Collaborating with Subversion Discussion of Preparation Analyses.

Model-Code-Deploy platform. Product Overview. Features. UML support. Requirements management


Writeup for first project of CMSC 420: Data Structures Section 0102, Summer Theme: Threaded AVL Trees

3. Hello World! for IDEA. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

MEAP Edition Manning Early Access Program Get Programming with Java Version 1

Introduction to Java. Lecture 1 COP 3252 Summer May 16, 2017

Oracle Developer Depot Technical Review

Assoc. Prof. Dr. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

Construction: version control and system building

Index. Symbols. /**, symbol, 73 >> symbol, 21

Automated Unit Testing A Practitioner's and Teacher's Perspective

Lecture 7 More Memory Management Slab Allocator. Slab Allocator

CS560: Formal Modelling and Implementation of Systems (Term II) Lecture: CASE A. O Riordan, 2009.

Homework 09. Collecting Beepers

Project. Minpeng Zhu

FilmGrid: Digital Asset Management for Film PostProduction

Software Quality - Tips Techniques & Tools

SECTION 2: HW3 Setup.

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved.

Lecture 6. Design (3) CENG 412-Human Factors in Engineering May

5 REASONS YOUR BUSINESS NEEDS NETWORK MONITORING

Module Road Map. 7. Version Control with Subversion Introduction Terminology

Now you can Microsoft Visual Studio 2010 with MSDN

Building Java with Plex Services for Eclipse

LXI Reference Design.

CSC207 Week 3. Larry Zhang

CVS. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 21

Introduction to CTIP. Lee, Dong-Ah

Build Tools. Software Engineering SS A tool was needed. Agenda for today. Build tools. Software complexity. Build tools

Object Oriented Programming

Build Tools. Software Engineering SS 2007

Prototyping. Readings: Dix et al: Chapter 5.8 Marc Rettig: Prototyping for tiny fingers, Communications of the ACM, April 1994.

How PhpStorm Helps Your Business

Java Swing Introduction

seosummit seosummit April 24-26, 2017 Copyright 2017 Rebecca Gill & ithemes

Towards A Common Build Infrastructure: Designing For Reusability

The Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering

Evaluation Guide for ASP.NET Web CMS and Experience Platforms

An introduction to Unified Modeling Language (UML) in Software Engineering

Project Automation. If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008

Creating an Intranet using Lotus Web Content Management. Part 2 Project Planning

Platforms (Operating Systems)

VP-UML Installation Guide

2

Automated Acceptance Testing

5/8/09. Tools for Finding Concerns

Overview of Eclipse Lectures. Module Road Map

Properties of High Quality Software. CSE219, Computer Science III Stony Brook University

Introduction. A Brief Description of Our Journey

System Requirements COSE. Helsinki 8th December 2004 Software Engineering Project UNIVERSITY OF HELSINKI Department of Computer Science

File Open, Close, and Flush Performance Issues in HDF5 Scot Breitenfeld John Mainzer Richard Warren 02/19/18

COMP6471 WINTER User-Centered Design

CPS122 Lecture: Course Intro; Introduction to Object-Orientation

... Fisheye Crucible Bamboo

Summer Assignment for the School Year

Continuous Integration using Cruise Control

Overview: Introducing Usability and User-Centered Design (UCD)

Testers can write good code too. Corina

Getting Started in the World of WebSphere; Real World Case Studies

Version Control. CSC207 Fall 2014

Implement an ADT while using Subversion

M E R C U R I A L (The Source Control Management)

3rd Lecture Languages for information modeling

CSE 373: Data Structures and Algorithms

NetBeans Platform in 5.0:

CA1033A - Work-In-Progress Presentation

CS122 Lecture 1 Winter Term,

Announcements. How to build a UML model. Rational Unified Process. How RUP builds a model. UI design. Architect

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

INF 111 / CSE 121. Laboratory 6: Package and Sequence Diagrams using ArgoUML

Software Reengineering P1: Intro & Organization. Martin Pinzger Delft University of Technology

SECTION 1: CODE REASONING + VERSION CONTROL

Task2Gather Manual for Windows Mobile

Advantages Of SubVersion Over CVS When Working With XP Projects

Stop Scope Creep. Double Your Profit & Remove The Stress of Selling Websites

Test Driven Development TDD

1. Introduction. Java. Fall 2009 Instructor: Dr. Masoud Yaghini

Strategy Conceptual Design

Software Design and Analysis CSCI 2040

How IntelliJ IDEA Helps Your Business

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE

CS 106B Lecture 26: Esoteric Data Structures: Skip Lists and Bloom Filters

The Myth and Reality of using Haskell in the Real World

Paul de Metter, Lennard Fonteijn 11th April 2017

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process

Speech 2 Part 2 Transcript: The role of DB2 in Web 2.0 and in the IOD World

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

CS61C : Machine Structures

Unified Modeling Language (UML)

Design Patterns

CIS4930 / CIS6930: USER EXPERIENCE DESIGN INSTRUCTOR: DR. LISA ANTHONY

Web Writing That Works. Hot Text. Reduce Scrolling

Simplified Build Management with Maven

<Insert Picture Here> Accelerated Java EE Development: The Oracle Way

Object-oriented Programming Project

Transcription:

Outline The 7 Sins of Software Engineers in HEP The Context (HEP) The Sins! Observation Problem Solution (definitely not exclusive) Conclusion Ioannis Baltopoulos CERN Summer Student 2004 CSC Student Lectures (Vico Equence) Monday, 6 th September, 2004 2 Establishing the Context Sin#1: Tool-coupled Productivity 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 We ve used the same tools for the past 25 years Religious wars about the toolkit Tools don t scale. They slow us down. New free tools can do the dirty repetitive work for you. Automate as much as you can! 3 4

Sin#2: Code Infected Sin#3: Process Infected Software Engineers love writing code. Write it in small chunks; its easier to understand. Easy to write code. Easy to prototype a system. Understand the problem & the solution before coding. Design first, code later. Very detailed and specific processes Quality Assurance is postponed or flawed Reduce productivity/creativity Create unnecessary overhead Process Reengineering from the SE themselves Have bare minimum that will save us from chaos Describe only the functional aspects of the work 5 6 Sin#4: Reinventing The Wheel Sin#5: Functional but not Usable Recurring problems get solved all over again Rewriting algorithms (sorting?) Several projects that do almost the same thing Duplicated effort, wasted man-power/months Half completed projects (80% maybe?) Use patterns/templates/existing code/catalogs Ask for other peoples experiences Overexposing interfaces Information packed applications/websites Inadequate help system/updated documentation User s given too much choice and makes wrong one 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! 7 8

Sin#6: Documentation Paralysis Sin#7: Change Resistant Huge amount of documentation Out of date Manually produced Not informational/relevant Source code metadata documentation Reverse engineer diagrams during implementation Pieces are only added, never taken away This is how we do it here, try and adapt. People like to stay in their zone of comfort 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. 9 10 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. Thank You! Ioannis Baltopoulos CERN Summer Student 2004 CSC Student Lectures (Vico Equence) Monday, 6 th September, 2004 11

Tools of the Trade: Build tools Tools of the Trade: IDEs ANT (ant.apache.org) Maven (maven.apache.org) GNU Make (www.gnu.org/software/make) NAnt (nant.sourceforge.net) 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/) 13 14 Tools of the Trade: Testing Tools of the Trade: Quality Assurance 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) Checkstyle (checkstyle.sourceforge.net) 15 16

Tools of the Trade: Auto Documentation Tools of the Trade: Design Tools JavaDoc (www.sun.com) Doxygen (www.doxygen.org) ydoc (www.yworks.com) ArgoUML Poseidon for UML Rational Rose MagicDraw Visio Together 17 18 Tools of the Trade: Version Control Source Code Resources CVS (www.cvshome.org) Subversion (subversion.tigris.org) Visual SourceSafe (msdn.microsoft.com/ssafe) RCS Java Almanac Java Forums (forums.java.sun.com) Numerical Recipes in C Stony Brook Algorithm Repository 19 20

Design Patterns Resources 21