pints software practices jarett hailes july 22, 2003

23
PINTS Software Practices Jarett Hailes July 22, 2003

Post on 18-Dec-2015

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PINTS Software Practices Jarett Hailes July 22, 2003

PINTS Software Practices

Jarett HailesJuly 22, 2003

Page 2: PINTS Software Practices Jarett Hailes July 22, 2003

Acknowledgements

• Practices have been developed in conjunction with:– Surrey Kim– David Ballantyne– Calvin Chan– Jonathan Wiersma– Jesse McCrosky– Nikki Hu– Liam Stewart– Mike Kouritzin

Page 3: PINTS Software Practices Jarett Hailes July 22, 2003

Outline

• Background

• Objectives

• Practices– Organization– Standards– Testing & Review– Software Design Framework

Page 4: PINTS Software Practices Jarett Hailes July 22, 2003

Background

• Before:– One off project development

– Little coding standards

– Limited independent testing

– Management burden

Page 5: PINTS Software Practices Jarett Hailes July 22, 2003

Background Cont.

• Early initiatives:– Determine common interfaces

– Provide group collaboration

– Discussed standard way of presenting data/code

Page 6: PINTS Software Practices Jarett Hailes July 22, 2003

Background Cont.

• We found:– Bottom-up approach didn’t catch everything

– Common code helped speed development

– Needed to build more consistent structure usage

– Haven’t made independent testing a reality

Page 7: PINTS Software Practices Jarett Hailes July 22, 2003

Objectives

• Reorganize PINTS to distribute leadership and maximize productivity

• Finish developing management reporting, and coding standards

• Establish and execute trial run of testing and code review

• Develop versatile framework for all projects

Page 8: PINTS Software Practices Jarett Hailes July 22, 2003

Organization

Project Leader

Project Manager

Project Head Project Head Project Head…

Project Members

Project Members

Project Members

Page 9: PINTS Software Practices Jarett Hailes July 22, 2003

Standards

• Project Standards– Outline– Informal updates– Project Reports

• Coding Standards– Style & Substance

• Documentation Standards– Recording all relevant information

Page 10: PINTS Software Practices Jarett Hailes July 22, 2003

Testing

• Independent, black box testing

• Based on code documentation in interfaces

• Deterministic versus random components

Page 11: PINTS Software Practices Jarett Hailes July 22, 2003

Code Review

Process:

1. Prior to meeting, main author sends out code to reviewers

2. Reviewers look over code for:a) Correctness

b) Coding style standards

c) Clarity/relevance of comments

Page 12: PINTS Software Practices Jarett Hailes July 22, 2003

Review Contd.

3. Meeting: a) Tester presents black box results

b) Reviewers provide feedback on code

c) Suggest/Require changes

4. Post-Meeting:a) Alter code as necessary

b) Follow-up with subset of reviewers

Page 13: PINTS Software Practices Jarett Hailes July 22, 2003

Framework Outline

• Requirements

• Interface

• Directions

Page 14: PINTS Software Practices Jarett Hailes July 22, 2003

Requirements

• Easy to assimilate (new users)

• ‘Plug and Play’ filters/problems

• Provide distributable computing interface

• Ability to build language around framework

• Make filter code more versatile

Page 15: PINTS Software Practices Jarett Hailes July 22, 2003

Interface

• Basic Object Hierarchy

• Signal / Observation Models

• Filter breakdown– Modules– Filter interface

• Executables

Page 16: PINTS Software Practices Jarett Hailes July 22, 2003

Basic Objects

Page 17: PINTS Software Practices Jarett Hailes July 22, 2003

Signal / Observations

Page 18: PINTS Software Practices Jarett Hailes July 22, 2003

Modules

Page 19: PINTS Software Practices Jarett Hailes July 22, 2003

Filter

Page 20: PINTS Software Practices Jarett Hailes July 22, 2003

Executables

Page 21: PINTS Software Practices Jarett Hailes July 22, 2003

Putting it Together

• Example:ProjectManager::buildEnvironments() {

numFilters = parameterFile.getFilterCount();

for (i=0; i<numFilters; i++) {

parameterFile.getFilterVariables

(i, vars);

switch(vars.filterType) {

case SERP:

this->buildSERPEnvironment(vars);

}

}

Page 22: PINTS Software Practices Jarett Hailes July 22, 2003

Example Contd.

ProjectManager::run() {

for (int i=0; i<numFilters; i++) {

for(int j=0; j<moduleCount[i]; j++)

executeModule(filters[i], moduleOrder[i][j]);

}

Page 23: PINTS Software Practices Jarett Hailes July 22, 2003

Directions

• Complete interface standardization

• Realize helper classes (updater, visualizer, etc.)

• Implement on all combinations for:– 2 Signal/Observation pairs– 2 Filters: Particle & (REST or IDEX)