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.