Today, products that rely on software are expected to do more and be more secure, and many are made to be portable or used in network environments. And, system engineers are called on to deliver increasingly complex software systems for these products that provide more functionality while consuming less power and costing less to develop and operate.
Unfortunately, these products are often plagued by high-risk integration, unacceptably expensive upgrades, and maintenance issues that lead to a shorter-than-anticipated life span. And, system engineers do not have insight into critical system characteristics—such as
- performance (e.g., throughput or quality of service)
- time criticality
- fault tolerance
Using traditional means, system integration becomes high risk, and system evolution (life-cycle support) becomes expensive and results in rapidly outdated components. Through its work, the SEI is developing a better way to assure the dependability and performance of your system, particularly when software is a key contributor.
Improved systems engineering practice is architecture-centric and model-based. Well-defined software system architecture provides a framework to which system components are designed and integrated.
System models that precisely capture this architecture provide the basis for predictable system engineering by
- reducing risk through early and repeated analysis of the system architecture
- permitting the engineer to see system-wide impacts of architectural choices
- increasing confidence by validating model assumptions in the operational system (and permitting the system models to evolve in multiple fidelity)
- reducing cost through fewer system integration problems and simplified life-cycle support
For predicting the dependability and performance of software-reliant systems at all scales—from multi-core processors to systems of systems—we focus on conducting research and applying tools and practices in analysis-based assurance and model-based engineering.