Hackystat Framework Documentation

Aaron Kagawa

Austen Ito

Cedric Qin Zhang

Cedric Zhang

Christoph Ullwer

Daniel Port

Hongbing Kou

Julie Ann Sakuda

Michael Paulding

Pavel Senin

Philip Johnson

Qin Zhang

Takuya Yamashita

Version: 7.7.416 | Build time: April 16 2007 03:27:46


Table of Contents

I. Hackystat User Guide
1. A guided tour of Hackystat
1.1. Introduction
1.2. Hackystat's Architecture
1.3. Sensors
1.4. Sensor Data Types
1.5. A Basic Usage Scenario
1.6. Registering with a Hackystat server
1.7. Downloading and installing Hackystat sensors
1.8. Using sensors to collect software product data
1.9. Using sensors to collect software process data
1.10. Defining Hackystat Workspaces for multi-user, multi-platform development
1.11. Defining Hackystat Projects to organize your data
1.12. Using Hackystat Alerts to send you email regarding your data
1.13. Using "Active Time" in the Daily Diary to understand your Day
1.14. Drilling down into your day with Event Streams
1.15. Understanding a group project using the Daily Project Details "Summary"
1.16. Drilling down into the Project data using Daily Project Details
1.17. Using Software Project Telemetry to understand development trends
1.18. Revealing co-variances in telemetry data
1.19. Drilling down to observe per-member variations in telemetry data
1.20. Hackystat in the Real World
1.21. Is Hackystat for you?
1.22. Where to go from here?
2. Client-side configuration: Tool sensor installation
2.1. Introduction
2.2. Downloading HackyInstaller
2.3. HackyInstaller GUI: Invocation
2.4. HackyInstaller GUI: Setting and verifying the Hackystat host and user key
2.5. HackyInstaller GUI: Installing a sensor
2.6. Keeping your sensors and HackyInstaller up to date
2.7. Sensors for multi-user tools and the usermaps.xml file
2.8. The Common Settings window
2.9. The Proxy Settings window
2.10. HackyInstaller CLI: Invocation
2.11. HackyInstaller CLI: Set Host And Key
2.12. HackyInstaller CLI: Set Property
2.13. HackyInstaller CLI: Set Path
2.14. HackyInstaller CLI: Install or Update Sensor
2.15. HackyInstaller CLI: UnInstall Sensor
2.16. HackyInstaller CLI: Update All Sensors
2.17. HackyInstaller CLI: Add User Map
2.18. HackyInstaller CLI: Remove User Map
2.19. HackyInstaller CLI: Status
2.20. HackyInstaller CLI: Help
2.21. HackyInstaller CLI: Scripting
2.22. Troubleshooting sensor installations
3. Server-side configuration: User account registration and preferences
3.1. Introduction
3.2. Account Registration
3.3. Overview of Workspaces, WorkspaceFiles, and Workspace Roots
3.4. Defining Workspace Roots
3.5. Overview of Hackystat Projects
3.6. Project Registration
3.7. Editing and Deleting Projects
3.8. Inviting, Confirming, and Declining Project membership
3.9. An example Project-based analysis: Daily Project Details
3.10. Hackystat Alerts
4. Collecting and analyzing process and product measures for Java systems using Ant
4.1. Introduction
4.2. Setup: Install Java and Ant in your development environment
4.3. Setup: Register with a Hackystat server
4.4. Setup: Download and install the StackyHack system
4.5. Measurement: System size with LOCC
4.6. Measurement: System size with SCLC
4.7. Measurement: Unit testing results with JUnit
4.8. Measurement: Test coverage with JBlanket
4.9. Measurement: Test coverage with Emma
4.10. Measurement: Structural coupling with DependencyFinder
4.11. Measurement: Source code quality with Checkstyle
4.12. Measurement: Source code quality with FindBugs
4.13. Measurement: Source code quality with PMD
4.14. Measurement: Source code issues with Jira
4.15. Measurement: Version control commits with Subversion
4.16. Measurement: Ant build invocations
4.17. Measurement: Developer Activities with an IDE
4.18. Analysis: Defining a Project to aggregate StackyHack sensor data
4.19. Analysis: Seeing the day in five minute intervals with the Daily Diary
4.20. Analysis: Day-level summary statistics using Daily Project Details
4.21. Analysis: Defining a Project Summary Alert for StackyHack
4.22. Analysis: Software Project Telemetry
4.23. Conclusions
5. Software Project Telemetry: Understanding the dynamics of software development
5.1. Motivation
5.2. An overview of software project telemetry in Hackystat
5.3. Concepts: Reports, Charts, Streams, Y-Axes, Reduction Functions, Filter Functions
5.4. Defining Telemetry Streams
5.5. Defining Telemetry Y-Axes
5.6. Defining Telemetry Charts
5.7. Defining Telemetry Reports
5.8. Managing Chart and Report complexity with Filter Functions
5.9. Unit Test Dynamics
6. Software Project Telemetry: A "Control Center" for client-side telemetry monitoring
6.1. Introduction
6.2. Usage
6.3. Configuration
7. Zorro: Recognizing and evaluating Test-Driven Development
7.1. Introduction
7.2. Overview of Test-Driven Development
7.3. Developing software using TDD
7.4. Issues with TDD, and how Zorro can help
7.5. Installing Zorro
7.6. Using Zorro
7.7. The anatomy of Zorro
7.8. Resources on Test-Driven Development
II. Hackystat Administrator Guide
8. Hackystat server installation
8.1. Introduction
8.2. Checklist: Binary Installation
8.3. Checklist: Source Installation
8.4. Build tools installation
8.5. Hackystat system configuration
8.6. Hackystat server deployment
8.7. Common server installation problems and solutions
8.8. Server problem reporting
8.9. Upgrading your installation
9. Basic administrative utilities for a Hackystat server
9.1. Introduction
9.2. Displaying registered users with the Adoption command
9.3. Registering users with the AutoRegister command
9.4. Sending a broadcast email to all registered users with the SendEmail command.
9.5. Understanding user behavior with the Analysis Log analyses
9.6. Obtaining server load statistics with the ServerStats command.
9.7. Obtaining daily email with server statistics with ServerStatsEmail command
9.8. Monitoring server "health" with PingMail
9.9. Configuring Command Visibility
10. Zorro: Guidelines for performing validation studies
10.1. Introduction
10.2. Zorro Validation Study Preparation
10.3. Data Collection
10.4. Data Analysis and Interpretation
10.5. Support materials for Zorro validation study
11. Software Engineering Experimentation
11.1. Motivation
11.2. Categories of experimentation support: configuration, monitoring, and analysis
11.3. An example experiment: TFDvTLD
11.4. Configuration: The Register Experiment command
11.5. Configuration: Manage Experiment
11.6. Configuration: Miscellaneous administrative settings
11.7. Configuration: Client-side sensor installation
11.8. Monitoring: The Experiment Telemetry command
11.9. Monitoring: The PingMail command
11.10. Analysis: Experiment Export command
III. Hackystat Developer Guide
12. New developer orientation
12.1. Introduction
12.2. Mailing lists
12.3. Is Hackystat the right hammer for my particular nail?
12.4. From user to administrator to developer
12.5. Architectural perspectives on Hackystat
12.6. Novice developer work breakdown structures
13. Anatomy of the Hackystat build system
13.1. Introduction
13.2. Basic build system requirements and design
13.3. A basic build using freshStart
13.4. A basic build using quickStart
13.5. The annotated freshStart
13.6. Testing the build
13.7. Other developer-level build targets
13.8. The local.build.xml file
13.9. Summary
14. Creating new Hackystat modules
14.1. Introduction
14.2. Build and test a baseline configuration
14.3. Install hackyDoc_NewModule
14.4. The structure of hackyDoc_NewModule
14.5. Summary
15. Designing sensor data types
15.1. Introduction
15.2. Motivation for sensor data types
15.3. Anatomy of SimpleSdt: Overview and Installation
15.4. Anatomy of SimpleSdt: Module structure
15.5. Anatomy of SimpleSdt: the XML declaration
15.6. Anatomy of SimpleSdt: the "wrapper class"
15.7. Anatomy of SimpleSdt: the "ShellCommand class"
15.8. Anatomy of SimpleSdt: the SDT Unit Tests
15.9. Anatomy of SimpleSdt: the docbook documentation
15.10. Anatomy of SimpleSdt: the testdataset data
15.11. Anatomy of SimpleSdt: The local.build.xml file
15.12. Evolving the structure of sensor data types
15.13. Summary
16. The SensorShell
16.1. Introduction
16.2. Requirements for the SensorShell
16.3. The interactive interface to SensorShell
16.4. Offline data storage
16.5. The Java interface to SensorShell
16.6. The .NET interface to SensorShell
17. Designing sensors
17.1. Introduction
17.2. Sensor requirements and design dimensions
17.3. Designing a sensor using the XmlData sensor
17.4. The SimpleSensor: An example Java-based sensor tool
17.5. The SimpleSensor: Module Definition
17.6. The SimpleSensor: Unit testing
17.7. The SimpleSensor: Integration with HackyInstaller
17.8. The SimpleSensor: DocBook documentation
17.9. The SimpleSensor: Downloading the code
17.10. An example of a non-Java sensor
17.11. Sensors for servers
18. Writing documentation
18.1. Introduction
18.2. The "architecture" of Hackystat documentation
18.3. Building the documentation for a configuration
18.4. Writing sections for the Reference Guide
18.5. Writing chapters for the User, Administrator, and Developer Guides
18.6. Docbook tags used in Hackystat documentation
18.7. Writing DocBook XML: Nuts, bolts, and Emacs
18.8. Developing and debugging your documentation source code
19. Experienced Developer Quick Start Guide
19.1. Introduction
19.2. Tools Checklist
19.3. Environment Variable Settings
19.4. Download public Hackystat modules from Subversion
19.5. Hackystat configuration hints
19.6. Eclipse configuration hints
20. Designing DailyProjectData classes
20.1. Introduction
20.2. Architectural elements: DailyProjectDataCache and DailyProjectData
20.3. Design Patterns for DailyProjectData subclasses
20.4. Design Patterns Example: DailyProjectFileMetric
20.5. Functional testing of DailyProjectData subclasses
20.6. Performance testing of DailyProjectData subclasses
21. HackyInstaller Developer Guide
21.1. Introduction
21.2. Writing the Installer Definition File
21.3. Extending a Sensor Installer
21.4. Writing a Validation Class
21.5. Unit Testing with HackyInstaller
21.6. Writing the Common Definition File
22. [hackyDoc_NewModule] Sample Chapter
23. Software Project Telemetry: Defining Reduction Functions and Filter Functions
23.1. Introduction
23.2. Anatomy of a Telemetry Reduction Function
23.3. Anatomy of a Telemetry Filter Function
IV. Hackystat Reference Guide
24. Extension Point Definition Files
24.1. Introduction
24.2. Build (local.build.xml)
24.3. Command (*.command.def.xml)
24.4. DailyAnalysis (*.dailyanalysis.def.xml)
24.5. Daily Project Data (*.dailyprojectdata.def.xml)
24.6. Documentation (*.docbook.def.xml)
24.7. Installer (*.installer.def.xml)
24.8. Reduction Function (*.telemetry.def.xml)
24.9. Sensor (*.sensor.def.xml)
24.10. Sensor Data Type (*.sdt.def.xml)
25. Sensor Data Types
25.1. Introduction
25.2. Activity
25.3. BuffTrans
25.4. Build
25.5. CLI
25.6. CodeIssue
25.7. Commit
25.8. Coverage
25.9. Dependency
25.10. DevEvent
25.11. FileMetric
25.12. Issue
25.13. Perf
25.14. Review Activity
25.15. Review Issue
25.16. UnitTest
26. Sensors
26.1. Introduction
26.2. Ant Build
26.3. Bugzilla
26.4. CCCC
26.5. Checkstyle
26.6. Unix CLI
26.7. Clover
26.8. CPPUnit
26.9. CVS Server
26.10. DependencyFinder
26.11. Eclipse
26.12. Emacs
26.13. Emma
26.14. FindBugs
26.15. Idea
26.16. JBlanket
26.17. JBuilder
26.18. JDepend
26.19. Jira
26.20. JUnit
26.21. Jupiter
26.22. LoadTest
26.23. LOCC
26.24. Microsoft Office
26.25. OpenOffice.org
26.26. PMD
26.27. SCLC
26.28. ShellLogger
26.29. Subversion
26.30. TestNG
26.31. Vim
26.32. Visual Studio
26.33. XmlData
27. Software Project Telemetry: Filter Functions
27.1. Introduction
27.2. Filter
27.3. FilterZero
28. Software Project Telemetry: Reduction Functions
28.1. Introduction
28.2. ActiveTime
28.3. Build
28.4. CodeChurn
28.5. CodeIssue
28.6. Commit
28.7. Coverage
28.8. Dependency
28.9. DevTime
28.10. EventTypeDevTime
28.11. FileMetrics
28.12. Issue
28.13. LanguageFileMetrics
28.14. MemberActiveTime
28.15. MemberCodeChurn
28.16. MemberCommit
28.17. MemberDevTime
28.18. MemberUnitTest
28.19. Perf
28.20. ReviewActivity
28.21. ReviewFile
28.22. ReviewIssue
28.23. StraightLine
28.24. TDDDevTime
28.25. TDDMemberDevTime
28.26. UnitTest
28.27. WorkspaceActiveTime
28.28. WorkspaceCodeChurn
28.29. WorkspaceCommit
28.30. WorkspaceCoverage
28.31. WorkspaceDevTime
28.32. WorkspaceFileMetrics
29. List of Authors and their Contributions