R2017b Lessons Learned
How Lessons Learned are Managed
GMAT lessons learned include things that we did well and should keep doing, and large scale things we should be doing to improve the software or our project. Lessons learned are each discussed by the team and if we decide there is a real issue, we require a plan for improvement. To make sure we are efficiently handling lessons learned, here are some high level guidelines for creating them.
What is a Lesson Learned
Lessons learned are issues that cause significant problems or could have caused significant problems, or are issues where we did something that significantly improved the software or our project. Lessons learned require group discussion and probably a change in team habits, process or strategy.
Lessons learned satisfy one the following criteria:
Issue that is putting the project at greater risk than necessary
Issue that is causing significant inefficiency
Issue that is significantly lowering quality
What is Not a Lesson Learned
A lesson learned is not a minor annoyance, a tweak to an existing process, or something that can be resolved between team members in the everyday process of getting work done. Team members should bring these types of issues up at meetings, or work them among the team members involved.
A minor issue, (i.e. not a lessons learned), satisfies one of these criteria:
Tweak to an existing process
Minor annoyance or gripe
Can be resolved by just picking up the phone, or discussing via email, or weekly meeting
Does not require significant change in habits or processes
Review of R2017a Lessons Learned
Things We Should Change
Do Better
Collect data from the projects early in the process.
Example: if a customer is using GMAT to ingest a data file generated from outside of GMAT, obtain a sample file that was generated that way as early as possible. For instance, an STK/ODTK generated .e file for this release would have been useful before the .e propagator was prototyped.
Improve nav test brittleness. These tests seem to required constant tweaking to avoid false positives. Need to figure out how to make them more robust.
Put out releases more often. This will help us iron out issues, and get features out to users quickly
Start Doing
Develop data management strategy that avoids last minute changes to system data that can cause dramatic changes in nightly tests. Preferably, make data updates occur nightly. This way we catch data issues immediately, and during development, not during RC testing. At a minimum, move data file update from App Freeze to an earlier release milestone like QA complete so the change happens much earlier in the process. This must address GUI data file issues as well. Delete old data files that are no longer used after changes in R2017a... SPICE kernels etc.
Develop improved system configuration test strategy so that test system can be configured to match the startup file configuration easily. For example, if alpha plugins are turned off, we don't run those tests. If internal features are turned off, we don't run those tests. Currently we change the startup file config, and it is quite difficult to configure the test system to match.
Start testing sample missions in the nightly.
Perform team review of major feature completion to help catch issues earlier.
Find leads to map to primary customers. RQ was doing that... Need to interact more and get them updates more frequently so they can do beta testing. Currently SPH is mapped to TESS, SDO, ACE, WIND. This is too much and a few items slipped through the cracks.