According to CMMI, Software engineering is defined as a discipline that covers the development of software systems. It focuses on applying systematic, disciplined and quantifiable approaches to the development, operation and maintenance of software. Systems engineering is defined as a discipline that covers the development of total systems, which may or may not include software. It focuses on transforming customer needs, expectations and constraints into product solutions and supporting those product solutions throughout the product life cycle. These definitions elicit the primary difference between systems and software engineering.
The differences between software and systems engineering can be further classified based on different parameters. For instance, in software engineering, the architecture can be dynamic and subject to change, based on emergent needs during the software development life cycle. Whereas in systems engineering, the architecture is established at the beginning of the systems development life cycle and usually remains stable. In order to develop high-quality software, software engineering lays emphasis on portability, adaptability, customizability and flexibility. Systems engineering, on the other hand, concentrates on the reliability, safety, availability and maintainability of the system.
Another distinction between software and systems engineering is that software engineering does not take into consideration physical wear and fatigue which are important criteria for consideration in building a system. Also, software engineering is not restricted by the laws of physics. Systems engineering needs to take into consideration the system environment, which greatly impacts the functionality of the system.
In software engineering, the interfaces between software components are typically conceptual such as protocols. Systems engineering interfaces, in contrast, are generally more tangible and well defined for the integration of components within the system. For example, the Security Alarm system consists of components such as sensor, telephone caller, actuator and interface. Systems engineering process frequently involves manufacturing and lead-time, whereas software engineering often involves rapid application development using prototyping.
In spite of the evident dissimilarities described previously, there are some noticeable commonalities between software and systems engineering. Both are complex processes involving people, facilities, processes, hardware, and policies. Both are undertaken for the purpose of meeting stakeholder requirements and accomplishing the defined performance. Both involve the generic practices of establishing requirements, involving relevant stakeholders, managing configurations, reviewing status with high-level management, rigorous testing procedures, defect analysis, defect prevention and correction, adhering to quality objectives, ensuring continuous performance in a changing environment and training people.
Software engineering is increasingly becoming a part of systems engineering. But it is sometimes seen as a problem, as it has caused delays in many large system development projects, an example being the Denver Airport Baggage Handling System. In conclusion, systems engineering can be considered as an interdisciplinary field of engineering, which could be a superset of software engineering and which considers both the technical needs and business needs of the customer, with the objective of delivering a quality product.