User-friendly tools for Managing Software Development Projects Toby Burnett University of Washington

advertisement
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
Download