New Products from NASA’s Software Architecture Review Board Lorraine Fesq Jet Propulsion Laboratory, California Institute of Technology Flight Software Workshop October 27-29, 2015 Johns Hopkins University/Applied Physics Laboratory Annapolis, MD Copyright 2015 California Institute of Technology. Government sponsorship acknowledged. The research was carried out at the Jet Propulsion Laboratory, California Institute of Technology, under a contract with the National Aeronautics and Space Administration. Mission & Charter of SARB SARB was established by NASA OCE in April 2009 Mission: Manage flight software complexity through better software architecture Charter • Provide constructive feedback to flight projects in the formative stages of software architecting • Focus on architectural improvements to reduce and/or better manage complexity in requirements, design, implementation, verification, and operations • Spread best architectural practices, principles, and patterns across flight software centers • Contribute to NASA Lessons Learned Software Architecture Review Board 2 NASA Software Architecture Reviews Objectives • Manage and/or reduce flight software complexity through better software architecture • Help improve mission software reliability and save costs Approach • Create a NASA-wide software architecture review board (SARB) • Engage with flight projects in the formative stages of software architecture Plan Prepare introductory document, review process, review checklist, documentation recommendations, and sample problem statement Educate team on process Practice on flown missions Conduct real reviews Software Architecture Review Board 3 SARB Team Members (as of October 2015) Name Expertise / Position Michael Aguilar Sponsor and NESC Software Discipline Expert, NASA Technical Fellow in Software Dan Dvorak SARB co-Lead, Integrated Model-Centric Engineering (IMCE) team JPL Lorraine Fesq SARB co-Lead, Fault Management Community of Practice Lead, 3101 JPL Ken Costello Aerospace and Software engineer, IV&V Program Chief Architect IV&V Michael Madden Chief Scientist, Simulation Development and Analysis Branch LaRC Darrel Raines Orion Flight Software System Manager John Weir FSW Lead for Space Launch System (and formerly, Ares I) Kathryn Weiss Senior Flight Software Engineer, JPL Flight Software Product Line Cognizant Engineer Jonathan Wilmot Software architect, Flight Software Branch Software Architecture Review Board Affiliation NESC JSC MSFC JPL GSFC 4 SARB Community of Practice Page https://nen.nasa.gov/web/sarb Software Architecture Review Board 5 SARB Documents • Located on “Preparation for Review” page on SARB CoP 1. Contextually Driven Architecture Reviews (outreach) 2. Project Problem Statement template 3. Preparing for a Software Architecture Review 4. Reference Architecture Questions 5. Architecture Review Checklist 6. Scope of Architectural Concerns 7. Quality Attributes Table https://nen.nasa.gov/web/sarb/preparation Software Architecture Review Board 6 Recommended Contents for Software Architecture Descriptions SARB advises starting with the SEI Template for a SW ADD, in conjunction with the following to address concerns/characteristics specific to the NASA FSW domain • • • • • • • • • • Architecture Terminology Mission Overview Context Diagram, Context Description Architectural Drivers Critical Resources & Margins Stakeholders & Concerns Quality Attribute Analysis Measures of Performance Architectural Decisions & Rationale Architectural Alternatives (Trade Studies) • • • • • • • • • • Multiple Views Diagrams and Legends Architectural Frameworks Heritage Analysis/Software Reuse Assumptions & Limitations Architectural Patterns, Principles, Invariants, Rules Fault Management Non-Concerns References SEI Template for Software Architecture Documentation Full document available at https://nen.nasa.gov/web/software/sarb/guidelines Software Architecture Review Board 7 SARB Documents • Located on “Preparation for Review” page on SARB CoP 1. Contextually Driven Architecture Reviews (outreach) 2. Project Problem Statement template 3. Preparing for a Software Architecture Review 4. Reference Architecture Questions 5. Architecture Review Checklist 6. Scope of Architectural Concerns 7. Quality Attributes Table https://nen.nasa.gov/web/sarb/preparation Software Architecture Review Board 8 Quality Attributes Table • The Quality Attribute Table contains software architecture quality attributes that are relevant to the mission-critical real-time embedded systems. Project specified Attribute Description A design and implementation property of the architecture and applications supporting their Portability use on systems other than the initial target system. Aspects of Requirement Rationale Real-time and non-real-time Operating systems Processor / platform The architecture shall … The architecture shall… 1) Supports both… Operation system selection is… The architecture Processors shal… and platforms are typical variation points… Evidence of/verification Tactic to achieve Demonstrate execution … Demonstrate execution on multiple operating systems … Is the architecture Processor/Platform interface abstraction sufficient … Application logic is … Standards and abstractions Project Prioritization Project intended (NA, Low, Med, Hi) variation Standards and abstractions … … Full document available at https://nen.nasa.gov/web/software/sarb/preparation Software Architecture Review Board 9 Quality Attributes Table – excerpt Attribute Modifiability Description and AKA terms Aspects of Requirement Rationale Evidence of/verification Tactic to achieve Modifiability refers to how well a software system accomodates and enables changes to it. All software systems change to a lesser or greater extent, and they do so from the early, conceptual phase through the deployed lifetime of the system. A system with high, or good, Modifiability requires less effort, and more predictable effort, to make changes, or additions or deletions. All software systems have an intrinsic inertia, or resistance to change. Achieving high Modifiability requires anticipating change, understanding the forms it will need to be able to take, understanding how these forms of change will conflict with initertia, and designing in mechanisms to lessen that conflict. Ease of modification to applications in a deployed system (whether deployed to the actual mission application, or deployed to a testbed). The architecture shall provide mechanisms to modify applications in a deployed system without change to the state of unrelated applications. Note: The procedure for deploying modifications will vary in simplicity or complexity, depending on the given mission's needs and computing environment. For example, for some missions the process may involve a reboot, for others not. Supports orderly and safe system modification due to faults or changes to requirements, or to adapt to differing mission modes. Supports orderly and safe adaptation, in a flight-like way, during testing, e.g. to adapt to testbeds with varying hardware configurations The level of understanding and documentation of the process of modifying the system should be high. If these capabilities are architected in up front, as they should be, the complexity to modify a deployed application is much reduced. Modifiability and extensibility must be a native feature of the architecture. The architecture must support explicit and rigorous separation of applications or components and ensure that applications communicate only in well understood, explicit and architecturally visible ways. The mechanisms for supporting piecewise replacement (at the app or component level) of the software, both at the logical level (for example, a defined protocol for connecting and disconnecting applications), and at the physical level (for example, a dynamic link loader), must be clearly identified, given the computing environments of the system. Ease of change to applications at development-time The architecture shall provide mechanisms to modify applications during development without modification to unrelated applications or artifacts The ability to make changes to one application without affecting another (and having confidence that that is the case) results in a less chaotic development environment, with less un-planned work due to unexpected side effects. Statistics collected about development schedules, and reasons for slippage, should show a very low degree of slippage due to unexpected side effects. Design, deliver, and test the modification mechanisms designed for ease of modification to a deployed system (see previous row) early. This will ensure that these mechanisms are available for modifications made during development time. Well identified and understood variation and extension points The architecture shall support variation and extension points within the same mission. Identifying and documenting variation points eases the process of making changes as the system evolves, because it lessens or obviates the need for analysis to determine the feasibility and difficulty of making the change. The process of architecting the variation points in promotes modifiability in general. Architectural documentation should clearly describe the process of making variations at known variation/extension points. Later, specific tests should demonstrate the exercise of the process of making a variation. The architecture must require the clear and uniform identification of parameterizable aspects and behaviors in the software, as well as techniques and mechanisms for controlling these parameters. Ease of adding new application or capabilities/functionali ty The architecture shall provide mechanisms to add new capability/functionality without modification to unrelated applications or their artifacts Supports orderly and safe additions of new applications, or extended applications, to adapt to newlyidentified requirements or desirements (such as the exploitation of unforeseen science opportunities). Architectural documentation should clearly describe the process of adding a new application or component to the system. Specific testing should be run that demonstrates adding an application. Design and implement mechanisms for the orderly replacement of discrete parts of the system, and require early testing of these mechanisms. (These mechanisms may be the same ones used to install a change to an existing component of the system.) Synonyms of Modifiability are Adaptability, Upgradeability, Variability, Flexibility, Evolvability, Extensibility, Extendibility Software Architecture Review Board 10 Quality Attributes Table Use Cases • The QA Table has at least three primary use cases – Use by a software architect and project team to evaluate the priorities of each QA for a specific project. – Use during development – Developers implementing the architecture need to be mindful of the “Tactic to achieve”, “Evidence of/verification”, “Project Prioritization”, and “Project intended variation” columns for each attribute during the design and coding process – Use in the review process to evaluate a software architecture with respect to each QA in the Table and the priorities established by the project Full document available at https://nen.nasa.gov/web/software/sarb/preparation Software Architecture Review Board 11 SARB is a NASA-provided resource • SARB is available to NASA projects “Free of charge” for reviews – Review feedback is provided to project only – handled confidentially/discreetly • Encourage your project to conduct a software architecture review before PDR – After PDR, it’s hard to make any substantive changes Inquire about a review at https://nen.nasa.gov/web/software/sarb or email Lorraine.M.Fesq@jpl.nasa.gov Software Architecture Review Board 12