GLAST CHEP 03 March T.Burnett1/12 User-friendly tools for Managing Software Development Projects User-friendly tools for Managing Software Development Projects Toby Burnett University of Washington Marco Frailis University of Udine Alex Schelssinger SLAC
GLAST CHEP 03 March T.Burnett2/12 Introduction HEP software development components: –Package: group of related source files, usually to build a single library and/or executable Versioning via cvs tags –“Release” system to manage and build executables from set of tagged packages –Development scheme: “Test area mechanism for developing and testing new code against a release. Observations: The release/management systems are command-line oriented, can be daunting to new developers Hard to get overall view, especially when dealing with multiple pacakges
GLAST CHEP 03 March T.Burnett3/12 Solutions for CMT (Similar approaches would apply to SRT) A GUI application –VCMT (windows and linux versions) Simplified command-line interface: – glastpack.pl
GLAST CHEP 03 March T.Burnett4/12 An OO analysis: The players Objects: –Environment: CMT env vars, etc. –CMT packages system (read-only, sticky tags) development (head versions) requirements files, sources –binaries: libs, dlls, exes Tools: –CMT –CVS –development tools Windows: Visual Studio Linux: gmake, emacs, gdb/ddd –Doxygen
GLAST CHEP 03 March T.Burnett5/12 The strategy Present the user with a view of all the objects Allow appropriate tools to be used according to development scenarios: –set environment –checkout packages, singly or in groups –browse set of available packages –examine properties of each package, relationships –modify and rebuild binaries –check in and/or tag new versions –run executables
GLAST CHEP 03 March T.Burnett6/12 We have objects: let’s define classes WhatClass NameVcmt(windows) implementation CMT environmentCmtcmt.wsc COM object A CMT packagePackageJscript class Package Package, its projects, and dependent projects WorkspaceJscript class Workspace Individual binary targetProjectJscript class Project
GLAST CHEP 03 March T.Burnett7/12 The object model diagram
GLAST CHEP 03 March T.Burnett8/12 A tour of the application Examine CMT settings Set CMT path Browse a package’s properties –requirements file –used packages –macros, sets, etc. Modify requirements file Check cvs status Start a console session in the package context Checkout a package Set up and build a package Run a package application Start Visual Studio
GLAST CHEP 03 March T.Burnett9/12 VCMT for Windows
GLAST CHEP 03 March T.Burnett10/12 Structure of the Windows code: Jscript and HTML Windows Script Host vcmt.wsf COM cmt.wsc main program: manage objects, GUI run cvs, visual studio vcmt.htm Internet Explorer gui description CMT interface
GLAST CHEP 03 March T.Burnett11/12 The Linux version Implemented with the FOX toolkit
GLAST CHEP 03 March T.Burnett12/12 glastpack.pl usage: glastpack.pl create dirname usage: glastpack.pl help command usage: glastpack.pl build version usage: glastpack.pl rco package version usage: glastpack.pl run package exename usage: glastpack.pl add /path/to/area usage: glastpack.pl rebuild package usage: glastpack.pl remove /path/to/area usage: glastpack.pl co package version usage: glastpack.pl login usage: glastpack.pl logout
GLAST CHEP 03 March T.Burnett13/12 Concluding remarks Experience –In use by all GLAST developers: mature, few problems it can test for consistency when starting, avoid installation problems Package browsing Buttons for all basic scenarios override CMT behavior (checkout, broadcast) Sources : VCMT/win: VCMT/linux: glastpack: