GLAST CHEP 03 March 24-28 2003 User-friendly tools for Managing Software Development Projects Toby Burnett University of Washington Marco Frailis University of Udine Alex Schelssinger SLAC T.Burnett 1/12 GLAST CHEP 03 March 24-28 2003 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 T.Burnett 2/12 GLAST CHEP 03 March 24-28 2003 Solutions for CMT (Similar approaches would apply to SRT) • A GUI application – VCMT (windows and linux versions) • Simplified command-line interface: – glastpack.pl T.Burnett 3/12 GLAST CHEP 03 March 24-28 2003 An OO analysis: The players • Objects: • Tools: – Environment: CMT env – CMT vars, etc. – CVS – CMT packages – development tools • system (read-only, • Windows: Visual sticky tags) Studio • development (head • Linux: gmake, emacs, versions) gdb/ddd • requirements files, – Doxygen sources – binaries: libs, dlls, exes T.Burnett 4/12 GLAST CHEP 03 March 24-28 2003 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 T.Burnett 5/12 GLAST CHEP 03 March 24-28 2003 We have objects: let’s define classes What Class Name Vcmt(windows) implementation CMT environment Cmt cmt.wsc COM object A CMT package Package Jscript class Package Package, its projects, and dependent projects Workspace Jscript class Workspace Individual binary target Project Jscript class Project T.Burnett 6/12 GLAST CHEP 03 March 24-28 2003 The object model diagram Package cmt tag root version path name : string version path projects 1 Workspace name projects 0..* dependent_projects 0..* 0..* +used_packages Project name Project name T.Burnett 7/12 GLAST CHEP 03 March 24-28 2003 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 T.Burnett • • • • Checkout a package Set up and build a package Run a package application Start Visual Studio 8/12 GLAST CHEP 03 March 24-28 2003 VCMT for Windows T.Burnett 9/12 GLAST CHEP 03 March 24-28 2003 Structure of the Windows code: Jscript and HTML Windows Script Host vcmt.wsf Internet Explorer COM vcmt.htm cmt.wsc CMT interface T.Burnett main program: manage objects, GUI run cvs, visual studio gui description 10/12 GLAST CHEP 03 March 24-28 2003 The Linux version • Implemented with the FOX toolkit T.Burnett 11/12 GLAST CHEP 03 March 24-28 2003 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 <arguments> 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 T.Burnett 12/12 GLAST CHEP 03 March 24-28 2003 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: http://glast.stanford.edu/cgi-bin/cvsweb-SLAC/vcmt • VCMT/linux: http://glast.stanford.edu/cgi-bin/cvsweb-SLAC/vcmt4linux • glastpack: http://glast.stanford.edu/cgi-bin/cvsweb-SLAC/glastpack T.Burnett 13/12