Complex systems in which computers play a major role. While complex physical systems and sophisticated software systems can help people to lead healthier and more enjoyable lives, reliance on these systems can also result in loss of money, time, and life when these systems fail. Much of the complexity of these systems is due to integration of information technology into physical and human activities. Such integration dramatically increases the interdependencies among components, people, and processes, and generates complex dynamics not taken into account in systems of previous generations. Engineers with detailed understanding both of the application domain and computer electronics, software, human factors, and communication are needed to provide a holistic approach to system development so that disasters do not occur.
The computer-based systems engineer develops a system within a system; the properties of the former have pervasive effects throughout the larger system. The computer-based system consists of all components necessary to capture, process, transfer, store, display, and manage information. Components include software, processors, networks, buses, firmware, application-specific integrated circuits, storage devices, and humans (who also process information). Embedded computer-based systems interact with the physical environment through sensors and actuators, and also interact with external computer-based systems (see illustration). The computer-based systems engineer must have a thorough understanding of the system in which the computer-based system is embedded, for example an automobile, medical diagnostic system, or stock exchange.
Models are necessary in systems engineering as they support interdisciplinary communication, formalize system definition, improve analysis of trade-offs and decision making, and support optimization and integration. The use of models can reduce the number of errors in the design and thus the system, reduce engineering effort, and preserve knowledge for future efforts. Maintaining models with up-to-date knowledge is a major problem as most systems are not generated from models, although this should be an industry goal. During the later stages of system development and testing, significant schedule pressure makes it difficult to keep the models and manually developed software consistent.