Presentation - Center for Software Engineering

advertisement
Embedded Systems and Software
Engineering
Gary Hafen
USC CSSE Executive Workshop
March 10, 2010
Situation
• Software is providing an increasing
percentage of functionality in our
embedded systems
–
–
–
–
–
–
Space Craft
Aircraft
Ships
Automobiles
Cell Phones
Appliances
Issue
• Software is an abstract, logic based product that
invites latent errors to persist
– The errors may be nearly invisible to inspection or detection
• Embedded System Software is the most glaring
example of this attribute
– Lack of visible observation of software interaction
– Intrusive test probes change the operational conditions
– Real-time, asynchronous dynamics make errors hard to
reproduce
This Issue must be Acknowledged and Dealt with
in the System and Software Architecture Design
Premise
• Real time embedded software has special challenges
• Difficulties stem from the combination of technically
challenging problems
– Solutions are founded in physical sciences
– Limited computing resources severely constrain
the solution space
– Highly complex verification environments
• These problems manifest themselves in a wide
variety of important implementation factors
ISO 15288 System Engineering V
ISO 12207 Software V
Life Cycle Processes Harmonized with 15288
Plan for
Qualification Test
Requirements Analysis
Plan for
Integration
Architectural Design
Plan for
Unit Test
Detailed Design
Construction
Change is Needed
• The V-model presupposes that a system can be
deterministically decomposed and integrated
• Complexity and network system interoperability make this
impossible
• System Functionality is 80-90% Software Enabled
• System Engineering approaches need to emulate current
Software Engineering approaches
– Model based design
– Agile practices
– Logical as well as physical analysis and definition
methods
– Data/Information focused (e.g. Object Oriented) as well
as control flow focused
Implementation Issues
•
•
•
•
Unclear organizational responsibilities
Requirements inadequacy
Execution resource constraints
Concurrent hardware development
– Leads to late discovery of hardware/software interface
functionality and incompatibility
– Results in unplanned software growth
• Software engineer domain knowledge inadequacy
• Verification of embedded systems
– Requires complex test labs with hardware in the loop,
environment simulators, etc.
Unclear Organizational
Responsibilities
• System Engineering allocates functionality to an
embedded computer system
– With or without software or hardware domain expertise
• Management awareness is problematic
– Software is not always on the radar until too late
– Incomplete understanding of the priorities and risks with
respect to software
• The software team is often fragmented on a program
– Inadequate communication between groups
– Role of the System Engineering Integration
Team (SEIT) with respect to software
Requirements Inadequacy
• Late maturity of the Operational Concept
– User/operator does not get a feel for how the system really
works until it’s done
– Seeing actual operational scenarios results in discovery of
new software requirements
• Complex control laws, complex hardware interfaces,
high accuracy requirements
• Parallel, asynchronous processing creates nondeterministic behavior
• Autonomy requires complex second order
requirements that will be derived late
Execution Resource Constraints
• Computing resources for embedded systems are
constrained by physical size
• Environmental Qualification testing requirements for
hardware prevent hardware upgrades
• Systems Engineers must be extraordinarily conscious
of the resources consumed by the implementations
they choose
• Implementations are driven more by
performance than by clarity of the design
or maintenance concerns
Concurrent Hardware Development
• Late discovery of hardware/software interface
incompatibility
– results in unplanned software growth and workarounds
• Constraints associated with modifying qualified
hardware results in a “we’ll fix it in the software”
decision
• These discoveries are made when the resources
to fix the problem are least available
Domain Knowledge Inadequacy
• Software integrates our embedded systems
• Software engineers play a key role in the integration
• Effective embedded software engineers must have
domain knowledge
• An embedded software engineer must understand the
physics and mathematics of our complex systems.
This domain knowledge of software engineers is critical
to the success of our complex programs
Complex Verification Requirements
• Driven by the potential for catastrophic failure
• Must be performed on hardware that is as identical to
the operational hardware as possible
– In the actual operational environment or one that is simulated and
certified
• Non-deterministic behavior is difficult to exhaustively
verify
• Test Environment must have
dynamic tools to provide
comprehensive stimulation and
observation of embedded systems
• Lab must be configuration managed
to assure valid, repeatable results
Summary
• Embedded Systems Engineers must have
Software Engineering understanding and skill
– 80% of the capability that they are designing
for are software enabled
• Embedded Software Engineers must have
Domain Systems Engineering understanding and
skill
– Success of the software product is dependent
on their knowledge of the physical
environment that it interacts with
The Systems Engineer must be a Software Engineer
The Software Engineer must be a Systems Engineer
Download