![Page 1: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/1.jpg)
PINTS Software Practices
Jarett HailesJuly 22, 2003
![Page 2: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/2.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/3.jpg)
Outline
• Background
• Objectives
• Practices– Organization– Standards– Testing & Review– Software Design Framework
![Page 4: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/4.jpg)
Background
• Before:– One off project development
– Little coding standards
– Limited independent testing
– Management burden
![Page 5: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/5.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/6.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/8.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/9.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/11.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/12.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/13.jpg)
Framework Outline
• Requirements
• Interface
• Directions
![Page 14: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/14.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/15.jpg)
Interface
• Basic Object Hierarchy
• Signal / Observation Models
• Filter breakdown– Modules– Filter interface
• Executables
![Page 16: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/16.jpg)
Basic Objects
![Page 17: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/17.jpg)
Signal / Observations
![Page 18: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/18.jpg)
Modules
![Page 19: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/19.jpg)
Filter
![Page 20: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/20.jpg)
Executables
![Page 21: PINTS Software Practices Jarett Hailes July 22, 2003](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/21.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/22.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062313/56649d225503460f949f8906/html5/thumbnails/23.jpg)
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)