Proposed Build System Use Cases
STATUS
The content on this page is outdated. The page is archived for reference only. For more information about current work, please contact the Build System Team.
Overview
This document summarizes the functions proposed for a revised build system to be developed as part of Kepler/CORE. These functions are described from the point of view of a Kepler developer and at the level of "business" use cases.
Note that inclusion of a use case here does not necessarily imply that the associated function will be fully automated. We include manual and interactive use cases that might be automated at some point as well.
Use cases
SOURCE CODE MANAGEMENT
- Check out a local copy of the Kepler kernel either at the head or at a particular Kepler SCM tag.
- Check out a local copy of a Kepler extension either at the head or at a particular Kepler SCM tag.
- Update a local copy of the kernel or an extension at the current tag, to a different tag , or back to the head.
- Commit changes in a local copy of the kernel or an extension to the Kepler SCM system.
- Create a new extension in the Kepler SCM system.
PROJECT CONFIGURATION MANAGEMENT
- Select which Kepler project modules to build together including the kernel and any number of extensions managed either in the Kepler SCM or in project-specific SCMs.
- Specify order in which to build extensions and to apply overrides to the kernel.
COMPILING
- Scan user environment for appropriate version of Java to compile and run
- Scan user environment for optional external jars necessary for compiling or running
- Compile code configured to be built together including kernel and extensions.
RUNNING
- Start the Kepler GUI, optionally pre-loading a specific workflow.
- Start a Kepler workflow in headless mode, hiding all GUI components and using defaults for all interactive components.
- Start a Kepler workflow displaying GUI components as needed at run time.
ACTOR MANAGEMENT
- Build all actor kar files that are out of date and needed by the library.
- Update actor documentation in a set of workflows based on latest version of these actors in the library.
- Build a particular actor's source code and add to or update the library accordingly.
- Create a package of workflows, actors and supporting classes for distribution.
CODE ANALYSIS AND REPORTING
- Report third-party components required at run-time, and reveal detailed dependencies on and between these components.
- Report source code files not conforming to coding, formatting, and internal documentation standards.
- Report conflicts between requirements of currently configured modules including conflicts between third-party components.
REFACTORING
- Edit a set source files to remove unneeded imports and expand package imports to specific class imports. See Eclipse Organize Import
- Reformat code to meet coding standard. See Eclipse format and http://astyle.sourceforge.net/
- Edit and move source files as needed to rename or move classes and packages.
TESTING
- Run the nightly build at http://nmi.cs.wisc.edu/
- Run a set of unit tests specified by class or package name.
- Run a set of workflow tests.
- Run tools such as http://java.sun.com/j2se/javadoc/doccheck/ or http://findbugs.sourceforge.net/
DOCUMENTATION
- Build internal code documentation from javadoc comments.
SYSTEM DISTRIBUTION
- Package compiled code and resources into jars for distribution as libraries.
- Create Windows batch file and Unix script file for running Kepler in all supported modes.
- Package last build for redistribution as a complete, installable system and prepare installers for all supported platforms.
- Report copyrights and licenses that apply to distributions of the current build.
Contributors to this document
- David Welker
- Sean Riddle
- Tim McPhillips
- Christopher Brooks