Upload
magnus-harmon
View
221
Download
8
Embed Size (px)
Citation preview
GLAST CHEP 03 March 24-28 2003
T.Burnett 1/12
User-friendly tools for Managing Software User-friendly tools for Managing Software Development Projects Development Projects
Toby BurnettUniversity of Washington
Marco FrailisUniversity of Udine
Alex SchelssingerSLAC
GLAST CHEP 03 March 24-28 2003
T.Burnett 2/12
IntroductionIntroduction
• 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 24-28 2003
T.Burnett 3/12
Solutions for CMT 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 24-28 2003
T.Burnett 4/12
An OO analysis: The playersAn 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 24-28 2003
T.Burnett 5/12
The strategyThe 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 24-28 2003
T.Burnett 6/12
We have objects: let’s define classesWe 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
GLAST CHEP 03 March 24-28 2003
T.Burnett 7/12
The object model diagramThe object model diagram
cmt
tagrootversionpath
Package
name : stringversionpathprojects
+used_packages
Project
name
0..*0..*
Workspace
nameprojectsdependent_projects
11
0..*0..*
Project
name
0..*0..*
GLAST CHEP 03 March 24-28 2003
T.Burnett 8/12
A tour of the applicationA 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 24-28 2003
T.Burnett 9/12
VCMT for WindowsVCMT for Windows
GLAST CHEP 03 March 24-28 2003
T.Burnett 10/12
Structure of the Windows code: Jscript and HTMLStructure of the Windows code: Jscript and HTML
Windows Script Host vcmt.wsf
COM
cmt.wsc
main program:manage objects, GUIrun cvs, visual studio
vcmt.htm
Internet Explorer
gui descriptionCMT
interface
GLAST CHEP 03 March 24-28 2003
T.Burnett 11/12
The Linux versionThe Linux version
• Implemented with the FOX toolkit
GLAST CHEP 03 March 24-28 2003
T.Burnett 12/12
glastpack.plglastpack.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
GLAST CHEP 03 March 24-28 2003
T.Burnett 13/12
Concluding remarksConcluding 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